自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

fearless的博客

记录学习的点滴~~

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

原创 【MySQL】not in遇上null的坑

not in 相当于and条件,只要有一个false,那么所有的都为false,所以查出来的数据固定为空。用于检查子查询是否至少会返回一行数据,强调的是是否返回结果集,不要求知道返回什么。以子查询表B的结果集为驱动,在表A中依次遍历查询id是否在子查询的结果集中存在。当not in中包含null,发现无论怎么括号里是否满足,都查询不到结果。解决方案:not in中的数据过滤掉空值 或 使用not exists。以外表表A为驱动表,若括号内的子查询有任意数据返回,表示当前行匹配成功。

2024-03-06 16:52:01 545

原创 【JAVA】23种设计模式

什么是设计模式?设计模式,是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性、程序的重用性。

2024-02-28 14:34:55 338

原创 【MySQL】如何处理DB读写分离数据不一致问题?

在互联网中大型项目中,读写分离应该是我们小伙伴经常听说的,这个主要解决大流量请求时,提高系统的吞吐量。因为绝大部分互联网产品都是读多写少,大部分都是读请求,很小部分是写请求。1) 一个主库负责写请求,更新数据 2) 两个从库负责读请求,可以提高系统吞吐量 3) 主库和从库之间同步数据为什么产生数据不一致上图中业务流程。

2024-02-20 21:00:34 1282

原创 【MySQL】事务的一致性究竟怎么理解?

众所周知,事务有四大特性:原子性、一致性、隔离性、持久性,除了一致性,其他三类特性都很好理解。而关于一致性的解释有点让人头疼,我查了很多文章,大多类似:事务的执行必须使数据库处于一致状态(不能破坏完整性约束)。:事务的一致性是指,事务的执行必须使得数据库从一个一致状态转换到另一个一致状态,这里的一致状态是指:数据库中的所有数据都是已完成的事务提交后的结果。“中的"一致性",是指事务作用于数据库之后,数据库呈现出的状态,而不是事务的状态。换句话说,事务的原子性成就了事务的一致性。管理的是对数据库进行了。

2024-02-20 15:37:31 663

原创 【数据结构-源码分析】HashMap源码分析(超级详细)

HashMap基于哈希表的Map接口实现,是以key-value存储形式存在。(除了不同步和允许使用 null 之外,HashMap 类与 Hashtable 大致相同)。在 JDK1.8 中,HashMap 是由数组 + 链表 + 红黑树构成,新增了红黑树作为底层数据结构,结构变得复杂了,但是效率也变的更高效。当一个值中要存储到Map的时候会根据Key的值来计算出他的hash,通过哈希来确认到数组的位置,如果发生哈希碰撞就以链表的形式存储。当链表长度过长时,HashMap会把这个链表转换成红黑树来存储。

2023-01-03 11:26:44 1006 1

原创 【Myatis】mybatis的缓存机制

mybatis中提供查询缓存,用于减轻数据库的压力,提高数据库的性能。mybatis提了了一级缓存和二级缓存一级缓存是SQLSession级别缓存,在操作数据库时都需要构造SQLSession对象,在对象中有一个数据结构(HashMap)用于存储缓存数据,不同的SQLSession之间的缓存数据区域是互不影响的。mapper。...

2022-07-20 16:33:34 288

原创 【MySQL】sql调优实战教学

结果出乎我们的意料啊,type=index是预期的,但是key呢它却用的是account用的是我们的唯一键并不是用的我们的主键,然后Extra走的是索引了。优化器试图排除数据行地原因是它排除数据行的速度越快那么找到与条件匹配的数据行越快,因此查询优化器会根据它的一些分析和判断的标准决定走哪个索引,这里他没选择主键索引大致原因是由于密集索引的叶子节点把其它列的数据呢,也都存放到了叶子节点当中,在这里变成它的一个缺点了。这样查询的效率呢因为我们的数据都放在一起了,它的效率呢会比稀疏索引要低。...

2022-07-20 10:37:00 696

原创 【JVM】一文搞懂常见GC算法

GC目的程序运行过程中可能会产生许多垃圾对象,持续占用内存会造成内存泄漏,最终可能导致内存溢出,迫使系统中断运行。首先需要搞懂内存泄漏和内存溢出的概念!!!内存泄漏(memoryleak)是指程序在申请内存后,无法释放已申请的内存空间,导致系统无法及时回收内存并且分配给其他进程使用。通常少次数的内存无法及时回收并不会到程序造成什么影响,但是如果在内存本身就比较少获取多次导致内存无法正常回收时,就会导致内存不够用,最终导致内存溢出。内存溢出(outofmemory)。)。)。内存效率。。.........

