写在前边 有没有这样一种感受,自己写的代码在开发.测试环境跑的稳得一笔,可一到线上就抽风,不是缺这个就是少那个反正就是一顿报错,线上调试代码又很麻烦,让人头疼得很.阿里巴巴出了一款名叫Arthas的工具,可以在线分析诊断Java代码,着实让人眼前一亮. 一.Arthas 是什么? Arthas(阿尔萨斯) 是阿里开源的一个Java在线分析诊断工具 二.Arthas 能解决啥问题? 在日常开发上线过程中,我们多多少少都会遇到下边这些问题,苦于无法在线调试,只能通过老鸟的经验来硬分析bug,效率上不…
今天想测试下线上代码,能否正常的执行未登录的拦截.所以把拦截器的代码给开放出来,但是没想到线上代码addInerceptors(InterceptorRegistry registry) 这个方法一直不被执行. @EnableWebMvc @Configuration @Slf4j public class WebConfig implements WebMvcConfigurer { @Bean public UnLoginInterceptor unLoginInterceptor(){ r…
如何利用Grunt生成对应的Source Map文件,线上代码压缩使用chrome浏览器便于调式 首先我们来说说为何要生成sourceMap文件呢?简单的说,sourceMap是为了压缩后的代码调式提供方便,比如线上的JS文件已经压缩了,但是线上比如说有bug,但是代码已经是压缩后的,对于开发并不好调式,所以想生存一个对应的Map文件,然后使用chrome浏览器在源文件未压缩的JS文件下调式. 那么Map文件到底是什么呢?简单的来讲它就是记录信息,记录一些为压缩之前的js文件的位置,及压缩后的文…
Fiddler是一个http协议调试代理工具,它能够记录并检查所有你的电脑和互联网之间的http通讯,设置断点,查看所有的“进出”Fiddler的数据(指cookie,html,js,css等文件,这些都可以让你任意替换线上进行修改的意思),用线下的文件替换线上的进行修改调试,的确很方便. (一)官方地址 http://www.telerik.com/fiddler (二)下载后的界面,选中“AutoResponder”,然后下面的三项全打钩,如图: (三)在浏览器打开一个线上页面,如太平洋汽车…
fiddler 是一个http协议调试代理工具,它能够记录并检查所有你的电脑和互联网之间的http通讯,设置断点,查看所有进出fiddler的数据(指cookie,html,js,css等文件,这些都可以让你任意替换线上进行修改的意思),用线下的文件替换线上的进行修改调试,的确很方便 点击fiddler右侧的自动响应,勾选启用规则,不匹配的请求通过,启用延迟 在浏览器打开一个线上页面,如太平洋汽车网的图库http://price.pcauto.com.cn/cars/pic.html fiddl…
起因: 线上 user 数据库没有自增字段,数据量已经达到百万级.无论是给离线仓库还是数据分析同步数据,没有主键自增 id 都是杀手级的困难.所以在使用 create_time 痛苦了几次之后准备彻底来解决这个问题. 解决问题的思路: 当时理了两个思路,一个是直接找个夜生人静的夜晚,drop 掉目前的 primary key .然后再 add 一个 id 字段做 primary key auto increament .我觉得这个方法对于 100w 以下的数据表是一个不错的方法,首先简单,其次找…
有时代码上线了,突然就碰到了坑爹的错误.或者有时看别人家线上的代码,对于一个文件想 fork 下来试试效果又不想把全部文件拉到本地,都可以使用 fiddler 的线上调试功能. 比方说我们打开携程的首页 www.ctrip.com,看到个叫 allsearch.js 的 js 文件,想往里加点代码调试下. 我们先把这个 js 文件下载到本地. 然后打开 fiddler(当然首先得下载安装 fiddler,参考如何用 fiddler 代理调试本地手机页面),浏览器访问 www.ctrip.com,…
前言 之前调试前端bug都是在开发环境中做完并多次测试没有问题之后发布测试环境,验收合格之后发布生产.但生产环境偏偏会有和开发和测试环境不一致的情况,例如测试环境需要加密,而开发环境先不加密,测试环境传给我们的时间格式和生产环境时间格式不一致,数组对象不一致等导致线上生产报错的bug. 为了更好的在线上环境检测到具体的bug,节省我们在本地把地址改为生产的地址并走多一遍流程测试的麻烦,Chrome浏览器dbug测试就显得尤为重要了. 一.定位js代码并标记dbug 首先F12打开控制台,然后选择…
Fiddler 的AutoResponder tab允许你从本地返回文件,而不用将http request 发送到服务器上. 1.AutoResponder规则实例 (1) 打开博客园首页,把博客园的logo图片保存到本地,并且对图片做些修改. (1)打开Fiddler 找到logo图片的会话, http://www.cnblogs.com/images/logo_small.gif,  把这个会话拖到AutoResponer Tab下 (3)选择Enable automatic reapons…
//查询当前远程的版本 $ git remote -v //获取最新代码到本地(本地当前分支为[branch],获取的远端的分支为[origin/branch]) $ git fetch origin master [示例1:获取远端的origin/master分支] $ git fetch origin dev [示例2:获取远端的origin/dev分支] //查看版本差异 $ git log -p master..origin/master [示例1:查看本地master与远端origin…
package.json { "name": "vue-cli", "version": "1.0.0", "description": "A Vue.js project", "author": "lizhi@camelotchina.com", "private": true, "scripts": {…
git强制覆盖本地命令(分步执行): git fetch --all    git reset --hard origin/master    git pull git强制覆盖本地命令(单条执行):    git fetch --all && git reset --hard origin/master && git pull…
距离上一篇博客,这篇文章的发布大概过了整整三个月.我也从饿了么度过了试用期,成为了正式员工.刚进来恰好遇到项目底层改造和迁移,将项目从angular全部迁移到vue上,所以适应这边的节奏和业务的开发任务.而且这段事件用过mint-ui这个h5的框架,感觉太老了,想自己开发一套ui组件了,所以一直忙呀忙.顺带最近绝地求生比较火,然后也拉了几个小伙伴一起玩了好长时间,所以节奏有点慢了.下面废话不多说了,直接进入主题. 上一篇博客介绍了基础的纯概念,这篇文章纯粹偏技术实践,需要理解一些玩意的.技术介绍…
背景 公司的主打产品是一款跨平台的 App,我的部门负责为它提供底层的 sdk 用于数据传输,我负责的是 Adnroid 端的 sdk 开发. sdk 并不直接加载在 App 主进程,而是隔离在一个单独进程中,然后两个进程通过 tcp 连接进行通信的,这样做的目的是减少因 sdk 的崩溃带来的主进程 crash,为用户带来更好的体验. 如上图所示,sdk 主要实现于 service.so 中被 Work 进程加载,kernel.so 通过 jni 嵌入在 App 主进程,前者作为侦听端,后者是连…
在之前的文章中,我介绍了使用 Btrace 工具进行线上代码的debug (https://www.cnblogs.com/yougewe/p/10180483.html),其大致原理就是通过字节码注入的方式进行辅助排查. 可以说,btrace 已经给我们的开发调试一带来了许多的方便,我们在上面做任何想要的调试!但是,明显, btrace 的使用还是有一定成本的,比如:安装应用,写调试脚本... 所以,今天我们再来看一大利器: arthas (阿尔萨斯) arthas 官网地址:https://…
需求背景: 由于业务需求,需要在线上用户表添加渠道字段,用于区分不同渠道注册的用户,目前该表有20+个字段,8个索引 线上用户数据大概1500W左右,需要不停机增加数据库字段,同时需要刷新Redis缓存中的用户数据 发生的问题: 问题1.添加字段可能会锁表,影响线上业务的操作: 问题2.删除Redis缓存中的数据,数据量过大,无法直接精准的进行删除处理,可能的情况就是造成一边删除旧用户信息,一边生成新用户信息 解决方案: 针对于问题一: 由于MySQL5.6版本以后,提供了在执行DDL语句时,无…
家都知道在前端开发过程中,为加快网站静态资源加载速度都会对js/css等静态资源进行压缩合并再部署到生产环境,而在实际开发过程中开发人员一般都是在开发环境进行源码文件开发调试的,当部署平台或部署人员将开发人员提交的前端代码进行压缩合并为压缩文件后,当遇到生产环境出现问题之后很难通过压缩文件去定位问题,所以如何让开发人员便利的调试线上代码,并迅速定位问题是部署及运维网站需要考虑的重要考量的地方,此文档教程将描述如何使用chrome浏览器进行线上调试源码问题. Step-by-step guide…
chrome的开发者工具,在source选项卡下,可以看到js的源代码,有一个断点调试功能,就是在js的源代码行号那里点击一下,出现一个箭头,当再次刷新页面并且进行了相应操作时,就会停在断点的地方.我们可以查看相应的变量值,在右侧可以手动改变变量值,进行调试. 这个地方有一个缺点,就是没有办法对代码表达式等进行手动修改,修改完再去运行调试.如果我们在编辑窗口更改了js,他并不能真正的作用于线上代码.你保存了也没有任何效果,你刷新了页面,直接就没有了,没有办法像css的调试那样,可以完全实时修改代…
写在前面 估计二狗子这几天是大姨夫来了,心情很郁闷,情绪也很低落,工作的时候也有点心不在焉.让他发个版本,结果,一行命令下去把线上的数据库删了!你没听错:是删掉了线上的数据库!运营那边顿时炸了锅:怎么回事?系统不能访问了!什么情况啊?!很多客户都在投诉了!! 尽管运营那边慌慌张张的不知所措,但是,我们作为技术人员还是要淡定,不就是删了数据库吗?没事,哥帮你搞定! 如果文章对你有点帮助,请微信搜索并关注 冰河技术 微信公众号,点赞.在看.留言和转发,你的支持是我持续创作的最大动力!! 事件背景 M…
最近帮新来的校招同学排查一个线上问题,问题本身不是很难,但是过程中踩到了一个arthas的坑,挺有意思的. 同时,也分享下在排查过程中使用的一些比较实用的工具,包括tcpdump.arthas.simpleHTTPServer等,希望能对大家有所帮助. 1.问题描述 新开发的一个功能,简单来说,就是读取数据库的数据展示在前台. 本地启动服务调试,用postman调用api,返回数据显示正常,数据中的中文也正常. 但是部署到线上环境后,通过chrome浏览器调用和postman调用接口,返回的非中…
一.Arthas简介 Arthas是Alibaba开源的Java诊断工具,功能很强大,它是通过Agent方式来连接运行的Java进程.主要通过交互式来完成功能. https://arthas.aliyun.com/doc/stack.html 首先贴出官方文档,自己使用也不多,主要用于一次线上问题排查 二.运行 java -jar arthas-boot.jar ,运行Arthas 选择要粘附的进程,输入编号即可 使用以下两个命令其中一个查看java程序的进程号ps -efjps 备注:也可以通…
如果你有以下痛点,请你查看本文章: 1.我改的代码为什么没有执行到?难道是我没 commit?分支搞错了? 2.遇到问题无法在线上 debug,难道只能通过加日志再重新发布吗? 3.线上遇到某个用户的数据处理有问题,但线上同样无法 debug,线下无法重现! 4.是否有一个全局视角来查看系统的运行状况? 5.有什么办法可以监控到JVM的实时运行状态? 6.怎么快速定位应用的热点,生成火焰图? Arthas-解决以上所有问题 一.快速启动,(我的第一给demo) 1.下载git代码,本地启动app…
大家平时肯定都用过火狐的Firebug或者谷歌的调试工具来调试JS,但遗憾的是我们不能像编辑html,css那样来直接新增或者删除JS代码. 虽然可以通过调试工具的控制台来动态执行JS代码,但有时候却远远不够用. 特别是当产线环境不能随意修改文件情况下,用线上环境来调试本地代码更是迫切的需求. (往往本地测试通过,上线后却是各种bug.) 今天分享一下如何用Fiddler来修改并调试线上的JS代码. 以博客园首页为例子,用我本地的一个js文件来替换它的一个js. 查看首页源码发现一个js,就拿它…
分享下使用 svn,测试服务器代码自动更新.线上服务器代码手动更新的配置经验 利用SVN的POST-COMMIT钩子自动部署代码 Linux SVN 命令详解 Linux SVN 命令详解2 使用svn hooks 脚本post-commit时遇到的故障…
为了进一步提高自己的技能水平,不久前入手了一台服务器,不贵,一年也就不到两百,因为自己对于linux机器比较生疏,命令用的有点抠脚.老需要查阅处理. 于是我选择用PhpStrom直接连接线上服务器,通过sftp连接方式直接修改向线上配置文件.用起来很舒服,比vim那些命令舒服多了,就和本地写代码然后提交代码一样. 详细教程在这里:https://www.jianshu.com/p/0bb689d20875 机子弄好了之后,正好我这里有个广告后台配置的需求,技术选型为前端vue+后端egg.js…
众所周知,easyswoole作为常驻内存的框架,修改代码并不能直接生效,而是需要重启服务,那么,当你的easyswoole项目上线之后,该如何保证旧请求的同时去更新代码呢? nginx reload和restart 首先,我们需要了解到nginx reload和restart的区别. reload nginx 执行reload命令后,将会重新加载一次配置文件,并且给其他worker进程发送信号,进程收到信号之后,将不再接收新请求,当旧请求执行完毕后,将会自动销毁. 同时,如果reload加载的…
概述 就像谈到闭包必须要说js变量作用域一样,谈到 promise 之前肯定要先说谈异步编程.一直以来, javascript 处理异步方式都是使用 callback 方式,对与写 javascript 的人来时候 callback 深入人心.比如只有前端经验没有后端经验的同学看到 java 代码可能会问『为什么readFile方法可以直接返回结果?为何不使用 callback 』 由于 javascript 的单线程性质,必须等待上一个事件执行完成才能处理下一步.传统解决 javascript…
在下面的命令框输入“select script”回车来筛选js请求 将HTTP请求重定向到本地的文件,进行web调试.这种调试方式不需要发布到线上再验证,避免了修改不成功.对用户造成影响的风险 左边一栏里是请求的URL,右边是响应的URL 输出可以在console里面看到 window.console.info(bnQ3x(Mc1x.md)); //alert("aaa"); indow.console.warn(bAN7G.encSecKey); https://www.cnblog…
从https://pecl.php.net/package/mongodb官网下载压缩包(不懂事的我下载了1.5.1版本) 解压安装包 tar -zxvf mongodb-1.5.1.tgz 进入解压目录 运行phpize命令 cd mongodb-1.5.1 && phpize 编译扩展 $ ./configure \ $ make && make install 编辑etc/php.ini 添加下面一行 extension=mongodb.so 查看phpinfo()输…
记一次django项目的线上部署维护问题,django+nginx 关于nginx反向代理服务器的介绍这里有一篇博客介绍的比较好:nginx的相关介绍 以及当一次客户端请求发出后,uwsig以及uWSGI,Nginx之间的大致流程:uWSGI.WSGI和uwsgi 一.问题描述 在将django项目部署到阿里云(nginx作为web服务器)上之后,使用宝塔控制面板修改项目源码,或者使用直接在终端修改,修改之后重启uwsgi和nginx无效. 二.问题分析 1.本地环境 在本地环境的时候,是使用D…