Java 查漏补缺之 Exception 和 RuntimeException

通常来讲 RuntimeException 是在编码过程中可以被避免的 Exception ,比如说 NullPointerException, ArrayIndexOutOfBoundException 等。如果每次都在调用前检查 null,就永远不会发生 NullPointerException,ArrayIndexOutOfBoundException 同理。RuntimeException 不会被编译器检查。 Java 中有两种类型异常,一种是 checked exceptions,一种是 un-checked exceptions。检查的异常 Read more ...

2018-12-24 java , exception

从零开始搭建 NAS: 硬件篇

自从年初注册了 PT 站 就发现原来的 QNAP TS453bmini 的硬盘就不堪重负,所以想要把下载和真正想要管理的数据安全的从硬件上隔离开,所以才有了这篇文章。 研究阶段 自行组装 NAS 相较于买成品 NAS 中间可能遇上许许多多坑,不过填坑的过程就是学习的过程,能学到很多硬件知识,并且通过对自己需求的合理规划能够组一台最合理的符合自己需求的机器。 下面就记录一下研究过程中新接触到的概念。 ITX 在看主板的时候不可避免的会看到这个 ITX,实际上 ITX 就是主板的一个大小,ITX 或者又称为 Mini-ITX 是一块 17 * 17cm Read more ...

2018-12-24 nas , linux , cpu , motherboard

每天学习一个命令:jq 命令行下处理 JSON

jq 是一个命令行下的 JSON 字符串处理工具,就像 sed 对于文本一样,jq 对应着 json 文件,jq 命令可以不同方式转换 JSON。jq 可以接受文本输入,默认情况下,jq 从 stdin 读取 JSON 流。通过和管道的组合可以非常方便的处理 JSON。 jq is a lightweight and flexible command-line JSON processor 使用实例 直接处理文件 js -I '.' input.json cat input.json | jq -I '.' jq 只能接受标准 JSO Read more ...

2018-12-21 jq , json , linux , command

日志数据脱敏方法研究

日志文件中的敏感信息比如密码,电话号码等等进行过滤处理。第一个想到的方法就是去 log4j 中自定义 Appender,在 Appender 中正则匹配敏感信息进行过滤。 log4j 日志框架在之前 的文章中也也说过,主要有三个组件,Logger,Appenders 和 Layout,要过滤日志内容解决方法也就是从这三个地方着手。 log 时手动处理 Logger 着手就是在打日志的时候就处理,从根源解决。最精确的处理就是在每个类敏感的字段上手动处理,在打印日志时,封装方法手动转换 String 。这种方法唯一的缺点就是对于一个大型成熟的系统,要修改 Read more ...

2018-12-20 log4j , log , desensitize , 日志 , 脱敏

log4j PatternLayout 输出模板

log4j 下的 PatternLayout 只是 Layout 的一种,用来格式化日志文件的输出。在 PatternLayout 中,配置一个样板字符串,通过该字符串来定义输出格式。 log4j 还提供了其他三种 Layout org.apache.log4j.HTMLLayout(以 HTML 表格形式布局) org.apache.log4j.SimpleLayout(包含日志信息的级别和信息字符串) org.apache.log4j.TTCCLayout(包含日志产生的时间、线程、类别等等信息) 这个类的目标是格式化 Logg Read more ...

2018-12-19 log4j , java , log

Unix 进程

Unix 内核在硬件之上,与硬件交互,系统文件读写,网络数据发送,内存分配,扬声器播放音频等等。程序不能直接访问内核,通信通过系统调用完成。 系统调用是内核和用户空间交互的桥梁,规定了程序和计算机硬件之间可以发生的交互。 Unix 的系统调用文档已经在系统中,输入 man man 查看。 进程是 Unix 系统基石,所有的代码都在进程中被执行。 进程标示 唯一进程标示 PID,PID 本身没有任何进程信息,只是一个数字。系统中每一个进程都有其父进程,PPID。多数情况下,特定进程的父进程就是调用他的进程。 文件描述符值用来跟踪打开的资源,已经关 Read more ...

2018-12-17 unix , linux , process

log4j appender

