自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 长连接?短轮询、长轮询?

长连接?短轮询、长轮询?大部分都知道HTTP1.1支持TCP的长连接具体的字段为:Keep-Alive: true但是这么想想,一个应用层的协议怎么能长连接呢,所以其实HTTP只进行了一件事在HTTP层支持以长连接形式进行连接。什么是长连接?长连接便是在连接发起后,在请求关闭连接前客户端与服务端都保持连接,实质是保持这个通信管道,之后便可以对其进行复用。说人话,就是连接了先别关,继续用。轮询短轮询基本思路就是浏览器每隔一段时间向浏览器发送http请求,服务器端在收到请求后,不论是否有数

2021-09-20 22:12:12 263

原创 Redis为什么那么快?

Redis为什么那么快?基于内存实现Redis是基于内存的数据库,这没什么好BB的。数据结构的高效设计以SDS为例,O(1)获得字符串长度,空间预分配和惰性空间释放使得减少分配内存消耗得性能,Redis在数据结构上的设计花了很多心思。再比如说双端链表和压缩链表,我们知道其实双端链表这个结构其实是需要保存首节点和尾节点以及各种指针数据的,指针在反复申请和释放的过程也容易导致内存碎片化,如果数据不大的情况就没有必要了,数据才一个字节,指针都好几个字节了,所以又出现了压缩链表。压缩链表和整数数组都是尽

2021-08-26 15:51:03 145

原创 MVCC你真的懂了吗

MVCC你真的懂了吗预先要了解的知识丢失修改问题是两个事务的写操作互相影响,导致一个事务的修改操作被另外一个事务修改,违背了事务的隔离性脏读是指读到未提交的数据不可重复读是指一个事务读到另外一个事务提交的事务,指的是update和delete幻读是指一个事务读到了另外一个事务插入或者删除的数据,然后发现数据行数不对了,强调的是insert,当然我觉得delete也算隔离级别读未提交读已提交可重复读串行化为什么需要MVCC机制?可能有些人说是为了实现隔离级别,但是难道没了 MV

2021-08-23 12:25:39 348

原创 Redis字符串SDS

SDSSDSSDS本质上就是char *,但是因为有了表头sdshdr结构的存在,所以SDS比传统C字符串在某些方面更加优秀。一般传统C字符串是有结束符的,遇到’\0‘则认为已经到达末尾,忽略结尾以后的所有字符。**SDS表头的buf被定义为字节数组,判断是否到达字符串结尾的依据是表头的len成员。**因此获取字符串长度时间复杂度为O(1)。总结下sds的特点是:可动态扩展内存、二进制安全、快速遍历字符串 和与传统的C语言字符串类型兼容。SDS结构体:struct __attribute__

2021-08-22 21:18:26 147

原创 Kafka无消息丢失

Kafka无消息丢失Kafka的消息丢失有几种情况生产者程序丢失消息消费者程序丢失消息Kafka本省弄丢了消息我们一一来说:生产者程序丢失了消息场景是你的Producer向Kafka发消息,但是发现Kafka没有保存解决方案:一定要使用producer.send(msg,callback),带回调通知的发送API在有错误的情况下,要根据情况做处理消费者程序丢失消息Kafka本身平时消费的时候都是默认提交offset的所以有可能存在我们消费的时候有问题,但是又默认提交了,导致消息

2021-08-18 22:57:13 76

原创 谈谈Synchronized的锁升级机制?

