- 博客(21)
- 收藏
- 关注
原创 JWT和Session和Cookie
文章目录会话管理cookieSessionsession和cookie的优缺点JWTJWT工作JWT的优缺点优点缺点为什么Token可以防止CSRFCSRF工作原理总结会话管理由于HTTP请求是无状态的,也就是说,每一个请求是相互独立的,互不干涉,但是在实际应用场景中,这个显然是不符合要求的。所以使用HTTP+状态管理进行一个面向用户Web开发。这几个技术都是对HTTP协议的一个补充。co...
2020-04-13 16:59:18
647
原创 Java学习笔记-句柄和直接引用
文章目录句柄概念优缺点直接指针概念优缺点句柄概念句柄通俗来讲就是指针的指针。如果使用句柄访问对象的话,会在JAVA堆中划出一部分内存作为句柄池,reference中存储的就是对象的句柄地址,而句柄中包含了对象实例数据与类型数据的各自具体的地址信息。优缺点优点:当对象被移动时(比如GC时),只需更改句柄中的实例数据指针,而reference不需要改变。这样做的好处是如果一个对象被...
2020-04-12 11:58:43
1390
1
原创 Java学习笔记-Java内存溢出
堆和栈堆Java堆是Java虚拟机管理的最大的一块内存,是一块被所有线程共享的内存区域,在虚拟机启动时创建。此内存区域的唯一目的就是存放数据实例,Java世界里“几乎”所有的对象实例都在这里分配内存。(《Java虚拟机规范》中说到:“所有的对象实例以及数组都应该在堆上分配”)。栈Java中栈通常指Java虚拟机栈,或者更多时候指的是局部变量表部分。局部变量表存放了编译期可知的各种Java...
2020-04-11 06:28:22
204
原创 UDP如何实现可靠传输
可以在应用层保证数据传输的可靠性,比如设置一个定时器用来实现超时重传,然后对于接到的数据进行一个确认的操作。原理上来讲因为UDP在传输层无法保证可靠传输,所以要使用UDP实现可靠传输,就要在他的上层或直接在应用层进行TCP可靠传输的逻辑实现。超时重传(定时器)有序接收(包的序列号)应答确认(Seq/Ask应答机制)当客户端通过UDP发送一个包到服务端时,如果服务端收到了,那么...
2020-04-08 06:21:24
508
原创 Redis主从复制数据丢失
Redis主从复制存在的问题异步复制导致的数据丢失:当主数据库处理请求时,由于同步是异步发生的,如果在同步前,主数据库宕机了,会造成数据丢失。脑裂(多个master)导致的数据丢失:当master因为网络的问题被哨兵认为是宕机的服务,这是哨兵会挑选一个slave作为master,但这个时候,就master并没有宕机,在client使用新的master前依旧向旧的master写入数据。之后,当...
2020-04-06 09:02:29
858
转载 【转载】Jar包冲突问题
转载作者:sherlockyb链接:https://www.jianshu.com/p/100439269148概述Jar包冲突是老生常谈的问题,几乎每一个Java程序猿都不可避免地遇到过,并且也都能想到通常的原因一般是同一个Jar包由于maven传递依赖等原因被引进了多个不同的版本而导致,可采用依赖排除、依赖管理等常规方式来尝试解决该问题,但这些方式真正能彻底解决该冲突问题吗?答案是否定...
2020-04-05 17:46:37
288
原创 Java学习笔记-Java异常
所有异常都是由Throwable继承而来,但是在下一层即分为了Error和Exception。Error类层次结构描述了Java运行时系统的内部错误或者资源耗尽错误,应用程序不应该抛出这种类型的对象。如果出现这样的内部错误,除了通知给用户并尽力使得程序安全的终止外,再也无能为力了。这种情况很少出现。Exception层次又分为两个分支,一个是RuntimeException,另一个分支包含...
2020-04-05 17:11:46
158
原创 Java学习笔记-Java反射的原理和作用
Java编译和运行Java程序在编译期间将.java文件编译成.class文件,然后在运行期间将.class文件添加到内存中。原理反射就是程序在运行状态,可以动态的获得类的信息并调用类的方法。通过获得class对象,进而获得class对象所属类的属性和方法。应用场景一些框架使用反射实现当我们编写程序是不知道使用的是哪个类,而是要根据运行时动态的判断是哪个类时,可以使用反射。功能...
2020-04-05 11:59:28
350
1
原创 Java学习笔记-如何破坏双亲委派模型
文章目录双亲委派模型什么是双亲委派模型分类工作流程作用破坏双亲委派模型三大特性自定义类加载器双亲委派模型什么是双亲委派模型双亲委派模型是指除了顶层的启动类加载器之外,其他的类加载器都有自己的父类加载器,这里父子关系一般通过组合实现,而不是继承。分类从 Java 虚拟机的角度来讲,只存在以下两种不同的类加载器:启动类加载器(Bootstrap ClassLoader),使用 C++...
2020-04-05 10:15:23
1351
原创 SQL语句
文章目录创建表增删改查分组分组的执行逻辑子查询连接查询内连接(inner join)自连接自然连接(natural join)外连接左外连接(left join)右外连接(right join)全外连接组合查询约束条件limit排序过滤通配符函数DISTINCT创建表create table mytable( # id int类型 不为空 自增 id INT Not null AUTO_I...
2020-04-04 17:56:09
592
原创 HTTP状态码
文章目录1XX:Informational(信息性状态码)2XX:success(成功状态码)3XX:Redirection(重定向状态码)4XX:Client error(客户端错误状态码)5XX: Server error(服务端错误状态码)1XX:Informational(信息性状态码)100:到目前为止都很正常,可以继续发送请求,或忽略该状态码。2XX:success(成功状态码)...
2020-04-04 10:23:56
389
原创 HTTP1.0/1.1/2.0
文章目录HTTP1.0HTTP1.1HTTP2.0HTTP1.0只支持短连接,且不支持连接复用有Head of line block问题即后面的请求只能等之前的请求响应之后才能发送。那么如果前面的请求响应较慢,那么后面的请求只能阻塞(例如前面的请求正在重传)。不支持Host请求头字段,使得不能通过Host得知要访问服务器的那个web站点,这样就无法使用WEB服务器在同一个IP地址和端口...
2020-04-04 09:34:20
353
原创 ThreadLocal
ThreadLocal是什么场景作用和线程局部变量的区别原理主要方法测试代码entry的key是弱引用内存泄露问题概念图是什么ThreadLocal是一个线程局部变量,每个线程都可以通过set()和get()来对这个局部变量进行操作,但不会和其他线程的局部变量进行冲突,实现了线程的数据隔离。(每个线程一个该线程副本)场景存在一个变量,需要被多个线程访问,但是要求线程之间互不影响,互补干涉。...
2020-04-02 14:19:13
367
原创 Mysql索引
文章目录为什么使用索引速度更快底层索引结构B+树索引B树Hash索引概念索引聚簇索引非聚簇索引(辅助索引)应用索引主键索引唯一索引全文索引普通索引联合索引覆盖索引索引失效情况为什么使用索引速度更快B+树查找时采用多分查找,速度更快。底层索引结构B+树索引B+树是一个多叉搜索树,数据都存在叶子节点的data域中,非叶子节点中没有数据,只有对应的key的值,这样可以保证每个数据查询的平均效率...
2020-04-01 11:09:31
297
原创 对HashCode的理解
文章目录Hash什么是hash常见Hash函数直接取余法乘数去整法平方取中法HashCodeObject.hashCode()Objects.hashCode(),Arrays.hashCode()String.hashCode()Interger.hashCode()hashCode的作用equals和hashCode为什么是31Hash什么是hashhash,翻译散列或哈希,就是把任意长...
2020-03-30 11:48:05
528
原创 Redis分布式锁解决方案
文章目录Redis分布式锁单点setnx(key,value)和expired(key,second)set(key,value,second,time)value的设计lua脚本还存在的问题RedLockRedLock过程:存在的问题即解决zookeeper分布式锁Redis分布式锁redis分布式锁主要是基于setnx以及expired来进行设计的。单点setnx(key,value)...
2020-03-29 23:22:18
479
原创 HashMap各个要素的原因
HashMap的重要属性初始容量链表转化红黑树长度阈值负载因子红黑树转化容量阈值红黑树转链表阈值今天博主主要分享这些默认值的原因,也就是它为什么是这个值。初始容量Capacity:16初始容量为16,为什么?首先,选取为2n2^n2n原因是因为取模时直接hash&(length-1)进行运算,提高运算的速度,这也是为什么扩容时是2n2^n2n的原因。其次,为什么是16呢?作为...
2020-03-26 21:26:57
234
原创 HashMap的key和value可以为空,ConcurrentHashMap和HashTable不可以,为什么
应用场景HashMap是线程不安全的,所以应用于单线程场景下ConcurrentHashMap和HashTable是线程安全的,应用于多线程场景下出现区别的原因当调用get(key)时,若返回的value为空,能不能确定这个value是存的是null还是因为没有这个key返回的null。原因HashMap因为HashMap是应用在单线程场景下,在源码中,当判断key为空时,会把val...
2020-03-22 12:23:09
4132
原创 重载和重写 抽象类和接口
文章目录重载和重写重载重写对比抽象类和接口抽象类接口java8接口新特性重载和重写重载重载是指在一个类中,有两个或多个重名的方法,这些方法参数的类型,数量,顺序有一个是不同的,此时就是方法的重载。返回值类型相同,不能根据返回值类型进行判断是否重载。重写重写是指在父子类中,子类中有和父类方法名,参数类型和个数相同时,那么该方法就是子类对父类方法的重写。对比重载:方法名称相同,参数类...
2020-03-22 09:56:06
394
原创 Google Guava BloomFilter源码分析
BloomFilter简单代码实现源码分析create计算m的个数hash函数个数存入元素简单代码实现首先我们先来看一下guava如何使用的添加依赖 <dependency> <groupId>com.google.guava</groupId> <artifactId>guava</a...
2020-03-21 20:44:48
647
原创 布隆过滤器
布隆过滤器及其数学推导什么是布隆过滤器优点缺点布隆过滤器的实现原理功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入什么...
2020-03-21 13:01:38
292
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人