自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(124)
  • 资源 (10)
  • 收藏
  • 关注

原创 Mysql 之 Undo Log/Redo Log/Binlog日志实现事务ACID

在深入理解Undo Log、Redo Log和Binlog之前,首先需要明确事务的ACID特性,这些特性是确保数据库操作可靠性和一致性的基石原子性(Atomicity):事务中的所有操作要么全部成功,要么全部失败,不会出现部分完成的状态一致性(Consistency):事务的执行必须使数据库从一个一致性状态转变到另一个一致性状态,确保数据的完整性隔离性(Isolation):指在多事务并发执行时,一个事务的操作对其他事务的影响程度。它确保事务之间的操作是相互独立的,避免并发带来的数据不一致问题。

2025-04-01 14:03:10 827

原创 URL地址末尾加不加 / 有什么区别

URL 结尾是否带主要影响的是以及。

2025-04-01 11:36:14 396

原创 如何解决TCC的空回滚和悬挂?

TCC是一种分布式的事务的方案,将一个事务分成了TRY-CANCEL-CONFIRM三个阶段:在TCC中,存在着两个比较关键的问题,那就是空回滚和悬挂的问题。

2025-04-01 10:27:47 356

原创 VisualVM 深入分析与详细介绍

VisualVM 是一个功能强大的、免费的、开源的Java应用程序性能监控和分析工具。它集成了多个JVM监控工具的功能,提供了一个统一的界面来监控和分析多个JVM实例。以下是VisualVM的详细介绍和使用方法。

2025-03-25 11:14:02 743

原创 浏览器指纹(Browser Fingerprinting)

浏览器指纹是一种强大的用户追踪技术,具有高度的唯一性和隐蔽性。虽然它在广告、反欺诈等领域有广泛应用,但也带来了隐私泄露的风险。用户可以通过使用隐私工具、禁用JavaScript等方式减少被追踪的可能性。

2025-03-19 17:26:04 493

原创 本地部署DeepSeek+DiFy平台构建智能体应用

RAG(Retrieval-Augmented Generation)检索增强生成是一种将外部知识检索与大语言模型生成能力结合的混合架构。其核心思想是通过检索外部知识库(如文档、数据库、网页等),弥补大模型静态训练数据的局限性;在生成答案时直接依赖检索到的证据,减少模型凭空编造内容的可能性,降低幻觉风险。RAG无需重新训练模型,仅需更新知识库即可适配不同专业领域(如医疗、法律)。类似将大模型视为一个“推理专家”,而RAG系统为其配备了一个“实时资料库助手”。

2025-03-19 17:20:33 964

原创 二十四节气

二十四节气是中国古代根据太阳在黄道上的位置变化,结合农业生产和气候变化规律,总结出的一套时间划分系统。它将一年分为24个时段,每个时段约15天,反映了季节、气候和物候的变化。

2025-03-19 16:34:22 600

原创 1G内存,如何对40亿QQ号去重?

假设我们需要对40亿个QQ号进行去重处理,但可用内存限制为1GB。常规方法(如HashSet或全量排序)在内存占用上存在明显瓶颈,因此需要设计一个兼顾内存效率和执行效率的解决方案。:如果QQ号范围已知,如何进一步优化内存?中占用20字节(包含对象开销),1GB内存可存储约5千万个QQ号。合并为最终文件,因相同QQ号必在同一分片,无需二次去重。类型需约32GB(40亿×8字节),远超1GB内存。:分治法(Hash分片+内存去重)是唯一可行方案。:使用GZIP压缩分片文件,减少磁盘占用。(需号码范围已知)。

2025-03-19 09:22:56 406

原创 如何有效的优化一个.Java 文件

及时释放资源:使用 `try-with-resources` 或手动关闭 `InputStream`、`OutputStream` 等资源。- 同步机制:合理使用 `synchronized`、`Lock` 或并发集合类(如 `ConcurrentHashMap`)来保证线程安全。- 使用高效的数据结构:根据场景选择合适的数据结构(如 `HashMap` 替代 `List` 进行快速查找)。- 调整堆内存:根据应用需求调整 JVM 的堆内存大小(`-Xmx`、`-Xms`)。

