模块之间的相互调用,循环引用的问题

模块之间的相互调用,循环引用的问题 https://github.com/seajs/seajs/issues/800 允许适当重复代码,保证模块主要职责不变

2019-08-01 · 1 min · 3 words · -

redis 集群容灾

redis 集群容灾 Redis Sentinel 容灾演练 http://www.dczou.com/viemall/870.html/embed#?secret=Kngfb4CYbn

2019-07-30 · 1 min · 6 words · -

journal suppressed N messages

journal suppressed N messages systemd-journal: Suppressed 9567 messages from /system.slice/ systemd-journal: Suppressed 6735 messages from /system.slice/ …… 根据字面意思理解就是日志被丢弃了, 看来是由于 journald 服务的问题导致的日志问题 在 journald 中, 有如下两个参数跟此问题相关: vim /etc/systemd/journald.conf RateLimitInterval RateLimitBurst RateLimitInterval是指定时间间隔, 意思就是说, 在RateLimitInterval这段时间内的日志总量(总条数)控制在RateLimitBurst以内. 这两个参数搭配使用可以用来控制日志速率, 避免由于大量日志输出导致的一系列性能问题. 该问题的根源在于该主机目前日志输出的速率超出了 journald 默认的配置, 你可以自定定义该速率, 也可以将RateLimitInterval设置为0, 以禁用速率控制 接下来重启 journald 以生效配置 systemctl restart systemd-journald https://docs.lvrui.io/2018/11/22/systemd-journal-Suppressed-N-messages/ systemd-journald这个服务重启的时候, 会给所有的进程发送SIGPIPE信号, 而在默认的 systemd 定义中, SIGPIPE 信号属于正常退出的范围. 所以即使 unit 文件配置了Restart on-failure也不会被重启 https://docs.lvrui.io/2018/11/22/systemd-journald%E7%9A%84SIGPIPE%E4%BF%A1%E5%8F%B7BUG/

2019-07-29 · 1 min · 59 words · -

go env

go env 名称 说明 GOARCH 程序构建环境的目标计算架构 GOBIN 存放可执行文件的目录的绝对路径 GOCHAR 程序构建环境的目标计算架构的单字符标识 GOEXE 可执行文件的后缀 GOHOSTARCH 程序运行环境的目标计算架构 GOOS 程序构建环境的目标操作系统 GOHOSTOS 程序运行环境的目标操作系统 GOPATH 工作区目录的绝对路径 GORACE 用于数据竞争检测的相关选项 GOROOT Go 语言的安装目录的绝对路径 GOTOOLDIR Go 工具目录的绝对路径 https://www.jianshu.com/p/35a4ec1b3067

2019-07-21 · 1 min · 29 words · -

1、1.5、2.5、4、6平方电线负荷

1、1.5、2.5、4、6平方电线负荷 一个电工常用的"经验公式": 只要是铜芯电线,每平方毫米的截面积可以安全通过4-5A的额定电流;在220V单相电路中,每1KW的功率,其电流约为4.5A左右;在380V三相平衡电路中,每1KW的功率,其电流约为2A左右。 铜芯线,一是明线安装最大允许工作电流是20A,即4400瓦;二是暗装套钢管,电流是16A,功率为3520瓦;三是pvc管暗装,电流是14A,那么功率为3000瓦。 https://zhuanlan.zhihu.com/p/30847255

2019-07-20 · 1 min · 5 words · -

slf4j、jcl、jul、log4j1、log4j2、logback

