- 博客(38)
- 收藏
- 关注
原创 Kibana的查询语言--KQL(Kibana Query Language)的简单使用
现在大部分公司都使用ELK(Elasticsearch + Logstash + Kibana),对日志进行收集、存储、展示。关系型数据库查询使用SQL语言,非关系型数据库(例如Redis)也有自己的查询语法,所以,Kibana也有自己的查询语言KQL (Kibana Query Language)。
2025-06-11 15:44:31
167
原创 SpringBoot集成CXF框架,实现WebService
Service@WebMethodSystem.out.println("用户名:" + username + "密码:" + password);@WebResultSystem.out.println("保存用户信息");@WebMethod@WebResult// SoapHeader部分待添加的节点//认证信息// 新增一个头信息// 添加SoapHeader内容。
2025-05-06 00:01:52
618
原创 WebService的学习
*** 对外发布的服务名*//*** 对外发布的接口* @return*//*** 对外发布的接口* @param* @return*/@WebMethod@WebResult。
2025-05-05 16:04:32
931
原创 使用阿里组件,读取 xls / xlsx /csv 文件
/ 批量处理阈值/*** 逐行解析数据*/@Override// 需要+1,因为下标是从0开始的System.out.println("正在读取第" + excelRowNum + "行的数据");// 批量处理,如果一次性大量数据入库,数据库压力会很大saveData();// 超过阈值,就入库完成之后,把集合清空,避免重复入库/*** 所有数据解析完成后的操作*/@Override// 如果文件读取完毕,剩余数据没有超过阈值,就在这里入库。
2025-03-31 16:14:20
307
原创 Maven打包SpringBoot项目,以及SpringBoot配置加载的优先级
这个过程不仅会把应用程序本身及其所有依赖打包在一起,还会修改 JAR 文件的 MANIFEST.MF 文件,添加必要的属性如 Main-Class 和 Start-Class 等,这些是 Spring Boot 应用启动所需的。我们知道,SpringBoot支持使用 application-{profile}.yml 隔离生产(prod) 和 开发(dev)环境 的配置,只需要修改 spring.profile.sactive = {profile} 的 profile就能切换到对应的配置。
2025-03-24 17:08:17
747
原创 获取工作线程返回的结果,以及线程池如何关闭
假如是个SpringBoot项目,那线程池就不建议直接在业务方法中创建,线程池的初衷就是减少线程创建和销毁的开销,这样做会导致每次请求都会创建和销毁线程池,增加了性能和内存资源的损耗,如果线程池不手动关闭,就会向上面那样,线程池一直存在JVM内存中,这是因为我设置了核心线程数,线程的过期时间是针对非核心线程的,核心线程创建了就会一直存在JVM内存中,而有非守护线程还在JVM内存中的情况,JVM就不会结束程序的,除非手动关闭线程池。第一种,提前对提交到线程池的任务,进行异常的捕获。调用submit方法。
2025-03-23 17:23:52
1024
原创 JAVA读取/解析 指定文件内容
读取文件可以分为两步:第一步,找到指定文件,并将其转换成输入流第二步,读取流的信息共同点:这两个方法都必须传入资源路径,可以是绝对路径,也可以是相对路径。绝对路径就是编译生成的classes目录作为根路径,以 " / " 开头就表示从根路径开始。相对路径,就是从当前类所在的路径开始getResouce方法 返回一个URL,它用来标记这个资源地址。如果是URL为null,就说明资源路径写错了,资源不存在。getResourceAsStream 返回 一个inputStream输入流,如果输入流为null,就说
2025-03-22 22:31:20
635
原创 ThreadPoolExecutor线程池的使用
①每次创建和销毁线程需要占用时间和资源,通过线程池,可以复用已有的线程处理新的问题,避免了频繁创建和销毁线程。②增强系统稳定性。线程池可以指定并发线程数(不限制并发线程数的话,同一时间运行很多线程的话,可能会导致系统内存不足),并且超过指定并发数之后,可以通过拒绝策略,保证系统正常运行。
2025-03-17 16:20:08
1172
原创 Linux的chmod命令,给文件设置权限
【drwxr-xr-x.】的最后一位"." 表示文件受制于SElinux,第一位【d】表示是目录,除了以下3种文件类型,还有其他的,这里不仔细介绍。【r-x】为第三组,属于其他人的权限,即不是文件所有者,也不在文件所有者的用户组,表示可读不可写可执行。三个7,第一个7是表示文件所有者的权限,第二个7是文件所属组的权限,第三个7表示其他人的权限。【rwxr-xr-x】按3个权限位为一组,可以分成三组:【rws】【r-x】【r-x】"r" 表示可读,"w"表示可写,"x"表示可执行,"-" 表示不可以。
2025-03-13 16:57:54
387
原创 开启多个线程,模拟高并发情况下,使用线程安全的AtomicInteger进行计数
在多线程环境中,"线程安全" 指的是当多个线程同时访问某个公共资源时,能够确保数据的正确性和一致性,避免出现死锁问题。
2025-03-13 11:16:36
449
原创 基于哈希函数和密钥的消息认证码-HMAC
HMAC比单纯使用哈希函数更加的安全,因为它不仅依赖哈希函数的安全性,还依赖于密钥的安全性。这样,即使攻击者知道我们使用了哈希算法,并且成功获取到了原始数据,但没有密钥的话,也生成不出正确的签名(HMAC值)。
2025-03-10 14:48:31
395
原创 JWT的学习
JWT,全称JSON WEB TOKEN,是一种JSON格式的Web应用令牌,它是基于令牌去做认证。什么是令牌,举个例子,古代调兵用的虎符,这就相当于是令牌,有了虎符,才能调兵。而令牌也是,有了令牌,才能访问后端接口。以下是官网介绍大致就是JWT能够通过HMAC算法(默认算法),或者通过RSA、ECDSA算法生成数字签名(Signature)。
2025-03-09 17:19:11
595
原创 特殊的加密技术---哈希函数(Hash Function)
*** 字节数组转16进制字符串* @return*/// 将每个字节转换为两个十六进制字符,并添加到结果字符串中// 如果是单个字符,则前面补0try {//获取一个用于 SHA-256 哈希计算的对象//生成一段SHA-256的哈希值,长度32字节System.out.println("哈希值的长度:" + hash.length + "byte(字节)");i < 500;i++) {
2025-03-07 16:14:42
1423
原创 使用AES对称加密算法进行加解密
使用CBC工作模式,需要一个iv作为初始化向量,用于增强使用AES加密算法的安全性。同一条数据,密钥相同,iv不同的话,加密数据也会不一样,因此,加解密时必须使用相同的key和iv,否则会解密失败。/*** 使用AES对称加密算法的CBC模式进行加解密*///使用AES算法的 CBC模式 和 PKCS7填充static {//向Java的Security系统添加一个新的安全提供者(Provider),即 BouncyCastle提供者。
2025-03-04 11:39:20
1402
原创 基于logback+fastjson实现日志脱敏
TuoMinConverter 继承 logback中的MessageConverter类@Overridetry {try {String msg;//将{}占位符的内容,替换为objects数组中的数据/*** 脱敏* @return 返回脱敏之后的json串*/if (!//这句代码是必须的,保证存在多个需要脱敏的字段时,不会将之前已经脱敏的字段给还原}else {//说明日志不需要脱敏。
2025-02-07 13:52:41
1083
原创 Optional的 ifPresent() 方法和 isPresent() 方法
Optional的 ifPresent() 方法和 isPresent() 方法
2025-01-15 16:34:05
1180
原创 XML序列化和反序列化的学习
*** 1、实现 对象 转 xml* 2、实现 xml 转对象*/> clazz) {// JAXBContext 是线程安全的,可以在多个线程中复用// computeIfAbsent 方法,如果map集合存在相同的key,则覆盖value值;不存在相同key,则添加到map集合中try {});try {//1.格式化输出,即按标签自动换行,否则就是一行输出//2.设置编码(默认编码就是utf-8)
2025-01-14 15:44:20
658
原创 Logback的使用
包含的属性如下所示:scan:当此属性设置为true时,配置文件如果发生改变,将会被重新加载,默认值为true。scanPeriod:设置监测配置文件是否有修改的时间间隔,如果没有给出时间单位,默认单位是毫秒。当scan为true时,此属性生效。默认的时间间隔为1分钟。debug:当此属性设置为true时,将打印出logback内部日志信息,实时查看logback运行状态。默认值为false。
2025-01-03 22:27:53
919
原创 EnableConfigurationProperties、ConfigurationProperties、ConditionalOnProperty和 ConditionalOnBean注解
SpringBoot提供了让我们告别传统通过Xml配置文件往Spring容器注入对象的新方式。而这几个注解,能够帮助我们更好地实现将yml文件中的属性映射到一个JAVA对象中。
2024-12-16 10:41:12
2005
原创 JAVA设计模式之工厂方法模式
工厂方法模式既满足了面向对象的基本原则----开闭原则(对扩展开放,对修改关闭),也体现了JAVA的多态。工厂方法模式用于控制类的实例化,常见的做法是创建一个公共的接口(抽象工厂),使某个类对象的创建(具体产品)延迟到公共接口的具体实现类(具体工厂)当中。策略模式和工厂方法模式差不多,但工厂方法模式关注的是类对象的创建,而策略模式更倾向于控制类的行为,这里的行为,简单点来说,就是方法。
2024-12-14 16:33:14
892
原创 学习使用悲观锁和乐观锁,进行并发控制
适用场景: 适合单机环境,写多读少,以及严格控制数据一致性的场景,比如,抢购商品、支付等场景。优点:避免冲突,同一条数据只有一个事务能够操作,其他事务只能等待。缺点:加锁和解锁会存在一定的性能消耗,单次请求会更耗时一点,会影响系统的QPS;如果多个事务相互等待对方释放锁,可能会导致死锁问题。
2024-11-29 16:33:07
1140
原创 窗口函数ROW_NUMBER()、RANK()、FIRST_VALUE()的使用
窗口函数这里说的分区,并不是物理上的分区!!这里的分区,实际是对数据进行分窗口。举个例子,一个小学是6个年级。如果按照年级分区,每个年级就是1个区,一共就分了6个区,也可以说是分成6个窗口,这就是分区。而每个年级的有多少的学生,就相当于那个区(窗口)有多少行数据。而窗口函数是针对【每个区(窗口)】做单独的计算,不会影响到其他区。比如,你要统计4年级这个区有多少学生,总不能把5年级的学生人数也统计进去。窗口函数就是在当前窗口范围内执行的函数,它在每个区(窗口)内独立执行计算。
2024-11-22 16:46:40
809
原创 Oracle中ROW_NUMBER()窗口函数 和 ROWNUM伪列的区别
ROW_NUMBER()作为一个窗口函数 必须和 over()子句一起使用,可以达到。ROW_NUMBER() 窗口函数本身不携带任何参数,ROW_NUMER()想达到什么效果,完全由 OVER 子句中的内容决定。想要了解分区,就需要知道窗口函数是什么,下篇文章介绍,这里只讨论ROW_NUMBER() 和 ROWNUM的区别。
2024-11-21 17:21:14
1209
原创 @Configuration和@Bean注解的使用
Configuration注解标记的类作为配置类,利用注解和@Bean注解,来替代传统的通过XML配置文件来创建和管理bean对象的方式。(可以理解成一个@注解修饰的类就是一个XML文件)这样做的好处,既简化了开发,告别了以前繁琐的配置(每次需要容器创建对象时,都需要在XML配置文件中定义一个bean节点),同时通过在代码中使用注解来创建,也更容易让开发人员理解。
2024-11-15 16:58:09
1360
原创 JAVA通过反射,对集合元素的某个值做特殊处理
*** 给指定字段赋值*/try {if (list!= 0) {//给元素的指定字段赋值,这里做实际的业务场景三、运行代码。
2024-08-28 10:15:58
279
原创 在Windows系统以“管理员身份”打开某软件/文件
Windows系统中,有些文件必须要以管理员身份才能运行,此时,我们就可以进行如下操作。1.在开始菜单,找到【记事本】或者【其他文本编译器】,记事本在【Windows附件】目录下2.选中记事本,单击鼠标右键,点击“更多”,选择以管理员身份运行3.进入之后,在左上角“文件”中,点击打开,找到你需要以管理员身份运行的文件,打开即可。...
2021-09-07 23:27:13
39309
5
原创 windows下查看端口,并结束对应进程
1.查看被占用的端口netstat -ano | findstr 端口号netstat -ano | findstr 80812.杀死进程taskkill -pid 进程号 -ftaskkill -pid 5484 -f
2021-08-25 15:02:29
159
原创 未指定“url”属性
之前能编译通过的文件,莫名其妙就不能运行,并报了以下错误:'url'attribute isnot specified and no embedded datasource could be configured.原因: 编译生成target中的classes目录下没有自动生成resources目录中的资源文件。解决办法:第一种方式,clean之后,再compile,重新生成target目录。第二种方式,选择这个module,鼠标右键-->选择rebui...
2021-08-09 12:22:13
3893
2
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人