2025-03-13 17:21:21 403

原创 opencv 图片颜色+轮廓识别

opencv 图片颜色+轮廓识别

2025-03-11 16:10:45 293

原创 Tokens是啥?为啥大模型按Tokens收费?和API调用、订阅收费区别?

Tokens是啥?为啥大模型按Tokens收费?和API调用、订阅收费区别?

2025-03-08 10:34:07 348

原创 大模型都按Tokens收费,那么如何计算有效Tokens 数量呢?

大模型都按Tokens收费,那么如何计算有效Tokens 数量呢?

2025-03-08 10:31:24 240

原创 如何有效利用MYSQL的连接数

ini复制。

2025-02-21 12:04:28 923

原创 mybatis 和jpa 深入对比

MyBatis 和 JPA(Java Persistence API)是 Java 生态中两种主流的持久层框架,但它们在设计理念、使用场景和实现方式上有显著差异。:JPA 是 Java EE 规范的一部分(现为 Jakarta Persistence),定义了一套对象关系映射(ORM)的标准接口。)直接操作数据库,支持延迟加载(Lazy Loading)、级联操作(Cascade)等特性。:不提供复杂的 ORM 特性(如延迟加载、缓存策略),更注重 SQL 的灵活性和透明性。

2025-02-13 09:14:17 939

原创 解决mysql 内存持续上涨问题

innodb_buffer_pool_size 的大小,调到一个很小的值(暂时不考虑常规状态),发下内存一下子就下来了,当内存下来之后在调回原来的值,问题解决。32G内存,这里设置了20G,物理内存的60~70%

2024-12-07 15:12:17 555 2

原创 解决 npm install 卡住不动或执行失败

解决 npm install 卡住不动或执行失败

2024-11-25 10:03:41 956

原创 RocketMQ 消费者组和消息消费机制

这是因为在微服务架构中,每个服务都是独立的、自治的单元,负责特定的业务功能。这意味着如果你的服务有三个节点,并且它们都属于同一个消费者组(DISTRIBUTION_AUTO_ADD_TIPS),那么每条消息只会被其中一个节点消费,而不是每个节点都消费一次。一个服务一个消费组可以确保每个服务独立处理消息,不会受到其他服务的影响。职责明确:每个服务负责特定的业务功能,一个服务一个消费组可以确保每个服务的职责明确,避免模块间的耦合。故障隔离:不同服务之间的消息消费互不影响,一个服务的故障不会影响其他服务的消费。

2024-10-17 18:01:09 1444 2

原创 MySQL之Buffer Pool缓冲池详解

