Write you want
Life cannot satisfy us in every aspect, but we still need to live with enthusiasm.

Hammerspoon 里用 WiFi SSID 做判断的折腾记录
记录在 macOS Sequoia 上 Hammerspoon 无法获取 WiFi SSID 的排查过程,最终发现需要开启定位权限才能解决。
🛠️ 开发工具与插件 2026.05.29 4 min read
Read More打造 SkillsJars Helper:让 AI Agent Skill 在 IDE 中可视化分发与管理的 IDEA 插件
介绍 SkillsJars Helper IDEA 插件的设计思路,解决 AI Agent Skill 在 IDE 中的可视化分发、一键安装与版本状态管理问题
🛠️ 开发工具与插件 2026.05.28 18 min read
Read More

如何让 Gemini CLI 实现多账号无感切换
介绍 gcam(Gemini CLI Account Manager)的设计与实现,通过多账号池和自动切换机制解决 Gemini CLI 配额管理的痛点
🛠️ 开发工具与插件 2026.05.27 19 min read
Read More打造 Skill Inspector:一款 AI Agent Skill 的 IDE Linter 插件
为 AI Agent Skill 打造的 IDE Linter 插件,内置 30+ 检查规则、Quick Fix 和可扩展平台设计。
🛠️ 开发工具与插件 2026.05.26 13 min read
Read More

让 Spring Boot Starter 天然支持 AI:Zeka Stack 接入 SkillsJars 的一次探索
记录 Zeka Stack 通过 SkillsJars 让 Spring Boot Starter 同时携带代码依赖和 AI 工程上下文的一次实践。
🙉 Zeka.Stack 2026.05.19 13 min read
Read More

统一管理本地 Code Agent 全局规则:从 AGENTS.md 到 Synology Drive 同步
把 Codex、Claude Code、opencode、Gemini 等工具的全局规则统一到 Synology Drive 上的一份文件,并用软链接分发,减少规则漂移与 Agent 行为不一致。
🛠️ 开发工具与插件 2026.05.13 22 min read
Read More在终端里用 AI 生成 Git 提交记录
在终端里用 AI 生成 Git 提交记录,把重复的 diff prompt 封装成一个通用脚本。
🔥 效能提升 2026.05.12 5 min read
Read More

我的 AI Native 开发者画像(2026)
基于真实本地数据整理的 AI-Native 开发者画像,覆盖模型使用、协作方式、产出节奏与工具沉淀。
🔥 效能提升 2026.05.08 12 min read
Read More

屏蔽 YisouSpider 爬虫:避免 CDN 流量被异常消耗
一次从 CDN 日志里定位 YisouSpider 异常请求静态资源的排查记录,重点是把拦截位置放到 CDN 边缘层。
🖥️ 基础设施与运维 2026.05.07 10 min read
Read More验证码安全漏洞——代码审查不会告诉你的那些事
验证码的作用是提高自动化滥用的成本,但当前端加密逻辑可以被逆向、请求可以被重放、用户名可以通过错误信息枚举时,验证码就成了一个心理安慰。
🧱 后端开发与架构 2026.05.06 15 min read
Read More

全链路加解密:在 HTTPS 之外再套一层
从零开始理解混合加密的设计思路,再看实际项目中 SM2+SM4 全链路加解密的完整实现——前端如何生成密钥、后端网关如何解密、缓存为什么失效、以及这层加密真正的防护边界在哪里。
🧱 后端开发与架构 2026.05.05 26 min read
Read More

Zeka Stack 3.0:AI Native 工程平台定位升级
复盘 Zeka Stack 3.0 在 AI 时代的定位升级路径,从脚手架工具演进到 AI Native 工程平台。
🙉 Zeka.Stack 2026.05.04 35 min read
Read More再见 bootstrap.yml,spring.config.import 时代的配置管理
bootstrap.yml 被废弃了,但 spring.config.import 的坑比 bootstrap.yml 更隐蔽——配置加载顺序、优先级倒挂、profile 文件加载太晚——这些问题每一个都能让你排查一整天。
🧱 后端开发与架构 2026.04.28 15 min read
Read More

使用本地 SSH Key 登录 GCP Compute Engine 实例
机场线路不稳定又担心 IP 污染风险时,我在 GCP 自建节点前先打通了本地 SSH Key 登录 Compute Engine 的完整流程。
🖥️ 基础设施与运维 2026.04.25 6 min read
Read More

被内存条逼出来的 Homelab:3 台 Mac 撑起 IntelliAI Engine 的免费大模型服务
记录怎么把家里三台闲着的 Mac 拼成 IntelliAI Engine 背后的免费大模型服务,以及用户如何四步接入 FreeAI。
🙉 Zeka.Stack 2026.04.18 12 min read
Read MoreFeign 接口治理与 DelegatingService 模式
Feign 接口到底该由谁来维护?两种策略各有拥趸,但真正推动决策的不是技术优劣,而是架构迁移的现实约束。聊聊 DelegatingService 模式的设计与抉择。
🧱 后端开发与架构 2026.04.16 14 min read
Read More

网关性能调优,从 Nginx 到内核参数
压测时 Nginx 报 Cannot assign requested address,排查发现是 TIME_WAIT 端口耗尽和短连接问题。从一个错误日志出发,一步步完成网关层的性能调优。
🖥️ 基础设施与运维 2026.03.24 10 min read
Read More

用一台 Mac mini M2 当博客网关:WireGuard 把分散的服务收编回家
把散落在多台 PVE 上的博客服务集中到一台 Mac mini M2,用 WireGuard 把 ECS 和家里组成内网,公网只暴露一个入口。
🏠 HomeLab:中年男人之友 2026.03.19 41 min read
Read MoreMyBatis 组件化实践:踩坑全记录
MyBatis 做成组件 jar 给业务方用,听起来简单,做起来一堆坑:XML 打包丢了、dao 扫不到、分页和加密绑在一起、依赖传递导致冲突——这篇文章就是把这些问题串起来讲清楚。
🧱 后端开发与架构 2026.03.12 16 min read
Read More

PVE 万兆网卡只跑 1G?一次 ARP Flux 的完整排查记录
PVE 上万兆网卡协商 10G 却只跑 1G?不是硬件问题,是同网段多接口引发的 ARP Flux。
🖥️ 基础设施与运维 2026.02.18 13 min read
Read More

家里十几台服务器的命令历史,被我塞进了一个 hishtory:顺便接上自建 AI 网关
用自建 hishtory server 把家里所有机器的 shell 历史汇总到一个地方查询,顺便把 AI 补全接到自建的 OneAPI 网关上。
🔥 效能提升 2026.02.11 12 min read
Read More

缓存组件重构:一个接口塞了 50 个方法
从"一个接口 50+ 方法"的缓存组件说起,聊聊接口隔离原则、静态工具类的罪与罚、序列化选型和连接池治理。
🧱 后端开发与架构 2026.02.04 20 min read
Read More

服务器开机后在 tty1 自动显示 btop:一块小屏幕救一根 HDMI 线的故事
给家里服务器挂了一块小屏幕当监控仪表盘,配合 systemd 让开机就自动在 tty1 跑 btop,不用再接键盘登录。
🏠 HomeLab:中年男人之友 2026.02.01 7 min read
Read More我写了一个 IntelliJ IDEA 插件,用 AI 一键生成 Changelog
利用 AI + Git + CodeDiff 打造一个 IntelliJ IDEA 智能 Changelog 插件,让版本发布日志和工作汇报从"手工整理"升级为一键生成、格式统一的自动化流程。
🤖 AI:人工智障 2026.01.26 18 min read
Read More

从重复劳动到智能助手:我为什么要开发一个 JavaDoc 插件
用 AI 驱动的 IntelliJ IDEA 插件自动生成高质量 JavaDoc,解决手动编写文档的痛点,提升开发效率。
🤖 AI:人工智障 2026.01.18 20 min read
Read More

受够了手动配 Samba:一个脚本搞定家里所有 Linux / OpenWrt 的文件共享
一套我自己用了很久的 Samba 一键脚本,把 Linux / OpenWrt 上那些装包、改配置、开防火墙、搞网络发现的活儿全包了。
🏠 HomeLab:中年男人之友 2026.01.16 15 min read
Read MoreMaven 工程规范:真正的承重墙
工程规范和项目脚手架是研发底座中最不起眼但最重要的组成部分,本文从 Maven 依赖管理、构建产物规范到项目骨架生成,逐一拆解设计与选型思路。
🧱 后端开发与架构 2026.01.13 15 min read
Read More

为什么我选择做一个"小工具":IntelliAI 插件的设计哲学与 Engine 架构
记录 IntelliAI Terminal 插件为什么只做一件事,以及背后的 Engine 架构思路。
🎉 高能分享 2026.01.02 9 min read
Read More

架构设计:如何在 IntelliAI Engine 中优雅集成非标准协议的 AI 服务
通过Sidecar模式实现非标准AI服务的优雅集成
🎉 高能分享 2025.12.18 14 min read
Read More

你今天挖矿了吗?反正我「被挖」了
本文记录了一次真实的服务器被攻击经历。作者在使用 Next.js 时遭遇了 CVE-2025-55182 漏洞攻击,攻击者利用 React Server Components 的安全缺陷在服务器上执行挖矿程序。文章详细分析了漏洞原理、攻击手法、处置过程,并提供了安全防护建议。
🎉 高能分享 2025.12.13 52 min read
Read More

在 Docker 中部署 PostgresML 实现数据库内机器学习
在 Docker 中部署 PostgresML,实现数据库内机器学习,为 Spring AI 应用提供向量存储和语义搜索能力。
🤖 AI:人工智障 2025.11.21 46 min read
Read More

📚 Maven 必知必会
深入介绍了Maven的核心概念、依赖管理机制和最佳实践。文章重点解析了Maven的.mvn目录配置、依赖冲突解决、Scope使用等关键知识点,并分享了项目级别的Maven配置管理经验。
🙉 Zeka.Stack 2025.09.20 26 min read
Read More🧠 自定义 Maven Plugin 的一些小心思
分享了作者基于"90秒自动化"理念,通过自定义Maven插件解决重复构建和部署问题的实践经验,介绍了插件开发基础、四个核心插件实现和常见坑点总结。
🙉 Zeka.Stack 2025.09.10 18 min read
Read More

群晖 NAS 自定义 Nginx 配置:绕开模板,优雅加反代
群晖的 Nginx 配置是通过 mustache 模板生成的,直接改 `nginx.conf` 会被冲掉。我的做法是把自定义配置塞进 `sites-enabled` 目录,优雅且保命。
🏠 HomeLab:中年男人之友 2025.07.13 9 min read
Read More🧩 如何用多层 parent 管理 Maven 项目依赖
介绍 Zeka.Stack 项目中基于多层 parent 的 Maven 项目依赖管理架构,通过分层设计实现依赖版本统一管理、构建配置差异化和项目结构清晰化,解决了大型项目中常见的依赖冲突、版本不一致等问题。
🙉 Zeka.Stack 2025.06.06 15 min read
Read More

