Java 查漏补缺之 class

Java 程序在运行时,Java 运行时系统一直对所有的对象进行所谓的运行时类型标识。Class 类封装一个对象和接口运行时的状态,当装载类时,Class 类型的对象自动创建。 Class 没有公共构造方法。Class 对象是在加载类时由 Java 虚拟机以及通过调用类加载器中的 defineClass 方法自动构造的,因此不能显式地声明一个 Class 对象。 虚拟机为每种类型管理一个独一无二的 Class 对象。也就是说,每个类(型)都有一个 Class 对象。运行程序时,Java 虚拟机 (JVM) 首先检查是否所要加载的类对应的 Class Read more ...

2017-07-17 java , linux , class , reflection

Docker 入门

Docker 是一个能够把开发环境的应用程序自动部署到容器的开源引擎。该引擎的目标是提供一个轻量、快速的环境,能够运行开发者的程序,并方便高效地将程序从开发者的笔记本部署到测试环境,然后再部署到生产环境。 Docker 是一个开源的应用容器引擎,基于 Go 语言 并遵从 Apache2.0 协议开源。 Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。 容器是完全使用沙箱机制,相互之间不会有任何接口,更重要的是容器性能开销极低。 Docker 使用客户端 - Read more ...

2017-07-16 docker , linux , 容器 , 虚拟化

Google Guava 库学习笔记

Guava 是 Google 开源的 Java 核心类库,包含了 Java 开发中众多的核心功能,其中最著名最好用的也就是合集和缓存相关的工具了。 Guava 有很多学习材料,比如官方 Wiki https://github.com/google/guava/wiki 源码包的简单说明:   com.google.common.annotations:普通注解类型。   com.google.common.base:基本工具类库和接口。   com.google.common.cache:缓存工具包,非常简单易用且功能强大的 JVM 内缓 Read more ...

2017-07-13 google , guava , java , java-lib , lib , utils

Spring MVC 处理文件上传

Spring MVC 处理文件上传 添加Maven依赖 <dependency> <groupId>commons-io</groupId> <artifactId>commons-io</artifactId> <version>2.4</version> </dependency> <dependency> <groupId>commons-fileupload</groupId> &l Read more ...

2017-07-11 SpringMVC , Java , Web , File

Maven 插件学习之:Versions maven plugin 版本管理插件

Versions Plugin 该插件用于需要管理项目 用来设置版本号 mvn versions:set -DnewVersion=1.0.1 如果需要回滚 mvn versions:revert 确认则使用 mvn versions:commit reference http://www.mojohaus.org/versions-maven-plugin/index.html Read more ...

2017-07-09 maven , versions , maven-plugin

每天学习一个命令:使用 nethogs 查看每个进程流量

在 Linux 上查看系统流量有很多命令,平时一直使用 iftop 来查看单块网卡或者系统整体的流量,iftop 可以查看 TCP 链接的流量情况,分析出流量连往的 IP 地址。但是 iftop 无法做到查看系统中单个进程的网络流量情况。所以 Google 一下之后发现了 nethogs 。 nethogs 自己的介绍 NetHogs is a small ‘net top’ tool. Instead of breaking the traffic down per protocol or per subnet, like most such Read more ...

2017-07-09 linux , nethogs , network , command

使用 supervisor 管理进程