Innodb 存储引擎设计了一个缓冲池(,来提高数据库的读写性能。Buffer Pool 以页为单位缓冲数据,可以通过参数调整缓冲池的大小,默认是 128 M。Innodb 通过三种链表来管理缓页:Free List (空闲页链表),管理空闲页;Flush List (脏页链表),管理脏页;LRU List,管理脏页+干净页,将最近且经常查询的数据缓存在其中,而不常查询的数据就淘汰出去。;

2024-10-15 09:42:46 1500

原创 MySQL 之LRU 缓存管理算法

在 MySQL 中,特别是针对 InnoDB 存储引擎,LRU(Least Recently Used 最近最少使用)算法用于管理缓冲池中的数据页

2024-10-15 09:34:41 950

原创 JDWP调试接口RCE漏洞介绍(端口不对公网开放)

JDWP是为Java调试而设计的通讯交互协议,在渗透测试的过程中,如果遇到目标开启了JDWP服务,就可以利用JDWP实现远程代码执行JDWP(Java Debug Wire Protocol,Java调试线协议)是一个为Java调试而设计的通讯交互协议,它定义了调试器(Debugger)和被调试JVM(Debuggee)进程之间的交互数据的传递格式,它详细完整地定义了请求命令、回应数据和错误代码,保证了调试端和被调试端之间通信通畅。

2024-10-12 17:07:47 1819

原创 IntelliJ IDEA 常用快捷键

Ctrl + Shift + F7 高亮显示变量的所有使用情况。Ctrl + Shift + Z 取消上一次操作(撤销的撤销)。Ctrl + Shift + V 特殊粘贴(显示粘贴选项)。Ctrl + Shift + Alt + F 在模块中查找。Ctrl + Shift + E 显示最近修改的文件。Ctrl + Shift + H 在文件中替换。Ctrl + Shift + N 跳转到文件。Ctrl + Shift + / 插入块注释。Ctrl + Shift + F 全局查找。

2024-09-29 15:33:15 607

原创 MyBatis 中#{} 和 ${} 的区别

在大多数情况下,应该优先使用 #{} 来防止 SQL 注入,并且只有在确信参数值不会引起安全问题时才使用 ${}。并且 username 的值会通过 PreparedStatement 设置。这将导致 SQL 注入。

2024-09-26 14:23:53 219 1

原创 二次记录服务器被(logrotate)木马入侵事件

还试图将此脚本插入各种系统级cron目录和systemd服务中,以确保它持续运行或定期检查,这有效地使其更难以移除,并确保它定期运行。使在此模式下和正常启动的系统差别不大以root身份运行,拥有最高权限可以对所有文件读写,只是不需要输入root密码,所以就可以实现强制更改密码。设置了一个名为logrotate.service的systemd服务来运行下载的二进制文件,并尝试将执行命令添加到不同频率的各种cron目录(每小时、每天、每周、每月、每年)中,并使用chattr +i命令使这些脚本变为不可更改。

2024-09-25 10:52:12 1707

原创 Nacos 安全使用最佳实践 - 访问控制实践

为此我们建议您的集群按照下属步骤进行及检查和开启鉴权,修改默认用户名密码,避免风险;由于开启鉴权后,Nacos将拦截所有未带有身份信息和身份信息错误的请求,因此为了不影响业务使用,请先为应用配置正确赋权的用户和密码,默认情况下nacos提供一个标准的用户,用户名密码为。若部署的Nacos中存在上述开关为关闭、默认值的情况,建议尽快按照以下步骤开启鉴权,修改默认用户名密码和默认值,避免风险;在Nacos部署完成,并开启访问控制后,需要尽快修改应用所使用的用户密码,避免使用默认用户名密码,造成风险。

2024-09-24 16:21:50 2850

原创 如何有效的防止SQL注入攻击

结合这些方法,可以构建一个更加安全的应用环境,有效抵御SQL注入攻击。对于具体的编程实践,如在Java中使用PreparedStatement,可以参考相关的API文档来编写安全的代码。这种方式可以确保用户输入的数据不会被解释为SQL代码的一部分,而是作为参数传递给SQL语句。存储过程可以在数据库端预先定义并编译,提供了一种安全的方式来执行复杂的数据库操作,并且可以减少客户端直接与数据库交互的机会。应用程序使用的数据库账户应具有最小必要的权限,以限制潜在攻击的影响范围。

2024-09-23 11:29:18 616

原创 Minio简单实用的高性能对象存储软件

MinIO TLS 设置指南 (https://docs.min.io/docs/how-to-secure-access-to-minio-server-with-tls.html)MinIO Client (mc) 文档 (https://docs.min.io/docs/minio-client-quickstart-guide.html)这会将 myminio 中的 sourcebucket 的所有数据复制到 myminio 中的 targetbucket 中,并确保数据的完整性和一致性。

2024-09-23 10:16:02 1355

原创 为什么推荐用增强型 for 循环(也称为“for-each”循环)

在Java中,for (int b : arrB) 是一种增强型 for 循环(也称为“for-each”循环)的语法。这种循环提供了更简洁、易读的方式来遍历数组或集合中的元素。的情况下,使用增强型 for 循环是更好的选择。如果确实需要访问索引来执行某些操作,则可以继续使用传统的 for 循环。这种方式需要手动管理索引变量 i 的初始化、条件判断和递增操作。

2024-09-13 16:46:25 219

原创 mysql 之 information_schema

information_schema 是 MySQL 中的一个特殊数据库,它提供了关于 MySQL 服务器中所有数据库、表、列、索引、存储过程、函数、触发器等对象的元数据信息。动态生成:information_schema 中的数据是动态生成的,不是物理存储的数据,而是从 MySQL 服务器内部状态中动态获取的数据视图。ROUTINES:列出数据库中的所有存储过程和函数的信息,包括过程或函数名、参数等。TABLES:列出数据库中的所有表的信息,包括表名、表类型、创建选项等。

2024-09-11 14:18:47 724

原创 SQL索引详解

SQL索引在数据库优化中占有一个非常大的比例,一个好的索引的设计,可以让你的效率提高几十甚至几百倍,在这里将带你一步步揭开他的神秘面纱。  1.1什么是索引?  SQL索引有两种,聚集索引和非聚集索引,索引主要目的是提高了SQLServer系统的性能,加快数据的查询速度与减少系统的响应时间下面举两个简单的例子:图书馆的例子:一个图书馆那么多书,怎么管理呢?建立一个字母开头的目录,例如:a开头的书,在第一排,b开头的在第二排,这样在找什么书就好说了,这个就是一个聚集索引,可是很多人借书

2024-09-06 14:06:23 2411

原创 WebSocket+Spring boot 构建一个完整消息服务

WebSocket+Spring boot 构建一个完整消息服务

2024-09-06 10:51:14 941 2

原创 你还在使用 WebSocket 实现实时消息推送吗?

当然,随着技术的发展,我们也需要关注那些新兴的实时通信技术和工具,但 WebSocket 作为一个成熟、稳定的解决方案,依然值得我们深入学习和使用。简单来说,就是客户端和服务器之间只需要建立一个连接,就可以通过这个连接双向传输数据,而且数据可以随时发送,不需要像 HTTP 那样每次请求都要建立连接,大大提高了通信效率。不过,咱们今天不聊那些新兴的玩意儿,还是回归初心,好好聊聊 WebSocket,毕竟它可是实时通信领域的“老将”了。同时,我们还配置了消息代理,用于将消息从服务器推送到客户端。

2024-09-06 10:27:47 782

原创 正确使用stream api

今天给大家分享一下java里的stream api应该如何正确的使用才能真正让我们的代码变得很优雅,因为java推出stream api以后,很多小伙伴觉得特别帅酷炸裂,然后就会在代码里过渡的滥用stream api,最终反而会导致代码变得越来越丑,越来越不清晰,不好维护。比如,当一个Lambda表达式过于复杂时,可以考虑将其拆分成一个独立的方法,这样既可以保持代码的简洁性,又可以提高代码的可读性。但是,如果链式调用过长,就会导致一行代码变得非常长,甚至超过屏幕的宽度,这显然是不利于阅读的。

2024-08-12 16:37:29 550 1

原创 记录服务器被(logrotate)木马入侵事件

重启通过用户模式进入,查看进程发现有个定时任务一直在自动创建并执行(进程ID一直在变化,而且占满CPU,杀死之后马上又复活了,重启也一样),怀疑被入侵了。更改reids 默认端口和密码,升级nacos,然后我们的业务不需要用到境外IP,所以干脆就直接禁用境外IP。后面反馈运营商排查入侵原因,可能是通过 redis 默认端口或者nacos 漏洞。背景:发现平时正常登录的服务器突然进不去,也没明细的错误,重启也登录不了!清除木马程序和所有crontab 异常计划后,重置服务器密码,重启服务器。

2024-07-29 10:54:01 808

原创 spring web flux 记录用户日志及异常日志

【代码】spring web flux 记录用户日志及异常日志。

2024-07-09 11:01:41 339

原创 解决JSON 序列化 LocalDateTime 的问题

在处理LocalDateTime类型时,JSON转换可能会出现问题,因为JSON格式本身并不直接支持LocalDateTime。要解决这个问题,你需要使用一个库,如Jackson或Gson,来处理LocalDateTime的序列化和反序列化。@JsonFormat注解告诉Jackson如何格式化LocalDateTime字段,这里使用了"yyyy-MM-dd HH:mm:ss"的日期时间格式。

2024-06-03 17:31:39 918

原创 在flutter initState 方法,触发 setState导致循环执行

如果在initState中直接调用一个方法,而这个方法内部又调用了setState,那么会导致一个无限循环。

2024-05-28 10:14:58 725 1

原创 TextFormField onSave 和onChange

在Flutter的TextFormField中,onSaved和onChange是两个重要的回调函数,它们分别用于处理表单字段的保存逻辑和实时输入变化。

2024-05-25 14:53:22 486

原创 如何定义一个规范的Controller层代码

很多人都觉得技术也很简单,没有什么特别的地方,但是,实现这个代码框架之前,就是要你的接口的统一的格式ResultBean,aop才好做。有些人误解了,上周末那篇文章说的都不是技术,重点说的是编码习惯工作方式,如果你重点还是放在什么技术上,那我也帮不了你了。这个对应代码上,返回的类型是map,json,object,都是不应该的。最后说一句,先有统一的接口定义规范,然后有AOP实现。上面2段代码,第一个是原生态的,第2段是我指定了接口定义规范,使用AOP技术之后最终交付的代码,从15行到1行,自己感受一下。

2024-05-14 16:49:18 1104

原创 Prometheus + Grafana 实现可视化系统监控

Prometheus + Grafana 实现可视化系统监控

2024-05-13 11:57:44 1020

原创 Redis实现延迟队列(为订单超时关闭提供更多的解决方案)

Redis的SortedSet数据结构天然适合实现延迟队列。可以将任务ID作为成员(member),任务的执行时间戳作为分数(score)。这样,通过ZADD命令可以轻松地按照执行时间将任务插入到集合中。而ZRangeByScore或ZRemRangeByScore命令则可以在合适的时机取出或删除已到期的任务。

2024-05-10 14:24:22 1753

SVN版本控制方案

规范如何使用SVN trunk branch tag

2016-01-15

Java多张小图合成一张大图

java 程序将多张小图合成一张大图 适合css样式将多个小图合成大图

2014-02-24

Java关于时间调度的几种实现方(Timer Quartz Spring)

Java关于时间调度的几种实现方(Timer TimerTask Quartz Spring)

2014-02-18

JSP自定义分页标签 extends TagSupport

JSP自定义分页标签 extends TagSupport 多种分页风格无需额外资源,使用简单易懂:WebRoot/WEB-INF/tms-tags.tld 文件路径

2014-02-18

PowerDesigner反向工程将数据库设计导出SQL脚本、HTML或World

PowerDesigner反向工程将数据库设计导出: 1 导出SQL脚本 2 导出HTML用以展示模型效果 3 RTF(WORD)或者其他

2012-05-14

局域网聊天和文件传输[Java源码]

局域网 聊天和文件传输[Java源码]: JavaSE技术: Swing编程 Socket通讯 多线程 IO流 等等!

2012-05-14

oracle网络配置(连接非本机oracle服务器)

oracle网络配置(连接非本机oracle服务器)

2011-09-09

javascript日期、时间大小的比较

javaScript中实现时间、日期大小的比较 主要是用于在使用日期控件时比较您选择的时间是否大于系统当前时间.....

2010-05-08

struts2文件上传、下载

实现struts2中文件上传于下载及所要主意的地方.... 如:文件类型文件大小的控制等....

2010-05-08

从n个整数中查找出现频率最高的所有整数(用java实现)

从n个整数中查找出现频率最高的所有整数(用java实现)

2009-03-25

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除