- 博客(67)
- 资源 (6)
- 收藏
- 关注
原创 Java volatile关键字解析
具体来说,如果一个线程执行到步骤 2 并设置了 m_penguin 的引用,但尚未完成对象的初始化,这时另一个线程可能会看到一个“半初始化”的 Penguin 对象。A 线程在写 volatile 变量之前所有可见的共享变量,在 B 线程读同一个 volatile 变量后,将立即变得对 B 线程可见。在 JVM 底层 volatile 是采用“内存屏障”来实现的。最后,我们学习了 volatile 不适用的场景,以及解决的方法,并解释了双重检查锁定实现的单例模式为何需要使用 volatile。
2025-02-06 10:14:09
16
原创 Java的内存模型(JMM)
所以线程 B 并不是直接去主存中读取共享变量的值,而是先在本地内存 B 中找到这个共享变量,发现这个共享变量已经被更新了,然后本地内存 B 去主存中读取这个共享变量的新值,并拷贝到本地内存 B 中,最后线程 B 再读取本地内存 B 中的新值。线程之间的共享变量存在于主存中,每个线程都有一个私有的本地内存,存储了该线程的读、写共享变量的副本。也就是说,在栈中的变量(局部变量、方法定义的参数、异常处理的参数)不会在线程之间共享,也就不会有内存可见性的问题,也不受内存模型的影响。
2024-12-26 15:08:58
26
原创 并发编程(多线程)带来了哪些问题?
前面我们了解到多线程技术有很多好处,比如说多线程可以充分利用多核 CPU 的计算能力,那多线程难道就没有一点缺点吗?有。多线程很难掌握,稍不注意,就容易使程序崩溃。我们以在路上开车为例:在一个单向行驶的道路上,每辆汽车都遵守交通规则,这时候整体通行是正常的。『单向车道』意味着『一个线程』,『多辆车』意味着『多个 job 任务』。单线程顺利同行如果需要提升车辆的同行效率,一般的做法就是扩展车道,对应程序来说就是『加线程池』,增加线程数。这样在同一时间内,通行的车辆数远远大于单车道。多线程顺利同行。
2024-07-05 17:12:15
150
原创 进程与线程的区别
经过前面几章的学习,我们对线程的基本概念和使用方式已经有了比较充分的了解,那么接下来我们就来分析一下,线程是如何从进程进化而来的,它们之间又有哪些区别,搞清楚两者之间的差别对接下来的学习也是至关重要的,甚至有些公司的面试官也喜欢问这个。
2024-07-03 17:56:35
157
原创 线程组和线程优先级
Java 提供了 ThreadGroup 类来创建一组相关的线程,使线程组管理更方便。每个 Java 线程都有一个优先级,这个优先级会影响到操作系统为这个线程分配处理器时间的顺序。这篇内容将分别来介绍一下线程组和线程优先级。
2024-06-28 11:06:13
146
原创 Java线程的6种状态及切换(透彻讲解)
我们先来看看操作系统中的线程状态转换。在操作系统中,线程被视为轻量级的进程,所以。系统进程/线程转换图。
2024-06-27 18:05:20
439
原创 获取线程的执行结果
我们讲述了创建线程的 3 种方式,一种是直接继承 Thread,一种是实现 Runnable 接口,另外一种是实现 Callable 接口。前 2 种方式都有一个缺陷:在执行完任务之后无法获取执行结果。如果需要获取执行结果,就必须通过共享变量或者线程通信的方式来达到目的,这样使用起来就比较麻烦。Java 1.5 提供了 Callable、Future、FutureTask,它们可以在任务执行完后得到执行结果,今天我们就来详细的了解一下。
2024-06-26 16:01:07
146
原创 java 多线程入门
对于 Java 初学者来说,多线程的很多概念听起来就很难理解。很抽象,对不对?带着这个比喻来理解进程和线程的一些关系,一个进程可以有多个线程就叫多线程。是不是感觉非常好理解了?
2024-06-24 14:45:13
225
2
原创 专业与学校:高考志愿填报的两难抉择
在高考志愿填报的过程中,无论是选择专业优先,还是学校优先,都是一次重要的人生抉择。关键在于了解自己,明确自己的兴趣和职业规划,结合实际情况,做出最适合自己的选择。愿所有的高考生都能在这场抉择中找到属于自己的最佳答案,开启一段精彩的大学生活。
2024-06-24 14:17:52
482
原创 git push -f 的后悔药
如果覆盖小部分代码还可以,但如果覆盖了大量的代码真的会欲哭无泪,分享这个抢救小技巧,希望大家都能在紧要关头派上用场哦!完本地的代码后,在本机检查一下是不是你要的版本,如果一切没问题,再直接用回退回来的版本推到远端就大功告成啦!覆盖了远程的分支,你想要撤销刚才的操作,将分支恢复刚才误操作前的状态。的习惯,工作又时常多线开发,需要多个 branch。,把指令中的 ur_commit_hash。名称,然后把 ur_branch。名字,执行完毕后你会看到。,这时候选择一个你要的。换成你的 branch。
2024-03-06 14:41:13
469
原创 程序员的金三银四求职宝典
金三银四,即三月和四月,被广大程序员视为求职的黄金时期。在这两个月里,各大公司纷纷开放招聘,求职者们则通过一轮又一轮的面试,力争心仪的职位。提示:介绍各大公司的文化特点、工作氛围等,帮助读者更好地了解公司,为选择适合自己的公司提供参考。提示:分享职业规划的方法和建议,帮助读者明确自己的职业目标和发展方向,为未来的职业生涯做好规划。提示:分析当前IT行业的发展趋势和市场需求,帮助读者了解行业动态,为求职和职业规划提供指导。提示:针对常见的面试题,提供解题思路和方法,帮助读者巩固基础知识,提升解决问题的能力。
2024-03-05 11:45:29
196
原创 Java 的七种垃圾收集器
用 C 或 C++ 这样的编程语言写一个应用时,需要编写代码来销毁内存中不再需要的对象。当应用程序扩展得越来越复杂时,未使用对象被忽略释放的可能性就越大。这会导致内存泄露,最终内存耗尽,在某个时刻将没有更多的内存可以分配。结果就是应用程序运行失败并出现 OutOfMemoryError 错误。但在 Java 中,垃圾收集器(Garbage Collection)(GC)会在程序执行过程中自动运行,减轻了手动分配内存和可能的内存泄漏的任务。
2024-03-05 11:43:51
1215
原创 三大组合拳 (索引、锁、事务) 之 重拳--“索引”
索引是一种帮助数据库系统提高查询效率的数据结构。它通过按照特定的规则对数据进行排序和存储,从而加快数据的检索速度。
2024-02-27 16:42:01
366
原创 一文讲清DTO、BO、PO、VO
DTO (Data Transfer Object) 数据传输对象: DTO设计模式用于将数据从服务端传输到客户端,或者在不同的服务之间传递。通常,DTO包含了特定业务场景需要的数据结构,并且不包含任何业务逻辑。它简化了不同服务或模块之间的交互,使得各个层之间的耦合度降低。BO (Business Object) 业务对象: BO代表了业务逻辑层中的对象,封装了与某个业务相关的数据以及针对这些数据的操作逻辑。一个BO可能由多个实体属性组成,并处理涉及多个实体的复杂业务逻辑。
2024-02-26 14:05:59
7758
原创 localhost和127.0.0.1的区别是什么?
localhost和127.0.0.1的区别是什么?前端同学本地调试的时候,应该没少和localhost打交道吧,只需要执行 npm run 就能在浏览器中打开你的页面窗口,地址栏显示的就是这个可能大家只是用,也没有去想过这个问题。联想到我之前合作过的一些开发同学对它们俩的区别也没什么概念,所以我觉得有必要普及下。
2024-02-23 10:10:59
986
原创 效率工具:Hutool 嘎嘎香
Hutool 是一个小而全的 Java 工具类库,通过静态方法封装,降低相关 API 的学习成本,提高工作效率,使 Java 拥有函数式语言般的优雅,让 Java 语言也可以“甜甜的”。Hutool 中的工具方法来自每个用户的精雕细琢,它涵盖了 Java 开发底层代码中的方方面面,它既是大型项目开发中解决小问题的利器,也是小型项目中的效率担当;
2024-02-21 14:56:30
813
原创 SpringBoot项目多数据源配置与MyBatis拦截器生效问题解析
SpringBoot项目多数据源配置与MyBatis拦截器生效问题解析。
2024-01-29 10:07:42
1191
原创 什么情况会发生Full GC?如何避免频繁Full GC?Minor GC、Major GC 和 Full GC区别?
什么情况会发生Full GC?如何避免频繁Full GC?Minor GC、Major GC 和 Full GC区别?
2024-01-28 00:10:37
1274
原创 浅谈Java线程池,Java线程池解析。
掌握线程池是后端程序员的基本要求,相信大家求职面试过程中,几乎都会被问到有关于线程池的问题。我在网上搜集了几道经典的线程池面试题,并以此为切入点,谈谈我对线程池的理解。如果有哪里理解不正确,非常希望大家指出,接下来大家一起分析学习吧。
2024-01-26 10:06:21
783
原创 SpringBoot统一返回和统一异常处理
在 SpringBoot 项目中,统一返回和统一异常处理是非常常用的一环,它们能提高应用的可读性和可维护性,统一返回有助于保持代码一致性和规范性,在前后端联调时更加方便,统一异常处理,减少了代码冗余,对异常处理更加易于管理。
2024-01-25 11:59:21
1400
原创 SpringBoot项目多数据源配置与MyBatis拦截器生效问题解析
SpringBoot项目多数据源配置与MyBatis拦截器生效问题解析。
2024-01-24 14:55:44
1189
原创 彻底搞懂Spring IOC
IOC(Inversion of Control),即控制反转,它是一种设计思想控制(谁控制谁)之前通过new()进行创建对象,主动去创建依赖对象,而现在通过IOC容器负责实例化、配置和组装 bean。反转(反转什么)之前对象主动直接去获取依赖对象,而现在通过Ioc容器查找及注入(DI) 依赖对象。依赖注入DI(Dependency Injection),即依赖注入,是IOC具体的实现,IOC容器动态的将某个依赖注入到对象之中
2024-01-24 14:30:55
822
原创 springboot项目启动时如何排除一个bean?
springboot默认封装了很多的组件,并且把这些组件都进行了自动化配置封装。也就是说,只要是springboot项目,启动类在@SpringBootApplication注解下,在不需要单独配置bean的情况下,本项目所用到的bean在容器启动的时候都会被自动扫描并注入到IOC容器里。这里我所说的bean主要指的是pom文件里面配置的那些starter,以及还有一些springboot默认封装的一些组件,比如数据源,redis等一些组件。
2024-01-23 11:41:45
1273
原创 mysql中出现Specified key was too long; max key length is 767 bytes,需要innodb_large_prefix设置步骤
mysql中出现Specified key was too long; max key length is 767 bytes,需要innodb_large_prefix设置步骤
2022-01-19 10:23:54
1055
原创 安装Docker Desktop报错WSL 2 installation is incomplete,启动docker 出现WSL 2 installation is incomplete。
安装Docker Desktop报错WSL 2 installation is incomplete,启动docker 出现WSL 2 installation is incomplete。
2022-01-18 14:10:35
1498
原创 正则匹配常用表达式
一、校验数字的表达式数字:^[0-9]*$ n位的数字:^\d{n}$ 至少n位的数字:^\d{n,}$ m-n位的数字:^\d{m,n}$ 零和非零开头的数字:^(0|[1-9][0-9]*)$ 非零开头的最多带两位小数的数字:^([1-9][0-9]*)+(\.[0-9]{1,2})?$ 带1-2位小数的正数或负数:^(\-)?\d+(\.\d{1,2})$ 正数、负数、和小数:^(\-|\+)?\d+(\.\d+)?$ 有两位小数的正实数:^[0-9]+(\.[0-9]{2})?$
2021-08-12 10:00:12
611
原创 httpd服务,启动,停止,启停。httpd服务启停。
http服务:1、检查http服务:service --status-all | grep httpd2、停止http服务:service httpd stop检查服务是否停止成功:service --status-all | grep httpd3、启动http服务:service httpd start检查服务是否启动成功:service --status-all | grep httpd4、http服务路径cd /var/www/html端口号:一般是ip:80
2021-06-02 18:12:47
4965
java面试指南,学习指南,电子书籍
2024-01-29
oracle+mysql+sql server 数据库字典表生成,生成表字段,注释,索引等数据库表结构数据 支持在线化
2024-01-17
xshell,xftp 工具,你懂得
2022-11-01
水果忍者网页版,js+css+html
2022-10-29
liunx 系统安装 docker环境,完成docker部署,安装docker,docker部署。一键安装docker
2022-05-30
mswinsck.ocx.zip
2021-07-12
web在线酒店管理系统-java+layui
2020-06-23
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人