Skip to content
CodingDiary

归档

按时间归档的所有文章

2026 1
一月 1
  • 想把网页喂给 LLM 做 RAG?curl 一堆 CSS/JS,正文混在里面根本没法用;Playwright 又太重,杀鸡用牛刀。Firecrawl 专为 AI 场景设计:给它 URL,返回干净的 Markdown——JS 渲染、反爬绕过、广告过滤、正文提取它全包了。免费版 500 积分/月,个人学习够用。本文实测抓 AgentScope Java 文档,对比效果明显,附 /scrape、/crawl、/map 三种 API 用法和避坑指南。

2022 1
一月 1
  • MacOS 升级到 BigSur/Monterey 后,JD-GUI 打不开了?提示「No suitable Java version found」,明明装了 JDK 还报错?这是 JD-GUI 内置的 Java 检测脚本太老,不认识新版 MacOS 的问题。解决方法很简单:右键显示包内容,把 universalJavaApplicationStub.sh 替换成 GitHub 上的新版即可。三步搞定,继续愉快地反编译 Jar 包。

2021 11
五月 2
  • 想入门 Flink 实时计算?这本《Flink入门与实战》给你一些参考。前几章是官方文档导读,中间章节介绍广播变量、State 管理、窗口函数、WaterMark 等高阶特性,最后两个实战案例(实时 ETL + 实时报表)帮你理解应用场景。Flink 版本迭代快,API 还是要看官方文档。如果看不下去官方文档,本书是不错的入门选择。

  • 本地开发服务太多,ip:port 记不住?用域名替代!方案一:SwitchHosts 修改 hosts 文件,简单但不支持泛域名;方案二:dnsmasq 容器化部署,一行配置支持 *.dev.io 泛域名解析;方案三:go-dnsmasq 解决内存泄漏问题,镜像仅 2.7M。附 Docker Compose 配置 + M1 芯片本地编译教程。

四月 3
  • Lombok 和 MapStruct 都很香,但一起用就翻车?编译报错「找不到 getXXX() 方法」?别急,这是 Annotation Processor 执行顺序的锅。两者都在编译期生成代码,但 Maven 不知道要先跑 Lombok 再跑 MapStruct。本文带你理解问题本质,只需在 pom.xml 的 annotationProcessorPaths 里加一行配置,让 Lombok 排在 MapStruct 前面,问题迎刃而解。附完整可运行示例代码。

  • 老舍散文精选集,小时候盼着长大,长大后才明白成年人的世界没有容易二字。北京的春节、贺年的劳动滋味、考试制度的吐槽、理想家庭的描绘……还有那句「人是为明天活着的,因为记忆中有朝阳晓露」。往事如风,你来人间一趟,你要看看太阳;你若爱生活哪里都可爱。推荐阅读~

  • 学大数据绑不开 ZooKeeper,但安装配置让人头疼?Docker Compose 一键搞定!本文提供单机版和集群版两套方案:单机一行命令 `docker run`;集群三节点配置 ZOO_MY_ID + ZOO_SERVERS,利用 Compose 网络互通特性组成集群。还解决了 Curator 连接集群报 NPE 的坑——需要配置 hosts 通过 hostname 连接。