slf4j、jcl、jul、log4j1、log4j2、logback slf4j > log4j2.x log4j-slf4j-impl slf4j 到 log4j2 的桥梁 直接依赖log4j1.x的换成log4j2输出, log4j1.x > slf4j 排除掉log4j jar包 引入依赖包 log4j-over-slf4j (实现log4j1桥接到slf4j) <dependency> <groupId>org.slf4j</groupId> <artifactId>log4j-over-slf4j</artifactId> <version>1.7.32</version> </dependency> commons-logging commons-logging:commons-logging的原生全部内容 org.apache.logging.log4j:log4j-jcl commons-logging/jcl > log4j2.x org.apache.logging.log4j:log4j-jcl: commons-logging 桥接到 log4j2 <!-- https://mvnrepository.com/artifact/org.apache.logging.log4j/log4j-jcl --> <dependency> <groupId>org.apache.logging.log4j</groupId> <artifactId>log4j-jcl</artifactId> <version>2.13.3</version> </dependency> jcl-over-slf4j commons-logging/jcl > slf4j https://blog.wiloon.com/?p=8549 jcl-over-slf4j 原本是通过 JCL 输出日志的,会被 jcl-over-slf4j 桥接到slf4j输出 slf4j > log4j1.x slf4j-log4j12 使用 slf4j + log4j1.x 输出日志 https://my.oschina.net/pingpangkuangmo/blog/410224?p=2 jul>slf4j>log4j2 <dependency> <groupId>org.slf4j</groupId> <artifactId>jul-to-slf4j</artifactId> <version>1.7.25</version> </dependency> // Optionally remove existing handlers attached to j.u.l root logger SLF4JBridgeHandler.removeHandlersForRootLogger(); // (since SLF4J 1.6.5) // add SLF4JBridgeHandler to j.u.l's root logger, should be done once during // the initialization phase of your application SLF4JBridgeHandler.install(); https://github.com/influxdata/influxdb-java/issues/443

2019-07-19 · 1 min · 104 words · -

并发, 并行

并发, 并行 并发 (concurrency) , 并行 (parallelism) 并行指物理上同时执行,并发指能够让多个任务在逻辑上交织执行的程序设计 https://www.cnblogs.com/f-ck-need-u/p/11161481.html https://laike9m.com/blog/huan-zai-yi-huo-bing-fa-he-bing-xing,61/ https://blog.golang.org/concurrency-is-not-parallelism https://talks.golang.org/2012/waza.slide#1

2019-07-15 · 1 min · 12 words · -

三极管

三极管 https://www.cnblogs.com/tdyizhen1314/archive/2012/11/06/2757644.html http://www.datasheetdir.com/GALAXY-S8550+PNP-Transistors http://www.jianshe99.com/html/2008/1/li0063319180020.html

2019-07-13 · 1 min · 4 words · -

USB数据线

USB数据线 编号 定义 颜色识别 1 VBUS Red (红色) 2 D- White (白色) 3 D+ Green (绿色) 4 GND Black (黑色)

2019-07-13 · 1 min · 20 words · -

linux 查看用户的UID和GID

linux 查看用户的 UID 和 GID 方法一: 使用 id 命令 使用 id 命令可以很轻松的通过用户名查看UID、GID,下面来讲解一下这个命令的用法。 命令格式 id [选项]… [用户名] 命令选项 -a 忽略,兼容其它版本 -Z, –context 只输出当前用户的安全上下文 -g, –group 只输出有效的GID -G, –groups 输出所有的GID -n, –name 对于 -ugG 输出名字而不是数值 -r, –real 对于 -ugG 输出真实ID而不是有效ID -u, –user 只输出有效UID –help 输出帮助后退出 –version 输出版本信息后退出 使用案例 heihaier@heihaier-desktop:~$ id root uid=0(root) gid=0(root) groups=0(root) 方法二: 查看 /etc/password 文件 /etc/password 文件格式 root:x:0:0:root:/root:/bin/bash 上面是这个文件的一行实例,每个域用 : 区分,从左向右分别是 root 用户名: 1~32 字节长。 x 密码: 字符x表示密码被加密保存在 /etc/shadow 文件中。 ...

2019-07-07 · 1 min · 107 words · -

wording for code

wording for code Where there is a shell, there is a way. Perl语言的发明者Larry Wall有一句名言: The three chief virtues of a programmer are: Laziness, Impatience and Hubris. – Larry Wall

2019-07-06 · 1 min · 29 words · -

agile, desk check

agile, desk check 做好Desk Check 在敏捷开发中,当一个Story开发结束之后,我们会把开发,测试,BA,UX聚在一起来做Shoulder Check / Desk Check。这个实践可能很多团队都会坚持。但是做的流畅程度则千差万别,效果也自然大相径庭。 你要专业 https://insights.thoughtworks.cn/professional/embed/#?secret=CuWoU1KPNH

2019-07-06 · 1 min · 12 words · -

需求拆分

