fasionchan

读万卷书,行万里路,品万味肴,撸万行码。

随机文段生成

| Comments

我们经常需要拷贝一些文字作为Demo填充,特别是做页面时,每次都到网上去找觉得挺麻烦的。很多时候我们也需要一个随机的信息流,比如模拟后台日志输出。Python下loremipsum就可以很好地完成这个工作,安装很简单:pip install loremipsum。使用示例如下:

1
2
3
4
5
6
7
8
9
10
11
>>> import loremipsum
>>> dir(loremipsum)
['DictionaryError', 'Generator', 'SampleError', '_GENERATOR', '__all__', '__author__', '__builtins__', '__classifiers__', '__copyright__', '__doc__', '__docformat__', '__file__', '__keywords__', '__name__', '__package__', '__path__', '__version__', 'generate_paragraph', 'generate_paragraphs', 'generate_sentence', 'generate_sentences', 'generator', 'get_paragraph', 'get_paragraphs', 'get_sentence', 'get_sentences']
>>>
>>> # 生成一个随机句子
>>> print loremipsum.get_sentence()
Purus neque fames vivamus.
>>>
>>> # 生成一个随机段落
>>> print loremipsum.get_paragraph(10)
Lorem ipsum. Vitae massa aenean mi pulvinar montes tortor felis feugiat. Morbi risus. Etiam class tortor parturient volutpat dolor a integer mollis. Neque felis. Fusce ipsum massa dui purus penatibus phasellus fusce phasellus cursus. Felis augue nunc egestas natoque dictum dolor mus. Massa metus donec eni nibh habitasse ut tortor mi orci aliquet risus in. Lorem augue per tellus convallis facilisi eu purus suspendisse. Velit purus sem felis tincidunt cras. Fusce neque luctus magnis fusce. Class dolor egestas hac eleifend tincidunt. Lacus neque ligula sollicitudin facilisis tortor inceptos non id nunc.

SSH高级用法

| Comments

Keep Alive

在某些网络环境下,SSH会话空闲一小段时间后就会断掉。可能是因为中间有个NAT网关,检查到空闲TCP连接后便无情Kill。一暂停操作SSH连接就断实在不能忍!

SSH有个配置选项,每隔一段时间就发一个空包使TCP连接保持活跃,这样连接就不会无故断掉了。这个选项就是:ServerAliveInterval,配置值是一个整数,表示发送空包的周期,单位是秒。

Kafka简介

| Comments

Kafka是一个高吞吐的分布式消息系统,由Linkin公司开源,成为一个Apache项目。Kafka可以看做是一个快速、分布式、可扩展、可分区、可复制、持久化的日志服务。它提供了作为消息系统的实用功能,架构设计却是相当独特的。

发布-订阅模型

  • Kafka采用话题(topic)对消息进行分类;
  • 向Kafka发布(Publish)消息的进程称为生产者(producer);
  • 从Kafka订阅(Subscribe)消息的进程称为消费者(consumer);
  • Kafka集群可以由若干台服务器组成,称为代理(broker);

写于除夕夜

| Comments

工作

这部分不准备多写:在公司外透漏工作细节是不合适的。毕业后选择了运维方向,与开发不同,对运维来说,最重要的词是稳定、可靠和可控。这个职位总体工作强度不高,但是突发情况较多。我本身不是纯运维,而是运维开发,就是开发运维系统。尽管如此,平时多少还是要做一些运维操作,提心吊胆地享受命令行带给你的快感。借用领导的话:你做的好,没人会想起你;你搞出一次事故,大家就都知道这个运维不靠谱!

理解CFS调度算法

| Comments

Completely Fair Scheduler(CFS),即完全公平调度器,是Linux内核从2.6.23版本开始引入的进程调度器。

TCP设计精髓

| Comments

TCP是在不可靠的网络层之上,实现的一种面向连接的可靠的传输层协议。 为了实现可靠性并尽量优化传输效率,TCP作者们考虑到方方面面,并设计了一系列巧妙的算法。

纳格算法

纳格算法(Nagle's algoritm),主要思想是以减少发送量来增进TCP/IP网络的性能。

先来看一个场景——小数据包问题: 在远程终端操作中(telnet),客户端所输入的每一个字符源源不断发送给服务端,服务端再根据输入内容进行回传显示。 这时,有大量的小数据包产生,很多都是只有一个字节(或者若干个字节)。 众所周知,TCP数据包头部就有40字节(TCPIPv4各占20字节)。 这意味着,41字节的数据包只有1字节的有用信息,效率何等低下! 如果TCP立即发送应用产生的小数据包,那么慢速网络或者拥塞的环境下,情况将变得更糟糕。

那么,有什么办法可以解决这个问题吗?显而易见的做法是,对待发送数据进行合并之后再行提交。 这就是纳格算法的主要思想: 如果上次提交的数据还未收到对端确认,先持续缓冲数据包,直到一定大小才提交; 收到确认后,马上发送缓冲区中的数据包,不管数量是多少。

1
2
3
4
5
6
7
8
if 缓冲区非空
    if 窗口大小 >= MSS and 缓冲数据 >= MSS
        理解发送MSS大小的分组
    else
        if 还有数据待确认
            继续缓冲数据(延迟发送)
        else
            理解发送数据

捎带确认

TCP连接的两端进行通信,AB发送一段数据,B需要确认数据收到(ACK)。 B每次收到数据立即回复ACK包,代价有点大,40个字节的TCP分组就为了告诉对方,”我已经收到数据了!“。 如果B刚好有数据需要发送,那么将ACK放在数据分组里(其实ACK只是一个标志位)捎带过去岂不更好? 因此,将ACK延迟到需要发送数据时才发送出去,可以零成本完成数据确认。

如果B不发送数据,那该咋整呢?长时间不回复ACK,对端该重传数据了,那更糟! 事实上,TCP会启动一个定时器,大概是200ms。 在这段时间内,如果有新数据分组要发送,那ACK刚好借这趟便车。 否则,TCP会回复一个独立的ACK包,这也是没有办法的事情了。 当然了,定时器选定也比较考究,需要足够长以便等到数据分组便车,但又不能太长导致对端重传数据。

Linux编程环境搭建——C/C++

| Comments

本文是面向初学者的入门型教程,高手请忽略~

本文是面向初学者的入门型教程,高手请忽略~

本文是面向初学者的入门型教程,高手请忽略~

计算机专业都有开展编程课吧,但大部分院校都是基于Windows平台的,包括VCVS等等。这样的IDE用多了,人容易“傻”——编程可不是非得要用IDE!再说了,IDE按钮按多了,都不知道编程的本质是啥。

很多人想学Linux,摆脱Windows的枷锁,可是老师不教呀,作业怎么办!

莫慌,我们先来看看,在Linux下,怎样进行C语言程序开发吧~