7 sunshine008

尚未进行身份认证

我要认证

暂无相关简介

等级
TA的排名 3w+

极路由1(HC5661)刷openwrt固件及zerotier配置教程

极路由1 hc5661 cpu为MTK7620 mips 24kec1、刷不死breed2、openwrt网站下载最新的刷机包https://archive.openwrt.org/releases如https://archive.openwrt.org/releases/19.07.2/targets/ramips/mt7620/3、进入breed升级界面选择固件选择升级包升级4、界面或者后台执行opkg源更新1)opkg update或这页面software下点击update lists;

2020-08-02 12:33:00

emac使用

打开文件: emacs test.c搜索字符串:ctrl-s(向下搜索,ctrl-r向上搜索) 输入要搜索的字符串即可撤销输入:删除:ctrl-backspce保存文件:ctrl-x ctrl-s关闭文件:ctrl-x ctrl-c

2020-07-22 14:42:20

LINUX_VERSION_CODE与KERNEL_VERSION

由于Linux版本的在不断更新,当设备驱动去兼容不同版本的内核时,需要知道当前使用的内核源码版本,以此来调用对应版本的内核API,这两个宏定义在文件/usr/include/linux/version.h#define LINUX_VERSION_CODE 263213#define KERNEL_VERSION(a,b,c) (((a)<<16)+((b)<<8)+(c))安装完linux-header之后,在下面这个目录找到了version.h这个文件/usr/li

2020-07-06 20:08:23

TCMalloc:线程缓存的Malloc

动机TCMalloc要比glibc 2.3的malloc(可以从一个叫作ptmalloc2的独立库获得)和其他我测试过的malloc都快。ptmalloc在一台2.8GHz的P4机器上(对于小对象)执行一次malloc及free大约需要300纳秒。而TCMalloc的版本同样的操作大约只需要50纳秒。malloc版本的速度是至关重要的,因为如果malloc不够快,应用程序的作者就很有可能在malloc之上写一个自己的自由列表。这就可能导致额外的代码复杂度,以及更多的内存占用――除非作者本身非常仔细地划分自

2020-06-23 15:01:49

Linux内存布局

我们先来看下Linux内存布局,此图比我之前写的那篇文章写的布局更详细在linux中,每一个进程都被抽象为task_struct结构体,称为进程描述符,存储着进程各方面的信息;例如打开的文件,信号以及内存等等;然后task_struct的一个属性mm_struct管理着进程的所有虚拟内存,称为内存描述符。在mm_struct结构体中,存储着进程各个内存段的开始以及结尾,如上图所示;这个进程使用的物理内存,即常驻内存RSS页数,这个内存使用的虚拟地址空间VSZ页数,还有这个进程虚拟内存区域集合和页表。

2020-06-05 20:20:11

ssh(或sftp)连接慢问题解决

问题1:ssh连接很慢解决方案:这是应为linux系统默认开启DNS认证,我们关掉即可。 vim /etc/ssh/ssh_config UseDNS yes 改为no(122行左右); GSSAPIAuthentication yes改为no(81行左右)然后重启sshd服务service restart sshd;问题2:ssh连接突然就卡断了解决方案:这个是 linux 的安全问题,如果 60s 内没用任何数据,将会自动断开。 vim /etc/ssh/ssh_con

2020-06-02 15:11:15

链路带宽测试工具iperf使用

下载安装iperfhttps://iperf.fr/iperf-download.php下载安装对应版本,不区分服务端和客户端;运行udp模式测试:(tcp模式去掉-u参数即可)服务端执行:iperf -p 8000 -s -i -u监听8000端口,以服务端模式运行;客户端运行:iperf -u -c 192.168.1.1 -p 8000 -i 1 -d -b 100M使用8000端口以udp方式连接服务端192.168.1.1,指定带宽100M,测试上下行带宽并按照1s间隔输出测试

2020-06-02 10:10:18

网络常用python函数

字符串mac地址转换:def str2mac(s): return ("%02x:" * 6)[:-1] % tuple(orb(x) for x in s)mac地址转字符串:def mac2str(mac): return b"".join(chb(int(x, 16)) for x in plain_str(mac).split(':'))参考链接:https://github.com/secdev/scapy/blob/2e87889089e5593988911309

2020-05-20 10:22:22

tcmalloc编译使用

一、编译https://github.com/gperftools/gperftools/releases如上链接页面下载需要版本的代码;cd /home/code/;tar -zxvf gperftools-2.7.90.tar.gz;cd gperftools-2.7.90;../configure --prefix=/usr/local/lib --disable-cpu-profiler --disable-heap-profiler --disable-heap-checker --d

2020-05-15 18:46:49

gdb报错(A program is being debugged already)

