<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[qq_45839708的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/qq_45839708</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; qq_45839708]]></copyright><item><title><![CDATA[升级为重量级锁，锁重入会导致锁释放？]]></title><link>https://blog.youkuaiyun.com/qq_45839708/article/details/125816471</link><guid>https://blog.youkuaiyun.com/qq_45839708/article/details/125816471</guid><author>qq_45839708</author><pubDate>Sat, 16 Jul 2022 11:34:25 +0800</pubDate><description><![CDATA[近日，看到有些文章说“产生竞争时，轻量级锁升级为重量级锁，此时持锁线程执行CAS操作(锁重入)会失败，所以将会提前释放锁”首先，持锁线程可能连同步块都未执行完成就平白无故将锁释放掉，怎么想都不合理接下来的实验将证明上述“提前释放锁”结论的错误性实验结果表明，即使锁已经升级为重量级锁，持锁线程执行锁重入操作并未发生阻塞，所以也就不存在释放锁一说锁已经升级，但是持锁线程可能确实并不知情，本人猜测在锁重入或者解锁时发现已经升级为重量级锁httpshttps。.........]]></description><category></category></item><item><title><![CDATA[秒杀重点(后端)]]></title><link>https://blog.youkuaiyun.com/qq_45839708/article/details/122946919</link><guid>https://blog.youkuaiyun.com/qq_45839708/article/details/122946919</guid><author>qq_45839708</author><pubDate>Tue, 15 Feb 2022 16:10:29 +0800</pubDate><description><![CDATA[目录

1.tomcat 线程池参数优化

2.分布式 nginx 反向代理

3.数据库分服务器

4.多级缓存（查询）

5. nginx lua（最前置热点缓存）

6. 消息中间件（抢单）

7.流量削峰

8.防刷限流



1.tomcat 线程池参数优化


① 最大连接数
	② 超时时间


2.分布式 nginx 反向代理


① 多服务器，分布式分流


3.数据库分服务器


① MySQL(索引优化，字段分表减少锁竞争)
	② redis


4.多级缓存（查询）


① redi.]]></description><category></category></item><item><title><![CDATA[操作系统（二）网络系统]]></title><link>https://blog.youkuaiyun.com/qq_45839708/article/details/122708692</link><guid>https://blog.youkuaiyun.com/qq_45839708/article/details/122708692</guid><author>qq_45839708</author><pubDate>Sun, 30 Jan 2022 11:55:39 +0800</pubDate><description><![CDATA[网络系统

零拷贝



I/O 多路复用

高性能网络模式
]]></description><category></category></item><item><title><![CDATA[操作系统（一）硬件结构]]></title><link>https://blog.youkuaiyun.com/qq_45839708/article/details/122652888</link><guid>https://blog.youkuaiyun.com/qq_45839708/article/details/122652888</guid><author>qq_45839708</author><pubDate>Sun, 23 Jan 2022 23:16:09 +0800</pubDate><description><![CDATA[目录

硬件结构

CPU

存储器

层次结构&amp;&amp;关系

内存映射到 Cache 的方案

CPU Cache 读取过程&amp;&amp;数据结构

如何优化语句，让 CPU 跑得更快？

CPU 缓存一致性

Cache 数据写入

保证缓存一致性？

总线嗅探

MESI 协议

伪共享

中断

什么是中断？

什么是软中断？

数字的二进制

为什么负数要用补码表示？

十进制小数如何转二进制？

计算机如何存小数？

0.1 + 0.2 == 0.3 吗？......]]></description><category></category></item><item><title><![CDATA[线程池原理]]></title><link>https://blog.youkuaiyun.com/qq_45839708/article/details/122598604</link><guid>https://blog.youkuaiyun.com/qq_45839708/article/details/122598604</guid><author>qq_45839708</author><pubDate>Thu, 20 Jan 2022 19:35:23 +0800</pubDate><description><![CDATA[目录

属性

核心属性

阻塞队列

饱和策略

状态属性

状态分类

状态转换

新增任务

处理流程





属性

核心属性


