会员
众包
新闻
博问
闪存
赞助商
HarmonyOS
Chat2DB
所有博客
当前博客
我的博客
我的园子
账号设置
会员中心
简洁模式
...
退出登录
注册
登录
挣扎一下
博客园
首页
新随笔
联系
订阅
管理
上一页
1
2
3
4
5
6
7
8
下一页
2020年7月21日
JVM:垃圾回收
摘要: 判断对象是否存活 引用计数 假如对象被引用,则计数加1,计数为0时回收。但是存在循环引用问题:A引用B,B引用A,导致AB永远不能被回收。 可达性分析(JAVA采用的算法) 从GC Root出发看某个对象是否可达。假如不可达,则回收。 GC Root:存活时间很长的对象,有存在意义的对象。 虚拟机栈
阅读全文
posted @ 2020-07-21 00:43 挣扎一下
阅读(133)
评论(0)
推荐(0)
2020年7月19日
JVM:细节拓展
摘要: 堆 上次我们说到了堆主要存在对象和数组,实际上,在堆中还有更细节的分代划分。GC算法也是基于分代划分来回收的。 新生代Young:新创建的对象(大多数对象都是朝生夕死,生命周期很短) Eden SurvivorFrom SurvivorTo 默认E:S0:S1 = 8 :1 :1 老年代Old 对象
阅读全文
posted @ 2020-07-19 23:16 挣扎一下
阅读(142)
评论(0)
推荐(0)
JVM:一些基础知识准备
摘要: 类加载机制 Load:装载类信息 ClassLoader:类加载器 双亲委派:加载器对一个类加载器会先让父类加载器加载,假如父类加载器找不到该类,才让子类加载器加载 Linking:连接 verify(验证):保证被加载类的正确性 prepare(准备):为类的静态变量分配内存空间,变将其的值初始化
阅读全文
posted @ 2020-07-19 21:09 挣扎一下
阅读(136)
评论(0)
推荐(0)
2020年7月18日
Redis:实战问题
摘要: Jedis 连接 sentinel:直接连sentinel,通过sentinel获取master的地址然后封装成连接 cluster:缓存了slot到node的映射关系,调用的时候根据映射关系获取对应的connectPool(pool在这里其实就代表对应node的连接) Pipeline 缓存命令,
阅读全文
posted @ 2020-07-18 17:09 挣扎一下
阅读(217)
评论(0)
推荐(0)
Redis:Redis如何做高性能、高可用、可拓展?
摘要: 主从复制 master-slave(replication) 从节点上只能读数据,不能写入数据,只能在主节点写入数据。主节点的数据会自动同步到从节点。 复制原理: 从节点第一次加入后和主节点建立连接 建立连接后主节点通过bgsave生成RDB文件,再将文件发送到从节点(假如超时则会重发) 新来的指令
阅读全文
posted @ 2020-07-18 01:35 挣扎一下
阅读(748)
评论(0)
推荐(0)
2020年7月17日
Redis:高级特性和底层工作原理
摘要: 高级特性 简单消息队列 可以用list的rpush+lpop实现简单的消息队列功能(用blpop可以阻塞连接直到有消息时才返回) 发布订阅模式 消费者通过subscribe订阅一个频道,生产者通过publish发布消息到频道,实现多条发布。 通过unsubscribe取消订阅。 订阅的频道可以用通配
阅读全文
posted @ 2020-07-17 20:40 挣扎一下
阅读(392)
评论(0)
推荐(0)
2020年7月15日
Redis:基础
摘要: Redis数据类型 KV形式存储,KEY是String,最大容量512M,V有以下几种类型: String:命令set,get;字符串,底层数据结构就是SDS Hash:命令hset,hget;entry数量少的时候用ziplist(节省空间,实际上不是链表,放在连续的空间里,性能比哈希差一点,取头
阅读全文
posted @ 2020-07-15 15:10 挣扎一下
阅读(147)
评论(0)
推荐(0)
并发编程:线程池详解、Forkjoin详解
摘要: 线程池的好处 降低频繁创建、销毁线程的开销 便于统一管理线程(数量等) 提高响应时间 Java中的线程池 Executors:创建线程池的工厂类。 Executors.newFixedThreadPool(nThreads):创建固定大小的线程池。 Executors.newCachedThread
阅读全文
posted @ 2020-07-15 00:33 挣扎一下
阅读(2233)
评论(0)
推荐(0)
2020年7月14日
并发编程:阻塞队列、原子操作
摘要: 阻塞队列 插入元素 add():添加元素,满了抛异常。 put():添加元素,满了之后会阻塞。 offer():添加元素,添加失败后返回false。 offer(time):添加元素,阻塞一段时间后失败返回false,假如在这期间队列有位置了则添加成功。 删除/获取元素 remove():从队列中获
阅读全文
posted @ 2020-07-14 21:15 挣扎一下
阅读(208)
评论(0)
推荐(0)
2020年7月13日
并发编程:ConcurrentHashMap
摘要: 线程安全的集合ConcurrentHashMap JDK1.7和JDK1.8的区别 1、取消了segment分段设计 2、增加了链表转红黑树的设计 基本原理和HashMap差不多,不熟悉的同学可以先去看看HashMap的结构,本文主要看其对并发安全的设计 ConcurrentHashMap中重要的并
阅读全文
posted @ 2020-07-13 22:45 挣扎一下
阅读(131)
评论(0)
推荐(0)
上一页
1
2
3
4
5
6
7
8
下一页
公告