Mr.Kail's Blog

  • 标签

  • 分类

  • 归档

  • Docs

Shell 获取命令行参数

发表于 2017-02-20 | 更新于 2018-06-16 | 分类于 Linux | 评论数:

前一段时间使用 Server 端 Git Hooks 的时候,需要获取 Git 提交的信息,这里对如何获取 Git 传递的参数 进行简单记录总结。

git 通过传递参数 或者 标准输入流的形式传递提交的信息。

阅读全文 »

JMX 远程监控 与 MBean

发表于 2017-02-19 | 更新于 2018-10-07 | 分类于 Java | 评论数:

JMX(Java Management Extensions) 是 Java管理扩展,MBean(Managed Beans) 是 被管理的Beans。

一个MBean是一个被管理的Java对象,有点类似于JavaBean,一个设备、一个应用或者任何资源都可以被表示为MBean,MBean会对外暴露一个接口,这个接口可以读取或者写入一些对象中的属性。

阅读全文 »

JDK7 WatchService 监控文件变化

发表于 2017-02-18 | 更新于 2018-06-16 | 分类于 Java | 评论数:

JDK7提供了一系列的API用来监控文件目录的变化,该API提供了一种监视机制,可以针对事件(如创建、修改和删除)监视特定文件或目录的状态。

但是该API并不保证监视事件是采用推送模型,大部分情况下会使用轮询机制。监视服务也依赖于系统,所以无法利用这种服务构建真正可移植的应用。

因为 WatchService 本身并不支持递归 Watch,Watch一个文件夹只能Watch一层,子文件夹里面变动并不能Watch到,所有这里使用 FileVisitor 遍历所有目录注册 Watch。

文本在Mac下测试,如果监控/根目录的话(包含可访问的所有子目录),遍历完成大概花了5分钟左右,因为是采用轮训的方式,监控效率并不高,创建一个文件半天看不到效果。

阅读全文 »

Java JPDA 远程调试

发表于 2017-02-17 | 更新于 2018-06-16 | 分类于 Java | 评论数:

代码调试最简单的办法就是输出日志的方式,但是如果代码发布在远程机器上,通过输出日志的方式可能不太高效,需要频繁的发布代码。本文会通过简单的配置实现远程代码断点调试。

JPDA(Java Platform Debugger Architecture)是 Java 平台调试体系结构的缩写,通过 JPDA 提供的 API,开发人员可以方便灵活的搭建 Java 调试应用程序。

阅读全文 »

Mac 单用户模式(Single User Mode)获得root权限

发表于 2017-02-16 | 更新于 2018-06-16 | 评论数:

最近在用 CleanMyMac 的时候把一些系统文件给删掉了,主要还是用 Windows 上的软件管理工具用习惯了,卸载软件有了洁癖。

CleanMyMac 是收费,我就只通过它找到软件关联的文件,不小心把 /etc/pam.d/ 文件夹给删了(没真正删除,放进回收站了),结果系统登陆不进去,提示密码输入错误,这里记录了恢复的过程。

阅读全文 »

Spring Schema 扩展

发表于 2017-02-11 | 更新于 2018-06-16 | 分类于 Spring | 评论数:

Spring提供了可扩展Schema的支持,一般情况下,扩展Spring标签的意义并不大,但是对第三方工具来说,开发自己的标签供开发人员使用还是很有必要的。

首先就是有了语义,再者配置起来也相对方便,会减少一定的配置项。

常见的 Spring 的事物管理(tx:)、AOP(aop:),还有淘宝的 Dubbo(dubbo:) 都有自己的标签库。

阅读全文 »

使用 MySQL Connector/MXJ 在 Java 中嵌入 MySQL 进行测试

发表于 2017-02-05 | 更新于 2018-08-14 | 分类于 MySQL | 评论数:

MySQL Connector/MXJ 是一个可以通过 Java API 启动或者关闭嵌入式MySQL的工具。
可以通过 MySQL JDBC driver 连接,通过 JDBC url 或者 使用MysqldResource编程的方式 控制MySQL 服务。
如果需要测试SQL对MySQL语法或者特性依赖性比较强,可以尝试使用该方式进行测试,并不建议使用在生产环境中。

阅读全文 »

apache httpd ab

发表于 2017-01-15 | 更新于 2018-08-14 | 分类于 Tools | 评论数:

ab 是 Apache HTTP 服务器性能基准工具(Apache HTTP server benchmarking tool),可以进行简单的压力测试。

阅读全文 »

JDK7 遍历文件的API

发表于 2017-01-07 | 更新于 2018-06-16 | 分类于 Java | 评论数:

JDK7 遍历文件系统,需要通过递归的方式,JDK7+ 直接提供了遍历文件的API。

1
2
3
public static Path walkFileTree(Path start, FileVisitor<? super Path> visitor){}

public static Path walkFileTree(Path start, Set<FileVisitOption> options, int maxDepth, FileVisitor<? super Path> visitor){}

阅读全文 »

ZooKeeper ACL 权限控制

发表于 2017-01-04 | 更新于 2018-06-16 | 评论数:

