Java enum 相等比较 == or equal

能否使用 == 来针对 enum 来比较? 答案是:YES, 枚举谨慎的实例化管理允许使用 == 来进行比较,JLS 8.9 Enums 中有Java 语言的规范定义: 枚举类型除了定义时的枚举常量外没有其他实例 如果显示的实例化枚举类型,会产生编译时异常。final clone 方法保证了 Enum 变量不会被 clone, 序列化的机制也保证了重复的实例在反序列化时不会创建额外的枚举变量。通过反射实例化 Enum 类型是被禁止的。所有这四种方式确保了 enum 类型不存在额外的实例,除了定义时的常量 因为每一个枚举常量只有一个实 Read more ...

2017-08-10 Java , enum

在 Ubuntu 下安装并使用 Cinnamon

Ubuntu 16.04 LTS 或者 Ubuntu 17.04 下可以通过 PPA 来安装 Cinnamon,感谢维护者 命令如下: sudo add-apt-repository ppa:embrosyn/cinnamon sudo apt update && sudo apt install cinnamon 当安装完成之后,Log out 或者 重启,在登录界面选择 Cinnamon 来使用。 我在使用一段时间之后才发现没有安装 Nemo 的插件,以至于右击都没有压缩的选项,通过一下步骤安装 Nemo 以及相关套件。 Read more ...

2017-08-07 Ubuntu , Linux , Cinnamon , LinuxMint

给常用的 git 命令添加 alias 提升效率

之前有写过 Git alias 的文章, 不过已经过去了很多时间,现在对 Git 命令越来越熟悉就希望更快的提高输入效率,也越来越感受到 alias 的重要性,不管是直接在 bash 中的 alias 还是 Git 的 alias。所以准备找一些合适的 alias 添加到自己的 gitconfig 文件中长期使用。 添加 alias 使用命令的方式添加 git config --global alias.co checkout git config --global alias.ci commit git config --global alias Read more ...

2017-08-04 git , alias , linux , oh-my-zsh , zsh , bash

每天学习一个命令:使用 split 分割文件

split 命令可以用来分割文件,支持按文本分割,也支持二进制分割。常见的格式 split [OPTION]... [FILE [PREFIX]] 输出的结果为多个文件 PREFIXaa,PREFIXab … 默认的大小是 1000 行,默认的 PREFIX 是 x。 如果没有 FILE 文件,或者当 FILE 参数是 - 时,会从标准输入读取。 举例 按文件大小 -C 指定分割文件大小: split -C 10M large_file.mp4 small 将大文件 large_file.mp4 按照 10M 大小进行分割,并指定分割 Read more ...

2017-08-04 split , command , linux

Python logging 模块使用

日志是每一个编程语言必备的模块,借助日志不仅可以监控在线服务的状态,也可以在出问题之后迅速的定位问题。 基本使用 # -*- coding: utf-8 -*- import logging import sys # 获取 logger 实例,如果参数为空则返回 root logger # 最基本的入口,该方法参数可以为空,默认的 logger 名称是 root,如果在同一个程序中一直都使用同名的 logger,其实会拿到同一个实例,使用这个技巧就可以跨模块调用同样的 logger 来记录日志 logger = logging.getLogger Read more ...

2017-08-03 python , logging , logger

使用 setuptools 创建并发布 python 包

If you write something, and you want to share with the world. And let others use through pip install, you can upload your package to pypi. Create project layout Put your code in some fold like douban. Write your own setup.py to give basic info about this lib or package. And you Read more ...

2017-08-02 python , linux , packages , module

Redis 读书笔记

这篇文章主要介绍 Redis 的持久化机制,主从复制等等 持久化机制 通常情况下 Redis 会将数据存储于内存中,但 Redis 也支持持久化。Redis 支持两种持久化方式,RDB 方式 和 AOF 方式。RDB 通过快照方式,将内存数据写入磁盘。而 AOF 方式则是类似 MySQL 日志方式,记录每次更新的日志。前者性能高,但是可能引起一定的数据丢失,后者相反。 RDB 方式 RDB 通过快照 snapshotting 完成,也是 Redis 默认的持久化方式,当符合一定条件时 Redis 会自动将内存中的所有数据以快照方式保存一份副本到硬 Read more ...

