自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(218)
  • 资源 (5)
  • 收藏
  • 关注

原创 Mybatis 的工作原理及流程

MyBatis的底层操作封装了JDBC的API,MyBatis的工作原理以及核心流程与JDBC的使用步骤一脉相承,MyBatis的核心对象(SqlSession,Executor)与JDBC的核心对象(Connection,Statement)相互对应。本文的核心观点是:从JDBC入手并立足于JDBC,才能深入的理解MyBatis的工作原理以及核心流程。

2022-10-23 16:51:03 3261 1

原创 Java 中怎么输入一个未知长度的 int 型数组元素

但有些题目中的长度是可变的,不能事先固定数组长度。首先输入字符串的数组,中间用 逗号或者空格分隔,然后获取字符串长度,作为int[] 初始数组的长度,再将String字符串数组转化为int数组。//使用模式输入的格式。System.out.println("请输入一组整数,以逗号分隔:");//String 类型的数组。...

2022-08-26 21:47:07 2685

原创 面试题总结(4) Tcp / Ip 四层模型,三次握手四次挥手,多一次少一次可以不,NIO的实现原理

A收到B的连接释放报文段后,对此发出确认报文段(ACK=1,seq=u+1,ack=w+1),A进入TIME-WAIT(时间等待)状态。A数据传输完毕需要断开连接,A的应用进程向其TCP发出连接释放报文段(FIN=1,序号seq=u),并停止再发送数据,主动关闭TCP连接,进入FIN-WAIT-1状态,等待B的确认。当B数据传输完毕后,B发出连接释放报文段(FIN=1,ACK=1,序号seq=w,确认号ack=u+1),B进入LAST-ACK(最后确认)状态,等待A的最后确认。...

2022-07-18 17:20:52 518

原创 面试题目总结(3)UDP怎么可靠,Java的集合类

例如类java.lang.Object,它存放在rt.jar之中,无论哪一个类加载器要加载这个类,最终都是委派给处于模型最顶端的启动类加载器进行加载,因此Object类在程序的各种类加载器环境中都能够保证是同一个类。有时候客户端数据上传需要突破本身TCP公平性的限制来达到高速低延时和稳定,也就是说要用特殊的流控算法来压榨客户端上传带宽,例如直播音视频推流,这类场景用RUDP来实现不仅能压榨带宽,也能更好地增加通信的稳定性,避免类似TCP的频繁断开重连。虽然非线程安全,但是这些类的性能较好。...

2022-07-17 17:01:36 482

原创 面试题目总结(视图和存储过程的区别,集合的应用场景,springboot)

它是事先存储好的SQL语句,放在数据库端,需要使用时直接调用存储过程就可以执行相应的SQL语句。存储过程可带参数,也可返回结果。存储过程是SQL语句和可选控制流语句的预编译集合执行速度更快;允许模块化设计;提高系统安全性;减少网络流量。(总结存储过程是写一段sql语句,存储在数据库端,需要使用时直接调用存储过程就可以执行相应的SQL语句)...

2022-07-16 15:49:16 366

原创 Redis 内存回收(策略:过期Key 处理,内存淘汰策略)

redis 之所以性能比较强,最主要的原因就是基于内存的存储。然而单节点的redis 他的内存大小是不宜过大的,否则会影响持久化和主从同步性能。经过配置文件可修改redis 的最大内存,然而当内存使用达到上限时,就无法再次存储更多的数据,所以redis 有两种策略 expire 设置过期时间 有了应用之后,我们要思考两个问题分析答案:我们要看数据库的结构并不是在ttl 结束时就立马删除,而是在访问一个 Key 的时候,检查过期时间,如果过期才删除 存在的问题:有很多的过期key 但是呢有没有再次被访

2022-07-10 15:59:48 423

原创 Redis通信协议(resp)

可以改造发送的这个命令的函数,改为通用的 测试

2022-07-08 20:20:16 270 1

原创 redis 的单线程和内部的网络模型