🧨 你可能忽略的 .mvn:Maven 本地化配置的秘密与坑点解析
深入解析 Maven .mvn 目录的作用和优势,介绍了如何通过项目级配置实现构建环境的一致性,并分享了 Zeka.Stack 项目中将 settings.xml 纳入版本控制以提升开发体验的实践经验。
🙉 Zeka.Stack 2025.06.05 22 min read
Read More🧪 Maven Profiles 的使用场景案例分享
通过实际案例介绍了Maven Profiles的使用场景和配置方法,重点讲解了如何通过Profiles实现多环境部署切换和依赖管理,并详细分析了Profiles的激活优先级和隐式激活规则。
🙉 Zeka.Stack 2025.06.04 19 min read
Read More

🚀 从注册到发布:Maven 中央仓库上传 jar 实践
介绍如何将 Zeka.Stack 组件上传到 Maven 中央仓库的完整流程,包括 Sonatype 账户注册、DNS 验证、GPG 签名配置、pom.xml 配置和发布步骤,并分享了发布过程中遇到的常见问题和解决方案。
🙉 Zeka.Stack 2025.06.03 13 min read
Read More🎉 用 Zeka Stack 打造可维护、高效开发的工程骨架
深入剖析 Zeka Stack 的项目分层哲学,揭示如何通过结构化架构和自动化工具提升代码可维护性、团队协作效率与系统稳定性。
🙉 Zeka.Stack 2025.06.02 20 min read
Read More

💥 从零构建脚手架:Zeka.Stack 设计理念、解决痛点与亮点特性
为什么要从零开发一个脚手架?本文揭示 Zeka.Stack 背后的痛点、设计动机与关键特性,开启属于你的架构进化之路。
🙉 Zeka.Stack 2025.06.01 11 min read
Read More别再用工时出卖你10年的技术积累
在 AI 与就业环境变化下,技术人需要从炫技和工时思维转向结果导向、价值交换与判断力定价,重新拿回职业主动权。
💃 生活 2025.05.12 8 min read
Read More

我的 4 节点 PVE + Ceph 集群运维笔记:从调优到日常维护的命令全集
家里 4 节点 PVE + Ceph 集群跑了一段时间后,积攒下来的一份"运维备忘录":换源、调优、Ceph 维护、LXC 坑、外部投票节点,能抄就抄。
🏠 HomeLab:中年男人之友 2025.04.13 19 min read
Read MoreHomelab 断电保护全攻略:两台 APC UPS + NUT + PVE 优雅关机脚本
两台 APC UPS + NUT server + PVE 优雅关机脚本的完整方案,让家里十几台机器在跳闸时也能体面地下班。
🏠 HomeLab:中年男人之友 2025.04.13 16 min read
Read More

为家里所有设备配置 UPS 监控,NUT 服务器搭建笔记
搭建 NUT 服务器为全家设备提供 UPS 监控,突破群晖客户端限制
🏠 HomeLab:中年男人之友 2025.03.31 12 min read
Read More给 DS218+ 硬塞一块 SSD 读缓存:把 eSATA 口改造成内置 SATA 盘位
DS218+ 只有 2 盘位、官方不支持 SSD 缓存,我把背面那个 eSATA 口改造成了内置 SATA 盘位,给它硬塞了一块读缓存盘。
🏠 HomeLab:中年男人之友 2025.03.30 10 min read
Read More

不买交换机也能组 40G 局域网:PVE 环形网络实战
用 4 张迈络思双口 40G 网卡在 4 台 PVE 节点之间组成环形局域网,通过 Linux Bridge 和 FRRouting OSPF 实现全网互通与自动故障切换,省掉 40G 交换机的钱。
🖥️ 基础设施与运维 2025.03.10 16 min read
Read MoreESP32 选型与开发
ESP32 是一款功能强大的单片机,适用于各种物联网和嵌入式应用。本文将介绍 ESP32 的选型、开发环境搭建以及一些实用的开发技巧。
🤖 AI:人工智障 2025.02.25 1 min read
Read More

Proxmox VE 8.3 安装与配置指南
Proxmox VE 8.3 安装与配置完整指南,包括网络设置、存储配置、4G 网卡和 USB 摄像头连接等。
🏠 HomeLab:中年男人之友 2025.02.17 69 min read
Read More

Ubuntu 使用备忘录:好记性不如烂笔头
Ubuntu 系统使用备忘录,包括系统优化、克隆、KVM 管理和常见问题解决方案。
🏠 HomeLab:中年男人之友 2025.02.15 15 min read
Read More把家里所有公网服务塞进 Cloudflare CDN:一条泛域名规则搞定隐藏真实 IP
用一条泛域名 DNS + 一条 Origin Rules 规则把 `*.dong4j.dev` 全部塞进 Cloudflare CDN,顺便解决雷池 WAF 和多吉云的跨域问题。
🏠 HomeLab:中年男人之友 2025.02.14 9 min read
Read More

使用 Cloudflare 增强公网服务安全性的实践
使用 Cloudflare 代理功能隐藏真实公网 IP,通过自定义域名安全暴露 HomeLab 中的 NAS 服务。
🏠 HomeLab:中年男人之友 2025.02.13 7 min read
Read More树莓派与移远EC20 4G网卡集成及自动拨号方案解析
在树莓派上集成移远 EC20 4G 网卡,使用 wvdial 或 qmi_wwan 实现自动拨号上网。
🏠 HomeLab:中年男人之友 2025.02.12 14 min read
Read More

使用 TTL 连接到树莓派 Zero 2W 的详细指南
使用 TTL 串口连接树莓派 Zero 2W,包括串口开启、驱动安装和 screen 命令使用。
🏠 HomeLab:中年男人之友 2025.02.12 3 min read
Read MoreUbuntu 系统下 LCD4Linux 的安装与配置指南
在 Ubuntu 系统上安装配置 LCD4Linux,实现在 LCD 屏幕上显示系统监控信息。
🏠 HomeLab:中年男人之友 2025.02.12 7 min read
Read More

捡垃圾的快乐:因为一张显卡组装了一台服务器
把公司服役过的 Tesla P40 拆回家,在 HomeLab 里通过魔改电源与机箱、安装系统和 CUDA 环境,让这块老显卡重新变成可跑深度学习和玩具项目的生产力工具。
🏠 HomeLab:中年男人之友 2025.02.10 42 min read
Read More
从零开始开发一个 Hexo 插件:以 hexo-plugin-llmstxt 为例
从零开始开发 Hexo 插件 hexo-plugin-llmstxt,生成符合 llms.txt 规范的站点索引,帮助 AI 更好地理解网站内容。
🎉 高能分享 2025.01.30 5 min read
Read More

Lazydocker:终端中的懒人 Docker 管理神器
推荐 Lazydocker 终端 Docker 管理工具,提供简洁 UI 和高效操作,简化容器管理流程。
🎉 高能分享 2025.01.28 5 min read
Read More

哪吒面板配置指南:自托管与安全防控详解
自托管哪吒监控面板,通过源码部署、前端定制、Nginx 安全配置和 pm2 自动化部署,实现安全的公网监控服务。
🏠 HomeLab:中年男人之友 2025.01.21 11 min read
Read More使用 PM2 守护 Flask 应用:从安装到配置详解
使用 PM2 守护 Flask 应用,包括安装配置、使用 gunicorn 提升性能、进程管理和常见问题解决。
🖥️ 基础设施与运维 2025.01.18 10 min read
Read More

使用 Node.js 开发数字名片并集成 Chat 服务
使用 Node.js 开发数字名片,集成 one-api 对接多家 LLM 接口的 Chat 服务,实现安全防控和性能优化。
🤖 AI:人工智障 2025.01.15 11 min read
Read More

从零开始开发 VSCode 插件:从 Hello World 到图片处理工具
从 Hello World 开始,一步步开发 VSCode 插件,最终实现实用的图片处理工具。
🛠️ 开发工具与插件 2025.01.13 8 min read
Read MoreChrome 插件开发实战:从零开始开发一个图片上传工具
从零开始开发 Chrome 图片上传插件,支持一键上传、自动压缩、格式转换等功能。
🛠️ 开发工具与插件 2025.01.11 10 min read
Read More
群晖 NAS Docker 网络优化:配置 HTTP/SOCKS5 代理的终极指南
群晖 NAS Docker 代理配置教程,解决受限网络环境下镜像拉取问题。
🏠 HomeLab:中年男人之友 2024.12.30 5 min read
Read More

Hexo博客部署与图片处理全攻略:自动化流程大揭秘
通过脚本和 Makefile 自动化 Hexo 博客发布流程,包括图片处理、格式转换、图床上传和部署。
🎉 高能分享 2024.12.30 38 min read
Read More

图片过多导致GitHub/Gitee仓库爆仓?这里有解决方案!
解决 GitHub 和 Gitee 仓库体积超限问题,通过 Git GC、git-filter-repo 和 bfg-repo-cleaner 清理大文件历史。
🛠️ 开发工具与插件 2024.12.28 4 min read
Read MoreComfyUI Desktop 安装攻略:自动化安装失败问题解决
解决 ComfyUI Desktop 安装过程中 PyTorch 安装失败和依赖缺失问题,提供完整的安装解决方案。
🤖 AI:人工智障 2024.12.24 4 min read
Read More

ZSH 启动慢,原来是这个问题!
解决 macOS 中 zsh 启动缓慢问题,通过优化配置文件加载顺序提升终端启动速度。
🖥️ 基础设施与运维 2024.12.04 10 min read
Read More

HomeLab 网络续集:升级 10G 网络-再战 10 年
HomeLab 网络升级到万兆的完整实践,包括硬件选购、网络拓扑设计和性能测试。
🏠 HomeLab:中年男人之友 2024.12.01 100 min read
Read More树莓派集成 PCA9685 舵机控制与流媒体服务器视频推流的综合应用
在树莓派上集成 PCA9685 舵机控制,结合流媒体服务器实现摄像头角度控制和视频推流。
🏠 HomeLab:中年男人之友 2024.11.20 21 min read
Read More



基于树莓派的视频推流方案
使用树莓派5B实现视频推流,对比多种流媒体服务器方案,最终选择 MediaMTX 作为媒体服务器。
🏠 HomeLab:中年男人之友 2024.11.06 17 min read
Read More

HashMap 的最大作用:面试筛选
从面试问题出发,梳理 HashMap 的历史演进和实现原理,反思技术面试的合理边界。
🧱 后端开发与架构 2024.10.29 30 min read
Read More