2022-07-18 23:36:49 5196 4

原创 【Redis】分布式场景下Redis高可用部署方案

深入学习Redis面试题你的Redis怎么做持久化的?在介绍Redis高可用之前,先说明一下在Redis的语境中高可用的含义。我们知道,在web服务器中,高可用是指服务器可以正常访问的时间,衡量的标准是在多长时间内可以提供正常服务(99.9%、99.99%、99.999%等等)。但是在Redis语境中,高可用的含义似乎要宽泛一些,除了保证提供正常服务(如主从分离、快速容灾技术),还需要考虑数据容量的扩展、数据安全不会丢失等。在Redis中,实现高可用的技术主要包括持久化、复制、哨兵和集群持久化。...

2022-07-15 17:53:29 785

原创 【JUC】什么是用户态及内核态?

Linux 中的每个进程有2个运行栈 分别用于用户态和内核态 执行,内核栈 就是用于执行内核程序的堆栈进程即可以在用户空间运行,又可以在内核空间运行,在用户空间运行时 称之为用户态内核空间的时候 成为内核态.........

2022-06-10 17:07:16 218

原创 【JUC】并发编程(全量整理)

CPU分时轮转调度机制:时间片即CPU分配给各个程序的时间,每个线程被分配一个时间段,称作它的,即该进程允许运行的时间,使各个程序从表面上看是同时进行的。如果在时间片结束时进程还在运行,则CPU将被剥夺并分配给另一个进程。如果进程在时间片结束前阻塞或结束,则CPU当即进行切换。而不会造成CPU资源浪费。在宏观上:我们可以同时打开多个应用程序,每个程序并行不悖,同时运行。但在微观上:由于只有一个CPU,一次只能处理程序要求的一部分,如何处理公平,一种方法就是引入时间片,每个程序轮流执行。进程:内存中正在运行的

2022-06-03 22:01:28 724

原创 【Netty】Netty 对 Java NIO 空轮询问题的处理

文章内容1. Java NIO 在 Linux 平台的空轮询问题1.1 空轮询问题的介绍1.1.1 空轮询的现象1.1.2 空轮询的原因1.2 空轮询的处理思路1.2.1 JDK 层面1.2.2 应用程序层面2. Netty 的应对措施1. Java NIO 在 Linux 平台的空轮询问题1.1 空轮询问题的介绍1.1.1 空轮询的现象Linux 下使用 IO 复用一般默认就是 epoll,Java NIO 在 Linux 平台默认使用的也是 epoll 机制。但是 JDK 中对接底层 epoll

2022-05-25 18:20:52 271

原创 【JAVA】IO多路复用之select、poll、epoll详解

文章内容1、概述2、selector3、poll4、epoll5、select、poll、epoll区别1、概述I/O 多路复用技术通过把多个 I/O 的阻塞复用到同一个 select 的阻塞上,从而使得系统在单线程的情况下可以同时处理多个客户端请求。与传统的多线程/多进程模型比,I/O 多路复用的最大优势是系统开销小,系统不需要创建新的额外进程或者线程,也不需要维护这些进程和线程的运行,降低了系统的维护工作量,节省了系统资源。其应用场景如下:服务器需要同时处理多个处于监听状态或者多个连接状态的套

2022-05-25 17:06:28 2818

原创 【日常】Redis报错org.springframework.data.redis.RedisConnectionFailureExceptionjava.net.SocketTimeoutExcep