redis 通过使用IO多路复用来提升网络性能的,它支持很多种的实现方式,在Linux 上实现主要是前面讲三种(select , poll, epoll),但是 redis 不仅只在Linux上使用,其他系统上也是使用的,所以redis 在他们的实现之上,再次做了一次封装,对外直接提供一些接口 API, 他的大概流程,也是和web 的相似的, 这里是函数 调用的是api 对应的源码:...

2022-07-08 19:05:21 318

原创 MySQL中 ACID 及他底层实现原理

首先要明白事务的概念: 他是sql执行的一个基本单位,可以是一个简单的SQL 也可以是一组复杂 的SQL ,事务就保证 这些操作,要么全部成功,要么全部失败, 事务的 开始与结束 可以由用户来控制。如果用户没有显示的定义事务,则由数据库管理系统按默认规定自动划分事务。在 SQL 中,定义事务的语句一般有三条:(1)BEGIN TRANSACTION(2)COMMIT(3)ROLLBACK事务通常是以BEGIN TRANSACT

2022-07-07 19:26:21 320

原创 面试题总结(2) IO模型,集合,NIO 原理,缓存穿透,击穿雪崩

阻塞IO、非阻塞IO、多路复用IO、信号驱动IO, 异步IO (在我前面文章有详细讲解IO的几种模型 阻塞,非阻塞,io多路复用,信号驱动和异步io_是小晴晴呀的博客-CSDN博客 Java中的集合类分为4大类,分别由4个接口来代表, 它们是Set、List、Queue、Map。其中,Set、List、Queue、都继承自Collection接口。 Set代表无序的、元素不可重复的集合。 List代表有序的、元素可以重复的集合。 Queue代表先进先出(FIFO)的队列。 Map代表具有映射关

2022-07-02 18:57:19 143

原创 IO的几种模型 阻塞,非阻塞,io多路复用,信号驱动和异步io

推荐黑马的redis 网络模型, 避免用户应用 导致冲突 甚至 内核的崩溃,用户的英语和内核是要分离开的 按照进程的寻址控件,划分两部分 :内核态,用户态 ​​​​​​ 在性能方面,虽然第一阶段 是非阻塞的,但是他要不断地询问,会导致cpu 空转,性能下降 高性能的,比较复杂,面试中也比较常用, 这里有个新的章节讲解 https://blog.csdn.net/qq_52252193/article/details/125546614整个过程都是非阻塞的,

2022-06-30 20:16:50 270

原创 详细讲解面试的 IO多路复用,select,poll,epoll

接上篇文章讲解,优化 IO 的两个数据操作 根据监听FD 的不同,分为了三个模式 select ,poll ,epoll 下面具体讲解他们的差异和实现 执行的流程 不在复制数组,使用句柄的方式,创建的结构体 红黑树存总的事件,链表存就绪的事件,实现 找到具体的编号 能够真正的自定义 监听的个数.........

2022-06-30 19:33:54 268

原创 面试题目总结(1) https中间人攻击,ConcurrentHashMap的原理 ,serialVersionUID常量,redis单线程,

https是 对http内容的加密,中间人攻击是指攻击者通过与客户端和客户端的目标服务器同时建立连接,作为客户端和服务器的桥梁,处理双方的数据,整个会话期间的内容几乎是完全被攻击者控制的。攻击者可以拦截双方的会话并且插入新的数据内容。扩展 https 的工作过程 因为 hashmap 如果插入元素超过了容量的范围(负载因子决定)就会 触发扩容操作, 他会把原来的数组内容 重新 hash 到新的扩容数组中, 在多线程的情况下,jdk 1.7 采用头插法插入链表元素,会造成 扩容死链,jdk

2022-06-29 16:10:52 311

原创 git和svn的优缺点和区别

Git的优点1、分布式,每个参与开发的人的电脑上都有一个完整的仓库,不担心硬盘出问题;2、在不联网的情况下,照样可以提交到本地仓库,可以查看以往的所有log,等到有网的时候,push到远程即可;3、非常强大的分支管理功能。4、Git的内容的完整性要优于SVN: GIT的内容存储使用的是SHA-1哈希算法。这能确保代码内容的完整性,确保在遇到磁盘故障和网络问题时降低对版本库的破坏。Git缺点:权限管理不是很方便,需要安装插件gitolite,配置有点麻烦,或者直接使用gitlab.

2022-06-28 16:56:06 440

原创 http状态码的含义

http状态码的含义

2022-06-21 15:45:00 1313

原创 MySQL中的字段约束条件

数据完整性(Data Integrity)是指数据的精确性(Accuracy)和可靠性(Reliability)。它是防止数据库中存在不符合语义规定的数据和防止因错误信息的输入输出造成无效操作或错误信息而提出的。为了保证数据的完整性,SQL规范以约束的方式对表数据进行额外的条件限制。从以下四个方面考虑::例如,同一个表中,不能存在两条完全相同无法区分的记录:例如:年龄范围0-1...

2022-06-20 14:30:00 2742

原创 MySQL数据类型精讲

常见数据类型的属性,如下:整数类型一共有 5 种,包括 TINYINT、SMALLINT、MEDIUMINT、INT(INTEGER)和 BIGINT。它们的区别如下表所示:整数类型的可选属性有三个:2.2.1 M: 表示显示宽度,M的取值范围是(0, 255)。例如,int(5):当数据宽度小于5位的时候在数字前面需要用字符填满宽度。该项功能需要配合“”使用,表示用“0”填满宽...

2022-06-20 08:15:00 122

原创 PriorityQueue(优先队列) 结合leetcode23. 合并K个升序链表 (趁热打铁,应用在算法,简化直观)

PriorityQueue ,leetcode 算法,合并K个升序链表 结果输出,是顺序的,他存入的时候就是顺序的,自己debug 尝试 PriorityQueue类提供了6种在Java中构造优先级队列的方法

2022-06-19 20:59:33 248

原创 MySQL中常用的聚合函数 说明及使用

聚合(或聚集、分组)函数,它是对一组数据进行汇总的函数,输入的是一组数据的集合,输出的是单个值。什么是聚合函数聚合函数作用于一组数据,并对一组数据返回一个值。 聚合函数类型AVG()SUM()MAX()MIN()COUNT() 聚合函数语法聚合函数不能嵌套调用。比如不能出现类似“AVG(SUM(字段名称))...

2022-06-19 14:12:12 792

原创 MySQL中常用的单行函数 说明及使用

mysql中常用函数的讲解使用

2022-06-19 13:51:39 167

原创 Zookeeper从入门到精通(全)

本文主要阐述zookeeper分布式锁案例算法Paxos解决一致性算法的问题ZAB协议进一步解决一致性算法等1. 概念zookeeper主要是文件系统和通知机制文件系统主要是用来存储数据通知机制主要是服务器或者客户端进行通知,并且监督基于观察者模式设计的分布式服务管理框架,开源的分布式框架特点一个leader,多个follower的集群集群只要有半数以上包括半数就可正常服务,一般安装奇数台服务器全局数据一致,每个服务器都保存同样的数据,实时更新更新的请求顺序保持顺序.

2022-06-14 19:17:41 910 1

原创 java的NIO详细基础

一. NIO 基础non-blocking io 非阻塞 IO1. 三大组件1.1 Channel & Bufferchannel 有一点类似于 stream,它就是读写数据的双向通道,可以从 channel 将数据读入 buffer,也可以将 buffer 的数据写入 channel,而之前的 stream 要么是输入,要么是输出,channel 比 stream 更为底层#mermaid-svg-KVSWCuA4WRjvP6lw {font-family:"trebuchet ms",

2022-06-09 17:20:33 234 2

原创 Java中的正则表达式

一、概念正则表达式,又称规则表达式。(英语:Regular Expression,在代码中常简写为regex、regexp或RE),计算机科学的一个概念。正则表达式通常被用来检索、替换那些符合某个模式(规则)的文本。在众多语言中都可以支持正则表达式,如Perl、PHP、Java、Python、Ruby等。当然在Java中也可以通过处理字符串的方式达到检索,替换文本字符串的目的,但是有了正则表达式写代码更加简洁,通常两三行代码就可以达到目的,当然这也是建立在熟悉正则表达式的基础之上的。...

2022-06-08 11:43:49 4180

原创 Spring事务的传播级别

1) PROPAGATION_REQUIRED ,默认的spring事务传播级别,使用该级别的特点是,如果上下文中已经存在事务,那么就加入到事务中执行,如果当前上下文中不存在事务,则新建事务执行。所以这个级别通常能满足处理大多数的业务场景。2)PROPAGATION_SUPPORTS ,从字面意思就知道,supports,支持,该传播级别的特点是,如果上下文存在事务,则支持事务加入事务,如果没有事务,则使用非事务的方式执行。所以说,并非所有的包在transactionTemplate.execut...

