自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(167)
  • 收藏
  • 关注

转载 MySQL索引、引擎

一、索引索引是一种存储引擎能快速找到记录的数据结构。索引如果包含多个列,列的顺序就十分重要,MySQL只能高效使用最左前缀列。创建包含两个列的索引和创建两个列的单独索引,效果也是不一样的。索引是存储引擎层面实现的,不是服务器层面。索引的类型B-TreeB+TreeB+Tree相对于B-Tree的几点不同:非叶子节点只存储键值信息。所有叶子节点之间都有一个链指针。...

2019-09-23 07:51:00 262

转载 LeetCode 第 155 场周赛

一、最小绝对差(LeetCode-5189)1.1 题目描述1.2 解题思路数组排好序,获取最小的差值即可。1.3 解题代码public class Solution { class Test { public List<Integer> list; public Integer num; } publ...

2019-09-22 12:19:00 250

转载 LeetCode 第 154 场周赛

一、“气球” 的最大数量(LeetCode-5189)1.1 题目描述1.2 解题思路统计各个字母的出现的次数,然后根据“木桶最短板”返回就好。1.3 解题代码public class Solution { public int maxNumberOfBalloons(String text) { int[] arr = new int[5];...

2019-09-15 20:03:00 258

转载 图拉丁装机

一、CPU生产CPU的厂家,主要有英特尔和AMD。1、英特尔CPU酷睿:面向普通消费级用户至强:面向企业级用户,一般用于组件服务器凌动:移动设备、高能效小服务器酷睿CPU等级:i3、i5、i7、i9、酷睿x2、AMD CPU锐龙:面向普通消费级用户CPU等级:r3、r5、r7、r9、线程撕裂者3、CPU型号4、Mac查看CPU型号sysctl machd...

2019-09-15 17:52:00 590

转载 LeetCode 第 153 场周赛

一、公交站间的距离(LeetCode-5181)1.1 题目描述1.2 解题思路比较简单的一题,顺时针、逆时针两次遍历,就能解决。1.3 解题代码class Solution { public int distanceBetweenBusStops(int[] distance, int start, int destination) { int r...

2019-09-09 00:25:00 183

转载 LeetCode设计实现题(一)

一、LRU缓存机制(LeetCode-146)1.1 题目描述1.2 解题思路思路1:使用Map存放key,value,使用List存放key和count,count为最新的index值,每次put、get操作都会使index自增。进行put操作时,如果发现超过容量值capacity,则对list中的count排序,map和list都删除掉index最小的元素。(提示超时)...

2019-09-08 01:57:00 267

转载 LeetCode 第 152 场周赛

一、质数排列(LeetCode-1175)1.1 题目描述1.2 解题思路先统计出1-n中有多少个质数,得到质数个数\(x\),剩下的数\(y = n - x\);使用排列组合公式得出结果\(A_x^x A_y^y\)1.3 解题代码private static final long INF = 1000000007; public int numPrime...

2019-09-01 23:41:00 148

转载 LeetCode 第 151 场周赛

一、查询无效交易(LeetCode-1169)1.1 题目描述1.2 解题思路根据,它和另一个城市中同名的另一笔交易相隔不超过 60 分钟(包含 60 分钟整)得出城市A和其他城市任何一笔交易,时间的绝对值要大于60分钟才有效,若小于60分钟,则当前交易和其他城市的交易均无效。理解了这层意思,问题就基本解决了。如果想到所有交易按时间排序,就把问题想复杂了。1.3 解题...

2019-08-27 20:57:00 90

转载 LeetCode 第 149 场周赛

成绩一、一年中的第几天(LeetCode-1154)1.1 题目描述1.2 解题思路比较容易的一题,搞清楚平年、闰年的判定规则,就很容易做出来。1.3 解题代码class Solution { public int ordinalOfDate(String date) { String[] dateArray = date.split(...

2019-08-24 19:53:00 120

转载 LeetCode 第 150 场周赛

成绩一、拼写单词(LeetCode-1160)1.1 题目描述1.2 解题思路由于给定的chars,每个字母只能用一次,所以用大小为26的数组charsArray来表示a-z(例如charsArray[0]代表字符a可以使用的次数,charsArray[25]代表字符z可以使用的次数),存放某字符的可使用的个数。遍历单词列表,复制一份charsArray,使用一次,就将单词...

2019-08-19 22:50:00 125

转载 【解决方案】SpringCloud项目优雅发版、部署

背景SpringCloud分布式项目,部署在多个节点上。一般的发版方式是,使用Kill -15 pid,逐一地关闭、部署、重启。但中间涉及到一个问题,当执行kill命令时,服务虽然关闭,但Eureka那里依然保存着这台服务器的IP,请求依然会跑到这台服务器上。直到持续数十秒后,Eureka将该服务的IP剔除掉。如果请求量大,会导致大量请求在发版的过程中出现异常。所以要想到一个更优...

2019-07-31 20:42:00 1234

转载 NAT(地址转换技术)学习

一、什么是NAT,NAT产生的背景NAT通常部署在一个组织的网络出口位置,通过将内部网络IP地址替换为出口的IP地址提供公网可达性和上层协议的连接能力。NAT产生的背景是为了解决IPv4地址不足的问题。二、NAT技术的工作原理和特点在整个NAT的转换中,几个关键的流程:网络被分为私网和公网两个部分,NAT网关设置在私网到公网的路由出口位置,双向流量必须都要经过NAT网关网...

2019-07-30 00:15:00 541

转载 known_hosts有什么用?

一、问题描述当我连接我的服务器的时候,返回信息如下二、问题分析返回的信息是什么意思?IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY!可能是有人做了不好的事Someone could be eavesdropping on you right now (man-in-the-middle attack)!有人可...

2019-07-22 22:07:00 1018

转载 Redis学习(六) —— 主从同步

一、CAP原理分布式系统的节点往往都是分布在不同的机器上进行网络隔离开的,这意味着必然会有网络断开的风险,这个网络断开的场景的专业词汇叫着「网络分区」。在网络分区发生时,两个分布式节点之间无法进行通信,我们对一个节点进行的修改操作将无法同步到另外一个节点,所以数据的「一致性」将无法满足,因为两个分布式节点的数据不再保持一致。除非我们牺牲「可用性」,也就是暂停分布式节点服务,在网络分区...

2019-07-04 23:40:00 157

转载 Redis学习(五) —— 通信协议与简单Jedis-Client的实现

一、RESP协议概述Redis客户端和Redis服务端使用RESP协议进行通信。这个协议的特点:Simple to implement.实现简单Fast to parse.快速解析Human readable.可读性强当我写一个socket程序,去拦截Jedis客户端发送的请求,程序如下:public class JedisSocket { public s...

2019-07-04 23:15:00 194

转载 Redis学习(四) —— 管道 与 位图

一、管道管道的本质是,将客户端与服务端的交互,由写—— 读 —— 写 —— 读,变为 写—— 写—— 读——读,是由客户端提供的技术。两个连续的写操作和两个连续的读操作总共只会花费一次网络来回,就好比连续的 write 操作合并了,连续的 read 操作也合并了一样。二、位图使用bit来存储数据,例如一周的签到,可以使用 7个位来表示,签到了的用1标记,未签到的用0标记。设置与...

2019-07-04 23:06:00 114

转载 Java位操作

1、判断奇数偶数if(n & 1 == 1){ // n 是个奇数。}2、交换两个数x = x ^ y y = x ^ y x = x ^ y 代替int tmp = x;x = y;y = tmp;3、找出唯一没有重复的数数字 1、2、2、1、3、3、4、5、4中找出只出现过1次的数4、位运算代替乘除法//a = a /...

2019-05-31 01:14:00 107

转载 Java实现通过IP获取域名,通过域名获取IP

一、通过Linux命令实现ping www.baidu.comnslookup www.baidu.com nslookup 14.215.177.166为什么这个命令会有一个192.168.1.1呢?192.168.1.1是默认的DNS服务器。二、DNS的理解DNS的解析流程:1.客户端访问www.baidu.com,检查浏览器是否有缓存,若无,往下走2.操作系...

2019-05-30 22:33:00 2576

转载 BitMap、RoaringBitmap与JavaEWAH

本文主要介绍BitMap的算法思想,以及开源工具类JavaEWAH、RoaringBitmap的简单用法。一、BitMap介绍BitMap使用bit位,来标记元素对应的Value。该算法能够节省存储空间。假设一个场景,要存0-7以内的数字[3,5,6,1,2],尽可能的节省空间。一种思路就是单纯使用数组存储,但如果数据量放大百万倍甚至千万倍呢,数组的所占用的内存会非常大。另一...

2019-05-28 15:51:00 574

转载 SpringCloud学习(一) —— Ribbon

参考文档[1]: Spring Cloud Ribbon负载均衡转载于:https://www.cnblogs.com/fonxian/p/10935336.html

2019-05-28 09:46:00 79

转载 Redis学习(三) —— 持久化

一、两个问题为什么要持久化如何持久化1.1 为什么要持久化?因为Redis数据存在内存,若服务器宕机或重启,数据会全部丢失,需要有一种机制保证数据不会因为故障丢失。Redis是单线程的,而持久化就是说Redis需要将线程用到保存数据到磁盘,并且还要服务客户端的请求,持久化的IO会严重影响性能。那么Redis是如何解决的?这里Redis使用了操作系统的 写时复制(Copy...

2019-05-27 17:35:00 84

转载 分布式系统学习(五)—— CAP定理

一致性对某个指定的客户端来说,读操作保证能够返回最新的写操作结果。可用性非故障的节点在合理的时间内返回合理的响应。分区容忍性当出现网络分区后,系统能够继续“履行职责”。CAP关注的粒度是数据,而不是整个系统。参考文档[1]: 请不要再宣称数据库是 CP 或者 AP[2]: 《从0开始学架构》[3]: 架构设计之「 CAP 定理 」[4]: 一篇文章搞清楚什么是分布式...

2019-05-27 14:42:00 127

转载 分布式系统学习(四)—— Paxos算法

参考文档[1]: Paxos算法详细图解转载于:https://www.cnblogs.com/fonxian/p/10918334.html

2019-05-24 15:20:00 114

转载 分布式系统学习(三)—— 一致性Hash

参考文档[1]: 一致性哈希算法原理[2]: 分布式系统中一致性哈希算法[2]: 分布式原理:一致性哈希算法简介转载于:https://www.cnblogs.com/fonxian/p/10918328.html...

2019-05-24 15:19:00 107

转载 分布式系统学习(二)—— 幂等性

参考文档[1]: 分布式系统中的幂等性[2]: 分布式服务接口的幂等性如何设计[3]: 分布式系统中接口的幂等性[4]: 高并发核心技术 - 幂等性 与 分布式锁转载于:https://www.cnblogs.com/fonxian/p/10918288.html...

2019-05-24 15:14:00 77

转载 Redis学习(二) —— 分布式锁

一个操作需要进行读变量,写变量两个步骤,多个相同的操作同时进行就会出现并发问题。因为读取和写入两个变量不是原子操作。分布式锁分布式锁本质上要实现的目标就是在 Redis 里面占一个“茅坑”,当别的进程也要来占时,发现已经有人蹲在那里了,就只好放弃或者稍后再试。占坑一般是使用 setnx(set if not exists) 指令,只允许被一个客户端占坑。先来先占, 用完了,再...

2019-05-23 10:41:00 113

转载 代码与流程规范

本文整理在开发过程中遇到的一些代码规范问题,主要依据是SonarLint的代码质量检测。1、工具类不应该存在公有构造方法Utility classes, which are collections of static members, are not meant to be instantiated. Even abstract utility classes, which can ...

2019-05-22 17:36:00 975

转载 HttpClient学习(四)—— 关于Http

一、Http状态码状态码分类100 ~ 199 信息提示200 ~ 299 成功300 ~ 399 重定向400 ~ 499 客户端错误500 ~ 599 服务端错误常见状态码200 OK401 Unauthorized404 Not Found500 Internal Server Error从2xx,3xx,4xx,5xx分别举例出常见的code,面试...

2019-05-21 21:42:00 135

转载 HttpClient学习(三)—— AsyncHttpClient使用

一、介绍This class support asynchronous and synchronous HTTP requests.AsyncHttpClient 支持同步、异步Http请求。二、简单使用引入依赖<dependencies> <dependency> <groupId>org.a...

2019-05-21 20:28:00 722

转载 Redis学习(一) —— 数据结构

一、stringRedis字符串是可修改字符串,在内存中以字节数组形式存在。下面是string在源码中的定义,SDS(Simple Dynamic String)struct SDS<T> { T capacity; // 数组容量 T len; // 数组长度 byte flags; // 特殊标识位,不理睬它 byte[] content; // 数...

2019-05-21 13:51:00 81

转载 Spring —— @Async注解的使用

参考文档Spring Boot使用@Async实现异步调用:自定义线程池Spring Boot使用@Async实现异步调用:ThreadPoolTaskScheduler线程池的优雅关闭转载于:https://www.cnblogs.com/fonxian/p/10899148.html...

2019-05-21 12:44:00 101

转载 Java核心学习 —— IO

整个Java IO体系都是基于字符流(InputStream/OutputStream) 和 字节流(Reader/Writer)作为基类,根据不同的数据载体或功能派生出来的。一、同步、异步、阻塞、非阻塞1.1 同步与异步同步和异步关注的是通讯方式。同步:需要等所有操作完成后,返回结果。异步:不需要等所有操作完成,返回结果。1.2 阻塞与非阻塞阻塞与非阻塞关注的是等待状态。...

2019-05-19 17:59:00 64

转载 2019读书清单

技术类《码出高效 Java开发手册》《代码的未来》《Redis设计与实现》管理类《人人都是产品经理》《系统之美:决策者的系统思考》《高效能人士的七个习惯》《见识》《金字塔原理》《如何高效学习》《如何结交比你更优秀的人》《绝对自控》《孤独六讲》《未来世界的幸存者》《六项精进》小说类《杀死一只知更鸟》《阿特拉斯耸耸肩》历史类《大明王朝的七张面孔》《坐...

2019-05-18 05:52:00 154

转载 Java核心复习—— 原子性、有序性与Happens-Before

一、 产生并发Bug的源头可见性缓存导致的可见性问题原子性线程切换带来的原子性问题有序性编译优化带来的有序性问题上面讲到了 volatile 与可见性,本章再主要讲下原子性、有序性与Happens-Before规则。二、线程切换带来的原子性问题count += 1 这一句高级语言的语句,往往需要多条CPU执令。可以分为3步:将count值加载到寄存...

2019-05-17 00:41:00 155

转载 Java核心复习——J.U.C ReentrantLock

参考文档Java并发编程-ReentrantLock转载于:https://www.cnblogs.com/fonxian/p/10872841.html

2019-05-15 23:09:00 201

转载 Java核心复习——synchronized

一、概念利用锁机制实现线程同步,synchronized关键字的底层交由了JVM通过C++来实现Java中的锁有两大特性:互斥性同一时间,只允许一个线程持有某个对象锁。可见性锁释放前,线程对变量的修改,后面获得锁的线程可见。二、用法synchronized修饰位置与锁的关系:同步方法 —— 对象锁,当前实例对象静态同步方法 —— 类对象锁,当前对象的Cl...

2019-05-15 23:06:00 131

转载 Java核心复习——J.U.C AbstractQueuedSynchronizer

第一眼看到AbstractQueuedSynchronizer,通常都会有这几个问题。AbstractQueuedSynchronizer为什么要搞这么一个类?这个类是干什么的、有什么用?这个类的实现原理是什么?下面我边学边教,来解答这3个问题。问题一:AbstractQueuedSynchronizer产生的背景AbstractQueuedSynchronizer 我这...

2019-05-15 20:14:00 93

转载 Java核心复习—— volatile 与可见性

一、介绍volatile保证共享变量的“可见性”。可见性指的是当一个线程修改变量时,另一个线程能读到这个修改的值。这里就要提出几个问题。问题1:为什么一个线程修改时,另一个线程可能会“看不见”?问题2:这种可见性是如何实现的?二、问题1 变量为何“不可见”回答:是由于缓存导致的可见性问题2.1 为什么要引入缓存?是为了解决性能问题。CPU的处理速度远远快于内存的读取速...

2019-05-15 20:00:00 104

转载 Java核心复习——J.U.C LinkedBlockingQueue源码分析

参考文档LinkedBlockingQueue和ArrayBlockingQueue的异同转载于:https://www.cnblogs.com/fonxian/p/10867642.html

2019-05-15 09:43:00 95

转载 Java核心复习——J.U.C ArrayBlockingQueue源码分析

介绍依赖关系源码构造方法public ArrayBlockingQueue(int capacity) { this(capacity, false);//默认构造非公平的有界队列 }public ArrayBlockingQueue(int capacity,//指定队列大小 bool...

2019-05-15 09:38:00 87

空空如也

空空如也

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

TA关注的人

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