LinkedBlockingQueue和ArrayBlockingQueue 区别 ArrayBlockingQueue LinkedBlockingQueue 是否有界 不可扩容,有界 可有可无,最大值Integer.Max,无界时注意防止内存溢出 gc 采用的是数组的存储容器,因此在插入或删除元素时不会产生或销毁任何额外的对象实例 长时间内需要高效并发地处理大批量数据的时,对于GC可能存在较大影响 锁 即添加操作和移除操作采用的同一个ReenterLock锁 LinkedBlockingQueue实现的队列中的锁是分离的
NGINX配置 本配置解决两个问题多域名同端口映射不同项目 root和alias的区别server_name可解决多域名同端口的问题。其实一般情况用不到,只是我们的项目是老项目,旧地址已经被很多地方引用了,不能改原来的。所以要在原有路径基础上新增域名。具体示例如下: server { listen 8089; server_name wind.taobao.com; location / { add_heade
客户端缓存工具对比。 ehcache多级缓存策略 缓存的数据在内存和磁盘当中 缓存数据在虚拟机重启时写入磁盘 可以通过rmi和接口的方式实现分布式缓存 允许注册事件来侦听缓存GuavaCache相对于CurrentHashMap,限制内存的使用,会自动回收元素 轻量级框架SpringCache通过少量的配置就可以使用既有代码支持缓存 不用安装和部署额外第三方组件就可以使用缓存 支持SPring Express Language 支持Aspectj 支持自定义key,具有相当的灵活性和扩展性有否
SpringBoot2.0升级中碰到的Feign401问题 bug描述:由于springboot1.x没有rmq断线重连功能(这里的重连不是连不上服务器,而是客户端连上服务器了但是没有自动连queue),对项目升级2.0。克服了种种jar包替换问题,终于以为OK了,没想到实际调用feign接口的都调不通了。赶紧排查,发现接口有授权,需要验证api 的key,问题是明明key已经设置了呀。一通debug,发现实际上自定义的key值由两个值拼起来的。切回springboot1.x,key值就只有一个。openfeign这是在搞事情啊。同时debug的时候发现
redis笔记 Redis 是 C 语言开发的一个开源的(遵从 BSD 协议)高性能键值对(key-value)的内存数据库,可以用作数据库、缓存、消息中间件等 性能优秀,数据在内存中,读写速度非常快,支持并发 10W QPS。单进程单线程,是线程安全的,采用 IO 多路复用机制。丰富的数据类型,支持字符串(strings)、散列(hashes)、列表(lists)、集合(sets)、有序集合(sorted s...
new Object()发生了什么? 问题1 新建对象的过程申请空间,此时成员变量赋初始值 调用构造方法,给成员变量赋值 关联引用问题2 DCL和volatile的关系DCL全程Double Check Lock指的是单例的懒汉模式双重非空检测 cpu在执行指令时会发生指令重排序,谁快就执行谁 volatile通过写操作加内存屏障,禁止指令重排问题3 对象的结构对象结构 含义 32位大小 64...
Spring循环依赖 Spring在bean实例化时有如下过程对象初始化 // Instantiate the bean. BeanWrapper instanceWrapper = null; if (mbd.isSingleton()) { instanceWrapper = this.factoryBeanInstanceCache.remove(...
Eureka原理笔记 Eureka强调可用性,AP原则,zookeeper强调数据一致性,CP原则客户端发送htpp请求,携带注册信息Eureka底层用Jersey实现,也是MVC架构,依靠过滤器处理请求主要功能服务注册 默认90s 服务剔除 判断是否启动自我保护机制,如果没开启,就把一批过期节点从注册表中删掉,缓存中也删掉 自我保护机制-15分钟内85%的节点宕机会自动启动自我保护机制,不再...
spring-mybatis核心笔记 mybatis通过代理模式产生mapper的代理类,jdk的动态代理spring怎么把mybatis产生的代理对象注入到容器中?spring注入对象的方式@Bean FactoryBean 把该类交给spring来管理, api registrySingleton --beanFactory.registerSingleton() FactoryMethod beanfacto...
HTTP握手笔记 应用层HTTP协议传输控制层TCP协议 -两个特点:面向连接,可靠传输 面向连接-三次握手面向连接-四次分手可靠的传输网络层ICMP协议网际报文控制协议 寻址: IP 路由:掩码&目标地址 得到路由器地址, socket里面写的是目标地址,但是要发到路由地址,怎么办呢,进入下一跳,让链路层处理链路层ARP协议地址解析协议 获取...
Mysql数据库隔离级别与锁的关系 事务级别事务ACID :原子性,隔离性,一致性,持久性 读未提交:最低级别,能读到所有的值,包括未提交的,导致脏读 读已提交:解决了脏读,不可重复读,某些情况下不可重复读并不是问题。 可重复读:默认级别,开启事务解决不可重复读,有可能会幻读 串行化:最高级别,不会脏读,不可重复读,幻读锁: 共享锁:shared lock ,又称s锁,读锁,允许其他读,禁止其他修改 排...
JVM类加载过程 类生命周期:加载在Java程序运行之前JVM会把编译完成的.class二进制文件加载到内存,后续提供程序使用,用到的就是类加载器ClassLoader 。加载阶段与连接阶段的部分内容(如一部分字节码文件格式验证动作)是交叉进行的,加载阶段尚未结束,连接阶段就可能开始了。但是夹在加载阶段进行的动作,仍然属于连接阶段的内容。验证文件格式验证,元数据验证,字节码验证,符号引用验证准备正...
Mysql 索引总结 数据结构基础知识常见数据结构:数组,链表 二叉树:AVL树(平衡二叉树): 红黑树: B树(多叉平衡树): B+树: Mysql结构采用B+树,三层树即能存至少2千万的索引数据 存储引擎是表级别的,每个表都可以单独设置存储引擎 根节点常驻缓存 mylsam 索引文件和数据文件时分离的,叫非聚集型索引(稀疏索引),三个文件.frm/.MY...
HashMap核心总结 数据结构:数组+链表+红黑树为啥用数组:数组使用连续存储单元存储数据,查找复杂度为O(1),非常快,但是移动效率低,为O(n) 通过hash算法得到数组下标,index=hashcode%数组长度,但是hash算法有可能会对不同的key算出同样的hash值,导致hash冲突 为了解决hash冲突,引入线性链表:单向链表:插入删除效率很高,O(1),查找效率低O(n) 当链表中元素越来...
集合的不安全性 如何验证集合的不安全性 Map<String, Object> map2 = new ConcurrentHashMap<>(); Map<String, Object> map1 = Collections.synchronizedMap(new HashMap<String, Object>()); ...
垃圾回收器 七种垃圾回收器java8 默认的是Parallel Scavenge-Parallel Old java9 默认是G1 ParallelScavenge 和ParNew的区别在于:1)可控制的吞吐量 2)自适应调节策略 使用策略:单核或小内存:-XX:+UseSerialGC 多核,需要大吞吐量,如后台计算应用:-XX:+UseParallelGC 或者-XX:+UsePar...
四种引用 强引用:不会被回收软引用:当内存充足时不回收,当内存不够时回收弱引用:回收case: public static void main(String[] args) { Object obj = new Object(); WeakReference<Object> weakReference = new WeakReference&...