需求拆分 传统的工具比如 INVEST (+SMART) 对需求进行合理的拆分

2019-07-06 · 1 min · 5 words · -

心流

心流 1975 年,心理学家米哈里·齐克森米哈里 (Mihaly Csikszentmihalyi) 正式将心流概念化并通过科学的方式来研究。 心流 (英语: Flow) ,也有别名以化境 (Zone) 表示,亦有人翻译为神驰状态,定义是一种将个人精神力完全投注在某种活动上的感觉;心流产生时同时会有高度的兴奋及充实感。 是一种奇妙而值得追求的境界,或者心理状态,也是知识工作者所一直追求的状态。在这样顺畅的状态下工作,不但个人会获得空前的满足感,而且团队从客观上来看,会更加的高效,成员会更加的团结,不论你将什么样的需求交给他们,他们总是会顺利的将其完成。 要进入理想的,忘我的心流状态,齐克森米哈里提到至少需要满足这三点: 有清晰的目标 有明确且事实的反馈 能力和挑战的平衡 (都处于比较高的状态) https://www.infoq.cn/article/k4TB7hZU4uM_8lhXEY9h?utm_source=rss&utm_medium=article http://icodeit.org/2018/01/feedback-saves-the-world/

2019-07-06 · 1 min · 20 words · -

nf_conntrack模块

nf_conntrack模块 nf_conntrack(在老版本的 Linux 内核中叫 ip_conntrack)是一个内核模块,用于跟踪一个连接的状态的。连接状态跟踪可以供其他模块使用,最常见的两个使用场景是 iptables 的 nat 的 state 模块。 iptables 的 nat 通过规则来修改目的/源地址,但光修改地址不行,我们还需要能让回来的包能路由到最初的来源主机。这就需要借助 nf_conntrack 来找到原来那个连接的记录才行。而 state 模块则是直接使用 nf_conntrack 里记录的连接的状态来匹配用户定义的相关规则。例如下面这条 INPUT 规则用于放行 80 端口上的状态为 NEW 的连接上的包。 iptables -A INPUT -p tcp -m state -state NEW -m tcp -dport 80 -j ACCEPT。 iptables中的状态检测功能是由state选项来实现iptable的。对这个选项,在iptables的手册页中有以下描述: state 这个模块能够跟踪分组的连接状态(即状态检测)。 格式: -state XXXXX 这里,state是一个用逗号分割的列表,表示要匹配的连接状态。 在iptables中有四种状态: NEW,ESTABLISHED,RELATED,INVALID。 NEW,表示这个分组需要发起一个连接,或者说,分组对应的连接在两个方向上都没有进行过分组传输。NEW说明 这个包是我们看到的第一个包。意思就是,这是conntrack模块看到的某个连接第一个包,它即将被匹配了。比如,我们看到一个SYN包,是我们所留意 的连接的第一个包,就要匹配它。第一个包也可能不是SYN包,但它仍会被认为是NEW状态。比如一个特意发出的探测包,可能只有RST位,但仍然是 NEW。 ESTABLISHED,表示分组对应的连接已经进行了双向的分组传输,也就是说连接已经建立,而且会继续匹配 这个连接的包。处于ESTABLISHED状态的连接是非常容易理解的。只要发送并接到应答,连接就是ESTABLISHED的了。一个连接要从NEW变 为ESTABLISHED,只需要接到应答包即可,不管这个包是发往防火墙的,还是要由防火墙转发的。ICMP的错误和重定向等信息包也被看作是 ESTABLISHED,只要它们是我们所发出的信息的应答。 RELATED,表示分组要发起一个新的连接,但是这个连接和一个现有的连接有关,例如: FTP的数据传输连接 和控制连接之间就是RELATED关系。RELATED是个比较麻烦的状态。当一个连接和某个已处于ESTABLISHED状态的连接有关系时,就被认为 是RELATED的了。换句话说,一个连接要想是RELATED的,首先要有一个ESTABLISHED的连接。这个ESTABLISHED连接再产生一 个主连接之外的连接,这个新的连接就是RELATED的了,当然前提是conntrack模块要能理解RELATED。ftp是个很好的例子,FTP- data连接就是和FTP-control有RELATED的。还有其他的例子, INVAILD,表示分组对应的连接是未知的,说明数据包不能被识别属于哪个连接或没有任何状态。有几个原因可以产生这种情况,比如,内存溢出,收到不知属于哪个连接的ICMP错误信息。一般地,我们DROP这个状态的任何东西。 https://clodfisher.github.io/2018/09/nf_conntrack/ 连接跟踪(conntrack) https://arthurchiao.art/blog/conntrack-design-and-implementation-zh/