2022-06-08 11:23:34 5252

原创 在Java中>、>>、>>>三者的使用和区别

在JAVA中1.“>” 表示大于,如:if(a>b)…结果是boolean类型2.">>“在c++中,移位运算符有双目移位运算符:<<(左移)和>>(右移)。移位运算符组成的表达式也属于算术表达式,其值为算术值。左移运算是将一个二进制位的操作数按指定移动的位数向左移位,移出位被丢弃,右边的空位一律补0。右移运算是将一个二进制位的操作数按指定移动的位数向右移动,移出位被丢弃,左边移出的空位或者一律补0,或者补符号位,这由不同的机器而定。在使用补码作为机器

2022-06-07 16:27:35 2592 5

原创 前后端分离项目的错误总结

could not resolve dependencies for project 自定义的模块加了坐标也没用 父项目,先clear 在packging 打包,有的模块要install2.注意配置swagger 的设置,添加依赖,配置类, 项目中注解配置中文名3.注意这里的技巧(post 一般都是需要修改数据 传入json 数据,get 一般都是查询一类的)) 4. 程序包com.xff.yygh.common.result不存在5. 写一个controller 接口时

2022-06-03 10:30:00 706

原创 在 IDEA 中使用 Debug,简直太爽了。详细图文,博主制作了小视频教你如何使用 Debug