三月 4
  • 《史蒂夫·乔布斯传》阅读中断的笔记。乔布斯的童年、被遗弃与被收养、养父母对他的影响、印度寻找精神导师的经历……学到了「现实扭曲力场」的由来。他不是众人可效仿的楷模,但他的个性、激情与产品紧密关联。「如果你表现得好像掌控了一切,别人就会以为你真的掌控了一切。」待续……

  • 学 K8S 不想只看文档?想在本地搭集群练手却被网络和资源劝退?k3d 了解一下——基于 Docker 运行 k3s,一行命令创建「1主2从」集群,启动快、资源省、还能模拟多节点调度。本文对比 minikube/microk8s/kind/k3d 四种方案,手把手教你用 k3d 搭建本地 K8S 环境,从创建集群到部署 nginx 验证 Ingress,10 分钟搞定。附 kubecm 多集群切换技巧。

  • 被基金伤透了心,想学量化交易?安装聚宽数据 SDK 却报错 `clang: error: invalid version number in 'MACOSX_DEPLOYMENT_TARGET=11'`?这是 macOS Big Sur 的坑!Command Line Tools 版本太旧不支持 macOS 11。解决方法:用 `brew doctor` 检测问题,重装 CLT 升级 clang 到 12.0。附完整排查思路 + 解决步骤。

  • 想入门 K8S 但被官方文档劝退?这本《每天5分钟玩转Kubernetes》或许适合你。从 minikube 体验到 kubeadm 部署三节点集群,从 Pod/Service/Ingress 到 Helm 包管理,从健康检查到持久化存储……前12章循序渐进,小白友好。作为入门书籍还不错,但一定要动手实践!附个人 k3d+k3s 实践笔记。

二月 1
  • 工资涨了却越来越穷?「富爸爸穷爸爸」颠覆你的金钱观:资产是把钱放进口袋的东西,负债是把钱取走的东西。富人让钱为自己工作,穷人为钱工作。财务知识比高薪更重要,因为不靠财商挣来的钱也留不住。理财小白必读,建立你的财商第一课。本书虽有争议,但这些观念确实让人耳目一新。

一月 1
  • 2020 当实「鼠」不易,2021 望「牛」转乾坤!Q4 是我在涂鸦的第一个完整季度,独立设计并上线了精准营销和营销自动化系统。人生大事:11.22 领证,寓意 1+1=2+2!年底聚会如梦技术团队收获颇丰。这一年经历离职、亲人离世、经济压力……但一切都在变好。坚持写日记是今年最正确的事。

2020 13
十一月 1
  • 「一言」官方 API 有频率限制?自己搭一个内网版!Docker Compose 一键部署:Redis + hitokoto/api 镜像,5 分钟搞定。附 Nginx 反向代理配置 + 前端 HTML 集成示例,完整 docker-compose.yml 直接拿来用。动漫台词、网络金句,属于你的私有一言服务~

十月 1
  • ES 查询、CSV 导入、MongoDB 查询……一堆 if-else 判断数据来源?Spring 环境下策略模式帮你优雅消灭!核心技巧:用 List<接口> 注入所有实现类,工厂类按类型选择策略。文中还藏着模板方法模式和工厂模式,多种设计模式协同作战,代码更优雅!

九月 2
  • 被糟心事包裹的 Q2 Q3,但仍有一丝美好。外公病情、待业 5 个月、面试有赞/涂鸦/酷家乐/天猫精灵……最终选择涂鸦。技术氛围、团队氛围真的很重要!感谢一路帮助我的朋友们。附面经分享,需要涂鸦内推的欢迎私聊~

  • 周末的不务正业~ 花了一个半小时折的燕子

八月 1
  • JustAuth 新版来袭!1.3.4.beta 两大新特性:① 自定义 HTTP 代理,轻松测试 Google、Facebook 等国外登录;② 自定义 scopes 参数,获取更多用户权限。配置示例一看就懂,附完整 YAML 配置模板。升级 hutool-core 5.4.0 修复 JSONUtil 报错问题。

七月 1
  • 终究是没能熬过这个庚子年。

六月 3
  • 学 Spring Boot 只看文档不够爽?现在有配套免费视频了!讲师冷冷是 pig、Spring Boot、Spring Security Oauth、Spring Cloud Alibaba 等多个知名开源项目的 committer。课程内容与 spring-boot-demo 完全一致,中间件全程 Docker 部署,学习无门槛!

  • 在 Quartz Job 里 @Autowired 结果 NPE?别急着怀疑人生。这是因为 Job 实例由 Quartz 内部创建,压根不在 Spring 容器管辖范围内。本文从 SchedulerFactoryBean 源码入手分析问题根因,提供两种解法:自定义 JobFactory 配合 AutowireCapableBeanFactory,或者用 SpringUtil 工具类手动获取 Bean。文末还揭秘了 Spring Boot 2.x 为什么默认就能注入——因为它用了 SpringBeanJobFactory。

  • 静态博客发布文章太繁琐?CI/CD 来解放双手!本文分享博客部署演进:v1.0 Jenkins + Travis-CI 自动构建推送 Pages;v2.0 升级 GitLab CI + Docker Swarm 容器化部署,Traefik 反向代理实现 0 配置负载均衡。附完整 Jenkinsfile、.gitlab-ci.yml 配置。

