沧海一粟

天下事有难易乎?为之,则难者亦易矣;不为,则易者亦难矣。

0%

最近有一个需求,需要测试一下新数据库(mysql优化版)某个表的写入速度和查询速度,需要从我们的测试环境数据库查数据,插入到新的测试环境的新数据库。
本地连不上测试的数据库
有很多应用服务器,但是所有的服务器不能连外网,只能访问公司内网。
测试环境的应用可以连测试的数据库
想写个python脚本,但是服务器上python是2.7的,而且很多包没有。
想了想,应用服务器部署了java程序,java的包都有,想写一个java脚本来测试。(没错是java脚本)

测试环境数据库 db_test_old 192.168.1.10
新测试环境新数据库 db_test_new 192.168.2.11
测试环境应用 test-java 192.168.3.12

在idea里写完脚本,运行没问题,然后在 terminal 运行,被啪啪的打脸

阅读全文 »

google guava-cache

redis做缓存很快,但是还有网络IO,在并发量大要求耗时低的情况下还是不满足需求,所以想试试本地缓存。

发现guava缓存不错,想试试

在本地demo测试的时候发现更新缓存时有毛刺出现

阅读全文 »

vim有三种模式,一般模式、编辑模式、命令模式。
一般模式下只能 查看文件。 (输入 ESC 可以进入一般模式。)
编辑模式下可以对文件进行 新增、修改、删除。 (输入 i 可以进入编辑模式。进入后左下角可以看到 INSERT 标识)
命令模式下可以对文件进行 保存、退出 等操作。 (输入 ESC + : 可以进入命令模式。)

输入ESC+:进入命令模式后,输入q!可以退出文件并且不保存修改。
输入ESC+:进入命令模式后,输入qw可以退出文件并且保存修改。

阅读全文 »

(1) vs-code 设置语言

打开命令面板 ,输入 configure display language,设置语言为 zh-cn

备注:打开命令面板快捷键 mac Shift + Command + P Windows Ctrl + Shift + p

(2) vs-code 设置背景豆沙绿

修改配置文件 ~/Library/Application Support/Code/User/settings.json
"editor.background" 设置成 "#C7EDCC",具体如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
{
"workbench.colorTheme": "Default Light+",
"workbench.colorCustomizations": {
"editor.background": "#C7EDCC"
//设置用户选中代码段的颜色
//"editor.selectionBackground": "#2f00ff",
//搜索匹配的背景色
//"editor.findMatchBackground": "#ff0000",
//"editor.findMatchHighlightBackground": "#ff00ff",
//"editor.findRangeHighlightBackground": "#ff9900"

},
"editor.fontSize": 16,
"window.openFoldersInNewWindow": "off",
"window.openWithoutArgumentsInNewWindow": "on",
"editor.largeFileOptimizations": false,
"editor.suggestSelection": "first",
"vsintellicode.modify.editor.suggestSelection": "automaticallyOverrodeDefaultValue",
"java.configuration.checkProjectSettingsExclusions": false,
"extensions.autoUpdate": false,
"window.zoomLevel": 0,
"update.mode": "none"
}
阅读全文 »

最近测试环境总是莫名的出问题,然后部署服务的容器里除了服务打印的日志,没有其它信息,想看看是什么原因导致服务很卡,是不是有哪块代码占用内存高。
代码执行缓慢、OutOfMemoryError,内存不足、内存泄露、线程死锁、锁争用(Lock Contention)、Java进程消耗CPU过高 都可以使用JDK的命令行工具排查。


(1) JDK的命令行工具

jps、jstat、jinfo、jmap、jhat、jstack、hprof
jps : 虚拟机进程状况工具
jstat : 虚拟机统计信息监视工具
jinfo : Java 配置信息工具
jmap : Java 内存映像工具
jhat : 虚拟机堆转储快照分析工具
jstack : Java 堆栈跟踪工具

jps将打印所有正在运行的 Java 进程。
jstat允许用户查看目标 Java 进程的类加载、即时编译以及垃圾回收相关的信息。它常用于检测垃圾回收问题以及内存泄漏问题。
jmap允许用户统计目标 Java 进程的堆中存放的 Java 对象,并将它们导出成二进制文件。
jinfo将打印目标 Java 进程的配置参数,并能够改动其中 manageabe 的参数。
jstack将打印目标 Java 进程中各个线程的栈轨迹、线程状态、锁状况等信息。它还将自动检测死锁。
jcmd则是一把瑞士军刀,可以用来实现前面除了jstat之外所有命令的功能。

Java虚拟机的监控及诊断工具-GUI

JConsole : Java 监视与管理控制台
VisualVM : 多合一故障处理工具
eclipse MAT
JMC
JITWatch


(2) 虚拟机进程状况工具 jps (JVM Process Status Tool)

