自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

white_zzZ的博客

一位正在成长的呱

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

转载 redis底层数据结构

文章目录一、简单动态字符串1、SDS的结构定义2、...

2020-03-20 12:56:44 297

原创 QUIC协议

一、什么是quicQUIC(Quick UDP Internet Connection)是谷歌提出的一种基于UDP的低时延的互联网传输层协议QUIC解决了现代网站应用的一系列的传输层及应用层的问题,但只需要应用开发者几乎不用做出或者只做出很小的改变。QUIC和TCP+TLS+HTTP很类似,但是基于UDP实现,基于QUIC实现的HTTP协议被提议为HTTP3。0RTT 建立连接可以说是 Q...

2020-02-17 00:49:39 1596 1

原创 Google的BBR拥塞控制算法

背景传统基于预测的TCP拥塞控制以Reno的改进为例,TCP发送端在拥塞避免阶段收到ACK后,无条件地将cwnd增加1/cwnd,在慢启动阶段收到ACK后cwnd增加1,这是毫无根据的,然而Reno并没有什么更好的做法,只能瞎猜!后来Cubic也改进了一波,搞了一个高大上的以三次方程凸凹曲线来抉择的增窗机制,看似十分地“博士”,并且十分地“经理”,然而还是无法高效利用互联网的空闲带宽,相反...

2020-02-16 23:32:28 1945

转载 TCP拥堵控制原理

转自:https://blog.csdn.net/qq_41431406/article/details/97926927 ...

2020-02-15 15:05:48 1014

转载 TCP基本原理

三次握手连接由客户端client发送建立TCP连接的请求,此时TCP报文会随机生成一个seq为a的序列号,并且把SYN字段设置为1,表示建立TCP连接服务器server接受到客户端发来的TCP连接请求,也会在回复的TCP报文中随机生成一个序列号为b,SYN字段也置为1,ack设置为a+1进行回复,以便客户端收到消息时,知道自己发送的TCP请求已经得到验证客户端收到服务器发送来的消息后,将...

2020-02-15 14:58:16 1135

转载 OSI七层模型

每一层及其对应的协议实际传输中的封装每一层及其对应的物理设备物理层:网卡、网线、集线器、中继器、调制调节器数据链路层:网桥、交换机网络层:路由器...

2020-02-15 13:33:23 160

原创 redis五种数据类型以及方法

String- 插入:redisTemplate.opsForValue().set(key, String.valueOf(value));- 获取:redisTemplate.opsForValue().get(key);- 批量删除:redisTemplate.delete(keys) //其中keys:Collection<K> keys- 设置过期: redisTem...

2020-02-04 22:52:10 186

原创 其他设计模式(转)

最近发现一个博主写的设计模式,有例子代码,最后还会有设计模式在框架的运用,觉得非常不错!责任链模式责任链模式中介者模式中介者模式备忘录模式备忘录模式观察者模式观察者模式策略模式策略模式...

2020-02-04 00:35:59 118

转载 装饰器模式

