0%

《百岁人生》读书笔记

六大预言

长寿,你可能会活到100岁

多段式人生

可能的自我

人工智能替代大量职业

跨年龄交往成为主流

人生的选择需要越来越慎重

五个建议

设计多段式人生

保持年轻

学会理财

闲暇时间再创造

改变家庭生活

目标:

自行分析大部分数据结构和算法的时间、空间复杂度。在学习专栏中其他的时候,再不停地、有意识地去训练自己的复杂度分析能力。
掌握递推公式、递归树分析方法

重要程度:10

阅读全文 »

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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
"SOURCE.clickAvroSource": {
"EventReceivedCount": "1295984839", //目前为止source已经接收到的事件总数量
"AppendBatchAcceptedCount": "14854763", //成功提交到channel的批次的总数量
"Type": "SOURCE",
"EventAcceptedCount": "1295984839", //成功写出到channel的事件总数量,且source返回success给创建事件的sink或RPC客户端系统
"AppendReceivedCount": "0", //每批只有一个事件的事件总数量(与RPC调用中的一个append调用相等)
"StartTime": "1540800268751", //source启动时自Epoch以来的毫秒值时间
"AppendAcceptedCount": "0", //单独传入的事件到Channel且成功返回的事件总数量
"OpenConnectionCount": "3", //目前与客户端或sink保持连接的总数量(目前只有avro source展现该度量)
"AppendBatchReceivedCount": "14854763", //接收到事件批次的总数量
"StopTime": "0" //source停止时自Epoch以来的毫秒值时间
},


"CHANNEL.clickKafkaChannel": {
"ChannelCapacity": "214748360", //channel的容量
"ChannelFillPercentage": "5.229376373351582E-4", //channel满时的百分比
"Type": "CHANNEL",
"ChannelSize": "1123", //目前channel中事件的总数量
"EventTakeSuccessCount": "1295983716", //sink成功读取的事件的总数量
"EventTakeAttemptCount": "1304379676", //sink尝试从channel拉取事件的总数量。这不意味着每次事件都被返回,因为sink拉取的时候channel可能没有任何数据
"StartTime": "1540800268732", //channel启动时自Epoch以来的毫秒值时间
"EventPutAttemptCount": "1295984839", //Source尝试写入Channe的事件总数量
"EventPutSuccessCount": "1295984839", //成功写入channel且提交的事件总数量
"StopTime": "0" //channel停止时自Epoch以来的毫秒值时间
},


"SINK.clickKafkaSink": {
"ConnectionCreatedCount": "371", //下一个阶段或存储系统创建的连接数量(如HDFS创建一个新文件)
"ConnectionClosedCount": "370", //下一阶段或存储系统关闭的连接数量(如在HDFS中关闭一个文件)
"Type": "SINK",
"BatchCompleteCount": "5049", //与最大批量尺寸相等的批量的数量
"EventDrainAttemptCount": "1297084867", //sink尝试写出到存储的事件总数量
"BatchEmptyCount": "3605088", //空的批量的数量,如果数量很大表示souce写数据比sink清理数据慢速度慢很多
"StartTime": "1540800268734",
"EventDrainSuccessCount": "1295983716", //sink成功写出到存储的事件总数量
"BatchUnderflowCount": "3689721", //比sink配置使用的最大批量尺寸更小的批量的数量,如果该值很高也表示sink比souce更快
"StopTime": "0",
"ConnectionFailedCount": "948" //下一阶段或存储系统由于错误关闭的连接数量(如HDFS上一个新创建的文件因为超时而关闭)
},

"CHANNEL.clickLogAppendAvroChannel": {
"ChannelCapacity": "214748360",
"ChannelFillPercentage": "2.584921719541886",
"Type": "CHANNEL",
"ChannelSize": "5551077",
"EventTakeSuccessCount": "1290433762",
"EventTakeAttemptCount": "1295783544",
"StartTime": "1540800256068",
"EventPutAttemptCount": "1295984839",
"EventPutSuccessCount": "1295984839",
"StopTime": "0"
},

"SINK.clickLogAppendAvroSink": {
"ConnectionCreatedCount": "190",
"ConnectionClosedCount": "189",
"Type": "SINK",
"BatchCompleteCount": "69994",
"EventDrainAttemptCount": "1290966489",
"BatchEmptyCount": "1111298",
"StartTime": "1540800268734",
"EventDrainSuccessCount": "1290433762",
"BatchUnderflowCount": "3705757",
"StopTime": "0",
"ConnectionFailedCount": "641"
}

mongoDB是一个开源的文档类型数据库,它具有高性能,高可用,可自动收缩的特性。
mongoDB集群模式主要有主从(master/slaves),副本集(replication),和分片(sharding)。

阅读全文 »

在部署应用的时候,由于线上与测试环境的配置不同(例如数据库的url),有时候我们需要在对应的环境把jar(或war)包里面的配置文件替换掉。
针对这种问题,以前一直采用的方案是先jar xf xxx.jar解压这个jar包,替换文件后,使用jar cfM xxx.jar *来重新压缩。
由于以前打包的时候是使用的shadowJar插件,用这个方法替换一直没出问题。最近打包插件替换成了springBoot的,使用这个方式替换会导致新的jar包运行出错的问题。于是使用了jar uf xx xxx.jar的方式来替换,在此对旧的替换方法出的问题做一个总结并且记录一下新的替换方式的使用方法。

阅读全文 »

更新node和npm

查看node.js版本

1
node -v

清除node的cache

1
npm cache clean -f

安装node版本管理工具 n

1
npm install -g n

安装最新稳定版本的node

1
2
3
4
n stable
// 安装最新版本使用 n latest
// 安装指定版本的使用 n {version},例如 n 11.2.0
// 删除指定版本的node使用 n rm {version},例如 n rm 11.2.0

更新npm版本

1
npm install npm@latest -g

更新hexo

查看需要更新的模块

进入blog目录,然后执行

1
npm outdated

更新配置文件

更新package.json配置文件里面各个模块的版本号

更新模块

1
npm install --save

确认升级结果

1
hexo -v

hexo常用命令

1
2
3
4
5
hexo n(new) fileName  # 新建文章  
hexo g(generate) # 生成网页
hexo s(server) # 启动服务器
hexo d(deploy) # 部署到线上
hexo p(publish) #