JVM排查和调优常用工具

JVM排查和调优常用工具

JMAPjdk自带, 生成堆转储文件.hprofMAT 打开.hprof文件可以看到org.test.OomTest$OOMObject对象最多.VisualVM需要安装一些插件
2025-03-22
DDD架构及相关概念

DDD架构及相关概念

贫血模型和充血模型贫血模型只有属性public class RoleId { private Long value; }充血模型有属性也有行为(方法)贫血三层模型Controller + Service (处理业务逻辑并调用DAO接口操作数据库) + DAO (包括贫血Model)DDD经典
2025-03-21
基于Ollama本地部署deepseek-r1:8b

基于Ollama本地部署deepseek-r1:8b

下载ollama https://ollama.com/ 设置好环境变量, 更换模型的存储位置OLLAMA_MODELS下载大模型命令行中输入ollama run deepseek-r1:8b
2025-02-22

JumpServer堡垒机 - sftp和ssh

sftpsftp到堡垒机的这个路径/DEFAULT/SSH Server/目标服务器/实际是映射到目标服务器的/tmpssh跳板ssh 堡垒机用户名@堡垒机ip -p2222直连模式ssh 堡垒机用户名@目标服务器用户名@目标服务器ip@堡垒机ip -p2222ssh admin@root@192.
2025-02-16

公网Docker的端口暴露风险

场景默认配置下docker启动的容器, 如果进行了端口映射docker run --network bgnet --ip 172.18.0.3 --name http03 -p 9090:8080 http-docker则docker会修改iptables的规则, 以支持对应端口的流量转发. 如果
2025-01-02

Fusion端口转发与127.0.0.1的冲突

看日志没问题curl -v http://localhost:8080 没问题但 curl -v http://127.0.0.1:8080就报错, 表现为tcp正常, 但一会就连接重置了查看端口占用sudo lsof -i :8080 vmnet-nat 59433 root 11u IPv
2024-12-31

Shiro SimpleSession反序列化问题

项目中准备支持以redis支持分布式session. 但这个SimpleSession, 序列化到redis没问题, 反序列化就报错了. 一个SavedRequest对象无法构造, 因为没有空参构造方法. 除了这个对象, 还有很多奇奇怪怪的类无法反序列化查看代码, 操作redis用的是RedisTe
2024-12-31

MacOS 编译使用aliyun-openapi-cpp-sdk

开发库sdk依赖了几个库, 需要先安装. (brew: 包管理器)brew install jsoncpp brew install openssl brew install ossp-uuid brew install curl源码源码下载下来git clone https://github.co
2024-12-20

Jenkins构建优化 20min到2min

系统的jenkins构建流程很简单, 但一直很慢. 一次构建平均十几二十分钟git pull (17分钟)mvn clean package (6分钟)scp (4分钟)Git Pull发现之前的配置被勾选了自动清理workspace, 取消后拉代码就正常了, 基本是秒拉Maven Packagem
2024-12-19

接入TLog日志

tlog是一个轻量化的链路日志标签解决方案spring web项目引入依赖<dependency> <groupId>com.yomahub</groupId> <artifactId>tlog-web-spring-boot-starter</artifactId> <version>
2024-12-09
简易Mac历史剪切板

简易Mac历史剪切板

基于go-fyne, 自动存储剪切板历史记录 (只支持文本)main.gopackage main import ( "fyne.io/fyne/v2" "fyne.io/fyne/v2/app" "fyne.io/fyne/v2/container" "fyne.io/fyne/v2/d
2024-11-28

Linux服务器替换rm命令

先把rm禁了mv /bin/rm /bin/fuckrm或者chmod 000 /bin/rm然后vim /usr/local/bin/rm#!/bin/bash # 获取当前时间戳 timestamp=$(date +%Y%m%d%H) # 目标路径 trash/时间戳 target_dir=
2024-11-23

AWS 设置 SES 事件 HTTPS 通知

SESSimple Email Service. amazon aws的邮件服务配置新建配置集全部默认配置创建完后, 添加目的地, 选择: Amazon EventBridge, 并根据需要选择事件类型创建API目标进入Amazon EventBridge界面创建API 目标输入自己的https地址
2024-11-17

x-www-form-urlencoded 自动转小写

场景用户进行邮箱验证, 发送成功了, 验证码也收到了, 也提交对了. 但, 就是不通过.原因前端通过form表单提交的数据 application/x-www-form-urlencoded后端接收的时候, 大写被自动转成了小写.SpringBoot: 1.5.10.RELEASE
2024-11-17

AWS SES SDK V2 API 邮件发送

记录一下@Bean public SesClient sesClient(EmailAwsConfig config) { AwsBasicCredentials build = AwsBasicCredentials.builder() .accountId(con
2024-11-08

排查记录: Java所有接口卡死

线上接口, 每天凌晨三四点后开始卡死, 重启后恢复调用后等待两分钟, 然后504两分钟正好是nginx反代的超时时间排查过程日志把nginx和应用日志都找出来看了下, 没发现什么问题应用机器状态看了下cpu占用率/内存, 没问题磁盘占用也没问题应用状态通过jps查找到java进程然后jstack 进
2024-11-07

PostgreSQL bytea与字符串互转

假如name是bytea类型的字段新增时INSERT INTO users (name) VALUES ('zhangsan'::bytea)查询时SELECT CONVERT_FROM(name, 'UTF-8') AS name FROM users
2024-11-04

Spring RedisTemplate Scan

keys 不能用, 那就只能用scan了public static Set<String> scan(RedisTemplate<String, String> redisTemplate, String pattern) { return redisTemplate.execute((Re
2024-10-30

基于Redis ZSet的滑动窗口限流

private boolean limit() { String ip = ServletUtil.getClientIP(request); String banKey = "limit_ban_" + ip; Boolean b = redisTemplate.hasK
2024-10-29

PostgreSQL的"find_in_set"

SELECT *FROM sys_dept WHERE #{id} = ANY (string_to_array(ids, ','));注意id也需要是字符串形式
2024-10-28
Next »