- 博客(19)
- 资源 (14)
- 收藏
- 关注
原创 为什么abstract @service注解的类不被加载到beanfactory中
使用过spring开发的开发者对@Service注解以及@Autowired注解不会陌生,系统在启动时会把@Service注解的类加载到BeanFactory中,然后就可以通过@Autowired注解的方式注入Service类实例,但并不是所以被@Service注解的类都会被加载到系统中,那么到底哪些类会被加载到系统中(也就是满足什么条件才会被加载呢),这个看下ClassPathScanningC...
2019-03-31 10:09:55 6085
原创 cglib工作原理详解
cglib是一种动态代理方式,底层通过asm产生class字节码来完成动态代理,cglib与jdk动态代理相比,除了可以代理实现接口的类也可以代理非实现接口的类,通过fastclass类来避免了java反射的使用。对jdk7以前的版本来说,jdk动态代理执行效率明显要比cglib动态代理类效率差,jdk8即以后版本对jdk动态代理进行了相应的优化,这种差距就不那么明显了。但是要代理...
2019-03-23 16:27:03 6625 1
原创 java modifier
cglib是动态代理的一种,该类型代理是通过产生class的方式来产生代理类,相对于jdk动态代理,该类型代理可以代理没实现接口的类。CGLIB代理底层通过重新生成每个类的方法,final、private、static方法则不会创建新的方法。 java modifier作为反射的一部分,可以用来标识每个类以及类方法的属性,其值如下所示:publicstaticfinali...
2019-03-22 10:06:52 690
原创 jdk等hsdb导出系统加载类等功能介绍
1.运行HSDB代码java -classpath "%JAVA_HOME%/lib/sa-jdi.jar" sun.jvm.hotspot.HSDB2.attach到对应的java程序进程上3.进入下面页面:4.选择Class Browser进入加载类页面:5.点击“create .class for all classes”生成所有已加载的类,或者点击具体的类,导出...
2019-03-20 18:56:01 722
原创 fastJson将字符串转换成泛型对象
ApiResultTo<ClassA> res = JSON.parseObject(JSON.toJSONString(resultTo), new TypeReference<ApiResultTo<ClassA>>(){});即通过TypeReference即可实现从字符串到泛型对象的转换,亲测可用...
2019-03-20 16:22:53 4042
原创 使用@ControllerAdvice如何返回给前端对应错误码
@ControllerAdvice可以捕获spring应用下面未被捕获异常,下面是常见代码: @ExceptionHandler(value = Exception.class) @ResponseStatus(HttpStatus.INTERNAL_SERVER_ERROR) public String errorHandler(Exception ex) { ...
2019-03-20 13:49:44 3689 3
原创 jad Couldn't fully decompile method getIndex
使用jad以及JD-GUI反编译cglib产生的class文件时,发现这两种工具都不能很好的反编译fastclass文件,总会出现一部分汇编代码: /* Error */ public int getIndex(net.sf.cglib.core.Signature arg1) { // Byte code: // 0: aload_1 // 1: i...
2019-03-13 09:10:15 1124
原创 引入FastJsonHttpMessageConverter需要注意的地方
应用场景:feign客户端FastJsonHttpMessageConverter是基于fastjson的一种HttpMessageConverter,spring系统默认使用的是MappingJackson2HttpMessageConverter,但是在使用FastJsonHttpMessageConverter时要特别注意,因为FastJsonHttpMessageConverter很可...
2019-03-27 16:01:16 24409 2
原创 理解spring事务底层原理
事务是一种all or nothing的执行策略,常见数据库,这种策略遵从ACID原则,可以很好的保证业务的执行,spring事务底层可以使用tx命名空间实现,也可以通过Transactional注解的方式来实现,本文就讲下spring transactional注解底层的工作原理,要了解这个工作原理,首先要了解cglib的工作原理,这个可以参考文章:https://blog.csdn.net/j...
2019-03-27 08:53:30 2256
转载 Eclipse中设置作者日期等Java注释模板
转载自:https://jingyan.baidu.com/article/1612d500856cb1e20e1eeed5.htmlEclipse作为JavaIDE(Integrated Development Environment,集成开发环境),可以通过设置自动添加Javadoc注释信息,如@author 作者名、@version 版本标识、@date 日期等,在创建类或新增方法时会自...
2019-03-19 10:05:13 493
原创 放入http请求头中的内容如果含有中文必须编码
post请求体中的内容可以不编码,这样传到服务接口的数据不会乱码,但是放在post请求头中的数据如果有中文必须进行编码,然后在接口中进行译码,否则中文会出现乱码,java程序中常用的两个方法:java.net.URLEncoder.encode("http请求头中token","utf-8") --编码java.net.URLDecoder.decode(token,"utf-8")...
2019-03-15 09:41:59 18661
转载 JVM指令
转载自:https://www.jianshu.com/p/9f09a0c21542凡是带const的表示将什么数据压操作数栈iconst_2 将int型数据2压入到操作数栈; aconst_null 将null值压入栈; bipush和sipush 表示将单字节或者短整形的常量值压入操作数栈;带ldc的表示将什么类型数据从常量池中压入到操作数栈。ldc_w 将int或者flat...
2019-03-12 14:33:38 194
转载 jvm tableswitch lookupswitch
转载自:https://zangxt.iteye.com/blog/421520switch是控制选择的一种方式,编译器生成代码时可以对这种结构进行特定的优化,从而产生效率比较高的代码。在java中,编译器根据分支的情况,分别产生tableswitch,lookupswitch两中情况,其中tableswitch适用于分支比较集中的情况,而lookupswitch适用与分支比较稀疏的情况。不...
2019-03-12 14:31:46 1283 1
转载 JVM内幕:Java虚拟机详解
转载自:https://www.cnblogs.com/yhl-yh/p/7145218.html这篇文章解释了Java 虚拟机(JVM)的内部架构。下图显示了遵守Java SE 7 规范的典型的 JVM 核心内部组件。上图显示的组件分两个章节解释。第一章讨论针对每个线程创建的组件,第二章节讨论了线程无关组件。线程 JVM 系统线程 每个线程相关的 程序计数器 栈...
2019-03-12 14:21:47 234
转载 This application requires a Java Runtime Environment 1.7.0
转载自:https://blog.csdn.net/LearningForFun/article/details/79626954系统已经安装过了java1.8(解压缩版的),安装jd-gui时提示需要java1.7环境方法一在当前文件夹内,按住Shift键,右击空白处,点击”在此处打开命令窗口”,输入命令:java -jar jd-gui.exe(文件名,含后缀)1打...
2019-03-12 11:19:01 8075
原创 eclipse encoding
下面这个页面是使用eclipse的开发者基本上都见过的画面,本文要讲的就是Encoding部分,这个地方的设置到底用在了哪里,Encoding在windows系统默认采用的就是GBK,但是系统开发经常会用到UTF-8编码,linux上默认的编码就是UTF-8,为了避免不同系统间因为编码导致的问题,一般我们也会把Encoding里面选择UTF-8编码格式,这个设置最终会影响file.enco...
2019-03-11 14:00:55 665
转载 为什么说Java中只有值传递
转载自:https://github.com/john1337/toBeTopJavaer/blob/master/basics/java-basic/java-pass-by.md对于初学者来说,要想把这个问题回答正确,是比较难的。在第二天整理答案的时候,我发现我竟然无法通过简单的语言把这个事情描述的很容易理解,遗憾的是,我也没有在网上找到哪篇文章可以把这个事情讲解的通俗易懂。所以,就有了我...
2019-03-11 10:30:38 244
转载 Java 8中处理集合的优雅姿势——Stream
转载自:https://mp.weixin.qq.com/s/adKZrOe6nFEmuADHijsAtA在Java中,集合和数组是我们经常会用到的数据结构,需要经常对他们做增、删、改、查、聚合、统计、过滤等操作。相比之下,关系型数据库中也同样有这些操作,但是在Java 8之前,集合和数组的处理并不是很便捷。不过,这一问题在Java 8中得到了改善,Java 8 API添加了一个新的抽象称...
2019-03-11 10:05:25 504
转载 cglib demo以及Enhancer源码解析
转载自:https://www.jianshu.com/p/20203286ccd9先通过demo演示效果,然后进行源码分析demo用Enhancer结合MethodInterceptor以及CallBackFilter完成这里Enhancer类是CGLib中的一个字节码增强器,它可以方便的对你想要处理的类进行扩展1.demo拦截器1package cglib;impo...
2019-03-09 21:29:41 1105 1
thingsboard-mqtt脚本.zip
2020-05-13
Mastering Unit Testing Using Mockito and JUnit
2017-05-06
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人