ZooKeeper ACL 的权限控制信息由三部分组成:scheme:id:permission, 分别是 权限模式、权限对象 和 权限。

阅读全文 »

阻塞/非阻塞、同步/异步、并发/并行 概念

发表于 2017-01-01 | 更新于 2018-06-16 | 评论数:
  • 阻塞/非阻塞 :关键词 循环、检查,用于描述 程序在等待调用结果(消息,返回值)时的状态
  • 同步/异步 :关键词 通知,用于描述 程序在调用之后是否为立即响应,然后接收任务完成后的通知
  • 并发/并行 :关键词时间、时刻,用于描述 多个程序是否会在同一时刻执行
阅读全文 »

Java 方法执行超时时间

发表于 2016-12-20 | 更新于 2018-06-16 | 分类于 Java | 评论数:
执行时间超时
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
  
import java.util.concurrent.*;

public class MethodTimeOutTest {

public static void main(String[] args) throws ExecutionException, InterruptedException {

ExecutorService executorService = Executors.newSingleThreadExecutor();

Future<String> future = executorService.submit(new Callable<String>() {
@Override
public String call() throws Exception {
System.out.println("开始执行");
TimeUnit.SECONDS.sleep(2);
return "执行完成";
}
});

try {
String result = future.get(1, TimeUnit.SECONDS); // 阻塞直到执行完成,设置超时间
System.out.println(result);
} catch (TimeoutException e) {
System.out.println("超时了");
} finally {
executorService.shutdown();
System.out.println("over !!!!! ");
}

}
}

输出

开始执行
超时了
over !!!!! 
在超时时间内完成执行

超时时间设置为3秒

1
2
3
……
String result = future.get(3, TimeUnit.SECONDS); // 阻塞直到执行完成,设置超时间
……

输出

开始执行
执行完成
over !!!!! 

Redis Pub/Sub

发表于 2016-12-18 | 更新于 2018-09-02 | 分类于 Redis | 评论数:

 Redis的 发布/订阅 功能可用于构建即时通信应用,比如网络聊天室、实时广播、实时提醒等。

阅读全文 »

flowchart.js 绘制流程图

发表于 2016-12-17 | 更新于 2018-06-16 | 评论数:

通过文本绘制简单的SVG流程图

Draws simple SVG flow chart diagrams from textual representation of the diagram

阅读全文 »

Redis 安装部署

发表于 2016-12-16 | 更新于 2018-09-02 | 分类于 Redis | 评论数:

快速安装

下面是最基本的安装步骤,便于快速上手操作,操作环境在为 windows bash

1
2
3
4
5
wget http://download.redis.io/releases/redis-3.2.6.tar.gz
tar zxvf redis-3.2.6.tar.gz
cd redis-3.2.6
make
# cd src && make install
阅读全文 »

Java SPI

发表于 2016-12-13 | 更新于 2018-06-16 | 分类于 Java | 评论数:

SPI的全名为Service Provider Interface,是针对厂商或者插件的,在java.util.ServiceLoader的文档里有比较详细的介绍。

系统里抽象的各个模块,往往有很多不同的实现方案,比如jdbc模块的方案等。为了实现在模块装配的时候,能不在程序里动态指明,这就需要一种服务发现机制。

java spi就是提供这样的一个机制:为某个接口寻找服务实现的机制。

阅读全文 »

curl 命令常见用法

发表于 2016-12-07 | 更新于 2018-06-16 | 分类于 Linux | 评论数:

curl命令是一个利用URL规则在命令行下工作的文件传输工具。它支持文件的上传和下载,所以是综合传输工具,但按传统,习惯称curl为下载工具。作为一款强力工具,curl支持包括HTTP、HTTPS、ftp等众多协议,还支持POST、cookies、认证、从指定偏移处下载部分文件、用户代理字符串、限速、文件大小、进度条等特征。做网页处理流程和数据检索自动化,curl可以祝一臂之力。

来自: http://man.linuxde.net/curl
阅读全文 »

base64 和 jq 命令

发表于 2016-12-06 | 更新于 2018-06-16 | 分类于 Linux | 评论数:

base64 一般会默认安装,可以进行 base64 编码和解码。
jq 可以对json进行解析、选择、格式化、高亮等,需要通过 apt-get install jq 进行安装。

阅读全文 »

dpkg 和 apt-get

发表于 2016-12-04 | 更新于 2018-06-16 | 分类于 Linux | 评论数:

dpkg 是一种的软件包管理工具,apt-get 是 dpkg 的一个前端程序,apt-get 最主要的功能是解决软件包的依赖性问题。

阅读全文 »

源码软件包编译安装方式

发表于 2016-12-01 | 更新于 2018-06-16 | 分类于 Linux | 评论数:

通常编译可以获得该软件的最新版本,但是源码安装通常安装比较麻烦,特别是解决依赖经常会出现问题。

阅读全文 »
1234
杨凯彬

杨凯彬

菜鸟会飞

73 日志
11 分类
52 标签
© 2015 – 2020 杨凯彬
由 Hexo 强力驱动
|
主题 – NexT.Mist