NocturneMK
码龄7年
关注
提问 私信
  • 博客:11,251
    11,251
    总访问量
  • 33
    原创
  • 2,013,186
    排名
  • 2
    粉丝
  • 0
    铁粉
IP属地以运营商信息为准,境内显示到省(区、市),境外显示到国家(地区)
IP 属地:湖北省
  • 加入CSDN时间: 2017-10-27
博客简介:

qq_40820563的博客

查看详细资料
个人成就
  • 获得4次点赞
  • 内容获得5次评论
  • 获得21次收藏
创作历程
  • 33篇
    2021年
成就勋章
TA的专栏
  • 笔记
    3篇
  • JDK
    12篇
  • JUC
    16篇
  • 服务
    4篇
  • 通信
    1篇
  • 数据结构与算法
    1篇
  • Spring Boot
    3篇
  • Spring
    2篇
  • SpringMVC
  • MyBatis
    1篇
兴趣领域 设置
  • 大数据
    mysql
  • 后端
    架构
创作活动更多

超级创作者激励计划

万元现金补贴,高额收益分成,专属VIP内容创作者流量扶持,等你加入!

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

20210721复盘

1、在大厂中用的是java8吗?还是更高版本的?基本都是8,一些老项目是72、远程面试的时候让写算法题,是线上写还是用纸写还是用面试公司开发的工具写?会有方法输入提示吗?一般都是伪代码,重点看的是思路和逻辑。如果考察细节的问题不会太大太难,用不着三方api按我的想法,有的简单的算法题,调用几个API就搞定的,不要调用第三方api,要自己实现复杂的算法题,考的就是思路,可以用伪代码把思路表达清楚即可3、面试在问项目的时候,天天crud的要咋回答比较好?我需要做些什么准备?没有好的项目精
原创
发布博客 2021.07.23 ·
180 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

在 IDEA 中的各种调试技巧,轻松定位 Bug(超级全面)

原文地址
原创
发布博客 2021.07.19 ·
215 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

Java 并发编程四篇 -(JUC、AQS 源码、ReentrantLock 源码)

并发编程已完结,章节如下:Java 并发编程上篇 -(Synchronized 原理、LockSupport 原理、ReentrantLock 原理)Java 并发编程中篇 -(JMM、CAS 原理、Volatile 原理)Java 并发编程下篇 -(线程池)Java 并发编程下篇 -(JUC、AQS 源码、ReentrantLock 源码)5、J.U.CAQS 原理1、概述全称是 AbstractQueuedSynchronizer,是阻塞式锁和相关的同步器工具的框架2、特点用
原创
发布博客 2021.07.13 ·
525 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

Java 并发编程三篇 -(线程池)

Java 并发编程下篇 -(线程池)并发编程已完结,章节如下:Java 并发编程上篇 -(Synchronized 原理、LockSupport 原理、ReentrantLock 原理)Java 并发编程中篇 -(JMM、CAS 原理、Volatile 原理)Java 并发编程下篇 -(线程池)Java 并发编程下篇 -(JUC、AQS 源码、ReentrantLock 源码)七、共享模型之工具1、线程池池化技术相比大家已经屡见不鲜了,线程池、数据库连接池、Http 连接池等等都是对这个思
原创
发布博客 2021.07.11 ·
203 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

Java 并发编程三篇 -(线程池)

Java 并发编程下篇 -(线程池)并发编程已完结,章节如下:Java 并发编程上篇 -(Synchronized 原理、LockSupport 原理、ReentrantLock 原理)Java 并发编程中篇 -(JMM、CAS 原理、Volatile 原理)Java 并发编程下篇 -(线程池)Java 并发编程下篇 -(JUC、AQS 源码、ReentrantLock 源码)七、共享模型之工具1、线程池池化技术相比大家已经屡见不鲜了,线程池、数据库连接池、Http 连接池等等都是对这个思
原创
发布博客 2021.07.11 ·
203 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

ThreadLocalMap之getEntry+getEntryAfterMiss.pdf

发布资源 2021.07.08 ·
pdf

多线程(七)ThreadLocal源码

1.简单聊一聊什么是ThreadLocal?以及它的大概用途(1) 定义 (2)作用ThreadLocal的作用是提供局部变量给线程内部使用。也就是说,它使用了一套机制保证:你new了一个变量threadLocal,在一个线程里,给threadLocal变量set一个别的线程无法访问使用的类型A的实例a,然后一段时间后,你可以从threadLocal变量中get出实例a,重点是这个threadLocal变量是可以跨线程的。同时,JDK建议你把这个threadLocal变量设置为static,因为他
原创
发布博客 2021.07.07 ·
185 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

