Hello 2020

真的好久没有写博客了,估计现在写博客的可能都是老古董了吧(笑)

但发现不通过这种方式促进,很难保证自己进行有效学习,好吧,接下来的一个月,不管多忙,我都要保持学习。危机四伏,要充满斗志!

学习计划:

  • 容器化技术(Docker)相关内容;
  • 微服务(Dubbo,Spring Cloud)常见技术内容;
  • 深入研究常见框架(Spring)及其技术原理;

人生三重境界

宋代禅宗大师青原行思提出参禅的三重境界:参禅之初,看山是山,看水是水;禅有悟时,看山不是山,看水不是水;禅中彻悟,看山仍然山,看水仍然是水。

佛家讲究入世与出世,于尘世间理会佛理之真谛。人之一生,从垂髫小儿至垂垂老者,匆匆的人生旅途中,我们也经历着人生的三重境界。

人生第一重界:看山是山,看水是水。涉世之初,还怀着对这个世界的好奇与新鲜,对一切事物都用一种童真的眼光来看待,万事万物在我们的眼里都还原成本原,山就是山,水就是水,对许多事情懵懵懂懂,却固执地相信所见到就是最真实的,相信世界是按设定的规则不断运转,并对这些规则有种信徒般的崇拜,最终在现实里处处碰壁,从而对现实与世界产生了怀疑。

人生第二重界:看山不是山,看水不是是水。红尘之中有太多的诱惑,在虚伪的面具后隐藏着太多的潜规则,看到的并不一定是真实的,一切如雾里看花,似真似幻,似真还假,山不是山,水不是水,很容易地我们在现实里迷失了方向,随之而来的是迷惑、彷徨、痛苦与挣扎,有的人就此沉沦在迷失的世界里,我们开始用心地去体会这个世界,对一切都多了一份理性与现实的思考,山不再是单纯意文上的山,水也不是单纯意义的水了。

人生第三重界:看山是山,看水是水。这是一种洞察世事后的反璞归真,但不是每个人都能达到这一境界。人生的经历积累到一定程度,不断的反省,对世事、对自己的追求有了一个清晰的认识,认识到“世事一场大梦,人生几度秋凉”,知道自己追求的是什么,要放弃的是什么,这时,看山还是山,水还是水,只是这山这水,看在眼里,已有另一种内涵在内了。

Hello Docker

本文用来记录我的docker for mac之旅。

一、获取docker

https://docs.docker.com/docker-for-mac/install/

从以上链接可以获取到Mac版本docker的下载地址,安装好之后,Mac的菜单栏中将会出现docker图标。

二、Hello Docker

打开一个terminal,在其中输入

docker run hello-world

此时系统会拉取测试镜像。

但是我这边系统却报错了。提示如下:

docker: Error response from daemon: Get https://registry-1.docker.io/v2/library/hello-world/manifests/latest: unauthorized: incorrect username or password.
See ‘docker run –help’.

百思不得其解。后来却发现,docker登录的时候要使用docker id,而不要使用email即可。

重新登录可点击docker图标,也可在terminal下输入:

docker login

重新登录即可。

三、Hello Oracle

我们使用docker的主要目的就在于快速的构建所需要的基础环境,例如我现在需要一个Oracle环境,那我该如何搞呢,非常简单,我们首先需要pull一个Oracle的docker镜像。

docker pull wnameless/oracle-xe-11g

上面这个镜像提供了一个Express版本的Oracle。

详情:https://hub.daocloud.io/repos/e06fc13e-3adb-4a9f-b44a-86a55df02c5a

拉取完成之后,我们仅需要简单的执行:

docker run -d -p 1521:1521 –name oracle wnameless/oracle-xe-11g

我们的Oracle就在本地跑起来咯 ~

hostname: localhost
port: 1521
sid: xe
username: system
password: oracle

这个Oracle的相关信息如上所示。

但是,当我在macOS下面使用Navicat连接数据库时却报如下错误

ORA-21561: OID generation failed

一开始以为是docker镜像有问题,尝试了好几个镜像都一样的错误,后来Google了下,发觉这个问题都是跟主机名有关,尝试修改镜像里的主机名,发现还是一样的错误,后来想到,会不会是主机的问题?于是执行:

hostname

获取到macOS的主机名,之后将其配置到

/etc/hosts

中127.0.0.1 后,问题解决,嘿嘿。

进阶:

