凌晨向燕京
码龄6年
关注
提问 私信
  • 博客:9,384
    9,384
    总访问量
  • 32
    原创
  • 597,458
    排名
  • 5
    粉丝
  • 0
    铁粉
IP属地以运营商信息为准,境内显示到省(区、市),境外显示到国家(地区)
IP 属地:浙江省
  • 加入CSDN时间: 2018-11-29
博客简介:

weixin_43874468的博客

查看详细资料
个人成就
  • 获得6次点赞
  • 内容获得1次评论
  • 获得10次收藏
创作历程
  • 4篇
    2021年
  • 27篇
    2020年
  • 1篇
    2019年
成就勋章
TA的专栏
  • 并发
    4篇
  • 设计模式
    2篇
  • jvm
    1篇
  • Redis
    3篇
  • 多线程和并发
    2篇
  • web
    1篇
兴趣领域 设置
  • 大数据
    mysql
  • 后端
    spring
创作活动更多

2024 博客之星年度评选报名已开启

博主的专属年度盛宴,一年仅有一次!MAC mini、大疆无人机、华为手表等精美奖品等你来拿!

去参加
  • 最近
  • 文章
  • 代码仓
  • 资源
  • 问答
  • 帖子
  • 视频
  • 课程
  • 关注/订阅/互动
  • 收藏
搜TA的内容
搜索 取消

Semaphore源码解析

文章目录内部类及构造器:重要方法:获取许可:释放许可Semaphore简介:线程上的信号量机制。通过 acquire() 获取一个许可,没有便阻塞等待,release() 释放一个许可。原理:实现又是基于AQS的共享锁。并且支持公平和非公平其实就是初始化了一个AQS上的state,每次acquire就是去state上尝试减一,每次release就是去state上加一,内部类及构造器:维护了三个内部类。经典的aqs写法公平和非公平两种都有对应的实现构造器: //非公平 pub
原创
发布博客 2021.01.31 ·
221 阅读 ·
1 点赞 ·
0 评论 ·
0 收藏

CyclicBarrier源码

文章目录主要的成员变量和构造方法:重要方法:CyclicBarrier是一种同步工具,它允许一组线程在到达一个公共的屏障点时阻塞等待,直到最后一个线程到达屏障点,屏障才能开启,此时所有被阻塞线程才能被唤醒从而继续执行。首先要清楚的是CyclicBarrier主要是基于reentrantlock的条件等待主要的成员变量和构造方法: /** The lock for guarding barrier entry */ private final ReentrantLock lock = n
原创
发布博客 2021.01.31 ·
213 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

MySql性能分析——Explain

Explain表的读取顺序数据读取操作的操作类型哪些索引可以使用哪些索引被实际使用表之间的引用每张表有多少行被优化器查询id:id不同,如果是子查询,id序号会递增,id值越大,优先级越高,越先被执行id相同,执行的顺序是由上至下如果id既有相同也有不同,那么先执行id大的,id相同的依然由上至下依次执行select_typesimple: 简单的select查询primary: 查询中若包含任何复杂子部分,最外层就是该标记subquery:在select或where列表中
原创
发布博客 2021.01.27 ·
224 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

CountDownLatch源码解析

文章目录内部类awaitcountdowncountdownlatch是基于AQS的实现,在学习之前必须先懂AQS共享锁的原理。内部类countdownlatch里维护了一个内部类Sync继承了AQS,这和reentrantlock系列类似,可以看出AQS的使用一般都是重写两组方法tryAcquire/tryrelease 以及tryAcquireShared/tryreleaseshared这两组方法选一组实现就可以了 private static final class Sync ext
原创
发布博客 2021.01.27 ·
191 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

学习设计模式——创建型模式day02

文章目录建造者模式原型模式建造者模式定义:将一个复杂对象的构建和与它的表示分离,使得同样地构建过程可以创建不同的表示主要作用:在用户不知道对象建造过程和细节的情况下就可以直接创建复杂对象用户只需要给定出复杂对象的类型和内容,建造者模式按照顺序创建复杂对象建造者模式有很多变种,但是最常见的就是链式调用的样子。//抽象类public abstract class Builder { abstract Builder buildA(String msg); //憨包 abstract
原创
发布博客 2020.10.04 ·
280 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