谈谈Synchronized的锁升级机制?一般来说的流程为无锁->偏向锁->轻量级锁->重量级锁偏向锁在无锁竞争的情况下,为了减少代价,引入偏向锁。当线程1访问代码块并获取锁对象时,会在java对象头和栈帧中记录偏向的锁的threadID,因为偏向锁不会主动释放锁,因此以后线程1再次获取锁的时候,需要比较当前线程的threadID和Java对象头中的threadID是否一致,如果一致(还是线程1获取锁对象),则无需使用CAS来加锁、解锁;如果不一致(其他线程,如线程2要竞争锁对

2021-08-18 16:43:13 208

原创 Kafka无消息丢失

Kafka无消息丢失Kafka的消息丢失有几种情况生产者程序丢失消息消费者程序丢失消息Kafka本省弄丢了消息我们一一来说:生产者程序丢失了消息场景是你的Producer向Kafka发消息,但是发现Kafka没有保存解决方案:一定要使用producer.send(msg,callback),带回调通知的发送API在有错误的情况下,要根据情况做处理消费者程序丢失消息Kafka本身平时消费的时候都是默认提交offset的所以有可能存在我们消费的时候有问题,但是又默认提交了,导致消息

2021-08-15 16:02:07 116

原创 ConcurrentHashMap一生之敌

ConcurrentHashMap一生之敌已经是不得不掌握的一个容器了1.7Segment数组,Segment里面包括HashEntryHashEntry组成是数组加链表final Segment<K,V>[] segments;transient Set<K> keySet;transient Set<Map.Entry<K,V>> entrySet;Segment组成static final class Segment<K,

2021-08-14 16:59:28 119

原创 CopyOnWirte思想

CopyOnWirte思想CopyOnWrite指在"写"的时候不直接"写"源数据,而是把数据拷贝一份进行修改,然后再通过悲观锁或者乐观锁的方式写回。主要就是为了让在“读”的时候不加锁。因为一般来说读写是互斥的,写的过程中我们如果读可能读到脏数据,但是如果我们拷贝一份去修改再写回,那么只有写回的这一步是线程不安全的,因为修改的时候是操作的副本。那么我们要解决两个问题:写回的操作要线程安全写回的操作要happens-before于读的操作解决写回操作的线程安全 public boolean

2021-08-14 10:43:50 115

原创 Reentrantlock源码轻解读

说说Reentrantlock[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-NWcPLVER-1628841643632)(C:\Users\DELL\Desktop\java\md文档\images\image-20210811210757974.png)]ReentrantLock是继承lock,并在内部定义了一个内部类Sync的实现方式一般来说我们自定义锁也是一个这样的方式我们先看看Lock接口常用的方法是lock(),unlock(),lock()不可以被

2021-08-13 16:04:07 68

原创 实在是太难写的HashMap

