自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(42)
  • 收藏
  • 关注

原创 Rust 开发环境的设置

Rust 开发环境的设置安装RUST开发环境更新RUST建立一个"hello world" 程序用 cargo 创建工程安装RUST开发环境这个文档由我的笔记转换而来, 所以中英文都有,有点乱,请多包涵。 我用的是Linux , 在命令行上运行:curl --proto '=https' --tlsv1.2 https://sh.rustup.rs -sSf | sh这条命令会把RUST 安装在用户的HOME目录下, 不会影响系统目录。 Rust 会用到以下环境变量, 对应的目录是

2021-11-09 11:44:49 459

原创 推荐一个 Rust 语言练习网站 exercism.org

推荐一个 Rust 语言练习网站 exercism.orgexercism.org命令行使用方法exercism.org 简介exercism.org 提供了一个很好的做 Rust 练习的环境(当然不仅是Rust 语言,还有其它语言。) 它可以让用户提交练习, 自动测试。 如果对练习不理解,不可以看下其他用户提交上来的练习, 很有帮助。命令行使用方法exercism.org 提供了在线编辑器, 可以直接在网页上编辑代码并提交。其他开发者上传的解题方法:它也提供了命令行方式,

2021-11-08 15:58:28 1665 1

原创 goroutine 的使用

本文通过计算矩阵乘法的例子来说明GO语言中的goroutine 的使用以及效率分析。

2021-03-03 15:59:39 298

翻译 Linux 的memblock 内存管理器

Linux 的memblock 内存管理器最近接触到了linux 在启动阶段的内存管理器memblock, 它是bootmem 的后续者。 本来想自己写一篇关于memblock的文章的, 但看到了这篇文章, 就把它翻译过来了:https://0xax.gitbooks.io/linux-insides/content/MM/linux-mm-1.html# 。新的改变我们对Markdown编辑器进行了一些功能拓展与语法支持,除了标准的Markdown编辑器功能,我们增加了如下几点新功能,帮助你用它写博

2020-05-27 13:47:58 694

原创 os.path.walk 在 python 3 里不存在了

今天想运行一个以前写的Python 脚本, 解释器是Python 3.7的, 发现os.path.walk 没了。 在Python 2.7 下, os.path.walk 用来遍历一个目录, 并调用一个回调函数, 用来做需要的事情: def recurse_dir(self): ...

2019-10-09 13:01:13 838

原创 一个使用resnet50的简单例子

这是一个使用resnet50 的简单例子。 其中 th.jpeg 是需要识别的图像,一只鼠标:import numpy as npfrom keras.preprocessing import imagefrom keras.applications import resnet50# Load Keras' resNet50 model that was pre-trained# a...

2019-09-21 18:21:33 6339

原创 在 Linux 下安装机器学习软件环境

摘要我使用的是Debian GNU/Linux 发行版。 需要安装Anaconda, 其中包括numpy, pandas, scikit-learn 和 keras 等与机器学习相关的模块。 然后再安装pycharm, 这是一个很方便使用的 Python 集成开发环境。安装Anaconda到Anaconda 的下载页面https://www.anaconda.com/distributio...

2019-09-16 15:05:04 707

原创 从Linux内核模块向应用发信号

从Linux内核模块向应用发信号有一个客户有这样的需求,要从设备驱动/内核模块向应用程序发信号,我在网上找了资料,并做了一个测试用例,证明是可行的。 这里的关键是内核模块要找到相应的应用程序的进程号, 这可以通过 ioctl 函数把应用的进程号传给内核模块。 另外, 内核模块发送信号的API 是 send_sig_info。 应用程序要注册信号处理函数, 这跟常规的做法没有区别。这是应用程序的...

2018-09-28 11:36:15 3555 2

原创 发包利器scapy

发包利器scapy最近在帮助用户调试一个网络问题的时候,发现一个很好用的发包工具scapy,记录一下使用方法。我们在调试TCP/IP时, 有时需要发送一些报文,用的工具一般有ping, nping, netcat 等。 如果需要再深入微调IP或传输层的域,或发送一些畸型的报文,以上工具可能就不一定能做到了。 此时我们可以自己用socket 编程,不过太麻烦了,迭代周期太长了。 此时 sca...

2018-08-02 16:41:46 10700

原创 如何模拟IP分片到达主机的先后顺序

IP分片

2017-11-13 16:41:25 1173

原创 一些有用的网络工具

常用的帮助诊断网络问题的工具有ping, arp, netstat, ifconfig, wireshark等。 请注意有些工具已经被更新的工具代替了。

2017-11-07 17:06:42 280

翻译 Linux 下 ss 命令使用示例

ss 命令

2017-11-07 16:21:48 23900