Supervisor (http://supervisord.org) 是一个进程管理工具,可以很方便的用来启动、重启、关闭,监控进程。更多的介绍可以参考官网。Supervisor 设计的目的只要是为了: 提高便捷性;通常为每一个进程编写 rc.d 脚本是不方便的,rc.d 脚本是管理,初始化,自启动进程的工具,但是编写这些脚本非常困难,并且也难以维护。另外,rc.d 脚本在进程崩溃之后也不会自动重启,而且很多应用在崩溃之后也不会自动重启,这就可能导致程序在崩溃后进程丢失。Supervisord 将管理的程序作为子进程启动,并且可以配置在崩溃后自 Read more ...


MySQL 数据类型

了解并熟悉 MySQL 中的数据类型,对建表和数据库优化都非常重要。 MySQL 实现了 SQL 定义的类型,也相应的增加了 tiny, small, big 的类型。 MySQL 的数据类型主要分成三个部分: Numeric Type 数值型 Date and Time Type 日期和时间 String Type 字符型 更多的内容可以在官网 查到。 整型 MySQL 数据类型 大小 范围(有符号) TINYINT(m) Read more ...

2017-07-07 linux , mysql , sql

Java 查漏补缺之枚举

当创建 enum 时,编译器会自动创建一个继承自 java.lang.Enum 的类。 ordinal 方法 ordinal() 方法会返回一个 int 值,是每个 enum 实例声明时的次序,从 0 开始。枚举可以使用 == 来比较,编译器会自动提供 equals() 和 hashCode() 方法。 Enum 类实现了 Comparable 接口,具有 compareTo() 方法,同时也实现了 Serializable 接口。 values 方法 values() 方法是由编译器添加的 static 方法。 继承 enum 都继承自 java Read more ...

2017-07-02 java , enum , linux

Java 查漏补缺之并发编程 ExecutorService

Java 实现多线程,继承 Thread 类,另一种就是实现 Runnable 接口。实际 Thread 类源码也是实现了 Runnable,使用继承 Thread 方式创建多线程,最大的局限就是不能多继承,随意推荐实现 Runnable 。 Executor Java 5 开始, Java 并发 API 提供了一套执行器框架 Executor Framework,围绕 Executor 接口和它的子接口 ExecutorService ,以及实现这两个接口的 ThreadPoolExecutor 类展开。这套机制将任务创建和执行分离。执行器通过创建所 Read more ...


最近文章

  • 我购买了 Sony WH-1000XM6 我的第一代 [[Sony WH-1000XM]] 终于在陪伴了我将近七年之后光荣退役了——准确地说,是左耳彻底不出声了。耳罩虽然还算完整,充电也正常,就是左边悄无声息地沉默了。单边失声的降噪耳机拿来当装饰品实在是太可惜,就这样,我的 XM1 结束了它漫长的使命。
  • 花了一个多小时认真听李录在哥大的演讲,对价值投资新的理解 昨天花了一个多小时,认真把李录在 2006 年哥伦比亚大学商学院的演讲从头听到尾。说实话,最开始点开这个视频的时候,我以为只是一节普通的投资课,听完之后发现远不止于此——李录几乎是把自己二十多年的思考框架,通过两个亲身经历的真实案例,完整地摊开在你面前。那种感觉不像是在听一堂课,更像是在听一个老朋友坦诚地聊他是怎么看待这个世界、怎么做决策的。
  • screen.garden:让 Obsidian 拥有 Google Docs 般的实时协作体验 之前我介绍过 Fast Note Sync,这是一款开源的 Obsidian 笔记同步方案,可以实现多设备之间的笔记同步和实时协作。Fast Note Sync 的优势在于完全开源、数据自主可控,但它有一个门槛——你需要自己搭建和维护服务器。对于有技术背景并且享受折腾的朋友来说这不是问题,但如果你不想操心服务器的事情,或者团队里有非技术背景的成员,那么一个开箱即用的托管服务可能是更好的选择。这就是我今天要介绍的 screen.garden,一个为 Obsidian 设计的付费实时协作服务。
  • Clawdbot 深度调研:打造完全属于自己的全平台 AI 助手 最近在折腾各种 AI 工具的时候,发现了一个有意思的现象:市面上大部分 AI 助手要么被牢牢绑定在某个特定平台上(比如只能在 Discord 里用的机器人),要么就是完全依赖某家公司的 SaaS 服务,你的对话数据都在别人的服务器上。作为一个对隐私比较在意的人,我一直在想,能不能有一个完全由自己掌控、可以在所有常用聊天软件里使用的 AI 助手呢?直到我在 GitHub 上发现了 [[Clawdbot]] 这个项目,才发现原来真的有人在认真解决这个问题。
  • 推荐我使用的 Agent Skills 随着 AI 编程助手的快速发展,[[Claude Code]]、[[Codex]]、[[Gemini CLI]] 等工具已经成为开发者日常工作中不可或缺的伙伴。然而,这些工具的默认功能往往只是冰山一角。通过安装和配置 Agent Skills,我们可以大幅扩展这些 AI 助手的能力,让它们更加智能、更加专业。