具体报错信息:ERROR 760004 — [http-nio-443-exec-463]o.s.boot.web.support.ErrorPageFilter : Forwarding to error page from request [/***/***] due to exception [java.net.SocketTimeoutException: Read timed out; nested exception is redis.clients.jedis.exceptions.Jed

2022-05-20 10:57:04 1286

原创 【Spring】解决aop日志切面时Post请求报Stream closed问题

spring boot项目,在过滤器、拦截器或自定义aop做统一处理时,获取了request中的inputstream来获取RequestBody里数据,获取之后在Controller里使用@RequestBody注解再获取就报错:Stream closed。这是因为HttpServletRequest中的inputstream是不可重复读的。这块有个疑问:监听器、过滤器、 拦截器、 AOP的执行顺序是什么呢???如果监听器、过滤器、 拦截器、 AOP都存在,则它们的执行顺序为:监听器 => .

2022-05-07 17:19:19 1341

原创 【工具】chrome浏览器的各个历史版本下载

https://blog.csdn.net/Yunwubanjian/article/details/86539432?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522165076676616782248541309%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fall.%2522%257D&request_id=165076676616782248541309&am

2022-04-24 10:24:16 7175

原创 【工具】Virtual Box 修改默认虚拟机位置,防止C盘爆掉(Mac 与 Linux 就请不要看了)

在 Windows 操作系统下,Vagrant 安装完成以后会默认把 Home 目录设为C:\Users\用户名.vagrant.d,然后所有的相关文件如 boxes 都会放在这里。一般不建议把该目录放在 C 盘下,有以下几个原因:很占系统盘空间重装系统的话需要备份下来碰到中文用户名容易出现各种问题所以我们需要把 Home 指向其它非系统分区的英文目录。其实很简单,只要设定VAGRANT_HOME环境变量就可以了。首先,设置环境变量当然,也可以命令添加setx VAGR

2022-04-23 10:13:29 1768

原创 【TCP/IP协议】tcp 协议中发送窗口的大小是如何设置的?

窗口机制分类在TCP协议当中窗口机制分为两种:1.固定的窗口大小2.滑动窗口固定窗口存在的问题我们假设这个固定窗口的大小为1,也就是每次只能发送一个数据,只有接收方对这个数据进行了确认后才能发送第二个数据。在图中我们可以看到,发送方每发送一个数据接收方就要给发送方一个ACK对这个数据进行确认。只有接收了这个确认数据以后发送方才能传输下个数据存在的问题:如果窗口过小,当传输比较大的数据的时候需要不停的对数据进行确认,这个时候就会造成很大的延迟如果窗口过大,我们假设发送方一次发送100个数据,

2022-04-16 17:38:15 10848

原创 【TCP/IP协议】如何理解TCP协议是流式协议?

简单来说,流是传输的流,主要指的就是TCP把要传的数据视为字节流。至于这些字节是什么含义,TCP不管,由你上层应用操心。另外还有一个原因是,TCP是可靠传输,所以TCP可以用来传送一个大文件,此时这个大文件就是一串有序的字节,也叫做字节流。UDP是不可靠传输,所以通常情况没人会用UDP来发送文件,只会用来发一些很短的消息,能塞到一个UDP报文段内的。比如DNS查询报文。所以往往使用UDP发的就只是一个报文一个报文的短消息,且每个消息都是一个完整的个体,之间没关联,从这个意义上讲,UDP发的就不是流。..

2022-04-16 17:12:16 3060

原创 【HTTP协议】HTTP请求/响应报文结构

文章内容HTTP请求/响应报文结构请求报文如果觉得有帮助,麻烦动动手指点赞加关注💗💗💗 非常感谢!!!HTTP请求/响应报文结构请求报文HTTP 请求报文由请求行、请求头、空行和请求包体(body)组成。如下图所示:真实示例:GET / HTTP/1.1 Host: www.baidu.comConnection: keep-aliveCache-Control: max-age=0sec-ch-ua: " Not A;Brand";v="99", "Chromium";v="

2022-04-14 14:30:34 8471

原创 【Mybatis】mysql插入记录后返回自增主键id的方法和注意事项

插入记录后返回自增主键idmapping文件的insert标签中加入如下标签,指明主键名(keyProperty),执行方式(order)为新增完再返回执行,因为只有插入完成后获取的id才是最新的,返回值是Integer类型,也就是新增后返回的自增主键id。<selectKey keyProperty="id" order="AFTER" resultType="java.lang.Integer"> SELECT LAST_INSERT_ID() </selectKe

2022-04-13 16:12:24 3564

原创 【日常】物联网——嵌入式程序OTA升级功能总结

文章内容前一阵子做的物联网项目中,新增了个设备升级的功能。遇到一些问题,总结如下。大致流程是升级操作涉及到嵌入式端及客户端,通过客户端传来的固件程序,分传给各个硬件设备。升级的实际操作是硬件程序那边来完成的,服务端只是将升级包准确无误的分发给它们,需要解决网络传输及客户端响应等一系列问题,同时自己也存在一些知识方面的不足:升级过程较为耗时,如何作客户端方面的接口响应?网编涉及到多线程比较多,刚好对多线程方面的知识比较欠缺?Netty原理是否大致了解?多设备情况下是否会发生丢包问题(丢包后的重试、

2022-03-21 13:42:55 5348

原创 【数据结构与算法】数据结构与算法之字符串String(Java版)

文章内容一、串1. 定义2. 存储结构3. 基本操作4. KMP算法及改进如果觉得有帮助,麻烦动动手指点赞加关注💗💗💗 非常感谢!!!有想看源码的小伙伴请移步这里👉https://gitee.com/fearless123/demo/tree/master/src/main/java/com/ma一、串1. 定义   串(也称字符串)是由n(n>=0)个字符串组成的有限序列。抽象含义的串一般记为s=“s1,s2…sn”,其中s为串名,n 为串长度,双引号括起来的字符序列成为串值。每个字符s

2022-03-04 10:15:02 564

原创 【数据结构与算法】数据结构与算法之树Tree(Java版)

文章内容一、树的基本概念1. 定义2. 基本术语3. 存储结构二、二叉树1. 定义2. 主要性质如果觉得有帮助,麻烦动动手指点赞加关注???????????? 非常感谢!!!有想看源码的小伙伴请移步这里????https://gitee.com/fearless123/demo/tree/master/src/main/java/com/ma一、树的基本概念1. 定义将具有一对多关系的集合中的元素按照上图中的逻辑结构存储,整个存储形状从逻辑结构上看就像现实生活中一颗倒着生长的树,毕竟形象生动,所

2022-02-24 09:59:45 1570 1

原创 【数据结构与算法】数据结构与算法之栈Stack与队列Queue(Java版)

文章内容一、栈1. 概念2. 顺序栈3. 链栈如果觉得有帮助,麻烦动动手指点赞加关注???????????? 非常感谢!!!有想看源码的小伙伴请移步这里????https://gitee.com/fearless123/demo/tree/master/src/main/java/com/ma一、栈1. 概念“栈” 是线性表中具备FIFO特性的存储结构。与学习过的线性表的不同之处在于栈只能从表的固定一端对数据进行插入和删除操作,另一端是封死的。FIFO:当我们使用栈来存储数据元素时。栈对数据元

2022-02-16 11:05:08 623

原创 【数据结构与算法】数据结构与算法之线性表Linear table(Java版)

文章内容绪论1、概述2、时间复杂度有想看源码的小伙伴请移步这里????https://gitee.com/fearless123/demo/tree/master/src/main/java/com/ma绪论1、概述数据之间的相互关系成为逻辑结构。通常分为四类基本结构:集合:结构中的数据元素除了同属于一种类型外,别无其它关系。线性结构:结构中的数据元素之间存在一对一的关系。树形结构:结构中的数据元素之间存在一对多的关系。图状结构或网状结构:结构中的数据元素之间存在多对多的关系。数据

2022-01-19 14:13:38 640

原创 【数据结构-源码分析】ArrayList、LinkedList源码解读

暂无

2022-01-19 14:07:00 652

原创 【架构师-系统设计】理解分布式系统的CAP和BASE理论

文章内容CAP理论概述CAP原文请移步到???? 【技术杂记】如何正确的理解CAP和BASE理论?CAP理论概述CAP原理是现在分布式系统的基石,好比是分布式领域的牛顿定律。所有的分布式系统都是基于CAP理论来考虑和设计的In 2002, Seth Gilbert and Nancy Lynch of MIT published a formal proof of Brewer’s conjecture. The theorem states that networked shared-dat

2022-01-14 14:15:01 1259

原创 【运维】docker镜像打包上传

动手之前,我们先到docker官网注册一个账号,这样我们才能将制作好的镜像上传到docker仓库,打开https://hub.docker.com/注册过程比较简单,这里不过多说明。下面我们开始制作:1、查看本地所有镜像docker images2、打包要提交的镜像docker commit test_ubuntu yourhubid/nginx:latest #注意这块对包名命名有要求,yourhubid改成自己的账号,否则无法上传3、登录到远程docker仓库docker login

2022-01-13 16:08:00 269

转载 【JUC】简单谈谈AQS及其原理

文章内容1、AQS简介2、AQS思想3、AQS的大致实现思路1、AQS简介AQS全名:AbstractQueuedSynchronizer,是并发容器J.U.C(java.util.concurrent)下locks包内的一个类。它实现了一个FIFO(FirstIn、FisrtOut先进先出)的队列。底层实现的数据结构是一个双向链表sync queue:同步队列,是一个双向链表。包括head节点和tail节点。head节点主要用作后续的调度。 Condition queue:非必须,单向链表。当程序

2021-12-30 11:27:57 194

原创 【JUC】线程状态及各状态下与锁和CPU的关系

线程的状态Thread.State枚举类型中定义了线程的6种状态:NEW,RUNNABLE,BLOCKED,WAITING,TIMED_WAITING和TERMINATED。线程在某一时刻只能拥有一种状态,但是在线程的整个生命周期,线程的状态会发生变化。各状态的说明NEW:线程已经被创建,但还没调用start()。此时的线程是不可运行的,CPU将不会为其分配时间;RUNNABLE:当新创建的线程调用了start(),线程便进入了RUNNABLE状态。RUNNABLE状态是指可以获得CPU运行时间的

2021-12-29 11:30:57 572

原创 【JUC】线程基础总结

基本概念CPU时间片轮转机制:时间片即CPU分配给各个程序的时间,每个线程被分配一个时间段,称作它的时间片,即该进程允许运行的时间,使各个程序从表面上看是同时进行的。如果在时间片结束时进程还在运行,则CPU将被剥夺并分配给另一个进程。如果进程在时间片结束前阻塞或结束,则CPU当即进行切换。而不会造成CPU资源浪费。在宏观上:我们可以同时打开多个应用程序,每个程序并行不悖,同时运行。但在微观上:由于只有一个CPU,一次只能处理程序要求的一部分,如何处理公平,一种方法就是引入时间片,每个程序轮流执行。CP

2021-12-29 10:42:10 228

原创 【日常】springboot项目读取properties文件乱码问题

在使用@ConfigurationProperties或@Value加载全局配置文件application.properties时,会有中文乱码问题,可以修改idea配置:设置成UTF-8编码,同时勾选上Transparent native-to-ascii conversion框!!!然后就没问题了...

2021-12-16 11:33:00 660

原创 【Netty】Netty教程——优化及源码(四)

文章内容1. 优化1.1 扩展序列化算法1.2 参数调优1)CONNECT_TIMEOUT_MILLIS2)SO_BACKLOG3)ulimit -n4)TCP_NODELAY5)SO_SNDBUF & SO_RCVBUF6)ALLOCATOR7)RCVBUF_ALLOCATOR1.3 RPC 框架1)准备工作2)服务器 handler3)客户端代码第一版4)客户端 handler 第一版5)客户端代码 第二版6)客户端 handler 第二版2. 源码分析2.1 启动剖析2.2 NioEventL