2019-07-02 · 1 min · 69 words · -

MySQL collect

MySQL collect COLLATE是用来做什么的? 使用phpmyadmin的开发可能会非常眼熟,因为其中的中文表头已经给出了答案: phpmyadmin截图 所谓utf8_unicode_ci,其实是用来排序的规则。对于MySQL中那些字符类型的列,如VARCHAR,CHAR,TEXT类型的列,都需要有一个COLLATE类型来告知MySQL如何对该列进行排序和比较。简而言之,COLLATE会影响到ORDER BY语句的顺序,会影响到WHERE条件中大于小于号筛选出来的结果,会影响DISTINCT、GROUP BY、HAVING语句的查询结果。另外,MySQL建索引的时候,如果索引列是字符类型,也会影响索引创建,只不过这种影响我们感知不到。总之,凡是涉及到字符类型比较或排序的地方,都会和COLLATE有关。 各种COLLATE的区别 COLLATE通常是和数据编码 (CHARSET) 相关的,一般来说每种CHARSET都有多种它所支持的COLLATE,并且每种CHARSET都指定一种COLLATE为默认值。例如Latin1编码的默认COLLATE为latin1_swedish_ci,GBK编码的默认COLLATE为gbk_chinese_ci,utf8mb4编码的默认值为utf8mb4_general_ci。 这里顺便讲个题外话,MySQL中有utf8和utf8mb4两种编码,在MySQL中请大家忘记utf8,永远使用utf8mb4。这是MySQL的一个遗留问题,MySQL中的utf8最多只能支持3bytes长度的字符编码,对于一些需要占据4bytes的文字,MySQL的utf8就不支持了,要使用utf8mb4才行。 很多COLLATE都带有_ci字样,这是 Case Insensitive 的缩写,即大小写无关,也就是说"A"和"a"在排序和比较的时候是一视同仁的。selection * from table1 where field1=“a"同样可以把field1为"A"的值选出来。与此同时,对于那些_cs后缀的COLLATE,则是Case Sensitive,即大小写敏感的。 在MySQL中使用show collation指令可以查看到MySQL所支持的所有COLLATE 作者: 腾讯云加社区 链接: https://juejin.im/post/5bfe5cc36fb9a04a082161c2 来源: 掘金 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。 https://juejin.im/post/5bfe5cc36fb9a04a082161c2

2019-07-02 · 1 min · 33 words · -

MySQL大小写敏感配置, COLLATE

MySQL大小写敏感配置, COLLATE https://blog.csdn.net/fdipzone/article/details/73692929 show global variables like '%lower_case%'; lower_case_file_system 表示当前系统文件是否大小写敏感,只读参数,无法修改。 ON 大小写不敏感 OFF 大小写敏感 lower_case_table_names 表示表名是否大小写敏感,可以修改。 lower_case_table_names = 0时,MySQL会根据表名直接操作,大小写敏感。 lower_case_table_names = 1时,MySQL会先把表名转为小写,再执行操作。 设置lower_case_table_names的值 打开my.cnf文件,加入以下语句后重启。 lower_case_table_names = 0 或 lower_case_table_names = 1 解决MySQL查询不区分大小写 MySQL默认的字符检索策略: utf8_general_ci,表示不区分大小写;utf8_general_cs表示区分大小写,utf8_bin表示二进制比较,同样也区分大小写 。 (注意: 在MySQL5.6.10版本中,不支持utf8_genral_cs!!!!) 创建表时,直接设置表的collate属性为utf8_general_cs或者utf8_bin;如果已经创建表,则直接修改字段的Collation属性为utf8_general_cs或者utf8_bin。 -- 创建表: CREATE TABLE testt( id INT PRIMARY KEY, name VARCHAR(32) NOT NULL ) ENGINE = INNODB COLLATE =utf8_bin; -- 修改表结构的Collation属性 ALTER TABLE TABLENAME MODIFY COLUMN COLUMNNAME VARCHAR(50) BINARY CHARACTER SET utf8 COLLATE utf8_bin DEFAULT NULL; COLLATE: 排序规则 ...