五月 2
  • NIO 读写数据仍是同步的,AIO 才是真正的异步!本文使用国产框架 smart-socket 重构 RPC:异步 IO 操作,CompletableFuture 阻塞获取结果,MessageProcessor 处理请求响应。BIO → NIO → AIO,三种 IO 模型的 RPC 实战对比系列完结篇。

  • BIO 一个连接一个线程,大量连接直接崩溃!NIO 同步非阻塞如何解决?本文基于 Netty 重构 RPC 框架:ServerBootstrap 替换 ServerSocket,Channel + Handler 处理请求,事件驱动提升性能。从 BIO 到 NIO 的进化之路,附完整代码对比。

四月 2
  • 远程过程调用(RPC)让分布式调用像本地调用一样简单,但底层原理你了解吗?本文从零实现一个 RPC 框架:用 BIO 的 Socket/ServerSocket 做网络通信,JDK 序列化传输数据,动态代理让调用方无感知。三个核心技术点,附完整可运行代码。

  • 马云说离职无非两原因:钱给少了、心委屈了。2 年时间,从技术输出到团队管理,为什么最终选择离开?需求不明确的会议、技术推广的阻力、产品质量的无奈……当努力得不到匹配回报,是时候换个环境了。疫情下的职场思考与 Q2 计划。

2019 28
十二月 2
  • 十年匆匆而过,从中考吊车尾到大学专业前三,从北漂初入职场到开源贡献者。2019 年的高光时刻:spring-boot-demo 登顶 GitHub 热门 Java 榜第一名!参与 JustAuth、发布 magic-starter……回顾这一年的工作、技术、开源与生活,展望 2020 新的 decade。

  • JustAuth 强依赖 hutool-http,想换成 OkHttp3 怎么办?simple-http 来解耦!设计思路:定义通用 Http 接口,提供 4 种默认实现(JDK11 HttpClient、OkHttp3、Apache HttpClient、Hutool)。通过 Class.forName() 自动探测依赖,也支持自定义实现。运用了代理模式、委派模式、策略模式。

十一月 1
  • BufferedReader、InputStream、OutputStream……JDK IO 类为什么可以层层包装?装饰者模式!本文用「购买 MacBook Pro 升级内存/硬盘套餐」的场景讲解:基础套餐 → 叠加内存装饰器 → 叠加硬盘装饰器,动态扩展功能。比继承更灵活,符合开闭原则。

十月 4
  • 微信朋友圈点赞,为什么所有好友都能收到通知?因为观察者模式!本文用「私信推送通知」的场景讲解:Pusher 作为被观察者发布消息,User 作为观察者订阅并接收。setChanged() + notifyObservers() 触发通知。JDK Observer、Guava EventBus、Spring ApplicationEvent 都是典型应用。

  • JdbcTemplate、RedisTemplate、MongoTemplate……Spring 为啥这么爱用 Template?因为模板方法模式太香了!本文用「短信/邮件发送器」的场景讲解:父类定义 validate → execute → error 的流程骨架,子类只需实现具体步骤。公共逻辑不重复,扩展新渠道只加子类。

  • Mock 数据不够真实?Easy Mock + Mock.js 让假数据活起来!本文详解:基础语法生成随机数据、数据占位符模拟真实场景、响应式数据根据请求参数返回。重点:如何用 Easy Mock 实现分页数据接口,附完整模板代码。前端小姐姐再也不用求后端了!

  • 前后端并行开发,接口还没写好怎么办?Easy Mock 帮你搞定 Mock 数据!本文使用 docker-compose 一键部署 Easy Mock(含 MongoDB + Redis),附 nginx 配置 HTTPS 反向代理。告别手写假数据、拦截请求的麻烦,可视化创建接口,支持 Swagger 导入。