树莓派直播新选择:打造你的个人流媒体服务器
树莓派和大方摄像头结合 RTSP 协议搭建个人流媒体服务器,使用 ZLMediaKit 实现直播。
🏠 HomeLab:中年男人之友 2023.11.30 13 min read
Read More宝宝动一下就知道:如何用树莓派和小米大方摄像头构建智能监控
使用树莓派和小米大方摄像头构建智能监控系统,实现动作检测和消息推送。
🏠 HomeLab:中年男人之友 2023.11.29 8 min read
Read More

构建自己的公网IP服务:Nginx Proxy Manager实战
使用 Nginx Proxy Manager 搭建获取公网 IP 的服务,供 DDNS-GO 使用。
🖥️ 基础设施与运维 2023.11.28 7 min read
Read More
IDEA插件开发中的国际化配置实践:轻量级ResourceBundle应用
IDEA 插件开发中的国际化配置实践,使用 ResourceBundle 实现轻量级 i18n。
🛠️ 开发工具与插件 2023.11.07 8 min read
Read More


为 Hexo 添加统计功能:Docker 部署 Busuanzi 服务教程
使用 Docker 部署 Busuanzi 统计服务,为 Hexo 博客添加访问统计功能。
🎉 高能分享 2021.06.13 3 min read
Read More

Hexo 博客升级指南:集成 RSS 订阅
为 Hexo 博客添加 RSS 订阅功能,使用 hexo-generator-feed 插件。
🎉 高能分享 2021.06.11 3 min read
Read More


打造智能URL切换器:让内外网访问更便捷
URL Switcher Pro Chrome 扩展,智能切换内外网 URL,提升 HomeLab 访问体验。
🏠 HomeLab:中年男人之友 2020.06.13 4 min read
Read MoreHomeLab数据备份:打造坚实的数据安全防线
HomeLab 数据备份完整方案,包括设备备份、NAS 备份和异地备份策略。
🏠 HomeLab:中年男人之友 2020.04.25 64 min read
Read More

HomeLab数据同步:构建高效的数据同步网络
HomeLab 数据同步方案,使用 Synology Drive 和 Syncthing 实现跨设备文件同步。
🏠 HomeLab:中年男人之友 2020.04.20 18 min read
Read MoreHomeLab 存储与备份:数据堡垒-保障数据和隐私的存储解决方案
HomeLab 数据存储与备份方案,介绍 3-2-1 备份原则和数据分类策略。
🏠 HomeLab:中年男人之友 2020.04.16 22 min read
Read More

HomeLab 服务篇:自托管的乐趣-探索和创造个人云端世界的旅程
HomeLab 服务部署实践,介绍 Docker 容器化、文件同步和网络监控等服务的搭建。
🏠 HomeLab:中年男人之友 2020.04.14 115 min read
Read MoreNAT 内网穿透详解:揭秘网络连接背后的奥秘
NAT 内网穿透详解,介绍网络地址转换原理、类型和内网穿透实现方式。
🏠 HomeLab:中年男人之友 2020.04.13 62 min read
Read More

HomeLab 网络篇:互联世界-构建高效的自托管网络环境
HomeLab 网络架构设计指南,涵盖网络设备选择、安全策略和异地组网技术。
🏠 HomeLab:中年男人之友 2020.04.12 212 min read
Read MoreHomeLab 硬件篇:构建基石-自托管硬件的选购与实践
HomeLab 硬件选购指南,从稳定性、性价比和可扩展性角度选择合适设备。
🏠 HomeLab:中年男人之友 2020.04.10 39 min read
Read More

HomeLab 先导篇:入门指南-开启你的个人云端实验室之旅
HomeLab 入门指南,介绍硬件选购、搭建思路和 KISS 原则的应用。
🏠 HomeLab:中年男人之友 2020.04.08 9 min read
Read More私有云时代,NAS如何帮助企业实现高效协作?
群晖 NAS 企业数据存储解决方案,解决数据安全、共享和备份问题。
🏠 HomeLab:中年男人之友 2020.02.06 10 min read
Read More
KVM 虚拟机磁盘容量扩展指南:从文件到文件系统的全面解析
KVM 虚拟机磁盘容量扩展完整指南,包括虚拟磁盘文件扩展和分区文件系统扩展。
🏠 HomeLab:中年男人之友 2020.01.10 5 min read
Read More

开源项目汇总:Spring Cloud生态圈
Spring Cloud 微服务脚手架项目汇总,包括 SaaS 架构、权限管理和分布式事务方案。
🎉 高能分享 2019.12.22 26 min read
Read More

深入理解Spring Profiles:定制化配置的艺术
Spring Profile 环境配置管理,实现不同环境下的 Bean 动态加载和配置隔离。
🧩 开发框架与中间件 2019.12.02 8 min read
Read MoreAPI安全之道:深入解析认证、授权与凭证
API 认证授权技术详解,包括 HTTP Basic、HMAC、OAuth2 和 JWT 等方案对比。
🧱 后端开发与架构 2019.11.22 25 min read
Read More
Spring提供的不同序列化方式大对比
Redis 缓存服务组件设计,包括连接池、Session 共享机制和序列化方式对比。
🧩 开发框架与中间件 2019.07.02 8 min read
Read More

JetBrains IDEA插件开发:核心API与工具详解
IntelliJ IDEA Platform API 详解,介绍 VFS、Document、Editor 和 PSI 文件操作接口。
🛠️ 开发工具与插件 2019.03.19 8 min read
Read More

IDEA插件开发指南(八):持久化配置与设置面板
IDEA 插件配置持久化实现,使用 PersistentStateComponent 保存用户设置。
🛠️ 开发工具与插件 2019.03.18 1 min read
Read MoreIDEA插件开发(七):如何创建右键菜单操作
IDEA 插件开发:添加右键菜单入口,实现 Markdown 文件处理功能。
🛠️ 开发工具与插件 2019.03.17 4 min read
Read More

IntelliJ IDEA 插件开发攻略:Markdown 图片上传至 Aliyun OSS
IDEA 插件需求分析:Markdown 图片上传到阿里云 OSS,支持图片压缩和备份功能。
🛠️ 开发工具与插件 2019.03.16 4 min read
Read More从基础到高级:IntelliJ IDEA 插件的四大分类
IntelliJ IDEA 插件类型介绍,包括自定义语言支持、框架集成、工具集成和用户界面组件。
🛠️ 开发工具与插件 2019.03.15 2 min read
Read More

从0到1:学习如何在IntelliJ IDEA中查看和管理插件日志
IntelliJ IDEA 插件开发日志查看方法,包括日志文件位置和日志级别配置。
🛠️ 开发工具与插件 2019.03.14 2 min read
Read More使用 Gradle 快速入门 IntelliJ IDEA 插件开发
使用 Gradle 开发 IntelliJ IDEA 插件入门,包括配置、依赖管理和常见问题解决。
🛠️ 开发工具与插件 2019.03.12 7 min read
Read More

Mac mini 开发环境搭建全攻略
本文详细介绍了在Mac mini上搭建开发环境的过程,包括系统设置、JDK安装、ssh配置、brew使用、zsh和oh-my-zsh的设置、IDEA、Docker、surge的安装、code命令的添加、语法高亮插件的安装和使用Powerlevel9k主题等内容。
🔥 效能提升 2018.11.11 2 min read
Read More

Apollo配置中心的使用心得分享:从入门到进阶
本文介绍了携程的Apollo配置中心。Apollo是一个用于集中管理不同环境、集群和命名空间的配置的管理平台。它支持实时生效、灰度发布、版本控制、权限管理和审计日志等功能,并且提供Java和.NET的原生客户端。文章还详细介绍了Apollo的核心概念、配置获取规则以及如何与Spring集成。
🧩 开发框架与中间件 2018.11.02 29 min read
Read More

避免调试陷阱:依赖日志的编程习惯
本文讨论了日志在软件开发中的重要性以及如何制定合适的日志规范。文章指出,虽然大多数公司都制定了日志规范,但实际应用效果并不理想,主要是因为缺乏有效的测试和考核机制。良好的日志输出对于快速定位问题至关重要。文章还详细介绍了不同类型的日志等级(trace, debug, info, warn, error, fatal),并提出了相应的日志记录规范,包括显式日志等级、时间精确到毫秒、修改操作必须打印日志等。此外,文章还强调了使用SLF4J API代替log4j来提高日志输出效率,以及不在循环中打印日志的最佳实践。最后,文章讨论了如何构建一个日志追踪系统来实现跨进程/跨线程的场景下的日志收集和分析。
🧱 后端开发与架构 2018.10.21 12 min read
Read More

SSO单点登录优化:Shiro认证过程详解与代码封装技巧
本文介绍了使用Shiro框架实现用户认证的过程。首先通过封装登录逻辑为插件模块来统一处理多个模块的登录需求。接着详细讲解了Shiro认证过程的步骤,包括收集凭据信息、提交凭据消息、自定义Realm进行认证、以及认证处理和登出操作。最后说明了SimpleAuthenticationInfo的使用方法及其注意事项。
🧩 开发框架与中间件 2018.10.09 5 min read
Read More从零开始:lanproxy与nginx配置攻略
本文详细介绍了如何搭建和使用基于阿里云服务器的proxy-server和proxy-client,以实现内网pc或服务器访问公网资源。文章步骤包括:准备环境、配置nginx反向代理、修改hosts文件、搭建proxy-server、配置proxy-server添加客户端和配置、搭建proxy-client并启动、优化nginx转发等。通过这些步骤,可以实现从公网IP的服务器安全地访问内网的pc或服务器资源。
🖥️ 基础设施与运维 2018.09.24 3 min read
Read More

Spring AOP 动态代理深度解析:LTW 技术揭秘
本文介绍了AspectJ LTW(加载期切面织入)的实现方式,包括静态代理和动态代理。LTW利用JVM代理在类加载期间替换字节码来实现织入。文章详细讲解了LTW的具体实现过程,包括定义切面类、编写目标测试bean、配置XML文件等步骤。同时,还分析了LTW的原理,涉及JDK的字节码转换框架和虚拟机代理技术。
🧩 开发框架与中间件 2018.09.04 19 min read
Read More

Redis Sentinel:实现高可用性与故障转移
文章详细介绍了使用Redis Sentinel构建高可用Redis服务的过程。首先概述了现有的高可用方案,包括Keepalived、Codis和Twemproxy等,并强调了Redis Sentinel在监控和服务恢复方面的优势。接着,文章深入讲解了Redis Sentinel的故障转移处理逻辑,包括主观下线和客观下线的概念以及定时监控任务。随后,文章详细描述了Redis Sentinel的安装与部署过程,包括配置文件、启动命令和确认关系的步骤。最后,文章讨论了不同的部署方案,如一套Sentinel监控所有主节点或每个主节点各一套Sentinel,并提供了相应的优缺点分析。此外,文章还提到了因连接数过多导致的问题,分析了原因并提供了解决方案,例如修改redis配置文件和完善代码等。
🧩 开发框架与中间件 2018.07.19 15 min read
Read MoreJava开发者的痛:如何避免和解决常见的Jar包冲突问题
本文深入探讨了Java应用程序中的JAR包冲突问题,分析了导致这类问题的本质原因和常见表象。文章指出,JAR包冲突主要分为两类:第一类是由于依赖管理中不同版本的同名JAR包导致的;第二类则是由于多个不同JAR包中存在同名类导致的加载顺序问题。文章详细解释了Maven的仲裁机制、JAR包的加载顺序以及这些因素如何导致冲突。同时,文章还提供了针对这些问题排查和解决的策略,包括良好的依赖管理习惯和使用冲突检测插件等方法来有效避免和解决JAR包冲突问题。
🧱 后端开发与架构 2018.07.15 25 min read
Read More