2019-07-02 · 1 min · 160 words · -

debug1,expecting SSH2_MSG_KEX_ECDH_REPLY

‘debug1,expecting SSH2_MSG_KEX_ECDH_REPLY’ debug1: expecting SSH2_MSG_KEX_ECDH_REPLY 设置网卡接口的MTU值,改成: 1200 sudo ip link set dev eth0 mtu 1200 /etc/systemd/network/en0s25.network [Match] Name=enp0s25 [Link] MTUBytes=9000 [Network] Address=192.168.1.101/24 Gateway=192.168.1.1/24 DNS=192.168.1.1 以太网的MTU是1500,而隧道的MTU值1400左右,比以太网的小,因此,以太网发出去的包就被拒绝了,最终导致无法建立SSH连接。 原理 MTU (Maximum Transmission Unit) : 最大传输单元,是指一种通信协议的某一层上面所能通过的最大数据包大小 (以字节为单位) 。最大传输单元这个参数通常与通信接口有关 (网络接口卡、串口等) .(摘自维基百科) 从维基百科种看到: 这里的MTU所指的是无需分段的情况下,可以传输的最大IP报文 (包含IP头部,但不包含协议栈更下层的头部) 。 下面是普通媒体的MTU表: 网络 MTU(Byte) 超通道 65535 16Mb/s令牌环 17914 4Mb/s令牌环 4464 FDDI 4352 以太网 1500 IEEE 802.3/802.2 1492 X.25 576 点对点 (低时延) 296 对于使用AUTOSSH建立隧道: 传输模式,MTU值最大是: 1440 隧道模式,MTU值最大是: 1420 所以,出现这个现象的原因也就清楚了: 本身以太网的MTU是1500,而隧道的MTU值1400左右,比以太网的小,因此,以太网发出去的包就被拒绝了,最终导致无法建立SSH连接。 ssh 密钥交换阶段一次发送的数据一般大于 1500 字节,因此至少填满了一个 MTU; ...

2019-06-22 · 1 min · 78 words · -

OpenStack 高可用 (HA)

OpenStack 高可用 (HA) 高可用性是指提供在本地系统单个组件故障情况下,能继续访问应用的能力,无论这个故障是业务流程、物理设施、IT软/硬件的故障。最好的可用性, 就是你的一台机器宕机了,但是使用你的服务的用户完全感觉不到。你的机器宕机了,在该机器上运行的服务肯定得做故障切换 (failover) ,切换有两个维度的成本: RTO (Recovery Time Objective) 和 RPO (Recovery Point Objective) 。RTO 是服务恢复的时间,最佳的情况是 0,这意味着服务立即恢复;最坏是无穷大意味着服务永远恢复不了;RPO 是切换时向前恢复的数据的时间长度,0 意味着使用同步的数据,大于 0 意味着有数据丢失,比如 " RPO = 1 天" 意味着恢复时使用一天前的数据,那么一天之内的数据就丢失了。因此,恢复的最佳结果是 RTO = RPO = 0 对 HA 来说,往往使用共享存储,这样的话,RPO =0 ;同时往往使用 Active/Active (双活集群) HA 模式来使得 RTO 几乎0,如果使用 Active/Passive 模式的 HA 的话,则需要将 RTO 减少到最小限度。HA 的计算公式是[ 1 - (宕机时间)/ (宕机时间 + 运行时间) ],我们常常用几个 9 表示可用性: 2 个9: 99% = 1% * 365 = 3.65 * 24 小时/年 = 87.6 小时/年的宕机时间 ...

2019-06-22 · 1 min · 117 words · -

chained invocation (链式调用) 或者Method chaining

chained invocation (链式调用) 或者Method chaining https://www.zhihu.com/question/22006988 这就是chained invocation (链式调用) 或者Method chaining,这种风格的API设计叫做fluent API或者Fluent interface。它常用在Builder pattern的实现上。

2019-06-21 · 1 min · 14 words · -