- 博客(69)
- 资源 (2)
- 问答 (1)
- 收藏
- 关注

原创 基于JavaAgent的Mock和回放系统
主要解决的问题依赖的第三方系统不稳定等情况,影响开发和测试流程UI测试,压力测试等去除IO操作目前市场上集几种Mock方案以及分析在代码中Coding代码逻辑。使用网络代理,将服务代理到指定服务器(JVM Proxy参数)。修改注册中心,将相应的服务地址修改到Mock服务。使用JavaAgent 修改字节码,将相应的IO的地方修改到某些地方。分析现有的主流Mock方案有上面的列出几种,尽管可以达到Mock的目的,但是存在和现有业务代码耦合性大,功能匮乏,对mock掌控力能力弱等
2020-07-27 17:45:42
2442
2

原创 基于JavaAgent的Mock,流量回放,耗时分析,全链路监控(实现中)系统-简介篇
一. 背景今天无心写代码,整理下文章看。应用对于第三方的依赖较多,由于第三方接口测试环境可靠性不高,容易导致测试人员测试堵塞;需要特定场景的数据,但是依赖相对复杂,伪造数据的成本较高等情况,对于接口,数据库,redis等Mock的需求还是比较大的。目前公司内部不同部门有多套Mock方案,但是都没有摆脱对代码的侵入,可扩展性不高。基于目前大部分服务已经是Java技术栈的前提情况下,通过JavaAgent修改字节码的方式达到Mock的目的的条件逐渐成熟,虽然该方案开发入门较高,但从可维护,推广简易,成本效益等
2020-05-08 21:01:40
2498

原创 LavCache
LavCahceIntroduction: LavCache是一款可以支持现有大多数业务场景的缓存框架,支持自定义存储媒介、项目初始化加载、过期重试、访问统计等多种特性,并且支持yml文件配置。技术水平有限,欢迎各位大佬批评指正(lonelyangel.jcw@gmail.com)Poject Address:https://github.com/L-Angel/lavcache一...
2018-10-05 17:38:31
298