2017-08-01 redis , database , database , key-value , db , reading

使用 openpyxl python lib 来读写 Excel

Openpyxl 是一个用来处理 Excel 格式文件的 Python 库,它能用来处理 Excel 2007 及以上版本的 excel 文件,也就是 .xlsx/.xlsm/.xltx/.xltm 格式的表格文件。 installation 使用 pip 安装 pip install openpyxl usage 使用方法包括读和写,参考如下例子: #!/usr/bin/env python # -*- coding: utf-8 -*- from openpyxl import Workbook, load_workbook cl Read more ...

2017-07-31 python , excel , openpyxl

免费发送邮件的服务收集整理

这一篇文章整理了一下目前互联网上免费,并且能够稳定发送邮件的服务,能够满足个人使用需求,能够通过 API 调用直接发送邮件的服务。 个人的一些要求有这些: 有一些免费的额度可以供测试及小规模的使用 域名不需要备案直接配置 DNS 即可使用 Gmail SMTP 对于小型的应用,最开始的时候可以使用 Gmail SMTP 来发送邮件,免费,并且送达率由 Google 来保证,基本没有啥问题。 但是 Gmail SMTP 发送有数量限制: 对于免费的 Gmail 账号,每 24 小时限制 500 封邮件 对于 G Suite Read more ...

2017-07-30 email , collection , email-service , linux , smtp

raspberry pi 折腾

关于树莓派的装机,配置,系统安装,网络配置等等网上有太多的叫教程,就不在一一介绍。这里主要想要整理一下在折腾过程中遇到的几个问题。一些细节很琐碎,记录下来备忘。我安装的是 Raspberry Pi 官方的系统,也就是 Debian 的衍生系统,所以绝大多数下面的内容在其他 Debian/Ubuntu/Linux Mint 系统上都可以操作。很多内容我在 Mint 下也都已经实现过。 树莓派的型号 树莓派到今天已经发布了很多代了,当时买的比较早,稍微和新一代比较一下 安装风扇 一图胜过千言 安装完成之后 更改 raspberryp Read more ...

2017-07-29 raspberryPi , linux

最近文章

  • Syncthing 升级 2.0 后同步卡在 Preparing to Sync 的解决方法
  • Orca ADE 体验:为 AI 编码 Agent 而生的开发环境,用 worktree 让一群 Agent 并行干活 过去一年里软件的开发方式发生了一个我自己都没料到的转变。以前写代码是工程师对着编辑器敲,现在更多时候是同时开着好几个 [[Claude Code]]、[[Codex]] 之类的编码 Agent,让它们各自去完成一个任务,工程师只负责在中间调度、审阅、拍板。这种”我带一队 Agent 干活”的模式效率确实高,但很快就撞上了一堆现实的麻烦:几个 Agent 都在同一个仓库里改文件,分支互相污染;终端窗口开了一大排,切来切去分不清哪个是哪个;改完还得一个个去看 diff、跑测试、开 PR。工具还是那套为单人设计的 IDE,可我干活的方式早就不是单人了。
  • herdr 一个窗口调度多个 Coding Agent 什么是 Herdr
  • Claude Code 第三方 API 代理配置 Headroom 最近在给自己的 AI 编程工作流加入 [[Headroom]] 上下文压缩工具时,遇到了一个需要特别注意的配置问题。相信有不少人和我一样,为了降低成本或者改善访问体验,已经在 [[Claude Code]] 或 [[Codex]] 里配置了第三方 API 代理,比如一些第三方聚合平台或者自建的转发服务。这时候想再套上一层 Headroom 做 Token 压缩,就需要特别注意配置细节,不然两层代理会打架。
  • Headroom:让 AI Agent 少花冤枉钱的上下文压缩工具 最近一段时间我在深度使用 [[Claude Code]] 做开发工作,用得越多,账单就越触目惊心。一次稍微复杂一点的任务,比如让它读取几个文件、搜索一下代码、跑一下测试,轻轻松松就能烧掉超过 100K 的 Token。更让人无奈的是,这 100K 里面有相当大一部分是重复冗余的内容——工具调用的输出、日志、搜索结果,它们被原封不动地塞进上下文,再一次次地发给模型,而模型其实只需要其中很小一部分关键信息。