自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

林鸿清的blog

我才二十岁,什么也捶不了我

  • 博客(171)
  • 收藏
  • 关注

原创 状压DP深入练习

1、HDU God of War题意:给定吕布攻击力、防御力、生命,给定n个敌人的攻击力、防御力、生命值、可得经验。 升级可以增加攻击力、防御力、生命。 问选择杀敌顺序使得所有怪物全部杀掉,而且剩余的生命值最大思路:养成DP思维,我们有2^n 种杀敌顺序,利用state [0 ,1 < < n ) ,可以把所以的顺序表示出来,这个时候可能会有疑问,000110, 表

2018-08-21 10:49:39 561

原创 线段树(区间操作+lazy) 很好的模板以及心得体会

参考博客https://blog.csdn.net/neighthorn/article/details/52115830这里只讨论区间处理+lazyacm比赛考察不会出裸的模板,所以必须深刻理解线段树原理,各函数的目的。#include <string.h> #include <algorithm> #include <stdio.h> ...

2018-07-27 11:10:47 227

原创 设计模式

一、创建型1、单例模式注意双重锁检查时,对象要加上volatile:uniqueInstance = new Singleton();分为以下几步执行1)为uniqueintsance分配内存2)初始化3)将uniqueInstance指向分配的内存地址因为JVM具有指令重排。所以执行顺序可能编程 1>3>2, 当线程T1执行了1) 3),然后线程T2调用getUniqu.

2019-09-23 20:30:20 422

原创 线程池

