Μr.ηobοdy的博客

关注微信公众号【Java之言】,助你放弃编程。
私信 关注
Μr.ηobοdy
码龄6年

更多技术分享,关注公众号【Java之言】

  • 181,290
    被访问量
  • 105
    原创文章
  • 24,805
    作者排名
  • 3,252
    粉丝数量
  • 于 2014-10-31 加入CSDN
  • 入选《Java领域内容榜》第22名
获得成就
  • 获得547次点赞
  • 内容获得386次评论
  • 获得2,966次收藏
荣誉勋章
兴趣领域
  • #安全
    #web安全
  • #运维
    #网络#系统架构#Linux/CentOS#运维开发#安全#Jenkins#Kubernetes/容器
  • #后端
    #Spring Boot#架构#Elasticsearch#分布式#Java#Linux#MySQL#Redis
TA的专栏
  • Spring Boot
    14篇
  • 后端技术
    1篇
  • Redis
    4篇
  • 技巧小妙招
    1篇
  • 数据结构与算法
    4篇
  • 笔记
  • 算法
    3篇
  • 开发工具安装配置教程
    9篇
  • IDEA
    6篇
  • Maven
    1篇
  • java高级
    18篇
  • 源码分析
    2篇
  • Linux
    15篇
  • 运维
    3篇
  • 异常排查教程
    3篇
  • java基础
    7篇
  • 面试专属
    5篇
  • logback
    3篇
  • Nginx
    3篇
  • 最近
  • 文章
  • 资源
  • 问答
  • 课程
  • 帖子
  • 收藏
  • 关注/订阅

《Java8新特性之方法引用》, 一起来围观吧 https://blog.csdn.net/chenlixiao007/article/details/106677257?utm_source=app&app_version=4.5.2

 
发布Blink于 9 小时前

《你不知道的Scheduled定时任务骚操作》, 一起来围观吧 https://blog.csdn.net/chenlixiao007/article/details/114296645?utm_source=app&app_version=4.5.2

 
发布Blink于 4 天前

你不知道的Scheduled定时任务骚操作

系列文章目录提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加例如:第一章 Python 机器学习入门之pandas的使用提示:写完文章后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录系列文章目录前言一、什么是定时任务二、项目依赖三、注解式定时任务3.1 cron3.2 fixedDelay3.3 fixedDelayString3.4 fixedRate3.5 fixedRateString3.6 initialDelay 和 initialDelayString3.7
原创
4489阅读
26评论
26点赞
发布博客于 5 天前

《手把手教你手写一个最简单的 Spring Boot Starter》, 一起来围观吧 https://blog.csdn.net/chenlixiao007/article/details/106246305?utm_source=app&app_version=4.5.2

 
发布Blink于 8 天前

《【Spring系列】应用启动后回调机制CommandLineRunner和ApplicationRunner接口》, 一起来围观吧 https://blog.csdn.net/chenlixiao007/article/details/113881768?utm_source=app&app_version=4.5.2

 
发布Blink于 12 天前

【Spring系列】应用启动后回调机制CommandLineRunner和ApplicationRunner接口

关注微信公众号【Java之言】,更多干货文章和学习资料,助你放弃编程之路!文章目录一、前言二、CommandLineRunner 接口说明三、ApplicationRunner 接口说明一、前言如果我们想在应用启动时,搞事情,并且在整个应用生命周期只搞一次,有什么办法呢?比如在应用启动的时候,提前从数据库加载一些数据,提前加载加密证书等。其实 SpringBoot 有2大法宝可以做到,CommandLineRunner 和 ApplicationRunner 接口。这2个接口里面都只有一个 .
原创
386阅读
8评论
3点赞
发布博客于 16 天前

《【Spring系列】使用InitializingBean和DisposableBean来管理bean的生命周期》, 一起来围观吧 https://blog.csdn.net/chenlixiao007/article/details/113864517?utm_source=app&app_version=4.5.2

 
发布Blink于 16 天前

【Spring系列】使用InitializingBean和DisposableBean来管理bean的生命周期

文章目录前言一、Bean 的生命周期一、InitializingBean 接口说明二、使用步骤1.引入库2.读入数据总结前言提示:这里可以添加本文要记录的大概内容:例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容。提示:以下是本篇文章正文内容,下面案例可供参考一、Bean 的生命周期通常意义上讲的bean的名称周期,指的是bean从创建到初始化,经过一系列的流程,最终销毁的过程。只不过,在Spring中,bean的生命周
原创
508阅读
18评论
3点赞
发布博客于 16 天前

Redis入门到超神 - 04 redis的5种数据结构

关注微信公众号【Java之言】,更多干货文章和学习资料,助你放弃编程之路!序号标题01Redis入门到超神 - 01 Redis介绍与安装02Redis入门到超神 - 02 Redis为什么默认16个数据库03Redis入门到超神 - 03 redis.conf配置文件详解04Redis入门到超神 - 04 redis的5种数据结构Redis 五种数据结构String 字符串String 类型是 redis 中最基本的数据类型,一个 key 对.
原创
3675阅读
4评论
4点赞
发布博客于 20 天前

Redis入门到超神 - 03 redis.conf配置文件详解

关注微信公众号【Java之言】,更多干货文章和学习资料,助你放弃编程之路!序号标题01Redis入门到超神 - 01 Redis介绍与安装02Redis入门到超神 - 02 Redis为什么默认16个数据库03Redis入门到超神 - 03 redis.conf配置文件详解注意,redis配置文件中的单位是不区分大小写的,比如 1GB 1Gb 1gB 都是一样的。并且各单位转换关系如下:1k => 1000 bytes1kb => 102.
原创
2279阅读
3评论
3点赞
发布博客于 21 天前

Redis入门到超神 - 02 Redis为什么默认16个数据库

关注微信公众号【Java之言】,更多干货文章和学习资料,助你放弃编程之路!通过Redis客户端连接工具可以看到,Redis默认有16个数据库。由于Redis不支持自定义数据库的名字,所以每个数据库都以编号命名。其实通过redis配置文件 redis.conf 也可以看出默认是16个数据库。我们连接redis默认使用的是0号数据库,可以通过命令 select dbid 进行切换,编号是 0 至 databases-1。如果我们将配置文件中的 databases 16 改为 databases.
原创
872阅读
0评论
4点赞
发布博客于 21 天前

