自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

放羊的大飞

宏愿纵未了,奋斗总不太晚

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

原创 三个线程轮询数据ABC

import java.util.concurrent.CountDownLatch;import java.util.concurrent.LinkedBlockingDeque;import java.util.concurrent.ThreadPoolExecutor;import java.util.concurrent.TimeUnit;public class ThreadChange { public static void main(String[] args) { .

2020-06-01 16:31:33 268

原创 ES的查询过程、倒排索引

一、ES的搜索过程: 1、query phase 查询阶段: 1.客户端发送请求,接受到的节点变成coordinate node协调节点; 2.协调节点将搜索请求广播给:该索引中每个节点的副本分片or主分片; 3.每个分片将自己的搜索结果(一些doc id)返回给协调节点,由协调节点做数据的合并、排序、分页等操作,产出最终的查询结果; 2、fetch phase 取回阶段: 4.协调节点根据查询阶段得到的结果集(doc id),向含有...

2020-05-23 00:37:16 1781

原创 ES介绍

一、ES的简介 1、ES是一个开源分布式全文检索引擎,每个字段均可被索引、被搜索。 2、使用Lucene作为核心来实现索引和搜索的功能,通过RESTful API提供简单的操作方式。 3、数据的存储、检索效率高;扩展性强,可以扩展到上百台服务器,处理PB级别的数据。(1PB=1024T=1024*1024G) 4、ES的节点启动后,通过多播(multicast)或者单播寻找集群中的其他节点,并与之建立连接。 5、ES对比关系型数据库: 索引(index):相...

2020-05-22 23:54:32 385

原创 阻塞队列

Lock实现锁的原理: 通过Node把线程构成队列,搁置除头结点外的其他线程,当头结点释放锁时唤醒下一个节点,同时更新头结点。一、Condition接口 1、Condition接口:条件对象,阻塞和唤醒线程的作用。位于java.util.concurrent.locks包下,其中有await()、signal()、signalAll()等抽象方法,只有AQS和AQLS类中有内部类实现了Condition接口。 2、ReentrantLock接口中,有内部类Sync继承自Abs...

2020-05-14 00:30:13 147

转载 CAP和BASE理论

1. CAP理论 CAP理论为:一个分布式系统最多只能同时满足一致性(Consistency)、可用性(Availability)和分区容错性(Partition tolerance)这三项中的两项。1.1 一致性(Consistency) 一致性指“all nodes see the same data at the same time”,即更新操作成功并返回客户端完成后...

2020-05-07 21:14:41 319

原创 Redis的高可用

Redis实现高可用的方式 主要方式:redis主从复制、哨兵机制、持久化机制、keepalived等一、Redis主从复制 1、主从结构的作用:数据备份;读写分离,提升读性能(耗时读操作由从服务器来做);实现高可用,提高容错。 2、redis只有一个master,有多个slave。主服务器主要进行写操作,从一般设置为只读,并接收主同步过来的数据。 3、可以考...

2020-05-06 01:35:43 221

原创 Redis和ZK实现分布式锁

一、Redis实现分布式锁 1、使用Redis分布式锁的原因:Redis性能好;命令支持比较好,实现方便。 2、实现方式:直接用int setnx写key,如果成功了,说明获取锁成功,否则拿锁失败。拿锁成功之后对key设置超时时间,操作完成时可通过del key释放锁。二、Zookeeper实现分布式锁 1、通过创建zk的znode节点进行控制。检查zookeepe...

2020-05-05 02:34:44 251

原创 Redis和memcached的区别

一、Redis介绍 1、强一致性:任何时刻所有用户查询到的都是最新的数据。(关系型数据库的更新操作) 最终一致性:某一时刻不同用户或进程查到的数据可能不同,但是最终更新成功的数据都能查到。(主流NoSQL是这种) NoSQL:基于内存的数据库,提供一定的持久化功能。Redis和MongoDB就是NoSQL。 2、Redis性能优...

2020-05-05 01:59:40 1246

原创 LeetCode_合并两个有序链表_LinkedList_E

21. 合并两个有序链表pre:/** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode(int x) { val = x; } * } */class Solution { public...

2020-05-04 00:20:15 124

原创 LeetCode_数组的度_Array_E

697. 数组的度class Solution { public int findShortestSubArray(int[] nums) { if (nums == null || nums.length == 0) { return -1; } Map<Integer, Node> map = n...

2020-05-03 23:43:45 111

原创 Redis的过期策略和内存淘汰机制

一、Redis的过期策略和内存淘汰机制1、内存过期策略 1. 对redis中的key设置了过期时间,执行的过期策略是:定期删除+惰性删除 定期删除:每100ms随机抽取一批数据进行检查,如果符合过期时间则删除key。(如果检查所有key那直接卡死了) 惰性删除:获取key的时候检查key是否过期。 2. 为什么不用定时删除:对每个ke...

2020-04-27 22:44:18 115

原创 Redis的持久化

一、复制技术 1. 快照snapshot:保存待备份文件某一时刻的状态,出问题可以回滚。便捷,但是实时性不高。 2.写时复制Copy-on-Write:复制一个对象不是开新内存多放一份,而是在新对象的内存映射表中指向原对象的位置;修改时先复制到新位置,修改内存映射,进行写入操作。 优点:复制时节省内存空间,读操作不会复制。 缺:大文件修改时要复制一遍或者比较上个版本,比较费时...

2020-04-27 22:21:46 115

原创 Redis的数据类型及使用场景

一、Redis的数据结构 存储的时候key和value都是String,value支持String、hash、list、set、zset等数据结构。1.String 结构:key-value 常用方法:set、setex、setnx(setIfNotExist)、get、incr/decr 使用场景:存task、分布式锁、存int值做...

2020-04-23 00:10:47 160

原创 缓存和缓存淘汰算法

一、内存、缓存、寄存器 1. CPU <===> 寄存器 <===> 缓存 <===> 内存 寄存器:cpu中的一部分,cpu直接拿寄存器中的数据,包含:指令寄存器、程序计数器。寄存器从缓存或者内存中获取数据。 缓存:直接从内存拿数据速度很慢,缓存是数据的一种中转方式。 一级缓存:内置在cpu...

2020-04-17 00:11:14 405 1

原创 LRU算法

LRU: Least Recently Used 最近最少使用。缓存算法。 利用链表和hashmap实现: 新增:如果新数据项在链表中存在,则把该节点移到链表头部;如果不存在,则新建一个节点放到链表头部;若缓存满了,则把链表最后一个节点删除。 查找:如果数据项在链表中存在,则把该节点移到链表头部并返回对应节点,...

2020-04-09 23:07:11 204

原创 LeetCode_旋转矩阵_Array_M

01.07. 旋转矩阵简单粗暴:class Solution { public void rotate(int[][] matrix) { int size = matrix.length; int[][] arr = new int[size][size]; for (int i = 0; i < size; i++) { ...

2020-04-07 22:30:48 107

原创 LeetCode_最接近的三数之和_Array_M

16. 最接近的三数之和class Solution { public int threeSumClosest(int[] nums, int target) { if (nums.length < 3) { return -1; } Arrays.sort(nums); int res =...

2020-04-05 02:23:16 62

原创 LeetCode_两数之和_Array_E

1. 两数之和 暴力:class Solution { public int[] twoSum(int[] nums, int target) { int[] res = new int[2]; if (nums == null || nums.length == 0) { return res; } ...

2020-04-05 01:25:06 66

原创 LeetCode_ThreeSum_Array_M

15. 三数之和 先排序,然后用双指针即可快速查找。注意数据的去重class Solution { public List<List<Integer>> threeSum(int[] nums) { List<List<Integer>> result = new ArrayList<>(); ...

2020-04-05 00:53:29 87

原创 LeetCode_除自身以外数组的乘积_Array_M

238. 除自身以外数组的乘积 不能用除法,不能额外空间,所以先用一个数组存第 i 位左边的所有数乘积,再倒过来遍历赋值:res = 左边乘积 * 右边乘积class Solution { public int[] productExceptSelf(int[] nums) { int[] result = new int[nums.length]; ...

2020-04-04 17:39:11 74

原创 LeetCode_盛最多水的容器_Array_M

11. 盛最多水的容器 暴力...class Solution { public int maxArea(int[] height) { int max = 0; for (int i = 0; i < height.length - 1; i++) { for (int j = i + 1; j < h...

2020-04-04 15:29:45 64

原创 LeetCode_整数反转_Math_E

7. 整数反转class Solution { public int reverse(int x) { long result = 0; while (x != 0) { // 如果是-123,%的值是-3、-2、-1,所以不用单独考虑负数 result = result * 10 + x % 10; ...

2020-04-04 14:45:01 69

原创 LeetCode_字符串转换整数 (atoi)_String_M

8. 字符串转换整数 (atoi)class Solution { public int myAtoi(String str) { if (str == null || str.length() == 0 || str.trim().length() == 0) { return 0; } str = str....

2020-04-03 21:21:41 64

原创 LeetCode_生命游戏_Array_M

289. 生命游戏class Solution { public void gameOfLife(int[][] board) { List<IndexNum> modifyList = new ArrayList<>(); //存需要改变的坐标 int m = board.length, n = board[0].length; // 坐标数组...

2020-04-02 23:30:01 69

原创 数据库并发

一、数据库层面支持高并发系统二、数据库锁三、ORM框架 1. Object Relational Mapping 对象关系映射,描述对象和数据库之间映射的元数据,将程序中的对象自动持久化到关系数据库中,数据持久层框架。(对象和数据库之间的桥梁) 2.类 --> 表 类的属性 --> 表字段 ...

2020-04-01 23:45:50 280

原创 数据库事务和隔离级别

一、数据库事务二、事务的隔离级别

2020-04-01 23:38:44 130

原创 Mysql的存储引擎

一、存储引擎简介二、存储引擎的分类

2020-04-01 23:12:36 139

原创 Mysql索引的设计原则、数据结构

索引:加速查询的数据结构一、索引设计原则 1.经常查询的字段,建议创建索引; 2.索引不是越多越好:维护索引结构会占用磁盘空间(每个索引是一个单独的存储结构)、影响增删查改的性能(查:生成执行计划时要考虑各个索引;可能用不到最佳索引; 增删改:要维护每个索引的结构); 3.经常更新的表不要太多索引: 数据更新时会调整索引,消耗系统资源; 4. 数据量小的...

2020-04-01 23:07:31 153

原创 LeetCode_有效的括号_Stack_E

20. 有效的括号class Solution { public boolean isValid(String s) { Stack<Character> stack = new Stack<>(); for (char c : s.toCharArray()) { if (stack.isEmpty()...

2020-04-01 02:54:59 72

原创 LeetCode_排序数组_Array_M

912. 排序数组class Solution { public int[] sortArray(int[] nums) { quickSort(nums, 0, nums.length - 1); return nums; } // 快排 private void quickSort(int[] arr, int l, int r...

2020-03-31 21:21:07 93

原创 B树和B+树

一、B树二、B+树

2020-03-31 00:09:23 96

原创 二叉树和红黑树

一、二叉树 1.每个节点最多有两个子节点(度不大于2) 2.满二叉树:深度为k,有2^k-1个节点 3.完全二叉树:在满二叉树的基础上右边缺几个口。深度为k,最少2^(k-1)个节点,最多2^k - 1个节点 4.节点的度:子树的个数。度为0的叫叶子节点,度不为0的叫分支节点 5.先序遍历(根左右)、中序遍历(左根右)、后序遍历(左右根)、层次遍历(队列实...

2020-03-31 00:06:21 391

原创 LeetCode_圆圈中最后剩下的数字_Math_E

面试题62. 圆圈中最后剩下的数字class Solution { public int lastRemaining(int n, int m) { // 模拟法 List<Integer> list = new ArrayList<>(n); for (int i = 0; i < n; i++) { ...

2020-03-30 03:01:26 74

原创 LeetCode_地图分析_BFS_M

1162. 地图分析class Solution { public int maxDistance(int[][] grid) { Queue<Node> queue = new LinkedList<>(); // 把首节点放进去: 所有的1 for (int i = 0; i < grid.length...

2020-03-30 01:43:13 91

原创 Trie 前缀树/字典树

一、Trie的介绍: 1、主要应用场景:搜索引擎的自动补全功能:Trie树+词频(概率)权重因子 IP路由:最长前缀匹配,Trie路由算法 分词 2、对比哈希表:哈希表大部分情况下能实现O(1)搜索,但是当冲突较大时可能会O(n);相同的前...

2020-03-29 02:47:20 142

原创 LeetCode_实现 Trie (前缀树)_Trie_M

208. 实现 Trie (前缀树)class Trie { //定义节点 class TrieNode { boolean isEnd; TrieNode[] next = new TrieNode[26]; public TrieNode(){} } private TrieNode root; ...

2020-03-29 02:12:09 84

原创 LeetCode_单词的压缩编码_Array_M

820. 单词的压缩编码 暴力..class Solution { public int minimumLengthEncoding(String[] words) { String[] temp = new String[words.length]; // 不能压缩的字符串集合 int size = 0, sum = 0; ...

2020-03-28 23:44:35 104

原创 LeetCode_可以被一步捕获的棋子数_Array_E

999. 可以被一步捕获的棋子数class Solution { public int numRookCaptures(char[][] board) { if (board == null) { return -1; } int x = 0, y = 0, sum = 0; for (int i...

2020-03-28 21:09:48 134

原创 LeetCode_卡牌分组_Array_E

914. 卡牌分组// 暴力..class Solution { public boolean hasGroupsSizeX(int[] deck) { int[] temp = new int[10000]; for (int a : deck) { temp[a] ++; } int j =...

2020-03-27 02:47:52 73

原创 Spring Bean的生命周期、BeanFactory和FactoryBean的区别

一、Spring Bean的生命周期二、Spring BeanFactory和FactoryBean的区别

2020-03-26 23:15:04 142

空空如也

空空如也

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

TA关注的人

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