Appender 表示日志输出的地方,常见的有控制台,文件等等,log4j 自带了一些常用的 Appender。 日志中的 LEVEL 和 threshhold log4j 框架中有两个概念 logger 和 appender。如果 logger 的最低 level 设置为 warn,这意味着任何日志 level 低于 warn 的日志都会被忽略。 一旦一个消息被 logger 接收,这条消息会被发送给一个或者多个 appenders(to console,to file,to mail server, etc). 每一个 appender 都会定 Read more ...

2018-12-17 log , java , log4j , slf4j

重构读书笔记

重构第一步,构造可靠的测试环境。 What 任何可以立即查阅的东西,都故意不去记忆。 什么是重构 重构,对软件内部结构调整,在不改变外部可观察行为的前提下,提高其可理解性,减低修改成本。 重构难题 对于修改接口,能获取所有调用者,那么可以安心修改。如果无法修改全部调用者,如果是公开已经发布的接口,就需要同时维护新旧两个接口,直到所有用户将该变化做出反应。 How Duplicated Code 重复代码提炼。兄弟类,则推到 super class,如果是不完全相同的,则分解方法提炼统一的方法。 Long method 小函数准确的命 Read more ...

2018-12-16 java , refactor , coding , programming

JProfile 简单使用

在学习 ThreadLocal 的时候有人推荐了 JProfiler ,可以用来对 Java 内存泄露分析,JProfile 其实是一个 Java 的性能分析工具,不仅可以用来排查 OutOfMemoryError 的错误,对于查找系统瓶颈,查看 Java 堆信息等等都有很强大的功能支持。 搜索一番之后发现也有很多 Java Profiler 的工具,JDK 自带也有 Java VisualVM 这样的工具。 JProfiler JProfiler’s intuitive UI helps you resolve performance bottle Read more ...

2018-12-14 java , jprofiler , visualvm

英语搭配语字典整理

最近用 [[GoldenDict]] 查词非常频繁且非常有效的提高了阅读的效率,但是在日常有的时候听一些英语口语的广播节目的时候,经常会有一些短语搭配,而我们平时如果写作的话,其实短语较于单词更为重要,口语亦然。所以产生了一个念头,如果有一本英语搭配语字典就能够提高不少效率,没想到都不用去刻意搜索,就出来了好几个推荐。 Oxford Collocation Dictionary 牛津英语搭配语词典 The BBI dictionary of English word combinations BBI 英语搭配词典 Longman Coll Read more ...


最近文章

  • 多版本管理工具 mise 使用详解 我用了很多年的 asdf 作为管理各种语言版本的工具,但是最近一次更新,asdf 多了一些变化,我也写了一篇文章介绍怎么升级的。在文章下方有小伙伴(lonelyhentxi) 给我推荐了 mise 这样一款使用 Rust 编写的多版本管理工具 mise,我大致的看了一下 mise,觉得是一个非常不错的项目,在这里再次感谢。
  • AI 时代我们是否还需要个人知识库 这两天不管是在我的视频评论下方,还是在 X(Twitter)上,都有人提出了一个问题「AI 时代还是否需要个人知识库」,我觉得在回答这个问题之前,我们首先要回答两个问题,什么是「知识」?,而什么又是「个人知识库」?
  • OBS 配置多路推流 实现多平台同时直播 [[Open Broadcaster Software(OBS)]] 是一个非常强大的开源的,直播推流工具。但是默认情况下 OBS 只能配置推送一个直播流。但是现在支持直播的平台越来越多,如果直接将直播流推送给多个平台,那么可以通过本文介绍的方法,借助多平台推流插件来实现。
  • 将 Obsidian 配置成私人 AI 知识库 前两天介绍过腾讯推出的个人知识库工具 IMA.Copilot,但是熟悉我的人肯定知道我这几年了一直都是在使用 Obsidian 作为我个人的知识库的,在本地完全使用 Markdown 作为文档的存储格式,不依赖任何的外部工具,以及联网工具,只使用 Syncthing 作为同步。
  • 腾讯推出个人知识库产品 ima.copilot 前两天看到腾讯推出一个个人知识库产品 ima,融合了 DeepSeek,可以直接搜索知识库中的内容,还可以上传文档回答,所以今天就来体验一下这个新产品 ima。