2021-12-08 13:59:13 186

原创 【Netty】Netty教程——netty进阶(三)

文章内容1. 粘包与半包1.1 粘包现象1.2 半包现象1.3 现象分析1.4 解决方案方法1,短链接方法2,固定长度方法3,固定分隔符方法4,预设长度2. 协议设计与解析2.1 为什么需要协议?2.2 redis 协议举例2.3 http 协议举例2.4 自定义协议要素编解码器???? 什么时候可以加 @Sharable3. 聊天室案例3.1 聊天室业务介绍3.2 聊天室业务-登录3.3 聊天室业务-单聊3.4 聊天室业务-群聊3.5 聊天室业务-退出3.6 聊天室业务-空闲检测连接假死1. 粘包与半包

2021-12-06 17:27:24 389

原创 【Netty】Netty教程——nio基础(一)

nio基础教程

2021-12-06 17:08:31 313

原创 【Netty】Netty教程——netty入门(二)

    前段时间刷了下黑马的netty教学视频,记录一下学习过程中踩过的坑,有问题欢迎大家下方留言哈~1、

2021-12-06 14:42:03 551

原创 【安装部署】maven打包部署拆分配置文件

pom文件中添加到build中 <!-- 打包资源文件 --> <plugin> <artifactId>maven-resources-plugin</artifactId> <executions> <execution> <id