1. Debug 简介为何要用 Debug?眼看 12 月马上就要过去了,张三正在大学宿舍床上躺着,此刻的他既开心又发愁。开心的是马上就能和女朋友一起跨年了,发愁的是自己 java 期末大作业一堆错误。张三英语不好,看不懂控制台的报错语句,所以越想越烦躁。突然,张三好像有了灵感,打开 IDEA 兴奋地敲了起来。正参与五黑的室友见状,不免有些好奇,都跑去看他的电脑:原来张三正在复制粘贴一堆打印语句。一室友实在看不下去了,问他:“你调试程序为啥不用 Debug ?”“你写这么..

2022-05-12 11:00:00 5363 4

原创 实战,聊聊工作中使用了哪些设计模式

平时我们写代码呢,多数情况都是流水线式写代码,基本就可以实现业务逻辑了。如何在写代码中找到乐趣呢,我觉得,最好的方式就是:使用设计模式优化自己的业务代码。今天跟大家聊聊日常工作中,我都使用过哪些设计模式。1.策略模式1.1 业务场景假设有这样的业务场景,大数据系统把文件推送过来,根据不同类型采取不同的解析方式。多数的小伙伴就会写出以下的代码:if(type=="A"){ //按照A格式解析 }else if(type=="B"){ //按B格式解析}else{

2022-05-12 09:45:00 205

原创 HashMap夺命14问,你能坚持到第几问?

目录1. HashMap的底层数据结构是什么?2. 说一下HashMap的特点3. 解决hash冲突的办法有哪些?HashMap用的哪种?4. 为什么要在数组长度大于64之后,链表才会进化为红黑树5. 为什么加载因子设置为0.75,初始化临界值是12?6. 哈希表底层采用何种算法计算hash值?还有哪些算法可以计算出hash值?7. 当两个对象的hashCode相等时会怎样8. 何时发生哈希碰撞和什么是哈希碰撞,如何解决哈希碰撞?9. HashMap的put方法流程1

2022-05-11 17:15:00 99

原创 idea 需要了解的快捷键

Ctrl快捷键 介绍Ctrl + F 在当前文件进行文本查找 (必备)Ctrl + R 在当前文件进行文本替换 (必备)Ctrl + Z 撤销 (必备)Ctrl + Y 删除光标所在行 或 删除选中的行 (必备)Ctrl + X 剪切光标所在行 或 剪切选择内容Ctrl + C 复制光标所在行 或 复制选择内容Ctrl + D 复制光标所在行 或 复制选择内容,并把复制内容插入光标位置下面 (必备)Ctrl + W 递进式选择代码块。可...

2022-05-11 10:03:05 91

原创 社招三年后端21连问

大家好,,有位朋友工作三年,去面试,给大家整理一下面试题,并附上答案。Mysql索引在什么情况下会失效 MySql的存储引擎InnoDB与MyISAM的区别 Mysql在项目中的优化场景,慢查询解决等 Mysql有什么索引,索引模型是什么 B-树与B+树的区别?为什么不用红黑树 Mysql主从同步怎么做 乐观锁与悲观锁的区别? 聊聊binlog日志 redis 持久化有哪几种方式,怎么选? redis 主从同步是怎样的过程? redis 的 zset 怎么实现的? Redis 过期

2022-05-10 13:30:00 75

原创 来来来,咱们聊一下 JWT。安全验证的知识 两篇文章就够了

目录1. 为什么要用 JWT ?认证2.什么是 JWT3. JWT 的结构3.1 标头3.2 载荷3.3 签名4. JWT 的认证流程5. JWT 的使用6. JWT 工具类7. JWT 案例7.1 用户登录7.1.1 创建 SpringBoot 项目7.1.2 引入依赖7.1.3 application.yml7.1.4 创建用户表7.1.5 用户实体类7.1.6 Service 和实现类7.1.7 Dao 和 mapper.xm

2022-05-10 10:45:00 858

原创 面试详细讲解 Lock 和Synchronized 的使用区别

五个角度:1.构成 2. 使用方法 3.是否可被打断 4.加锁是否公平 5.是否绑定条件记住:锁使用的三部曲 资源类 ,判断,干活,通知线程操作资源类, 判断使用while 防止出现虚假唤醒...

2022-05-09 17:26:24 66

原创 优秀的后端应该有哪些开发习惯?

前言根据朋友的见识过各种各样的代码,优秀的、垃圾的、不堪入目的、看了想跑路的等等,所以这篇文章记录一下一个优秀的后端 Java 开发应该有哪些好的开发习惯。拆分合理的目录结构受传统的 MVC 模式影响,传统做法大多是几个固定的文件夹 controller、service、mapper、entity,然后无限制添加,到最后你就会发现一个 service 文件夹下面有几十上百个 Service 类,根本没法分清业务模块。正确的做法是在写 service 上层新建一个 modules 文件夹,在 mo

2022-05-09 16:11:36 82

原创 Shiro安全框架【快速入门】及上手应用

目录Shiro 简介为什么是 Shiro?Apache Shiro Features 特性High-Level Overview 高级概述Shiro 认证过程Shiro 授权过程自定义 RealmShiro 加密加盐 + 多次加密SpringBoot 简单实例第一步:新建SpringBoot项目,搭建基础环境第二步:新建实体类第三步:配置 Shiro第四步:准备 DAO 层和 Service 层第五步:controller层第六步:准备页面..

2022-05-09 16:06:20 287

原创 Idea内存占用过高解决方法

问题描述大多数人都知道使用idea时,发现idea内存消耗比较严重,尤其开启了idea后,CPU占比可以直接飙升到100%(这主要体现在刚启动的时候),系统的内存高达80%以上,甚至风扇呼呼作响,于是开始找各种解决方案。目前,就我个人电脑来说,开机后,系统内存有23%左右,此时没有开启任何软件。个人电脑配置调整之后开启idea之前,内存使用情况,内存有27%左右开启idea之后,内存使用情况,暂未运行项目,内存有39%左右idea同时运行4个微服务项目,内存有.

2022-05-08 17:52:54 61924 6

原创 小厂后端的十连问面试,教你如何应答

大家好,最近一位朋友去面试,分享了一份面试真题,我整理了一下答案给大家。如果有不正确的,欢迎指出哈,一起进步。Redis的key和value可以存储的最大值分别是多少? 怎么利用Redis实现数据的去重? Redis什么时候需要序列化?Redis序列化的方式有哪些? MySQL的B+树的高度怎么计算? 线程池的状态有哪些?获取多线程并发执行结果的方式有哪些? 线程池原理?各个参数的作用。 ThreadLocal的使用场景有哪些?原理?内存泄漏? kafka是如何保证消息的有序性? Nac

2022-05-08 13:49:29 293

原创 高并发之 CAS的使用和底层原理

CAS在了解CAS之前,我们要先要了解一下atomic(java.util.concurrent.atomic),为什么在jdk1.5开始引入了atomic包呢?Atomic1、为什么要使用Atomic类在多线程和高并发环境中,我们经常会对一个int型的共享变量值进行+1或-1操作,例如:int count = 0;// ...count ++;但是这种写法,在多线程共同修改共享变量的情况下,会出现问题,导致实际值和预期值不符,即上面的代码是线程不安全的。因此我们需要实现线程的同步

2022-05-04 15:56:36 428

原创 关于redis 集群和 分布式存储案例真题

1.关于 大厂分布式存储面试题(分布式存一亿个数据的 算法思想) 分布式存储的算法案列面试题_是小晴晴呀的博客-CSDN博客2. 关于3主3从redis集群环境的搭建 docker安装6台 redis 实现分布式主从复制环境搭建_是小晴晴呀的博客-CSDN博客3.主从容错切换迁移案例 redis 主从容错切换迁移案例_是小晴晴呀的博客-CSDN博客4.主从扩容案例docker的主从扩容案例_是小晴晴呀的博客-CSDN博客5.主从缩容案例 docker主从缩容...

2022-05-03 18:13:33 1107

原创 docker的主从扩容案例

目录1.新建6387、6388两个节点+新建后启动+查看是否8节点2.进入6387容器实例内部3.将新增的6387节点(空槽号)作为master节点加入原集群(还没分配槽)4.检查集群情况第1次​5.重新分派槽号6.检查集群情况第2次7.为主节点6387分配 从节点63888.检查集群情况第3次要实现的扩容 (最重要的是对应 数据库的槽位怎么重新分配) -- > 一定记住 (前面的均匀分摊新的节点所需,从自己槽位前面,减去给新的节点)1.新...

2022-05-02 12:24:25 667

操作系统实验 的可视化源码 ,

一个剪发师的多线程 页面模拟显示 一个Monitor 生产者和消费者 一个ReaderWriter 读写锁的 可视化演示 (运行说明 : 实验是实验 jFrame 的可视化编写的,把代码粘贴进入项目 鼠标右键 以 applet 的形式运行代码) 不清楚的可以私聊我

2022-06-16

计算机操作系统的实验报告

一个剪发师的多线程 页面模拟显示 一个Monitor 生产者和消费者 一个ReaderWriter 读写锁的 可视化演示

2022-06-16

牛客中总结的面试知识概括整理,

对牛客上面试的总结知识点,和做题目的知识点记录; 牛客中关于spring的题目,所涉及的知识点总结

2022-04-27

编译原理实验指导.docx

词法分析程序设计(构词法),语法分析程序设计(递归下降分析,LL(1),中间代码生成程序设计(算符优先分析法) 源代码,以及实验分析过程

2021-12-13

页面的后台管理系统代码.zip

构建一个完整的后台管理系统页面,

2021-12-07

空空如也

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

TA关注的人

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