- 博客(145)
- 资源 (1)
- 问答 (1)
- 收藏
- 关注
原创 Java 中的流程控制语句
Java 中的流程控制语句 if-elif-else、switch、for、while、do-while、return、try-catch
2024-01-11 10:05:19 454
原创 SpringBoot 官方脚手架不再支持Java8和Java11
Spring官方脚手架不再支持初始化Java8和Java11的项目,阿里巴巴Spring脚手架支持Java8、Java11、Java17、Java19 的项目
2023-12-08 10:34:10 550
原创 prometheus jmx exporter + prometheus + grafana
prometheus jmx exporter + prometheus + grafana 实现Java应用可视化监控
2023-04-01 21:37:17 1598
原创 prometheus jmx-exporter 暴漏HTTP服务端口无法获取监控数据
prometheus jxm-exporter 暴露HTTP服务端口无法获取监控数据;prometheus-http 线程占用CPU 100%;sentinel-system 线程占用CPU 100%;prometheus jmx-exporter 请求大量 CLOSE_WAIT;
2023-03-26 11:30:43 760
原创 Anolis OS 文档
Anolis OS 文档Anolis OS 生命周期Anolis OS 内核版本策略用户&管理员文档知识库常见问题Anolis OS 全部文档
2022-05-27 11:21:49 347
原创 Linux 安装配置 ZooKeeper 集群
前提条件:安装配置了jdk1.8 或更高版本下载 ZooKeeper 例如:解压:tar zxvf ***.tgz假设假设我们要搭建一个三台服务器的ZooKeeper集群(最少3台,而且是)假设第一台服务器ip为:192.168.174.129假设第二台服务器ip为:192.168.174.130假设第三台服务器ip为:192.168.174.131第一台服务器配置:进入解压目录下边的conf目录cp zoo.sample.cfg zoo.cfgvim zoo.cfg修改内容如下.
2022-02-24 10:34:58 627
原创 Java是编译性语言还是解释性语言
结论:Java 即使编译性语言也是解释性语言。编译:将 *.java 文件编译成 *.class 字节码文件。解释:JVM 加载 *.class 字节码文件,然后通过解释器逐行解释为机器码执行。JIT:解释器逐行解释并运行效率相对较低,JVM 可以将热点代码编译成机器码并保存下来,下次调用直接调用执行机器码,在一定程度上提高运行效率。注:常见的 HotSpot 采用惰性评估的方式,在某些代码在某段时间内达到一定的执行次数后才会及时编译为机器码。JVM 也会根据每次被执行的情况收集信息并做出一些优化,
2022-02-03 22:10:21 1399
原创 SpringBoot 启动后运行特定的代码
1. ApplicationRunner 或 CommandLineRunner如果你需要在 SpringApplication 启动后运行一些特定的代码,你可以实现 ApplicationRunner 或 CommandLineRunner 接口。这两个接口的工作方式相同,并提供一个单一的运行方法,该方法在 SpringApplication.run(…) 完成之前被调用。这种契约很适合那些应该在应用程序启动后但在其开始接受流量前运行的任务。CommandLineRunner 接口提供了对作为字符串
2021-12-08 21:00:57 586
原创 Spring Boot 自定义 banner
1. 自定义bannerSpring Boot 项目启动时打印的横幅可以通过在 classpath 中添加 banner.txt 文件或将 spring.banner.location 属性设置为此类文件的位置来更改默认的 banner。如果该文件的编码不是 UTF-8,你可以设置spring.banner.charset 属性。除了文本文件外,你还可以在 classpath 中添加 banner.gif、banner.jpg 或banner.png 图像文件,或者设置 spring.banner.ima
2021-12-07 23:13:06 585
原创 MySQL连接到服务器和从服务器断开连接
1. 语法mysql [OPTIONS] [database]1.1 常用选项选项名说明-h指定要连接到的MySQL主机或域名-P指定要连接到MySQL Server 的端口-u指定使用哪个用户连接到 MySQL Server-p指定 -u 用户的密码,一般不明文输入,而是根据提示再输入2. 连接到服务器和断开连接2.1 连接到服务器shell> mysql -h 127.0.0.1 -P 3306 -u root -p从
2021-11-10 11:49:20 1125
原创 JVM 类加载
1. 编译源代码是成百上千个 “.java" 文件,并能被机器执行,需要编译为 ".class” 文件。常见的编译工具有 javac、maven、gradle 把 Java 工程或文件编译为 “*.java” 或 jar 包,war 包。然后,编译后的 *.class 文件在合适的时机加载到 JVM 字节码执行引擎,最后由 JVM 字节码执行引擎解释执行。2. JVM 类加载过程一个类从加载到使用,一般会经历下面的过程:加载 -> 验证 -> 准备 -> 解析 -> 初始
2021-09-28 20:26:59 263
原创 Java 面试系列 - 分布式缓存
1. 什么是分布式缓存 ?传统意义上的缓存是保存在应用本身的(JVM),只有应用本身可以对缓存进行读写。在分布式系统中,将缓存抽取出来做成了缓存中间件(数据库),分布式应用都可以对分布式缓存进行读写操作。并且分布式缓存具有高性能和高吞吐量的特性。2. 为什么使用分布式缓存 ?分布式缓存主要作用:高性能(提高系统性能);高并发(提高系统并发);减轻关系型数据库压力2.1 高性能和高并发随着系统的复杂性和用户量的增加,并发越来越大,我们会发现系统变得越来越慢。因为关系型数据库的 QPS 和
2021-09-04 21:18:30 337
原创 Java 泛型
泛型 在任何重要的软件项目中,错误都是编程中的一个事实。详细的计划、编程和测试可以帮助减少错误,但不知何故,它们总会找到一种方法潜伏到你的代码中。随着新功能的引入以及你的代码库的大小和复杂性的增长,这一点变得尤为明显。 幸运的是,有些错误比其它错误更容易检测到。例如,可以在早期检测到编译时错误;你可以使用编译器的错误消息找出问题所在并立即修复。然后,运行时错误可能会带来更多问题。它们并不是立即浮出水面,当它
2021-07-21 11:41:23 249 2
原创 面向对象编程
1. 面向对象概念1.1 什么是对象对象是相关状态和行为的包装,软件对象通常用于对日常生活中找到真实对象进行建模。对象是理解面向对象技术的关键。看看周围,你会发现有许多真实世界的对象的例子:你的狗狗、笔记本、桌子、显示器、自行车。显示世界的对象有两个特征:状态和行为。狗有状态(名称,颜色,品种)和行为(吠叫,跑,摇尾巴)。识别真实对象的状态和行为是开始思考面向对象编程一种良好的方法。软件对象在概念上与真实对象相似:它们也由状态和行为组成。对象将其状态存储在字段中,并通过方法公开其行为。方法对对象的
2021-07-13 23:00:04 1785 1
原创 Java 基本数据类型和封装类型
八种基本数据类型的封装数据类型如下表:基本数据类型封装数据类型类型描述字节数范围byteByte整型1[-128, 127]shortShort整型2[- 32768, 32767] or [-2^15, 2^15-1]intInteger整型4[-2^31, 2^31-1]longLong长整型8[-2^63, 2^63 -1]floatFloat单精度浮点型4-doubleDouble双精度浮点型8
2021-07-12 22:46:51 756 1
原创 MyBatis 占位符 # 和 $
1. MyBatis 占位符 # 和 $默认情况下,使用 #{} 参数语法时,MyBatis 会创建 PrepareStatement 参数占位符,并通过占位符安全地设置参数(就像使用 ? 一样)。这样做更安全,更迅速,通常也是首选做法。1.1 MyBatis 占位符之 ##{} 占位符,MyBatis 会创建 PrepareStatement 参数占位符,并通过占位符安全地设置参数(就像使用 ? 一样),可以有效防止 SQL 注入,更迅速;示例:<select id="selectBy
2021-06-06 23:33:07 327 2
原创 重载和重写
重载发生在同一个类中;方法名必须相同;参数类型不同、个数不同、顺序不同;方法返回值和访问修饰符可以不同。举个例子:public class Student { private Integer id; private String name; private Integer age; public Student() { } public Student(Integer id) { this.id = id; } public Student(Integer id, Str
2021-06-03 09:23:09 533
原创 CentOS 7 安装 Nginx
1. 准备# yum -y install wget# yum -y install gcc# yum -y install pcre-devel.x86_64# yum -y install zlib-devel.x86_642. 下载 Nginx# wget http://nginx.org/download/nginx-1.18.0.tar.gz -O /usr/local/nginx-1.18.0.tar.gz其它版本Nginx安装# mkdir /usr/local/ngin
2021-04-02 17:06:06 140
原创 volatile
并发编程的三个重要特性原子性: 一个或一组操作,一旦开始,不会被线程调度机制打断,直到结束,中间不会有任何线程切换。要么所有操作全部执行,要么所有操作都不执行。synchronize 可保证代码片段的原子性;可见性: 一个线程对共享变量进行了修改,其它线程都可以立刻看到修改后的值。volatile 关键字可以保证共享变量的可见性;有序性: JVM 执行代码过程是有先后顺序的,但并非是代码编写顺序,Java 编译器以及JIT可能在运行期间对代码指令优化,进行指令重排。volatile 关键字可以禁止指令
2020-12-25 15:55:44 124
原创 start() 和 run() 方法启动线程的区别 ?
结论:start() 方法会启动一个新的线程,以及线程的一些准备工作(状态检查,加入通知线程组),然后 Java 虚拟机调用此线程的 run() 方法;run() 方法是直接执行 Runnable 对象的 run() 方法,是 main 线程下的一个普通线程,并不是多线程执行;源码分析(Java8):/*** 使该线程开始执行;Java 虚拟机将调用此线程的 <code>run</code> 方法。* 结果是两个线程同时运行:当前线程(从调用返回到<code&g
2020-12-23 19:00:13 572
原创 String StringBuffer StringBuilder
Stringjava.lang.String 类表示字符串。java.lang.String 是 final 修饰的,所以不能够被继承;private final char value[] 变量用户存储字符串数组的,所以String对象是不可变的;因为String不可变性,所以是线程安全的。注意:在 Java 9 之后,java.lang.String 类的实现改用 byte 数组存储字符串的:private final byte[] value;StringBuilderjava.l
2020-12-22 14:08:18 117
原创 8种基本数据类型的封装类型和常量池
八种基本数据类型的封装数据类型如下表:基本数据类型封装数据类型byteByteshortShortintIntegerlongLongfloatFloatdoubleDoublecharCharacterbooleanBooleanByte、Short、Integer、Long、Character、Boolean 实现了常量池技术。前四种常量值范围为[-128, 127],Character 范围为[0, 127],Boo
2020-12-16 22:28:16 704
原创 Java 基本数据类型
基本数据类型字节数位数默认值取值范围描述byte180[2^7-1, -2^7]整型short2160[2^15-1, -2^15]整型int4320[2^31-1, -2^31]整型long8640L[2^63-1, -2^63]长整型float4320f[2^31-1, -2^31]单精度浮点型double8640d[2^63-1, -2^63]双精度浮点型char216‘u...
2020-12-16 17:09:38 103
java 中 byte 类型的常见应用场景
2020-03-31
TA创建的收藏夹 TA关注的收藏夹
TA关注的人