- 博客(29)
- 收藏
- 关注
原创 LinkedBlockingQueue和ArrayBlockingQueue
区别 ArrayBlockingQueue LinkedBlockingQueue 是否有界 不可扩容,有界 可有可无,最大值Integer.Max,无界时注意防止内存溢出 gc 采用的是数组的存储容器,因此在插入或删除元素时不会产生或销毁任何额外的对象实例 长时间内需要高效并发地处理大批量数据的时,对于GC可能存在较大影响 锁 即添加操作和移除操作采用的同一个ReenterLock锁 LinkedBlockingQueue实现的队列中的锁是分离的
2022-02-16 23:21:56
143
原创 select、poll、epoll
BIO的缺点bio单线程阻塞,read方法阻塞,这样想要并发就需要多线程支持,造成资源浪费NIO的设计思路想用单线程来处理并发selector、epoll两个函数
2022-02-07 22:51:10
126
原创 NGINX配置
本配置解决两个问题多域名同端口映射不同项目 root和alias的区别server_name可解决多域名同端口的问题。其实一般情况用不到,只是我们的项目是老项目,旧地址已经被很多地方引用了,不能改原来的。所以要在原有路径基础上新增域名。具体示例如下: server { listen 8089; server_name wind.taobao.com; location / { add_heade
2021-09-23 14:07:31
147
原创 客户端缓存工具对比。
ehcache多级缓存策略 缓存的数据在内存和磁盘当中 缓存数据在虚拟机重启时写入磁盘 可以通过rmi和接口的方式实现分布式缓存 允许注册事件来侦听缓存GuavaCache相对于CurrentHashMap,限制内存的使用,会自动回收元素 轻量级框架SpringCache通过少量的配置就可以使用既有代码支持缓存 不用安装和部署额外第三方组件就可以使用缓存 支持SPring Express Language 支持Aspectj 支持自定义key,具有相当的灵活性和扩展性有否
2020-07-31 16:56:13
308
原创 SpringBoot2.0升级中碰到的Feign401问题
bug描述:由于springboot1.x没有rmq断线重连功能(这里的重连不是连不上服务器,而是客户端连上服务器了但是没有自动连queue),对项目升级2.0。克服了种种jar包替换问题,终于以为OK了,没想到实际调用feign接口的都调不通了。赶紧排查,发现接口有授权,需要验证api 的key,问题是明明key已经设置了呀。一通debug,发现实际上自定义的key值由两个值拼起来的。切回springboot1.x,key值就只有一个。openfeign这是在搞事情啊。同时debug的时候发现
2020-07-08 19:08:29
1143
原创 redis笔记
Redis 是 C 语言开发的一个开源的(遵从 BSD 协议)高性能键值对(key-value)的内存数据库,可以用作数据库、缓存、消息中间件等 性能优秀,数据在内存中,读写速度非常快,支持并发 10W QPS。单进程单线程,是线程安全的,采用 IO 多路复用机制。丰富的数据类型,支持字符串(strings)、散列(hashes)、列表(lists)、集合(sets)、有序集合(sorted s...
2020-05-05 10:13:24
189
原创 new Object()发生了什么?
问题1 新建对象的过程申请空间,此时成员变量赋初始值 调用构造方法,给成员变量赋值 关联引用问题2 DCL和volatile的关系DCL全程Double Check Lock指的是单例的懒汉模式双重非空检测 cpu在执行指令时会发生指令重排序,谁快就执行谁 volatile通过写操作加内存屏障,禁止指令重排问题3 对象的结构对象结构 含义 32位大小 64...
2020-05-02 21:27:13
923
原创 Spring循环依赖
Spring在bean实例化时有如下过程对象初始化 // Instantiate the bean. BeanWrapper instanceWrapper = null; if (mbd.isSingleton()) { instanceWrapper = this.factoryBeanInstanceCache.remove(...
2020-04-26 21:45:45
117
原创 Eureka原理笔记
Eureka强调可用性,AP原则,zookeeper强调数据一致性,CP原则客户端发送htpp请求,携带注册信息Eureka底层用Jersey实现,也是MVC架构,依靠过滤器处理请求主要功能服务注册 默认90s 服务剔除 判断是否启动自我保护机制,如果没开启,就把一批过期节点从注册表中删掉,缓存中也删掉 自我保护机制-15分钟内85%的节点宕机会自动启动自我保护机制,不再...
2020-04-23 11:53:41
175
原创 spring-mybatis核心笔记
mybatis通过代理模式产生mapper的代理类,jdk的动态代理spring怎么把mybatis产生的代理对象注入到容器中?spring注入对象的方式@Bean FactoryBean 把该类交给spring来管理, api registrySingleton --beanFactory.registerSingleton() FactoryMethod beanfacto...
2020-04-22 12:10:39
152
原创 HTTP握手笔记
应用层HTTP协议传输控制层TCP协议 -两个特点:面向连接,可靠传输 面向连接-三次握手面向连接-四次分手可靠的传输网络层ICMP协议网际报文控制协议 寻址: IP 路由:掩码&目标地址 得到路由器地址, socket里面写的是目标地址,但是要发到路由地址,怎么办呢,进入下一跳,让链路层处理链路层ARP协议地址解析协议 获取...
2020-04-17 12:06:31
70
原创 Mysql数据库隔离级别与锁的关系
事务级别事务ACID :原子性,隔离性,一致性,持久性 读未提交:最低级别,能读到所有的值,包括未提交的,导致脏读 读已提交:解决了脏读,不可重复读,某些情况下不可重复读并不是问题。 可重复读:默认级别,开启事务解决不可重复读,有可能会幻读 串行化:最高级别,不会脏读,不可重复读,幻读锁: 共享锁:shared lock ,又称s锁,读锁,允许其他读,禁止其他修改 排...
2020-04-14 13:20:31
216
原创 JVM类加载过程
类生命周期:加载在Java程序运行之前JVM会把编译完成的.class二进制文件加载到内存,后续提供程序使用,用到的就是类加载器ClassLoader 。加载阶段与连接阶段的部分内容(如一部分字节码文件格式验证动作)是交叉进行的,加载阶段尚未结束,连接阶段就可能开始了。但是夹在加载阶段进行的动作,仍然属于连接阶段的内容。验证文件格式验证,元数据验证,字节码验证,符号引用验证准备正...
2020-04-14 10:54:25
128
原创 Mysql 索引总结
数据结构基础知识常见数据结构:数组,链表 二叉树:AVL树(平衡二叉树): 红黑树: B树(多叉平衡树): B+树: Mysql结构采用B+树,三层树即能存至少2千万的索引数据 存储引擎是表级别的,每个表都可以单独设置存储引擎 根节点常驻缓存 mylsam 索引文件和数据文件时分离的,叫非聚集型索引(稀疏索引),三个文件.frm/.MY...
2020-04-13 20:57:40
103
原创 HashMap核心总结
数据结构:数组+链表+红黑树为啥用数组:数组使用连续存储单元存储数据,查找复杂度为O(1),非常快,但是移动效率低,为O(n) 通过hash算法得到数组下标,index=hashcode%数组长度,但是hash算法有可能会对不同的key算出同样的hash值,导致hash冲突 为了解决hash冲突,引入线性链表:单向链表:插入删除效率很高,O(1),查找效率低O(n) 当链表中元素越来...
2020-04-13 17:25:49
120
原创 集合的不安全性
如何验证集合的不安全性 Map<String, Object> map2 = new ConcurrentHashMap<>(); Map<String, Object> map1 = Collections.synchronizedMap(new HashMap<String, Object>()); ...
2020-04-12 17:24:35
107
原创 垃圾回收器
七种垃圾回收器java8 默认的是Parallel Scavenge-Parallel Old java9 默认是G1 ParallelScavenge 和ParNew的区别在于:1)可控制的吞吐量 2)自适应调节策略 使用策略:单核或小内存:-XX:+UseSerialGC 多核,需要大吞吐量,如后台计算应用:-XX:+UseParallelGC 或者-XX:+UsePar...
2020-04-12 09:24:38
114
原创 四种引用
强引用:不会被回收软引用:当内存充足时不回收,当内存不够时回收弱引用:回收case: public static void main(String[] args) { Object obj = new Object(); WeakReference<Object> weakReference = new WeakReference&...
2020-04-11 19:52:13
78
原创 报错信息:java.lang.NoClassDefFoundError: org/apache/ibatis/reflection/ExceptionUtil
<where> <if test=" deptName!=null and deptName!='' "> <bind name="deptName" value="'%' + deptName +'%'"/> DEPT_NAME like #{deptName...
2020-03-19 16:11:26
9480
2
原创 Error setting non null for parameter #11 with JdbcType null
报错信息:org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.type.TypeException: Could not set parameters for mapping: ParameterMapping{property='assessmentType', mode=IN, jav...
2020-03-13 20:37:49
2401
原创 Activiti带Variable参数查询时分页是失效的
无论是查询待办还是已办,当你对query加上.includeProcessVariables()方法后,activiti会按照自定义的最大值(默认是20000)来查出所有数据,然后在结果中处理分页。这会导致相当大的数据量。 int firstResult = historicTaskInstanceQuery.getFirstResult(); int maxResult...
2020-03-05 11:34:13
1303
1
原创 Transaction is marked for rollback only or has timed out
Springboot,Activiti,Atomikos:com.atomikos.datasource.xa.session.InvalidSessionHandleStateException: Transaction is marked for rollback only or has timed out at com.atomikos.datasource.xa.sessio...
2019-12-23 17:02:25
1643
原创 Acitivit导出动态流程图环节名称空白
近期导出动态流程图时在windows服务器上可见,把服务部署到linux上发现,流程图环节名称变成空白了,后来发现把流程图环节放大可解决此问题
2019-04-29 14:11:26
370
原创 ### Cause: java.sql.SQLSyntaxErrorException: ORA-01722: 无效数字
org.springframework.dao.DataIntegrityViolationException: ### Error querying database. Cause: java.sql.SQLSyntaxErrorException: ORA-01722: 无效数字### The error may exist in file [C:\Users\liuhaiyun\g...
2019-02-13 17:59:44
10294
原创 SpringBootTest 和PowerMocker
import static org.junit.Assert.assertNotEquals;import static org.junit.Assert.assertNotNull;import static org.junit.Assert.assertTrue;import java.util.HashMap;import java.util.Map;import org...
2019-01-02 17:47:22
1139
原创 json序列化
若get开头且第四个字母是大写的方法中有空指针异常时(无论有没有对应属性)1.阿里巴巴的FastJson会出现空指针异常,证明与get开头的方法有关2.Google的Gson不会出现异常,因为只和属性有关,和get开头的方法没关系3.java开源的Jackson也会出现异常,证明与get开头的方法有关但是set开头的方法有异常时,三种序列化都不会影响...
2018-12-17 08:54:03
110
原创 SpringBoot 文件导出到浏览器
private ResponseEntity<OutputStream> downAttachment(InputStream is, OutputStream os, String fileName) throws IOException { byte[] buffer = new byte[1024]; int length ...
2018-12-05 11:18:05
2393
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人