git原理图

Git初学者?刚从svn转过来?看看下面几张图,比大篇幅文章清楚多了

git  svn 

Docker配置文件

默认dockerd全局配置文件在/etc/docker/daemon.json,该文件默认不存在,创建就好了,常用内容:

1
2
3
4
5
6
7
8
{
"data-root": "/data/docker",
"log-driver":"json-file",
	"log-opts":{
		"max-size": "10m",
		"max-file": "3"
	}
}

设置docker主目录,docker运行产生的数据都保存在这里,如镜像、容器、日志、卷等,会占用较大空间,默认在/var/docker下,务必修改!!!

[阅读全文]
docker 

docker保存和加载镜像

背景:

有一些自定义的镜像,不想通过dockerfile创建,没有仓库或者不想上传到仓库中,可以使用保存和加载命令实现环境迁移

保存

1
2
docker save -o xxx.tar repo:tag # 注:不能写IMAGE ID
docker image save helloworld > helloworld.tar # 官方写法

加载:

1
2
docker load < xxx.tar # 或 docker load -i xxx.tar
docker image load -i helloworld.tar # 官方写法

使用scp传输文件和文件夹

服务器间传输文档,不用再传到Windows跳板机或SSH客户端机器,而是使用scp命令直接在服务器上操作。 比如要把A服务器的/home/root/xxx.zip传输到B服务器的/home/root/目录, 进入A服务器执行:scp /home/root/xxx.zip root@192.168.200.19:/home/root
添加-r参数可以传输文档夹:/home/root/eyas/ root@192.168.200.19:/home/root

[阅读全文]
linux  scp 

自定义资源监控

查看docker资源占用

1
docker stats --format='table {{.Name}}\t{{.CPUPerc}}\t{{.MemUsage}}\t{{.NetIO}}\t{{.BlockIO}}'
docker  stat 

关于MySQL字段排序规则

2007年的时候,使用MySql5.5.x版本,发现一个问题:对于varchar字段(char估计一样),在选择utf8字符集时(后面新出来的utf8mb4一样),无法按中文拼音排序,即:排序规则中没有gbk_chinese_ci一项,而在选择gbk、gb2312、gb18030都有,这个问题一直没有找(想)到答案,因为后面的工作中使用SQL Server和Oracle居多。

[阅读全文]
mysql 

CST/CET/UTC/GMT/DST,Unix时间戳几种常见时间概述与关系

1、UTC:

Universal Time Coordinated 协调世界时,又称世界标准时间 多数的两地时间表都以GMT来表示,但也有些两地时间表上看不到GMT字样,出现的反而是UTC这3个英文字母,究竟何谓UTC?事实上,UTC指的是Coordinated Universal Time- 世界协调时间(又称世界标准时间、世界统一时间),是经过平均太阳时(以格林威治时间GMT为准)、地轴运动修正后的新时标以及以「秒」为单位的国际原子时所综合精算而成的时间,计算过程相当严谨精密,因此若以「世界标准时间」的角度来说,UTC比GMT来得更加精准。其误差值必须保持在0.9秒以内,若大于0.9秒则由位于巴黎的国际地球自转事务中央局发布闰秒,使UTC与地球自转周期一致。所以基本上UTC的本质强调的是比GMT更为精确的世界时间标准,不过对于现行表款来说,GMT与UTC的功能与精确度是没有差别的。

[阅读全文]
unix  Unix时间戳  CST  CET  UTC  GMT  DST 

joda-time使用

特性

  • 不可变性【Immutability】:joda-time对象具有不可变性(只能在构造的时候指定,并没有set方法),所以改线安全(也有线程安全的类MutableDateTime,操作方法类同)
  • 瞬间性【Instant】,暂时不明白
  • 局部性【Partial】,暂时不明白
  • 年表【Chronology】,暂时不明白
  • 时区【Time zone】时区是值一个相对于英国格林威治的地理位置,用于计算时间。要了解事件发生的精确时间,还必须知道发生此事件的位置。任何严格的时间计算都必须涉及时区(或相对于 GMT),除非在同一个时区内发生了相对时间计算(即时这样时区也很重要,如果事件对于位于另一个时区的各方存在利益关系的话)DateTimeZone 是 Joda 库用于封装位置概念的类。许多日期和时间计算都可以在不涉及时区的情况下完成,但是仍然需要了解 DateTimeZone 如何影响 Joda 的操作。默认时间,即从运行代码的机器的系统时钟检索到的时间,在大部分情况下被使用。

