自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

团长的专栏

让总结成为一种习惯

  • 博客(160)
  • 资源 (6)
  • 论坛 (1)
  • 收藏
  • 关注

转载 python中使用c类型的数组

Python 在 ctypes 中为我们提供了类似C语言的数据类型,它的用途(我理解的)可能是:(1) 与 其他语言(如 C、Delphi 等)写的动态连接库DLL 进行交换数据,因为 python 的 数据与 DLL难以进行数据交换。(2) python 的字符串一旦形成,是不可变的,为了算法的需要,我们有时需要对字符串进行原位操作 ( in place ),而不想浪费另外的内存空间。(3) python 具有很简明的语法,人们乐于使用。在解决实际问题时,字符串的处理占据了很大的开发量。

2021-05-24 23:15:57 19

转载 Python值传递还是引用传递

Python值传递还是引用传递Python作为一门动态语言,变量本身的类型是不固定的,因此更加灵活。那Python到底是值传递还是引用传递呢?问题引出本人在本周写代码时,遇到这么一个让我注意的问题,问题可以抽象如下:def func(val1): val2 = val1 val2.append(1) ...a = []...(一系列对a的操作)b = afunc(a)print(b)当我执行上述后,发现“b”的值也发生了改变。由此引发了我对Python...

2021-05-24 23:07:31 18

原创 socket链接中几种常见的错误

做一个简单的总结,请大家多多补充1. ETIMEOUT: connection timeoutsocket通信中,如果server端没有发送ACK SYN分片响应client端的SYN分片,connect函数则会返回timeout错误2. ECONNREFUSED: connection refused当client端收到server端的RST报文,connect函数则会返回connection refused错误返回RST报文的三种情况:目的地为某端口的SYN到达,然而该端口上没有正在

2021-05-21 20:42:17 30 4

原创 linux系统资源监控命令

最近问题调试用到了几个资源监控命令,记录一下问题简单说就是linux下面一个发包线程会卡顿几秒钟,造成报文发送中断,通过监控最终发现是io资源紧张影响了线程写日志,进而阻塞了线程发包1. top 查看cpu 内存等资源以及进程/线程的运行情况 top -b -d 1 -i >> top.log //不接受交互,一秒钟打印一次输出,并将其重定向到log文件2. mpstat cpu的使用情况 mpstat -P ALL >> mpsta...

2021-05-01 19:41:16 32

原创 linux网络-数据包的发送过程

继上一篇介绍了数据包的接收过程后,本文将介绍在Linux系统中,数据包是如何一步一步从应用程序到网卡并最终发送出去的。如果英文没有问题,强烈建议阅读后面参考里的文章,里面介绍的更详细。本文只讨论以太网的物理网卡,并且以一个UDP包的发送过程作为示例,由于本人对协议栈的代码不熟,有些地方可能理解有误,欢迎指正socket层socket(...):创建一个socket结构体,并初始化相应的操作函数,由于我们定义的是UDP的socket,所以里面存放的都是跟UDP相关的函数s...

2021-04-18 22:53:23 27

原创 Linux网络-数据包接收过程

本文将介绍在Linux系统中,数据包是如何一步一步从网卡传到进程手中的。如果英文没有问题,强烈建议阅读后面参考里的两篇文章,里面介绍的更详细。本文只讨论以太网的物理网卡,不涉及虚拟设备,并且以一个UDP包的接收过程作为示例.本示例里列出的函数调用关系来自于kernel 3.13.0,如果你的内核不是这个版本,函数名称和相关路径可能不一样,但背后的原理应该是一样的(或者有细微差别)网卡到内存网卡需要有驱动才能工作,驱动是加载到内核中的模块,负责衔接网卡和内核的网络模块,驱动在加载的时候将自

2021-04-18 22:48:13 20

原创 子shell以及什么时候进入子shell

最近写shell脚本程序,碰到一个问题:需要一个全局变量来反复保存和更新一些统计信息,但每次在shell主程序的函数中更新完后,主程序中的值却没有变化,仍是初始值后来发现执行更新操作的函数是后台执行的,若将其变成前台执行则全局变量每次都可以顺利更新和保存。查得下面这篇文章,原来后台执行的函数是在子shell中执行的,父子shell和父子进程一样,都是单通的,子shell所继承的父shell变量是一个副本,其改动只在子shell中生效,并不会影响父shell,要想将其回传父shell,则需要考虑进程间

2021-01-31 22:45:43 106 5

转载 C语言调用so动态库的两种方式