HashMap我们首先看看HashMap中开头的一大段注释吧! /* * This map usually acts as a binned (bucketed) hash table, but * when bins get too large, they are transformed into bins of * TreeNodes, each structured similarly to those in * java.util.TreeMap. 当bins过大时,他们会转变为

2021-08-10 21:49:32 82

原创 浅谈ArrayList

ArrayList室友问了个问题,为什么要有ArrayList?其实这个问题很显而易见,因为数组有容量限制,我们需要一个类似数组并且能自动改变容量的容器类。概述ArrayList实现了List接口,是顺序容器,即元素存放的数据与放进去的顺序相同,允许放入null元素,底层通过**「数组实现」**。除该类未实现同步外,其余跟Vector大致相同。每个ArrayList都有一个容量(capacity),表示底层数组的实际大小,容器内存储元素的个数不能多于当前容量。当向容器中添加元素

2021-08-10 19:30:56 82

原创 说说泛型擦除

说说泛型擦除 public static void main(String[] args) throws NoSuchMethodException, InvocationTargetException, IllegalAccessException { ArrayList<String> list1 = new ArrayList<String>(); list1.add("abc"); ArrayList<Integer

2021-08-10 19:30:00 145

原创 论坛项目核心功能点

论坛项目核心功能点分布式情况下的session采用方案:Jwt+RedisJwt工具类,用于生成jwt和解析jwtpackage com.yxh.island.util;/****包含 headerjwt的头部承载两部分信息: 声明类型,这里是jwt 声明加密的算法 通常直接使用 HMAC SHA256playload载荷就是存放有效信息的地方。这个名字像是特指飞机上承载的货品,这些有效信息包含三个部分 标准中注册的声明 公共的声明 私有的声

2021-08-09 11:35:36 297

原创 MySQL相关

MySQL相关MySQL锁SELECT xxx 查询语句正常情况下为快照读,不加锁;SELECT xxx LOCK IN SHARE MODE 语句为当前读,加 S 锁;SELECT xxx FOR UPDATE 语句为当前读,加 X 锁;DML 语句(INSERT、DELETE、UPDATE)为当前读,加 X 锁;DDL 语句(ALTER、CREATE 等)加表级锁,且是隐式提交不能回滚;在不同的事务隔离级别下,会有不同的锁机制,也可以说是通过不同的锁机制实现了不同的事务隔离级别。在 R

2021-08-06 22:33:27 67

原创 Redis相关

Redis相关RDB文件的创建与载入SAVE和BGSAVE都可以用于生成RDB文件SAVE命令会阻塞Redis服务器进程,直到RDB文件创建为止,在服务器进程阻塞期间,服务器不能处理任何命令请求BGSAVE命令会派生出一个子进程,然后由子进程负责创建RDB文件,服务器进程(父进程)继续处理命令请求RDB文件用于保存和还原Redis服务器所有数据库中的所有键值对数据RDB是一个经过压缩的二进制文件,由多个部分组成AOF持久化命令追加服务器在执行一个写命令之后,会以协议格式将被执行的写命

2021-08-06 14:23:58 90

原创 Redis浅谈 SDS

SDSSDS本质上就是char *,但是因为有了表头sdshdr结构的存在,所以SDS比传统C字符串在某些方面更加优秀。一般传统C字符串是有结束符的,遇到’\0‘则认为已经到达末尾,忽略结尾以后的所有字符。**SDS表头的buf被定义为字节数组,判断是否到达字符串结尾的依据是表头的len成员。**因此获取字符串长度时间复杂度为O(1)。总结下sds的特点是:可动态扩展内存、二进制安全、快速遍历字符串 和与传统的C语言字符串类型兼容。SDS结构体:struct __attribute__ ((__

2021-08-02 19:28:01 362

原创 论坛项目MySQL分析优化

论坛项目MySQL分析优化根据功能分类优化主页展示板块,以及板块的最后修改时间的一条帖子select a.bid,bname,parentid,total ,tid ,title , date_format(modifytime,'%Y-%m-%d %H:%I:%S') as recentmodifytime ,uname from (select board.bid,bname,parentid,count(tid) as total FROM board left join topic

2021-07-28 16:40:19 98

原创 简述顺序一致性和线性一致性

顺序一致性和线性一致性首先要知道线性一致性是更早出现的,问题在于解决多核计算机多线程得内存可见性问题。顺序一致性则是线性一致性的升级顺序一致性任意一种可能的执行的结果和某一种所有的处理器的操作按照顺序排列执行的结果是一样的,并且每个独立的处理器的操作都会按照程序指定的顺序出现在操作队列中。假设线程p1的执行顺序为A->B->C线程p2的执行顺序为D->E->F顺序保证性可以保证其他的所有线程见到的顺序是这两个线程指定的顺序。可能是D->E->F->

2021-07-05 20:35:09 3181 2

原创 选择排序NS图

2021-06-10 16:49:01 2556 1

原创 Springboot流式下载与预览文件

Springboot流式下载与预览文件1.流式下载 @RequestMapping(value = "/precede", method = RequestMethod.GET) public ResponseEntity<InputStreamResource> Test02(String path) throws Exception { //下面两行,初始化hdfs配置连接 ResponseEntity<InputStreamResourc

2021-06-08 20:16:10 3230

原创 java特点

1.  Java语言的主要特点:    1. 跨平台性   所谓的跨平台性,是指软件可以不受计算机硬件和操作系统的约束而在任意计算机环境下正常运行。这是软件发展的趋势和编程人员追求的目标。之所以这样说,是因为计算机硬件的种类繁多,操作系统也各不相同,不同的用户和公司有自己不同的计算机环境偏好,而软件为了能在这些不同的环境里正常运行,就需要独立于这些平台。而在Java语言中, Java自带的虚拟机很好地实现了跨平台性。 Java源程序代码经过编译后生成二进制的字节码是与平台无关的,但是可被Java虚拟机识

2021-01-22 15:53:26 199

原创 java基础之面向对象和面向过程的区别

简单的来说:面向过程,程序的一步步过程面向对象,将程序分为几大块面向过程:性能高,不易维护面向对象:性能低,易维护,易维护、易复用、易扩展,由于面向对象有封装、继承、多态性的特性,可以设计出低耦合的系统,使系统 更加灵活、更加易于维护举个例子如果要形象的对于面向程序和面向对象做出去别的话,就类似于蛋炒饭和盖浇饭,蛋炒饭是一步一步炒的,不管先放蛋还是先放饭,最后都是混在一起的。而盖浇饭则是将饭而菜分开炒,最后把菜盖在饭上就行了。很明显,盖浇饭相比于蛋炒饭来说,更易菜饭分离,容易解耦,可维护性

2021-01-22 15:43:50 146

原创 centos7安装mysql8

准备工作1.查看是否有安装过mysqlrpm -qa | grep -i mysql12.删除mysqlyum -y remove MySQL-*1一般用rpm -e 的命令删除mysql,这样表面上删除了mysql,可是mysql的一些残余程序仍然存在,并且通过第一步的方式也查找不到残余,而yum命令比较强大,可以完全删除mysql.(ps:用rpm删除后再次安装的时候会提示已经安装了,这就是rpm没删除干净的原因)3.把所有出现的目录统统删除find / -name mysql

2020-12-27 22:36:29 91

原创 让linux云服务器后台运行spring项目(screen安装和使用)

安装screenyum install screen命令进行安装安装完成之后使用下面命令创建一个终端进程,name是名称自定义screen -S test这个时候会进入test这个进程在里面输入想要运行的spring项目即可输完后,按下ctrl+A,然后按下D就可以将此窗口挂起并退出,进程仍然会执行想要查看screen窗口有哪些的话,输入下面的命令screen -ls然后就可以看到图片中的内容使用screen -r name命令就可以进入挂起的端口注意name可以是screen的名字

2020-12-07 16:48:41 289

原创 `java.lang.NoSuchMethodError: javax.persistence.spi.PersistenceUnitInfo.getValidationMode()`错误解决

在写微服务项目piclib时的时候,启动服务端的时候,报错了java.lang.NoSuchMethodError: javax.persistence.spi.PersistenceUnitInfo.getValidationMode()tk.mybatis会自动引用依赖引入persistence-api-1.0.jar包,而persistence-api-1.0.jar的PersistenceUnitInfo类中并没有getValidationMode()方法,而在springboot(2.1.0.R

2020-11-27 20:25:20 771

原创 后台启动kafka

在linux系统下开启kafka服务器的方法是进到kafka目录下后打出命令bin/kafka-server-start.sh config/server.properties &就可以后台启动了

2020-11-27 20:17:21 319

原创 八皇后问题

八皇后问题,是一个古老而著名的问题,是回溯算法的典型案例。该问题是国际西洋棋棋手马克斯·贝瑟尔于1848年提出:在8×8格的国际象棋上摆放八个皇后,使其不能互相攻击,即任意两个皇后都不能处于同一行、同一列或同一斜线上,问有多少种摆法。 高斯认为有76种方案。1854年在柏林的象棋杂志上不同的作者发表了40种不同的解,后来有人用图论的方法解出92种结果。计算机发明后,有多种计算机语言可以解决此问题。...

2020-03-17 16:11:57 256

原创 迷宫回溯算法

这里写自定义目录标题欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入欢迎使用Ma...

2020-03-14 16:54:48 415

空空如也

空空如也

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

TA关注的人

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