后端

CMS算法实现总结-1

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

排序与查找

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

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

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

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

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

ConCurrentHashMap底层结构

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

JVM

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

怎样理解wait()、notify()和notifyAll()

wait():让持有该对象锁的线程等待 notify():唤醒任意一个处于waiting状态的线程 notifyAll():唤醒所有处于waiting状态的线程。 他们之间的关系是:通过调用对象的wait()方法使线程暂停运行,通过notify/notifyAll方法唤醒wait()暂停的线程。 注意: 调用对象的wait()、notify()、notifyAll()方法需要拥有对象的监视锁,即