用 gdb attach pid 的方式将gdb挂到一个正在运行的进程上,有时会提示A program is being debugged already. Kill it? (y or n)可能是由于正在执行的进程对应的binary被替换了造成的。如果被替换过的binary和先前的差别不大,并且要调试的部分没有变化,可以用下面的方式做gdb attach:gdb 或者可以将先前被替换...

2020-05-06 17:22:02

linux malloc内存申请相关参数设置

情况一、malloc小于128k的内存malloc小于128k的内存时使用brk分配内存,将_edata往高地址推(只分配虚拟空间,不对应物理内存(因此没有初始化),第一次读/写数据时,引起内核缺页中断,内核才分配对应的物理内存,然后虚拟地址空间建立映射关系),如下图:1、进程启动的时候,其(虚拟)内存空间的初始布局如图1所示。其中,mmap内存映射文件是在堆和栈的中间(例如libc-2.2...

2020-04-23 21:58:35

gdb编程打印全局变量

以某个全局数组为例说明如何gdb编程打印所有变量:写变量遍历代码创建search.gdb文件写如下内容:define print_hash_table set $cnt =1 set $use=2 while $cnt set $hash_entry=(g_hash_entry_t *)(hash_table.table + 123 * $cnt) if $hash_entry...

2020-04-03 16:24:33

Python调用shell命令常用方法

Python调用shell指令方法一、使用os模块的system方法:os.system(cmd),其返回值是shell指令运行后返回的状态码,int类型,0表示shell指令成功执行,256表示未找到,该方法适用于shell命令不需要输出内容的场景。举例说明:1. 列举当前目录下的所有文件。1 import os2 val = os.system('ls -al')3 print...

2020-03-18 10:02:26

__typeof__(type)的用法(gcc扩展)

__typeof__(struct s *) xxx;等同于: struct s * xxx;下面的例子可以证明:#include <stdio.h>#include <stdlib.h>struct s { int x; int y; int z;};int main(void){ __typeof__...

2020-03-16 19:26:52

Linux top命令的用法详细详解

首先介绍top中一些字段的含义:VIRT:virtual memory usage 虚拟内存1、进程“需要的”虚拟内存大小,包括进程使用的库、代码、数据等2、假如进程申请100m的内存,但实际只使用了10m,那么它会增长100m,而不是实际的使用量RES:resident memory usage 常驻内存1、进程当前使用的内存大小,但不包括swap out2、包含其他进程的共享3、...

2020-03-13 15:36:37

问题排查积累

1、查看进程启动时间ps -eo pid,lstart,etime | grep pid(lstart为启动时间,etime为运行多长时间)

2020-03-10 22:28:16

C语言基础知识

同等bit长度情况下比较无符号数强转为有符号数:有符号数转换为无符号数1)最高位符号位为0符号位为0的情况下,有符号数直接等于无符号数;2)最高位符号位为1符号位为1的情况下,有符号数转换为无符号数为取有符号数的补码(即最高位符号位不变,非符号位取反,最后整体加1)如 char a = -7 ; 将a强转为无符号char类型即为:1000 0111 —> 1111 1001...

2020-02-28 15:31:27

局部标签(gcc对c的扩展)

局部标签定义一个局部标签的申明如下: __label__ label;或者:__label__ label1, label2, ...;使用局部标签每个语句内嵌表达式都是一个可以声明局部跳转标签的域。一个局部标签只是一个标识符:你可以使用通常的goto语句跳到它--但是只能在它所属的域内这么做。局部标签的申明必须在语句内嵌表达式的开始出,紧跟({后面,在所有通常申明的左边。局部...

2020-02-28 09:54:44

内核dmes日志实时打印脚本

#!/bin/bashend=`dmesg |wc -l`while truedo sleep 1 end2=`dmesg |wc -l` if [ "$end" != "$end2" ]; then dmesg |awk '{print NR, $0}'|tail -$((end2-end)) end=$end2 fi ...

2019-11-22 15:40:14

makefile知识点记录

makefile关键字使用:以下代码保存为Makefile后,执行make即可看到各关键字意义。 # Target::test#.PHONY: testtest: @echo ${CURDIR} @echo ${MAKE_VERSION} @echo ${MAKEFILE_LIST} @echo ${MAKECMDGOALS} @echo "$(.VARIABLES)" |...

2019-11-21 10:20:12

查看更多

勋章 我的勋章
  • 持之以恒
    持之以恒
    授予每个自然月内发布4篇或4篇以上原创或翻译IT博文的用户。不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!
  • 1024勋章
    1024勋章
    #1024程序员节#活动勋章,当日发布原创博客即可获得
  • 勤写标兵Lv1
    勤写标兵Lv1
    授予每个自然周发布1篇到3篇原创IT博文的用户。本勋章将于次周周三上午根据用户上周的博文发布情况由系统自动颁发。