打造高效团队:统一编码风格的重要性
本文介绍了以阿里巴巴开发手册为基础,结合作者工作经验,对musicsearch-project项目进行重构和规范化的方案。主要内容涉及命名规范、代码风格、IntelliJ IDEA插件配置、版本控制设置以及Maven使用等各个方面,旨在构建一个稳定、易于维护、可扩展的项目结构。
🧱 后端开发与架构 2018.07.09 44 min read
Read More

Redis Sentinel 搭建指南:从入门到精通
本文详细介绍了Redis Sentinel的搭建过程及其在保证高可用性方面的作用。文章首先分析了现有架构中手动切换主节点的复杂性,接着阐述了Redis Sentinel如何通过监控、通知和应用故障转移来确保数据服务的连续性。具体部署方面,文章以一个包含1个主节点、2个从节点和3个Sentinel节点的例子,提供了详细的配置文件和启动步骤,包括针对master、slave节点以及sentinel节点的配置。最后,文章介绍了通过Jedis操作Redis的不同方式,包括单机模式、分片模式和集群模式,并讨论了在集成Jedis时可能遇到的问题及解决方案。
🧩 开发框架与中间件 2018.06.19 7 min read
Read MoreShiro 引入后 Springboot 项目的循环依赖解决方案
本文讨论了在使用 Spring Boot 和 Shiro 框架时遇到的依赖循环问题。文章解释了什么是依赖循环以及它如何导致项目启动错误。通过提供两种解决方案,作者展示了如何在项目中避免或解决这种循环依赖。第一种方法是在配置文件中为互相依赖的 bean 设置 lazy-init 属性,第二种方法是在代码中使用 @Lazy 注解延迟加载 bean。这些技巧有助于在开发过程中保持项目的稳定性和可维护性。
🧩 开发框架与中间件 2018.06.11 3 min read
Read More

内存优化实战:从数据结构选择到GC策略
本文对比了在使用 BloomFilter 和 DataCache 存储黑白名单前后的内存优化效果。通过减少临时变量和使用布隆过滤器,显著降低了程序的内存消耗和运行时间。
🧱 后端开发与架构 2018.06.04 5 min read
Read More

如何实现优雅的重试机制?两种方式大比拼!
本文讨论了解决方案演化过程中的重试问题,分析了简单重试模式和策略重试模式存在的问题,并提出了基于代理设计模式和开源工具Spring-retry的优雅重试方案。文章详细介绍了使用命令设计模式和Spring-retry实现正常逻辑和重试逻辑解耦的方法,以及Guava-retryer工具的优势和应用场景。最后总结了优雅重试方案的共性和原理,强调了解耦、重试策略、线程安全等特点的重要性。
🧩 开发框架与中间件 2018.05.22 15 min read
Read More定制你的Spring Boot:探索maven-assembly-plugin
本文探讨了SpringBoot项目的打包和部署方式。文章首先介绍了SpringBoot默认的两种打包方式:直接打成jar包或war包,并分析了它们的缺点。接着,作者提出了自己的目标,即打包成类似于Tomcat或Maven的软件包结构,包含bin、boot、lib、conf等目录。为了实现这一目标,作者使用了maven-jar-plugin和maven-assembly-plugin插件进行自定义打包配置。文章详细描述了pom.xml中的配置以及assembly.xml文件的具体内容,包括如何指定程序入口类、依赖包路径、配置文件位置等。此外,文章还介绍了如何将依赖lib从项目分离出来,并提供了半自动化和全自动化的部署步骤。
🧩 开发框架与中间件 2018.05.12 9 min read
Read More

IntelliJ IDEA Git操作指南:轻松管理代码分支与合并
本文介绍了在IntelliJ IDEA中操作Git的具体步骤。首先,描述了在一个名为git-branch-test的GitLab项目中的工作流程,特别是如何处理master分支和新功能的开发。接着详细说明了如何在IDEA中设置任务、获取token登录GitLab、新建分支并开始新功能开发。文章还展示了当遇到紧急问题时如何进行问题修复和代码合并的操作,包括创建临时分支、修复问题后合并到master分支以及继续其他工作。最后,介绍了如何完成新功能的开发,并最终将其合并回master分支。
🛠️ 开发工具与插件 2018.03.12 7 min read
Read More

IDEA插件推荐:Markdown Image Kit,让你的文档配图更简单!
Markdown Image Kit 是一款在 IntelliJ IDEA 中方便高效管理 Markdown 文档图片的插件。它支持一键上传当前文档所有引用图片后自动替换、多个图床选择、图片直接压缩等功能,并提供详细的设置选项来满足用户的不同需求。
🛠️ 开发工具与插件 2018.03.12 6 min read
Read Moreapidoc基础教程:从零开始编写API文档
本文介绍了如何使用 @api 标记来生成 API 文档。文章详细讲解了各种标记的功能,包括描述请求方法、路径、错误信息、权限等。同时,还介绍了如何定义全局的 header 描述和使用 apiSampleRequest 来显示接口调用相关部分。
🛠️ 开发工具与插件 2017.12.23 8 min read
Read More

日志追踪系统详解:从自动埋点到动态修改级别
本文介绍了如何通过扩展 dubbo Filter 拦截 RPC 请求,将 SnowFlake 算法生成的全局唯一 traceId 存入 RpcContext 中传递给下一个服务。文章还讲解了接入追踪系统的过程,包括 Dubbo 追踪接入、http 追踪接入和自动埋点方法。此外,还详细解释了实现原理,如自动埋点的代码织入方式、调用链日志的扩展 Filter 和 traceId 的传递过程。最后,介绍了传输日志到 Kafka 和使用 JMX 实现动态修改日志级别的具体实现。
🧩 开发框架与中间件 2017.12.13 15 min read
Read More声网Agora SDK集成教程:Java客户端API详解
声网主要提供实时互动基础能力和扩展能力,以及低代码应用平台。其产品解决低延迟、高可靠性的实时互动需求,支持海量用户同时在线,保障数据安全。业务场景包括手机端和PC端的语音聊天,支持呼叫功能、群组管理等。声网客户端API涵盖账号消息系统和频道系统,提供登录、发送消息、加入/离开频道等功能。SDK集成示例涵盖Android、Web、iOS平台。
🧩 开发框架与中间件 2017.11.22 12 min read
Read More

声网集成:掌握App ID、Dynamic Key和UID,打造安全通话环境
本文详细介绍了声网(Agora)集成中的关键概念,包括App ID、Dynamic Key、App Certificate、Channel、UID以及信令和通信流程。强调了在安全要求不高的场景下使用App ID,以及在正式上线运营时采用Dynamic Key的重要性。此外,还说明了频道名称(channel)、频道密钥(channel key)的作用,以及如何在同一频道中唯一标识用户(UID)。最后,详细描述了Agora平台上的呼叫建立和发起流程,包括信令服务器与用户的交互、频道的加入和退出,以及在通话中的音视频流控制。
🧩 开发框架与中间件 2017.09.19 6 min read
Read More轻松搞定Maven多环境配置:实战技巧大放送
本文详细介绍了如何使用 Maven 的 profiles 和 filter 功能来实现多环境配置打包。文章首先展示了如何定义不同的 profile,包括本地开发、测试和生产环境的配置。接着说明了如何在 build 阶段添加 filters,以便根据不同的环境来替换资源文件中的占位符。此外,还解释了如何使用命令行参数来激活特定的 profile 进行打包。最后,文章探讨了 Spring 中使用 <content:property-placeholder> 元素来加载和注入属性文件的机制,并给出了多个配置文件的加载方法。
🧩 开发框架与中间件 2017.09.12 6 min read
Read More

走进Python核心:揭秘元类和类的创建过程
本文深入探讨了Python面向对象编程的高级概念,包括类的成员、成员修饰符以及特殊成员。文章详细介绍了字段(普通和静态)、方法和属性(基本使用、定义方式和两种定义方式),并阐述了私有成员与公有成员的区别及其访问限制。此外,还讲述了类描述信息(doc)、模块和类表示、构造方法(init)和析构方法(del)、对象调用方法(call)、类的所有成员(dict)、对象的字符串表示(str)、索引操作(getitem, setitem, delitem)、分片操作(getslice, setslice, delslice)、迭代器功能(iter),以及类的创建方式(普通方式和特殊方式)。最后,文章讨论了类是如何由type类的构造函数实例化产生的,并介绍了metaclass的概念及其作用。
🧱 后端开发与架构 2017.07.29 23 min read
Read More

日志追踪系统设计:构建高效监控系统
本文探讨了基于Dubbo Filter的日志追溯系统的设计,旨在解决线上系统运行状态的监控、问题快速定位、系统瓶颈发现、潜在风险预警和产品价值挖掘等问题。文章详细介绍了日志的分类(诊断、统计、审计、业务)、分布式日志系统的设计,包括日志采集器、处理器、存储和搜索方式、关联业务Id以及日志展示系统和监控报警机制。此外,还讨论了日志系统优化和最佳实践,如打印日志的最佳时机、日志级别设置、日志数量和大小控制、日志切割方式和格式配置等。
🧱 后端开发与架构 2017.07.18 15 min read
Read More

zheng 框架解析 (二):从环境搭建到部署实战
本文介绍了在使用Dubbo框架时遇到的一个问题,即消费者向提供者发送统计数据时出现错误。分析了问题的原因,并提供了两种解决方案:部署dubbo-monitor和修改配置文件以不使用monitor。同时,还详细介绍了项目环境的搭建过程,包括Vagrant环境搭建、Redis配置、Nginx配置、Zookeeper单机配置、ActiveMQ默认配置以及Tomcat单机多实例配置等。最后,描述了项目的打包、上传和启动流程。
🧩 开发框架与中间件 2017.07.06 10 min read
Read More