九月 2
  • 电脑 USB 接口和手机 Type-C 不兼容?买个转接头啊!适配器模式就是代码世界的「转接头」。本文用 USB 转 Type-C 的场景讲解:老接口不改动,新增适配器类做转换。Spring MVC 的 HandlerAdapter、Spring AOP 的 AdvisorAdapter 都是典型应用。

  • 支付宝、微信、京东、银联……一堆 if-else 判断支付方式?策略模式帮你优雅消灭!本文用「选择支付方式」的场景讲解:定义 Payment 接口,不同支付方式各自实现。JDK 的 Comparator、Spring 的 Resource 都是典型应用。符合开闭原则,扩展新支付只需新增类。

八月 7
  • 还在用 Jenkins、Travis-CI?GitHub 自家的 CI/CD 来了!GitHub Actions 支持自定义工作流,开源项目免费使用。本文记录申请流程和 Spring Boot + Maven 项目的配置示例,push 代码自动触发构建,真香!附完整 maven.yml 配置。

  • 委派模式和代理模式傻傻分不清?核心区别:代理注重过程,委派注重结果!本文用「老板-组长-工人」的场景讲解:Boss 下命令,Leader 派发任务,Worker 执行。虽然不属于 GoF 23 种设计模式,但 Spring MVC 的 DispatcherServlet 就是典型应用。

  • Spring AOP 底层到底用的啥?JDK 动态代理 vs CGLIB 动态代理,区别在哪?本文用「售票员卖票」场景讲解:静态代理只能代理特定类,动态代理可代理任意对象。附 JDK Proxy 源码深度剖析(从 newProxyInstance 到 ProxyClassFactory),以及 Spring 的代理选择原则。

  • clone() 方法你真的会用吗?浅克隆的坑你踩过没?引用对象地址相同,改一个全变了!本文用「印钞机打印纸币」的场景,对比浅克隆 vs 深克隆的实现差异。深克隆需要实现 Serializable 接口,通过序列化/反序列化实现真正的对象复制。附 BeanUtils、JSON.parseObject 等常见应用。

  • 单例模式怎么写才安全?7 种实现方式全解析!饿汉式、懒汉式、双重检查锁、静态内部类、枚举、容器式、ThreadLocal——哪种最推荐?更关键的是:反序列化和反射都能破坏单例!本文深入 ObjectInputStream 源码,揭秘 readResolve 方法的原理。

  • 简单工厂生产单一产品,工厂方法还是单一产品,抽象工厂才是「产品族」!本文用科技公司卖手机+笔记本+耳机的场景讲解:小米、华为、苹果三家公司,每家都有自己的产品线。TechFactory 抽象工厂定义 sellPhone/sellLaptop/sellEarPhone 三个方法,子类各自实现。附 Spring AbstractBeanFactory 源码分析。

  • 企业微信扫码登录怎么接?JustAuth 新增企业微信支持!本文详解:注册企业微信 → 创建应用 → 配置授权回调域 → 获取 4 个关键参数(client-id、client-secret、redirect-uri、agent-id)。最后用 justauth-spring-boot-starter 三步完成集成,附效果截图。

七月 1
  • 不用 Spring Boot 也能快速接入第三方登录!本文演示 JFinal 框架如何通过 JustAuth 集成 QQ、GitHub、小米登录。踩坑记录:JFinal 路由不支持 /{type}/callback 格式,回调地址要改成 /callback/{type}。附完整配置文件和 Controller 代码。

五月 1
  • QQ、微信、GitHub、Google、微软……7 种第三方登录一次搞定!使用 JustAuth + justauth-spring-boot-starter 快速集成,yml 配置 + 一个 Controller 就能跑。本文还手把手教你搭建 frp 内网穿透环境、各平台应用申请流程,从零到能跑的完整指南。

