- 博客(355)
- 资源 (2)
- 收藏
- 关注
原创 MyBatis 缓存机制详解
执行 INSERT/UPDATE/DELETE 或调用 clearCache() 会清空缓存。注意:在读写分离或多数据源环境下,缓存可能导致更复杂的一致性问题,需要特别注意。范围:SqlSession 级别(同一个 SqlSession 内有效)同一个 SqlSession 中相同的查询会直接从缓存返回结果。:Mapper 命名空间级别(跨 SqlSession 共享)检查是否开启了二级缓存(查看 Mapper.xml):自动开启(无法全局关闭)事务提交或回滚也会清空缓存。:关闭,需要手动配置开启。
2025-03-30 20:06:34
192
原创 pgsql创建新用户并赋只读权限
### 总结通过以上步骤,你可以为新用户赋予只读权限。确保根据实际需求调整数据库名、模式名和用户名。如果需要更细粒度的权限控制,可以参考 PostgreSQL 的官方文档。—### 7. **撤销权限(如果需要)**如果需要撤销权限,可以使用。授予用户对指定模式中所有表的只读权限(
2025-03-14 14:37:27
536
原创 Alibaba Nacos serverIdentity存在鉴权绕过漏洞修复记录
Alibaba Nacos serverIdentity存在鉴权绕过漏洞。
2024-06-14 17:12:09
2202
2
原创 CVE-2011-1473: OpenSSL权限许可和访问控制问题漏洞及解决方案
CVE-2011-1473: OpenSSL权限许可和访问控制问题漏洞。
2024-06-14 16:45:25
2930
1
原创 BigDecimal类:Java中的高精度浮点数处理
在Java编程中,浮点数(如float和double)的计算经常会导致精度问题,特别是在需要高精度的金融计算或科学计算中。为了解决这些问题,Java提供了BigDecimal类,它是一个任意精度的有符号十进制数,提供了用于算术、标度操作、舍入、比较、哈希算法和格式转换的不可变的、任意精度的有符号十进制数字。
2024-06-05 16:11:28
515
原创 PostgreSQL 远程登录postgres用户不需要密码?免密登录权限设置
是postgre安装的时候默认的超级管理用户postgres他的默认密码为postgres,但是将这个密码改之后还是有问题。后来发现不用密码也能登录,那一定就是免密登录的问题了。原因配置远程IP时,IP 地址对应的 method 设置成了 trust。今天安全测试反馈,pgsql有弱口令问题,于是上去改了pgsql的密码,结果问题还没解决。由于我的postgre是多实例的,所以和大家配置文件的路径可能不同,配置文件为。为信任,设置为trust就可以免密,在这里我们可以设置为。设置完要重启数据库才能生效。
2024-05-30 18:05:59
2055
原创 linux压缩文件解压文件的几种方式
在 Linux 中,有几种常见的方式来压缩和解压文件,主要包括使用 tar、zip、gzip 和 bzip2 等工具。压缩后的文件将被命名为 filename.bz2。压缩后的文件将被命名为 filename.gz。这些是常见的压缩和解压缩文件的方式。-z:使用 gzip 解压缩。-z:使用 gzip 压缩。-r:递归压缩目录及其内容。-f:指定压缩后的文件名。-f:指定要解压缩的文件。-c:创建压缩文件。-v:显示详细信息。-v:显示详细信息。
2024-05-07 15:10:57
756
1
原创 java读取过来的文件乱码?指定字符集。操作文件的几种方式
OutputStreamWriter 主要用于将字符转换为字节并写入到字节流中。BufferedWriter 主要用于提供缓冲功能,以提高向字符流中写入文本数据的性能。OutputStreamWriter 是字符流向字节流的桥梁,而 BufferedWriter 是用于字符输出流的缓冲写入。虽然它们都用于字符输出,但主要的功能和使用场景是不同的,根据具体的需求选择合适的类来实现相应的功能。
2024-04-18 16:26:01
947
原创 druid连接池参数对数据库的影响
可以通过执行此查询来检测连接是否仍然有效,如果连接无效,则将其从连接池中移除并创建一个新的连接。如果设置为 true,则在获取连接时会执行连接检测,以确保获取到的连接是有效的;使用 Druid 连接池时,你可以通过配置一系列参数来调整连接池的行为,这些参数可以对数据库的性能和应用程序的行为产生影响。testWhileIdle(空闲连接检测):指定连接池在空闲连接上执行空闲连接检测的频率。如果应用程序的数据库连接需求是变化的,可以设置一个适当的最小空闲连接数,以确保连接池中始终有足够的连接可供使用。
2024-04-09 14:59:59
596
原创 分区表、PostgreSql做分区表、建立分区索引、按照年月分区、删除分区
分区表是一种将表按照特定规则分割成多个子表的技术。这些子表被称为分区,每个分区可以存储特定范围或特定条件下的数据。分区表可以基于列值、时间范围、列表等条件进行分区。使用分区表可以提高查询性能,简化数据管理,并提高数据库的可维护性。
2024-04-01 17:27:47
1108
原创 要导出 PostgreSQL 数据库中的数据使用 pg_dump 命令
如果只需要导出数据库中的数据(不包括表结构),可以使用 -a 选项。-f output_file.sql:指定输出文件名,导出的数据将保存到该文件中。使用 pg_dump 命令来导出整个数据库,包括表结构、数据等。如果只需要导出特定表的数据,可以使用 -t 选项指定表名。-d dbname:指定要导出的数据库名。-h hostname:指定数据库主机名。-U username:指定数据库用户。-t tablename 指定表名。-p port:指定数据库端口号。
2024-03-15 08:52:18
2683
原创 c中execl命令了解
在这个例子中,/bin/ls是要执行的可执行文件路径,ls是新进程的argv[0]参数,-l和/tmp分别是传递给ls命令的两个参数,(char *)0表示参数列表的结束。const char *arg0:这是新进程的argv[0]参数,通常用来传递可执行文件的名称。在一般情况下,这个参数应该与path参数相同,即可执行文件的名称。:这表示可变数量的参数列表,用来传递给新程序的命令行参数。在execl函数中,你可以在arg0后面列出多个参数,这些参数会被传递给新程序。
2024-03-01 09:03:02
1474
原创 java文件复制的方法,linux中可以使用mv复制并改名,java使用文件复制也可以实现。
使用 transferFrom() 方法来实现文件复制操作。这种方法利用了底层操作系统的零拷贝特性,效率更高。的方法实现文件的移动并改名以及文件的复制并改名。在java中可以使用其他方法代替。文件复制到指定路径并删除源文件 = 文件移动。
2024-02-29 09:45:29
722
原创 java中@PostConstruct的作用
在上面的示例中,init() 方法使用 @PostConstruct 注解标记,表示这个方法会在 MyClass 对象创建后立即被调用。此外,只有标记为受管组件(如 EJB、Servlet、Spring Bean 等)的类中才能使用 @PostConstruct 注解,容器会负责调用这些方法。@PostConstruct 是 Java EE(现在更名为 Jakarta EE)中的注解,用于标记一个方法,在该类被实例化后(由容器创建并初始化之后),在调用构造函数之后立即调用此方法。
2024-02-27 10:00:49
584
原创 x86 和 x64 arm的区别
假设我们现在要开发一个cpu,就好比说我们去修建一栋楼,开发商会先将图纸设计好。设计好之后由施工单位按照设计图去建造。在建造的这个过程中,施工方是要按照国家一定的规范来设计的,比如每层楼的高度,窗户的大小,排水管大小以及消防通道的设置等,这个设计规范对于这栋楼(CPU)来说就是指令集架构。指令集架构就是机器的语言,包含了各种各样的指令,像我们常见的x86个arm就是两个不同的指令集架构。像是Intel(英特尔)和amd都是采用x86指令级架构,而手机平板等才用的大多就是ARM指令集架构。
2024-01-19 20:11:09
2131
原创 @RequestBody 注解内置的 HttpMessageConverter 实现类来解析请求体
在 Spring MVC 中,@RequestBody 注解默认使用内置的 HttpMessageConverter 实现类来解析请求体,并尝试将其转换为方法参数所需的对象类型。如果需要指定解析的数据类型,可以通过在方法参数上添加更具体的注解来实现。
2024-01-14 14:59:18
529
原创 kafka生产者设置ack、消费者设置自动提交实例
其中,通过设置 ACKS_CONFIG 参数为 “all”,将生产者的确认模式设置为 “all”,表示只有当所有副本都成功写入消息后,生产者才认为消息发送成功。在消费消息时,使用 poll() 方法从 Kafka 集群拉取一批消息,并进行手动提交位移操作(通过 commitSync() 方法)。在发送消息时,使用 send() 方法发送消息,并通过 get() 方法阻塞等待消息发送完成。在上述示例中,我们通过遍历消息列表,构建了一个分区列表,并将其传递给 commitSync() 方法。
2024-01-06 21:47:53
1317
原创 总结项目中oauth2模块的配置流程及实际业务oauth2认证记录(Spring Security)
项目中用过的spring security,拿来温习一下,一个简单版本的笔记。有问题欢迎大佬们指正!
2023-12-31 23:05:31
1867
原创 cms垃圾回收器的优点和垃圾收集的详细过程
与其他传统的垃圾回收器比如标记-清除(Mark-Sweep)算法相比,CMS采用了并发的方式进行垃圾回收,即在应用程序执行的同时进行垃圾回收操作。然而,为了达到较短的回收停顿时间,CMS必须牺牲一定的吞吐量。较短的停顿时间:CMS垃圾回收器采用了标记-清除算法,可以将整个垃圾回收过程分为多个阶段,每个阶段的暂停时间都较短,从而减少了应用程序的停顿时间。重新标记阶段:在这个阶段中,CMS垃圾回收器会暂停应用程序,重新扫描堆空间,标记在并发标记阶段有被修改的存活对象,并记录下所有被标记的对象。
2023-12-26 20:55:11
544
原创 mybatis的一级缓存和二级缓存
当开启二级缓存后,同一个 namespace 下的 SQL 语句执行的结果将会被缓存起来,当其他 SqlSession 执行相同的 SQL 语句时,会先查看二级缓存中是否存在对应的数据,如果存在则直接返回缓存中的数据,而不需要再去执行 SQL 查询。一级缓存是 MyBatis 默认开启的缓存机制,它指的是在同一个 SqlSession 中进行的查询操作会将查询结果缓存在内存中,下次再执行相同的查询时,如果命中了缓存,就会直接从缓存中获取结果,而不需要再去数据库中查询。
2023-12-26 16:32:18
186
原创 rabbitmq的事务实现、消费者的事务实现
手动确认模式(Manual Acknowledgement):在消费者处理消息之前,将通道设置为手动确认模式(channel.basicQos(1)),并在处理完成后调用channel.basicAck(deliveryTag, false)进行手动确认。然后,在 handleDelivery() 方法中,对每条消息进行处理,并根据处理结果调用 channel.basicAck()、channel.basicNack() 或 channel.basicReject() 进行消息确认操作。
2023-12-25 22:15:27
919
原创 为什么两个值明明相等,==判断却反回false?
先看第一段返回false,既然这样那为什么又返回true呢。为什么两个值明明相等,==判断却反回false?
2023-10-25 17:47:47
2112
原创 OnlyOffice集成Springboot以及web端
上次我们已经搭建好了onlyoffice的服务,不知道如何搭建的伙伴可以看看上篇文章。以下是springboot和前端web简单集成的页面,亲测jdk8和jdk17都适用。
2023-10-19 09:31:07
3178
2
原创 onlyoffice的介绍搭建、集成过程。Windows、Linux
在本地服务器上安装ONLYOFFICE Docs Community EditionCommunity Edition允许您在本地服务器上安装ONLYOFFICE文档,并将在线编辑器与ONLYOFFICE协作平台或其他流行系统集成。ONLYOFFICE Docs是一个在线办公套件,包括文本、电子表格和演示文稿的查看器和编辑器,完全兼容office Open XML格式:.docx、.xlsx、.pptx,并支持实时协作编辑。
2023-10-16 12:07:45
4827
1
原创 一、uniCloud的简介
uniCloud 是 DCloud 联合阿里云、腾讯云,为开发者提供的基于 serverless 模式和 js 编程的云开发平台。serverless是目前很火的概念,它是下一代云技术,是真正的“云”。传统的云服务,让开发者免于购买实体服务器硬件,改为购买虚拟机。但开发者仍然要自己装操作系统、web服务器、数据库,自己处理热备,自己新购服务器来应对高并发,自己抗DDOS攻击…这不是成熟的“云”!真正的云计算,就像用水用电,没有复杂的门槛,即用即有、按需付费。简单回顾下用电的历史。
2023-10-08 15:55:30
1975
原创 js返回的promise对象有值,为什么返回里面的值就为““了呢
如果您在Promise对象的回调函数中返回了一个值,并且这个值变成了Promise的成功状态(fulfilled),那么您应该能够在Promise链的后续部分访问到这个值。:如果Promise对象最终变成了rejected状态,那么在Promise链中返回的值将不再是成功的值,而是失败的原因。这可能会导致返回的值为空字符串,具体原因取决于您的异步操作失败的情况。:如果在Promise对象的回调函数中访问Promise的值,但是该Promise对象尚未完成异步操作,那么值可能会为空字符串。
2023-09-19 11:28:01
528
原创 JAVA查询当地天气,天气api
天气预报接口服务使用的聚合数据提供的免费接口,每天可以100次免费调用。可以通过https://www.juhe.cn/docs/api/id/73注册及开通。请求示例:http://apis.juhe.cn/simpleWeather/query?city=%E8%8B%8F%E5%B7%9E&key=接口地址:http://apis.juhe.cn/simpleWeather/query。接口备注:通过城市名称或城市ID查询天气预报情况。请求方式:http get/post。
2023-08-23 16:06:08
1007
原创 Redis的持久化策略及修改方式
尽管 RDB 是 Redis 的默认持久化策略,但你也可以选择使用另一种持久化方式,即 AOF(Append-Only File)持久化。要配置 Redis 使用 AOF(Append-Only File)持久化,你需要编辑 Redis 的配置文件,通常是 redis.conf,并根据你的需求进行设置。他们分别代表Redis 会在不同的时间间隔内(900秒、300秒、60秒)内,如果至少有 1 个 key 发生了变化,就会执行一次 RDB 持久化。RDB 持久化可以通过配置文件中的设置来启用或禁用。
2023-08-10 15:40:12
739
原创 socket传数据时遇见的错误java.io.EOFException at org.apache.tomcat.util.net.NioEndpoint$NioSocketWrapper.fillR
今天将socket服务部署到生产时出现的问题,java.io.EOFException at org.apache.tomcat.util.net.NioEndpoint$NioSocketWrapper.fillR。使用了反向代理,因此超过60S没有数据传输的连接会断开。在生产环境使用socket时由于服务器端口没有开启,所以这里使用socket使用的nginx反向代理。:后台写个定时程序每
2023-08-10 12:06:59
2748
原创 项目中使用过的线程池ThreadPoolTaskExecutor
默认情况下,Spring中的方法是同步执行的,即方法调用会等待方法的执行完成后再继续。但有时候,某些方法可能需要执行一些耗时的操作,如果在主线程中执行,可能会导致响应时间过长或影响系统的吞吐量。这时,你可以使用 @Async 注解并结合 @EnableAsync 启用异步执行,从而将这些耗时操作放在独立的线程中执行,提高系统的性能和响应性。需要注意的是,为了使 @EnableAsync 注解生效,还需要配置一个 Executor(执行器),它负责管理异步方法的线程池。注解才会开启多线程的执行。
2023-07-31 10:44:22
319
原创 session的工作原理,及session实现登录验证示例
服务器创建 Session: 服务器接收到请求后,如果该请求没有携带有效的 Session 标识(如 Session ID),服务器会为该用户创建一个新的 Session。Session 超时: 通常情况下,Session 有一个超时时间,即当用户在一段时间内没有发起新的请求时,服务器会自动删除该用户的 Session 数据,以释放服务器资源。服务器检索 Session 数据: 当服务器接收到客户端的请求时,会根据请求中的 Session ID 来检索对应的 Session 数据。
2023-07-28 11:57:42
4579
原创 Java文字转语音功能实现
但是项目启动后出现了no jacob-1.18-x64 in java.library.path。找不到的可以私信我。下载之后ddl文件放在JDK的目录下即可。需要下载jacob-1.18,网上一堆。项目中引入pom文件。
2023-07-26 13:35:37
388
原创 Jenkins持续集成
Jenkins 是一个开源的持续集成(Continuous Integration)工具,它可以帮助开发团队自动化构建、测试和部署应用程序。
2023-07-09 17:39:23
3215
2
RabbitMQ入门到精通笔记
2022-05-02
(狂神)ElasticSearch快速入门笔记,ElasticSearch基本操作以及爬虫(Java-ES仿京东实战)
2022-04-18
Rocketmq配置
2024-07-07
TA创建的收藏夹 TA关注的收藏夹
TA关注的人