Google Dapper:揭秘分布式跟踪系统的秘密
Dapper 是一个 Google 生产环境下的分布式跟踪系统,用于收集和呈现复杂分布式系统的行为信息。它通过低损耗、应用透明和大范围部署满足需求。Dapper 设计之初参考了 Magpie 和 X-Trace 等分布式系统的理念,并通过采样率的使用和代码植入限制在一小部分公共库的改造上实现了成功应用。本文介绍了 Dapper 的构建和部署过程,包括使用 Dapper 搭建的分析工具、在 Google 内部使用的统计数据和使用场景等,并讨论了从 Dapper 收获的经验和教训。
🧱 后端开发与架构 2017.06.25 86 min read
Read More

IntelliJ IDEA 翻译插件开发 - 从概念到实践
本文介绍了在IntelliJ IDEA中使用Gradle开发插件项目时遇到的问题,并提供了解决方案。文章首先解释了为什么使用Gradle创建的项目缺少图形化界面功能,然后通过修改`.iml`文件将项目类型更改为Plugin Module,解决了依赖和插件配置问题。接着,文章详细介绍了如何使用GUI创建Action,以及如何调用有道翻译API进行文本翻译。最后,总结了插件开发中常用的API和方法。
🛠️ 开发工具与插件 2017.05.23 10 min read
Read More掌握IntelliJ插件开发:从Gradle入门到高级实战
本文记录了使用Gradle开发IntelliJ IDEA插件的入门过程,包括创建插件项目、设置build.gradle文件、添加plugin.xml等步骤。文章还分享了遇到的问题及解决方案,如Gradle路径设置和Gradle IntelliJ依赖的下载方法。
🛠️ 开发工具与插件 2017.05.22 6 min read
Read More

ZooKeeper配置中心:简化你的开发部署过程
本文介绍了一个基于Zookeeper实现的配置中心,旨在解决现有架构中的配置分散、不安全、不一致等问题。通过使用Zookeeper作为配置存储方案,实现了简单、可靠和实时配置更新。配置分类包括单次读取型、多次读取型和动态读取型,并设计了相应的系统架构和模块说明。文章还讨论了技术选型、开发配置管理解决方案以及Dev Test Prod环境部署解决方案。最后,列出了待办事项清单。
🧩 开发框架与中间件 2017.03.29 11 min read
Read MoreRedis集成攻略:从Jedis到ShardedJedisPool
本文详细介绍了Redis的不同集成方式,包括Jedis、Spring Data Redis和Spring Session Data Redis。文章还解释了如何使用ShardedJedisPool连接Redis集群,并探讨了Session共享机制,包括Session复制和Session粘性。此外,文章还讨论了Redis过期数据的删除策略,如定时删除、惰性删除和定期删除,以及如何在Spring中实现这些策略。最后,文章比较了jedisPool与RedisTemplate的区别,并介绍了Spring提供的不同序列化方式的区别。
🧩 开发框架与中间件 2017.03.03 8 min read
Read More

RESTEasy入门:JAX-RS实践指南
RESTEasy是一个由JBoss提供的开源项目,用于构建RESTful Web Services和Java应用程序。它完全遵循JAX-RS规范并通过了JCP认证。RESTEasy支持与多种框架集成,如EJB、Seam、Guice、Spring等,并提供自动实现GZIP解压缩的功能。JAX-RS是一个Java API,用于创建RESTful Web Services。它使用Java SE 5的注释来简化Web服务的开发和部署,并提供了各种注解来定义资源类和方法,如@Path、@GET、@PUT、@POST等。
🧩 开发框架与中间件 2017.03.03 10 min read
Read MoreSpring生态下的Logback:实现结构化日志的秘诀
本文介绍了logback的使用和自定义输出格式的配置方法。首先讲述了logback相较于log4j的优势,并提供了如何在项目中配置logback的示例代码,包括依赖添加、配置文件创建等步骤。接着详细解释了日志格式中各个参数的含义及其作用,并通过实例展示了如何输出SQL语句。最后,文章介绍了如何通过重写ClassicConverter和PatternLayout类来实现自定义日志格式,以满足graylog这样的日志收集工具的需求。通过修改配置文件中的layout属性,实现了将日志以JSON格式输出的功能。
🧱 后端开发与架构 2017.01.30 8 min read
Read More

告别keys *,掌握Redis scan系列命令的精髓
本文介绍了Redis数据库中用于查找键的命令:scan、sscan、hscan和zscan。这些命令分别用于迭代所有键、集合键、哈希键和有序集合键,通过游标cursor进行分页查询。通过MATCH参数可以进行模糊匹配,通过COUNT参数可以控制每批返回的数量,而TYPE参数则可以根据数据类型来指定查询的类型。文章还提供了具体的命令示例,展示了如何在Redis中利用这些命令进行键的查找和筛选。
🧩 开发框架与中间件 2017.01.30 4 min read
Read More原型模式揭秘:从Linux命令scp到设计模式的实践应用
本文介绍了Linux命令scp的使用方法,解释了其在加密方式下进行远程文件复制的功能。文中还讨论了scp与cp的对比,scp在传输过程中是加密的且不占太多系统资源。接着,文章详细讲解了原型模式的概念和应用,包括它的UML图示和两种实现方法。最后,给出了具体的Java代码示例来展示如何使用原型模式创建对象。
🧱 后端开发与架构 2017.01.22 5 min read
Read More

抽象工厂模式:构建灵活的软件系统
本文介绍了Linux中的more命令,这是一个基于vi编辑器的文本过滤器,用于按页显示文本文件内容。文章还回顾了工厂方法模式,并讨论了其优缺点和适用场景。最后,深入讲解了抽象工厂模式,通过一个界面皮肤库的案例,展示了如何使用抽象工厂模式来创建一系列相关或相互依赖的对象,并提供了相应的代码实现。
🧱 后端开发与架构 2017.01.19 11 min read
Read More

掌握设计模式精髓:五大核心原则深度解析
本文讨论了软件开发中的六个重要原则,包括单一职责原则、开闭原则、里氏替换原则、依赖倒转原则、接口隔离原则和合成复用原则。每个原则都提供了定义、作用以及实际代码示例来展示如何应用这些原则。文章还讨论了迪米特法则作为降低软件实体之间耦合度的一种方法。通过遵循这些设计原则,开发者可以构建出更加灵活、可扩展且易于维护的系统。
🧱 后端开发与架构 2017.01.17 14 min read
Read More

使用 validate API 验证 Elasticsearch 查询语句的合法性与解释
验证查询语句是否合法是复杂的任务,特别是与不同的分析器和字段映射相结合后。Elasticsearch 提供了一个 validate API 来检查查询语句的合法性,并提供具体的错误信息。通过 explain 参数可以获取更详细的解释,包括每个索引的处理方式和执行过程。这有助于理解查询语句在 Elasticsearch 中的执行方式以及如何根据不同索引的映射和分析器进行优化。
📊 数据与搜索 2016.11.20 3 min read
Read More

Elasticsearch进阶:高效的过滤条件与精确查询
本文详细介绍了Elasticsearch的查询过滤方法。包括term过滤、terms过滤、range过滤、exists和missing过滤以及bool过滤等。此外,还解释了match_all查询、match查询和multi_match查询的基本用法。
📊 数据与搜索 2016.11.10 6 min read
Read More

Java 基础:一些常用的代码片段四
本文讨论了Java中排序和事务管理的两种重要技术:外部排序(使用Comparator)和内部排序(实现Comparable接口),以及JDBC中的事务管理。外部排序提供灵活的排序方式,而内部排序保持了类的一致性。事务管理确保数据库操作要么全部完成要么全部不执行,对于保持数据一致性至关重要。
🧱 后端开发与架构 2016.10.28 8 min read
Read More

Java 基础:一些常用代码片段三
本文介绍了Java中动态获取加载的JAR包位置的工具方法`ClassLocationUtils.where(cls)`。此外,还探讨了三种实现定时任务的方法:使用普通Thread、java.util.Timer和java.util.concurrent.ScheduledExecutorService。文章还涉及了去除字符串拼接时的最后一个多余逗号、将List对象转换为带分隔符的字符串、利用反射机制根据完整类名获取类对象、多条件排序ArrayList以及遍历Map对象的几种方法。此外,还介绍了使用`SimpleDateFormat`进行日期和字符串转换的方法,Math类的常用方法,单例模式的实现方式及其注意事项。
🧱 后端开发与架构 2016.10.27 15 min read
Read MoreJava基础:一些常用代码片二
本文介绍了Java开发中的字符串拼接、集合处理、GC日志查看、字节码分析、国际化处理以及性能比较等技术。文章详细解释了使用Apache Commons Lang和Google Guava进行字符串拼接的方法,如何获取集合中的元素,以及查看GC日志和字节码信息。此外,还讨论了集合操作的并集、交集和差集等,以及通过枚举属性行获取枚举实例的代码示例。国际化处理方面,介绍了使用.properties文件实现国际化的方法。最后,文章对比了`switch-case`结构和`if-else`语句的性能差异,以及如何使用Java反射机制来获取注解信息。还提供了阅读文件内容、打印GC详情、移除字符串中的所有空格等实用方法的示例代码。
🧱 后端开发与架构 2016.10.23 15 min read
Read More

Java 基础:一些常见的代码片段一
本文详细介绍了多种Java编程技术及其相关知识点,包括面向切面编程(AOP)、使用Jackson进行泛型反序列化、单次执行逻辑的实现方法以及防止主线程退出等。文章还提供了代码片段展示、解释与注意事项,并分享了最佳实践。涉及到的技术还包括分割字符串为迭代器、SLF4J占位符格式化、防止Java主线程退出、BeanDefinitionRegistryPostProcessor的应用、instanceof和isInstance的区别、Dubbo百分数与Double互转、Lombok注解详解、Optional类的使用、Spring读取Classpath下的文件以及BigDecimal的基本操作。
🧱 后端开发与架构 2016.10.22 16 min read
Read More探索 Java 8 Stream API:从排序到过滤的全面指南
本文深入探讨了Java 8 Stream API的强大功能,涵盖了将List转换为Map、列表排序、过滤和Map的条件操作等多个方面。文章详细介绍了如何利用Lambda表达式简化代码,并提供了多个示例来展示Stream API在数据处理中的实际应用。此外,还讨论了性能考虑、空值检查以及并行流的使用等注意事项,为开发者提供了实用的指导。
🧱 后端开发与架构 2016.10.15 7 min read
Read More

Zookeeper 概述:核心概念与应用场景
Zookeeper 是 Google Chubby 开源实现的一个分布式协调服务,提供组管理、配置、同步和命名服务等。它支持多种节点类型,如持久、短暂、顺序和非顺序节点,并提供Watcher机制来监听节点变化。此外,Zookeeper 还应用于分布式配置管理、高可用集群、队列和锁等场景。
🧩 开发框架与中间件 2016.09.24 13 min read
Read More

JVM内部机制大揭秘:Java类加载全过程
本文介绍了Java程序中的类加载机制,包括类的初始加载、类加载器的类型及其功能、JVM类加载机制和自定义类加载器。还详细描述了类的链接和初始化过程,以及类初始化的时机。
🧱 后端开发与架构 2016.08.08 11 min read
Read More