int corePoolSize：核心线程数量
	int maximumPoolSzie：最大线程数量
	long keepAliveTime：非核心线程的最大空闲等待时间
	boolean allowCoreThreadTimeOut：核心线程也使用最大空闲等待时间；默认 false
	BlockingQueue&lt;Runnable&gt; workQueu..]]></description><category></category></item><item><title><![CDATA[MySQL基础篇（三）锁]]></title><link>https://blog.youkuaiyun.com/qq_45839708/article/details/122431496</link><guid>https://blog.youkuaiyun.com/qq_45839708/article/details/122431496</guid><author>qq_45839708</author><pubDate>Tue, 11 Jan 2022 17:51:02 +0800</pubDate><description><![CDATA[目录

全局锁

概念

场景

提问

备份为什么需要加锁？

为什么不用一致性读？

为什么不使用 set global readonly = true？

表级锁

表锁

元数据锁（meta data lock，MDL）

提问

MDL 对小表结构变更的影响？

如何安全变更小表结构？

MDL 读读不互斥，为什么对同一张表进行更新会互斥？

当备库用 single-transaction 做逻辑备份的时候，如果从主库的 binlog 传来一个 DDL 语句会怎么样？

行锁

两阶段...]]></description><category></category></item><item><title><![CDATA[MySQL基础篇（二）事务隔离 & 索引]]></title><link>https://blog.youkuaiyun.com/qq_45839708/article/details/122394811</link><guid>https://blog.youkuaiyun.com/qq_45839708/article/details/122394811</guid><author>qq_45839708</author><pubDate>Mon, 10 Jan 2022 01:06:43 +0800</pubDate><description><![CDATA[事务隔离

ACID


Atomicity：原子性

Consistency：一致性

Isolation：隔离性

Durability：持久性


隔离级别

读未提交（read uncommitted）


一个事务还未提交时，它所做的变更可以被其他事务看到。


读提交（read committed）


一个事务已提交时，它所做的变更才可以被其他事务看到。

在 SQL 语句开始执行时，创建视图（访问时，以视图的逻辑结果为准）。


可重复读（repeatable read）


一个事务执..]]></description><category></category></item><item><title><![CDATA[MySQL基础篇（一）查询 & 更新]]></title><link>https://blog.youkuaiyun.com/qq_45839708/article/details/122371158</link><guid>https://blog.youkuaiyun.com/qq_45839708/article/details/122371158</guid><author>qq_45839708</author><pubDate>Sat, 08 Jan 2022 00:31:08 +0800</pubDate><description><![CDATA[目录

一条SQL查询如何执行

MySQL基本架构

执行流程

连接器

查询缓存

分析器

优化器

执行器



一条SQL更新 如何执行

redo log(重做日志)

binlog(归档日志)

提问

为什么需要两种日志？

两种日志的区别？

update 流程？

如何让数据库恢复到半个月前任意一秒的状态？

为什么需要两阶段提交？



一条SQL查询如何执行

MySQL基本架构




Server 层：核心服务功能，所有内置函数(日期、时间、数学)，所有跨引擎功能都在...]]></description><category></category></item><item><title><![CDATA[ConcurrentHashMap 1.7 & 1.8]]></title><link>https://blog.youkuaiyun.com/qq_45839708/article/details/121914326</link><guid>https://blog.youkuaiyun.com/qq_45839708/article/details/121914326</guid><author>qq_45839708</author><pubDate>Wed, 15 Dec 2021 22:15:29 +0800</pubDate><description><![CDATA[juc重点]]></description><category></category></item><item><title><![CDATA[运输层（三）—— TCP 三次握手 & 四次挥手]]></title><link>https://blog.youkuaiyun.com/qq_45839708/article/details/121827465</link><guid>https://blog.youkuaiyun.com/qq_45839708/article/details/121827465</guid><author>qq_45839708</author><pubDate>Thu, 09 Dec 2021 18:13:48 +0800</pubDate><description><![CDATA[运输层（三）—— TCP 三次握手 & 四次挥手]]></description><category></category></item><item><title><![CDATA[全网首发——云服务器搭建redis集群坑点(最全)]]></title><link>https://blog.youkuaiyun.com/qq_45839708/article/details/121802578</link><guid>https://blog.youkuaiyun.com/qq_45839708/article/details/121802578</guid><author>qq_45839708</author><pubDate>Wed, 08 Dec 2021 22:20:35 +0800</pubDate><description><![CDATA[目录