Redis入门到超神 - 01 Redis介绍与安装

关注微信公众号【Java之言】,更多干货文章和学习资料,助你放弃编程之路!文章目录一、什么是Redis二、为什么要用Redis三、Redis线程模型四、Redis安装4.1 Linux下安装Redis4.2 Windows下安装Redis4.2.1 前台启动 Redis 服务4.2.2 服务方式安装启动一、什么是RedisRedis(Remote Dictionary Server ),即远程字典服务,是一个开源的使用 ANSI C 语言编写、支持网络、可基于内存亦可持久化的日志型、Key-.
原创
1276阅读
0评论
2点赞
发布博客于 21 天前

静态代理,JDK动态代理,Cglib动态代理详解

关注微信公众号【Java之言】,更多干货文章和学习资料,助你放弃编程之路!文章目录一、代理模式二、静态代理三、动态代理一、代理模式代理模式(Proxy Pattern)是程序设计中的一种设计模式,他的特征是代理类和委托类实现有同样的接口,代理类主要负责为委托类预处理消息、过滤消息、把消息转发给委托类,以及事后处理消息等。代理类与委托类之间通常会存在关联关系,一个代理类对象与一个委托类对象(目标对象)关联,代理类对象本身并不真正实现服务,而是通过调用委托类对象的相关方法,来提供特定的服务。.
原创
1452阅读
17评论
5点赞
发布博客于 23 天前

牛呀牛呀

发布Blink于 28 天前

像不像某动,某通,某信

发布Blink于 29 天前

《互联网大厂是如何处理全局异常的?》, 一起来围观吧 https://blog.csdn.net/chenlixiao007/article/details/113729199?utm_source=app&app_version=4.5.2

 
发布Blink于 29 天前

互联网大厂是如何处理全局异常的?

关注微信公众号【Java之言】,更多干货文章和学习资料,助你放弃编程之路!文章目录一、为何要处理全局异常?二、开发环境三、添加依赖四、自定义异常错误类4.1 自定义异常基础接口类4.2 通用异常信息枚举类4.3 业务异常信息枚举类4.4 自定义业务异常类五、接口返回统一格式六、全局异常处理七、测试7.1 辅助类7.2 测试结果一、为何要处理全局异常?在平常项目开发过程中,程序难免会出现运行时异常,或者业务异常。难道要针对每一处可能出现的异常进行编写代码进行处理?或者直接不处理异常,将一大屏堆.
原创
1970阅读
13评论
5点赞
发布博客于 29 天前

《Windows 环境安装 Mysql 8》, 一起来围观吧 https://blog.csdn.net/chenlixiao007/article/details/106155534?utm_source=app&app_version=4.5.2

 
发布Blink于 1 月前

《最受程序猿喜爱的10张壁纸》, 一起来围观吧 https://blog.csdn.net/chenlixiao007/article/details/113589166?utm_source=app&app_version=4.5.0

 
发布Blink于 1 月前

最受程序猿喜爱的10张壁纸

关注微信公众号【Java之言】,领取高清原图壁纸。1. Source Code2. 三think而后coding3. caffeine into code4. 代码没写完,哪有脸睡觉5. 0101 雨6. 我只是一个黑客7. 关机键8. PHP专属9. 编程是一种艺术形式10. 从全世界寻找你关注微信公众号,获取高清原图壁纸...
原创
1636阅读
0评论
5点赞
发布博客于 1 月前

《我使用 Lambda 表达式将上百行的代码精简到几行》, 一起来围观吧 https://blog.csdn.net/chenlixiao007/article/details/106366676?utm_source=app&app_version=4.5.0

 
发布Blink于 1 月前

我使用 Lambda 表达式将上百行的代码精简到几行

1:Lambda表达式(核心)Lambda是一个匿名函数,我们可以把Lambda表达式理解为是一段可传递的代码(像数据一样传递)。这样我们就可以写出更简洁,更灵活的代码。作为一种更加紧凑的代码风格,使java的语言表达能力得到了提升。2:函数式接口3:方法引用与构造器引用4:强大的 Stream API(核心)5:接口中的默认方法和静态方法6:新时间日期 API7:其他新特性速度更快HashMap的优化,我们知道JDK8之前,碰撞的元素是存放在链表的前面的,而JDK8之后,如果每个链表的
原创
10320阅读
43评论
50点赞
发布博客于 2 月前

《玩转 Java8 Optional,让你代码更紧凑简洁且不再出现空指针》, 一起来围观吧 https://blog.csdn.net/chenlixiao007/article/details/113358813?utm_source=app&app_version=4.5.0

 
发布Blink于 2 月前

玩转 Java8 Optional,让你代码更紧凑简洁且不再出现空指针

聆听 沉淀 传播 … 关注微信公众号【Java之言】,助你放弃编程之路!系列文章目录序号标题文章链接1玩转 Java8 Stream,让你代码更高效紧凑简洁https://blog.csdn.net/chenlixiao007/article/details/112752413文章目录系列文章目录一、Optional 是什么?二、Optional 有什么用?三、Optional 源码详解四、Optional 类的使用4.1 Optional 对象创建4.2 get(.
原创
2956阅读
9评论
10点赞
发布博客于 2 月前

大多数人不知道的Java知识 - Introspector(内省器)和 PropertyDescriptor(属性描述器)

大多数人不知道的Java知识 - Introspector(内省器)和 PropertyDescriptor(属性描述器)
发布Blink于 2 月前

大多数人不知道的Java知识 - Introspector(内省器)和 PropertyDescriptor(属性描述器)

聆听 沉淀 传播 … 关注微信公众号【Java之言】,助你放弃编程之路!文章目录一、Introspector 简洁二、BeanInfo 简介三、PropertyDescriptor 简介四、BeanDescriptor 简介五、案例实践一、Introspector 简洁官方介绍:The Introspector class provides a standard way for tools to learn about the properties, events, and methods.
原创
1103阅读
1评论
3点赞
发布博客于 2 月前

思路讲解与算法实现 LeetCode - 实现 strStr()

聆听 沉淀 传播 … 关注微信公众号【Java之言】,助你放弃编程之路!每天一道算法题,讲解自己解题思路与实现;欢迎大家点评或者说出你的解题想法;也可评论想让我讲解哪道题!文章目录题目一、思路二、算法实现三、上下篇题目实现 strStr() 函数。给定一个 haystack 字符串和一个 needle 字符串,在 haystack 字符串中找出 needle 字符串出现的第一个位置 (从0开始)。如果不存在,则返回 -1。当 needle 是 空字符串 时我们应当返回 0 。示例1:.
原创
1055阅读
4评论
2点赞
发布博客于 2 月前