方式1:类似静态库的调用(使用头文件)这种方式生成的程序会在启动时候就加载so动态库。add.hint add(int x, int y);add.c#include "add.h"int add(int x, int y) { return (x + y);}main.c#include <stdio.h>#include "add.h"int main(){ int sum = add(7, 8); printf("7+

2020-12-11 23:16:03 726

转载 C语言localtime和asctime时间函数中的陷阱

晚上调试程序,碰到一个奇怪的问题:在程序的多个地方调用了time和localtime函数获得当前系统时间,然后在程序运行结束后一次性打印程序前面几次获得的系统时间,但是打印出来的几处时间居然都是最后一个时刻的时间。后来尝试把每次获得的时间通过本地变量保存一份,统一打印的时候打印本地保存的变量值,才能输出期望的结果。关于这个问题在网上找到了一篇解释:在编写C语言的应用程序时,为了获取或者打印一些跟时间有关的信息,我们经常会使用到C语言自带的一些时间函数,诸如:time、localtime、ctim

2020-11-26 23:18:09 245

原创 python子进程调用shell命令的返回值问题

接触python不久,最近碰到一个棘手的问题,关于subprocess.Popen通过ret=subprocess.Popen(cmd, shell=True, stdout=subprocess.PIPE)的形式,在shell中执行cmd命令通过ret.returncode获得返回值通过retout=ret.comunication()[0]获取输出问题就在于cmd的形式和返回值及返回输出上:如果cmd中带有重定向操作,那么retoutd就无法获得cmd的输出;如果cmd中指定后台.

2020-11-01 22:41:09 312

原创 git切换分支相互影响的问题

问题描述: 今天遇到一个git分支切换的问题,我在分支A上做了修改,然后切换到其他分支后发现其他分支上也存在A分支上的修改。(我记得之前碰到这种情况,是无法切换分支的,git会提醒当前A分支上有未提交的改动,这次虽然能切换了(当时就感觉奇怪),果然又碰到现在这个问题)原因:如果当前分支所做的修改没有提交就切换去其他分支也会看到相同的修改,所以解决这个问题有两个办法。 解决办法:用git add和git commit提交修改,只要用 git status 检查工作区和暂存区是干净的就可以了。 那..

2020-10-16 23:19:15 337

原创 c语言中sizeof详解

解析C语言中的sizeof一、sizeof的概念sizeof是C语言的一种单目操作符,如C语言的其他操作符++、--等。它并不是函数。sizeof操作符以字节形式给出了其操作数的存储大小。操作数可以是一个表达式或括在括号内的类型名。操作数的存储大小由操作数的类型决定。二、sizeof的使用方法1、用于数据类型 sizeof使用形式:sizeof(type)  数据类型必须用括号括住。如sizeof(int)。2、用于变量 sizeof使用形式:sizeof(var_name)或..

2020-10-15 23:55:19 10861 1

原创 git 常用命令总结

git clone /vob/xx_workspace/sdk_xx zhangsan_xx_gz //克隆一个分支到xx_xx_gzgit clone zhangsan@192.168.5.183:/vob/xx_workspace/sdk_xx zhangsan_xx/cd zhangsan_xx_gzgit checkout master //切换到master分支,master分支是创建工作区是默认创建的分支,可以直接切换远程分支git checkout filenam...

2020-09-30 23:27:14 109

原创 git分支介绍

.1 Git 分支 - 何谓分支何谓分支为了理解 Git 分支的实现方式,我们需要回顾一下 Git 是如何储存数据的。或许你还记得第一章的内容,Git 保存的不是文件差异或者变化量,而只是一系列文件快照。在 Git 中提交时,会保存一个提交(commit)对象,该对象包含一个指向暂存内容快照的指针,包含本次提交的作者等相关附属信息,包含零个或多个指向该提交对象的父对象指针:首次提交是没有直接祖先的,普通提交有一个祖先,由两个或多个分支合并产生的提交则有多个祖先。为直观起见,我们假设在工作目录

2020-09-30 22:24:00 100

转载 交换机端口vlan tag/untag处理情况

为了理解VLAN内报文的转发,就必须要知道交换机对于不同VLAN报文的tag/untag的处理原则。首先,需要明确一点就是,在交换机的内部,为了快速高效的处理,报文都是带tag转发的。其实,这点很好理解,因为交换机上很可能会配置多个VLAN,那不同VLAN流量区分只有依靠tag标签。下面从报文入和报文出两个方向来介绍。l报文入方向:在入方向上,交换机的根本任务就是决定该报文是否允许进入该端口,根据入报文的tag/untag的属性以及端口属性,细分为如下情况:1)...

2020-09-29 23:07:25 1369

原创 vlan原理详解