学习设计模式——创建型模式day01

文章目录单例模式:
原创
发布博客 2020.10.04 ·
207 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

Redis——底层数据结构及其实现

文章目录字符串(SDS)链表字典跳跃表整数集合压缩列表字符串(SDS)结构定义:struct sdshdr{ //记录buf数组中已使用字节的数量 //等于 SDS 保存字符串的长度 int len; //记录 buf 数组中未使用字节的数量 int free; //字节数组,用于保存字符串 char buf[];}redis中采用和C语言中的字符串相同的存储方式,字符串末尾以一个空字符结尾,且并不算作len里面 去,这样做的
原创
发布博客 2020.09.12 ·
159 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

并发——wait/notify/join/park

API介绍obj.wait() 让进入 object 监视器的线程到 waitSet 等待obj.notify() 在 object 上正在 waitSet 等待的线程中挑一个唤醒obj.notifyAll() 让 object 上正在 waitSet 等待的线程全部唤醒
原创
发布博客 2020.08.29 ·
327 阅读 ·
0 点赞 ·
0 评论 ·
1 收藏

并发——synchronized-理解

文章目录安全问题的由来synchronize解决局部变量的线程安全问题线程安全的类:Monitorsynchronize的进阶原理轻量级锁锁膨胀自旋优化偏向锁安全问题的由来java中的语句可能对应多个字节码指令的执行。但是在线程的上下文切换的过程中,却不是原子地,所以我们需要考虑线程安全的问题看一段代码 public static void main(String[] args) throws InterruptedException { Thread t1 = new Thr
原创
发布博客 2020.08.24 ·
389 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

Redis数据同步—— RDB和AOF

文章目录RDBRDB的触发机制RDB的底层原理AOF底层原理:AOF的重写RDB首先明确,Redis的RDB文件是dump.rdb可以在配置文件中设置此文件RDB的触发机制1.save的规则满足的情境下2.执行了flushall3.退出redis恢复rdb文件,只需要把该文件放在我们redis的启动目录下就可以了。redis启动的时候会自动检查目录查看:127.0.0.1:6379> config get dir1) "dir"2) "/usr/local/bin"127
原创
发布博客 2020.08.17 ·
890 阅读 ·
0 点赞 ·
0 评论 ·
2 收藏

Redis——config详解

文章目录配置文件详解单位包含:网络通用配置:快照:主从复制:安全:限制clientsAOF的配置配置文件详解单位说明units(单位)对大小写不明感包含:网络bind 127.0.0.1 #绑定的ipprotected-mode yes #保护模式port 6379 #端口设置通用配置:daemonize yes #以守护进程的方式运行,默认是nopidfile /var/run/redis_6379.pid #如果以后台的方式运行,我们需要指定一个pid文件#日志# S
原创
发布博客 2020.08.15 ·
628 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

ReentrantLock 原理(源码轰炸)