使用

格式化字符

 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
31
 Symbol  Meaning                      Presentation  Examples
 ------  -------                      ------------  -------
 G       era                          text          AD
 C       century of era (>=0)         number        20
 Y       year of era (>=0)            year          1996

 x       weekyear                     year          1996
 w       week of weekyear             number        27
 e       day of week                  number        2
 E       day of week                  text          Tuesday; Tue

 y       year                         year          1996
 D       day of year                  number        189
 M       month of year                month         July; Jul; 07
 d       day of month                 number        10

 a       halfday of day               text          PM
 K       hour of halfday (0~11)       number        0
 h       clockhour of halfday (1~12)  number        12

 H       hour of day (0~23)           number        0
 k       clockhour of day (1~24)      number        24
 m       minute of hour               number        30
 s       second of minute             number        55
 S       fraction of second           millis        978

 z       time zone                    text          Pacific Standard Time; PST
 Z       time zone offset/id          zone          -0800; -08:00; America/Los_Angeles

 '       escape for text              delimiter
 ''      single quote                 literal       '

字段说明

 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
31
Extended      Basic       Fields
2005-03-25    20050325    year/monthOfYear/dayOfMonth
2005-03       2005-03     year/monthOfYear
2005--25      2005--25    year/dayOfMonth *
2005          2005        year
--03-25       --0325      monthOfYear/dayOfMonth
--03          --03        monthOfYear
---03         ---03       dayOfMonth
2005-084      2005084     year/dayOfYear
-084          -084        dayOfYear
2005-W12-5    2005W125    weekyear/weekOfWeekyear/dayOfWeek
2005-W-5      2005W-5     weekyear/dayOfWeek *
2005-W12      2005W12     weekyear/weekOfWeekyear
-W12-5        -W125       weekOfWeekyear/dayOfWeek
-W12          -W12        weekOfWeekyear
-W-5          -W-5        dayOfWeek
10:20:30.040  102030.040  hour/minute/second/milli
10:20:30      102030      hour/minute/second
10:20         1020        hour/minute
10            10          hour
-20:30.040    -2030.040   minute/second/milli
-20:30        -2030       minute/second
-20           -20         minute
--30.040      --30.040    second/milli
--30          --30        second
---.040       ---.040     milli *
10-30.040     10-30.040   hour/second/milli *
10:20-.040    1020-.040   hour/minute/milli *
10-30         10-30       hour/second *
10--.040      10--.040    hour/milli *
-20-.040      -20-.040    minute/milli *

Quote

java  joda 

Docker常见问题

以下是实践过程中遇到的一些问题,记下来以防忘记

  • **现象:**Repository ***************** already being pulled by another client. Waiting.
  • **原因:**暂时不清楚
  • **解决办法:**service docker restart或systemctl restart docker

  • **现象:**Cannot connect to the Docker daemon. Is ‘docker -d’ running on this host?
  • **原因:**经查docker进程不在了,但确定是以服务方式启动的(service docker start或systemctl start docker),有可能是传说中的bug导致Docker退出了吧
  • **解决办法:**启动docker就好了,在var目录未找到相关日志


  • 现象:# docker-compose rm -f inspservice Going to remove std40dev_inspservice_1 Removing std40dev_inspservice_1 … error ERROR: for std40dev_inspservice_1 driver “overlay” failed to remove root filesystem for 32f8c314b798791e30e5fe9ddad26e61a222b06af64d9e4cde0077abb2d08702: remove /eyas/docker/sys/overlay/103a719b500d2f68845551653117260be206d3b07f54101d38d68d484b093995/merged: device or resource busy
  • **原因:**可能是有其他进程占用,最大可能是容器停止的时候并未释放对该容器数据文件的操作句柄
  • **解决办法:**unmount不行,可能是版本不对,找不到对应的mount记录 重启docker也不行,重启操作系统解决

  • **现象:**当启动的服务过多,或机器负载过重,可能会出现以下错误: ERROR: for std40dev_sysservice_1 UnixHTTPConnectionPool(host=‘localhost’, port=None): Read timed out. (read timeout=60) 导致查看日志的shell报错: # docker logs –tail=100 -f std40dev_inspservice_1 error from daemon in stream: Error grabbing logs: EOF
  • **原因:**不明
  • **解决办法:**注销,重新登录就好了,也有可能过一会儿重试就好了