原创 G1 收集器介绍
G1收集器一. 名词解释MetaSpace 在Java8之后取代永久代方法区的内存部分,NativeMemoryMixed GC Event 所有Young Region和一部分Old Region的混合GC时间。Reclaimable G1 为了能够回收,创建了一系列专门用于对象回收的Region,存放在链表中,只包含存活率小于-XX:G1MixedGCLIveThr...
2018-02-24 04:27:04
5839
4
原创 基于Golang的Class文件解析工具
分享一下之前写的Class 文件解析的工具。Gom:https://github.com/LavGo/gomgo get -u github.com/LavGo/gomgo install github.com/LavGo/gomgom Xjre="ClassFile path"
2020-07-06 14:56:18
538
原创 Java 使用try-with-resource语法关闭GZIPOutputStream,返回Byte[]二进制数据不正确问题
try-with-resource语法try(xxxStream is=new xxxxStream()){ return is.xxx;}try-with语法实际上就是 try-finally对于流处理的一个语法糖,会在try的代码块执行完毕后自动添加Finally方法块,并调用流的Close方法。这么看来使用try-with-resources来处理gzip流并没有问题。使用try-with 处理gzip流问题gzip会在close方法中调用finish方法把结果输出。 try
2020-06-04 17:28:59
1065
原创 神器之ByteBuddy,字节码注入分析代码执行性能
前文一路上看见晦涩难懂的ASM,小巧可人的Javassist。直到遇见了ByteBuddy才知世上竟有如此的冷艳简洁。JavaAgent从Jdk1.5开始Java开始支持Java Agent特性,可以通过premain方法,在Class字节码加载进虚拟机之前对底层的字节码进行修改。从而达到可以自定义特性的功能。给Aop的实现提供了一种更加简洁的方式。ByteBuddy字节码修改工具貌似从Java的诞生就一直存在,一开始的ASM,后来可以通过人类可以理解的方式修改字节码的Javassist,到现在的
2020-05-10 18:56:59
3909
6
原创 Shell 自动远程合并(Merge)分支
#!/bin/bash#----------------------------------------------------------# author : jiangcw# email : lonelyangel.jcw@gmail.com# date : 2019-03-08## param :# git repo : the address of git re...
2019-03-29 10:55:45
1430
原创 根据被占用的端口杀掉(Kill)对应占用的线程
#!/bin/bashsudo kill -9 $(lsof -i:$1 | awk '{print $2}' |sed -n 2p)
2019-03-29 10:54:19
633
原创 Linux Shell 备忘 笔记
1. 输出重定向文件描述符含义0输入STDIN1标准输出 STDOUT2标准错误 STDERR0,1,2 为内置描述符,3-9为保留自定义描述符# 临时重定向echo "Test" >&1 #标准输出echo "Error&am
2019-03-10 00:00:40
276
原创 Zstd、GZip、Snappy等几种压缩方式时间效率对比
ZSTD 解压缩方式的时间与设置的非压缩的原数据大小有关小文件:KB级别,执行1000次普通文件:kb级别,执行100次大文件:4M+,执行10次ZSTD:解压缩分配空间等于压缩后的大小*5结论:Zstd压缩方式压缩比确实要高一些,对于小文件,在耗时上Zstd明显要好于其他的压缩方式,对于大文件耗时上和Snappy差异不大Small File :Snappy : S...
2019-01-13 20:37:31
16545
原创 设计模式(Java)-观察者模式
类图Codingpackage WatchPattern;import java.util.List;/** * Created by jiangcw on 2017/2/4. */public interface ISubject { public void attachWatcher(IWatcher watcher); public void removeWarcher(
2017-02-04 10:57:23
336
原创 设计模式(Java)-装饰者模式
类图package DecoratorPattern;/** * Created by jiangcw on 2017/2/3. */public abstract class Component { public abstract void operate();}package DecoratorPattern;/** * Created by jiangcw on 2017/
2017-02-03 15:00:13
331
原创 Golang RPC
Server.gopackage mainimport ( "fmt" "net/rpc" "net" "log" "sync")type Arg struct { Param1 string}type Request struct{ Arg1 int Arg2 string Arg3 *Arg}type Respons
2017-01-06 03:49:59
557
转载 Vim插件管理利器——Vundle
Vundle是基于Git仓库的插件管理软件。Vundle将插件的安装简化为类似yum软件安装的过程,只要:BundleInstall插件就安装完了,:BundleClean之后插件就卸载了。 一、Vundle的安装和使用 1. Vundle的安装 [ruby] view plain copy 在CODE上查看代码片派生到我的代码片$ git clone http://github.com/g
2017-01-01 23:11:48
399
原创 在快节奏的路上,停下来,想一想,反思(2016-11-27杂记)
序:每一个人的经历,都是一本好书。真的的故事源自生活,好书的素材取自于生活。第一章:感谢自从七月份到携程实习以来,真的很感谢各位同事和同学帮助。czy同学在我还没有来上海就帮我安排了住宿事宜,真的很感谢,不然既要忙入职,还要忙找房子真的累人。cxj,zzh,sx,lk,mxw,zh等各位同学在我实习期间帮我搞定学校的各种麻烦事情。哈哈还有324,224,132实验室的各位大伙伴,小伙伴们。赵老师,王
2016-11-27 01:22:39
645
转载 C#委托 delegate
using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;namespace Test1{ class Program { public delegate double MProcess(dou
2016-10-04 19:15:23
289
转载 Centos Redis 安装
wget http://redis.googlecode.com/files/redis-2.6.13.tar.gztar xzf redis-2.6.13.tar.gzcd redis-2.6.13make MALLOC=libcmake installcp redis.conf /etc/参数介绍:make install命令执行完成后,会在/usr/local/bin目录下生成本个可执行文件,
2016-09-21 22:30:12
263
转载 Tmux 快捷键
原文链接server服务器。输入tmux命令时就开启了一个服务器。session会话。一个服务器可以包含多个会话。window窗口。一个会话可以包含多个窗口。pane面板。一个窗口可以包含多个面板。操作类似各种平铺式窗口管理器,tmux使用键盘操作,常用快捷键
2016-09-21 22:26:03
358
原创 Shell 快捷键
CTRL+W 删除光标所在的单词CTRL+U 清除行Tab 自动补全CTRL+R 搜索历史命令CTRL+C 终止当前命令CTRL+D 退出登录SHELLESC+T 调换光标前的两个单词
2016-09-17 04:27:07
260
转载 一致性哈希算法(consistent hashing)
转载请说明出处:http://blog.youkuaiyun.com/cywosp/article/details/23397179 一致性哈希算法在1997年由麻省理工学院提出的一种分布式哈希(DHT)实现算法,设计目标是为了解决因特网中的热点(Hot spot)问题,初衷和CARP十分类似。一致性哈希修正了CARP使用的简 单哈希算法带来的问题,使得分布式哈希(DHT)可以在P2P环境中真正得到应
2016-09-13 11:09:59
216
原创 Google Protocol Buffer 的使用和原理
IBM介绍 https://www.ibm.com/developerworks/cn/linux/l-cn-gpb/
2016-07-31 16:07:53
368
转载 Bat 语法
Bat语法1、 REM REM 是个注释命令一般是用来给程序加上注解的,该命令后的内容在程序执行的时候将不会被显示和执行。 例: REM 你现在看到的就是注解,这一句将不会被执行。 2、 ECHO ECHO 是一个回显命令主要参数有OFF和 ON,一般用ECHO message来显示一个特定的消息 。例: Echo off Rem 以上代表关闭回显即不显示所执行的命令 Echo 这个就是
2016-07-31 16:00:26
519
原创 Beego xsrf处理
服务端app.conf enablexsrf = true xsrfkey = 61oETzKXQAGaYdkL5gEmGeJJFuYh7EQnp2XdTP1o xsrfexpire = 3600 Controlle func (this *HomeController) Get(){ this.XSRFExpire = 7200 this.Data["xsrfdata"]=
2016-07-16 12:13:47
2404
原创 MongoDB 基本使用
启动mongodb服务端mongod --dbpath="[directory of db data]" --smallfiles操作//select dbuse [dbname]//show databaesshow dbs//show collections(table)show collections// query datadb.[collectonsname].find([q
2016-07-16 10:50:49
295
转载 解析301与302重定向之间的区别
1、什么是301转向?什么是301重定向? 301转向(或叫301重定向,301跳转)是当用户或搜索引擎向网站服务器发出浏览请求时,服务器返回的HTTP数据流中头信息(header)中的状态码的一种,表示本网页永久性转移到另一个地址。 2、什么是302重定向? 302重定向又称之为302代表暂时性转移(Temporarily Moved ),英文名称:302 redirect。 也
2016-05-08 16:53:59
7177
原创 Beego 1.6+ 错误页面(404,500)自定义重定向
1.Beego 1.6+从Beego1.6开始Beego不再支持Errorhandler,建议使用ErrorController 2.
2016-05-07 19:03:36
1793
原创 标签、Id、Class权值谁先生效实验
通过实验证明Id>class>标签2.<!DOCTYPE html><html><head><link href="index.css" type="text/css" rel= "stylesheet"/><script src="index.js" language="javascript"></script></head><body><div class="divclass"
2016-05-07 12:58:51
599
转载 ln 软连接(-s) 和 硬链接(-d)的区别
在Linux中,经常看见软连接和硬连接的说法,尤其是软连接更是比较多,可一直都不是很明白,今天在网上查了一下,很多人也和我一样,正处在郁闷 中,哈哈,过于深入的东西没有研究,在使用的层面上对这两个东西做一个简单的总结,方便了自己记忆,也给其他处在郁闷中的兄弟姐妹一点帮助,有什么问题也 欢迎大家指正,哈哈。 先说软连接,一个认为这个比较好理解,一个也是因为柿子专挑软的捏啊,哈哈,创建一个软连接的
2016-05-07 12:48:36
21507
转载 Golang strings 包 用法详解
package mainimport ( "fmt" "strings" //"unicode/utf8")func main() { fmt.Println("查找子串是否在指定的字符串中") fmt.Println(" Contains 函数的用法") fmt.Println(strings.Contains("seafood", "foo"))
2016-05-05 14:04:52
5248
1
原创 携程2016技术培训生(机票研发部)面经
1.笔试在线笔试,和腾讯笔试用的同一套系统,题目分为四部分,前三部分为智力题目,就是IQ测试那种题目。最后一部分是编程题目,难度中等。2.一面(前端)2016年4月某一天的下午,在实验室正准备去吃饭突然接到携程国际打来的电话。然后问,您好我是携程的前端面试官,请问您有时间进行以下面试吗。突如其来的的面试电话,当然可以了。面试问题(大体上啊,忘得差不多了):(1)js的API分为哪几类 (2)给同一
2016-05-02 19:09:53
4087
原创 Http协议分析
1.状态码1XX-提示信息——表示请求已经成功接收,继续处理;2XX 成功——表示请求已被成功接收,理解,接受;3XX 重定向——要完成请求必须进行更进一步的处理;4XX 客户端错误——请求有语法错误或请求无法实现;5XX 服务器端错误——服务器未能实现合法的请求;
2016-04-18 20:53:07
320
原创 Hierbate 3.3+Spring 3.1 +SpringMVC+Myeclipse 10集成框架搭建
一.环境配置1.myeclipse 10 2.springmvc (Spring web) 3.spring3.1(Spring core) 4.Hibernate 3.3(3.3+支持注解功能,3.3-不支持注解功能) 5.jackson-Core-1.9二.创建Java Web项目三.相关包导入(Spring包)使用myeclipse集成环境自动导入相关包 四.web.xml<?xml
2016-04-15 16:56:11
2115
转载 Mysql 查看连接数,状态
命令: show processlist;如果是root帐号,你能看到所有用户的当前连接。如果是其它普通帐号,只能看到自己占用的连接。 show processlist;只列出前100条,如果想全列出请使用show full processlist; mysql> show processlist;命令: show status;命令:show status like '%下面变量%';Ab
2016-04-07 22:04:08
388
原创 Linux查看内存等硬件信息
1.Linux秉承一切皆文件的理念,所以所有的硬件设备均以文件的形式在系统中呈现出来,所以要查看硬件设备的信息只要找到相应的文件即可,一般放置在/proc目录下 获取内存信息 获取io缓存信息
2016-04-07 22:01:09
380
原创 人脸识别初探(Python)
1.利用opencv库sudo apt-get install libopencv-*sudo apt-get install python-opencvsudo apt-get install python-numpy2 .Python实现import osimport osfrom PIL import Image,ImageDrawimport cvdef detect_object
2016-04-01 21:29:05
1289
原创 A star
A星算法步骤: 1.起点先添加到开启列表中 2.开启列表中有节点的话,取出第一个节点,即最小F值的节点 判断此节点是否是目标点,是则找到了,跳出 根据此节点取得八个方向的节点,求出G,H,F值 判断每个节点在地图中是否能通过,不能通过则加入关闭列表中,跳出 判断每个节点是否在关闭列表中,在则跳出 判断每个节点是否在开启列表中,在则更新G值,F值,还更新其父节点;不在则将其添加到开启列表
2016-04-01 21:22:07
294
原创 快排QuickSort
#include<iostream>#include<cstdio>#include<cstdlib>#define MAX_LEN 10using namespace std;int Partition(int a[],int start,int finish);void QuickSort(int a[],int start,int finish){ if(start<f
2016-04-01 15:44:55
2231
原创 Apache Tomcat Web集群
http://www.jfox.info/guan-yu-java-tomcat-ji-qun-de-mian-shi-wen-ti
2016-03-31 20:18:27
268
JS解析Xml绘制表格采用哪一种框架比较好?
2015-10-10
TA创建的收藏夹 TA关注的收藏夹
TA关注的人