四月 1
  • 本地搭建 K8s 集群?先来几台 CentOS 虚拟机!Vagrant + VirtualBox 比手动安装快 10 倍。本文从零开始:box 镜像下载、vagrant init/up 基础命令、共享文件夹和网络代理配置。最后附一个完整 Vagrantfile 案例:一键创建 3 节点集群,自动安装 Docker 并设置开机启动。

三月 1
  • Spring Boot 项目总是重复造轮子?scaffold 开源脚手架帮你搞定!10 个模块覆盖常见需求:launcher 多环境启动器、common 统一返回格式、log 操作日志注解、swagger 自动装配、web 全局异常处理、code 验证码、notification 钉钉/邮件/短信通知、codegen 代码生成器。开箱即用,让你专注业务逻辑。

二月 4
  • 每个 Mapper.xml 都写一堆 if 条件太烦了!本文提供通用高级查询方案:定义 AdvanceQuery 模型封装 key/op/value,SQL 片段支持 eq/gte/lte/between/in/notin/like 等 9 种操作符。前端传 JSON 数组,后端动态拼装 WHERE 条件。一套模板复用所有查询,告别重复代码。附完整 XML 模板和 PostMan 测试示例。

  • 简单工厂的 if-else 越写越长?工厂方法模式来解耦!核心思想:把具体类的实例化延迟到工厂子类,新增产品只需新增工厂类,不用改原有代码。本文继续用糖果工厂的例子,对比简单工厂 vs 工厂方法的 UML 图和代码实现。附 JDK Calendar.getInstance() 源码分析,看看大佬怎么用。

  • new LemonCandy() 散落在代码各处?简单工厂模式帮你统一管理对象创建!本文用「糖果工厂生产不同口味糖果」的场景,手把手实现简单工厂:抽象糖果类 → 具体糖果实现 → 工厂类封装创建逻辑。还有两种工厂方法实现:字符串参数和 Class 参数反射创建。附 Slf4j LoggerFactory 源码分析。

  • 每次打包都要手动改 spring.profiles.active?太容易出错了!本文介绍 Maven Profile + @xx@ 变量替换的优雅方案:pom.xml 定义 dev/test/prod 三套环境,application.yml 用 @profileActive@ 动态获取,mvn package -P prod 一键打包。还提供了 shell 脚本和 IDEA 可视化操作两种构建方式。

一月 4
  • 接口参数传 0 或 1,怎么自动转成 GenderEnum.MALE 或 FEMALE?@RequestParam 和 @RequestBody 搞不定,需要自定义 Converter。本文提供完整的通用方案:BaseEnum 接口 + ConverterFactory 工厂模式,一套代码支持所有枚举类型的自动转换,Get/Post 请求都能用。

  • 想把 Git 提交时间改成跨年那天的 00:00:00?用 git commit --amend --date 就能搞定。本文记录两种场景:修改当前最新提交的时间,以及通过 commit id 修改历史提交的时间。改完记得 git push 同步到远程。GitHub 绿点补救指南。

  • Spring Boot 文件上传遇到 Nginx 413 Request Entity Too Large?原因是 Nginx 默认限制请求体大小为 1MB。解决方法很简单:在 server 块加一行 client_max_body_size 20M,然后 nginx -s reload 重启即可。一分钟解决的小问题,记录一下备忘。

  • minikube 搭建 K8s 真的傻瓜式吗?至少我遇到了两个大坑:kubectl v1.13 和 minikube 默认的 k8s v1.12 版本不匹配,以及国内网络无法拉取 k8s.gcr.io 镜像。本文记录完整的排坑过程:--kubernetes-version 指定版本、--docker-env 配置代理,VirtualBox NAT 模式下 10.0.2.2 指向宿主机的原理。