文章目录无线程加锁时的加锁方法:有竞争时的线程加锁方法加入阻塞队列的方法释放锁(不公平):可重入原理:可打断原理:公平锁实现:条件变量实现(await)条件变量(sigal)构造器:使用的锁:有两种实现,公平锁和非公平锁abstract static class Sync extends AbstractQueuedSynchronizer {默认是非公平锁的实现 public ReentrantLock() { sync = new NonfairSync();
原创
发布博客 2020.08.09 ·
491 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

并发——volatile

保证可见性看一个现象: static boolean run = true; public static void main(String[] args) throws InterruptedException { Thread t = new Thread(()->{ while(run){ // .... }
原创
发布博客 2020.08.04 ·
261 阅读 ·
0 点赞 ·
1 评论 ·
0 收藏

并发——关于线程

文章目录线程的创建:线程的常用API线程的状态:线程的创建:常用的有三种方法:方法一:直接使用Tread,重写run方法// 创建线程对象 Thread t = new Thread(){ public void run() { // 要执行的任务 } }; // 启动线程 t.start();方法二:使用 Runnable 配合 ThreadThread 代表线程Runnable 可运行的任务(线程要执行的代码)这种方法将线程和
原创
发布博客 2020.07.25 ·
181 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

操作系统——基本介绍

文章目录操作系统的定义:操作系统的功能:向用户提供的服务:命令接口程序接口图形:操作系统的特征:操作系统的发展与分类操作系统的运行机制和体系结构操作系统的内核大内核和微内核中断和异常系统调用操作系统的定义:是一种系统软件为上层用户、应用程序提供简单易用的服务负责管理协调硬件、软件等计算机资源的工作层次结构:操作系统的功能:1.处理机管理2.存储器管理3.文件管理4.设备管理向用户提供的服务:命令接口分为两个:联机命令接口:CMD,一句一句执行脱机命令接口:多句执行程序接口
原创
发布博客 2020.07.02 ·
425 阅读 ·
1 点赞 ·
0 评论 ·
1 收藏

计算机网络——传输层(TCP三次握手和四次挥手)

文章目录TCP的三次握手TCP的四次挥手TCP的三次握手过程:在建立连接之前,双方都是closed状态。一开始服务器进程创建传输控制块(TCB,详见操作系统),然后服务器端处于监听状态Listen1.客户端第一次发送报文信息:SYN=1,ACK=0,seq=xSYN=1说明此时是建立连接阶段,如果连接建立好了SYN就被置位0ACK=0表示此时确认号是无效的客户端会进入syn_sent状态(同步已发送)SEQ=x表示初始序列号这个报文是不携带数据的,但是会占一个序列号,所以下一次的
原创
发布博客 2020.06.26 ·
265 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

计算机网络——应用层02

文章目录文件传送协议:1.FTP2.TFTP远程终端协议TELNET万维网WWW唯一的标志 URL严格遵守的协议HTTP统一的标记语言HTML文件传送协议:1.FTP这是一种使用TCP的文件传送协议,提供交互式访问基本工作原理:FTP主要功能是减少或消除在不同操作系统下处理文件的不兼容性FTP使用客户服务器模式,一个服务器进程可同时为多个客户进程提供服务,FTP的服务器进程主要由两部分组成:一个主进程,负责接收请求,若干个从属进程,负责处理单个请求,他们是并行的。主进程端口号(21)让客户端
原创
发布博客 2020.06.25 ·
356 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

Java虚拟机(jvm)——垃圾收集器与内存分配策略

文章目录判断对象的存活引用和对象死亡4 种引用宣告对象死亡回收方法区垃圾回收算法标记清除算法:标记复制算法:标记整理算法分代收集算法一些相关的概念:根节点枚举:垃圾收集器:Serial收集器:ParNew收集器Parallel ScavengeSerial OldParallel OldCMSG1收集器内存分配策略对象优先在Eden分配大对象直接分配到老年代长期存活的对象直接进入老年代动态对象年龄判定空间分配担保判断对象的存活两种算法引用计数法:它给对象添加一个引用计数器,每当有一个地方引用它时,计
原创
发布博客 2020.06.18 ·
740 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

java容器源码学习05(jdk1.8):hashset

文章目录构造函数添加方法删除方法遍历HashSet构造函数虽然有多个构造函数,但是每一个都是初始化一个HashMap对象默认的构造函数指定的初始化容量是16,负载因子是0.75. public HashSet() { map = new HashMap<>(); } public HashSet(Collection<? extends E> c) { map = new HashMap<>(Math.ma
原创
发布博客 2020.06.15 ·
170 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

(jvm)Java虚拟机——java虚拟机的内存管理

文章目录运行时数据区程序计数器虚拟机栈本地方法栈java堆方法区运行时常量池对象的创建运行时数据区先上一张图程序计数器线程私有当前所执行字节码的行号指示器此区域是唯一一个在Java虚拟机规范中没有规定任何OutOfMemoryError情况的区域。如果线程执行的是java方法,这个计数器记录的是正在执行的虚拟字节码指令的地址。如果正在执行的是native方法,那么这个计数器的值为undefined。虚拟机栈Java方法执行的动态内存模型线程私有描述的是Java方法执行的内存模
原创
发布博客 2020.06.14 ·
448 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏
加载更多