同步与异步的较量:如何在Spring Boot中优化执行效率
Spring Boot 异步调用实现,介绍 @Async 注解和 Future 对象的使用方法。
🧩 开发框架与中间件 2016.06.13 7 min read
Read More

SpringBoot 退出服务时调用自定义销毁方法的两种方式
本文介绍了在SpringBoot应用中如何在工作容器退出时执行特定操作的方法,包括通过实现DisposableBean接口和使用@PreDestroy注解两种方式。并通过代码示例展示了这两种方法的具体使用。文章还提供了关于如何在命令行启动并正确地终止应用的技巧。
🧩 开发框架与中间件 2016.06.11 2 min read
Read More基于Token的RESTful API,Spring Security入门
本文探讨了两种常见的 API 认证模型:基于 Session 和基于 Token 的安全机制。首先介绍了如何在多服务器集群环境中使用 Redis 外置 Session 来避免用户信息丢失的问题。接着详细阐述了如何利用 Spring Security 实现 RESTful API 的Token认证,包括过滤器、预认证和权限 Endpoint 的配置。最后,讨论了前后端分离架构下的鉴权问题,以及通过 nginx 反向代理和 SSO 组件来保护未授权资源的方法。总结了通过基础设施配置实现安全性的重要性,强调了组件独立性对优化和问题定位的便利性。
🧩 开发框架与中间件 2016.05.28 16 min read
Read More

Java并发利器:ThreadPoolExecutor 高效使用指南
本文讨论了Java中线程池的使用,特别是在处理大量短时间请求时的优势。文章首先说明了使用线程池可以减少线程创建和销毁的性能开销,并提供了Executor和ThreadPoolExecutor接口的相关信息。接着详细介绍了ThreadPoolExecutor的构造方法和相关参数,包括核心线程数、最大线程数、任务队列等。最后,通过一系列的验证实例演示了如何根据不同配置来管理线程池中的线程数量和任务执行规则。
🧱 后端开发与架构 2016.02.06 13 min read
Read More

掌握Java GC:深入理解并高效配置GC参数
本文介绍了Java中的垃圾收集器(GC)的基本概念和不同的回收算法。包括引用计数、标记清除、标记压缩和复制算法等。文章详细解释了这些算法的工作原理以及适用的场景,如新生代和老年代的GC策略。此外,还讨论了可触及性定义、Stop-The-World现象及其影响,以及不同收集器的优缺点和参数配置方式。最后提供了使用示例来帮助理解finalize方法的使用和可能的问题。
🧱 后端开发与架构 2016.01.31 13 min read
Read More
掌握Java同步机制:生产者消费者模式实战
生产者消费者问题是多线程编程中的经典问题,描述了一个缓冲区作为仓库,生产者将产品放入仓库,消费者从仓库中取走产品。解决该问题的方法有同步机制和管道两种方式。Java语言提供了wait()/notify()、await()/signal()、BlockingQueue、Semaphore和PipedInputStream/PipedOutputStream等方法支持同步。其中,wait()/notify()和await()/signal()需要配合synchronized或Lock使用,而BlockingQueue、Semaphore和PipedInputStream/PipedOutputStream则可以直接使用。
🧱 后端开发与架构 2016.01.09 10 min read
Read More

Java内存管理:方法区与常量池
本文详细介绍了 Java 内存模型中的方法区和运行时常量池。方法区存储类信息、静态变量和方法,而运行时常量池则用于存储符号引用和直接引用。自 JDK7 开始,HotSpot 虚拟机移除了永久代,引入了元空间(Meatspace),这导致了内存管理方式的改变,并对某些字符串操作产生了影响。
🧱 后端开发与架构 2016.01.07 7 min read
Read More

从零开始:Tmux会话管理实战
本文详细介绍了 tmux 的基本操作和使用技巧,包括安装配置、常用命令以及插件等内容,帮助读者更高效地使用终端。tmux 是一个终端复用软件,可以合并多个终端窗口,提高工作效率。文章提供了详细的安装步骤和常见命令解释,并介绍了 tpm 插件管理器和其他实用插件如 copycat 和 tree。通过学习本文,读者能够更好地理解和应用 tmux,提升工作效率。
🔥 效能提升 2015.12.27 3 min read
Read More

macOS 上使用 IDEA 搭建 SSM 项目
macOS 上使用 IntelliJ IDEA 搭建 SSM 项目的完整教程。
🧱 后端开发与架构 2015.12.16 24 min read
Read More

掌握Sublime Text高效快捷键,提升编程效率
本文介绍了Sublime Text文本编辑器的一些常用快捷键,包括基本操作、查找与替换、编辑与格式化等。文中还列出了具体的命令列表和页面操作、复制粘贴与删除等快捷键的具体功能。
🔥 效能提升 2015.11.29 4 min read
Read More

快速上手 iTerm2:掌握这些必备快捷键
本文介绍了终端模拟器iTerm2和tmux的一些常用快捷键,包括基本操作、搜索历史记录、切换Tab和Pane、切分屏幕等。还涵盖了文本编辑相关的快捷键,以及tmux中的系统操作、窗口操作、面板操作等内容。
🔥 效能提升 2015.11.24 4 min read
Read More

打造个性化 IntelliJ IDEA 编辑环境
IntelliJ IDEA是一款功能强大的IDE,提供了丰富的快捷键和自定义设置以提升开发效率。文章介绍了如何调整编辑器颜色、代码折叠方法以及一系列常用快捷键,包括调试、翻译等功能的快捷操作。还涉及到自定义VM选项和使用HTTP代理的方法。
🛠️ 开发工具与插件 2015.11.22 4 min read
Read More从入门到精通:IDEA 的所有快捷键汇总
IntelliJ IDEA 提供了一系列快捷键来提高文件编辑、代码重构与调试的效率。这些快捷键包括文件和编辑相关操作,如插入行、创建测试用例、运行/调试任务等;代码重构与调试相关操作,如生成方法返回类型、提炼新方法、跳转到断点等;以及文档查看和翻译功能。通过使用这些快捷键,用户可以更高效地进行软件开发工作。
🛠️ 开发工具与插件 2015.11.12 5 min read
Read More
Docker基问题记录
本文详细介绍了如何升级 Docker 到最新版本、解决升级后可能出现的错误、安装和配置 Docker Compose。此外,还涵盖了磁盘清理与镜像管理、处理其他常见问题以及查看容器日志和设置自动启动等技巧。
🖥️ 基础设施与运维 2015.10.25 4 min read
Read More

Docker基础教程:镜像、容器与仓库
本博客是关于Docker入门的指南。内容涵盖了Docker的基本概念、安装方法、基本命令以及如何构建自己的镜像和Docker Compose的使用。Docker是一个开源的应用容器引擎,让开发者能够将软件及其运行时环境封装起来以方便地进行移植和部署。通过使用Docker,可以快速打包、发布以及运行应用程序在几乎任何地方(包括物理机或虚拟机上)。它利用Linux内核的资源隔离特性来实现轻量级的操作系统级虚拟化,使得开发人员能够创建和管理容器化的应用和服务。博客还提供了在Ubuntu、Windows和macOS上安装Docker的详细步骤和基本命令的解释。此外,还介绍了如何构建自己的Docker镜像和Docker Compose的使用方法。
🖥️ 基础设施与运维 2015.10.25 5 min read
Read MoreJUnit4 入门:掌握 Java 单元测试的艺术
JUnit4 单元测试框架入门,介绍测试编写、Fixtures 和最佳实践。
🛠️ 开发工具与插件 2015.10.20 22 min read
Read More

从零开始构建Spring Boot Starter
Spring Boot 自动配置原理,介绍条件注解和自定义 Starter 的创建方法。
🧩 开发框架与中间件 2015.09.20 4 min read
Read More

Maven基础教程:构建自动化和依赖管理
Maven 基础教程,介绍项目管理和构建自动化,包括 pom.xml 配置和插件系统。
🛠️ 开发工具与插件 2015.08.30 4 min read
Read More

自定义Logback输出格式:掌握JSON日志的奥秘
Logback 日志框架配置,介绍 JSON 格式化输出和自定义 Converter。
🛠️ 开发工具与插件 2015.07.26 8 min read
Read More

轻松掌握Java数据库操作:JDBC入门
本文介绍了Java中使用JDBC进行数据库操作的基本方法。首先阐述了如何导入必要的包,并通过一个示例主类展示了连接MySQL服务器、执行SQL语句以及预处理数据的过程。接着详细描述了使用PreparedStatement进行插入、更新和删除数据的步骤。最后,文章提供了数据库配置属性文件`db.properties`的例子,以及一个实用工具类`DBUtil.java`的实现解析,该工具类封装了创建和释放数据库连接的逻辑,并提供了异常处理机制。
🧱 后端开发与架构 2015.06.25 7 min read
Read More

Java程序员必备技能:性能优化的35个实用技巧
本文讨论了代码优化的重要性,以及如何通过细小的细节来提升代码运行效率。文章列举了多个优化的细节,包括指定final修饰符、重用对象、使用局部变量、及时关闭流、减少重复计算、采用懒加载策略、慎用异常、避免在循环中使用try-catch等。同时,还提到了使用数据库连接池和线程池、带缓冲的输入输出流进行IO操作、根据场景选择合适的集合类等方法来提高代码效率。文章强调了优化应在有足够时间开发、维护代码时考虑,并提供了具体的示例说明。
🧱 后端开发与架构 2015.02.14 27 min read
Read More

JVM 内存新篇章:从持久代到元空间
本文深入探讨了Java虚拟机(JVM)中的持久代和元空间。文章首先介绍了持久代的概念,包括其作用、存储的数据类型以及大小限制。然后讨论了为什么HotSpot JVM移除了持久代,并引入了元空间来替代它,解释了元空间的特性和内存分配模型。此外,还讲述了如何调整元空间的大小以优化GC性能,并介绍了一些相关的JVM工具。最后总结了元空间的特点和未来的可能发展方向。
🧱 后端开发与架构 2015.01.13 13 min read
Read More

从零开始:JUnit4.x 的实践指南
本文介绍了JUnit单元测试框架的用途和基本使用方法。文章首先解释了传统单元测试中存在的问题,如代码混乱和重复调用等,引出JUnit的必要性。接着详细介绍了如何使用JUnit进行单元测试,包括创建项目、编写测试类、添加测试方法和使用断言等。最后,文章深入探讨了Junit的高级特性,如Fixture的使用、异常和时间测试以及如何忽略测试方法。还提到了JUnit和Ant的结合使用,并提供了一些编写测试代码的技巧和实践方法。
🛠️ 开发工具与插件 2015.01.13 22 min read
Read MoreJava面试必知:final、finally和finalize的区别解析
本文介绍了Hibernate和Spring框架的基本概念和工作原理,以及它们与iBatis的比较。Hibernate是一个ORM(对象关系映射)工具,用于简化数据库操作;而Spring框架则提供了一种编程模型和编程范式,使开发人员能够更容易地开发出可维护的、测试的和模块化的应用程序。文章还讨论了final、finally和finalize的区别。
🧩 开发框架与中间件 2015.01.05 22 min read
Read More

