后端

JVM

1. JVM体系结构 JVM体系结构 堆和栈的关系 “对象的引用”在栈里面 真正对象的“数据”在堆里面 2.类加载器及双亲委派机制 类加载器 作用:加载class文件 类是模板,对象是具体的 public class Test { public static void main(String[] args) { //类是模板,对象是具体的

ConCurrentHashMap底层结构

ConcurrentHashMap是线程安全的HashMap。 在jdk1.7中,ConCurrentHashMap采用分段锁机制,将数据分成一段一段的存储,给每一段数据配一把锁,当一个线程占用锁访问其中一个段数据的时候,其他段的数据也能被其他线程访问。 1.1 ConCurrentHashMap由一个Segment数组和多个HashEntry组成。Segment和HashEntry都是静态内

春节挑战 | 第七天复盘(人力资源书单整理)

整理书单的时候遇到一个问题:到底选择微信读书还是豆瓣来管理? 最终还是选择了豆瓣:1. 豆瓣书的信息很全;2. 它面向的所有人,不像微信读书仅仅是面向APP用户;3. 微信读书的PC端没有书单整理功能,我习惯使用PC。 经过一天的奋斗,成果如下:1. 每个书单增加了说明。2. 增删了一些书籍。 还是很有成就感的。 明天:1. 考虑一下四年规划,然后再确定提能方向。2. 考虑明年的课题研究,再确定读

业务拆分原则介绍

1. 常见的做法 常见的错误做法: 服务拆分粒度越小越好 按照大公司的套路拆分 以代码量为拆分标准 拆分核心三原则: 2. 服务粒度匹配团队规模 服务粒度过细的问题,可以先看下面的两个图 可以看到,服务粒度过多时,虽然单个服务的内容可以减少,但是服务间调用关系的复杂度程指数级的增长,这同样也是很可怕的一件事 如果项目的人员不多,那么划分过多的服务

周长的秘密

我是周长,我有很多的秘密,你们是不是也想知道,想知道的话就跟我来吧我们找来一个长方形长方形有两个宽,两个长,那么如果我们知道其中一个长的长度是五厘米,那么你需要把两条长都标上五厘米吗?答案是不可以因为太麻烦了,因为长方形的两条长和两条宽两条长的长度是一样的,两条宽的长度也是一样的,但是呢,长和宽的长度不一样,那么如果知道其中一个长把另外一个长也标上就会太麻烦,因为你已经知道这条和那条的长度了,你标

算法 - 数组主元素(出现次数超过一半的元素)

题目: 整数数组,包含n个元素 主元素 - 某个元素出现次数 > n/2 是否存在主元素 找出主元素 举个例子 数组:[1, 5, 1, 8, 1, 2, 1, 1, 3, 1] 包含6个1,出现次数超过了半数5 1就是主元素 数组:[1, 5, 9, 8, 1, 2, 1, 1, 3, 1] 包含5个1,出现次数不超过半数5 没有主元素 分析 主要逻辑包含两个要点 无论如何都需要统计

排序与查找

1、顺序查找的思想: 将待查找的关键字为key的元素从头到尾与表中元素进行比较,如果中间存在关键字为key的元素,则返回成功;否则,则查找失败。 2、二分法查找的基本思想是:(设R[low,…,high]是当前的查找区) (1)确定该区间的中点位置:mid=L(low+high)/2˩; (2)将待查的k值与R[mid].key比较,若相等,则查找成功并返回此位置,否则需确定新的查找区间,继续二

CMS算法实现总结-1

一、数据结构 Java的内存整体上可以分为五大类,Java堆,CodeCache,Metaspace,栈内存和JVM自身,栈内存是指Java线程和JVM自身的后台服务线程执行过程中分配的调用栈对应的内存,包括所谓的虚拟机栈和本地方法栈,用于保存执行过程中的本地变量,方法入参,返回地址等方法执行过程中依赖的各种要素;JVM自身是指JVM实现各种功能所依赖的C/C++数据结构所占用的内存。后面两个的地

Android FrameWork--SytemServer进程fork

1、Linux的fork 在Linux平台我们可以通过fork系统调用来创建一个新的进程,这个新的进程将会拥有原始进程的一份副本,包括代码、数据、内存等等。唯一的区别是新的进程拥有一个新的ID,使得它成为一个独立的进程,运行自己的代码。 fork()系统调用会返回两次,在原始进程中会返回进程ID,在新的进程中会返回0。两个进程可以执行相同的任务,也可以按照需要执行不同的代码。 fork的例子 #i