英语音标学习
对于英语音标这个东西,一直没有好好学习过。
正如一个B站网友说的:
小学老师:考试不考。
初中老师:高中才学。
高中老师:小学没学?
我记得是我们初中英语老师教过一节课,可那节课我是上了吗? 压根没印象了。
下面这个是音标课程的在线地址,很好啊。花了4天时间都看完了,其实很多人可能几个小时就完了。
https://www.bilibili.com/video/av5123229
下面就是一些笔记了。这里面元音部分基本都学的很清楚了,辅音在联想法里那几个有点苦难,还得多复习几遍。
对于英语音标这个东西,一直没有好好学习过。
正如一个B站网友说的:
小学老师:考试不考。
初中老师:高中才学。
高中老师:小学没学?
我记得是我们初中英语老师教过一节课,可那节课我是上了吗? 压根没印象了。
下面这个是音标课程的在线地址,很好啊。花了4天时间都看完了,其实很多人可能几个小时就完了。
https://www.bilibili.com/video/av5123229
下面就是一些笔记了。这里面元音部分基本都学的很清楚了,辅音在联想法里那几个有点苦难,还得多复习几遍。
如果说在线教育作为一个产业来说。那应该还可以。当然最终胜出的估计也是现在的几个巨头。
当然这个行业门槛不高,如果只是针对某个区域市场,那没几个人应该就可以开搞了。搞定当地教委就可以推广了。后面做大就另说了。
至少从这次疫情爆发来看,大部分这些都没有技术能力,能应对的都相当的少,但是前面说了就针对某个地区的可能还好,技术压力不大,而且活的还不错,但是要全面铺开就别想了。
我说的是针对个人的。
在线教育就是个伪命题。
首先,对于大部分自觉性真的一般,我也一般,网上一堆现有的教学网站你都未必学的过来。
当年有
http://study.163.com
https://www.coursera.org/
上一次写nginx cache应该还是10年前了,那时候好像是nginx 0.7.4开始的。
当时记得用的是tmpfs做的缓存目录,主要那时候公司钱多。96G的机器随便堆。
这次又要缓存后面rest服务器的静态资源。用的ssd,可观察了下iowait还是会到50%左右经常。看了下主要是写导致的。
下面这个是这次的配置。
1 | proxy_temp_path /cache/nginx/proxy_temp; |
proxy_ignore_headers 这个是一定要加的,这次发现要是后端返回内容里带了cookie信息就居然无法缓存了。
下面这个是官方的解释,这个我记得原先最老的版本是没有,看来确实要与时俱进啊。
武汉这次冠状病毒的疫情的死亡人数已经超过了当年SARS的死亡人数了。
感动很多,愤怒也很多。感动的都是平凡人的故事,愤怒的确实整个国家机器。比如红十字会,慈善总会这些。不知道为什么郭美美事件过去那么多年,居然一点都没有改变。
感动的平凡人在襄阳城「空巷里的一束光」唱的「你的答案」这样平凡的行为。
SARS的时候还只是一个学生,同时还在上海,没有特别的影响,记得就是学校提前放假了,后面又给补回来了。
记得整个上海应该就只有2个还是4个人得的。而这次的人数北京和上海都已经超过300人了。
现在还在武汉的人,我理解都是老实人啊,要不然在宣布封城的那8个小时应该加紧跑了出来,比如像LJ她的公公婆婆应该赶紧跑北京来的,可留在武汉,前两天还都没有住上院,就是每天去医院取药,回家自己吃,属于自生自灭的阶段。
由于现有的日志量越来越多了,原先一直用的gzip进行压缩的,默认的级别,可最近看着是越来越不行,是有必要进行新的选择。
选择的方向是就是zstd
在CentOS中直接
1 | sudo yum install zstd -y |
就可以安装完成
由于是日志文件,我们单个分割是57MB的大文件
线上有一个topic碰到突增,但是限制于topic的分区太少,消费实在太慢,导致影响到用户的感受。
首先我们看下这个topic
1 | ./bin/kafka-topics.sh --zookeeper prod-zk1:2181 --describe --topic Events |
我们看到这个topic就10个分区,但是副本数却有些是2,有些是1。这种是否可以直接增加分区呢,答案是不行的。
你要这个时候增加分区就会报
1 | requirement failed: All partitions should have the same number of replicas. |
最近碰到一个kafka流量引发的故障。期初的现象是我们有些consumer超时。于是去看了下kafka broker的日志
1 | [2020-XX-XX YY:35:51,703] WARN [ReplicaFetcherThread-0-0], Error in fetch kafka.server.ReplicaFetcherThread$FetchRequest@712892d4 (kafka.server.ReplicaFetcherThread) |
这里写着id为0的broker连接超时啊。那就重启id 0的broker了。可重启了之后发现如下日志了
1 | [2020-XX-YY 14:13:27,728] INFO Partition [Event,196] on broker 1: Shrinking ISR for partition [Event,196] from 1,2 to 1 (kafka.cluster.Partition) |
这里你看这一会儿Shrinking,一会儿Expanding。而且间隔时间相当的短,现在想来是很快的连接超时了。
这时候明显大家就慌了,远程办公就这点不好啊.
上篇有提到firewalld和iptables的区别。那就比较好奇firewalld的其他状态。
首先测试了22端口,这个端口在firewalld里是开放的,但是实际上机器上没有监听这个端口。这里我们看到,实际服务器返回的也是一个TCP-RESET。
然后又测试了一个被firewalld屏蔽的端口,实际服务器上也没有监听这个端口。这里我们可以看到返回的是ICMP的destination unreachable。
接着我们测试了一个被firewalld屏蔽的端口,实际服务器上监听了这个端口。这里我们可以看到返回的也是ICMP的destination unreachable。
最后我们直接屏蔽某个端口,发现也一样是返回ICMP的destination unreachable。
1 | <rule family="ipv4"> |
在iptables中,我们一般封闭端口都是使用DROP参数,这样client端是不知道服务器已经DROP掉对应请求了,会继续进行等待,直到超时。
而像nc这种软件会根据这个其实是可以检测到服务器是否开启了这些端口。
但是我发现使用firewalld封闭后,用nc测试直接显示refused的
1 | $ nc 202.96.209.5 29327 -v |
而用iptables的话必须得是
1 | # iptables -A INPUT -p tcp -m tcp --dport 29327 -j REJECT --reject-with tcp-reset |
本文是「kafka权威指南」的第三章笔记。
在设置生产者之前我们先看看整个生产者到kafka broker的流程是怎么样的。
这个图是原文里的。
可以看到一个标准的ProducerRecord是必须要包含Topic和Value,然后Partition和Key是可选的。
从图中也可以看到,生产者需要把Key,Value序列化成数组,然后再去网络上传输。
如果record里有包含了Partition了,那就不需要分区器干活了,如果没有包含,那分区器就会根据record对象的key来选择一个分区。
选好分区之后,那生产者就知道往哪个topic和分区里发送记录了。然后这个记录就被添加到一个记录批次里,这个批次里所有消息都会被发送到相同的topic和分区上,这是由一个独立线程来处理的。