- 博客(144)
- 收藏
- 关注
原创 【数据库连接池】C3P0 升级到 HikariCP,及二者的参数、性能优缺点对比(超详细)
C3P0与HikariCP的主要区别在于性能优化和配置逻辑。HikariCP作为当前性能最优的JDBC连接池,其吞吐量比C3P0高约10倍,核心优势在于无锁化设计、零内存拷贝机制和更精简的代码结构(约130个类,而C3P0超过200个)。其配置策略也更注重减少无效参数,例如默认关闭自动提交事务,且通过。迁移后预期可降低50%的GC停顿时间,并提升30%以上的数据库操作吞吐量。参数(通常设置为CPU核心数*2 + 磁盘数)。若使用MySQL,建议在JDBC URL追加。,建议通过JDBC4的。
2025-03-06 15:17:15
665
原创 【Postgresql】Linux 部署 Postgresql 数据库 (图文教程)
readline-devel 包提供了额外的头文件和库,用于开发与 readline 库兼容的程序。readline 是一个库,用于提供命令行编辑和历史功能,PostgreSQL 需要这个库来支持其命令行工具。zlib-devel 包包含了 zlib 压缩库的开发文件,包括头文件和用于链接的库文件。这里显示下载过了,不做过多的展示。PostgreSQL 数据库安装后,默认的用户名通常是 postgres。这个用户也被称为“超级用户”账户,因为它拥有数据库中的所有权限,并且可以执行任何数据库操作。
2025-02-21 14:04:57
1206
原创 【Bug经验分享】Postgresql 项目链接不上,JDBC及Datasource可以连接,Navicat也可连接
利用上述方式都发现无法解决,查看conf文件的最大连接数,我的项目中给了200,默认是100,所以导致链接不上修改最大链接数重启服务Win+R,输入services.msc找到postgre服务,重新启动navicat测试
2025-02-20 10:09:05
771
原创 【数据迁移】Sqlserver 迁移 Postgresql 详解 CSV+COPY 详细图文教程(实战踩坑优化案例)
迁移思路:先用sqlserver把新的项目去跑起来,然后去切postgresql去跑一下项目 项目中一些持久层或者代码要做适配 然后适配完去jmeter去压测,这个数据库性能能否支撑迁移,然后去设计postgre的表结构 ,然后去迁移存储过程函数等,然后迁移索引,然后调研迁移脚本,最后去做测试。在 SQL Server 中将数据导出为中间格式(如 CSV 或 SQL 脚本),推荐使用 CSV 文件,因为 PostgreSQL 的 COPY 命令可以高效导入。检查导出行数是否与数据库相同。
2025-02-19 17:59:40
1264
原创 【Postgresql】Windows 部署 Postgresql 数据库 (图文教程)
直接链接就可以,如果跟我版本相同按照相同步骤就可以进行链接,不同版本可能需要自己去配置一些文件才能生效,按道理只会低于14版本才需要,高版本都应该支持一些自动化的操作。到安装目录下,找到目录D:\devtool\PostgreSQL15\bin,在该目录下打开cmd窗口。此文章的版本是windos下的14大版本,如其他版本无法支持,请留言解决。如果显示这个,说明以及初始化完了,高版本的应该都不需要这么操作了。在开始菜单输入pg即可找到这个管理端,输入密码进行链接。无脑下一步,有经验的可以直接跳过安装部分。
2025-02-17 14:52:05
1735
原创 【SqlServer】Windows 10 部署 微软SqlServer 2014 (图文教程)
安装完成后,重启计算机。在弹出的窗口中,找到“.NET Framework 3.5 (包括.NET 2.0和3.0)”并勾选它。用navicat进行链接,请注意主机后面要跟实例名,如果在下载的时候选择的默认的实例则需要自行替换。请提前准备NET Framework 3.5的环境,在文中有提到下载方式,否则会导致不必要的麻烦。- Management Tools - Complete(完整管理工具,可选)可选是否通过 Windows Update 安装更新,建议跳过此步骤,点击。选择安装和配置,点击下一步。
2025-02-13 16:52:52
1055
原创 【Jboss/Linux】 Jboss eap 7 + JDK8 + Springboot 2.7 升级 Jboss eap 8 + JDK17 + springboot 3
当你的服务器中的JAVA_HOME被其他项目或者其他工程引用的时候,就需要Jboss单独去指定自己需要的JDK的版本,这样就不会影响别人的东西。如果你这台服务器就是供给你自己使用你可以更改全局的环境变量,如果是有别的同事使用建议让你的jboss直接指定对应的JDK,而不是去更改全局的。打包命令–如果在idea中打包需要安装东西,可以在项目文件中(带pom文件的路径下),cmd进行打包。将打包好的war直接放置在jboss的\standalone\deployments文件。linux导出到windows。
2025-01-21 15:19:08
1033
原创 【Redis】为什么Redis单线程还这么快?通过什么机制进行优化的?
总共有这几个大的方向,保证了单线程的环境下的处理性能:内存、数据结构、非阻塞I/O、多路复用,非CPU密集型、单线程的优势、多线程以及后台线程的处理优化。
2025-01-16 18:33:07
1034
原创 【Sql递归查询】Mysql、Oracle、SQL Server、PostgreSQL 实现递归查询的区别与案例(详解)
这种常见的递归查询方式),但可以通过使用存储过程、临时表或自连接等方式来实现递归查询的效果。通过自连接的方式模拟递归查询,适合处理简单的递归结构。假设我们有一个表示部门层级关系的表。MySQL 5.7 本身不直接支持标准 SQL 中的递归查询语法(如。子句进行递归查询,查找某个员工及其所有下属。,但递归方向是从指定员工向上查找其所有上级。语句将父部门和子部门关联起来,然后使用。假设我们有一个表示员工层级关系的表。在 MySQL 8 中,可以使用。子句来实现递归查询。
2025-01-13 17:48:39
1086
原创 【存储过程】Mysql的存储过程,语法及案例(详解)
优点代码复用性:存储过程可以将常用的SQL操作封装起来,在不同的应用程序或SQL脚本中重复调用。这避免了重复编写相同的SQL代码,提高了开发效率,也便于对业务逻辑进行统一管理和维护。提高性能:存储过程在创建时会进行编译和优化,存储在数据库服务器中。当调用存储过程时,数据库可以直接执行已编译好的代码,无需再次解析和优化SQL语句,这大大减少了数据库的处理时间,提高了执行效率。特别是对于复杂的查询和操作,性能提升更为明显。减少网络传输。
2025-01-09 20:54:34
1164
原创 【分布式缓存】一致性Hash原理剖析,一致性Hash与Hash的区别(详解)
一致性哈希算法通过将数据和服务器节点映射到一个固定的哈希空间,引入虚拟节点来解决数据分布不均匀的问题,并在服务器动态增减时能够有效地减少数据迁移的开销,实现了高效的负载均衡和系统的稳定性。它是分布式系统架构设计中一种非常重要的技术,为大规模数据的存储和处理提供了可靠的解决方案。随着分布式系统的不断发展和应用场景的不断拓展,一致性哈希算法将继续发挥其重要作用。
2025-01-07 21:22:21
1050
原创 【国密算法】SM2椭圆曲线公钥密码算法原理、数据加密、签名、验签、解密(详解与应用)
SM2算法全称是SM2椭圆曲线公钥密码算法(SM是商用密码的拼音缩写),是一种基于“椭圆曲线”的密码 ECC(Elliptic CurveCryptography)。推出的国产化算法,和RSA算法一样,同属于非对称算法体系,而且是椭圆曲线加密(ECC)算法的一种。通俗点理解就是私钥是一个随机数生成的,命名为d,公钥是用d进行G运算,就是上文提到的G点,去计算2G,3G。GF(p):p就是其中的质数,比如p是20,那GF(20)就是0,1,2,…AB重叠的计算公式(2A运算):2A取与曲线的交点然后做对称。
2025-01-06 19:42:53
1488
原创 【Jboss/Windows】Tomcat 8 + JDK 8 升级为 Jboss eap 7 + JDK8
用记事本进入jboss的目录:找到bin目录下的standalone.bat,用记事本或者其他的文本编辑软件,修改JBOSS_HOME,为你的jdk1.7,安装路径。如果,要想修改你的jboss服务器端口,可以到jboss->standalone->configuration,找到standalone.xml文件:把 8080修改成你想要的端口重启即可。企业版:去setting中的Plugins下载Jboss的相关插件,搜到什么下什么,然后重启idea,也可能会出现,但是个人觉得不好用。
2025-01-03 17:57:55
1181
原创 【RabbitMQ】RabbitMQ堆积100万,1000万条消息对应的策略总结
假设当前使用的是 RabbitMQ,且只有一个消费者在处理消息,该消费者处理一条消息平均耗时 100 毫秒(即每秒处理 10 条消息)。那么增加到 10 个消费者后,如果每个消费者的处理能力相同且不存在资源竞争等问题,理论上处理速度可提升到每秒 100 条消息。案例:在一个电商订单处理系统中,订单创建成功后会发送一条消息到 MQ,原本单个消费者负责处理订单消息并更新库存、生成物流订单等操作。当消息大量堆积时,可启动多个消费者实例,每个实例都能独立地从 MQ 中获取订单消息并进行处理。但在实际情况中,若消费者
2024-12-22 13:08:37
1271
原创 【RabbitMQ】RabbitMQ保证消息不丢失的N种策略的思想总结
通过RabbitMQ本身所提供的机制基本上已经可以保证消息不丢失 , 但是因为一些特殊的原因还是会发送消息丢失问题 , 例如 : 回调丢失 , 系统宕机, 磁盘损坏等 , 这种概率很小 , 但是如果想规避这些问题 , 进一步提高消息发送的成功率, 也可以通过程序自己进行控制。, 之后再向MQ发送消息 , 消费方接收消息消费完毕之后 , 向发送方发送一条签收消息 , 发送方接收到签收消息之后 , 修改消息状态表中的消息状态为。消息从发送,到消费者接收,会经理多个过程 , 其中的每一步都可能导致消息丢失。
2024-12-22 11:45:39
1548
原创 【MongoDB】使用 MongoDB 存储日志、审批、MQ等数据的案例及优点
在 64 位系统上,使用 ext4 文件系统,文件大小可以达到 16TB(这只是文件系统层面的限制,实际情况还会受到磁盘空间等因素影响)。MongoDB 单个文档大小限制在 16MB(这是为了保证性能和避免过度复杂的文档结构)
2024-12-21 12:50:24
1375
原创 【MongoDB】MongoDB的集群,部署架构,OptLog,集群优化等详解
MongoDB在主节点应用数据库操作后将其记录到optlog中,从节点通过异步进程复制和应用(数据同步)这些操作。所有复制集成员都在local.oplog.rs集合中有op log的副本以维护数据库当前状态。MongoDB 4.4支持以小时为单位指定最小操作日志保留期,仅在oplog达到最大大小或oplog条目早于配置小时数时删除操作日志条目。
2024-11-13 17:05:01
1532
原创 【MongoDB】MongoDB的核心-索引原理及索引优化、及查询聚合优化实战案例(超详细)
建立索引后,MongoDB会额外存储一份按age字段升序排序的索引数据,索引结构类似如下,索引通常采用类似btree的结构持久化存储,以保证从索引里快速(O(logN)的时间复杂度)找出某个age值对应的位置信息,然后根据位置信息就能读取出对应的文档。需要注意的是,索引并不是越多越好,集合的索引太多,会影响写入、更新的性能,因为每次写入都需要更新所有索引的数据。当集合文档数量较少时,全表扫描的开销可能不大,但当文档数量达到百万、千万甚至上亿时,全表扫描的开销会非常大,一个查询耗费数十秒甚至几分钟都有可能。
2024-11-12 22:19:10
1678
原创 【MongoDB】MongoDB的存储引擎及Wiredtiger的读/写缓存、数据结构设计、Page生命周期等实现原理(超详细)
pages的状态是在不断变化的,因此,对于读操作来说,它首先会检查pages的状态是否为WT_REF_MEM,然后设置一个hazard指针指向要读的pages,如果刷新后,pages的状态仍为WT_REF_MEM,读操作才能继续处理。它与 B-Tree 的主要区别是,B+ Tree 的叶子节点不仅存储数据的键(key),还存储实际的数据(值,value)。:随着数据的插入和删除,B-Tree 需要做一些额外的操作(比如节点的分裂、合并),这些操作虽然能保持数据的有序性,但也会带来性能开销。
2024-11-08 16:55:20
1397
原创 【MongoDB】MongoDB的Java API及Spring集成(Spring Data)
通过 Spring Data MongoDB,我们可以轻松地将 MongoDB 数据库的操作与 Spring 应用集成,并且能够以声明式的方式进行数据访问,而无需直接编写大量的 MongoDB 操作代码。以下是一个使用 Spring Data MongoDB 的基本示例,展示了如何将 MongoDB 集成到 Spring Boot 应用中,执行 CRUD 操作。以上一个简单的MongoDB使用就完善了,在业务中更多的也是如此的CRUD,后续文章会写一些关于MongoDB的底层原理,毕竟面试要造火箭。
2024-11-07 13:50:15
1584
原创 【MongoDB】MongoDB的聚合(Aggregate、Map Reduce)与管道(Pipline) 及索引详解(附详细案例)
Map Function: 对于每个文档,emit 函数将 customerId 作为键,amount 作为值发射出去。Reduce Function: 对于每个唯一的 customerId,reduceFunction 接收一个键和与该键相关联的所有值的数组,并返回这些值的总和。Output: 结果存储在 order_totals 集合中,每个文档包含一个 customerId 和该客户的总订单金额
2024-11-05 22:52:22
1456
原创 【MongoDB】Windows/Docker 下载安装,MongoDB Compass的基本使用、NoSQL、MongoDB的基础概念及基础用法(超详细)
NoSQL是“Not Only SQL”的缩写,代表了一类非关系型数据库,主要用于处理大规模数据存储和高并发访问。与传统的关系型数据库(如MySQL、PostgreSQL)不同,NoSQL数据库没有固定的表结构,能够灵活存储多种数据类型,包括结构化、半结构化和非结构化数据。这里可以按需选择安装MongoDB Compass,选择会稍微慢一些,但为了方便还是建议直接顺手安装。安装完会自动打开如下界面,开启你的MongoDB操作。按需选择下载,我这里下载的是Windows x64。给创建的数据库添加数据。
2024-11-01 15:47:02
1327
原创 【JVM】OOM后,JVM会退出吗?OOM killer机制,默认异常处理器原理(超详细)
OOM(Out of Memory内存溢出)的缩写。它是一个计算机术语,用于描述计算机或设备在处理任务时由于内存不足而无法继续操作的状态综上所述,JVM在遇到OOM时不一定会退出。具体情况取决于OOM的类型、程序中是否有适当的异常处理,以及JVM的配置。合理的异常处理和资源管理可以帮助程序在内存不足的情况下继续运行,避免意外退出。
2024-10-16 09:33:09
1081
原创 【Solr】Solr搜索引擎下载、安装、使用及跟Elasticsearch的对比(保姆篇)
是一个开源搜索平台,旨在为企业和应用提供强大的搜索能力。它支持多种数据类型的搜索,并提供丰富的功能,如全文检索、快速搜索、分面搜索、高亮显示、地理搜索等。
2024-10-14 09:07:49
2073
原创 【JVM】JVM调优原理、思路、真正意义上解决性能瓶颈(附实际调优案例)
在 JVM 上,最初是通过 JNI 调用来实现方法的反射调用,当 JVM 注意到通过反射经常访问某个方法时,它将生成字节码来执行相同的操作,称为膨胀(inflation)机制。默认是15次,可通过参数 -Dsun.reflect.inflationThreshold 进行控制,在小于该次数时会使用 JNI 的方式对方法进行调用,如果调用次数超过该次数就会使用字节码的方式生成方法调用。分析问题、定位问题、解决问题,三个角度去描述,描述你具体怎么做的。所以对这个问题分析,我们就要看gc的日志进行分析。
2024-09-26 11:02:41
1943
原创 【JVM】一篇聊透内存泄露,栈内存溢出,JVM中的垃圾回收器超详细
为啥要有这个东西:在这里,先想一下,如果没有双亲委派,那么用户是不是可以自己定义一个java.lang.Object的同名类,java.lang.String的同名类,并把它放到ClassPath中,那么类之间的比较结果及类的唯一性将无法保证,因此,为什么需要双亲委派模型?:老年代的垃圾回收通常较少且耗时,因为老年代的对象通常较大,且需要全堆扫描。:在堆内存中,老年代的空间通常比新生代更大,适合存放长期存在的对象。:比软引用更弱,当垃圾回收器工作时,如果一个对象只被弱引用引用,就会被回收。
2024-09-26 08:35:48
1281
原创 【JVM】一篇文章彻底理解JVM的组成,各组件的底层实现逻辑
java文件通过java源码编译器进行编译为.class文件,存储的是字节码(二进制数据),类加载器,通过验证、准备、解析、初始化流程、将字节码数据读到方法区中,并在堆中创建一个java.lang.Class对象,用来封装类在方法区内的数据结构,通过编译器,将字节码翻译成底层系统指令,再交由 CPU 去执行。对于java来说,类加载器将.class文件(字节码二进制的数据),装载到jvm中,并将类的结构封装成一个class对象放到堆中。`.class文件,存储的是字节码(二进制数据)。
2024-09-24 14:20:10
1776
原创 【JAVA】自动生成常量类、自动生成所需代码(附源码)
思路:选择一个想操作的表单或者页面,然后可选择所选择表单的字段及表名,制作两个按钮,一个按钮是去自动生成一个文本,在页面展示可复制,另一个按钮是生成一个java文件,这样对于开发者不管是直接使用java文件还是拷贝这个文本都比较方便,详细可看下方代码。在一个阳光明媚的下午,接到一个需求,大家都觉得自己去定义全局变量比较麻烦,后期维护也比较麻烦,所以能不能自动生成一下。
2024-09-18 17:13:27
1067
原创 【JAVA】多线程的创建、线程池创建线程的方式(超详细)
当应用程序希望在任务提交失败时立刻知道,并进行错误处理或日志记录时,这种策略是合适的。例如,当任务的失败可能意味着系统的严重问题,开发者希望程序能立刻响应并处理这些异常情况时,可以使用。:当任务丢失是可以接受的,或者任务的重要性相对较低时,可以使用这个策略。:当系统希望优先处理最近提交的任务,并丢弃最早的任务以腾出空间时,可以使用这个策略。即,任务不会被丢弃或丢失,而是会由提交任务的线程自己执行。:这个策略会丢弃任务队列中最旧的任务,然后尝试提交新的任务。,即立即终止任务提交,并通知提交者任务提交失败。
2024-09-18 08:23:46
1483
原创 【JAVA】一篇聊透百万级数据导入导出场景问题、大数据处理策略及优化方案、EasyExcel 和 EasyPOI的玩法详解
EasyExcel 是阿里巴巴开源的 Java 库,用于高效地处理 Excel 文件。它在处理大数据量时表现优异,具有低内存占用和高性能的特点。EasyPOI 是另一个流行的 Java 库,旨在简化 Excel 文件的操作。虽然它也提供了良好的性能,但在处理大数据量时,可能不如 EasyExcel 高效。
2024-09-14 09:57:24
1901
原创 【JAVA】Spring Security框架三万字详解,看这一篇就够了
可以在SpringSecurity中创建自定义配置文件Java自定义配置用来管理用户信息,是UserDetailsService的一个实现,用来管理基于内存的用户信息。创建一个WebSecurityConfig文件:定义一个@Bean,类型是UserDetailsService,实现是InMemoryUserDetailsManager@EnableWebSecurity//Spring项目总需要添加此注解,SpringBoot项目中不需要@Bean。
2024-09-13 09:12:10
1048
原创 【JAVA】数据脱敏技术(对称加密算法、非对称加密算法、哈希算法、消息认证码(MAC)算法、密钥交换算法)使用方法
数据脱敏(Data Masking)是指对数据进行处理,替换或掩盖其真实内容,以防止敏感信息被未经授权的用户访问。脱敏后的数据仍然能够保留原数据的格式和某些特征,但无法反映真实的敏感信息。其主要目的是保护隐私、遵守法律法规、以及降低数据泄露的风险。
2024-09-12 08:49:09
1708
原创 【数据库】瀚高数据库Windows/Linux、下载安装、高级用法、数据迁移(保姆篇)
在当今数据驱动的世界中,数据库系统的选择对企业和开发者至关重要。瀚高数据库(HangoDB)作为一种新兴的数据库解决方案,结合了高性能、易用性和灵活性,为各种应用场景提供了强大的支持。
2024-09-11 08:44:21
4716
1
原创 【JAVA】Undertow的使用及性能优化,以及Undertow与Tomcat的对比
在相同的机器配置下,模拟相等的请求数,Undertow 在性能和内存使用方面都是最优的。所以,如果是高并发的业务系统,Undertow 是最佳选择。在SpringBoot应用的application.properties或application.yml中,可以调整Undertow的线程池设置。当你进行Tomcat调优发现在怎么调都无法满足需求的时候,Undertow容器在性能和内存上都优于Tomcat容器,因此选择Undertow容器并进行调优是更好的选择。所以只需更换一个依赖即可使用,还是很方便的。
2024-09-10 09:34:56
2539
原创 【JAVA】Tomcat性能优化、安全配置、资源控制以及运行模式超详细
nio(new I/O),是Java SE 1.4及后续版本提供的一种新的I/O操作方式(即java.nio包及其子包)。Java nio是一个基于缓冲区、并能提供非阻塞I/O操作的Java API,因此nio也被看成是non-blocking I/O的缩写。
2024-09-09 11:25:27
2424
原创 【JAVA】影响及解决Spring Boot 依赖下载慢的问题
在使用 Spring Boot 开发应用程序时,依赖下载速度慢可能会成为一个常见的痛点。较长的下载时间不仅影响开发效率,还可能导致生产环境中的构建延迟。利用增量构建或增量编译来减少每次构建所需的时间。例如,Gradle 的增量构建和 Maven 的增量编译都能显著提升构建速度。配置构建缓存以减少重新下载和构建的时间。例如,Gradle 提供了构建缓存功能,可以通过。对于 Maven 和 Gradle,可以配置并行下载来加快依赖获取速度。Maven 可以通过。来分析和优化依赖项,找出不必要的或过时的依赖。
2024-09-04 09:41:38
1196
原创 【数据库】达梦数据库下载、安装、基础与高级语法,以及与其他数据库的区别(保姆篇)
达梦数据库是由中国达梦数据库有限公司开发的关系型数据库系统,广泛应用于政府、金融等领域。它支持多种 SQL 标准,提供了高性能和高可用性,适合大规模数据处理和复杂查询。
2024-09-04 09:40:38
5050
原创 【Protobuf】xml、json与protobuf有什么区别,protobuf详解(保姆篇)
Protocol Buffers(简称 Protobuf)是 Google 开发的一种语言中立、平台中立、可扩展的序列化结构数据的机制。它主要用于将数据结构序列化为二进制格式,以便于高效传输和存储。Protobuf 在性能、文件大小和数据兼容性方面有着显著的优势。Protobuf 适用于多种编程语言,包括 C++、Java、Python、Go 和 C# 等。本文将详细介绍 Protobuf 的工作原理、如何定义消息结构、生成代码及其在实际应用中的使用。Protobuf 使用.proto文件定义数据结构。
2024-09-02 18:07:17
1223
原创 【JAVA】Log4j、Logback、JUL日志文件详解(保姆篇),以及如何去掉控制台没用的日志案例分享
log.configLog4j 是 Apache 提供的一个日志框架,它允许开发者根据需要配置日志输出。Log4j 的配置文件通常是 XML、JSON 或者 Properties 格式。
2024-09-02 08:55:03
953
空空如也
vue项目启动问题报错
2024-07-17
TA创建的收藏夹 TA关注的收藏夹
TA关注的人