Java 并发编程二篇 -(JMM、CAS 原理、Volatile 原理)

并发编程已完结,章节如下:Java 并发编程上篇 -(Synchronized 原理、LockSupport 原理、ReentrantLock 原理)Java 并发编程中篇 -(JMM、CAS 原理、Volatile 原理)Java 并发编程下篇 -(线程池)Java 并发编程下篇 -(JUC、AQS 源码、ReentrantLock 源码)四、共享模型之内存1、Java 内存模型(JMM)JMM 即 Java Memory Model,它定义了主存(共享内存)、工作内存(线程私有)抽象概念,
原创
发布博客 2021.07.04 ·
305 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

Java 并发编程一篇 -(Synchronized 原理、LockSupport 原理、ReentrantLock 原理)

一、基本概念1、进程与线程进程程序由指令和数据组成,但这些指令要运行,数据要读写,就必须将指令加载至 CPU,数据加载至内存。在指令运行过程中还需要用到磁盘、网络等设备。进程就是用来加载指令、管理内存、管理 IO 的。当一个程序被运行,从磁盘加载这个程序的代码至内存,这时就开启了一个进程。进程就可以视为程序的一个实例。大部分程序可以同时运行多个实例进程(例如记事本、画图、浏览器 等),也有的程序只能启动一个实例进程(例如网易云音乐、360 安全卫士等)线程一个进程之内可以分为一到多个线程
原创
发布博客 2021.06.29 ·
502 阅读 ·
0 点赞 ·
0 评论 ·
6 收藏

多线程(六)LongAdder源码

1 LongAdder结构分析1.1 为什么要有LongAdderAutomicLong底层使用了CAS操作来控制并发的。在并发量级比较小的情况下,线程冲突的概率比较小,自旋次数少。但是,高并发的情况下,多个线程同时进行自旋操作,就会出现大量失败并一直自旋的情况,这个时候AutomicLong的性能就下降了。所以引入了LongAdder,解决高并发环境下AtomicLong自旋瓶颈的问题。1.2 Longadder的结构其结构如下,当线程不存在竞争的时候,首先将值写入到base中,当线程之间有竞争时
原创
发布博客 2021.06.28 ·
236 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

Java的对象模型

原文链接对象在堆内存的布局分为三个区域:分别是对象头(Header)、实例数据(Instance Data)、对齐填充(Padding)对象头:对象头包括两部分信息分别是Mark World(_mark)和元数据(_metadata),Mark World用于存储对象运行时的数据,比如HashCode、锁状态标志、GC分代年龄等。而元数据指针用于指向方法区的中目标类的类型信息,通过元数据指针可以确定对象的具体类型。实例数据:用于存储对象中的各种类型的字段信息(包括从父类继承来的)。对齐填充
原创
发布博客 2021.06.26 ·
335 阅读 ·
0 点赞 ·
2 评论 ·
1 收藏

CopyOnWriterArrayList

CopyOnWriteCopyOnWrite指在“写”的时候,不是直接“写”源数据,而是把数据拷贝一份进行修改,再通过悲观锁或者乐观锁的方式写回。那为什么不直接修改,而是要拷贝一份修改呢?这是为了在“读”的时候不加锁。(以空间换时间的策略)为了提升读取的效率,修改时不在原数据上修改,而是在复制的数组上修改,改完之后再设置回来,这样做就不会阻塞读的线程CopyOnWriteArrayListCopyOnWriteArrayList的核心数据结构也是一个数组,代码如下:public class
原创
发布博客 2021.06.26 ·
716 阅读 ·
1 点赞 ·
0 评论 ·
1 收藏

多线程(五)CAS

