自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 升级为重量级锁,锁重入会导致锁释放?

近日,看到有些文章说“产生竞争时,轻量级锁升级为重量级锁,此时持锁线程执行CAS操作(锁重入)会失败,所以将会提前释放锁”首先,持锁线程可能连同步块都未执行完成就平白无故将锁释放掉,怎么想都不合理接下来的实验将证明上述“提前释放锁”结论的错误性实验结果表明,即使锁已经升级为重量级锁,持锁线程执行锁重入操作并未发生阻塞,所以也就不存在释放锁一说锁已经升级,但是持锁线程可能确实并不知情,本人猜测在锁重入或者解锁时发现已经升级为重量级锁httpshttps。.........

2022-07-16 11:34:25 325 1

原创 秒杀重点(后端)

目录1.tomcat 线程池参数优化2.分布式 nginx 反向代理3.数据库分服务器4.多级缓存(查询)5. nginx lua(最前置热点缓存)6. 消息中间件(抢单)7.流量削峰8.防刷限流1.tomcat 线程池参数优化① 最大连接数 ② 超时时间2.分布式 nginx 反向代理① 多服务器,分布式分流3.数据库分服务器① MySQL(索引优化,字段分表减少锁竞争) ② redis4.多级缓存(查询)① redi.

2022-02-15 16:10:29 867 3

原创 操作系统(二)网络系统

网络系统零拷贝I/O 多路复用高性能网络模式

2022-01-30 11:55:39 1127 1

原创 操作系统(一)硬件结构

目录硬件结构CPU存储器层次结构&&关系内存映射到 Cache 的方案CPU Cache 读取过程&&数据结构如何优化语句,让 CPU 跑得更快?CPU 缓存一致性Cache 数据写入保证缓存一致性?总线嗅探MESI 协议伪共享中断什么是中断?什么是软中断?数字的二进制为什么负数要用补码表示?十进制小数如何转二进制?计算机如何存小数?0.1 + 0.2 == 0.3 吗?......

2022-01-23 23:16:09 897 1

原创 线程池原理

目录属性核心属性阻塞队列饱和策略状态属性状态分类状态转换新增任务处理流程属性核心属性int corePoolSize:核心线程数量 int maximumPoolSzie:最大线程数量 long keepAliveTime:非核心线程的最大空闲等待时间 boolean allowCoreThreadTimeOut:核心线程也使用最大空闲等待时间;默认 false BlockingQueue<Runnable> workQueu..

2022-01-20 19:35:23 454

原创 MySQL基础篇(三)锁

目录全局锁概念场景提问备份为什么需要加锁?为什么不用一致性读?为什么不使用 set global readonly = true?表级锁表锁元数据锁(meta data lock,MDL)提问MDL 对小表结构变更的影响?如何安全变更小表结构?MDL 读读不互斥,为什么对同一张表进行更新会互斥?当备库用 single-transaction 做逻辑备份的时候,如果从主库的 binlog 传来一个 DDL 语句会怎么样?行锁两阶段...

2022-01-11 17:51:02 655

原创 MySQL基础篇(二)事务隔离 & 索引

事务隔离ACIDAtomicity:原子性Consistency:一致性Isolation:隔离性Durability:持久性隔离级别读未提交(read uncommitted)一个事务还未提交时,它所做的变更可以被其他事务看到。读提交(read committed)一个事务已提交时,它所做的变更才可以被其他事务看到。在 SQL 语句开始执行时,创建视图(访问时,以视图的逻辑结果为准)。可重复读(repeatable read)一个事务执..

2022-01-10 01:06:43 689

原创 MySQL基础篇(一)查询 & 更新

目录一条SQL查询如何执行MySQL基本架构执行流程连接器查询缓存分析器优化器执行器一条SQL更新 如何执行redo log(重做日志)binlog(归档日志)提问为什么需要两种日志?两种日志的区别?update 流程?如何让数据库恢复到半个月前任意一秒的状态?为什么需要两阶段提交?一条SQL查询如何执行MySQL基本架构Server 层:核心服务功能,所有内置函数(日期、时间、数学),所有跨引擎功能都在...