jps主要用来输出JVM中运行的进程状态信息。
jps命令使用Java启动器来查找传递给main方法的类名和参数。

1
2
3
4
5
6
7
[wkq@VM_77_25_centos ~]$ jps -help
usage: jps [-help]
jps [-q] [-mlvV] [<hostid>]

Definitions:
<hostid>: <hostname>[:<port>]
[wkq@VM_77_25_centos ~]$

(2.1) jps命令

jps命令用于输出JVM中运行的进程状态信息。可以获取到进程的pid、全限定名、传入main方法的参数、传入JVM的参数 等。

语法格式

1
jps [ options ] [ hostid ]

如果不指定hostid就默认为当前主机或服务器。

详细信息见 man jps

(2.1.1) jps 不加参数

在本地主机上搜索检测到的JVM。

1
2
3
4
5
[wkq@VM_77_25_centos ~]$ jps
14916 Jps
13050 Elasticsearch
[wkq@VM_77_25_centos ~]$
[wkq@VM_77_25_centos ~]$
阅读全文 »

其实,很多东西都是经历过,遇到问题,解决了,然后才知道。大学时候学过设计模式,但是没有实践过,很快就忘了。后来开发的时候遇到一些问题,解决了,然后感觉像哪个设计模式,回过头去看设计模式,感觉挺有用的。

学完设计模式以后,建议用简单、高效、易维护的态度去设计开发。

(1) 什么是设计模式

软件设计模式(Design pattern),又称设计模式,是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。 使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性、程序的重用性。

(2) 设计模式的分类

创建型模式:对象实例化的模式,创建型模式用于解耦对象的实例化过程。

结构型模式:把类或对象结合在一起形成一个更大的结构。

行为型模式:类和对象如何交互,及划分责任和算法。

阅读全文 »

在很长的一段时间里,使用的是多域名,主要有 weikeqin.cn weikeqin.com,但是两个域名解析到的是同一个博客,想把 weikeqin.cn 的流量全部转到 weikeqin.com,因为有些时候 .cn 不如 .com 域名,在某个特殊的时候感觉特别明显。然后就有了这篇文章。
在具体更换域名前的测试中,发现github.com还是比coding.net好用。

(1) 博客域名更换

域名的重定向的方法有 1.域名转发 2.301重定向 3.JS跳转
方法一,域名注册商支持域名转发功能才行!国内的绝大部分域名注册商不支持。
方法二,是Web 服务器给访问老域名的请求返回一个 301 或者 302,然后跳转到新域名上。 如果转发前的域名和转发后的域名访问的都是中国大陆的服务器而且已经备案,可以直接通过域名解析配置 显性URL 301重定向。 由于使用的是 github.com coding.net 的page服务,解析到的不是中国大陆的服务器,这个方法也不可行。
方法三,使用js跳转。具体方法如下。

(1.1) index.html

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<!DOCTYPE html>
<html>

<head>
<meta charset="UTF-8">
<title>新域名 https://weikeqin.com</title>
</head>

<body>
<p> 跳转中,访问新域名站点 <a href="https://weikeqin.com" target="_blank"> https://weikeqin.com </a> </p>
</body>
<script type="text/javascript">console.log("index.html")</script>
<script type="text/javascript">window.location.href = "https://weikeqin.com";</script>

</html>
阅读全文 »

GitHub上搜索代码时,是怎么样操作的呢?是不是也是像普通人一样,直接在搜索框里输入要检索的内容,然后不断在列表里翻页找自己需要的内容?或者是简单筛选下,过滤一下。再或者改变一下列表的排序方式。这就是「全部」了吗?

一般的系统检索功能,都会有一个「高级搜索」的功能。需要在另外的界面里展开,进行二次搜索之类的。 GitHub 有没有类似的呢?

答案是「肯定的」。做为一个为万千工程师提供服务的网站,不仅要有,而且还要技术范儿。

(1) github高级搜索

高级搜索时,特殊字符会进行转码
%20 是 空格
%3A 是 :
%3E 是 >

(1.1) 明确搜索仓库标题、仓库描述、README

GitHub 提供了便捷的搜索方式,可以限定只搜索仓库的标题、或者描述、README等。

以Spring Cloud 为例,一般一个仓库,大概是这样的

红色箭头指的两个地方,分别是仓库的名称和描述。咱们可以直接限定关键字只查特定的地方。

比如只想查找仓库名称包含 spring cloud 的仓库,可以使用 in:name 关键词
https://github.com/search?utf8=%E2%9C%93&q=in%3Aname+spring+cloud&type=

如果想查找描述的内容,可以使用 in:descripton 关键词
https://github.com/search?q=in%3Adescripton+spring+cloud
https://github.com/search?utf8=%E2%9C%93&q=in%3Adescripton+spring+cloud&type=

阅读全文 »