public ThreadPoolExecutor(int corePoolSize, int maximumPoolSize, long keepAliveTime, TimeUnit unit, ...

2019-08-13 16:23:25 484

原创 Redis面试

1、更新操作https://coolshell.cn/articles/17416.html不可以先删除缓存,再更新数据库。 因为并发操作下, 一个更新操作删掉了缓存, 此时一个读操作进来,读取了旧数据,并且添加到缓存(读速度大于更新)。 那么脏数据就一直脏下去了。正确做法是 更新操作 先删掉缓存, 再更新数据库。2、缓存穿透:查询一个必然不存在的数据。比如文章表,查询一个不存在的id,每...

2019-08-11 23:46:19 447

原创 复合索引的正确理解

复合索引的结构参考《MySQL技术内幕:InnoDB存储引擎 第2版》复合索引的结构首先正确的认识复合索引的结构,非叶子节点上是存在索引值的例如以a、b字段建立复合索引,那排列如下通过叶子节点,就能拿到数据(1,1)、(1,2)、(2,1)、(2,4)、(3,1)、(3,2)索引使用数量参考 https://www.cnblogs.com/cyhbyw/p/8845937.html...

2019-08-11 11:04:07 5247 1

转载 (转)最为透彻的utf-8、unicode详解

转自:https://blog.csdn.net/tcf_jingfeng/article/details/80134600#commentBox1、unicode的诞生ASCLL表只包含了英文字符和一些符号,用一个字节表示(只用了0~127)。中国人发明了GBK编码表,采用两个字节来表示所有的汉字(博大精深!渐渐的编码表多了起来,不同的编码规则下通信就容易造成乱码,因此国际标准组织就发...

2019-05-29 09:52:19 534

转载 剑指offer题目分类

转自 https://blog.csdn.net/Lollipop66/article/details/80854497一、线性表1、数组思路总结:点击打开链接面试题3:数组中重复的数字面试题4:二维数组中的查找面试题11. 旋转数组的最小数字面试题21:调整数组顺序使得奇数位于偶数前面面试题39:数组中出现超过一半的数字面试题40:最小的k个数面试题42:连续子数组的最大和...

2019-03-26 15:35:30 482

原创 Linux进程创建和进程状态R、S、D、T、Z、X

进程创建之:fork()#include <unistd.h>pid_t fork(void); // 在父进程中,返回值是子进程的id /// 在子进程中,返回值是0 // 返回-1表示发生了错误如何理解fork呢? fork之后,将存在两个进程,并且都从fork的下一个语句开始执行。 两个进程拥有值相等但是空间独立的内存(堆、栈等)要注意的是fork之后的子进程和父...

2019-03-26 14:49:10 1293

原创 Java中的String传递副本

Java中只有String类型和基本类型传递副本,副本的改变不会影响原来的值。看下面的代码:package algorithms.com.guan.javajicu; public class Example { String str = new String("good"); char[] ch = {'a','b','c'}; public static void mai...

2019-03-21 19:36:04 497

原创 站在二叉树的右边,打印看得到的结点

void fun(TreeNode head) { Queue&amp;lt;TreeNode&amp;gt; queue = new LinkedList&amp;lt;&amp;gt;(); queue.offer(null); queue.offer(head); while (!queue.isEmpty()) { TreeNode ...

2019-03-11 14:45:52 691

原创 Java容器(三)Map

一、TreeMapTreeMap封装了红黑树,在代码里的体现就是private transient Entry&amp;amp;amp;amp;amp;amp;lt;K,V&amp;amp;amp;amp;amp;amp;gt; root; 也就是一个key,value键值对。具体的红黑树操作都在里面,就不细讲了。1.1 put(k,v)remove(k)也是和下面道理相似,理解就行。public V put(K key, V value) { // 获得根结点 .

2019-03-10 15:49:21 176

原创 Java容器(二)Collection集合

一、 SetTreeSet : 内部维护了一个TreeMap,插入的值作为map的key,value用默认值。特性是:排序,去重。HashSet: 内部维护了HashMap,特点是插入和查找,时间复杂度 o(1), 但是迭代的顺序是乱序。LinkedHashSet:内部维护了LinkedHashMap,特点是去重,可以按照插入的顺序进行迭代。Set没啥好讲的,原理都是Map,因此到时候理...

2019-03-08 14:30:36 153

原创 Java集合(一) Iterator

Iterator接口Iterator有两个必须实现的方法。hasNext用于判断是否包含下一位;next用于返回当前值,并且光标向后移。另外两个默认方法继承是可选的因此要想判断一个数据结构支持remove?那么必须看它的remove()如何实现。public interface Iterator&amp;amp;lt;E&amp;amp;gt; { boolean hasNext(); E n...

2019-03-07 08:28:11 98

原创 B树和B+树和红黑树

一、B树粗略定义B树是二叉树的拓展,相对二叉树,B树的孩子个数被定义为m,通过m-1个关键字key进行分割,例如 第一个结点的key:10 ,那么就把子树分成了小于10的部分和大于10的部分。根节点的右子树, key 14 20 , 就把子树分成了小于14;大于14 且 小于20 ; 大于20 的三个区间。 每个区间再对应一个结点。定义规则对于整棵树来说:根节点至少1个key,2个子...

2019-03-05 19:39:40 2459

原创 try{return } finally{ retun }的执行顺序

一、finally的执行顺序先来看一段代码import java.util.*;public class Main { public static void main(String[] args) { System.out.print(fun1()); } public static String fun1() { try { ...

2019-03-04 20:26:48 355

原创 Java ArrayList 扩容

京东笔试遇到了,之前从没研究过,在这里做记录。CAPACITY: 容量第一步首先进入ArrayList的内部看一眼构造函数,这个是带参数的构造方法,容量Capacity的大小和初始化的大小一致, 当初始化的参数为0,容量Capacity为默认值 = 10 。 找到常量即可。此外可以看到,ArrayList存放的东西都放在了this.elementData,是个Object[] 的数组。...

2019-03-04 19:52:32 1443

原创 BitMap算法

bitmap的适合用于判断一个数存在或者不存在,也就是具备01特性。它的原理是这样的:一个整型的数4byte == 32 bit。bitmap算法把它的32位展开,让第i位为1代表数值i存在,例如下面的a[0]代表 1 5 30存在,而0 2 3 4 则不存在。a[0]: 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 ...

2019-03-04 10:54:49 131

原创 01背包方案数

1、裸的01背包方案数网上各大公司经常出题目:假设现在有1元、2元、5元的纸币各1张,现在需要20块钱,你能给多少种找钱方案,这就可以认为是完全背包问题,即背包容量为20,物品体积分别为1、2、5。解法:让dp[i][j]表示前i种钱里面选出总和为j的方案数,那么dp[i][j] = dp[i-1][j] + dp[i-1][j-v[i]]每次考虑第j个选还是不选的情况。初始化是 dp[0...

2019-03-03 21:45:21 1069 1

原创 200道Java面试题

https://www.nowcoder.com/discuss/157387?type=0&amp;amp;amp;amp;order=1&amp;amp;amp;amp;pos=6&amp;amp;amp;amp;page=1题目来自牛客网大佬,每天刷一点1、JDK和JRE的区别?JRE:Java Runtime Enviroment, 它包括Java虚拟机、Java平台核心类和支持文件。它不包含开发工具(编译器、调试器等)。同时还包含了编译java源码的编...

2019-03-03 16:14:37 1679 2

原创 LRU算法最近最少使用 ----- Java实现

LRU算法常用于页面置换算法,是为虚拟页式存储管理服务的。他的设计思路是最近使用过的,就认为在将来有很大概率会使用。现在认定缓存中的数据是key,value形式, 一种实现方式是使用链表,用链表存储key,value,把最近使用到的节点转移到头节点。分析时间复杂度:查找 o(n) , 插入o(1), 删除 o(n)。这里使用了map进行优化,在缓存中的结点,都保存一组key,TreeNode到...

2019-03-01 18:59:12 499

原创 剑指offer 之 按之字形顺序打印二叉树 (加重点,记得回顾)

题意请实现一个函数按照之字形打印二叉树,即第一行按照从左到右的顺序打印,第二层按照从右至左的顺序打印,第三行按照从左到右的顺序打印,其他行以此类推。解法我自己的解法比较直白,应付笔试还行,但是面试上用我的方法肯定会被鄙视。这里介绍讨论区中大神的方法。双向队列法有下面几点值得学习1)在返回ArrayList&lt;ArrayList&lt; Integer &gt; &gt; 这种双层L...

2019-03-01 09:22:48 116

原创 左神算法讲堂笔记 09 由递归到动态规划

一、有n个人希望把黄金分隔成 {a1,a2,a3,a4}, 希望代价最小。 代价是这么算的,例如长度是 7 ,分割成 3 4, 那么代价是7 。逆向思维、哈夫曼编码一开始的想法是,排序,每次切下来最大的。 但是 2 2 2 2 3 3 3 3 这种情况就pass了。 最后的做法是类似哈夫曼编码, 每次找出两个最小的, 合并,合并之后的点再加进去集合。二、有n个项目,对于第i个项目,需要花...

2019-02-28 13:16:12 960 3

原创 剑指offer 之 和为S的连续正数序列

题意给出整型sum,问能求出多少连续序列之和等于sum,例如9 -&gt; 45 , 234解法第一种:双指针,当双指针之间的和 tot == sum,low++,high++; 当 tot &lt; sum,high++; 当tot &gt; sum,low++; ArrayList&lt;ArrayList&lt;Integer&gt;&gt; res = new ArrayList...

2019-02-26 09:42:13 70

原创 春招面试复习(三)数据库的ACID , 并发问题,事务等级,乐观锁,CAS算法,索引

1、mysql的基本要素(ACID):原子性:针对操作,事务如同生物中的原子一样密不可分,事务内的事必须是全部完成,如果发生了故障,那么需要回滚到事务开始前的状态。一致性:个人理解的一致性是一种状态。事务执行前和执行后的一致性不会发生改变。例如A给B转钱, 那么A-=100, B+=100 。这样保证了一致性。 另外提一下原子性和一致性的区别? 例如 A-=100 ,B+=500 ,这样遵循...

2019-02-25 17:32:58 267

原创 剑指offer 之 把数组排成最小的数

题意输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。例如输入数组{3,32,321},则打印出这三个数字能排成的最小数字为321323。做法这种题必定是贪心类的题,那么核心问题就在于如何写比较器。回顾一下比较类型的排序算法,例如冒泡排序,通过比较器判断什么样的数据排在前面。在本题中:两个字符串s1 = ba 和 s2 = b ,按照什么标准进行...

2019-02-25 15:51:32 115

原创 左神算法讲堂笔记 07并查集和前缀树

岛只分析多线程下如何优化。假设把矩阵分成两块,交给两个线程去处理。那么各自跑完会在地图上标注**当前的1属于哪个中心点(多线程间全局变量可以使用volatile关键字)先站在左边一方的角度考虑,只需要把边界上的1,即图上的A位置。接着向右边进行询问,由于右边的格子上是1,那么就把AC进行合并(使用并查集进行优化),岛的数量-1。 下一次遇到AC的时候,并查集查询到属于同一个集合,那么就不...

2019-02-25 15:47:26 667

原创 剑指offer 之 数组中只出现一次的数字

题意:一个整型数组里除了两个数字之外,其他的数字都出现了偶数次。请写程序找出这两个只出现一次的数字。解法:遇到重复数字出现要想到异或,A^A = 0 , 0 ^ A= A ,我们把数组异或完,得到的是tot = num1 ^ num2 , 那么如何将他们区分开呢? 找出tot的二进制下,最左边的1的位置idx,那么这个1必定由其中的一个num提供。因此把idx位置为1的数都异或起来,最终得到的是...

2019-02-25 10:05:22 76

原创 剑指offer 之 数字在排序数组中出现的次数(外加二分总结)

题意统计一个数字在排序数组中出现的次数。做法二分,本道题有总巧妙的想法: 找出第一个大于 k -0.5 ,和第一个大于 k + 0.5 的位置。后面减前面即可。public int GetNumberOfK(int [] array , int k) { if(array == null || array.length == 0) return 0...

2019-02-25 09:15:30 93

原创 左神算法讲堂笔记 06 Hash算法

1、哈希函数和哈希表当通过put方法存入对象时,会调用key对象的hashCode()方法计算出hashcode,通过hashcode找到bucket位置保存entry对象。获取对象时,通过key计算出hashcode,找到bucket位置,HashMap采用链表解决碰撞,因此遇到冲突时,就访问bucket位置上链表的每个点,直到key对象的equals()相等。jdk1.8后,当链表长度大于...

2019-02-24 18:28:19 321

原创 剑指offer 之 整数中1出现的次数(从1到n整数中1出现的次数)

理解了讨论区高票做法题目描述求出113的整数中1出现的次数,并算出1001300的整数中1出现的次数?为此他特别数了一下1~13中包含1的数字有1、10、11、12、13因此共出现6次,但是对于后面问题他就没辙了。ACMer希望你们帮帮他,并把问题更加普遍化,可以很快的求出任意非负整数区间中1出现的次数(从1 到 n 中1出现的次数)。做法先讨论百位,称遍历100.101.102…199 ...

2019-02-24 10:58:54 200

原创 春招面试复习(二)Java基础

一、数据类型基本类型byte/8char/16short/16int/32float/32long/64double/64boolean/~ 编译时期会转换成int缓存池new Integer(123) 和 Integet.valueOf(123)的区别new Integer(123) 每次都会新建一个对象;Integer.valueOf(123) 会使用缓存池中的对象...

2019-02-23 21:46:00 1304

原创 牛客网高级项目总结

1、注册和登陆登陆和注册成功之后,在cookie里添加上token,另外在数据库中插入包含token、userId的表,用于登陆状态检验。具体检验是在拦截器上进行,拦截器的实现过程:1)继承HandlerInterceptor接口,完成preHandle()用于请求之前、postHandle 渲染界面之前、afterCompletion 请求之后,三个方法。 2) 之后把得到的拦截器对象在 ...

2019-02-23 19:36:11 8419 21

原创 高级项目 评论模块和消息中心模块

一、评论中心模块开发无论是问题的评论,还是评论的评论,都是基于评论中心的。1、数据库2、javaModel实体和数据库一一对应的实体3、DAO层评论list是通过entity_id(归属的实体ID)和entity_type(归属于何种实体)进行确定的。1) 添加评论(向表中插入一条数据) @Insert({&quot;insert into &quot;, TABLE_NAME, &quot;(&quot;, INS...

2019-02-23 19:12:27 3628

原创 左神算法讲堂笔记 05 树

1、非递归遍历树非递归遍历有点难,目前只能读懂代码,里面的精髓还未真正参透。先序遍历:不断地把根入栈,再取出来输出根左右, 那么先入栈的肯定是根,要保证输出左子树,再输出右子树,那么就要先入栈右子树。void preOrderUnRecur(Node head) { System.out.println(&amp;quot;先序 根 左 右: &amp;quot;); if (head != ...

2019-02-21 14:57:01 179

原创 左神算法讲堂笔记 03 栈的应用

1、栈1.1 栈的拓展应用案例1 求栈最小值一个数组序列,不断压栈,可以询问栈内最小值,且push、pop、peek、query(找最小)都是o(1)。解法;维护本身栈的同时,维护一个min栈,当前数小于min栈栈顶,那么就插入min栈顶。 否则再插入一个min栈栈顶元素。案例2 使用栈得到队列结构维护push 和 pop 两个栈。插入的话就放到push栈。 pop时,假设pop栈为...

2019-02-20 10:53:12 161

原创 左神算法讲堂笔记 02 快排、堆排、桶排

1、荷兰国旗问题(快排的前导)题意:把数组分成左边小于num,右边大于num,中间等于num,不需要有序解法:假设区间为[L , R] 维护一个左边小于区间,[L - less] ,维护一个右边大于区间 [more - R], 设当前下标为cur,不断把arr[ cur ]交换到左区间或者右区间即可。这里的while写的很巧妙,每次只针对cur进行判断,把后面的换过来之后,cur不动,下一...

2019-02-20 10:52:03 406

原创 左神算法讲堂笔记 01 归并排序和应用 --- 小和问题、逆序数

1、master公式求递归的时间复杂度T(N) = a*T(N/b) + O(N^d)log(b,a) &amp;amp;amp;gt; d -&amp;amp;amp;gt; 复杂度为O(N^log(b,a))log(b,a) = d -&amp;amp;amp;gt; 复杂度为O(N^d * logN)log(b,a) &amp;amp;amp;lt; d -&amp;amp;amp;gt; 复杂度为O(N^d)2、归并排序(合并的时候

2019-02-20 10:50:19 510

原创 左神算法讲堂笔记 04 宏观调控和链表

1、绕圈打印矩阵 public ArrayList&amp;amp;amp;amp;amp;lt;Integer&amp;amp;amp;amp;amp;gt; printMatrix(int[][] matrix) { ArrayList&amp;amp;amp;amp;amp;lt;Integer&amp;amp;amp;amp;amp;gt; list = new ArrayList&amp;amp;amp;amp;amp;lt;&am

2019-02-20 10:48:11 156

原创 春招面试复习(一)TCP/IP

SYN:建立连接ACK:响应seq:例如A-&amp;amp;gt;B, 则发送端(A)发送包的第一个位置ack:例如B-&amp;amp;gt;A ,则B希望下一次收到的包的位置。一、连接建立阶段1、为什么TCP建立是三次握手?TCP是可靠的传输控制协议,三次握手能保证数据可靠传输又能提高传输效率。如果两次握手的话:1) 如果server给client发送的ACK报文因为网络原因,报文被丢弃,此时server...

2019-02-19 16:46:56 391

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除