1.为什么需要VLAN1.1什么是VLAN?VLAN(Virtual LAN),翻译成中文是“虚拟局域网”。LAN可以是由少数几台家用计算机构成的网络,也可以是数以百计的计算机构成的企业网络。VLAN所指的LAN特指使用路由器分割的网络——也就是广播域。在此让我们先复习一下广播域的概念。广播域,指的是广播帧(目标MAC地址全部为1)所能传递到的范围,亦即能够直接通信的范围。严格地说,并不仅仅是广播帧,多播帧(Multicast Frame)和目标不明的单播帧(Unknown Unicast F.

2020-09-29 23:01:21 265

原创 DHCP协议说明及报文分析

DHCP几个概念:DHCP Client:DHCP客户端,通过DHCP协议请求IP地址的客户端。DHCP客户端是接口级的概念,如果一个主机有多个以太接口,则该主机上的每个接口都可以配置成一个DHCP 客户端。交换机上每个Vlan接口也可以配置成一个DHCP客户端。DHCP Server:DHCP 服务端,负责为DHCP客户端提供IP地址,并且负责管理分配的IP地址。DHCP Relay:DHCP中继器,DHCP客户端跨网段申请IP地址的时候,实现DHCP报文的转发功能。DHCP Securi

2020-09-29 22:50:21 996 1

转载 C语言中移位操作

先要了解一下C语言里所有的位运算都是指二进制数的位运算。即使输入的是十进制的数,在内存中也是存储为二进制形式。“<<”用法:格式是:a<<m,a和m必须是整型表达式,要求m>=0。功能:将整型数a按二进制位向左移动m位,高位移出后,低位补0。“>>”用法:格式是:a>>m,a和m必须是整型表达式,要求m>=0。功能...

2019-07-25 18:19:06 13475 1

原创 Linux内核事件通知链

Linux内核事件通知链一、概念:大多数内核子系统都是相互独立的,因此某个子系统可能对其它子系统产生的事件感兴趣。为了满足这个需求,也即让某个子系统在发生某个事件时通知其它的子系统,Linux内核提供了通知链的机制。通知链表只能够在内核的子系统之间使用,而不能够在内核与用户空间之间进行事件的通知。通知链表是一个函数链表,链表上的每一个节点都注册了一个函数。当某个事情发生时,链表上所有节点对...

2019-06-21 14:11:47 835

转载 Linux slab 分配器剖析

Linux slab 分配器剖析了解 Linux 内存管理的方式动态内存管理内存管理的目标是提供一种方法,为实现各种目的而在各个用户之间实现内存共享。内存管理方法应该实现以下两个功能:最小化管理内存所需的时间 最大化用于一般应用的可用内存(最小化管理开销)内存管理实际上是一种关于权衡的零和游戏。您可以开发一种使用少量内存进行管理的算法,但是要花费更多时间来管理可用内存。也可...

2019-06-21 13:33:23 161

转载 Linux写时拷贝(COW)

COW技术初窥: 在Linux程序中,fork()会产生一个和父进程完全相同的子进程,但子进程在此后多会exec系统调用,出于效率考虑,linux中引入了“写时复制“技术,也就是只有进程空间的各段的内容要发生变化时,才会将父进程的内容复制一份给子进程。 那么子进程的物理空间没有代码,怎么去取指令执行exec系统调用呢? 在fork之后exec之前两个进程用...

2019-05-30 17:25:21 1219

原创 多进程引用动态链接库中的全局变量问题

多进程引用动态链接库中的全局变量问题现象描述:前提:存在一个动态库libvlan.so,存在一个应用console。做法:在console中调用libvlan.so中的两个APIs,分别是设置和获取动态库中一个全局变量的值。结果:在console中的操作没有问题,设置和获取都正常;但在动态库中打印该全局变量,其值并没有改变。结论:动态库中的全局变量,在被其他进程使用...

2019-05-23 16:37:09 3153

转载 linux内核中的IS_ERR()、PTR_ERR()和ERR_PTR()

linux内核中的IS_ERR()、PTR_ERR()和ERR_PTR()在看内核源码的时候,经常会遇到IS_ERR,比如在linux/arch/arm/kernel/sys_arm.c中asmlinkage int sys_execve(char __user *filenamei, char __user * __user *argv,char __user * __...

2019-05-23 16:12:40 453

转载 automake,autoconf使用详解

作为Linux下的程序开发人员,大家一定都遇到过Makefile,用make命令来编译自己写的程序确实是很方便.一般情况下,大家都是手工写一个简单Makefile,如果要想写出一个符合自由软件惯例的Makefile就不那么容易了.在本文中,将给大家介绍如何使用autoconf和automake两个工具来帮助我们自动地生成符合自由软件惯例的 Makefile,这样就可以象常见的 GNU程序一样,...

2019-03-29 18:27:36 345

原创 使用shell转换Mac Address

shell脚本中变量截取的应用实例:将MAC Address 由0123456789abc转换成12:34:56:78:9a:bc格式。#!/bin/bash#! change MAC address in mac_list.txt from 0123456789abc to 12:34:56:78:9a:bccat mac_list.txt | while read line |...

2019-01-11 18:22:07 868

原创 C语言函数隐式声明——implicit declaration warning

implicit declaration of function——函数隐式声明警告原因:1、该函数未被声明,但却被调用了,此时gcc会报这样的警告信息。2、(网友总结)该函数所在源文件没有被编译为.o二进制文件。解决办法:1、在调用之前先声明这个函数,一般使用extern关键字(该关键字非必需)   声明函数可以不加extern,函数默认extern;声明变量必须要加extern...

2018-12-28 14:24:48 9374

转载 C语言函数隐式声明(2)

1 什么是C语言的隐式函数声明在C语言中,函数在调用前不一定非要声明。如果没有声明,那么编译器会自动按照一种隐式声明的规则,为调用函数的C代码产生汇编代码。下面是一个例子:int main(int argc, char** argv){    double x = any_name_function();    return 0;}单纯的编译上述源代码,并没有任何报...

2018-12-27 19:28:15 356

转载 C语言函数隐式声明(1)

这段时间,在看中心后台服务软件源码时发现,有很多自定义函数未经声明却能在主程序中被调用,主程序中没有包括上述函数的头文件,我在各个目录中也找不到上述函数的头文件。这就奇怪了,连使用标准库函数printf()都要包括标准输入输出头文件&lt;stdio.h&gt;,何况是自定义函数?这个问题困扰了我很久。前天问中创公司奚钟华,他说:确实没有头文件,他也试过,在原来的目录中编写了一些新的函数,照葫芦画...

2018-12-27 19:24:17 2996

原创 GCC 编译报错——suggest parentheses around comparison in operand of

warning: suggest parentheses around comparison in operand of ‘&amp;’ [-Wparentheses]该警告希望你在&amp;(逻辑与)表达式左右加上括号。有的时候&amp;&amp;(逻辑且)少写了一个&amp;,也会产生该警告。 例如:   if((a[2]&gt;&gt;1)&amp;0x1 == 1){   ...

2018-12-25 09:29:30 3903

转载 第一次有人把5G解释的这么清楚

这一切,要从一个“神奇的公式”说起,就是这个公式! 还记得这个公式的,请骄傲地为自己鼓个掌,如果不记得,或是看不懂,也没关系,“一个科普”解释一下。 就是这个超简单的公式,蕴含了我们无线通信技术的博大精深,无论是往事随风的1G、2G、3G,还是意气风发的4G、5G,说来说去,都是在这个数学公式上做文章。有线?无线?通信技术,无论什么黑科技白科技,只分两种——有线...

2018-12-18 20:28:22 20952 13

转载 ctrl+c,ctrl+d,ctrl+z在linux程序中意义和区别

ctrl+c,ctrl+d,ctrl+z在linux程序中意义和区别ctrl+c和ctrl+z都是中断命令,但是他们的作用却不一样. ctrl+c是强制中断程序的执行,进程已经终止。 ctrl+z的是将任务中止(暂停的意思),但是此任务并没有结束,他仍然在进程中他只是维持挂起的状态,用户可以使用fg/bg操作继续前台或后台的任务,fg命令重新启动前台被中断的任务,bg命令把被中断的任务...

2018-11-22 15:02:51 260

原创 在shell中使用sed

如果有一个abc.txt文件,内容如下:$cat abc.txtaaabbbBATBUSINESSTYPE, INSIDEID--) ONLINE;INSIDEID--) ONLINEcccdddeeefff如果要删除ddd,那么脚本可以这样写:sed -i '/ddd/d' abc.txt //-i,将修改写会原文件如果删除的是一个变量的值,假如变量是va...

2018-08-24 18:26:35 1165

原创 shell脚本中判断上一个命令是否执行成功

shell脚本中判断上一个命令是否执行成功shell中使用符号“$?”来显示上一条命令执行的返回值,如果为0则代表执行成功,其他表示失败。结合if-else语句实现判断上一个命令是否执行成功。经过验证,该方法也适用于make命令,并不仅仅限于shell 命令。示例如下:if [ $? -ne 0 ]; then echo "failed"else ech...

2018-08-24 18:19:42 18050 1

原创 shell 脚本中双引号、单引号、反引号的区别

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/iamlaosong/article/details/54728393最近要编个shell脚本处理数据,需要检测数据文件是否存在,文件名中包含日期,所以需要生成最近几天的日期,以便检测文件是否存在,看下面的脚本中如何使用双引号、单引号、反引号:OPDATE=`date -d '-1 d...

2018-08-24 18:16:20 1854

转载 shell脚本基本语法

转载自:http://www.92csz.com/study/linux/14.htm终于到shell 脚本这章了,在以前笔者卖了好多关子说shell脚本怎么怎么重要,确实shell脚本在linux系统管理员的运维工作中非常非常重要。下面笔者就带你正式进入shell脚本的世界吧。到现在为止,你明白什么是shell脚本吗?如果明白最好了,不明白也没有关系,相信随着学习的深入你就会越来越了解到...

2018-08-24 18:06:59 4587 2

转载 makefile中的shell调用---注意事项

$$:在makefile中会被替换成一个$。    相关资料是这么描述的:makefile中变量在声明时需要赋予初值,在使用时,需要在使用的变量前加"$"符号,但是最好使用"()"或者"{}"将变量包括起来。如果想使用真实的"$"符号,需要用"$$"来表示 在makefile中使用shell:1. 使用makefile中的$(shell ...) eg:CUR_DIR=$(shel...

2018-08-15 18:14:38 6180 1

转载 802.1ag CFM/802.3ah EFM OAM/Y.1731 ETH OAM学习笔记

相关协议:1)IEEE 802.1ag 连通性故障管理(CFM:Connectivity Fault Management)2)IEEE 802.3ah 第一英里的以太网(EFM:Ethernet in the First Mile),其中第57章的以太网OAM3)ITU-T Y.1731 以太网OAM(Operation, Administration and Maintenance) 以太网O...

2018-06-06 15:45:58 2347 1

转载 RSA算法和RSA数字签名算法

一、引言 随着网络技术的飞速发展,信息安全性已成为亟待解决的问题。公钥密码体制中,解密和加密密钥不同,解密和加密可分离,通信双方无须事先交换密钥就可建立起保密通信,较好地解决了传统密码体制在网络通信中出现的问题。另外,随着电子商务的发展,网络上资金的电子交换日益频繁,如何防止信息的伪造和欺骗也成为非常重要的问题。数字签名可以起到身份认证、核准数据完整性的作用。目前关于数字签名的研究主要集中基于公钥...

2018-03-07 15:47:49 27162 3

转载 数字签名是什么

今天,我读到一篇好文章。它用图片通俗易懂地解释了,"数字签名"(digital signature)和"数字证书"(digital certificate)到底是什么。我对这些问题的理解,一直是模模糊糊的,很多细节搞不清楚。读完这篇文章后,发现思路一下子就理清了。为了加深记忆,我把文字和图片都翻译出来了。文中涉及的密码学基本知识,可以参见我以前的笔记。数字签名:将报文按双方约定...

2018-03-07 13:07:06 490

转载 字节序(byte order)和位序(bit order)

字节序(byte order)和位序(bit order) 在网络编程中经常会提到网络字节序和主机序,也就是说当一个对象由多个字节组成的时候需要注意对象的多个字节在内存中的顺序。  以前我也基本只了解过字节序,但是有一天当我看到ip.h中对IP头部结构体struct iphdr的定义时,我发现其中竟然对一个字节中的8个比特位也区分了大小端,这时我就迷糊了,不是说大小端只有在多个字节之间

2018-01-10 20:05:01 4028 3

粒子群算法解决TSP问题

粒子群算法解决旅行商问题,c++实现,完整源代码,可直接运行

2015-06-20

zigbee开发工具使用说明

zigbee开发环境安装说明,zigbee协议栈安装说明以及仿真器使用和驱动程序安装说明

2014-10-17

zigbee网络建立与加入

TI公司推出的zigbee协议栈,介绍了网络的建立过程,并对节点加入网络做了分析,对代码进行了详细的说明

2015-02-19

zigbee无线网络和收发器 译文 mac部分

zigbee无线网络和收发器一书的MAC部分的译文,主要介绍了802.15.4协议的mac层

2015-04-10

计算机专业英语

计算机专业的必备英语知识,还附有最新计算机领域的新动态

2012-11-09

ZigBee.Wireless.Networks.and.Transceivers

zigbee无线网络和收发器 被称作zigbee领域的葵花宝典,全书虽为英文,但读起来也并不困难,通俗易懂,结构清晰

2014-07-23

frank_jb的留言板

发表于 2020-01-02 最后回复 2020-01-02

空空如也

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

TA关注的人 TA的粉丝

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