2018 14
十二月 1
  • 从北京回杭州,从执行者到产品负责人,2018 是角色转变的一年。工作上开始定 TODO-List、安排团队开发、考虑产品架构;开源上 spring-boot-demo 47 个 demo 持续更新。展望 2019:博客月更 3 篇、GitHub 日日有绿点、希望年底口袋不再空空。技术人的年终总结与自我期许。

十一月 1
  • 还在被 Spring 的 XML 配置和依赖版本冲突折磨?Spring Boot 让这一切成为过去!本文从零开始:用 IDEA 的 Spring Initializr 创建项目,理解启动类的 @SpringBootApplication 注解,编写第一个 Controller,运行 main 函数启动内嵌 Tomcat。约定大于配置,开箱即用。

九月 3
  • Node 服务一关终端就停了?用 PM2 守护进程!本文介绍 3 种后台运行 Node 服务的方式,重点推荐 PM2:支持负载均衡、进程监控、日志管理、开机自启。附完整命令速查表:start、stop、restart、logs、monit、save、startup 等,一文掌握 PM2 核心用法。

  • 图数据库 Neo4j 的 Cypher 查询语言有多简洁?本文用 7 个典型场景对比 MySQL 和 Neo4j 的查询语法:全表扫描、排序分页、条件筛选、模糊查询、多表联查、分组聚合。特别是多表 JOIN,MySQL 要写一堆 JOIN ON,Neo4j 一行箭头搞定。

  • Fork 的项目落后原仓库几百个 commit 怎么办?本文用 hutool 项目演示完整的同步流程:添加 upstream 远程地址、fetch 原项目更新、merge 到本地分支、push 到自己的仓库。7 步命令搞定,再也不用删掉重新 Fork 了。开源贡献者必备技能。

八月 1
  • 前后端分离时代,接口返回格式必须统一!本文提供完整的 Spring Boot 全局异常处理方案:统一返回格式封装(Api.java)、状态码枚举(Status.java)、自定义业务异常类、404 异常配置、@ControllerAdvice 全局异常处理器。一套代码解决所有异常处理问题,直接复制到项目里用。

七月 1
  • 公司内部 Java 8 分享的完整文档!从 JDK 5 到 JDK 8 的发展历程梳理,重点讲解 Lambda 表达式、函数式接口、Stream API、Optional 类、新日期时间 API 等核心特性。每个特性都附带 Demo 代码,拿来即用。还在用 for 循环?是时候拥抱函数式编程了。

二月 2
  • 手机号、身份证、邮箱、IP 地址、金额格式……这些常用正则表达式你每次都要现查?本文收集了开发中最常用的正则表达式:数字校验、字符校验、特殊格式校验,直接复制粘贴就能用。还有强密码规则、中文字符匹配、首尾空白去除等实用表达式。

  • 每次重装系统,或者新电脑到手的时候,最麻烦的莫过于重新安装之前常用的一些软件了。但是,平时常用的软件实在有点多,于是乎,整理一个 OSX 常用软件的列表,便于以后查找使用,以下整理的软件仅代表我个人平时常用的软件,不喜勿喷。

一月 5
  • MSSQL 用 TOP,MySQL 用 LIMIT,Oracle 用 ROWNUM——三大数据库的分页语法完全不同。本文整理了各数据库查询前 N 条记录和分页查询的标准写法,直接复制就能用。特别是 Oracle 的三层嵌套结构,不熟悉的人很容易写错。

  • 从零到一的 ElasticSearch 完整学习笔记!覆盖单机安装、分布式集群配置、head 插件和 ik 中文分词插件安装。详解索引、类型、文档、分片等核心概念,附带大量 RESTful API 示例:条件查询、聚合查询、复合查询。最后用 Spring Boot 整合 ES,实现增删改查和复杂搜索功能。

  • 数据库字段是 user_name,Java 属性是 userName,来回转换烦不烦?这个工具类帮你搞定驼峰命名和下划线命名的互转。基于正则表达式实现,代码简洁高效,直接复制到项目里就能用。ORM 框架没覆盖的场景,手动转换必备。

  • GitLab 搭好了,下一步就是 Jenkins 持续集成。本文记录完整的 Jenkins 部署实战:JDK 路径配置、阿里云 Maven 镜像加速、个性化邮件模板(含完整 HTML 代码)。还推荐了 Material 风格主题美化方案,以及 11 个必装插件:Gitlab Hook、FireLine 代码规约检查、钉钉通知等。

  • 搭建企业私有 Git 仓库,GitLab 是首选。本文涵盖 CentOS 下的完整部署流程:从依赖安装、镜像源配置、QQ 邮箱 SMTP 设置,到中文汉化包的正确使用姿势。还有两个必踩的坑:reconfigure 卡住和端口占用,以及配置 push 时邮件通知 diff 信息的完整方案。

