java
xiaoxiaoyunlu
专注于java开发的菜鸟工程师,希望和大家一起进步
展开
-
调试钉钉小程序请求的坑-@RequestBody处理form提交数据
问题背景 接口项目本身约定数据都是json格式,使用@RequestBody接收@RestController@RequestMapping("/app")@Transactional(rollbackFor=Exception.class)public class AppAction { @PostMapping("/login") public LoginResp l...原创 2020-04-15 15:32:10 · 4057 阅读 · 0 评论 -
经典线程面试题-两个线程交替打印
看到群里发了个面试题,实现两个线程交替打印从1到100,很基础,但是也很考验多线程的基本功,自己开始能想到的是synchronized 和 wait notifyAll 和Lock ,其他的都是参考网上的博客自己调试整理的不多说,直接上代码通用字段,注意volatile的使用,保证可见性public static int i = 1;public volatile stat...原创 2019-01-17 12:00:10 · 18436 阅读 · 7 评论 -
聊聊并发-Java中的Copy-On-Write容器
Copy-On-Write简称COW,是一种用于程序设计中的优化策略。其基本思路是,从一开始大家都在共享同一个内容,当某个人想要修改这个内容的时候,才会真正把内容Copy出去形成一个新的内容然后再改,这是一种延时懒惰策略。从JDK1.5开始Java并发包里提供了两个使用CopyOnWrite机制实现的并发容器,它们是CopyOnWriteArrayList和CopyOnWriteArra...转载 2019-01-07 13:24:11 · 151 阅读 · 0 评论 -
Java NIO学习笔记四(零拷贝详解)
什么是零拷贝维基上是这么描述零拷贝的:零拷贝描述的是CPU不执行拷贝数据从一个存储区域到另一个存储区域的任务,这通常用于通过网络传输一个文件时以减少CPU周期和内存带宽。零拷贝给我们带来的好处减少甚至完全避免不必要的CPU拷贝,从而让CPU解脱出来去执行其他的任务减少内存带宽的占用通常零拷贝技术还能够减少用户空间和操作系统内核空间之间的上下文切换零拷贝的实现零拷贝实际的实现并没...转载 2019-01-03 10:04:42 · 447 阅读 · 0 评论 -
java8新特性之方法引用和构造器引用
知识点一:方法引用什么是方法引用? 答:方法引用是对Lambda表达式符合某种情况下的一种缩写,使得我们的Lambda表达式更加的精简, 也可以理解为Lambda表达式的另一种表现形式(缩写)什么时候使用方法引用呢?答:当要传递给Lambda体内的操作,已经有实现的方法了,就可以使用方法引用了方法引用使用的前提条件是什么呢?答: 1.方法引用所引用的方法的参数列表必须要...转载 2019-01-18 10:44:12 · 303 阅读 · 0 评论 -
shiro 整合swagger2的坑
swagger是个好东西,解放了双手,一直在用,最近又整合了基于shiro的权限控制,出问题了,http://ip:port/swagger-ui.html访问不正常,问题肯定是shiro没放行导致的,于是暂时关了shiro,查看swagger2都需要那些请求需要放行。首先 常规的过滤放行如下:filterChainDefinitionMap.put("/swagger-ui.html"...原创 2019-01-25 11:01:20 · 8554 阅读 · 1 评论 -
Java的四种引用方式
转载自博客:https://www.cnblogs.com/huajiezh/p/5835618.htmljava内存管理分为内存分配和内存回收,都不需要程序员负责,垃圾回收的机制主要是看对象是否有引用指向该对象。java对象的引用包括强引用,软引用,弱引用,虚引用Java中提供这四种引用类型主要有两个目的:第一是可以让程序员通过代码的方式决定某些对象的生命周期;第二是有...转载 2019-03-21 14:00:59 · 235 阅读 · 0 评论 -
Java动态代理机制详解(JDK 和CGLIB,Javassist,ASM)
转载原文:https://blog.csdn.net/luanlouis/article/details/24589193class文件简介及加载Java编译器编译好Java文件之后,产生.class 文件在磁盘中。这种class文件是二进制文件,内容是只有JVM虚拟机能够识别的机器码。JVM虚拟机读取字节码文件,取出二进制数据,加载到内存中,解析.class 文件内的信息,生成...转载 2019-05-06 17:07:47 · 167 阅读 · 0 评论 -
幂等的理解和处理
什么是幂等幂等(idempotent、idempotence)是一个数学与计算机学概念,常见于抽象代数中。在编程中,幂等 的理解就是,在数据不变的情况下,一个操作,无论执行多少次,结果都是一样的常用场景前端数据重复提交订单支付请求无论是网络超时?系统bug?还是其他原因,都只应该扣一次钱Mpush推送消息推送多条同样的消息,用户会疯掉的发短信给用户用户下单...原创 2019-06-04 14:11:09 · 11984 阅读 · 0 评论 -
ByteBuffer简要分析
ByteBufferallocate(int capacity)public static ByteBuffer allocate(int capacity) { if (capacity < 0) throw new IllegalArgumentException(); return new HeapByteBuffer(capacity, capac...原创 2019-07-24 14:20:36 · 202 阅读 · 0 评论 -
简单的使用protobuf和protostuff
在我们的开发过程中,序列化是经常需要处理的问题,比如在做分布式访问数据时,或者是在做redis缓存存储数据时,如果我们涉及的知识面不够广的话,可能会简单的使用JDK的序列化,也即在需要序列化的类上implements Serializable接口去实现序列化,我想说的是这种方式在小系统中尚且可以用一用,如果是并发很大的系统会受到严重影响,这是由于JDK自带的序列化效率很低,不论是时间上还是空间...转载 2018-12-25 11:06:33 · 1005 阅读 · 0 评论 -
注解的继承问题测试分析
子类可以继承到父类上的注解吗?-----------------------------------------------------------------我们知道在编写自定义注解时,可以通过指定@Inherited注解,指明自定义注解是否可以被继承。但实现情况又可细分为多种。测试环境如下:--------------------------------------------...转载 2018-12-11 16:33:08 · 182 阅读 · 0 评论 -
jdk8中forEach使用问题
实话说,jdk8出来好久了,公司一直用的还是jdk7,没有升级,最近终于升级到jdk8了,所以来自己改改代码,使用jdk8中的新特性,最简单的forEach先来试试测试代码如下:public static void testJDK8ForEach(){ List<String> asList = Arrays.asList("a","b","a","d"); int ...原创 2018-12-27 10:17:08 · 5358 阅读 · 0 评论 -
redis 存对象的方法对比
问题背景:原来项目里面全部是直接redis存储对象的json数据,需要频繁的序列化和反序列化,后来考虑更换项目中的redis存储对象为hash对象存储的,但是获取后不能方便的set get操作,很是蛋疼,怎么才能解决这个问题呢?1.1 直接存储对象的json存放redis的时候,直接先用fastJson 或者 jackJson或者Gson把对象序列化为json数据,然后用直接存放,原创 2018-01-04 12:10:22 · 12602 阅读 · 3 评论 -
java中interface是不是继承Object
疑问描述:在如下代码的时候,不是很理解,为什么这么判断? 很明显,是要判断是传进来的method的声明类是接口还是实现类,但是为什么直接用Object来判断呢?好像一直也没有去思考过这个问题,好尴尬,于是查阅资料,看看interface是不是继承Object. Sun的官方文档TJLS(The Java Language Specification)第9章9.2节关于接口描述如下: ...原创 2018-04-09 09:46:45 · 1500 阅读 · 1 评论 -
详解Java的自动装箱与拆箱(Autoboxing and unboxing)
一、什么是自动装箱拆箱 很简单,下面两句代码就可以看到装箱和拆箱过程1 //自动装箱2 Integer total = 99;3 4 //自定拆箱5 int totalprim = total; 简单一点说,装箱就是自动将基本数据类型转换为包装器类型;拆箱就是自动将包装器类型转换为基本数据类型。下面我们来看看需要装箱拆箱的类型有哪些:这个过程是自动执行的,那么我们需要看看它的执行过程:1 ...转载 2018-04-16 11:46:07 · 246 阅读 · 0 评论 -
从字节码角度分析 i++ 和 ++i 实现
最近看到个面试题:int j=0;for(int i=0;i<100;i++) j = j++;System.out.println(j);输出结果是0,如果换成j++,那么输出100,这是为什么?对于这种问题,其实有点经验的程序员都知道,前置++和后置++的运算区别:1、前置++是将自身加1的值赋值给新变量,同时自身也加12、后置++是将自身的值赋给新变量,然后才自身加1话虽...转载 2018-04-12 09:11:13 · 1067 阅读 · 0 评论 -
JVM调优总结 -Xms -Xmx -Xmn -Xss
jvm内存参数配置转载 2018-05-03 13:38:27 · 468 阅读 · 0 评论 -
SQLException捕获不到的问题
问题描述:做统一异常处理封装类处理,结果发现一直处理不了SQLException及其子类异常@ResponseBody@ExceptionHandler(value=SQLException.class)public ResponseModel sqlErrorHandler(SQLException e){ System.out.println("sql error handler"...原创 2018-10-25 17:06:33 · 13355 阅读 · 5 评论 -
记录一次升级公司框架导致的service注入失败的问题
背景:公司使用的还是jdk7,早就想升级到jdk8,但是很坑爹的是,公司的框架使用的是Netty3.2.7和spring3.x,不能升级,jdk8必须使用spring4.x才可以,当然,spring4.x可以向下兼容jdk7.思考再三,长痛不如短痛,升级Netty3.2.7到Netty4.1.31(Netty最新版本是5.x但是废弃了,不建议使用),spring3.x升级到spring4.3.20...原创 2018-11-24 21:41:56 · 1420 阅读 · 0 评论 -
阿里员工都是这样排查Java问题的,附工具单
平时的工作中经常碰到很多疑难问题的处理,在解决问题的同时,有一些工具起到了相当大的作用,在此书写下来,一是作为笔记,可以让自己后续忘记了可快速翻阅,二是分享,希望看到此文的同学们可以拿出自己日常觉得帮助很大的工具,大家一起进步。Linux命令类tail最常用的tail -ftail -300f shopbase.log #倒数300行并进入实时监听文件写入模式grep...转载 2018-12-14 09:53:13 · 281 阅读 · 0 评论 -
mybatis中parameterType 对象传值字段匹配问题
众所周知,parametertype传入参数分为以下两种:(1)java基本数据类型(2)复杂数据类型(java实体类和Map,List) 本文的重点讨论的分页查询中是java实体类的字段匹配问题分页的通用实体类如下:public abstract class BaseQuery { private Integer page=1; // 当前页 ...原创 2018-12-27 10:03:17 · 4693 阅读 · 0 评论 -
java String的创建方式以及"=="和equal的理解
看了一篇博客,突然感觉自己对"=="和equal的理解,有些模糊了,因此重新充充电,加深理解转载 2017-12-27 11:22:29 · 284 阅读 · 0 评论