Too many open files以及ulimit的用法

Linux Java

Too many open files是一个常见的错误,通常是由于系统配置或程序打开过多文件原因导致。这个问题常常又与ulimit相关。关于ulimit的用法有不少坑,本文将遇到的坑予以梳理。

base64屏幕传递文件法

Shell

问题

有些情况下,两个不连通的系统很难传递文件,或者流程很麻烦(比如我司,生产环境两个服务器传文件,必须让领导审批,有时候为了快速传递一个小文件,可能要个把小时的流程)。幸亏,在客户端可以同时ssh两台机器。下面介绍一种base64+终端字符复制的方式跨系统传文件。

fat jar与spring.schemas文件覆盖

Java Spring

问题

新搭建了一个Spring项目,在本地IDE启动测试没有问题,但通过maven-shade插件,将整个工程打包为一个fat jar放在服务器上运行,竟然报XML中的beans元素定义不存在:

cvc-elt.1: Cannot find the declaration of element 'beans'.

这种错误,之前出现过,经常是写错命名空间。但这一次本地IDE启动没有问题,说明是环境问题。而两者的差别主要在于maven-shade的打包方式。经排查原因整理如下。

Ubuntu开发机配置

Ubuntu Linux

拿到了一台新笔记本,决定将其定制为Linux环境的主力开发机,下面记录一下主要配置和安装。后续会持更新和补充。

Shell特殊参数\$@和\$*举例解析

Shell Linux

Shell 中若当前脚本只是作为一个包装器(wrapper),需要把所有位置参数继续传递给实际的脚本或函数。这时候,可以选择特殊参数完成:艾特符号$@ 和星号 $*,它们的基本含义是扩展为所有位置参数。多数情况下,使用起来都没什么区别,但不追究明白很容易出现bug,下面举例说明。

man用法总结

Linux Shell

遇到不熟悉的 Linux 命令,除了上网搜外,最好是查看系统自带的帮助文档。一来,这是第一手资料,肯定是最准确的;二来,相对网上东一榔头西一棒子的解释,更具有系统性。

虽然 man 命令非常简单,但也会碰到一些疑惑,下面我总结了一下,让以后使用 man 更游刃有余。

优雅关闭Java 应用

Java 线程池

Java 开发的后台应用,通常是保持7x24小时运行的,但遇到版本变更或其他原因,需要停止应用,如果粗暴的停止,可能导致交易损失。如何避免停机带来的交易损失呢?下面是我最近的项目的实践经验总结。

总的思想是:从最外层依次向内层,逐层关闭服务

下一页