摘要:本人在工作中接触到的负载均衡:F5,DNS,nginx,云平台SLB,在此做个总结。 负载均衡的分类 DNS解析: 因为一个域名可以通过DNS解析到多个IP,这一特性天然使DNS有负载均衡的能力。 现在负载均衡这块主要应用于地理位置服务:实现地理级别的全局负载均衡。比如将南方区域访客流量解析到深圳的 阅读全文
nginx概要
2022-12-15 20:41 by 杭伟, 15 阅读, 0 推荐, 收藏, 编辑
摘要:新机(CentOS7)配置nginx: 一. 更新yum源为阿里云镜像 ping mirrors.aliyun.com mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup wget -O /etc 阅读全文
Tomcat工作原理
2022-12-15 11:19 by 杭伟, 228 阅读, 0 推荐, 收藏, 编辑
摘要:Tomcat要实现两个核心功能: 1,处理Socket连接,负责网络字节流与Request/Response对象的转化。 2,加载和管理Servlet,以及具体处理Request请求体(比如HelloServlet的doGet()方法进入和将请求对象转化为HttpServletRequest)。 核 阅读全文
Servlet原理
2022-12-14 09:16 by 杭伟, 74 阅读, 0 推荐, 收藏, 编辑
摘要:Servlet的本质是一个Java接口,定义了一套处理网络请求的规范。 最主要的是两个生命周期方法init()和destory(),以及一个处理请求的service()。 因为处理一个网络请求,绕不开:初始化?请求处理?销毁? 这三个基本面。 其中:init()和destory()方法各自执行一次, 阅读全文
Java:Should I use a `HashSet` or a `TreeSet` for a very large dataset?
2022-12-13 15:52 by 杭伟, 36 阅读, 0 推荐, 收藏, 编辑
摘要:这是StackOverflow上一个有意思的提问,记录一下。 原地址在这 翻译: 对于大型数据集,应该使用”哈希集”还是”树集”? (因为HashTable有着O(1)的查找速度比树结构更有效率,虽然HashTable的数据无序,但这不是本文的重点) 我需要在数据结构中存储2到1500万个帐户(长度 阅读全文
JUC中常见的集合
2022-12-13 15:06 by 杭伟, 15 阅读, 0 推荐, 收藏, 编辑
摘要:Map: HashMap > ConcurrentHashMap List: ArrayList > CopyOnWriteArrayList Set: HashSet > CopyOnWriteArraySet Queue: Queue > ConcurrentLinkedQueue 阅读全文
CopyOnWriteArrayList的使用和优缺点
2022-12-13 12:29 by 杭伟, 337 阅读, 0 推荐, 收藏, 编辑
摘要:CopyOnWriteArrayList允许并发读,读操作无锁,性能较高; 而写操作(含删除),比如向容器中添加/删除一个元素,则首先将当前容器复制一份,然后在新副本上执行写操作,结束之后再将原容器的引用指向新容器。 可以看到,设计上使用volatile数组变量+ReentrantLock可重入锁组 阅读全文
ThreadLocal实现原理和使用场景
2022-12-13 11:09 by 杭伟, 99 阅读, 0 推荐, 收藏, 编辑
摘要:ThreadLocal是线程本地变量,每个线程中都存在副本。 实现原理: 每个线程中都有一个ThreadLocalMap,而ThreadLocalMap中的key即是ThreadLocal。 内存泄漏: ThreadLocal变量存储在栈内存中,对应对象存储在堆内存中,这个指向是强引用关系。 同样, 阅读全文
ConcurrentHashMap实现原理
2022-12-12 15:18 by 杭伟, 26 阅读, 0 推荐, 收藏, 编辑
摘要:jdk1.7分段锁: Segment类(小型HashMap),继承ReentrantLock put简要流程: 先根据key,算出Segment数组的下标index 加锁 生成Entry对象,并添加到Segment的数组或链表上(和HashMap相同) segments[index].put(key 阅读全文
JUC同步工具CountDownLatch
2022-12-12 10:06 by 杭伟, 19 阅读, 0 推荐, 收藏, 编辑
摘要:CountDownLatch:允许一条或多条线程等待其它线程中的一组操作完成后再继续执行。 在探究CountDownLatch之前,我们知道Thread的join也有类似功能,先看thread的join方法: 1 public static void main(String[] args) thro 阅读全文