面试
文章平均质量分 80
面试准备
猫哥灬01
话不在多,在于精
展开
-
Java线程池
Java线程池参数设置原创 2022-07-06 18:37:47 · 211 阅读 · 0 评论 -
Java线程池
线程池任务处理机制线程池的运行机制是 先创建core线程 大于core会把任务放在等待队列 等待队列满了 会创建新线程 大于max线程数会触发拒绝常用的等待队列ArrayBlockingQueueFIFO、数组实现有界阻塞队列,一旦指定了队列的长度,则队列的大小不能被改变LinkedBlockingQueueFIFO、Node链表结构可以通过构造方法设置capacity来使得阻塞队列是有界的,也可以不设置,则为无界队列PriorityBlockingQueue无...原创 2021-04-13 15:13:31 · 104 阅读 · 0 评论 -
常用中间件理解
Dubbo是一个RPC调用的解决方案,我们在最开始的时候都是在一个系统中调用服务,没有远程调用,随着业务的复杂度提升,需要多系统之间进行服务调用,因此在服务的提供方和调用方之间就需要约定一个协议,进行通信,Dubbo就是这样的一个协议,他的整体架构是一个三角形,有服务提供者,注册中心,服务调用者,首先服务提供者向注册中心注册服务,然后服务调用者从注册中心获得服务提供列表,并缓存到本地,然后服务调用者直接调用服务提供者,同时Dubbo还有一个监控模块,负责监控整个服务调用的情况,比如耗时,服务调用次数等原创 2021-04-13 15:04:46 · 136 阅读 · 0 评论 -
kafka研究系列之事务实现
java代码Properties props = new Properties();props.put("key.serializer", "org.apache.kafka.common.serialization.StringSerializer");props.put("value.serializer", "org.apache.kafka.common.serialization.StringSerializer");props.put("client.id", "ProducerTr原创 2020-06-09 11:13:32 · 259 阅读 · 0 评论 -
缓存过期清除策略之LRU算法
class LRUCache{ Node head; Node end; int limit; HashMap<String, Node> map = new HashMap<>(); public LRUCache(int limit) { this.limit = limit; } public String get(String key) { Node node = map.ge.原创 2020-06-06 20:36:46 · 512 阅读 · 0 评论 -
数组和链表
插入排序动态获得中位数 public static int[] getMiddle(int[] A, int n) { // write code here int[]res=new int[A.length]; res[0]=A[0]; //插入排序, 每次取i/2的数 for (int i = 1; i...原创 2020-04-20 10:19:32 · 273 阅读 · 0 评论 -
二叉树经典题
https://blog.csdn.net/qq_37859539/article/details/81462171原创 2019-11-10 14:30:56 · 742 阅读 · 0 评论 -
面试专栏
https://www.jianshu.com/c/fcaea5adc8fe转载 2019-11-09 12:23:41 · 113 阅读 · 0 评论 -
数据结构基本实现
数组链表栈队列树图/** * 深度优先搜索(递归) */ private boolean checkDFS(UndirectedGraphNode a, UndirectedGraphNode b) { if (a == null || b == null) { return false; ...原创 2020-03-31 09:00:54 · 216 阅读 · 0 评论 -
你知道网络协议的各个层是干嘛的吗?
原文:https://blog.csdn.net/qq_39331713/article/details/88171730 两台计算机要通信,首先需要硬件的联通,所以有了物理层(电缆 光纤) 数据是以二进制01形式传输的,但是如果这些01代码没有规则,计算机也都不懂?以太网协议 所以有了数据链路层,以太网协议规定了这个规则 计算机要发送信息那么发送给谁呢?MAC地址 所以有了MA......原创 2019-03-07 10:32:09 · 1507 阅读 · 1 评论 -
Kafka研究系列之架构设计
kafka设计多个生产者- 主题 - 分区 - segment(index文件和log文件)index 文件: key: 消息号 value: 消息在磁盘的地址首先根据offset 二分找到索引文件, 然后根据偏移量找到消息的物理地址Kafka使用ISR的方式则很好的均衡了确保数据不丢失以及吞吐率如果要提高数据的可靠性,在设置request.required.acks=-1的同...原创 2019-10-29 11:44:09 · 183 阅读 · 1 评论 -
JVM深度学习系列之实践经验(七)
如何充分利用高性能服务器(比如:内存16G) 一般的思路是调大堆内存(12G) 但是同时会引起几个问题 年轻代GC和老年代GC的时间就会很长,严重的10多s,这样会导致系统不定时的卡顿(GC的stop the world),用户不能操作。 当发生堆溢出时,无法dump堆 一般快照文件达到十几G,即使dump下来,也很难分析 解决: 建立逻辑集群 在一台机器上,开启多......原创 2019-01-10 11:35:15 · 235 阅读 · 0 评论 -
JVM深度学习系列之虚拟机参数汇总(六)
以下信息摘自:https://www.cnblogs.com/redcreen/archive/2011/05/04/2037057.html不管是YGC还是Full GC,GC过程中都会对导致程序运行中中断,正确的选择不同的GC策略,调整JVM、GC的参数,可以极大的减少由于GC工作,而导致的程序运行中断方面的问题,进而适当的提高Java程序的工作效率。但是调整GC是以个极为复杂的过程,由...转载 2019-01-04 14:18:54 · 187 阅读 · 0 评论 -
mysql索引
类型B+tree特点1.有k个子树的中间节点包含有k个元素(B树中是k-1个元素),每个元素不保存数据,只用来索引,所有数据都保存在叶子节点。2.所有的叶子结点中包含了全部元素的信息,及指向含这些元素记录的指针,且叶子结点本身依关键字的大小自小而大顺序链接。3.所有的中间节点元素都同时存在于子节点,在子节点元素中是最大(或最小)元素。https://mp.weixin.q...原创 2019-05-24 18:57:06 · 415 阅读 · 0 评论 -
三、程序员进阶之道--设计模式
目录访问者模式模板模式策略模式观察者模式命令模式责任链模式代理模式装饰器模式适配器模式访问者模式精髓之处: 在不改变内部元素对象的基础上,实现不同的访问者拥有不同的操作。示例:划价人员拿到处方单之后根据药品名称和数量计算总价,而药房工作人员根据药品名称和数量准备药品这里的处方单就是那个复杂对象,内部的处方项就是内部元素对象划价人员和药房...原创 2019-05-13 10:56:03 · 486 阅读 · 0 评论 -
缓存穿透,缓存击穿, 缓存雪崩
https://www.cnblogs.com/sbj-dawn/p/11116673.html缓存穿透:缓存和数据库都没有数据 恶意用户使用非法id 查询, 导致大批量请求到库解决: 如果数据库查询没有 在缓存中写入null的标识, 同时设置过期时间缓存击穿: 缓存中没有 数据库中有 这时大量并发请求到库解决:1. 设置热点数据永不过期缓存雪崩:大量数据同时到期, 导致大量请...转载 2019-12-20 09:15:18 · 131 阅读 · 0 评论 -
redis为什么辣么快
Redis为什么这么快1、完全基于内存,绝大部分请求是纯粹的内存操作,非常快速。数据存在内存中,类似于HashMap,HashMap的优势就是查找和操作的时间复杂度都是O(1);2、数据结构简单,对数据操作也简单,Redis中的数据结构是专门进行设计的;3、采用单线程,避免了不必要的上下文切换和竞争条件,也不存在多进程或者多线程导致的切换而消耗 CPU,不用去考虑各种锁的问题,不存在加...原创 2019-12-20 09:06:13 · 107 阅读 · 0 评论 -
redis底层数据结构
https://www.cnblogs.com/ysocean/p/9080942.html#_label4五种类型的应用场景String,redis对于KV的操作效率很高,可以直接用作计数器。例如,统计在线人数等等,另外string类型是二进制存储安全的,所以也可以使用它来存储图片,甚至是视频等。hash,存放键值对,一般可以用来存某个对象的基本属性信息,例如,用户信息,商品信息等,另外...转载 2019-12-20 08:58:38 · 168 阅读 · 0 评论 -
动态规划&回溯各种变形题
叠罗汉叠罗汉是一个著名的游戏,游戏中一个人要站在另一个人的肩膀上。为了使叠成的罗汉更稳固,我们应该让上面的人比下面的人更轻一点。现在一个马戏团要表演这个节目,为了视觉效果,我们还要求下面的人的身高比上面的人高。请编写一个算法,计算最多能叠多少人,注意这里所有演员都同时出现。给定一个二维int的数组actors,每个元素有两个值,分别代表一个演员的身高和体重。同时给定演员总数n,请返回最多能........................原创 2019-12-15 20:36:55 · 679 阅读 · 0 评论 -
每日收获(4月7日- 4月10日)
4月7日计算逆序对import java.util.*;public class AntiOrder { public int count(int[] A, int n) { // write code here if (A == null || n == 0) return 0; return mergeSortRecursio...原创 2020-04-07 09:44:05 · 98 阅读 · 0 评论 -
每日收获(3月30日-4月3日)
3月31日输出某一深度上所有的节点组成的链表//判断是否是指定深度, 如果不是则递归查询左右子树//如果是则追加到结果中ListNode res = new ListNode(-1);ListNode cur = res;public ListNode getTreeLevel(Node root, int depth) { if (root == null || dep...原创 2020-03-31 09:25:59 · 139 阅读 · 0 评论 -
每日收获(3月23日-3月27日)
3月23日回文判断就用栈, 首先找到中点.回文链表import java.util.*;/*public class ListNode { int val; ListNode next = null; ListNode(int val) { this.val = val; }}*/public class Palindrom...原创 2020-03-23 09:10:00 · 186 阅读 · 0 评论 -
每日收获(3月17-3月20)
2020年3月17日StringBuilder的append方法可以追加任何基本类型3月18日单链表 包含 数据 和 next指针 头节点不包含数据 链表插入 先定位到要插入的节点的前一个元素 修改前节点的next 修改插入节点的next 定位函数定位到当前index对应的节点 int i = 0; cur = h...原创 2020-03-29 16:43:45 · 143 阅读 · 0 评论 -
难得的算法题
来自牛客:https://www.nowcoder.com/practice/a0c19f3489774fe693d71490ce83b648?tpId=8&tqId=11068&rp=2&ru=%2Fta%2Fcracking-the-coding-interview&qru=%2Fta%2Fcracking-the-coding-interview%2Fque...原创 2019-12-29 21:02:27 · 731 阅读 · 1 评论 -
经典算法
动态规划的基本思想就是将待求解问题分解为若干子问题,(如本题中我们将dp[i][j]分解为若干dp[i-1][j-x]的问题),先求解这些子问题并将结果保存起来( 我们用dp[][]二维数组保存子结果),若在求解较大的问题时用到较小子问题的结果,可以直接取用(求dp[i][j]时用dp[i-1][x]的结果),从而免去重复计算池塘抽样算法1. 先将前k个作为结果2. 然后用后面的数随机...转载 2019-12-10 20:35:51 · 219 阅读 · 0 评论 -
LeedCode前200道算法思路记录
写算法一定要顺藤摸瓜, 先找到头, 然后顺着藤, 该基础操作(判断,循环), 该高级操作(递归, 回溯, 动规)1. 比如 最长回文字串 算法, 开始时思路是如果是回文, 保存一个长度和回文的map,最后根据最大长度返回对应的回文.解决:可以维护一个最大值变量, 每次如果大于max,则更新max, 同时更新对应的结果值, 小于则不更新 if (isPa...原创 2019-11-19 18:04:33 · 324 阅读 · 0 评论 -
五大基本算法之 基础算法实现
大致套路求总共多少 - 用分治法求最大 - 用动态规划求是否存在 - 用二分(先排序)数组和字符串 - 大部分可以用双指针法哈希可以降低时间复杂度对数字的操作就是 n % 10 n/10数字判断回文,反转后和原来相等二分查找public int binarySearch(int[] a, int l,int r, int k){ while(l &l...原创 2019-08-01 09:13:11 · 555 阅读 · 0 评论 -
《分布式系统原理介绍》要点简记
数据备份机制问题: 机器宕机导致数据丢失问题解决:无状态节点则无需读取读取任何信息就可以立刻重新“可用”有状态节点可以 通过读取本地存储设备中的信息或通过读取其他节点数据的方式恢复内存信息有状态是指是否是保存数据的节点序列号机制问题: 消息乱序解决: 给消息排号,按照版本号进行消费校验码机制问题:数据错误 消息被抓包篡改解决: 使用一定的校验码机...原创 2019-08-26 08:58:26 · 296 阅读 · 0 评论 -
Java基础系列之常用方法底层实现
sleep(time)挂起线程(释放cpu)并修改其运行状态 用sleep()提供的参数来设置一个定时器。 当时间结束,定时器会触发,内核收到中断后修改进程(或线程)的运行状态。例如线程会被标志为就绪而进入就绪队列等待调度。Thread.Sleep(0)的作用,就是“让出cpu,会触发操作系统立刻重新进行一次CPU竞争”wait(), notify()...原创 2020-02-03 10:09:35 · 647 阅读 · 0 评论 -
读大型网站系统与Java中间件实践(曾宪杰)感悟
集群 是一个 1+1 > 2 的模式 最开始有1台服务器,随着流量的增加 不能只单单增加一个服务器,而是同时还要增加一个管理者服务器 集群本身也是一种分片 可以实现高容量,高并发,高可用(三高) 管理者服务器的三种模式 代理模式 增加代理服务器控制后面服务器的选取 名称服务器 将服务节点的地址存储在名称服务器中,服务节点的变更会同步到名称服务器 请求者获取所...原创 2019-05-26 17:59:13 · 234 阅读 · 0 评论 -
二、Java基础系列之并发包
CompletionServiceExecutorCompletionService= Executor + LinkedBlockingQueue典型的适配器模式线程池 = Runnable + ExecutorAbstractExecutorServicesubmitexecuteFutureForkJoinTaskFu...原创 2019-05-30 10:00:31 · 373 阅读 · 0 评论 -
Mysql隔离级别
https://www.cnblogs.com/fengyumeng/p/9852735.html隔离主要是针对不同的事务脏读: 读到了别的事务未提交的数据不可重复读: 在A事务的过程中, B事务修改了数据, A前后2次读取同一条数据的结果不一样幻读 : 读取到了别的事务新增的数据. 在一次事务过程中, 前一秒读取没有这条数据, 后一秒读取又有了Mysql默认是可重复读...原创 2020-01-04 14:06:51 · 176 阅读 · 0 评论 -
Mysql前缀索引和最左原则
前缀索引(https://blog.csdn.net/ma2595162349/article/details/79449493)1. 是指索引的值比较大时, 取值的前一部分数据作为索引.2.问题: 前一部分的值取多长?可以通过该字段的重复率来判断, 取重复率接近整个字段的值的重复率的截取长度.select 1.0*count(distinct left(name))/count(...原创 2020-01-04 12:54:44 · 285 阅读 · 0 评论 -
Mysql多表连接执行过程
原文链接:https://blog.csdn.net/qq_27529917/article/details/879041791. 先根据where 的第一个条件过滤, 然后用得到的结果,在中间表中找到关联表对应的数据, 然后再用第二个where条件进行结果筛选。select a.*,c.* from a join c on a.a2=c.c2 where a.a1>4;...转载 2019-12-25 16:59:20 · 915 阅读 · 0 评论 -
mysql主从复制实现
MySQL主从复制涉及到三个线程,一个运行在主节点(log dump thread),其余两个(I/O thread, SQL thread)运行在从节点,如下图所示:l 主节点 binary log dump 线程当从节点连接主节点时,主节点会创建一个log dump 线程,用于发送bin-log的内容。在读取bin-log中的操作时,此线程会对主节点上的bin-log加锁,当......转载 2019-12-19 10:03:08 · 169 阅读 · 0 评论 -
mysql 锁
InnoDB 的行锁是实现在索引上的,而不是锁在物理行记录上。也就是说,如果访问没有命中索引,也无法使用行锁,将要退化为表锁。所以InnoDB 务必建好索引,否则锁粒度较大,会影响并发mysql锁主要有三类: 行锁, 间隙锁, 临键锁构建表test(id pk,num key)。id num 3 3 5 5 7 7 10 7 1...原创 2019-05-26 16:01:47 · 196 阅读 · 0 评论 -
mysql 事务
ACID1.原子性(atomicity):一个事务必须视为一个不可分割的最小工作单元,整个事务中的所有操作要么全部提交成功,要么全部失败回滚,对于一个事务来说,不可能只执行其中的一部分操作,这就是事务的原子性。2.一致性(consistency):事务开始前和结束后,数据库的完整性约束没有被破坏 。比如A向B转账,不可能A扣了钱,B却没收到。3.隔离性(isolation):一个事务所...原创 2019-05-26 15:56:07 · 101 阅读 · 0 评论 -
mysql 可重复读实现
MVCC(Multi-Version Concurrency Control,中文翻译过来叫多版本并发控制)具体实现分析InnoDB的MVCC,是通过在每行记录后面保存两个隐藏的列来实现的,这两个列,分别保存了这个行的创建时间,一个保存的是行的删除时间。这里存储的并不是实际的时间值,而是系统版本号(可以理解为事务的ID),每开始一个新的事务,系统版本号就会自动递增,事务开始时刻的系统版本号会作...原创 2019-05-26 15:24:52 · 8433 阅读 · 3 评论