2017 12
十二月 2
  • 翻译自: How to improve Java programming skill

  • 前段时间搞了 Vue,现在又得开始写 React 了。 我堂堂的一个后端,真是太残忍啦 o(╯□╰)o 接触过 Vue 的应该都知道,Vue 的状态管理可以有两种实现,一种是 Vuex,还有一种是 eventBus 形式。 React 状态管理,老牌的应该是 Redux,但是存在了太多的概念,对于刚接触的童鞋不太友好。mobx 当属时代的新星了。不管从效率,还是易读性都远超 Redux。...

十一月 4
  • MySQL 中文乱码?别急着改 my.cnf!本文梳理了 Mac 环境下 MySQL 乱码的 4 种原因:程序配置、数据库/表/字段编码、终端设置、Navicat 连接设置。特别是 Homebrew 安装的 MySQL 默认没有 my.cnf,以及 Navicat 的 Encoding 要选 Auto 而非 UTF-8 这两个坑,踩过才知道痛。

  • Oracle 查询慢不一定是 SQL 的问题。开启 Druid 的 PSCache 功能后,性能提升了 20%!原理是 Oracle 支持游标,PreparedStatement 被缓存复用时服务端游标不关闭,性能提升可达一个数量级。关键是 Druid 是唯一解决了 PSCache 内存占用过多问题的连接池。

  • Dubbo 服务部署后如何监控和治理?dubbo-admin 是官方提供的可视化管控台。本文详细记录从 GitHub 拉取源码、Maven 打包、Tomcat 部署到配置 Zookeeper 集群地址的完整流程。重点讲解端口冲突避免、JVM 参数调优等实战技巧,让你的 Dubbo 服务治理一目了然。

  • 学 Dubbo 之前先把注册中心搭好。本文手把手教你在 3 台 Linux 虚拟机上搭建 Zookeeper 集群:从下载解压到配置 zoo.cfg,从创建 myid 文件到配置环境变量,每一步都有详细命令。最后验证集群状态,一个 leader 两个 follower,高可用注册中心就绑了。Dubbo 入门的前置必修课。

八月 2
  • Windows 服务器上 MySQL 启动失败,报「系统错误 1067 进程意外终止」?别急着改 my.ini 的 basedir 和 datadir,先用 netstat 查查 3306 端口是不是被占用了。本文记录一次排查过程:发现是 IEXPLORE.exe 占了端口,杀掉进程后 MySQL 正常启动。附 Windows 下端口占用排查命令。

  • 想理解 Java 并发编程里的 wait() 和 notify()?最好的方式是自己实现一个阻塞队列。本文用 LinkedList + AtomicInteger + synchronized 手撸一个简易版 BlockingQueue,队列满时 put 阻塞,队列空时 get 阻塞,完美演示生产者-消费者模型。附完整测试代码,帮你真正理解线程间通信机制。

