曹操专车中台服务测试工作总结

转眼来曹操两年了,没想到居然在这里完成了很多的人生大事,记得当时华为离职的时候,还和一同离职的一个开发说,得找个互联网服务端的干干,给出的理由却是半开玩笑,未来搞下AI,需要涉及到算法,我觉得Java用来练习算法比较合适,虽然是当时说说而已,但是的确找了一个服务端的工作,依旧在滨江

来曹操之前并没有摸过Java,因此入职前简单看了下语法,甚至数据结构图除外小撸了一遍,因为是面向对象编程语言,[……]

Read more

Telnet调试Dubbo接口,参数里含有枚举类的执行异常解决

正常如果由于一些网络权限限制导致的无法远程调用dubbo进行测试的时候,可以直接在dubbo服务所在的机器上通过telnet来进行一个invoke的调用执行,今天在测试一个接口的时候,参数传入了一个枚举,结果报了一个错误

如果想要重现,可以直接创建一个dubbo工程,然后进行telnet调用,dubbo工程可参考:http://lihuia.com/dubbo%e8%9e%8d%e5%90%88n[……]

Read more

数组全排列算法非递归实现

全排列还是挺有点意思的,看起来很简单,做起来挺复杂的,除了之前的递归方式之外,研究下非递归实现

比如输入数组为arr = {2, 1, 3},那么简单可以通过下面几步计算全排列

1、arr先进行排序,从小到大,排序后{1, 2, 3}

2、从右往左,找到第一个i,使得arr[i] < arr[i+1],那么在arr[i+1:len]里找出一个最小的arr[min] > arr[i],然[……]

Read more

数组全排列算法递归处理

原题是提供一个数组,列出所有数字组成的全排列,排序后,进而随便提供一个index,能够逆向输出第index个排列

比如数组nums={1, 2, 3},那么全排列排序后结果为:[[1, 2, 3], [1, 3, 2], [2, 1, 3], [2, 3, 1], [3, 1, 2], [3, 2, 1]]

因此,完成流程有三个步骤:

1、nums求全排列

2、全排列排序保存起来

3、返回倒数in[……]

Read more

Java类的加载机制

1、什么是类的加载

类的加载指的是将类的.class文件中的二进制数据读入到内存中,将其放在运行时数据区的方法区内,然后在堆区创建一个java.lang.Class对象,用来封装类在方法区内的数据结构。类的加载的最终产品是位于堆区中的Class对象,Class对象封装了类在方法区内的数据结构,并且向Java程序员提供了访问方法区内的数据结构的接口。

类加载器并不需要等到某个类被“首[……]

Read more

Java CGLIB动态代理

JDK InvocationHandler的动态代理是基于接口来实现的,从newProxyInstance()方法中的参数也可以看出来,假如被代理的对象的类并没有实现接口,而是一个普通的类,那么久可以通过CGLIB动态代理来实现

了解了JDK动态代理之后,再来理解CGLIB相对容易一些,大致流程

1、通过CGLIB的Enhancer对象注入被代理类和方法属性,进而调用create()方法来创建代理[……]

Read more

Java JDK动态代理

到处都是用的动态代理,这次是认真的

静态代理:事先已经知道了要代理什么,而且编译时代理类就已经生成

动态代理:事先不知道要代理什么,运行的时候才能确定,实现InvocationHandler接口,调用Proxy的newProxyInstance()方法通过反射动态地创建代理类

下图就是创建代理类的流程

图来自:https://upload-images.jianshu.io/upload_ima[……]

Read more

Spring操作Redis数据库,RedisTemplate和StringRedisTemplate差异

Redis是KV内存数据库,支持很多数据结构,具体如下面之前写过的,也可以自行google

http://lihuia.com/?s=redis

Spring对Redis操作的支持,基本也和JDBC,MongoDB类似,通过Spring Data Redis,具体有

1、客户端支持,Jedis和Lettuce

2、RedisTemplate

3、Repository支持

测试一下通过Jedis来操[……]

Read more