获得徽章 0
- #青训营笔记创作活动#
1月23日 day12
今日学习
但却发现“抓不到”,这就有些奇怪了。
我来还原下他的操作步骤。
首先,通过ping命令,获得访问百度时会请求哪个IP。
$ ping baidu.com
PING baidu.com (39.156.66.10) 56(84) bytes of data.
64 bytes from 39.156.66.10 (39.156.66.10): icmp_seq=1 ttl=49 time=30.6 ms
64 bytes from 39.156.66.10 (39.156.66.10): icmp_seq=2 ttl=49 time=30.6 ms
64 bytes from 39.156.66.10 (39.156.66.10): icmp_seq=3 ttl=49 time=30.6 ms
复制代码
从上面的结果可以知道请求baidu.com时会去访问39.156.66.10。
于是用下面的tcpdump命令进行抓包,大概的意思是抓eth0网卡且ip为39.156.66.10的网络包,保存到baidu.pcap文件中。
$ tcpdump -i eth0 host 39.156.66.10 -w baidu.pcap
复制代码
此时在浏览器中打开baidu.com网页。或者在另外一个命令行窗口,直接用curl命令来模拟下。
$ curl 'baidu.com'
复制代码
按理说,访问baidu.com的数据包肯定已经抓下来了。
然后停止抓包。
再用wireshark打开baidu.pcap文件,在过滤那一栏里输入http.host == "baidu.com"。
此时发现,一无所获。展开评论点赞 - #青训营笔记创作活动#
1月22日 day11
今日学习
1、规范命名
命名是写代码中最频繁的操作,比如类、属性、方法、参数等。好的名字应当能遵循以下几点:
见名知意
比如需要定义一个变量需要来计数
inti=0;
复制代码
名称 i 没有任何的实际意义,没有体现出数量的意思,所以我们应当指明数量的名称
intcount=0;
复制代码
能够读的出来
如下代码:
privateStringsfzh;
privateStringdhhm;
复制代码
这些变量的名称,根本读不出来,更别说实际意义了。
所以我们可以使用正确的可以读出来的英文来命名
privateStringidCardNo;
privateStringphone;展开评论点赞 - #青训营笔记创作活动#
1月20日 day10
今日学习
UDP比TCP快吗?
使用socket进行数据传输
作为一个程序员,假设我们需要在A电脑的进程发一段数据到B电脑的进程,我们一般会在代码里使用socket进行编程。
socket就像是一个电话或者邮箱(邮政的信箱)。当你想要发送消息的时候,拨通电话或者将信息塞到邮箱里,socket内核会自动完成将数据传给对方的这个过程。
基于socket我们可以选择使用TCP或UDP协议进行通信。
对于TCP这样的可靠性协议,每次消息发出后都能明确知道对方收没收到,就像打电话一样,只要"喂喂"两下就能知道对方有没有在听。
而UDP就像是给邮政的信箱寄信一样,你寄出去的信,根本就不知道对方有没有正常收到,丢了也是有可能的。展开评论点赞 - #青训营笔记创作活动#
1月20日 day9
今日学习
在日常工作中,尤其是程序员时时刻刻都会与英文打交道,虽然我们尽可能的在互联网和中文书籍中寻找我们需要的信息,但是,有时候总是不尽人意。对待翻译过来的文档或者书本可能有些定义依然无法明确理解,回到它原有的场景中才能明白究竟是什么意思?阅读英文文档应该是我们的基本技能。展开评论点赞 - #青训营笔记创作活动#
1月19日 打卡day8
今日学习
消息系统
Kafka 和传统的消息系统(也称作消息中间件)都具备系统解耦、冗余存储、流量削峰、缓冲、异步通信、扩展性、可恢复性等功能。与此同时,Kafka 还提供了大多数消息系统难以实现的消息顺序性保障及回溯消费的功能。
存储系统
Kafka 把消息持久化到磁盘,相比于其他基于内存存储的系统而言,有效地降低了数据丢失的风险。也正是得益于 Kafka 的消息持久化功能和多副本机制,我们可以把 Kafka 作为长期的数据存储系统来使用,只需要把对应的数据保留策略设置 为“永久”或启用主题的日志压缩功能即可。参考:可行性分析:www.confluent.io/blog/okay-s… 和案例:www.confluent.io/blog/publis…
流式处理平台
Kafka 不仅为每个流行的流式处理框架提供了可靠的数据来源,还提供了一个完整的流式处理类库,比如窗口、连接、变换和聚合等各类操作。展开评论点赞 - #青训营笔记创作活动#
1月18日 day7
今日学习
使用HTTP不断轮询
其实问题的痛点在于,怎么样才能在用户不做任何操作的情况下,网页能收到消息并发生变更。
最常见的解决方案是,网页的前端代码里不断定时发HTTP请求到服务器,服务器收到请求后给客户端响应消息。
这其实时一种伪服务器推的形式。
它其实并不是服务器主动发消息到客户端,而是客户端自己不断偷偷请求服务器,只是用户无感知而已。
用这种方式的场景也有很多,最常见的就是扫码登录。
比如某信公众号平台,登录页面二维码出现之后,前端网页根本不知道用户扫没扫,于是不断去向后端服务器询问,看有没有人扫过这个码。而且是以大概1到2秒的间隔去不断发出请求,这样可以保证用户在扫码后能在1到2s内得到及时的反馈,不至于等太久。展开评论点赞 - #青训营笔记创作活动#
1月17号 day6
今日学习
DHCP的工作原理
DHCP的工作原理也非常简单。
说白了,就是向某个管IP分配的服务器,也就是DHCP服务器,申请IP地址。其实一般家里用的路由器就自带这个功能。
整个操作流程分为4个阶段。
DHCP Discover:在联网时,本机由于没有IP,也不知道DHCP服务器的IP地址是多少,所以根本不知道该向谁发起请求,于是索性选择广播,向本地网段内所有人发出消息,询问"谁能给个IP用用"。
DHCP Offer:不是DHCP服务器的机子会忽略你的广播消息,而DHCP服务器收到消息后,会在自己维护的一个IP池里拿出一个空闲IP,通过广播的形式给回你的电脑。
DHCP Request:你的电脑在拿到IP后,再次发起广播,就说"这个IP我要了"。
DHCP ACK:DHCP服务器此时再回复你一个ACK,意思是"ok的"。你就正式获得这个IP在一段时间(比如24小时)里的使用权了。后续只要IP租约不过期,就可以一直用这个IP进行通信了。展开评论点赞
![[可怜]](http://lf-web-assets.juejin.cn/obj/juejin-web/xitu_juejin_web/img/jj_emoji_5.ece2a96.png)