思路讲解与算法实现 LeetCode - 数组形式的整数加法

聆听 沉淀 传播 … 关注微信公众号【Java之言】,助你放弃编程之路!每天一道算法题,讲解自己解题思路与实现;欢迎大家点评或者说出你的解题想法;也可评论想让我讲解哪道题!文章目录题目一、思路二、算法实现三、上下篇题目对于非负整数 X 而言,X 的数组形式是每位数字按从左到右的顺序形成的数组。例如,如果 X = 1231,那么其数组形式为 [1,2,3,1]。给定非负整数 X 的数组形式 A,返回整数 X+K 的数组形式。示例1:输入:A = [1,2,0,0], K = 34输出.
原创
851阅读
0评论
2点赞
发布博客于 2 月前

玩转 Java8 Stream,让你代码更高效紧凑简洁

玩转 Java8 Stream,让你代码更高效紧凑简洁
发布Blink于 2 月前

思路讲解与算法实现 LeetCode - 两数相加

聆听 沉淀 传播 … 关注微信公众号【Java之言】,助你放弃编程之路!每天一道算法题,讲解自己解题思路与实现;欢迎大家点评或者说出你的解题想法;也可评论想让我讲解哪道题!文章目录题目一、思路二、算法实现题目给你两个 非空 的链表,表示两个非负的整数。它们每位数字都是按照 逆序 的方式存储的,并且每个节点只能存储 一位 数字。请你将两个数相加,并以相同形式返回一个表示和的链表。你可以假设除了数字 0 之外,这两个数都不会以 0 开头。示例1:输入:l1 = [2,4,3], l2.
原创
1193阅读
0评论
2点赞
发布博客于 2 月前

《思路讲解与算法实现 LeetCode - 两数之和》 https://blog.csdn.net/chenlixiao007/article/details/112974915?utm_source=app

 
发布Blink于 2 月前

思路讲解与算法实现 LeetCode - 两数之和