七月 3
  • Spring Boot 整合 MyBatis 后,SQL 语句死活打印不出来?关键在于 logback-spring.xml 里要把 Mapper 接口的包路径配成 DEBUG 级别。本文提供完整的 logback 配置模板,包括控制台输出、按日期滚动的文件日志、独立的错误日志。另外安利 Lombok 的 @Slf4j 注解,告别冗余的 Logger 声明。

  • windows 是目前我们用的最多一个系统,win10 现在也优化的越来越好,今天大姐的电脑有点问题,担心太蠢,不会下载和激活系统,所以整理并记录一下如何下载并激活 win10 系统,以供查阅。

  • Map.Entry 明明是个接口,为什么能直接调用 getKey() 和 getValue()?从一个朋友的疑问出发,深入 HashMap 源码,揭秘 entrySet() 返回的其实是内部类 EntrySet,而真正干活的是实现了 Map.Entry 的 Node 类。一次完整的 Java 多态实战分析,帮你理解接口、实现类、内部类之间的关系。

一月 1
  • 前言--> 今天tomcat启动时,连接oracle直接报错,出现ORA-12505的问题,最开始,我以为错误的原因是jdbc连接Oracle的连接串中的sid配置的不对,oracle不能解析连接串中的sid名字,所以拒绝了连接。在连接字串中写入正确的sid即可。

2016 10
十二月 1
  • ElasticSearch 概述 ElasticSearch是一个高可扩展的开源的全文搜索分析引擎。 它允许你快速的存储、搜索和分析大量数据。ElasticSearch通常作为后端程序,为需要复杂查询的应用提供服务。...

八月 1
  • 前言 第一次真正接触服务器,公司要求安装linux系统,花了2天时间,因为该服务器比较复杂,以此文记录下安装过程中出现的问题。

四月 2
  • 前言最近在准备软件杯的比赛项目,因为是担任的是项目组长,所以要求组员之间的项目代码必须要有规范,方便组员之间的团队合作,以及后期代码的维护。而且,我相信,如果我们代码规范能够做好的话,对于我们的开发水平也会提高多少。

  • 前言SVN是Subversion的简称,是一个开放源代码的版本控制系统,说得简单一点SVN就是用于多个人共同开发同一个项目,共用资源的目的。但是SVN对于Android项目来说并不是所有文件都需要进行版本控制的。 bin,gen 两个文件夹不用提交,因为这两个文件夹是自动生成的,如果提交可能会产生编译异常。 .settings也是自动生成,也不用提交。...

三月 6
  • 前言今年是我第一次参加蓝桥杯。3月20号。

  • 前言在开发过程中,开发规范很重要,这样有利于后期维护,而且如果离职后,新同事接收你项目时也方便阅读代码,比如我们命名一个成员变量,一般在都是m子母开头。

  • 前言Http网络数据交互请求是极其重要并且使用很频繁的一个模块,也是最基本的网络编程所需要学习的。网络请求方式的效率和性能直接影响到APP的整体用户体验流畅性,所以学习并掌握一款好的Http请求框架对我们的网络开发非常重要。Http请求在移动网络编程中主要是Get和Post请求接口数据的使用。所以,在学习好基础的Http请求知识后,为了提升开发效率,选择学习使用一款好的Http网络请求框架变得非常...

  • 目前包括: Android 开源项目第一篇——个性化控件(View)篇 包括:ListView、ActionBar、Menu、ViewPager、Gallery、GridView、ImageView、ProgressBar、TextView、ScrollView、TimeView、TipView、FlipView、ColorPickView、GraphView、UI Style、其他...

  • 前言最近在Linux上学习Python,而PyCharm需要java环境的支持,本文记录了在Ubuntu-15.04上安装jdk1.8版本的步骤与遇到的问题。 1. 方式一 Ubuntu安装JDK 系统版本:Ubuntu 15.04 x64 JDK版本:jdk-8u60-linux-x64 步骤详解 1. 查看系统位数,输入以下命令即可 getconf LONGBIT 2. 下载对应的JDK文件,我这里下载的是jdk-8u60-linux-64.tar.gz 3. 创建目录作为JDK的安装目录,这里选择安装位置为:/usr/java/ sudo mkdir /usr/java 4. 解压文件带/usr/java/目录下,文件下载的位置是在download目录下的 cd do...

  • Welcome to Hexo: This is your very first post."