2021-10-20 17:52:10 248

原创 【安装部署】Mysql——密码重置总结(5.7及8.0版本)

mysql重置密码1.1 MySQL 5.*版本2.1 MySQL 8.*版本1.1 MySQL 5.*版本2.1 MySQL 8.*版本select version() from dual; -- 查看版本2.1.1 登录mysql 进入bin目录 mysql -u root -p 输入密码进入命令行2.1.2 查询用户密码select host,user,authentication_string from mysql.user; -- 查询用户密码命令host: 允许用户登录的ip‘

2021-10-20 09:35:38 332

原创 【安装部署】virtualBox+vagrant本地快速搭建开发环境

Vagrant是什么Vagrant是一款可自动化安装和配置虚拟机的软件。目前市面上个人PC的主流操作系统不是Windows就是MacOS。对于这些用户,如果需要用Linux环境进行开发或学习,使用虚拟机无疑是最方便的选择。而Vagrant更进一步,可以让你通过编写一个Vagrantfile来控制虚拟机的启动、虚拟机网络环境的配置、虚拟机与主机间的文件共享,以及启动后自动执行一些配置脚本,比如自动执行一个shell script来安装一些必备的开发工具,如Mysql。这意味着,当你需要在多台机器间同步开发进

2021-09-16 10:52:00 515

空空如也

空空如也

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

TA关注的人

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