2022-01-08 00:31:08 1698

原创 ConcurrentHashMap 1.7 & 1.8

juc重点

2021-12-15 22:15:29 680

原创 运输层(三)—— TCP 三次握手 & 四次挥手

运输层(三)—— TCP 三次握手 & 四次挥手

2021-12-09 18:13:48 2404

原创 全网首发——云服务器搭建redis集群坑点(最全)

目录前言安全防范说明在云服务器开启端口时,一定要指定授权ip。再在命令行配置(指定ip -> 访问指定端口)或者直接修改配置一定要开防火墙!防火墙操作相关博客集群启动不了集群启动一直等待外网IP创建集群,节点配置文件中存在内网IP前言本人使用五台云服务器搭建 redis 集群。安全防范说明亲身经历!不做好安全防范,服务器全部变成矿场。在云服务器开启端口时,一定要指定授权ip。再在命令行配置(指定ip -...

2021-12-08 22:20:35 1136 1

原创 运输层(二)

面向连接的运输:TCPTCP 连接TCP 报文段结构序号和确认号可靠数据传输现象超时间隔加倍快速重传GBN + SR流量控制(速率不匹配)原因接收方发送方拥塞控制拥塞原因拥塞代价与流量控制区别拥塞控制方法TCP控制感知拥塞拥塞控制算法算法介绍......

2021-10-29 18:09:39 167 1

原创 运输层(一)

运输层与网络层关系1.运输层为运行在不同主机上的应用进程之间提供了逻辑通信(logic communication)。2.网络层提供了主机之间的逻辑通信。3.运输层协议能够提供的服务往往受限于底层网络层协议;运输层能否为进程间应用层报文提供时延或带宽保证,取决于网络层能否为主机间运输层报文提供时延或带宽保证。4.运输层分组称为"报文段";网络层为"数据报"多路复用与分解定义1.多路复用:源主机从不同套接字收集数据块,并为每个数据块封装上首部信息从而生成报文段,将报文...

2021-10-27 09:57:48 984

原创 应用层(二)

SMTPP2P文件分发视频流和内容分发网

2021-10-26 17:09:50 81

原创 应用层(一)

应用层协议定义了运行在不同端系统上的应用程序如何相互传递报文。1.交换的报文类型,如请求报文和响应报文2.报文类型的语法,如报文中各个字段及它们是如何描述的3.字段的语义,即字段中信息的含义4.确定一个进程何时以及如何发送报文,对报文进行响应的规则HTTP概况定义超文本传输协议(HyperText Transfer Protorcol,HTTP);运行在不同端系统中的客户程序与服务器程序通过交换 HTTP 报文进行会话;HTTP 定义了报文的结构以及客户和服务器进.

2021-10-24 22:05:02 1947

原创 volatile(二)模式与规则

两阶段终止说明Two Phase Termination 在线程 t1 中优雅地终止线程 t2错误方法:① 使用线程对象的 stop 方法,会真正杀死线程,但是线程持有锁的话,它就无法释放,其他线程也就无法获得锁② System.exit(int) 会将整个进程杀死利用共享标记打断@Slf4j(topic = "c.TwoPhaseTermination")public class TwoPhaseTermination { private Thread t..

2021-08-23 19:31:38 166

原创 volatile(一)作用与原理

Java 内存模型① JMM(Java Memory Model),定义了主存(共享)、工作内存(私有)抽象概念,底层对应着 CPU 寄存器、缓存、硬件内存、CPU 指令优化等② JMM 体现在以下几个放面(并发安全也如此): 2.1 原子性:保证指令不受到线程上下文切换影响(指令交错) 2.2 可见性:保证指令不受CPU 缓存影响 2.3 有序性:保证指令不受 CPU 指令并行优化影响(指令重排)可见性退不出的循环 static ...

2021-08-22 19:09:06 253

原创 线程活跃性 && ReentrantLock

目录线程活跃状态死锁活锁饥饿ReentrantLock特点特点展示可重入可打断可设置超时时间可设置为公平锁支持多个条件变量解决死锁问题线程活跃状态死锁当一个线程需要同时获取多把锁时,容易发生死锁。@Slf4j(topic = "c.DeadLock")public class DeadLock { public static void main(String[] args) { Object loc...

2021-08-19 21:48:25 166

原创 线程状态转换

目录总览各种情况情况 1:新建线程情况 2:永久等待情况 3:等待其他线程情况 4:park && unpark情况 5:有时限等待情况 6:有时限等待其他线程情况 7:睡眠情况 8:有时限 park情况 9:竞争锁情况 10:运行完毕总览各种情况情况 1:新建线程NEW --> RUNNABLE调用 t.start()情况 2:永久等待RUNNABLE <--> WAITING线

2021-08-18 22:04:28 80

原创 并发编程 synchronized (七) wait / notify

目录wait / notify介绍wait 与 sleep 对比保护性暂停(join 原理)定义实现join 实现(带超时的 Guarded Object)生产者/消费者定义实现wait / notify介绍① wait:当 Thread3、Thread4 获得锁时,由于没有达到执行条件(Thread3 要锤子,Thread4 要扳手);于是调用 wait,进入左边 WaitSet 等待(等人送工具,没人送会一直等)② notif...

2021-08-13 19:32:31 275 1

原创 并发编程 synchronized (六) 偏向锁

偏向锁用途public void method1(){ synchronized(object){ method2(); }}public void method2(){ synchronized(object){ method3(); }}public void method3(){ synchronized(object){ // 执行代码 }}没有线程竞争时,持锁线程反复获取锁

2021-08-11 22:51:05 194

原创 并发编程 synchronized (五) 重量级锁、轻量级锁

目录Monitor(重量级锁)对象头组成工作机制轻量级锁加锁过程锁重入锁膨胀(转为重量级锁)自旋Monitor(重量级锁)对象头每个 Java 对象都可以关联一个 Monitor 对象,如果使用 synchronized 给对象上锁(重量级锁)之后,在该对象头的 Mark Word 中设置指向该 Monitor 的指针Mark Word(64 位)锁不同时,Mark Word 会发生变化Klass Word 指向该对象的类型...

2021-08-10 21:52:42 322

原创 并发编程 synchronized (四) 深入分析线程安全

常见线程安全类String Integer StringBuffer Random Vector Hashtable java.util.concurrent 包下的类线程安全类也会线程不安全如:Vectorpublic synchronized int size() { // 返回大小 return elementCount;}public synchronized E remove(int index) { // 移除操作 .

2021-08-09 22:04:54 96

原创 并发编程 synchronized (三) 变量是否线程安全

目录线程安全情况单线程操作变量多个线程对变量只读 或者 变量不属于共享资源线程不安全情况多线程对变量既读又写子类重写父类方法执行未知操作变量:普通成员变量、静态成员变量、局部变量① 变量不属于多线程共享资源或者不被多线程共享,则线程安全② 变量被线程共享;但是只有读操作,不包含任何写(修改)操作;则线程安全线程安全情况单线程操作变量@Slf4j(topic = "c.SafeThread")public class SafeThread { ...

2021-08-09 17:07:05 208

原创 并发编程 synchronized (二) 两种锁

对象锁定义形如:synchronized void method(){ // 在普通成员方法上加锁 // 临界区}void method(){ synchronized(this){ // 锁住当前对象 // 临界区 }}两种方式的临界区,对于同一个对象是等效的对象锁例子在普通方法上加锁(相同对象调用相同方法)package com.juc.ppy.synchronize;import lombok.extern.slf

2021-08-09 11:51:56 252

原创 并发编程 synchronized (一) 初识

上下文切换对非原子操作的影响示例我们都知道,两个线程 Thread0 与 Thread1,对同一个量 count 进行操作;一个让其自增,一个让其自减,次数相等;结果可能为 负数、正数、0(极少)示例代码:package com.juc.ppy.synchronize;import lombok.extern.slf4j.Slf4j;@Slf4j(topic = "c.UnsafeCount")public class UnsafeCount { static in.

2021-08-08 19:34:46 185 1

原创 HashMap1.7 扩容时产生死链

HashMap1.7 扩容机制HashMap1.7 扩容机制:当 put 一个新键值对时;发生了哈希碰撞(hash值相同)并且加上新键值对后,键值对总数达到了阈值(容量 * 0.75)① 如:容量为 16 的HashMap,每个位置都放了一个键值对;它并不会扩容,因为没有发生哈希碰撞② 提问:容量为 16 的HashMap,最多可以放多少个键值对?答:26个在 0 号位置先加入 11 个键值对(其他位置都可以),然后将剩余空位置填满;结果为 11+15=26;假如再 put 一个新键值

2021-08-07 18:13:32 911

原创 SpringSecurity学习(一)认证流程

目录基本流程详细流程AbstractAuthenticationProcessingFilterdoFilter()UsernamePasswordAuthenticationFilter父类调用 attemptAuthentication()UsernamePasswordAuthenticationToken​ProviderManagerDaoAuthenticationProvider总结Authentication对象认证流程此文为本人学习完尚硅谷.

2021-06-14 21:33:08 375 1

原创 通俗易懂-----微服务SpringCloudAlibaba项目基本结构

目录对微服务结构的理解Consumer:服务消费者Provider:服务提供者搭建项目1. 创建父工程1.1.导入子类共用的依赖(字类不必导重复的依赖)1.2.导入SpringCloudAlibaba依赖(注意版本间对应)2.创建api子工程(存放 Provider 和 Consumer公用的实体类)2.1.建立包结构2.2.包结构说明2.3.定义各包中的类2.4.在父工程pom文件中添加api坐标3.创建Consumer子工程3.1.修改配置文件

2021-06-03 12:08:16 3345 10

原创 Java错题集(十七)

目录如果要建立一个java.scut.computer的包,叙述正确的是? ()下面有关java object默认的基本方法,说法错误的是以下JAVA程序的运行结果是什么()()运算符把其操作数中所有值为0和所有值为1的位分别在结果的相应中设置1和0尝试编译以下程序会产生怎么样的结果?()下面关于变量及其范围的陈述哪些是不正确的()下面有关值类型和引用类型描述正确的是()以下哪项不属于java类加载过程?下列程序的运行结果下面哪些赋值语句是正确的()...

2021-03-29 19:59:03 2373

原创 Java错题集(十六)

目录在第16行插入哪段代码可以获得一个Point对象的坐标?( )下面说法正确的是?()如果此类已编译并运行,则哪两个语句正确?true、false、null、sizeof、goto、synchronized哪些是Java关键字?子类要调用继承自父类的方法,必须使用super关键字。下面程序的运行结果()下列代码执行结果为()如何获取ServletContext设置的参数值?What is displayed when the following is execute..

2021-02-20 17:59:59 1179 1

原创 Java错题集(十五)

目录下列叙述错误的是()在java7中,下列不能做switch()的参数类型是?volatile关键字的说法错误的是有如下一段代码,请选择其运行结果()在hibernate开发中,关于POJO类对象的状态说法正确的是()。以下哪种JAVA得变量声明方式可以避免程序在多线程竞争情况下读到不正确的值()Servlet的生命周期可以分为初始化阶段,运行阶段和销毁阶段三个阶段,以下过程属于初始化阶段是()。以下多线程对int型变量x的操作,哪几个...

2021-02-19 12:19:32 1744

原创 Java错题集(十四)

目录以下代码段执行后的输出结果为java语言的下面几种数组复制方法中,哪个效率最高?在 myjsp.jsp 中,关于下面的代码说法错误的是: ( ) 下面代码的输出是什么?关于ThreadLocal类以下说法正确的是下面程序的输出是:()使用mvc模式设计的web应用程序具有以下优点,除了?Java数据库连接库JDBC用到哪种设计模式?关于Java和C/C++的比较,下列哪个描述是错误的?关于volatile关键字,下列描述不正确的是?JVM内存不包含如下...

2021-02-09 17:51:30 2128 2

原创 Java错题集(十三)

目录以下哪个事件会导致线程销毁?()下面有关java基本类型的默认值和取值范围,说法错误的是?下列关于异常处理的描述中,错误的是()。Java的体系结构包含()。下面有关 java 类加载器,说法正确的是?()下列哪些操作会使线程释放锁资源?下面有关JVM内存,说法错误的是?以下代码将打印出关于上面代码片段叙述正确的是()假定Baseb=newDerived();调用执行b.methodOne()后,输出结果是什么?关于多线程和多进程,下面描述正...

2021-02-08 16:10:10 2055 2

原创 Java错题集(十二)

下面有关JDK中的包和他们的基本功能,描述错误的是?正确答案: C 你的答案: A(错误)java.awt: 包含构成抽象窗口工具集的多个类,用来构建和管理应用程序的图形用户界面java.io:  包含提供多种输出输入功能的类java.lang: 包含执行与网络有关的类,如URL,SCOKET,SEVERSOCKETjava.util:  包含一些实用性的类来源:https://www.nowcoder.com/questionTerminal/adde31d35f8...

2021-02-07 14:22:56 878 1

原创 Java错题集(十一)

下面有关servlet中init,service,destroy方法描述错误的是?正确答案: D 你的答案: D(正确)init()方法是servlet生命的起点。一旦加载了某个servlet,服务器将立即调用它的init()方法service()方法处理客户机发出的所有请求destroy()方法标志servlet生命周期的结束servlet在多线程下使用了同步机制,因此,在并发编程下servlet是线程安全的来源:https://www.nowcoder.com/q...

2021-02-07 11:25:28 1264 1

原创 Java错题集(十)

目录下面有关java的一些细节问题,描述错误的是?instanceof运算符能够用来判断一个对象是否为:有以下类定义:关于Java中的ClassLoader下面的哪些描述是错误的:()Thread. sleep()是否会抛出checked exception?最后输出什么?下面有关java的一些细节问题,描述错误的是?正确答案: B 你的答案: D(错误)构造方法不需要同步化一个子类不可以覆盖掉父类的同步方法定义在接口中的方法默认是p...

2021-02-05 18:06:31 827 1

原创 《数据结构与算法之美》9讲学习笔记

09讲队列:队列在线程池等有限资源池中的应用一、什么是队列?1.先进者先出,这就是典型的“队列”结构。2.支持两个操作:入队enqueue(),放一个数据到队尾;出队dequeue(),从队头取一个元素。3.所以,和栈一样,队列也是一种操作受限的线性表。二、如何实现队列?1.队列APIpublic interface Queue<T> { public void enqueue(T item); //入队 public T dequeue(); //出队...

2021-02-05 13:04:07 112

原创 《Java核心密卷36讲》11-12讲学习笔记

目录Java提供了哪些IO方式? NIO如何实现多路复用?Java有几种文件拷贝方式?哪一种最高效?Java提供了哪些IO方式? NIO如何实现多路复用?典型回答Java IO方式有很多种,基于不同的IO抽象模型和交互方式,可以进行简单区分。首先,传统的java.io包,它基于流模型实现,提供了我们最熟知的一些IO功能,比如File抽象、输入输出流等。交互方式是同步、阻塞的方式,也就是说,在读取输入流或者写入输 出流时,在读、写动作完成之前,线程会一直阻塞在那里,它们之间.

2021-02-05 12:44:32 129 1

原创 数据库错题集(一)

目录从 E-R 模型向关系模型转换时,一个 M:N 联系转换为关系模式时,该关系模式的主码是( )。在关系数据库设计中,关系模式是用来记录用户数据的( )。消除了部分函数依赖的1NF的关系模式,必定是( )。下列关于数据库设计的叙述中,正确的是()。从 E-R 模型向关系模型转换时,一个 M:N 联系转换为关系模式时,该关系模式的主码是( )。正确答案: C 你的答案: C(正确)M 端实体的主码N 端实体的主码M 端实体的主码与 N 端实体的主码组合...

2021-02-04 21:52:25 945

空空如也

空空如也

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

TA关注的人

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