02 2017 档案

摘要:计数,基数的中文读音都一样,这翻译的人还嫌我们计算机不够乱,真的想吐槽。 不管了,毕竟代码还是不一样的。 1、计数排序(counter sort): 通过一个上限来统计集合里的数值(或者其他非数值类型映射的数值),并累计比小于自己(包括)的数值的统计的个数,从而形成排序的索引(也就是前面有多少个小于 阅读全文
posted @ 2017-02-28 21:27 丹西 阅读(342) 评论(0) 推荐(0)
摘要:囧,道理很简单,实践起来却没那么简单。因为编程语言的语言元素跟算法描述数据结构并不完全一致。 经过迭代(此处省略800字),补充上对于归并排序对于小数组采用插入排序的代码。 首先是插入排序: 然后是普通的归并排序: 归并排序中的小数组采用插入排序: 测试函数: 阅读全文
posted @ 2017-02-26 23:56 丹西 阅读(332) 评论(0) 推荐(0)
摘要:这个算是捏软柿子了哇。 不过用模板来实现也是非常有趣。 快排的核心就是: 1、在数组中选择一个参考值X,再设置2个索引,一个用来记录比这个X小的位置i,一个用来记录比这个X大的位置j 2、比如是升序排序,就把大的值交换到小的值的位置,小的值交换到大的值的位置,如果是降序,就相反的交换,总而言之,就是 阅读全文
posted @ 2017-02-25 02:50 丹西 阅读(449) 评论(0) 推荐(0)
摘要:这两年一直埋首在C相关的代码中,都快忘记自己曾经热爱并赖以南征北战过的C++了,而且C++11出来那么久了,瞄了几眼,没练过都不敢说自己会C++了, 正好很多基础算法没正经的学习过,打算逐个(算法导论里的)用C++完成一遍好好练练手。(其实没那么多时间,能写几个就写几个啦,加之水平有限) 结果呢,一 阅读全文
posted @ 2017-02-24 22:49 丹西 阅读(421) 评论(0) 推荐(0)
摘要:ftrace 简介 ftrace 的作用是帮助开发人员了解 Linux 内核的运行时行为,以便进行故障调试或性能分析。 最早 ftrace 是一个 function tracer,仅能够记录内核的函数调用流程。如今 ftrace 已经成为一个 framework,采用 plugin 的方式支持开发人 阅读全文
posted @ 2017-02-19 23:30 丹西 阅读(18445) 评论(0) 推荐(1)
摘要:一、简介 SystemTap是一个诊断Linux系统性能或功能问题的开源软件。它使得对运行时的Linux系统进行诊断调式变得更容易、更简单。有了它,开发者或调试人员不再需要重编译、安装新内核、重启动等烦人的步骤。 为了诊断系统问题或性能,开发者或调试人员只需要写一些脚本,然后通过SystemTap提 阅读全文
posted @ 2017-02-19 23:28 丹西 阅读(2082) 评论(0) 推荐(0)
摘要:每个公司都会有自己代码风格或者编程规范,都旨在防范编程语言的一些陷阱或者提高代码效率,还有就是保持一致编码风格来提高代码可读性,方便code review; 或者说代码的一种美学,比如python也就有pep8约定,还有一些精致编码来表示你是否Pythonic。 DPDK也有自己的编码风格,看完颇有 阅读全文
posted @ 2017-02-18 11:00 丹西 阅读(1296) 评论(0) 推荐(0)
摘要:很早之前就因为nosql就听说了redis,直到去年才真正去了解,只能说相见恨晚。 因为数据库相关,我以为这应该是个庞然大物,万万没想到,源码不到2M,所以,我不知道该说啥了。。。 还是来点靠谱的: 按照redis作者的排位,从上到下,性能是递减的,也就是evport>epoll>kqueue>se 阅读全文
posted @ 2017-02-16 01:25 丹西 阅读(698) 评论(0) 推荐(0)
摘要:Python有自带的洗牌算法函数shuffle(). 自己也通过学习也琢磨了一下它的实现,然后给出一个时间复杂度O(n),空间复杂度O(4)的例子: 执行结果: 后面再琢磨能不能降低一下时间复杂度。 比如洗4副牌,可以开4个线程同时洗,通过并行提高性能。 也可以一个线程洗,每次以4张或者更大数目切牌 阅读全文
posted @ 2017-02-14 12:30 丹西 阅读(1100) 评论(0) 推荐(0)
摘要:路由策略的基础知识 定义 路由策略(Routing Policy)作用于路由,主要实现了路由过滤和路由属性设置等功能,它通过改变路由属性(包括可达性)来改变网络流量所经过的路径。 目的 路由器在发布、接收和引入路由信息时,根据实际组网需要实施一些策略,以便对路由信息进行过滤和改变路由信息的属性,如: 阅读全文
posted @ 2017-02-13 23:46 丹西 阅读(2287) 评论(0) 推荐(0)
摘要:编译 python2.7.11 arm64 编译 libffi-3.2.1 arm64 编译 zlib-1.2.8 arm64 编译 glib-2.46.2 arm64 编译 libaio-0.3.110 arm64 编译 openssl-1.0.1s arm4 编译 ncurses-6.0 arm 阅读全文
posted @ 2017-02-09 16:15 丹西 阅读(5832) 评论(0) 推荐(0)
摘要:1 #!/usr/bin/python 2 3 import os 4 import struct 5 import fcntl 6 import binascii 7 8 TUNSETIFF = 0x400454ca 9 IFF_TAP = 0x0002 10 11 fd = os.open("/dev/net/tun", os.O_RDWR) 12 ifs = f... 阅读全文
posted @ 2017-02-08 12:32 丹西 阅读(1198) 评论(1) 推荐(0)
摘要:1 import socket 2 import sys 3 import time 4 import struct 5 6 HOST, PORT = "10.60.66.66", 10086 7 8 def make_forward_iphdr(source_ip = '1.0.0.1', dest_ip = '2.0.0.2', proto = socket.IPPROT... 阅读全文
posted @ 2017-02-08 12:27 丹西 阅读(4638) 评论(0) 推荐(1)
摘要:我们开发的网络,出于保密,只能叫XXX网络,或者我更倾向于称之为WTF-network 由于经常处于封闭的环境,刚一接触新一点的世界,总是有那么一点猝不及防。最近发现配置的静态路由经常消失,经发现是networkmanager在删除无效路由: 1、暴露了俺们对它的无知; 2、未出于安全考虑,共享使用 阅读全文
posted @ 2017-02-08 12:25 丹西 阅读(1571) 评论(0) 推荐(0)
摘要:1 #include 2 #include 3 4 #define MAX_PRIO 10000 5 #define BITS_PER_LONG 32 6 #define DIV_ROUND_UP(n,d) (((n) + (d) - 1) / (d)) 7 8 #define BIT(nr) (1UL > (nr & (BITS_P... 阅读全文
posted @ 2017-02-06 13:33 丹西 阅读(1621) 评论(0) 推荐(0)
摘要:前年一时脑热(理想很丰满,现实很骨感),写了这个最短路径优先的低效版本,且留着回忆吧。 spf.h spf.c 阅读全文
posted @ 2017-02-06 13:30 丹西 阅读(411) 评论(0) 推荐(0)
摘要:这个代码是我上个公司工作项目的里面内存管理(基于伙伴算法)的一个简化又简化的版本。 因为没有内存边界检查; 因为没有内存使用统计; 因为没有考虑线程安全; 因为没有内存分配操作的具体文件位置信息; 因为没有考虑内存的浪费; 因为特别简单。。。所以也有一些用处,我定义了最小的内存为8字节,因此可以将任 阅读全文
posted @ 2017-02-06 13:26 丹西 阅读(1434) 评论(0) 推荐(0)
摘要:这些字符代码是以前写的,源于很久很久以前的一个VC++项目,在当时的部门编程比赛里因为用了项目代码的xsplit函数,万万没想到,那个做了几年的项目里面居然有坑。。xsplit函数居然不能split连续2个空格,囧,领导说,你要是用ruby你就满分了,让我与满分失之交臂,当时没有人得满分,因此记忆深 阅读全文
posted @ 2017-02-06 13:21 丹西 阅读(996) 评论(0) 推荐(0)
摘要:BGP的核心就是交换路由,所以关键的部分还是在路由的更新与撤销上面,这之间包含了繁杂的属性,community等等可以称之为业务逻辑的处理过程,不做详述。 bgp_read函数是路由更新的事件处理函数,在收到BGP_MSG_UPDATE消息的时候开始调用bgp_update_receive函数处理。 阅读全文
posted @ 2017-02-03 21:16 丹西 阅读(4012) 评论(0) 推荐(0)