简单的实现CAS需求有100个线程同时访问,并且每个线程发起10次请求,最后count次数应该是1000次。public class Demo { //总访问量。volatile保证多线程之间count变量的可见性 private volatile static int count = 0; /** * count ++ 操作实际上是由3步来完成!(jvm执行引擎) * 1.获取count的值,记做A : A=count * 2.将A值+1,得到B :B=A+1 *
原创
发布博客 2021.06.25 ·
126 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

JDK基础答疑

试想,当你的项目启动起来后,你在浏览器地址栏输入一个url地址,随后一个页面出现。请问,这个过程都发生了什么事情?首先访问一个网址,比如www.baidu.com,第一步是域名解析,会先从本地缓存找服务器,找不到会请求到DNS服务器去找。找到对应的ip服务器后,三次握手,与目标主机建立TCP连接动静分离处理:如果是静态资源请求,直接由Nginx处理;如果涉及到动态数据或ajax请求,通过Nginx或其他服务器请求到后端(反向代理+负载均衡)到后端服务器(通常是Tomcat)处理解析请求,用户发送请
原创
发布博客 2021.06.25 ·
105 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

多线程1~4笔记总结

并发编程三要素原子性:即一个不可再被分割的颗粒。在Java中原子性指的是一个或多个操作要么全部执行成功要么全部执行失败。有序性:程序执行的顺序按照代码的先后顺序执行。(处理器可能会对指令进行重排序)可见性:当多个线程访问同一个变量时,如果其中一个线程对其作了修改,其他线程能立即获 取到最新的值。悲观锁与乐观锁悲观锁:每次操作都会加锁,会造成线程阻塞。乐观锁:每次操作不加锁而是假设没有冲突而去完成某项操作,如果因为冲突失败就重试,直到成功为止,不会造成线程阻塞。Thre.
原创
发布博客 2021.06.23 ·
135 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

多线程(四)volatile

1 ⼏个基本概念1.1 内存可⻅性JMM有⼀个主内存,每个线程有⾃⼰私有的⼯作内存,⼯作内存中保存了⼀些变量在主内存的拷⻉。内存可⻅性,指的是线程之间的可⻅性,当⼀个线程修改了共享变量时,另⼀个线程可以读取到这个修改后的值。1.2 重排序为优化程序性能,对原有的指令执⾏顺序进⾏优化重新排序。重排序可能发⽣在多个阶段,⽐如编译重排序、CPU重排序等。1.3 happens-before规则是⼀个给程序员使⽤的规则,只要程序员在写代码的时候遵循happens-before规则,JVM就能保证
原创
发布博客 2021.06.23 ·
108 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

多线程(三)重排序与happens-before

1 什么是重排序?计算机在执⾏程序时,为了提⾼性能,编译器和处理器常常会对指令做重排。为什么指令重排序可以提⾼性能?简单地说,每⼀个指令都会包含多个步骤,每个步骤可能使⽤不同的硬件。因此,流⽔线技术产⽣了,它的原理是指令1还没有执⾏完,就可以开始执⾏指令2,⽽不⽤等到指令1执⾏结束之后再执⾏指令2,这样就⼤⼤提⾼了效率。但是,流⽔线技术最害怕中断,恢复中断的代价是⽐较⼤的,所以我们要想尽办法不让流⽔线中断。指令重排就是减少中断的⼀种技术。我们分析⼀下下⾯这个代码的执⾏情况:a = b + c;
原创
发布博客 2021.06.23 ·
182 阅读 ·
0 点赞 ·
0 评论 ·
2 收藏

多线程(二)Java内存模型(JVM-JMM)

1 并发编程模型的两个关键问题线程间如何通信?即:线程之间以何种机制来交换信息线程间如何同步?即:线程以何种机制来控制不同线程间操作发⽣的相对顺序有两种并发模型可以解决这两个问题:消息传递并发模型共享内存并发模型这两种模型之间的区别如下表所示:在Java中,使⽤的是共享内存并发模型。2 Java内存模型的抽象结构2.1 运⾏时内存的划分对于每⼀个线程来说,栈都是私有的,⽽堆是共有的。也就是说在栈中的变量(局部变量、⽅法定义参数、异常处理器参数)不会在线程之间共享,也就
原创
发布博客 2021.06.23 ·
138 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

生产者消费者模型

生产者-消费者模型是一个常见的多线程编程模型,如下图所示:一个内存队列,多个生产者线程往内存队列中放数据;多个消费者线程从内存队列中取数据。要实现这样一个编程模型,需要做下面几件事情:内存队列本身要加锁,才能实现线程安全。阻塞。当内存队列满了,生产者放不进去时,会被阻塞;当内存队列是空的时候,消费者无事可做,会被阻塞。双向通知。消费者被阻塞之后,生产者放入新数据,要notify()消费者;反之,生产者被阻塞之后,消费者消费了数据,要notify()生产者。第1件事情必须要做,第2
原创
发布博客 2021.06.22 ·
202 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

多线程(一)基础部分

1 进程与线程进程:进程是程序的一次动态执行过程,它经历了从代码加载、执行到执行完毕的一个完整过程,这个过程也是进程本身从产生、发展到消亡的过程进程:正在执行的程序,其实就是应用程序在内存中运行的那片空间线程:是进程中的一个执行单元,负责进程中的程序的运行,一个进程中一定要有线程,而且至少有一个一个进程可以有多个线程,那么这个应用程序可以称为多线程程序线程实际上是在进程基础之上的进一步划分如果一个进程没有了则线程肯定会消失,但是线程消失进程未必会消失并发:可以实现应用多部分程序同时执行所有
原创
发布博客 2021.06.21 ·
170 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏
加载更多