什么是装饰器模式把已有的功能动态添加更多功能的一种方式UML图代码apple接口public interface Apple { /** * 描述 */ void res();}实体苹果类(concreteApple)public class ConcreteApple implements Apple { @Overr...

2020-02-02 00:03:55 97

原创 构建者模式

最近尝试性地在牛客上笔试了一下,感觉除了上课所学的设计模式以外,公司笔试还会有要求掌握其他虽然不常用但是重要的设计模式什么是构建者模式将一个复杂对象的构建与他的表示分离,使得同样的构建过程可以创建不同的表示隐藏了复杂对象的创建过程,把他复杂对象的创建过程加以抽象,通过子类继承或重载UML图共享单车为例子的代码转自:https://www.jianshu.com/p/3d1c...

2020-02-01 23:29:10 163

原创 多线程中常用方法的区别

wait和sleepwait方法来自Object类中,sleep方法来自Thread类中sleep方法没有释放锁,而wait方法释放了,使得其他线程可以使用同步控制块或者方法sleep方法可以在任何地方使用,wait,notify,notifyAll只能在同步控制方法或者同步控制块里面使用sleep方法必须捕获异常(在sleep的过程中过程中有可能被其他对象调用它的interrupt()...

2020-01-30 21:46:56 195

原创 数据库中count语句解读

COUNT的几种用法COUNT(expr),返回select语句检索行中expr的值不为NULL的数量,结果是一个BIGINT值如果没有命中任何记录,返回0COUNT(*)统计时会包含值为NULL的行数COUNT(*)的优化MyISAM:一个简单得优化,它把表的总行数单独记录下来,如果从一张表中使用COUNT(*)进行查询,就可以直接返回这个记录下来的数值就可以了InnoDB:应...

2020-01-30 17:41:35 2733

转载 快速排序

(1)排序思路1、先从数列中取出一个数作为基准数2、分区过程,将比这个数大的数全放到它的右边,小于或等于它的数全放到它的左边3、再对左右区间重复第二步,直到各区间只有一个数(2)表格流程介绍概括来说两个流程:挖坑填数+分治第一步:以第一个数为基准元素,尾指针从后往前扫描,找到第一个比基准元素小的数,调换位置第二步:头指针从前往后扫描,找到比尾指针位置元素大的第一...

2020-01-29 01:01:55 117

转载 归并排序

今天在别人的博客看到一篇非常好的归并排序的解释,而且带上图解和动图,代码非常清晰简介https://www.jianshu.com/p/33cffa1ce613(1)归并排序流程(2)合并两个(3)代码public static void mergeSort(int[] arr) { sort(arr, 0, arr.length - 1);}public stat...

2020-01-29 00:36:09 105

转载 图中连通块的个数:并查集

图的连通性问题在地图上有...

2020-01-27 23:50:44 1691

原创 一个数 m 开 n 次方

今天在牛客上刷到的一道题目题目:在没有任何数学库函数的情况下,求一个数 m 开 n 次方的结果。思路:用逼近法,无限逼近x,使得x的n次方无限接近于m(至于接近多少自己定义)代码:#include <bits/stdc++.h>using namespace std;const double eps=1e-16;//10的-16次方long double n,m;i...

2020-01-27 22:58:54 2964 5

原创 二叉排序树

BST查找、插入、删除、遍历

2020-01-23 18:52:44 149

转载 红黑树基本原理

红黑树性质1、每个结点或是红色的,或是黑色的 2、根节点是黑色的 3、每个叶结点(NIL)是黑色的 4、如果一个节点是红色的,则它的两个儿...

2020-01-23 15:01:13 288

原创 ConcurrentHashMap分析

基于1.8的详细实现1.7与1.8实现的不同

2020-01-23 14:48:07 131

原创 hashmap(基于1.8)分析

整体分析为什么hashmap不适用在多线程中resize方法解读

2020-01-23 14:19:22 166

原创 jvmGC(GarbageCollection)机制

GC 是什么? 为什么要有 GC?Java 提供的 GC 功能可以自动监测对象是否超过作用域从而达到自动回收内存的目的Java 语言没有提供释放已分配内存的显示操作方法。如何确定对象为垃圾可以回收1. 引用计数法:所谓引用计数法就是给每一个对象设置一个引用计数器,每当有一 个地方引用这个对象时,就将计数器加一,引用失效时,计数器就 减一。当一个对象的引用计数器为零时,说明此对象没有...

2020-01-20 00:39:32 245

原创 jvm类加载机制

加载机制JVM类加载机制分为五个部分:加载,验证,准备,解析,初始化。加载通过一个类的全限定名获取该类的二进制流。将该二进制流中的静态存储结构转化为方法去运行时数据结构。在内存中生成该类的 Class 对象,作为该类的数据访问入口。验证主要目的是确保class文件中的字节流的信息不回危害到虚拟机文件格式验证:验证字节流是否符合 Class 文件的规范,如 主次版本号是...

2020-01-18 00:20:18 88

原创 semaphore信号量使用以及原理

什么是信号量(semaphore)是一种JDK内置同步器,通过他可以实现多线程对公共资源的并发访问请求可以看成一个计数器,当计数器的值小于许可最大值时,所有acquire方法线程都可以得到一颗许可继续执行,而调用release方法则可以让计数器的值减一常用的重要方法1、public Semaphore(int permits) // 创建一个给定许可数量的信号量对象,且默认以非公...

2020-01-13 12:04:03 380

原创 java IO模型(BIO、NIO、AIO)

BIO传统的一种IO模型,即在读写数据过程中会发生阻塞现象。当用户线程发出IO请求之后,内核会去查看数据是否就绪,如果没有就绪就会等待数据就绪,而用户线程就会处于阻塞状态,用户线程交出CPU。当数据就绪之后,内核会将数据拷贝到用户线程,并返回结果给用户线程,用户线程才解除block状态。典型的阻塞IO模型的例子为:data = socket.read();如果数据没有就绪,就会一直阻塞在rea...

2020-01-12 20:30:44 204

原创 jvm内存模型 基于1.8

jvm内存模型一、简要模型在jdk1.8之前jdk1.8之后两个版本之间的区别元数据区取代了永久代的方法区。元空间的本质和永久代类似,都是对JVM规范中方法区的实现。不过元空间与永久代之间最大的区别在于:元数据空间并不在虚拟机中,而是使用本地内存。二、各区域详细介绍1. 程序计数器一块较小的内存空间, 是当前线程所执行的字节码的行号指示器,每条线程都要有一个独立的 程...

2020-01-11 22:08:22 253

原创 ReentrantLock 及 其他锁 实现原理

ReentrantLock 及 AQS 实现原理一、什么是可重入锁?ReentrantLock 是可重入锁,什么是可重入锁呢?可重入锁就是当前持有该锁的线程能够多次获取该锁,无需等待。可重入锁是如何实现的呢?这要从 ReentrantLock 的一个内部类 Sync 的父类说起,Sync 的父类是 AbstractQueuedSynchronizer(后面简称AQS)。二、什么是AQS?...

2020-01-04 23:37:39 811

原创 Synchronized 关键字使用、底层原理

Synchronized 关键字使用、底层原理synchronized关键字最主要的三种使用方式修饰实例方法,作用于当前对象实例加锁,进入同步代码前要获得当前对象实例的锁修饰静态方法,作用于当前类对象加锁,进入同步代码前要获得当前类对象的锁.访问静态 synchronized 方法占用的锁是当前类的锁,而访问非静态 synchronized 方法占用的锁是当前实例对象锁。即给当前类加...

2020-01-04 20:54:27 183

原创 CAS操作

CAS操作 - Compare and Swap概述Compare and Swap,比较并操作,CPU指令,在大多数处理器架构,包括IA32、Space中采用的都是CAS指令,CAS的语义是“我认为V的值应该为A,如果是,那么将V的值更新为B,否则不修改并告诉V的值实际为多少”,CAS是项乐观锁技术,当多个线程尝试使用CAS同时更新同一个变量时,只有其中一个线程能更新变量的值,而其它线程...

2019-12-03 16:18:11 148

原创 volatile关键字

volatile关键字说到volatile,我们前提得弄懂jvm的内存模型Java内存模型(JMM)就像电脑的存储模式一样:寄存器,高级缓存,RAM和ROM。学过计算机组成的都懂这就是电脑中的多级缓存,以提高读写速度的。在Java内存模型里,对上述的优化又进行了一波抽象。JMM规定所有变量都是存在主存中的,类似于上面提到的普通内存,每个线程又包含自己的工作内存,方便理解就可以看成CPU...

2019-12-03 14:58:18 110

原创 Mysql保存emoji表情

Mysql保存emoji表情Emoji 在我们生活中真的是越来越常见了,几乎每次发消息的时候不带个 Emoji,总觉得少了点什么,似乎干巴巴的文字已经无法承载我们丰富的感情了。对于我们开发者来说,如何将 Emoji 存入 MySql 数据库或者取出来,就变成了一种必须掌握的技能了。Emoji 是一种图形符号,能够很直观地反应出某种文字含义。它让我想起远古时代的象形文字糟糕如...

2019-12-02 15:20:33 255

原创 IDEA使用技巧

一、提高效率1、代码自动补全设置路径:Settings -> Editor -> General -> Code Completion-》取消match case2、ctrl+滑轮调整字体大小设置路径Settings -> Editor -> General->勾选3、自动导入包设置路径Settings -> Editor -> Ge...

2019-12-02 13:31:51 194

原创 jdk10新特性

jdk10新特性1.局部变量类型推断var str = "ABC"; //根据推断为 字符串类型var l = 10L;//根据10L 推断long 类型var flag = true;//根据 true推断 boolean 类型var flag1 = 1;//这里会推断boolean类型。0表示false 非0表示truevar list = new ArrayList<Str...

2019-09-20 12:43:16 264

原创 jdk1.9新特性

jdk1.9新特性1.Java平台级模块系统该特性使Java9最大的一个特性,Java提供该功能的主要的动机在于,减少内存的开销,JVM启动的时候,至少会有30~60MB的内存加载,主要原因是JVM需要加载rt.jar,不管其中的类是否被classloader加载,第一步整个jar都会被JVM加载到内存当中去,模块化可以根据模块的需要加载程序运行需要的class,那么JVM是如何知道需要加...

2019-09-20 00:22:14 196

原创 jdk1.8新特性

jdk1.8新特性1.接口的默认方法:即接口中可以声明一个非抽象的方法做为默认的实现,但只能声明一个,且在方法的返回类型前要加上“default”关键字。详细解释2. Lambda 表达式:是对匿名比较器的简化`如: Collections.sort(names,(String a, String b) -> { returnb.compareTo(a);});`对于...

2019-09-19 13:52:51 138

原创 jdk1.7新特性

jdk1.7新特性1.对Java集合(Collections)的增强支持// 创建List接口对象List<String> list = new ArrayList<String>();list.add("item")String item = list.get(0);// 创建Set接口对象Set<String> set = new HashS...

2019-09-05 14:32:34 324

原创 jdk1.6新特性

jdk1.6新特性1.使用JAXB2来实现对象与XML之间的映射详细例子2.StAX一种利用拉模式解析(pull-parsing)XML文档的API具体用法3.Compiler API具体例子4.Http Server API应用例子...

2019-09-05 13:26:18 146

原创 jdk1.5新特性

jdk1.5新特性1.自动装箱与拆箱:1、知道什么时候会引发装箱和拆箱2、装箱操作会创建对象,频繁的装箱操作会消耗许多内存,影响性能,所以可以避免装箱的时候应该尽量避免。3、equals(Object o) 因为原equals方法中的参数类型是封装类型,所传入的参数类型(a)是原始数据类型,所以会自动对其装箱,反之,会对其进行拆箱4、当两种不同类型用比较时,包装器类的需要...

2019-09-04 22:55:00 101

原创 创建线程

创建线程的两种方法及优缺点继承类优点:可读性强缺点:java是单继承的,继承了Thread类后不能再继承其他类,对原有继承结构影响通过接口优点直观简单不影响继承结构...

2019-08-09 23:16:22 92

空空如也

空空如也

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

TA关注的人

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