前言

安全防范

说明

在云服务器开启端口时，一定要指定授权ip。

再在命令行配置(指定ip -&gt; 访问指定端口)或者直接修改配置

一定要开防火墙!

防火墙操作相关博客

集群启动不了

集群启动一直等待

外网IP创建集群，节点配置文件中存在内网IP



前言


本人使用五台云服务器搭建 redis 集群。


安全防范

说明


亲身经历！不做好安全防范，服务器全部变成矿场。


在云服务器开启端口时，一定要指定授权ip。





再在命令行配置(指定ip -...]]></description><category></category></item><item><title><![CDATA[运输层（二）]]></title><link>https://blog.youkuaiyun.com/qq_45839708/article/details/121035220</link><guid>https://blog.youkuaiyun.com/qq_45839708/article/details/121035220</guid><author>qq_45839708</author><pubDate>Fri, 29 Oct 2021 18:09:39 +0800</pubDate><description><![CDATA[面向连接的运输：TCP

TCP 连接

TCP 报文段结构

序号和确认号

可靠数据传输

现象

超时间隔加倍

快速重传

GBN + SR

流量控制(速率不匹配)

原因

接收方

发送方

拥塞控制

拥塞原因

拥塞代价

与流量控制区别

拥塞控制方法

TCP控制感知拥塞

拥塞控制算法

算法介绍......]]></description><category></category></item><item><title><![CDATA[运输层（一）]]></title><link>https://blog.youkuaiyun.com/qq_45839708/article/details/120977546</link><guid>https://blog.youkuaiyun.com/qq_45839708/article/details/120977546</guid><author>qq_45839708</author><pubDate>Wed, 27 Oct 2021 09:57:48 +0800</pubDate><description><![CDATA[运输层与网络层关系


1.运输层为运行在不同主机上的应用进程之间提供了逻辑通信(logic communication)。

2.网络层提供了主机之间的逻辑通信。

3.运输层协议能够提供的服务往往受限于底层网络层协议；运输层能否为进程间应用层报文提供时延或带宽保证，取决于网络层能否为主机间运输层报文提供时延或带宽保证。

4.运输层分组称为"报文段"；网络层为"数据报"


多路复用与分解

定义


1.多路复用：源主机从不同套接字收集数据块，并为每个数据块封装上首部信息从而生成报文段，将报文...]]></description><category></category></item><item><title><![CDATA[应用层（二）]]></title><link>https://blog.youkuaiyun.com/qq_45839708/article/details/120976239</link><guid>https://blog.youkuaiyun.com/qq_45839708/article/details/120976239</guid><author>qq_45839708</author><pubDate>Tue, 26 Oct 2021 17:09:50 +0800</pubDate><description><![CDATA[SMTP

P2P文件分发

视频流和内容分发网
]]></description><category></category></item><item><title><![CDATA[应用层（一）]]></title><link>https://blog.youkuaiyun.com/qq_45839708/article/details/120941321</link><guid>https://blog.youkuaiyun.com/qq_45839708/article/details/120941321</guid><author>qq_45839708</author><pubDate>Sun, 24 Oct 2021 22:05:02 +0800</pubDate><description><![CDATA[应用层协议


定义了运行在不同端系统上的应用程序如何相互传递报文。

1.交换的报文类型，如请求报文和响应报文

2.报文类型的语法，如报文中各个字段及它们是如何描述的

3.字段的语义，即字段中信息的含义

4.确定一个进程何时以及如何发送报文，对报文进行响应的规则


HTTP

概况

定义


超文本传输协议(HyperText Transfer Protorcol，HTTP)；运行在不同端系统中的客户程序与服务器程序通过交换 HTTP 报文进行会话；HTTP 定义了报文的结构以及客户和服务器进.]]></description><category></category></item><item><title><![CDATA[volatile（二）模式与规则]]></title><link>https://blog.youkuaiyun.com/qq_45839708/article/details/119857282</link><guid>https://blog.youkuaiyun.com/qq_45839708/article/details/119857282</guid><author>qq_45839708</author><pubDate>Mon, 23 Aug 2021 19:31:38 +0800</pubDate><description><![CDATA[两阶段终止

