
应试
文章平均质量分 83
写的更好
不是年少不疯狂,只是岁月太荒唐!
展开
-
网络第一篇
TCP三次握手过程TCP(传输控制协议)三次握手是指建立一个TCP连接时,需要客户端和服务器总共发送三个包以确认连接的建立。在这个过程中,客户端和服务器交换同步(SYN)和确认(ACK)消息,确保双方都准备好进行数据传输。第一次握手(SYN):客户端发送一个TCP的SYN标志位的数据包到服务器以初始化连接请求。在这个数据包中,客户端会随机选择一个序列号(Seq=x)。原创 2023-11-30 18:54:33 · 60 阅读 · 0 评论 -
Java并发第二篇锁
首先通过子类判断是否获取了锁,如果获取了就什么也不干。tryAcquire如果没有获取锁、通过线程创建节点加入同步队列的队尾。addWaiter当线程在同步队列中不断的通过自旋去获取同步状态,如果获取了锁,就把其设为同步队列中的头节点,否则在同步队列中不停的自旋等待获取同步状态 acquireQueued,shouldParkAfterFailedAcquire(Node pre,Node node),parkAndCheckInterrupt()原创 2023-11-28 20:06:18 · 743 阅读 · 0 评论 -
Java虚拟机第一篇
虚拟机栈本地方法栈程序计数器堆方法区字节码文件,内部包含了常量池方法区,内部包含了运行时常量池将字节码文件中的常量池加载到方法区就是运行时常量池。原创 2023-11-26 21:56:45 · 590 阅读 · 0 评论 -
Java并发第一篇
Java并发第一篇。原创 2023-11-26 21:52:26 · 57 阅读 · 0 评论 -
Java基础第一篇
Java基础第一篇。原创 2023-11-26 21:51:50 · 41 阅读 · 0 评论 -
框架之SpringBoot第一篇
Spring Boot 是 Spring 开源组织下的子项目,是 Spring 组件一站式解决方案,主要是简化了使用 Spring 的难度,简省了繁重xml的配置,提供了各种启动器,在运行过程中自定配置, 开发者能快速上手。原创 2023-11-26 21:50:07 · 47 阅读 · 0 评论 -
框架之Spring第一篇
三级缓存第一层缓存(singletonObjects):单例对象缓存,已经实例化并且属性赋值,这里的对象是成熟对象;第二层缓存(earlySingletonObjects):早期单例对象缓存,已经实例化但尚未属性赋值,这里的对象是半成品对象;第三层缓存(singletonFactories): 创建单例的工厂对象缓存解决循环依赖原理事务传播行为是为了解决业务层方法之间互相调用的事务问题,当一个事务方法被另一个事务方法调用时,事务该以何种状态存在。原创 2023-11-26 21:42:14 · 589 阅读 · 0 评论 -
中间件之Kafka第一篇
简介Apach Kafka是一款分布式流处理平台,用于实时构建流处理应用。它有一个核心的功能广为人知,即作为企业级的消息引擎被广泛使用。作用解耦:短信发送成功后,需要通知A、B、C、D等服务,我们只管发送到MQ不用耦合一个个通知其他服务。通道商回调通知短信发送情况,需要通知A、B、C、D等服务,我们只管发送到MQ不用耦合一个个通知其他服务。异步:用户注册后,发送短信和邮件,通过发送MQ异步消费的形式实现,可以减少接口的耗时。原创 2023-11-26 21:28:33 · 1033 阅读 · 0 评论 -
中间件之Redis第三篇集群
如果下线的是master,哨兵会向其它哨兵发送命令询问它们是否也认为该master主观下线,如果达到一定数目(即配置文件中的quorum)投票,哨兵会认为该master已经客观下线(odown,o就是Objectively —— 客观地),并选举领头的哨兵节点对主从系统发起故障恢复。接下来哨兵向主从数据库的sentinel:hello频道发送信息与同样监控这些数据库的哨兵共享自己的信息,发送内容为哨兵的ip端口、运行id、配置版本、master名字、master的ip端口还有master的配置版本。原创 2023-11-26 15:30:54 · 52 阅读 · 0 评论 -
中间件之Redis第二篇内存管理
redis 会将每个设置了过期时间的 key 放入到一个独立的字典中,以后会定期遍历这个字典来删除到期的 key。Redis 默认会每秒进行十次过期扫描(100ms一次),过期扫描不会遍历过期字典中所有的 key,而是采用了一种简单的贪心策略。1.从过期字典中随机 20 个 key;2.删除这 20 个 key 中已经过期的 key;3.如果过期的 key 比率超过 1/4,那就重复步骤 1;redis默认是每隔 100ms就随机抽取一些设置了过期时间的key,检查其是否过期,如果过期就删除。原创 2023-11-26 15:30:00 · 54 阅读 · 0 评论 -
中间件之Redis第一篇概念
应用程序读取数据的流程1. 用户线程一直阻塞等待2. 内核等待数据就绪3. 内核空间将数据拷贝到用户空间。原创 2023-11-26 15:26:24 · 75 阅读 · 0 评论 -
数据库之MySQL第三篇事务
每次事务更新数据的时候,都会生成一个新的数据版本,并 且把 transaction id 赋值给这个数据版本的事务 ID,记为 row trx_id。如果把事务 A 的查询语句 select * from t where id=1 修改一下,加上 lock in share mode 或 for update,也都可以读到版本号是 101 的数据,返回的 k 的值是 3。而事务 B 是当前读,必须要读最新版本,而且必须加 锁,因此就被锁住了,必须等到事务 C’释放这个锁,才能继续它的当前读。原创 2023-11-26 15:06:34 · 60 阅读 · 0 评论 -
数据库之MySQL第二篇锁
在下面的操作序列中,事务 B 的 update 语句执行时会是什么现象呢?假设字段 id 是表 t 的主键。这个问题的结论取决于事务 A 在执行完两条 update 语句后,持有哪些锁,以及在什么时候释放。你可以验证一下:实际上事务 B 的 update 语句会被阻塞,直到事务 A 执行 commit 之后,事务 B 才能继续执行。知道了这个答案,你一定知道了事务 A 持有的两个记录的行锁,都是在 commit 的时候才释放的。也就是说,这个就是两阶段锁协议。知道了这个设定,对我们使用事务有什么帮助呢?原创 2023-11-26 14:45:15 · 50 阅读 · 0 评论 -
数据库之MySQL第五篇安全与优化
what?SQL注入是一种常见的Web应用程序安全漏洞,攻击者通过在Web应用程序中注入恶意的SQL语句,从而实现对数据库的非法访问和操作。SQL注入可能会导致数据泄露、数据损坏、系统崩溃等严重后果,因此需要采取相应的措施来防范和解决。' OR '1'='1 【用户名输入】由于'1'='1'永远为真,因此上述SQL语句将返回所有用户的信息,攻击者就可以轻松地绕过登录验证,实现对系统的非法访问和操作。how?预编译SQL语句利用正则校验输入的合法性。原创 2023-11-26 15:13:21 · 56 阅读 · 0 评论 -
数据库之MySQL第四篇索引
索引分类查询计划。原创 2023-11-26 15:12:22 · 40 阅读 · 0 评论 -
数据库之MySQL第一篇概念
大体来说,MySQL 可以分为 Server 层和存储引擎层两部分。Server 层包括连接器、查询缓存、分析器、优化器、执行器等,涵盖 MySQL 的大多数核心服务功能,以及所有的内置函数(如日期、时间、数学和加密函数等),所有跨存储引擎的功能都在这一层实现,比如存储过程、触发器、视图等。而存储引擎层负责数据的存储和提取。其架构模式是插件式的,支持 InnoDB、MyISAM、Memory 等多个存储引擎。原创 2023-11-26 11:40:59 · 47 阅读 · 0 评论