- 博客(48)
- 收藏
- 关注
原创 是谁造成了 NoClassDefFoundError?
你遇到过Java中的NoClassDefFoundError报错么,这个报错和ClassNotFoundException 有什么区别呢?
2024-12-26 09:15:00
750
原创 Windows 10 下编译 64 位 OpenJDK 8 并单步调试
我看你骨骼清奇,是个百年难得的奇才,我这有套 Windows 10 上编译 OpenJDK 8 的方法,就免费传授给你吧!
2024-12-14 19:45:24
1073
原创 哪里有 class 告诉我?
本文介绍用户类路径的设置的参数以及不同设置方法的优先级以及从 JVM 源码角度分析了引导类路径是如何设置的,让你对不同的类路径有更深刻的理解。
2024-12-11 09:15:00
971
原创 byte 加 byte 居然是 int 了?
为什么Java中两个byte相加的结果是int?本文将从Java语言规范和JVM规范带你研究这个问题。
2024-11-07 18:19:54
425
原创 谁让你创建两个对象的?
如果CLASSPATH下有两个不同版本的jar包,一个版本的jar包有@Component注解,另外一个版本没有,Spring到底会不会创建Bean?
2024-09-28 17:03:05
445
1
原创 灵活的 SPI 机制
本文介绍了Java中SPI机制实现的大概原理以及SPI机制在常见的框架如JDBC的Driver加载,SLF4J日志门面实现中的使用。
2024-07-21 22:45:17
392
1
原创 操作系统messages文件位置更改
通过修改这个配置文件,可以调整操作系统日志实际输入的路径,如下图所示,这里将配置文件中的路径调整为了。这个系统之前是做过安全加固的,我怀疑它改过操作系统的某些配置,调整了系统日志默认输出的文件路径。在遇到一个问题的时候需要查看操作系统的日志,但是到操作系统上的。文件中发现该文件已经很久没有刷新过了。经过查阅资料发现,操作系统的日志是由。...
2022-08-14 11:37:41
1145
原创 一个由硬链接引发的问题
最近关于 Fastjson 的漏洞又被爆出来了,作为修理工(哦不,专业的软件工程师),又到了我们表演的时候了。我们有很多服务是用的老版本的有漏洞的jar包,为了解决这个漏洞问题,我们决定来个偷梁换柱,使用新版本的jar包直接把老版本的有漏洞的jar版本直接覆盖掉。哎哎哎,要想程序搞得好,三十六计不可少。既然方案确定了,那就开始干,具体思路如下:代码的逻辑如下图所示:整体思路很简单,但是问题就出在这个备份上面。在实际的测试过程中,发现备份的目录下,jar包的版本大多数都变成新版本的jar包了,而不是老版本的
2022-06-26 19:58:45
222
原创 我掉到 MessageFormat 的坑里面去了!
Java 中的 MessageFormat 在格式化数字的时候有坑,你踩过么?快来看看这个到底是个什么样的坑?
2022-06-19 17:12:47
394
原创 Linux sudo 提权之软链接攻击
theme: awesome-green软链接提权的原理低权限用户能够以 root 用户的权限执行某个脚本,该脚本中又使用到了诸如 chown 等命令修改文件的权限,且该文件又能够被低权限的用户所修改。因此低权限的用户可以删除该文件,然后创建一个同名的文件,但是这个文件是指向一个高权用户才能修改的文件,例如 /etc/passwd。这样在低权用户在执行命令的时候就能够修改 /etc/passwd 这个文件的权限了,这样就相当于低权限用户能够越权操作了。实验验证在Linux上创建一个低权限用户 t.
2022-05-08 20:04:28
1546
原创 Linux 中的内存使用率计算方式
背景介绍在工作中处理问题的时候,遇到一个问题,自己根据 top 命令时查看到的 used 和 total 计算出来的内存使用率已经达到 90% 以上了,但是系统自带的监控软件计算出来的使用率往往没有这么高。在网上查询了一些文章,说应该使用 free 命令,top 命令显示的结果不太准确,因此决定将自己的学习过程记录一下。小知识Linux 的显示命令中有 free 和 available 两种表示空闲的内存,它们之间的区别如下:free 表示这部分内存没有被用.
2022-03-20 17:09:29
6353
1
原创 Java Web 应用- JSP 基本使用
JSP 4 中基本语法:JSP 注释: <%-- 注释内容 --%>JSP 声明: JSP 页面声明的变量或方法将转化成 JSP 生成的对应的 Servlet 的成员变量或方法<%! public int count; public String hello() { return "hello"; }%>输出表达式:...
2019-12-22 18:17:00
135
原创 Java Web 应用-JSP 原理
JSP 组成:静态部分: 标准的 HTML 标签, 静态的页面内容.动态部分: 受 Java 控制的部分, 由 Java 脚本动态生成.JSP 的实质:JSP 是 Servlet 的一种简化, 容器(这里指的是 Tomcat)会为 JSP 生成一个相对应的 Servlet 实现类, JSP 的内容在该实现类的 service() 进行输出. 对于 Tomcat 容器来说, 对每一个...
2019-12-22 18:16:22
134
原创 Java Web 应用-组成结构
1.Web 应用结构:应用名称:WEB-INF: 是一个特殊的文件夹, 容器会包含该文件夹下的内容, 客户端浏览器无法直接访问该文件夹下的内容.classes: 存放应用的 class 文件.lib: 存放应用所依赖的包.web.xml: 配置该该 Web 应用. 每个容器都会提供一个系统的 web.xml 文件, 用于描述所有 Web 应用的配置属性. Tomcat 容器的系统 ...
2019-12-22 18:15:23
270
原创 Linux-ln 命令
1.ln 命令:创建符号链接: ls -s fileName softLinkName示例: ln -s test.txt test.ln查看链接: ls -l test.ln可以看到 test.ln 是指向 test.txt 这个文件的创建硬链接: ls test.txt test示例: ln test.txt test1.ln查看链接: ls -l test1.ln...
2019-12-20 10:10:21
177
原创 Linux-nfs 文件共享
一台机器作为服务端, 一台作为客户端. 系统版本为 CentOS 7.安装 nfs-utils:yum install nfs-utils服务端和客户端都要安装设置 nfs 服务为开机启动:systemctl enable rpcbindsystemctl enable nfs启动 nfs 服务并查看状态:systemctl start rpcbindsystemctl st...
2019-12-19 22:19:58
133
原创 Linux 常用命令-lsblk, blkid
1.lsblk:参数含义:-d: 仅列出磁盘本身, 并不会列出该磁盘的分区数据.-f: 同时列出该磁盘内的文件系统名称.-p: 列出该设备的完整文件名.-m: 同时输出该设备在 /dev 下面的权限数据示例:列出系统所有磁盘及磁盘内的分区: lsblk列出 /dev/sda 设备内的所有数据的完整文件名: lsblk -ip /dev/sdablki...
2019-12-19 22:19:01
500
原创 Linux-磁盘分区
1.磁盘组成:盘片(platter): 一般磁盘会有两个以上的盘片组成, 每个盘面都对应地有一个读/写磁头.磁头(head): 磁头用于向磁盘写入数据或从磁盘读出数据.磁道(track): 磁道是对盘面的划分, 磁道是围绕盘面圆心的一个个同心圆, 由外向里编号.扇区(sector): 扇区是对磁道的划分, 将磁道划分为一段一段的弧, 这段弧就是扇区.柱面(cyli...
2019-12-18 22:06:18
243
原创 MyBatis-MyBatis 插件
插件调用过程:MyBatis 插件使用的责任链模式, 这里的责任链模式是结合动态代理来实现的. 假设现在存在按顺序配置的 A, B, C 三个签名相同的拦截器, MyBatis 会按照 C>B>A>target.proceed()>A>B>C 顺序执行./** * 接口 */public interface HelloWorld { voi...
2019-12-17 17:15:47
205
原创 Linux常用命令-cat, more, head, tail, less
cat 命令:查看文件所有内容:cat -n filename示例: cat -n test.txt-n 参数表示显示行号创建制定内容的文件:cat > fileName << endOfFile示例: cat > test.txt <<EOFendOfFile 表示输入这个字符串后, 文件输入完毕合并文件:ca...
2019-12-17 17:14:26
196
原创 Maven- 聚合与继承
聚合:实现一次构建多个项目, 而不是到两个模块的目录下分别执行 mvn 命令. 创建一个额外的模块, 然后通过该模块构件整个项目的所有模块.<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www....
2019-12-16 17:32:24
207
原创 Mybatis-运行原理
构建 SqlFactory 过程:SqlFactory 的核心功能就是提供创建 MyBatis 的核心接口 SqlSession. SqlSession 采用建造者模式进行构建:首先通过 org.apache.ibatis.builder.xml.XMLConfigBuilder 解析配置的 XML 文件, 读出所配置的参数, 并将读取的内容存入 org.apache.ibatis.se...
2019-12-16 17:28:48
100
原创 Mybaits-缓存设置
一级缓存:Mybatis 的一级缓存存在于 SqlSession 的声明周期中, 在同一个 SqlSession 中查询时, Mybatis 会把执行的方法和参数通过算法生成缓存的键值, 将键值和查询结果存入一个 Map 对象中. 如果同一个 SqlSession 中执行的方法和参数完全一致, 那么通过算法会生成相同的键值, 当 Map 缓存对象中已经存在该键值时, 则会返回缓存中的对象....
2019-12-16 17:25:56
177
原创 Mybatis-使用枚举或其它对象
需求分析:现在实体对象有一个 enabled 字段, 这个字段只有两个值, 分别为: 0 为禁用; 1 为启用. 我们希望在实体类中使用枚举类来避免手动验证 enabled 的值是否符合要求. 这里数据库的类型为 tinyint.示例代码:/** * 枚举类 */public enum EnabledEnum { disabled, enabled;}pu...
2019-12-16 17:25:19
164
原创 计算机网络-运输层
运输层协议层概述:1.1 进程之间的通信:从 IP 层来说, 通信的两端是两台主机. 但是真正通信的实体是在主机的进程, 是这台主机中的一个进程和另一台主机中的一个进程在交换数据. 网络层为主机之间提供逻辑通信, 而运输层为应用进程之间提供端到端的逻辑通信.1.2 运输层的两个主要协议:用户数据报协议 UDP (User Datagram Protocol): 不需要先建立连接传...
2019-12-15 17:38:17
210
原创 计算机网络-网络层
网络层提供的服务:虚电路服务和数据报服务网际层协议 IP:网际层协议 IP 配套使用协议:地址解析协议 ARP(Address Resolution Protocol);网际控制报文协议 ICMP (Internet Control Message Protocol);网际组管理协议 IGMP (Internet Group Management Protocol)...
2019-12-15 17:37:27
150
原创 计算机网络-数据链路层
使用点对点信道的数据链路层:数据链路和帧: 数据链路包括结点之间的物理线路以及实现通信协议的硬件和软件. 现在通常使用网络适配器来实现数据链路层通信协议. 数据链路层的协议数据单元为帧(frame).数据链路层需要解决的问题:封装成帧(framing): 在一段数据的前后分别添加首部和尾部.透明传输: 无论什么样的比特组合的数据, 都能够按照原样没有差错地通过这个数据链路层. 数...
2019-12-15 17:36:28
319
原创 Maven-Maven 生命周期
生命周期定义:生命周期抽象了构建的各个步骤, 定义了它们的次序, 但没有提供具体的实现. 每个构建步骤可以绑定一个或者多个插件行为.声明周期:生命周期由阶段组成(phase), 这些阶段是有顺序的, 并且后面的阶段依赖于前面的阶段, 用户和 Maven 最直接的交互方式就是调用这些声明周期阶段.clean 生命周期: 目的是清理项目, 包含: pre-clean, clean, ...
2019-12-15 17:35:05
92
原创 Maven-Maven 仓库
Maven 仓库分类:Maven 仓库分为本地仓库和远程仓库. Maven 根据坐标寻找构件的时候, 首先查看本地仓库, 若本地仓库存在此构件, 则直接使用; 如果本地仓库不存在此构件, 或者需要查看是否有更新的构件版本, Maven 就会去远程仓库查找, 发现需要的构件之后, 下载到本地仓库再使用.本地仓库的配置:编辑 ~/.m2/settings.xml 文件. 构件只有在本地仓...
2019-12-14 17:45:31
93
原创 Maven-Maven 基本使用
编写 POM:Maven 项目的核心是 pom.xml 文件. pom 文件中的 groupId, artifactId, version 这三个元素定义了一个项目的基本坐标.groupId: 定义了项目属于哪个组, 这个组往往和项目所在的组织或公司存在关联.artifactId: 定义了当前 Maven 项目在组中的唯一的 ID.version: 定义了当前项目的版本<?...
2019-12-14 17:44:43
117
原创 Maven-Maven 配置
Maven 安装目录分析:bin: 包含 mvn 运行的脚本, 这些脚本用来配置 Java 命令, 准备好 classpath 和相关的 Java 系统属性, 然后执行 Java 命令.boot: 该目录包含一个文件. 该文件是一个类加载器框架. Maven 使用该框架加载自己的类库.conf: 该目录包含一个非常重要的文件 settings.xml. 直接修改该文件, 就能在机器上全...
2019-12-14 17:43:48
108
原创 MySQL-MySQL 安装
安装环境:系统版本: CentOS 7MySQL 版本: 5.7安装步骤:添加 MySQL Yum 仓库:在线安装: yum localinstall https://dev.mysql.com/get/mysql57-community-release-el7-9.noarch.rpm离线安装: 首先下载 mysql57-community-release-el7-...
2019-12-14 17:40:27
100
原创 Linux 常用命令-touch, cp, mv, rm
touch:创建空文件: touch filename示例: touch test.txt改变文件的修改时间: touch existedFileName示例: touch test.txt改变文件的访问时间: touch -a existedFileName示例: touch -a test.txt访问时间查看: li -l --time=atime test.t...
2019-12-14 17:38:54
115
原创 Linux 常用命令-grep
在单个文件中查找字符串: grep "literal_string" filename示例: grep "this" demo_file在多个文件查找字符串: grep "string" FILE_PATTERN示例: grep "this" demo_*不区分大小写: grep -i "literal_string" filename示例: grep -i "this"...
2019-12-14 17:37:40
104
原创 Linux 常用命令-tar
打包:tar -cvf 文件名.tar 要打包的文件路径-c: 创建文件-v: 显示打包过程-f: 指定最终文件名查看打包的文件内容:tar -tvf 文件名.tar-t: 显示文件列表打包并压缩为 gz:tar -czvf 文件名.tar.gz 要打包并压缩的文件路径-z: 使用 gzip 进行压缩解 gz 压缩:tar -xzvf 文件名.tar.g...
2019-12-14 17:36:47
137
原创 Mybatis-高级映射
一对一映射:使用自动映射处理一对一关系:public class User { private Integer id; private String username; private String userEmail; /** * 角色 */ private Role role; // 省略其它代码}...
2019-12-14 17:35:10
81
原创 Mybatis-动态 SQL
if 用法:在 WHERE 条件中使用 ifpubli class User { private Interger id; private String username; private String userEmail; // 省略其它代码}<select id="selectByUser" resultType="study....
2019-12-14 17:33:11
149
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人