聆听 沉淀 传播 … 关注微信公众号【Java之言】,助你放弃编程之路!每天一道算法题,讲解自己解题思路与实现;欢迎大家点评或者说出你的解题想法;也可评论想让我讲解哪道题!文章目录题目一、思路二、算法实现题目给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 的那 两个 整数,并返回它们的数组下标。你可以假设每种输入只会对应一个答案。但是,数组中同一个元素不能使用两遍。你可以按任意顺序返回答案。示例1:输入:nums = [2,7,11,15.
原创
2411阅读
22评论
8点赞
发布博客于 2 月前

《玩转 Java8 Stream,让你代码更高效紧凑简洁》, 一起来围观吧 https://blog.csdn.net/chenlixiao007/article/details/112752413?utm_source=app

 
发布Blink于 2 月前

《玩转 Java8 Stream,让你代码更高效紧凑简洁》, 一起来围观吧 https://blog.csdn.net/chenlixiao007/article/details/112752413?utm_source=app

 
发布Blink于 2 月前

玩转 Java8 Stream,让你代码更高效紧凑简洁

聆听 沉淀 传播 … 关注微信公众号【Java之言】,助你放弃编程之路!文章目录前言一、Stream 特性二、Stream 创建2.1 用集合创建流2.2 用数组创建流2.3 Stream静态方法三、Stream 使用案例3.1 遍历 forEach3.2 过滤 filter3.3 查找 findFirst,findAny3.4 匹配 match3.5 映射 map3.6 截取流 limit3.7 排序 sorted3.8 去重 distinct3.9 统计前言Java 8 (又称为 jdk.
原创
9195阅读
60评论
85点赞
发布博客于 2 月前

我用#CSDN#这个app发现了有技术含量的博客,小伙伴们求同去《Windows 环境下安装 MongoDB》, 一起来围观吧 https://blog.csdn.net/chenlixiao007/article/details/107968119?utm_source=app

 
发布Blink于 3 月前

Linux CentOS7 环境下安装 MongoDB

聆听 沉淀 传播 … 关注微信公众号【架构技术之美】,了解更多技术和学习资料Mongo 相关文章标题文章连接Windows 环境下安装 MongoDBhttps://blog.csdn.net/chenlixiao007/article/details/107968119Mongodb 配置文件详解编写中文章目录一、演示环境二、安装包下载三、软件安装和启动四、其他配置4.1 开放端口4.2 检查mongodb服务状态4.3 关闭mongodb4.4 开机自启动一.
原创
2302阅读
11评论
4点赞
发布博客于 3 月前

我用#CSDN#这个app发现了有技术含量的博客,小伙伴们求同去《Windows 环境下安装 MongoDB》, 一起来围观吧 https://blog.csdn.net/chenlixiao007/article/details/107968119?utm_source=app

 
发布Blink于 3 月前

SpringBoot配置多环境配置文件

聆听 沉淀 传播 … 关注微信公众号【架构技术之美】,了解更多技术和学习资料文章目录一、前言二、单个配置实现多环境配置三、多个配置文件形式四、激活配置文件方式五、配置文件加载顺序一、前言对于springboot工程,在不同环境(例如dev,test,prod等)可能有不同的配置信息(配置在application.yml或application.properties中),例如swagger.enable这个变量,在dev和test环境值为true,在prod环境的值为false。在sprin.
原创
924阅读
0评论
2点赞
发布博客于 3 月前

我用#CSDN#这个app发现了有技术含量的博客,小伙伴们求同去《Linux CentOS 环境下安装JDK的三种方法》, 一起来围观吧 https://blog.csdn.net/chenlixiao007/article/details/109688767?utm_source=app

 
发布Blink于 3 月前

Linux CentOS 环境下安装JDK的三种方法

聆听 沉淀 传播 … 关注微信公众号【架构技术之美】,了解更多技术和学习资料文章目录一、环境二、本地安装包(.tar.gz)安装三、yum在线安装四、rpm命令安装一、环境操作系统:Linux CentOS 8JDK版本:1.8二、本地安装包(.tar.gz)安装1:在/opt目录下创建jdk目录,进入到jdk目录,上传.tar.gz到此目录mkdir /opt/jdkcd /opt/jdk2:解压压缩包,会在jdk目录下生成jdk1.8.0_212目录tar -zxvf jd.
原创
1001阅读
0评论
2点赞
发布博客于 3 月前

我用#CSDN#这个app发现了有技术含量的博客,小伙伴们求同去《SpringBoot整合mongoDB并配置连接池》, 一起来围观吧 https://blog.csdn.net/chenlixiao007/article/details/109557511?utm_source=app

 
发布Blink于 3 月前

SpringBoot整合mongoDB并配置连接池

聆听 沉淀 传播 … 关注微信公众号【架构技术之美】,了解更多技术和学习资料目录前言一、引入依赖1.1 Maven1.2 Gradle二、配置文件三、MongoConfig配置类四、总结前言SpringBoot为方便整合MongoDB,提供了相应的启动器,即spring-boot-starter-data-mongodb。然后我们就可以用它提供的MongoTemplate类来操作数据库了。当然,SpringBoot也提供了相应的类让我们能自定义配置连接池。我们在配置类中主要与MongoClien.
原创
1248阅读
6评论
2点赞
发布博客于 4 月前

我用#CSDN#这个app发现了有技术含量的博客,小伙伴们求同去《SpringBoot之HandlerInterceptor拦截器的使用》, 一起来围观吧 https://blog.csdn.net/chenlixiao007/article/details/109270008?utm_source=app

 
发布Blink于 4 月前

SpringBoot之HandlerInterceptor拦截器的使用

聆听 沉淀 传播 … 关注微信公众号【架构技术之美】,了解更多技术和学习资料目录前言一、实现方式二、HandlerInterceptor 方法介绍三、拦截器(Interceptor)实现3.1 实现HandlerInterceptor3.2 继承HandlerInterceptorAdapter四、配置器(WebMvcConfigurer)实现4.1 实现WebMvcConfigurer(推荐)4.2 继承WebMvcConfigurationSupport五、测试验证六、Github项目前言平常.
原创
3635阅读
21评论
3点赞
发布博客于 4 月前

Linux目录详解以及软件安装规范

聆听 沉淀 传播 … 关注微信公众号【架构技术之美】,了解更多技术和学习资料目录一、前言二、目录介绍三、建议一、前言我们在使用Linux服务器过程中,会困惑系统自带的每个目录的作用是什么?以及我们软件安装该安装在哪个目录下比较合适?以至于不会混乱,方便后续查找文件乃至软件安装的位置。二、目录介绍/usr:系统级的目录,可以理解为C:\Windows\。/usr/lib:可以理解为C:\Windows\System32\。/usr/local:用户级的程序目录,可以理解为C:\Pr.
原创
1817阅读
15评论
6点赞
发布博客于 4 月前

JDBC 连接 MySQL 报错 Unknown system variable ‘query_cache_size‘

文章目录前言一、原因分析二、版本对应表三、解决办法2.1 引入更高版本的驱动2.2 修改连接配置信息前言最近在使用mybatis-generator数据库逆向生成工具时,出现了如下图的错误,即java.sql.SQLException: Unknown system variable 'query_cache_size'。一、原因分析检查连接的数据库版本是8.0.20项目使用的JDBC驱动mysql-connector-java的版本是5.1.41在MYSQL官网查询相关文档官网说法:
原创
939阅读
0评论
2点赞
发布博客于 4 月前

浅谈 SimpleDateFormat,第三方库joda-time,JDK8提供时间类 之性能和线程安全

关注微信公众号 架构技术之美 ,学习更多技术和学习资料。文章目录一、java.text.SimpleDateFormat线程不安全,抛出异常写法:线程安全写法:二、joda-time三、java.time.format.DateTimeFormatter一、java.text.SimpleDateFormatjava.text.SimpleDateFormat 的实例对象在多线程共享使用的时候会抛出转换异常,正确的使用方法应该是采用堆栈封闭,将其作为方法内的局部变量而不是全局变量,在每次调用方法.
原创
955阅读
0评论
2点赞
发布博客于 5 月前

浅谈 String StringBuilder StringBuffer 之性能和线程安全

关注微信公众号 架构技术之美 ,学习更多技术和学习资料。文章目录一、String 字符串常量二、StringBuffer 字符串变量三、StringBuilder 字符串变量四、总结一、String 字符串常量String 是不可变对象,每次对 String 对象进行改变都会生成一个新的 String 对象,然后将指针指向新的 String 对象,故经常改变内容的字符串最好不要用 String 。因为每次生成对象都会对系统性能产生影响,特别当内存中无引用对象多了以后, JVM 的 GC 就会开始.
原创
1641阅读
0评论
2点赞
发布博客于 5 月前

IDEA 查看类的继承结构与关系图

IDEA 相关文章标题文章连接大厂通用最全IDEA使用手册https://blog.csdn.net/chenlixiao007/article/details/106952976IDEA 项目与模块详解https://blog.csdn.net/chenlixiao007/article/details/108248475IDEA 创建Project和多个Modulehttps://blog.csdn.net/chenlixiao007/article/detail
原创
1034阅读
0评论
3点赞
发布博客于 5 月前

异或高效算法

聆听 沉淀 传播… 关注微信公众号【架构技术之美】,学习更多技术和学习资料文章目录Ⅰ 异或运算Ⅱ 异或实现两个数交换Ⅲ 异或高效解决算法问题题目1题目2题目3题目4Ⅰ 异或运算1 ^ 0 = 11 ^ 1 = 00 ^ 0 = 00 ^ 1 = 10 ^ N = NN ^ N = 0异或满足结合律和交换律:A ^ B = B ^ A;A ^ B ^ C = A ^ (B ^ C)Ⅱ 异或实现两个数交换正常实现2个数的交换,我们可以会借助第三个临时变量来实现:private.
原创
1332阅读
0评论
2点赞
发布博客于 6 月前

最骚操作的二分查找,秀儿?

聆听 沉淀 传播… 关注微信公众号【架构技术之美】,学习更多技术和学习资料文章目录你不知道的事骚算法测试测试结果你不知道的事你肯定听说过在有序数组中,通过二分算法查找等于指定的值?但是…你是否听说过在有序数组中,通过二分算法查找大于等于指定的值的最左下标?你是否听说过在有序数组中,通过二分算法查找小于等于指定的值的最右下标?你是否听说过在无序数组中,也可以用二分算法?是否指定局部最小值问题?骚算法package com.nobody.search;/** * @au.
原创
2758阅读
2评论
4点赞
发布博客于 6 月前

冒泡排序 选择排序 插入排序

聆听 沉淀 传播… 关注微信公众号【架构技术之美】,学习更多技术和学习资料文章目录插入排序选择排序冒泡排序插入排序package com.nobody.sort;/** * @author Mr.nobody * @Description 插入排序 * @date 2020/9/5 */public class Code01_InsertionSort { public static void insertionSort(int[] arr) { // 数组.
原创
1339阅读
0评论
1点赞
发布博客于 6 月前

阿里P8教你Java注解与反射

文章目录ⅰ 什么是注解ⅱ 内置注解ⅲ 自定义注解ⅳ 注解案例ⅰ 什么是注解Java 注解(Annotation)又称 Java 标注,是 JDK5.0 引入的一种注释机制。 Java 语言中的类、方法、变量、参数和包等都可以被标注。和 Javadoc 不同,Java 标注可以通过反射获取标注内容。在编译器生成类文件时,标注可以被嵌入到字节码中。Java 虚拟机可以保留标注内容,在运行时可以获取到标注内容 。 当然它也支持自定义 Java 标注。注解以@注解名的形式存在于代码中,例如@Overri
原创
1491阅读
0评论
3点赞
发布博客于 6 月前

阿里巴巴Java开发编码规约与IDEA集成

文章目录IDEA 相关文章Ⅰ 阿里巴巴代码规约插件安装Ⅱ 插件使用Ⅲ Alibaba Java 开发规范手册下载IDEA 相关文章标题文章连接大厂通用最全IDEA使用手册https://blog.csdn.net/chenlixiao007/article/details/106952976IDEA 项目与模块详解https://blog.csdn.net/chenlixiao007/article/details/108248475IDEA 创建Project和多个
原创
2529阅读
0评论
4点赞
发布博客于 6 月前

IDEA 创建不同类型 Project 和 Module 详解

文章目录Ⅰ 创建空项目(Project)Ⅱ 创建普通Java模块(Module)Ⅲ 创建Maven模块(Module)Ⅳ 创建Gradle模块(Module)ⅤⅥⅦⅧⅨⅩⅪ在IDEA中,Project相当于Eclipse中的workspace,Module相当于Eclipse中的Project。在IDEA中,Project下面可以创建多个Module,Module可以是Maven项目,Gradle项目,普通Java项目,或者web项目等等。Ⅰ 创建空项目(Project)Ⅱ 创建普通Jav
原创
4934阅读
0评论
7点赞
发布博客于 6 月前

Spring Boot CommandLineRunner接口详解

文章目录如何使用CommandLineRunner接口配合@Component注解使用配合@SpringBootApplication注解使用多个CommandLineRunner实现类的执行顺序问题实际应用中,会有在项目服务启动的时候就去加载一些数据或做一些事情的情况。为了解决这样的问题,Spring Boot 为我们提供了一个方法,通过实现接口 CommandLineRunner 来实现,实现功能的代码放在实现的run方法中。这段初始化代码在整个应用生命周期内只会执行一次。而且我们可以在run()
原创
1359阅读
0评论
3点赞
发布博客于 6 月前

Markdown 写文档做笔记的利器

文章目录1 常用编辑器2 基本用法3 语法规则3.1 标题3.2 列表无序列表(*,+,-)有序列表(数字+点号)3.3 文字格式3.4 链接3.5 图片3.6 引用3.7 水平分隔线3.8 代码块(反引号`)代码句代码段3.9 表格3.10 目录3.11 转义字符Typora 设置4.1 主题设置4.2 图片设置4.3 通用设置Markdown是一种轻量级标记语言。它允许人们使用易读易写的纯文本格式编写文档,然后转换成有效的XHTML(或者HTML)文档。由于Markdown的轻量化、易读易写特
原创
1391阅读
0评论
1点赞
发布博客于 6 月前

IDEA 中 Project 和 Module 详解与实战

目录1 在IDEA中,选择File->New->Project2 选择Maven,并选择JDK版本3 填写Project名和存放位置4 删除src目录5 选中Project名称,右键,New->Module6 选择Maven,勾选Create from archetype,点击自己需要的类型7 填写Module相关信息8 最终创建完成效果在IDEA中,Project与Eclipse中的workspace相似,在Project下面还可以创建多个Module。Module可以是Maven项
原创
4850阅读
0评论
3点赞
发布博客于 6 月前

Windows 环境下安装 MongoDB

目录安装包下载软件安装配置启动命令行方式启动服务的方式启动设置用户和密码安装包下载官网下载地址:https://www.mongodb.com/try/download/community百度云下载:链接:https://pan.baidu.com/s/1ZyfqhPtGIxhPy_4Q2IokPA提取码:v515软件安装勾选接受同意许可选择自定义模式选择安装路径安装成功界面配置启动在安装主目录下创建data文件夹,并在data文件夹下再创建db文件夹和log文件夹。db文件夹
原创
1009阅读
4评论
3点赞
发布博客于 6 月前

你的代码被封存在北极了吗?🌝🌝

发布Blink于 7 月前

VMware Workstation Pro 安装 CentOS 8

假如根目录/被写满了,Linux系统又可能启动不了。所以推荐分配一个启动分区/boot,用于保存系统启动相关数据。发现磁盘或者光盘,是否需要检测。因为这光盘是我们自己下载的,是好的,可以不检测。选择Skip。...
原创
1007阅读
0评论
1点赞
发布博客于 7 月前

养猫爽,一直养一直爽。

发布Blink于 7 月前

大厂通用最全IDEA使用手册

一:IDEA介绍1 IDEA 简介IDEA全称IntelliJ IDEA,是用于java语言开发的集成环境(也可用于其他语言),IntelliJi在业界被公认为最好的java开发工具之一,尤其在智能代码助手、代码自动提示、重构、J2EE支持、Ant、JUnit、 CVS整合、代码审查、创新的GUI设计等方面的功能可以说是超常的。IDEA是JetBrains公司的产品,这家公司总部位于捷克共和国的首都布拉格,开发人员以严谨著称的东欧程序员为主。对于IDEA,JetBrans 公司提出的最新口号是Capa
原创
27144阅读
71评论
165点赞
发布博客于 6 月前

深入了解NIO底层原理

Redis 为何能支持高并发?Redis底层采用NIO中的多路IO复用的机制,很好地支持高并发,并且能实现线程安全。Redis官方没有windows版本,只有Linux版本。NIO在不同的操作系统上实现的方式有所不同,在Windows操作系统使用select实现轮训,而且还存在空轮训的情况,效率非常低。时间复杂度是为O(n)。其次默认对轮训的数据有一定限制,所以难于支持上万的TCP连接。在Linux操作系统采用epoll实现事件驱动回调,不会存在空轮训的情况,只对活跃的socket连接实现主动回调,
原创
1048阅读
0评论
2点赞
发布博客于 8 月前

基于Sentinel实现服务保护

目录一:服务保护基本概念1.1 服务限流 / 熔断1.2 服务降级1.3 服务雪崩二:Sentinel 与 Hytrix 区别三:Sentinel 环境搭建四:Springboot 整合 Sentinel4.1 纯代码形式4.2注解形式一:服务保护基本概念服务接口保护一些常见措施黑名单和白名单 对IP进行限流和熔断 服务降级 服务隔离1.1 服务限流 / 熔断服务限流目的是为了更好的保护服务,在高并发的情况下,如果客户端请求的数量达到一定阈值(可.
原创
1313阅读
0评论
3点赞
发布博客于 8 月前

IntelliJ IDEA 设置背景图片

有时我们觉得IDEA默认的主题太单调了,想换个背景图,这样才能码出高质量代码。效果图如下:1:下载安装插件,路径为 File - Settings - Plugins,搜索Background Image,选择插件安装,然后重启IDEA。2:上传背景图片,并设置透明度,路径为 File - Settings - Appearance & Behavior - Appearance。...
原创
1744阅读
0评论
2点赞
发布博客于 8 月前

Windows 服务器全套部署 Java 服务 -- JDK Redis Springboot

前言最近做一个项目,实现用户免密单点登录腾讯企业邮箱https://exmail.qq.com/。项目是Springboot + Redis类型,客户给予的是一台未配置Java环境的Windows服务器。所以需要先搭建Java环境,再将Java服务部署上去。对腾讯企业邮箱免密单点登录感兴趣的可以到官方开发者中心研究:https://exmail.qq.com/qy_mng_logic/doc#10036一:Java环境配置1.1 安装并配置JDKJDK下载,因为项目用到的是Springboot2
原创
2861阅读
0评论
1点赞
发布博客于 8 月前

酷炫动态代码时钟 向你的女神展示吧

效果图1:桌面鼠标右键 - 新建 - 文本文档2:打开新建的文档,输入以下内容,保存。<!DOCTYPE html><html lang="zh"><head> <meta charset="UTF-8" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" /> <title>Clock</title>
原创
2287阅读
2评论
6点赞
发布博客于 8 月前

Java8新特性之方法引用

一:什么是方法引用我们知道Lambda表达式可以分为三部分,例如,() -> System.out.println("Hello World!"); 可以简单分为三部分左括号:Lambda的形参列表,也就是接口里面那个抽象方法的形参列表。 箭头:Lambda的操作符,可以理解为参数和Lambda体的分隔符。 Lambda体:好比是实现了接口中的抽象方法的方法体。有些情况下,Lambda体可能是仅调用一个已存在的方法,而不做任何其它事,对于这种情况,通过一个方法名字来引用这个已存在的方法会
原创
1203阅读
1评论
4点赞
发布博客于 9 月前

23种设计模式之策略模式

一:何为设计模式(Design pattern)?设计模式是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性、程序的重用性。二:设计模式六大原则1:开闭原则(open closed principle)就是说模块应对扩展开放,而对修改关闭。模块应尽量在不修改原(是"原",指原来的代码)代码的情况下进行扩展。2:里氏替换原则(LSP liskov substitution principle)如果调用的是父类的话
原创
1089阅读
0评论
3点赞
发布博客于 9 月前

my-executor-service.zip

本人自定义纯手写的线程池代码功能,代码注释简单明了,开箱即用,即不用做任务修改即可run起来。希望可以帮助大家!
zip
发布资源于 9 月前

纯手写线程池

线程池定义类package com.nobody;import java.util.ArrayList;import java.util.List;import java.util.concurrent.BlockingQueue;import java.util.concurrent.LinkedBlockingQueue;/** * 自定义线程池 * 本实现没考虑空闲线程处理,拒绝策略等,后续再将这部分补上。 * 有兴趣者可以自行实现下。 * * @author Μr.ηob
原创
1172阅读
0评论
5点赞
发布博客于 9 月前

测试TXIubm9ib2R5

原创
806阅读
0评论
0点赞
发布博客于 9 月前

Linux 安装 mongoDB

Linux操作系统版本Ubuntu 16.041:下载官网:https://www.mongodb.com/download-center百度云:链接:https://pan.baidu.com/s/1AXnfhGMQ8gETB2LQpyFLdA 提取码:cgt02:安装2.1:通过ftp工具上传或者在linux窗口使用rz命令将安装包上传到linux。2.2:使用tar -zxvf 安装包名称命令解压。2.3:移动和重命名,一般移动到/usr/local目录下,命令mv 解压后文件名 目
原创
801阅读
0评论
2点赞
发布博客于 9 月前

小白到高手 Lua 超详细教程

一:Lua是什么?Lua是一种轻量小巧的脚本语言,用标准C语言编写并以源代码形式开放,其设计目的是为了嵌入应用程序中,从而为应用程序提供灵活的扩展和定制功能。Lua可以很方便地与其他程序(c++,c#,java等等)进行集成。Lua 是巴西里约热内卢天主教大学(Pontifical Catholic University of Rio de Janeiro)里的一个研究小组于 1993 年开发的,该小组成员有:Roberto Ierusalimschy、Waldemar Celes 和 Luiz He
原创
954阅读
0评论
1点赞
发布博客于 9 月前

查看Linux系统版本信息的几种命令

1:查看Linux内核版本命令cat /proc/versionuname -a2:查看Linux系统版本的命令lsb_release -acat /etc/issue
原创
768阅读
0评论
2点赞
发布博客于 9 月前

并发编程 线程池以及@Async注解的使用

建议先看我另外一篇文章:并发编程使用了 线程池 ThreadPoolExecutor 程序性能有了质的突破开发环境SpringBoot 2.1.10.RELEASEJDK 1.81:启动类添加@EnableAsync注解package com.nobody;import org.springframework.boot.SpringApplication;import org.springframework.boot.autoconfigure.SpringBootApplication
原创
815阅读
0评论
2点赞
发布博客于 9 月前

SpringBoot @Async 注解无效

开发环境SpringBoot 2.1.10.RELEASEJDK 1.8场景在一个类的方法中,调用同类的异步方法无效,例如以下示例:package com.nobody.controller;import java.util.concurrent.TimeUnit;import org.springframework.scheduling.annotation.Async;import org.springframework.web.bind.annotation.GetMappin
原创
784阅读
0评论
2点赞
发布博客于 9 月前

对线程中未捕获的异常进行处理UncaughtExceptionHandler

通常程序中我们会对可能出现的异常进行捕获,例如public static void main(String[] args) { System.out.println("##### beagin"); int dividend = 10; int divisor = 0; try { int result = dividend / divisor; } catch (Exception e) { System.out.pri
原创
786阅读
0评论
1点赞
发布博客于 9 月前

手把手教你手写一个最简单的 Spring Boot Starter

前言在SpringBoot项目中,大家使用最多的就是Starter了。那何为Starter呢?可以理解为一个可拔插式的插件(组件)。引入一个Starter,它会帮你合并依赖,无需过多的配置和依赖,SpringBoot会自动扫描并加载相应的模块。例如,如果你想使用jdbc插件,可以引入依赖spring-boot-starter-jdbc;如果你想使用mongodb,可以引入依赖spring-boot-starter-data-mongodb。Starter的功能:整合了模块需要的依赖库为开发者提供对
原创
806阅读
0评论
2点赞
发布博客于 9 月前

并发编程使用了 线程池 ThreadPoolExecutor 程序性能有了质的突破

如果一个程序只有一个线程,则后面的任务必须等到前面的任务结束后才能进行,如果使用多线程则在主线程执行前任务的同时,可以开辟其他线程执行其他任务,而不需要等待。特别是在多核处理器的环境,多线程程序能发挥多核处理器的性能。虽然与进程相比,线程轻量化很多,但其创建和关闭同样需要花费时间。而且线程多了以后,也会抢占内存资源。如果不对线程加以管理,是一个很大的隐患。而线程池的目的就是管理线程。当你需要一个线程时,你就可以拿一个空闲线程去执行任务,当任务执行完后,线程又会归还到线程池。这样就有效的避免了重复创建、关
原创
799阅读
0评论
2点赞
发布博客于 9 月前

com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException 异常解决

环境JDK1.8Mysql 8.0.20<!-- mysql依赖 --><dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>5.1.35</version></dependency>db.driver=com.mysql.jdbc.Driver
原创
780阅读
0评论
1点赞
发布博客于 9 月前

Windows 环境安装 Mysql 8

1:MySQL 下载https://dev.mysql.com/downloads/mysql/2:配置my.ini文件下载后将压缩包解压,解压后如下解压后的目录没有my.ini文件,需手动创建my.ini文件并写入基本配置:[mysqld]# 设置3306端口port=3306# 设置mysql的安装目录basedir=D:\devTools\mysql-8.0.20-winx64# 设置mysql数据库的数据的存放目录datadir=D:\devTools\mysql-8.0
原创
3156阅读
0评论
6点赞
发布博客于 9 月前

并发编程 CountDownLatch 不会?阿里面试官说到此为止吧!

CountDownLatch 是 java1.5 被引入的,是 java.util.concurrent 包下的一个同步工具类,它允许一个或多个线程等待,直到在其他线程中一组操作执行完成。CountDownLatch 主要有 countDown 方法和 await 方法。CountDownLatch 在初始化时,需要指定一个整数作为计数器。当调用 countDown 方法时,计数器会被减1;当调用await方法时,如果计数器大于0时,线程会被阻塞,直到计数器被 countDown 方法减到0时,线程才会继
原创
779阅读
0评论
2点赞
发布博客于 9 月前

你真的懂 i++ 和 ++i 吗?

示例// 示例1int i = 1;i = i++; System.out.println("i = " + i); // 示例2int i = 1; int j = (2 * i++) + i;System.out.println("j = " + j);// 示例3int i = 1; int j = i + (2 * i++);System.out.println("j = " + j);// 示例4int i = 1;int j = 1;int k = i++
原创
767阅读
1评论
2点赞
发布博客于 10 月前

Redis 缓存穿透 缓存击穿 缓存雪崩

一:缓存穿透1:概念举个栗子,当用户查询一个数据,首先查redis内存数据库发现没有,即缓存没命中。于是向持久层数据库(mongo,mysql等)查询,发现也没有,于是本次查询失败。当用户很多的时候,缓存都没有命中,于是都去请求了持久层数据库。这会给持久层数据库造成很大的压力,这就是缓存穿透。2:解决方案缓存空对象:当持久层数据库不命中后,即使返回的空对象也将其缓存起来,同时设置过期时间,之后再访问这个数据将会从缓存层中获取,不再访问持久层数据库,减少了数据库压力。不过这个有个场景会适得其反,假如
原创
676阅读
0评论
0点赞
发布博客于 10 月前

布隆过滤器 Bloom Filter

一:何为缓存穿透举个栗子,当用户查询一个数据,首先查redis内存数据库发现没有,即缓存没命中。于是向持久层数据库(mongo,mysql等)查询,发现也没有,于是本次查询失败。当用户很多的时候,缓存都没有命中,于是都去请求了持久层数据库。这会给持久层数据库造成很大的压力,这就是缓存穿透。缓存穿透和缓存击穿的区别:缓存击穿,是指一个key非常热点,在不停的扛着大并发,大并发集中对这一个点进行访问,当这个key在失效的瞬间,持续的大并发就穿破缓存,直接请求持久层数据库,就像在一个屏障上凿开了一个洞。二:
原创
810阅读
2评论
3点赞
发布博客于 10 月前

Java GC 各个变量含义 和 jstat 命令的使用

前言JDK版本 jdk1.8jstat [-命令选项] [vmid] [间隔时间/毫秒] [查询次数]1:变量解释S0C:年轻代中第一个survivor(幸存区)的容量 (kb)S1C:年轻代中第二个survivor(幸存区)的容量 (kb)S0U:年轻代中第一个survivor(幸存区)目前已使用空间 (kb)S1U:年轻代中第二个survivor(幸存区)目前已使用空间 (kb)EC:年轻代中Eden(伊甸园)的容量 (kb)EU:年轻代中Eden(伊甸园)目前已使用空间 (k
原创
841阅读
3评论
3点赞
发布博客于 10 月前

java 进程 cpu100%问题排查

1:前言cpu是时分(time division)的,操作系统里有很多线程,每个线程的运行时间由cpu决定,cpu会分给每个线程一个时间片,时间片是一个很短的时间长度,如果在时间片内,线程一直占有,则是100%;我们应该意识到,cpu运行速度很快(主频非常高),除非密集型耗费cpu的运算,其它类型任务都会在小于时间片的时间内结束。java cpu100%的排查步骤,基本都是一模一样的,只是命令...
原创
1184阅读
2评论
5点赞
发布博客于 10 月前

Java 集合框架源码解读之Vector

1:Vector简介Java中Vector类是允许不同类型元素共存的变长数组,Java.util.Vector提供了向量(Vector)类以实现类似动态数组的功能。在Java语言中是没有指针概念的,但如果能正确灵活地使用指针又确实可以大大提高程序的质量,比如在C、C++中所谓“动态数组”一般都由指针来实现。为了弥补这点缺陷,Java提供了丰富的类库来方便编程者使用,Vector类便是其中之一。...
原创
725阅读
0评论
0点赞
发布博客于 10 月前

jdk1.8 源码 (包含sun包)

安装的jdk目录下自带源码,但是源码不包含sun包。以下提供包含sun包的源码下载地址:openjdk官网下载:http://hg.openjdk.java.net/jdk8u/jdk8u/jdk/file/6bfaecb8ff77/src/share/classes/百度网盘下载:链接:https://pan.baidu.com/s/1hM5Dsp2lPLI-9LW0UMV2vQ提取码...
原创
1126阅读
0评论
2点赞
发布博客于 10 月前

Git使用教程:最详细、最傻瓜、最浅显、真正手把手教!

导读:因为教程详细,所以行文有些长,新手边看边操作效果出乎你的预料。GitHub虽然有些许改版,但并无大碍。一、Git是什么?Git是目前世界上最先进的分布式版本控制系统。工作原理 / 流程:Workspace:工作区Index / Stage:暂存区Repository:仓库区(或本地仓库)Remote:远程仓库二、SVN与Git的最主要的区别?SVN是集中式版本控制系统...
转载
731阅读
4评论
7点赞
发布博客于 10 月前

Java 生成 UUID

1:UUID简介UUID 是 通用唯一识别码(Universally Unique Identifier)的缩写,是一种软件建构的标准,亦为开放软件基金会组织在分布式计算环境领域的一部分。其目的,是让分布式系统中的所有元素,都能有唯一的辨识信息,而不需要通过中央控制端来做辨识信息的指定。如此一来,每个人都可以创建不与其它人冲突的UUID。在这样的情况下,就不需考虑数据库创建时的名称重复问题。目前...
原创
706阅读
0评论
2点赞
发布博客于 10 月前

Spring IOC 容器源码分析

Spring 最重要的概念是 IOC 和 AOP,本篇文章其实就是要带领大家来分析下 Spring 的 IOC 容器。既然大家平时都要用到 Spring,怎么可以不好好了解 Spring 呢?阅读本文并不能让你成为 Spring 专家,不过一定有助于大家理解 Spring 的很多概念,帮助大家排查应用中和 Spring 相关的一些问题。本文采用的源码版本是 4.3.11.RELEASE,算是 5...
转载
712阅读
2评论
1点赞
发布博客于 10 月前

Logback日志添加唯一追踪ID

问题描述日志是排查问题的重要依据,但是有时不容易定位报错信息,不明确哪条错误信息对应哪次请求。如果给日志加上唯一的追踪ID,排查就方便多了。每个请求打印的日志都会有不同的ID,哪个请求出错,根据ID来定位日志。这个ID还会返回给前端,前端发现报错直接把ID给后台人员进行定位分析。开发环境SpringBoot - 2.1.10.RELEASEJDK 1.8创建过滤器package ...
原创
1119阅读
0评论
0点赞
发布博客于 10 月前

Log4j格式化符号%详解

符号说明%d:输出日志时间时的当前时间,默认格式为ISO8601,可以在其后指定格式,如:%d{yyyy-MM-dd HH:mm:ss.SSS}。%p(或%level):输出日志信息的优先级,即ALL,TRACE,DEBUG,INFO,WARN,ERROR,FATAL,OFF。%r:输出自应用程序启动到输出该log信息耗费的毫秒数。%t(或%thread):输出产生该日志事件的线程名。...
原创
709阅读
0评论
0点赞
发布博客于 10 月前

第三章 Springboot 热部署

一:原理pring-boot-devtools模块能够实现热部署。修改代码,修改配置文件以及修改页面等都能触发重新启动项目。深层原理是使用了两个ClassLoader,一个Classloader加载那些不会改变的类(第三方Jar包),另一个ClassLoader加载会更改的类,称为restart ClassLoader。这样在有代码更改的时候,原来的restart ClassLoader被丢弃,...
原创
668阅读
0评论
0点赞
发布博客于 10 月前

第二章 Springboot 自定义banner图案

Springboot默认开启banner,在项目期待是会在控制台默认打印spring图案。SpringBoot有一个接口org.springframework.boot.Banner实现这个操作。故我们可以实现这个接口来打印自定义banner信息,但是不推荐,因为这不是什么重要的功能,没必要,既然SpringBoot提供了这个功能,肯定为我们实现了。在Springboot工程的src/mai...
原创
761阅读
0评论
0点赞
发布博客于 10 月前

Java 多线程与高并发

1:volatile的作用保证线程可见性当多个线程访问同一个共享资源时,线程会拷贝资源的副本到自己的工作内存。这样如果某个线程对这个资源进行写操作,其他线程不会马上知道。当对这个资源加volatile关键字,其他线程就会随时监听,更新新的值。如下例子,不加volatile关键字,线程不会停止,加volatile关键字后会及时重新更新副本stop的值,线程停止。package com.n...
原创
883阅读
1评论
2点赞
发布博客于 10 月前