原创 IPv6 地址的 tentative 状态

IPv6 地址的 tentative 状态

2017-11-07 13:38:08 7678

原创 TCP options

TCP options

2017-11-07 11:48:49 1388

原创 如何让多播报文从指定的网口发出去

如果目的地址是multicast, 可以使用 socket 选项 IP_MULTICAST_IF,它指定多播报文是哪个网络接口发出去

2017-10-31 15:05:45 1375

原创 一个TCP发送小数据延迟的问题

TCP Nagle 算法

2017-10-31 13:53:08 4532

原创 如何调试处于D状态的进程

如何调试处于 D 状态的进程

2017-10-27 15:32:09 5793 1

原创 IPv6 地址类型

IPv6 地址

2017-10-25 10:37:30 17506 2

原创 IPv6 源地址选择规则

IPv6 源地址选择规则

2017-10-24 15:26:23 4155 1

原创 一个简单的IPv6 socket 程序

IPv6 socket 编程

2017-10-23 16:44:00 6420

原创 用Python做数据分析初探(四)

了解基本情况我们可以用 DataFrame 的describe()函数列出一些统计信息:该函数列出了DataFrame 的行数,均值,方差,最大最小值, 25%, 50%, 75%处的值,让我们能对数据有个大概的了解。然后我想按文件的尺寸排序,了解哪些文件的尺寸是最大的,用sort_values()函数即可。在Jupter notebook 里,可以用help命令方便地查看文档:help(pd.Da

2017-06-28 10:27:12 346

原创 用Python做数据分析初探(三)

准备数据开发环境已经准备好了, 接下来我们可以用 Numpy , Pandas 等工具做数据分析了。 但数据源到哪里找呢? 我首先想到的是磁盘文件。 这么多年来,一直不清楚自己的HOME目录为什么这么大,有哪些大文件是最占空间的,哪些文件是很久不用的,现在终于可以分析一下了。首先写个简单的 Python 程序,把目录里的所有文件都列出来,保存成一个文本文件:#! /usr/bin/env pytho

2017-06-23 16:26:14 326

原创 用Python做数据分析初探(二)

Juypter Notebook 简介

2017-06-23 10:41:33 544

原创 用Python做数据分析初探(一)

下载安装Anaconda

2017-06-23 10:04:06 541

翻译 被遗忘的C结构体打包技术

原文见 http://www.catb.org/esr/structure-packing/ 。 作者是著名hacker。 虽然讲的是C语言中一个很基本的概念,但条理清楚,读后仍能获得不少启发。 特别是文中提到的结构体的跨步地址(stride address),我以前没有注意到!1. 谁该阅读本文本文是关于如何减少C程序的内存占用的:手工重新排列C结构体的成员声明来减小尺寸。为了读

2014-01-06 14:23:06 14111 3

原创 使用 icecream 进行分布式编译

icecream 也是一个分布式编译工具, 我感觉设置起来比distcc方便。 这是详细步骤。 下载并编译icecream下载地址是 ftp://ftp.suse.com/pub/projects/icecream/下载并解压到一个临时目录,运行./configure --prefix=/opt/icecreammakesu - rootmake ins

2013-12-09 15:20:24 6183

翻译 介绍一个google的替代搜索引擎

Google 为了商业目的会在用户搜索的时候,保留用户的信息,比如IP地址、关键字等,如果你很在意这点,可以使用startpage。 它本身不做搜索引擎,而像一个代理,把用户的搜索内容提交到google,并把搜索结果返回到用户, 在此过程中它不保留用户的信息,从而保护用户的隐私。 这是在google-chrome 中把startpage 设置为默认搜索引擎的方法:在google

2013-07-26 10:48:29 29072 1

原创 用 iptables 模拟网络丢包

有时候我们需要模拟网络丢包,可以用一台Linux 作为网络通信的一方或网关, 在Linux上用 iptables 创建防火墙规则, 阻止某些包,而规则的有效时间是一个随机值,到了预期时间,把规则删除。 如此循环。 用脚本语言很容易实现。 #! /bin/sh## drop some packets to simulate network traffic jam# Yuwen Dai

2013-01-15 16:05:50 8969 1

原创 strict alias 的含义

Alias 的定义一个指针叫做另一个指针的 alias (别名)如果这两个指针都指向相同的地址或对象。在C99标准里,建立一个与原类型不同的别名是非法的。这叫做 strict aliasing规则。这条规则在GCC的-O2级别以会自动使能。strict alias 的好处便于更进一步的优化。 这是一个例子:typedef struct { uint1

2013-01-13 10:47:34 1460

原创 strict align 的含义

在有些处理器上,如果在非对齐地址上存取一个一个值,可能会出“对齐异常”。 比如,4字节的int型一般都要在能被4整除的地址上存取;2字节的short型在偶数地址上被存取。 gcc有编译选项可以让用户指明代码将要运行的主机是严格对齐的、还是支持非对齐操作。 这个选项就是 -mstrict-align 或 -mono-strict-align。这是测试代码:struct tt{

2013-01-01 14:54:43 3492

原创 如何找出重名的全局变量

如果代码很复杂,可能会出现不同模块使用名字相同的全局变量, 如何发现这样的重复定义? ld 有 --warn-common 可用。 如果用gcc做连接, 用 -wl,--warn-common。 这是例子。 a1.c:#include #include int g_this_symbol;void foo(void);intmain (int argc, char

2012-12-20 15:54:13 2206

原创 测试编译器性能的源码

这个网站上有许多算法, 都挺耗时的,可以用来测试编译器或计算机的性能:http://benchmarksgame.alioth.debian.org/index.php另外,gcc 有选项 -time 可以报告子进程用了多长时间编译文件。

2012-12-20 15:29:12 1091

原创 查看gcc使能了多少优化

gcc 的-O2到底使能了多少优化,文档上提了,似乎说的还不明确。  现在新增了--help=optimizers 选项方便多了。 比如,我们可以做一个-O1 和 -O2的比较:gcc -Q -O1 --help=optimizers > /tmp/O1-opts.txtgcc -Q -O2 --help=optimizers > /tmp/O2-opts.txt然

2012-12-20 15:22:14 898

原创 另一种加密数据的方法:encfs

如果要加密数据, encfs 使用起来也挺方便的。  它把明文目录映射为加密目录, 在明文目录里的文件都会被加密添加到加密目录,明文目录用好了之后,可以完全删除。 以后要存取明文目录里的文件时,用encfs 挂载加密目录。 首先我们安装 encfs :apt-get install encfs然后创建明文目录和加密目录,并建立映射关系:$ cd ~$ mkd

2012-12-16 12:06:30 3703 1

原创 不用防火墙也能阻止那些讨厌的网站

现在的网页上广告越来越多了, 它们不停地闪烁、跳动、飘移, 如入无人之境, 对电脑使用者是极大的羞辱。  我发现绝大部分广告都来自几个大的网站,如百度、淘宝和google。  如果知道它们的域名,把它们解析为127.0.0.1即可。 即在 /etc/hosts 文件里手工给它们加上IP地址。  比如, 这是我的 /etc/hosts 中的一部分:127.0.0.1 ssl.goo

2012-12-01 12:21:18 861

原创 把你的密码放在加密设备上

时间久远,我都忘了原理是什么了。 Linux 太过稳定, 有的事情做过一遍,很难有机会再做第二遍。  我只记录了操作。 首先安装 cryptsetup 包, 我用的是Debian, 因此用apt-get install cryptsetup安装。  我猜想RPM系统的Linux,应该也有类似包吧。 然后做一个加密的块设备,名为testfile,大小为10M:

2012-11-29 13:35:05 884

原创 一次Linux系统恢复的经历

由于文件系统经常报有错,我决定格式化一下磁盘(后来知道不是文件系统问题,而是磁盘坏了)。  这是当时的经过。幸好事先已经做过备份。 根分区和HOME目录是分开备份的。磁盘上安装了多个linux,从另一个linux启动,用mke2fs 格式化磁盘把备份恢复到磁盘上grub 启动出问题,报 initrd: unknow command 我仍从另一个系统进入, 运行grub-inst

2012-11-23 13:34:01 737

原创 我在Linux下的备份方法(三)

为了把系统数据与个人用户数据分开, 我特意写了一个共 root 使用的脚本,以备份系统文件。 #! /bin/bash# using `dar' to backup a whole directory. There're two methods here: # full backup and diff backup# Dai Yuwen# 18 Dec, 2010, mod

2012-11-23 13:13:14 484

原创 我在Linux下的备份方法(一)

Linux 下有许多备份工具。  我选择的是 dar ,因为我感觉它最方便,它其实就是一个打包工具,类似tar,但支持分卷, 差异备份等功能, 恢复数据也很方便。 这是我写的一个备份Home目录的方法。#! /bin/bash# using `dar' to backup a whole directory. There're two methods here: # ful

2012-11-22 14:45:28 659

原创 我在Linux下的备份方法(二)

备份的数据要能够方便地恢复,备份才有意义。  用dar 备份的数据可以用两种方法恢复:一、 恢复个别文件:cd /tmpdar -x /mnt/ydai/home_full -g text/log.txt二、全部恢复:dar -x /mnt/ydai/home_full -R /home/yuwen -b此命令把备份全部恢复到 home 目录。

2012-11-22 14:42:30 428

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除