说明


Two Phase Termination 在线程 t1 中优雅地终止线程 t2

错误方法：

① 使用线程对象的 stop 方法，会真正杀死线程，但是线程持有锁的话，它就无法释放，其他线程也就无法获得锁

② System.exit(int) 会将整个进程杀死


利用共享标记打断



@Slf4j(topic = "c.TwoPhaseTermination")
public class TwoPhaseTermination {
    private Thread t..]]></description><category></category></item><item><title><![CDATA[volatile（一）作用与原理]]></title><link>https://blog.youkuaiyun.com/qq_45839708/article/details/119842564</link><guid>https://blog.youkuaiyun.com/qq_45839708/article/details/119842564</guid><author>qq_45839708</author><pubDate>Sun, 22 Aug 2021 19:09:06 +0800</pubDate><description><![CDATA[Java 内存模型


① JMM(Java Memory Model)，定义了主存(共享)、工作内存(私有)抽象概念，底层对应着 CPU 寄存器、缓存、硬件内存、CPU 指令优化等

② JMM 体现在以下几个放面(并发安全也如此)：

  2.1 原子性：保证指令不受到线程上下文切换影响(指令交错)

  2.2 可见性：保证指令不受CPU 缓存影响

  2.3 有序性：保证指令不受 CPU 指令并行优化影响(指令重排)


可见性

退不出的循环



    static ...]]></description><category></category></item><item><title><![CDATA[线程活跃性 && ReentrantLock]]></title><link>https://blog.youkuaiyun.com/qq_45839708/article/details/119808852</link><guid>https://blog.youkuaiyun.com/qq_45839708/article/details/119808852</guid><author>qq_45839708</author><pubDate>Thu, 19 Aug 2021 21:48:25 +0800</pubDate><description><![CDATA[目录



线程活跃状态

死锁

活锁

饥饿

ReentrantLock

特点

特点展示

可重入

可打断

可设置超时时间

可设置为公平锁

支持多个条件变量

解决死锁问题

线程活跃状态

死锁


当一个线程需要同时获取多把锁时，容易发生死锁。


@Slf4j(topic = "c.DeadLock")
public class DeadLock {
    public static void main(String[] args) {
        Object loc...]]></description><category></category></item><item><title><![CDATA[线程状态转换]]></title><link>https://blog.youkuaiyun.com/qq_45839708/article/details/119789539</link><guid>https://blog.youkuaiyun.com/qq_45839708/article/details/119789539</guid><author>qq_45839708</author><pubDate>Wed, 18 Aug 2021 22:04:28 +0800</pubDate><description><![CDATA[目录



总览

各种情况

情况 1：新建线程

情况 2：永久等待

情况 3：等待其他线程

情况 4：park &amp;&amp; unpark

情况 5：有时限等待

情况 6：有时限等待其他线程

情况 7：睡眠

情况 8：有时限 park

情况 9：竞争锁

情况 10：运行完毕

总览



各种情况

情况 1：新建线程


NEW --&gt; RUNNABLE

调用 t.start()


情况 2：永久等待


RUNNABLE &lt;--&gt; WAITING

线]]></description><category></category></item><item><title><![CDATA[并发编程 synchronized (七) wait / notify]]></title><link>https://blog.youkuaiyun.com/qq_45839708/article/details/119674621</link><guid>https://blog.youkuaiyun.com/qq_45839708/article/details/119674621</guid><author>qq_45839708</author><pubDate>Fri, 13 Aug 2021 19:32:31 +0800</pubDate><description><![CDATA[目录

wait / notify

介绍

wait 与 sleep 对比

保护性暂停(join 原理)

定义

实现

join 实现(带超时的 Guarded Object)

生产者/消费者

定义

实现



wait / notify

介绍




① wait：当 Thread3、Thread4 获得锁时，由于没有达到执行条件(Thread3 要锤子，Thread4 要扳手)；于是调用 wait，进入左边 WaitSet 等待(等人送工具，没人送会一直等)

② notif...]]></description><category></category></item></channel></rss>