Java基础:一些常用代码片段
本博客详细介绍了Java编程语言中的各种重要概念和技术,包括环境变量和系统属性的获取、字符串处理、日期时间操作、数据结构的使用(如ArrayList、LinkedList、HashMap等)、泛型和foreach循环的应用、面向对象编程的原则和实践、输入输出流的使用、网络通信(客户端和服务器端的Socket编程、RMI远程方法调用)、数据库访问技术、XML数据处理、Java与外部语言的结合等。博客中使用了大量的示例代码,详细解释了每个概念和技术在Java编程中的应用场景和方法。对于初学者来说,这些内容可以帮助他们建立起对Java基础知识的全面理解;对于有一定经验的开发者来说,则可以作为参考和学习的资源。
🧱 后端开发与架构 2015.01.05 24 min read
Read MoreJava面试必知:HashMap原理与常见问题解答
本文详细介绍了Java中的集合框架,包括Collection、List、LinkedList、ArrayList、CopyOnWriteArrayList、Vector、Stack、Set、HashSet、LinkedHashSet、TreeSet、CopyOnWriteArraySet、Map、ConcurrentHashMap、ConcurrentSkipListMap等类。文章首先对单线程下的List和Map进行了详细解析,包括其底层实现原理和遍历方式。接着介绍了多线程集合框架,如CopyOnWriteArrayList、ConcurrentSkipListSet、CopyOnWriteArraySet、ConcurrentHashMap、ConcurrentSkipListMap等。最后讨论了Java集合框架中的一些常见问题和最佳实践。
🧱 后端开发与架构 2015.01.04 72 min read
Read More

Java编程:知识点总结二
本文深入探讨了Java编程中的多个关键概念,包括equals方法、逻辑与运算符&和&&的区别、short类型变量的操作、char类型的Unicode支持、final关键字的使用、==操作符和equals方法的区别、静态变量和实例变量的区别、static方法和非static方法的调用限制、Math类的方法、Java的类加载机制以及双亲委派模型、进程间通信的方式、线程间通信的方式、clone方法、内部类的初始化方式、String、StringBuffer与StringBuilder的区别、length、length()和size()方法的区别、final、finally和finalize的关键字区别、stop和suspend方法的危险性、sleep和wait方法的差异、多线程的实现方式和同步机制、Java锁的种类以及synchronized和java.util.concurrent.locks.Lock的异同。文章还通过示例代码展示了这些概念的应用,并讨论了数据库驱动程序的动态加载和使用方式。
🧱 后端开发与架构 2015.01.04 39 min read
Read MoreJava基础:知识点总结一
本文探讨了Java中的几个重要概念:Serializable接口的意义,单例模式的不同实现方式(包括懒汉模式、饿汉模式、同步锁、双锁机制、枚举实现和静态内部类实现),以及如何防止反射和反序列化破坏单例。文章还介绍了Fork/Join框架与MapReduce的区别,NIO和AIO的特点,序列化和反序列化的原理,Java中的数据类型Integer的自动装箱和拆箱行为,进制的概念,==和equals方法的使用区别,强引用、软引用、弱引用和虚引用的区别及其在垃圾回收中的应用。最后,文章讨论了Java垃圾收集器的工作时机、对象判断标准以及GC操作的详细内容。
🧱 后端开发与架构 2015.01.03 27 min read
Read More

Git基础命令全解析:掌握版本控制的艺术
本文介绍了Git的配置和管理,包括忽略规则、取消跟踪文件、从版本库中移除文件或目录、创建和推送标签、同步标签、统计提交次数及代码量变化、同时向多处推送代码、强制提交更改、克隆指定标签的仓库、配置代理和取消代理设置、初始化项目并上传到GitHub、创建及同步分支、处理大小写不匹配的文件名、移除版本控制下的某个文件或目录、修改文件夹名称或移除版本控制下的空文件夹、删除远端分支、修改远程仓库的地址以及修改文件名大小写等方面的内容。
🛠️ 开发工具与插件 2014.10.11 11 min read
Read More

轻松掌握SSH服务配置:Ubuntu入门必学技能
本文提供了Ubuntu系统使用过程中的基本操作步骤,包括图形界面与命令行模式的切换以及配置SSH服务的方法。文章详细说明了如何更新包列表、安装openssh-server、查看和开启SSH服务、查看系统IP地址以及修改SSH配置文件以允许root用户通过SSH登录。这些技能将帮助读者更好地管理和远程访问Ubuntu系统。
🖥️ 基础设施与运维 2014.09.22 3 min read
Read More掌握Java泛型的力量:从基础到高级用法
本文深入探讨了Java中的泛型概念及其应用。文章首先解释了泛型的基本原理,即通过类型参数化提高代码复用性和安全性。接着,文章通过示例展示了如何使用泛型来避免强制类型转换和运行时错误。文中还介绍了泛型的高级用法,包括限制泛型、多接口限制、通配符泛型和泛型方法的使用。最后,文章讨论了类型参数与无界通配符的区别以及Java泛型中的super关键字。
🧱 后端开发与架构 2014.09.20 11 min read
Read More

Git基础入门:从安装到高级实战指南
本文介绍了Git的基本操作和使用方法,包括安装、配置、仓库初始化、文件添加与提交、分支管理、远程仓库操作、冲突解决以及使用最佳实践等。内容涵盖了从入门到高级使用的各个方面,适合希望深入学习Git的用户。
🛠️ 开发工具与插件 2014.09.05 5 min read
Read More
Shell脚本入门:Linux文件管理系统秘籍
本文介绍了通过端口号获取PID的方法,如何根据名称获取PID,以及tar命令的使用。同时阐述了shell中执行多个命令的方法,包括使用分号、与和或来控制命令的执行顺序。还讨论了查看历史命令和批量杀进程的技巧。接着介绍了删除文件和目录的方法,包括使用rm命令和find命令进行精确筛选。最后详细说明了find命令的使用方法,包括常用的选项和运算式,并提供了实际应用示例。
🖥️ 基础设施与运维 2014.08.18 10 min read
Read More

Spring Boot 入门指南:从基础到实践
本文探讨了Spring Boot应用中main类放置位置的建议。建议将main类放在所有类所在包的顶层,以便于使用@ComponentScan和@SpringBootApplication注解,简化配置。同时,文章还介绍了构造器注入、开发者工具(如devtools)的使用,以及配置文件和环境选择等高级特性。此外,还提到了Spring Boot的一些调试和管理特性,例如远程调试、自定义Banner、Application事件监听器和Admin特性等。最后,本文简要描述了日志配置的选择和定制方法。
🧩 开发框架与中间件 2014.08.17 5 min read
Read MoreJava并发编程的利器:volatile的关键技巧和应用
本文探讨了volatile关键字在Java并发编程中的作用和意义,主要涵盖了两个方面:可见性和指令重排。volatile关键字确保了变量的可见性,即当一个线程修改了一个共享变量时,其他线程能够立即得知这个修改。它还禁止了指令重排,从而保证了程序执行的有序性。然而,volatile关键字不能保证操作的原子性,这可能导致并发问题。文章通过具体的例子和代码分析,深入解释了这些概念。
🧱 后端开发与架构 2014.08.12 12 min read
Read More

如何更安全地删除文件:使用自定义`rmtrash`脚本
本文介绍了在Linux系统中创建自定义回收站的步骤和使用方法。文章首先描述了使用rm命令直接删除文件的不可逆性,以及为避免误操作而设计的一个类似于Windows系统回收站的脚本。该脚本通过修改rm命令的行为,将文件移动至用户家目录下的`.rmtrash/`目录中,同时记录删除操作的详细信息。通过不同的选项,用户可以查看、恢复、清空或列出回收站内容。文章还提供了脚本的代码和安装说明,以及如何使用别名替换原rm命令以实现这一功能。
🖥️ 基础设施与运维 2014.08.09 9 min read
Read More



掌握 CentOS 环境下的 Python 技巧
CentOS 环境下手动安装和配置 Python,使用 pip 管理依赖。
🖥️ 基础设施与运维 2014.07.25 4 min read
Read More

RESTful API 入门指南:从概念到实战
RESTful API 是一种网络应用架构风格, 强调通过统一的接口和资源操作设计 API. 它使用 HTTP 协议中的不同方法来创建、读取、更新和删除资源, 让开发者和用户能够直观地理解和操作应用程序.
🧩 开发框架与中间件 2014.07.08 4 min read
Read More从零开始:掌握Web会话管理的四种方式
本文深入探讨了 HTTP 协议的无状态性及其带来的挑战。为了在多个请求中保持会话状态,文章介绍了四种解决方案:表单隐含字段、Cookie、Session 和 URL 重写。每个方法的特点和用途都进行了详细的解释,并提供了相关的代码示例。最后,文章总结了这些方法的优缺点和使用场景,为开发者提供了实用的指导。
🧱 后端开发与架构 2014.07.05 5 min read
Read More

Spring MVC 优化:敏感词过滤与Token验证的集成
本文深入探讨了在Spring MVC框架下如何通过拦截器和注解实现Token验证、用户信息注入、参数别名处理、关闭默认Content-Type判断、更改默认Json序列化方案以及自动加密/解密请求中的Json等高级功能。文章还介绍了敏感词过滤功能的实现,包括基于注解的敏感词过滤和记录请求返回内容的过滤器。这些功能的实现不仅增强了应用的安全性,也提高了开发效率和用户体验。
🧩 开发框架与中间件 2014.05.20 10 min read
Read More基于 Spring 的 Token 鉴权系统搭建教程
REST是一种软件架构风格,通过URL对资源进行操作,而Token用于移动端登录身份鉴权,与Session相比更安全且符合无状态设计。文章介绍了Token的交互流程、程序示例和Spring框架下的实现方式,包括TokenModel类、RedisTokenManager接口及其在Controller中的应用。还讨论了登录请求的安全性问题以及Token生成方式的多样性。
🧩 开发框架与中间件 2014.05.17 10 min read
Read More

