上一页 1 2 3 4 5 6 7 8 9 10 ··· 12 下一页
摘要: 哈希表(hash table)也叫散列表,是一种非常重要的数据结构,应用场景及其丰富,许多缓存技术(比如memcached)的核心其实就是在内存中维护一张大的哈希表,而HashMap的实现原理也常常出现在各类的面试题中,重要性可见一斑。 本文会对java集合框架中的对应实现HashMap的实现原理进 阅读全文
posted @ 2022-04-28 10:41 zydbky 阅读(73) 评论(0) 推荐(0) 编辑
摘要: 1. 什么是分布式 ? 分布式系统一定是由多个节点组成的系统。 其中,节点指的是计算机服务器,而且这些节点一般不是孤立的,而是互通的。 这些连通的节点上部署了我们的节点,并且相互的操作会有协同。 分布式系统对于用户而言,他们面对的就是一个服务器,提供用户需要的服务而已, 而实际上这些服务是通过背后的 阅读全文
posted @ 2022-04-28 10:13 zydbky 阅读(543) 评论(1) 推荐(0) 编辑
摘要: Java中的锁主要包括synchronized锁和JUC包中的锁,这些锁都是针对单个JVM实例上的锁,对于分布式环境如果我们需要加锁就显得无能为力。 在单个JVM实例上,锁的竞争者通常是一些不同的线程,而在分布式环境中,锁的竞争者通常是一些不同的线程或者进程。如何实现在分布式环境中对一个对象进行加锁 阅读全文
posted @ 2022-04-22 10:58 zydbky 阅读(595) 评论(0) 推荐(1) 编辑
摘要: 1. 创建线程的四种方式实现Runnable 重写run方法继承Thread 重写run方法线程池创建 Executors.newCachedThreadPool()实现Callable接口2. Thread线程操作方法当前线程睡眠指定mills毫秒 Thread.sleep([mills])当前线 阅读全文
posted @ 2022-04-18 10:25 zydbky 阅读(52) 评论(0) 推荐(0) 编辑
摘要: 1、并发编程三要素? (1)原子性 原子性指的是一个或者多个操作,要么全部执行并且在执行的过程中不被其他操作打断,要么就全部都不执行。 (2)可见性 可见性指多个线程操作一个共享变量时,其中一个线程对变量进行修改后,其他线程可以立即看到修改的结果。 (3)有序性 有序性,即程序的执行顺序按照代码的先 阅读全文
posted @ 2022-04-18 09:53 zydbky 阅读(27) 评论(0) 推荐(0) 编辑
摘要: 四、实战调优 1、你在项目中都使用了哪些参数打印GC? 具体的参数名称记不清楚了,但是我一般在项目中输出详细的 GC 日志,并加上可读性强的 GC 日志的时间戳。特别情况下我还会追加一些反映对象晋升情况和堆详细信息的日志,这些会单独打到gc.log文件中用来排查问题。另外,OOM 时自动 Dump 阅读全文
posted @ 2022-04-15 11:30 zydbky 阅读(290) 评论(0) 推荐(0) 编辑
摘要: 三、GC垃圾回收 1、GC是什么?为什么要GC GC:垃圾收集,GC能帮助我们释放jvm内存,可以一定程度避免OOM问题,但是也无法完全避免。Java的GC是自动工作的,不像C++需要主动调用。 当new对象的时候,GC就开始监控这个对象的地址大小和使用情况了,通过可达性分析算法寻找不可达的对象然后 阅读全文
posted @ 2022-04-15 11:28 zydbky 阅读(86) 评论(0) 推荐(0) 编辑
摘要: 二、Java内存区域 1、Java内存结构 程序计数器 当前线程所执行字节码的行号指示器。若当前方法是native的,那么程序计数器的值就是undefined。 线程私有,Java内存区域中唯一一块不会发生OOM或StackOverflow的区域。 虚拟机栈 就是常说的Java栈,存放栈帧,栈帧里存 阅读全文
posted @ 2022-04-15 11:23 zydbky 阅读(48) 评论(0) 推荐(0) 编辑
摘要: 缓存雪崩 对于系统 A,假设每天高峰期每秒 5000 个请求,本来缓存在高峰期可以扛住每秒 4000 个请求,但是缓存机器意外发生了全盘宕机。缓存挂了,此时 1 秒 5000 个请求全部落数据库,数据库必然扛不住,它会报一下警,然后就挂了。此时,如果没有采用什么特别的方案来处理这个故障,DBA 很着 阅读全文
posted @ 2022-04-15 11:14 zydbky 阅读(45) 评论(0) 推荐(0) 编辑
摘要: 随着cpu核数越来越多,不可避免的利用多线程技术以充分利用其计算能力。所以,多线程技术是服务端开发人员必须掌握的技术。 线程的创建和销毁,都涉及到系统调用,比较消耗系统资源,所以就引入了线程池技术,避免频繁的线程创建和销毁。 在Java中有一个Executors工具类,可以为我们创建一个线程池,其本 阅读全文
posted @ 2022-04-15 10:27 zydbky 阅读(58) 评论(0) 推荐(0) 编辑
上一页 1 2 3 4 5 6 7 8 9 10 ··· 12 下一页