上面的操作做完以后,会发现数据并没有被持久化。所以我们更改下容器启动参数:

docker run -d -p 1521:1521 -v /opt/docker/oracle/data:/u01/app/oracle –name oracle wnameless/oracle-xe-11g

这样就可以把/opt/docker/oracle/data映射进docker的/u01/app/oracle中去。

记另外一则因编码引起的问题

续上文解决了编码的问题以后,最近又遇到了一则编码问题:在Windows操作系统下,将Tomcat做成服务,测试在catalina.bat文件中增加编码配置无效,于是只好改了操作系统的全局编码配置。

增加一环境变量,写入:JAVA_TOOL_OPTIONS, 变量值为:-Dfile.encoding=UTF-8 即可。

 

附:验证Java默认编码代码

//方法一:中文操作系统中打印GBK
System.out.println(System.getProperty(“file.encoding”));
//方法二:中文操作系统中打印GBK
System.out.println(Charset.defaultCharset());

记一则因编码造成的接口对接问题

某高校的短信接口对接,本地测试一切正常,部署到服务器却不正常,review代码发现含有如下代码:

public String getMD5(String str) {
    try {
        MessageDigest md = MessageDigest.getInstance("MD5");
        md.update(str.getBytes());
        return new BigInteger(1, md.digest()).toString(16);
    } catch (Exception e) {
        e.printStackTrace();
    }
    return "";
}

这个取md5的方法在含有中文时,因环境的编码问题会造成得到的MD5不一致,故需要将标红的部分更改为
md.update(str.getBytes("UTF-8"));

即传入编码所使用的字符集即可。

同时,这边另外一个短信接口,发送时要求使用POST提交,也同样遇到了编码问题,解决方法同样简单:
使用标红的部分对编码进行下强制指定,就好咯 :)
HttpClient httpClient = new HttpClient();
PostMethod method = new PostMethod(url);
method.getParams().setParameter(HttpMethodParams.HTTP_CONTENT_CHARSET, "UTF-8");

人生的三十五个好习惯(转载)

01. 不说”不可能”三个字.
02. 凡事第一反应:找方法,而不是找借口.
03. 遇到挫折对自己大声说:太棒了!
04. 不说消极的话,不落入消极情绪,一旦出现立即正面处理
05. 凡事先订立目标,并且尽量制作”梦想版”.
06. 凡事预先作计划,尽量将目标视觉化.
07. 工作时间.每一分,每一秒都做有利于生产的事情.
08. 随时用零碎的时间(如等人、排队等)做零碎的事情.
09. 守时.
10. 写下来,不要太依靠脑袋记忆.
11. 随时记录灵感.
12. 把重要的观念,方法写下来,并贴起来,以随时提示自己.
13. 走路比平时快30%,走路时脚尖稍用力推进,肢体语言健康有力,不懒散,萎靡.
14. 每天出门照镜子,给自己一个自信的微笑.
15. 每天自我反省一次.
16. 每天坚持一次运动.
17. 听心跳一分钟,在做重要事情前,疲劳时,心情烦躁时,紧张时.
18. 开会坐在前排.
19. 微笑.
20. 用心倾听,不打断对方说话.
21. 说话时声音有力.感觉自己声音似乎能产生有感染力的磁场.
22. 说话之前,先考虑一下对方的感受.
23. 每天有意识,真诚地赞美别人三次以上.
24. 及时写感谢卡,哪怕是用便笺写.
25. 不用训斥,指责的口吻跟别人说话.
26. 控制住不要让自己做出为自己辩护的第一反应.
27. 每天做一件”分外事”.
28. 不管任何方面,每天必须至少做一次”进步一点点”.
29. 每天提前15分钟上班,推迟30分钟下班.
30. 每天在下班前用5 分钟的时间做一天的整理工作.
31. 定期存钱.
32. 节俭.
33. 时常运用”头脑风暴”.
34. 恪守诚信,说到做到.
35. I am the best one!!!

记一则Linux病毒的处理

今天某项目经理反馈学校的某台服务器不停的向外发包,且CPU持续100%,远程登录后查看发现有一长度为10的随机字符串进程,kill掉,会重新生成另外长度为10的字符串进程。删除文件也会重复生成,非常痛苦。查阅crond相关日志,发现实际执行的内容为/lib/libudev.so ,以此为关键字进行查询,找到如下内容: 继续阅读“记一则Linux病毒的处理”