@Autowired 和 @Resource:哪种方式更适合你的项目?
本文对比了Spring框架中的两个注解@Autowired和@Resource在装配bean时的异同。@Autowired默认按类型注入,而@Resource默认按名称注入;@Autowired可以设置required属性允许null值,而@Resource找不到匹配的bean会抛出异常。此外,两者都可以指定bean的名称进行注入。根据使用场景和个人偏好选择合适的注解。
🧩 开发框架与中间件 2014.05.10 3 min read
Read More从零开始:IntelliJ IDEA 中构建 SpringMVC+Spring+MyBatis 项目
本文详细介绍了如何在使用IntelliJ IDEA集成SpringMVC、Spring和Mybatis框架时,基于Annotation进行配置。文章首先展示了创建Spring工程并配置项目结构,随后讲解了如何在web.xml中设置SpringMVC的核心控制器和Spring容器监听器。接着,通过实例代码演示了实现登录功能的过程,包括配置实体Bean、Controller、Mapper以及Service层,并逐步完成了数据库连接的配置。
🛠️ 开发工具与插件 2014.04.22 9 min read
Read More

5分钟掌握:RESTful API的异常处理艺术
Spring MVC 和 RESTEasy 框架中的异常处理实现方法。
🧩 开发框架与中间件 2013.06.22 8 min read
Read More
Mybatis入门五:探索Mapper Java接口与Map参数的灵活结合
MyBatis Mapper 接口与动态 SQL 的使用方法,包括 Map 参数和条件查询。
🧩 开发框架与中间件 2013.04.19 4 min read
Read More

MyBatis二级缓存实战教程
MyBatis提供了两种类型的缓存:一级缓存和二级缓存。一级缓存是基于HashMap的本地缓存,作用域为Session。二级缓存也是基于HashMap存储,但作用域为Mapper(Namespace),并支持自定义存储源如Ehcache。当执行C/U/D操作时,相应的作用域下的缓存会被清空。测试代码展示了如何使用MyBatis的一级和二级缓存。一级缓存默认开启且只能在同一Session中使用相同条件查询时生效。二级缓存需要配置并在User类中实现Serializable接口,支持跨SqlSession的数据共享。总结中还介绍了cache标签的常用属性,如回收策略、自动刷新时间、最大缓存大小等。
🧩 开发框架与中间件 2013.04.18 4 min read
Read MoreMyBatis 一对多、一对一查询详解与配置示例
MyBatis 关联查询详解,介绍一对一、一对多和继承关联的实现方法。
🧩 开发框架与中间件 2013.04.17 6 min read
Read More



探索Spring MVC注解驱动:从基础到高级
本文探讨了Spring框架中多配置文件的处理方法,包括使用逗号和通配符分隔配置文件以及如何开启注解驱动和自动扫描。文章还介绍了如何在Spring中使用@RequestMapping注解来处理HTTP请求,并讨论了数据绑定、类型转换和输入验证等方面。最后,文章简单提及了文件上传和拦截器的相关内容。
🧩 开发框架与中间件 2013.04.12 2 min read
Read More

Spring 入门:EJB vs Spring 容器大比拼
Spring 容器入门,对比 EJB 和重量级容器,介绍 IoC 和依赖注入。
🧩 开发框架与中间件 2013.04.11 4 min read
Read MoreRabbitMQ基础教程:Fanout交换器与多消费者模型
RabbitMQ 发布/订阅模式实现,介绍 Direct、Topic 和 Fanout 交换器的使用方法。
🧩 开发框架与中间件 2013.03.15 11 min read
Read More


Zookeeper Curator高级特性实战指南
Zookeeper Curator 高级特性实战,介绍分布式锁、领导选举和缓存功能。
🧩 开发框架与中间件 2013.02.22 59 min read
Read More

Redis高效处理:字符串、哈希、列表和有序集合
Redis 数据结构详解:字符串、哈希、列表和有序集合的操作与应用场景。
🧩 开发框架与中间件 2013.02.20 5 min read
Read More



CentOS7 MongoDB 3.0 安装全攻略
CentOS 7 上安装 MongoDB 3.0 并配置 WiredTiger 存储引擎的完整指南。
📊 数据与搜索 2013.02.16 6 min read
Read More

在CentOS上享受更高效的Shell体验:oh-my-zsh
CentOS 上安装和配置 oh-my-zsh,提升 Shell 使用体验。
🖥️ 基础设施与运维 2013.02.14 3 min read
Read More掌握 Shell 编程:Linux 必备技能
本文深入浅出地介绍了Linux下的Shell编程基础知识,包括Shell脚本的概念、常用的shell命令如cd、mkdir、touch等,以及Shell脚本的运行方式。文章还详细讲解了变量、字符串、数组的使用方法,并介绍了注释的写法。此外,文章对参数传递、基本运算符、文件测试运算符等进行了说明,并通过实例展示了如何使用echo和printf命令进行格式化输出。最后,文章还讲述了Shell脚本中的流程控制语句,包括if-else语句、for循环、while循环、无限循环、until循环、case语句以及跳出循环的方法。此外,还介绍了函数的定义和使用方法,以及输入/输出重定向的概念。
🖥️ 基础设施与运维 2013.02.13 58 min read
Read More

Web app开发:成本与体验的权衡之道
Web App 开发经验分享,对比 Native App 和 Web App,介绍技术架构和开发挑战。
🧱 后端开发与架构 2013.01.03 13 min read
Read More

final、finally和finalize:Java编程必备知识
详解 Java 中 final、finally 和 finalize 的区别和使用场景。
🧱 后端开发与架构 2012.08.04 14 min read
Read More
轻松掌握Java Properties文件操作,从入门到实践
Properties 类在Java中用于持久化保存属性集,支持从流读取和写入文件。通过 load() 方法可以从输入流加载属性列表,使用 getProperty() 和 getProperty(String, String) 查询属性,setProperty(String, String) 设置或更新属性值,store(OutputStream, String) 将属性集合存储到输出流中。Properties 类可以用于多种场景,如配置文件的读取和写入、用户设置保存等。
🧱 后端开发与架构 2012.06.01 3 min read
Read More


Java 编程:抽象类与接口的使用指南
本文详细介绍了Java中的抽象类和接口的概念、特点以及它们之间的关系。抽象类是一种继承关系,子类只能有一个父类但可以有多个接口;而接口则提供了一种更高级的抽象方式,允许一个类实现多个接口,以解决多继承问题。文章还解释了为什么在抽象类中写抽象方法和在接口中写抽象方法的区别,以及何时使用它们。最后总结了选择抽象类还是接口的设计原则,强调了理解问题域的重要性。
🧱 后端开发与架构 2012.05.29 7 min read
Read More

Java继承的多态魅力:向上转型的艺术
Java的继承是创建新类的基础技术,允许利用现有类的定义来构建新的类。子类可以扩展父类,增加新的属性和方法,或重载方法。Java使用`extends`关键字表示继承关系,并且每个类默认继承自Object类。继承提高了代码复用性,但可能破坏封装性和导致强耦合。在处理继承时,应谨慎考虑其适用性。
🧱 后端开发与架构 2012.05.27 19 min read
Read More

Java基础到进阶:Math类与包装类的学习之路
Math 类提供了一系列用于数学运算的静态方法和属性,如计算自然对数的 E 值和圆周率的 PI 值。它还包含一些常用方法,例如向上取整 ceil、向下取整 floor、返回最接近整数 rint 和生成随机数 random。文章介绍了三种获取随机数的方法:利用当前时间毫秒数、使用 Math.random() 和通过 Random 类。此外,文章讲述了包装类的概念和作用,包括基本数据类型对应的包装类以及它们的不可变性特点。最后,详细解释了基本数据类型、包装类和 String 类之间的相互转换方法。
🧱 后端开发与架构 2012.05.25 3 min read
Read More

Java异常处理全解析:掌握try-catch-finally,开启更安全的编程之旅
Java 异常机制提供了识别和响应错误的方法,通过异常类型、堆栈跟踪和信息可以回答 'what', 'where', 'why'。Throwable 类是所有错误或异常的超类,包含 Error 和 Exception 子类。Exception 指出合理的应用程序想要捕获的条件,而 RuntimeException 则是在运行时可能会出现的异常。被检查的异常需要在编译期进行处理,而错误通常无法恢复。Java 提供了 try、catch、finally 和 throw、throws 关键字来处理和抛出异常。自定义异常类可以通过继承 Exception 并重载构造方法来实现。
🧱 后端开发与架构 2012.05.23 13 min read
Read More

Java编程基础:掌握四种访问修饰符(public、protected、default和private)
Java 四种访问权限详解:public、protected、default 和 private 的使用方法。
🧱 后端开发与架构 2012.05.21 4 min read
Read More

Java编程基础:如何正确判断一个数字是奇数还是偶数
本文探讨了Java中判断一个整数是否为奇数的两种方法。首先介绍了一种基于取模运算符(%)的方法,该方法正确地判定正整数的奇偶性,但对于负整数会返回错误的结果。然后提出改进方案:使用按位与运算符(&)进行判断,这种方法更加简洁和有效。文章还详细解释了取模运算符的工作原理,说明了其结果根据操作数的符号决定的问题。
🧱 后端开发与架构 2012.05.19 3 min read
Read More

Java揭秘:深入浅出局部变量与常量池
本文探讨了Java中的访问控制符、封装以及静态关键字的使用。文章首先介绍了四种访问控制符(public, 默认, protected, private)及其作用范围,包括它们在类和实例方法中的应用。接着,解释了getter和setter方法的深入理解,特别是当属性被设置为private时,如何通过这些方法进行数据验证和控制。然后详细描述了封装的好处,包括成员变量可读性的控制、类的整体内容控制和用户对内部实现细节的无需了解。文章还讨论了static关键字的使用,解释了静态变量(类变量)和静态方法的区别及使用方式,并说明了它们在内存中的存储位置。此外,阐述了代码块的概念,包括静态初始化块和实例化初始化块的执行顺序和作用。最后,对内部类的概念进行了概述,区分了成员内部类、局部内部类和匿名内部类,并解释了为什么局部内部类不能使用访问修饰符。
🧱 后端开发与架构 2012.05.17 9 min read
Read More
Java虚拟机探秘:字节码与类文件
本文介绍了Java编程语言的基础知识,包括Java虚拟机(JVM)、类定义、主方法、系统输出、classPath配置以及标识符和关键字的使用。文章还详细讨论了Java的数据类型,例如int、double、byte、boolean、long、char等,并解释了它们之间的转换关系。此外,还介绍了String类的使用,包括字符串的定义、连接和数组。最后,文章讲解了程序的逻辑结构,如顺序结构、选择结构和循环结构,以及如何使用JOptionPane类进行用户交互。
🧱 后端开发与架构 2012.05.14 19 min read
Read More
Java入门必备:环境配置与高效开发技巧
Java 编程语言入门,介绍 Java 体系结构、特点、JDK/JRE 区别和环境配置。
🧱 后端开发与架构 2012.05.12 16 min read
Read More
打造个性化编程环境:Sublime Text插件深度体验
Sublime Text 编辑器安装配置指南,包括插件安装和快捷键使用。
🛠️ 开发工具与插件 2012.05.03 10 min read
Read More
Selected Article
Here are a few articles that I think are not bad, hope you like too.






















