自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Uaena的博客

记录与分享自己的学习成果

  • 博客(45)
  • 收藏
  • 关注

转载 主机字节序与网络字节序的转换函数:htonl、ntohl、htons、ntohs【转】

(转自:https://blog.csdn.net/kulala082/article/details/53431473)Part 1: htons函数具体解释 在Linux和Windows网络编程时需要用到htons和htonl函数,用来将主机字节顺序转换为网络字节顺序。 在Intel机器下,执行以下程序int main(){ printf("%...

2018-11-29 21:26:55 5934 1

转载 数组、链表、栈和队列【转】

(转自:http://www.cnblogs.com/fengmin/p/5015916.html)数据结构:是指相互之间存在一种或多种特定关系的数据元素的集合。听起来是不是很抽象,简单理解:数据结构就是描述对象间逻辑关系的学科。比如:队列就是一种先进先出的逻辑结构,栈是一种先进后出的逻辑结构,家谱是一种树形的逻辑结构!(初学数据结构的时候很不理解为什么有“栈”这个东西;队列很容易理解-...

2018-11-16 13:55:37 225

转载 数组、链表、栈、队列和STL【转】

(转自:https://www.cnblogs.com/tpys/p/3568528.html)数组数组是一种最基本的数据结构,它是内存上的一块连续存储空间。正因如此数组的随机访问很方便。但数组也有其固有的限制,大小分配后不能改变。STL中的数组STL中的Array是静态数组模板,就是我们所说的数组。使用方法如下。std::array<int, 3&gt...

2018-11-16 13:23:48 274

转载 基于数组和链表两种方式实现栈(java)【转】

(转自:https://blog.csdn.net/u012922219/article/details/52624341)实现栈的两种方式,基于数组实现和基于链表实现。1.stack接口public interface StackADT { //入栈操作 public void push(Object element); //出栈操作 public Object...

2018-11-16 11:13:08 211

转载 使用栈实现表达式求值(C++)【转】

(转自:https://blog.csdn.net/BestFSQ/article/details/55823298)算法基本思想如下:(1)首先将操作数栈opval设为空栈,而将'#'作为运算符栈opter的栈底元素,这样的目的是判断表达式是否求值完毕。(2)依次读入表达式的每个字符,表达式须以'#'结尾,若是操作数则入栈opval,若是运算符,则将此运算符c与opter的栈顶...

2018-11-15 21:15:35 2650 1

转载 “栈”的典型应用—表达式求值(C语言实现)【转】

(转自:https://blog.csdn.net/yuluows/article/details/7657944)我们都知道算术四则运算的运算规则是:先乘除,后加减。从左到右计算先算括号内,再算括号外表达式组成任何一个表达式都有操作数、运算符和界定符组成。操作数即可以是常量,也可以是被说明为变量或常量的标识符。运算符可以分为算术运算,关系运算和逻辑运算符。...

2018-11-15 20:25:07 1097

转载 栈在表达式计算过程中的应用【转】

(转自:https://blog.csdn.net/believe_s/article/details/76473908)栈在表达式计算过程中的应用 :建立操作数栈和运算符栈。运算符有优先级。规则:自左至右扫描表达式,凡是遇到操作数一律进操作数栈。当遇到运算符时,如果它的优先级比运算符栈栈顶元素的优先级高就进栈。反之,取出栈顶运算符和操作数栈栈顶的连续两个操作数进行运算,并将...

2018-11-15 19:45:51 246

转载 atexit函数详解【转】

(转自:https://blog.csdn.net/leex_brave/article/details/51813962)前面我们关注的是程序开始进入时的调用函数,而atexit函数是一个特殊的函数,它是在正常程序退出时调用的函数,我们把他叫为登记函数(函数原型:int atexit (void (*)(void))):⼀个进程可以登记若⼲个(具体⾃⼰验证⼀下)个函数,这些...

2018-11-14 17:02:37 189

转载 send和recv只是内核缓冲区和应用程序缓冲区之间的搬运工---严格来讲send和recv并不具备发送和接收功能【转】

(转自:https://blog.csdn.net/stpeace/article/details/43719449)下面, 我们看一幅图, 了解一下send和recv函数所处的位置(这幅图是我在网上找的, 不太清晰, 请凑合看一下):为了简便起见, 我们仅考虑单向的数据流, 即A(客户端)向B(服务端)发送数据。 在应用程序Program A中, 我们定义一个数组char ...

2018-11-14 15:49:47 246

转载 巧夺天工的kfifo(修订版)【转】

(转自:https://blog.csdn.net/linyt/article/details/53355355#commentBox)多年以前写了篇《巧夺天工的kfifo》文章,最近有好位网友发消息讨论kfifo实现细节。发现原文有些细节没有说得很清楚,甚至有点啰嗦,于是趁今晚有空修订一下。Linux kernel里面从来就不缺少简洁,优雅和高效的代码,只是我们缺少发现和品味的...

2018-11-14 15:16:07 217

转载 source insight的查找功能【转】

(转自:https://blog.csdn.net/kobesdu/article/details/38084709)source insight是一款很好的c语言的程序编辑器,方便对project管理,方便程序的阅读和编辑。查找功能使用十分频繁,选项较多,与其它软件的查找功能也类似,下面对英文版的查找功能,做简单说明:查找参数:whole words only : ...

2018-11-14 14:39:16 283

转载 史上最经典的Linux内核学习方法论【转】

(转自:https://blog.csdn.net/u013951778/article/details/52749001)  从前在学校,混了四年,没有学到任何东西,每天就是逃课,上网,玩游戏,睡觉。毕业的时候,人家跟我说Makefile我完全不知,但是一说Make Love我就来劲了,现在想来依然觉得丢人。  毫不夸张地说,Kconfig和Makefile是我们浏览内核代码时最为依仗的...

2018-11-14 14:28:38 809

转载 一张图看尽Linux内核运行原理【转】

(转自:https://www.jb51.net/article/77381.htm)众所周知的是,几乎整个互联网都运行在 Linux 上,从网络协议,到服务器,到你平常访问的绝大多数网站,都能看到它的身影。Linux 内核就是最复杂最流行的开源项目之一。如果你希望学习内核知识,在网上可以搜到无数的资料,但是 Linux 内核还是一个非常难弄明白的项目。俗话说:一图胜千言,今天我们就...

2018-11-14 14:25:46 1884

转载 Linux内核结构体--kfifo 环状缓冲区【转】

(转自:https://blog.csdn.net/yusiguyuan/article/details/41985907)最近项目中用到一个环形缓冲区(ring buffer),代码是由linux内核的kfifo改过来的。缓冲区在文件系统中经常用到,通过缓冲区缓解cpu读写内存和读写磁盘的速度。例如一个进程A产生数据发给另外一个进程B,进程B需要对进程A传的数据进行处理并写入文件,如果...

2018-11-14 11:21:32 408

原创 理解分析 循环缓冲区的 读取和写入 的过程和特点

linux中的kfifo循环缓冲区设计得很精妙,使用循环队列的数据结构。特点使用并行无锁编程技术,即当它用于只有一个入队线程和一个出队线程的场景时,两个线程可以并发操作,而不需要任何加锁行为,就可以保证kfifo的线程安全。 将in,out 设计为为无符号整数,巧妙地利用溢出规则,保证了fifo读写正确,还可以减少很多判断处理。 缓冲区大小size要求必须是2的幂次,这样的话对kfif...

2018-11-13 14:16:01 1505

转载 深入理解linux内核kfifo【转】

(转自:http://blog.chinaunix.net/uid-18770639-id-4203078.html)项目中要用到ringbuffer,一直都是自己造轮子,调试中才发现经常会出问题,主要是没有加内存屏障。近期自己学习了linux kernel的kfifo,才发现原来内核对于ringbuffer,早就实现了一套,而且代码之精妙,一般人很难想到。不同于我们自己造轮子的定长ri...

2018-11-13 12:48:05 624

转载 循环缓冲区(参考linux内核Kfifo)【转】

(转自:https://blog.csdn.net/jnu_kinke/article/details/7274651)1循环缓冲区在一些竞争问题上提供了一种免锁的机制,免锁的前提是,生产者和消费2都只有一个的情况下,否则也要加锁。下面就内核中提取出来,而经过修改后的fifo进3行简要的分析。45先看其只要数据结构:6structmy_fifo {7unsig...

2018-11-13 11:50:01 472

转载 圆形缓冲区(循环buffer)实现【转】

(转自:https://blog.csdn.net/hbuxiaofei/article/details/51463662#commentBox)用法圆形缓冲区的一个有用特性是:当一个数据元素被用掉后,其余数据元素不需要移动其存储位置。相反,一个非圆形缓冲区(例如一个普通的队列)在用掉一个数据元素后,其余数据元素需要向前搬移。换句话说,圆形缓冲区适合实现先进先出缓冲区,而非圆形缓冲区适...

2018-11-13 11:49:52 352

转载 Linux内核中的循环缓冲区【转】

(转自:https://blog.csdn.net/heanyu/article/details/6291825)循环缓冲区定义在include/linux/kfifo.h中,如下:struct kfifo { unsigned char *buffer; // buffer指向存放数据的缓冲区 unsigned int size; // size...

2018-11-13 11:49:41 270

转载 C语言环形缓冲fifo实现【转】

(转自:https://blog.csdn.net/humanspider1/article/details/80965513)#define BUFFSIZE 1024 * 1024 #define min(x, y) ((x) < (y) ? (x) : (y)) pthread_mutex_t lock = PTHREAD_MUTEX_INITIALIZER; ...

2018-11-12 17:10:05 381

转载 有符号整数与无符号整数相加问题【转】

(转自:https://blog.csdn.net/tkp2014/article/details/48500249)题目1#include<stdio.h>int main( ){ unsigned int a = 6; int b = -20; (a + b > 6) ? printf(">6") : printf("<=6"...

2018-11-12 17:05:53 5496

转载 linux dmesg命令参数及用法详解(linux显示开机信息命令)【转】

(转自:https://blog.csdn.net/zhongyhc/article/details/8909905)扩展阅读一:dmesg命令主要用途主要应用:dmesg用来显示内核环缓冲区(kernel-ring buffer)内容,内核将各种消息存放在这里。在系统引导时,内核将与硬件和模块初始化相关的信息填到这个缓冲区中。内核环缓冲区中的消息对于诊断系统问题通常非常...

2018-11-12 15:24:59 508

转载 dmesg七种用法【转】

(转自:https://www.cnblogs.com/zhaoxuguang/p/7810651.html)dmesg 命令的使用范例‘dmesg’命令设备故障的诊断是非常重要的。在‘dmesg’命令的帮助下进行硬件的连接或断开连接操作时,我们可以看到硬件的检测或者断开连接的信息。‘dmesg’命令在多数基于Linux和Unix的操作系统中都可以使用。下面我们展示一些最负盛名的...

2018-11-12 15:08:04 239

转载 dmesg 总结【转】

(转自:https://blog.csdn.net/abcd1f2/article/details/73293533)在dmesg里我们可以查看到开机信息,printk产生的信息等。若研究内核代码,在代码中插入printk函数,然后通过dmesg观察是一个很好地方法。2.dmesg输出含义dmesg 输出的数字含义是什么,纠结了一会儿,下面给出解释终端输入dmesg,可...

2018-11-12 15:01:04 1887

转载 图解Linux命令之--dmesg命令【转】

(转自:https://blog.csdn.net/Jerry_1126/article/details/54643018)【dmesg命令作用】:有时候屏幕上的启动信息一闪而过,我们无法查看到具体信息,又或者服务器在电信机房,更看不到开机启动信息。这时候linux提供了dmesg这条命令。在命令行下敲入dmesg就能看到一堆的信息:1)dmesg 是一个显示内核缓冲区系统控...

2018-11-12 14:34:54 227

转载 C语言中的__FILE__、__LINE__和__func__等预定义跟踪调试【转】

(转自:https://blog.csdn.net/qq_33706673/article/details/78628202)C语言中的__FILE__、__LINE__和__DATE__等都在头文件#include<stdio.h>中如果编译器不是标准的,则可能仅支持以上宏名中的几个,或根本不支持。记住编译程序也许还提供其它预定义的宏名。__LINE__ 及 __FI...

2018-11-12 13:53:04 2550

转载 C++ 中常见预定义宏的使用【转】

(转自:https://blog.csdn.net/hgl868/article/details/7058906)在标准C以及各中编译器中定义了一些对象宏, 这些宏的名称以"__"开头和结尾, 并且都是大写字符. 这些预定义宏可以被#undef, 也可以被重定义。&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;在ANSI C标准中定义了__FILE__,__LINE__...

2018-11-12 13:49:43 785

原创 调试技巧:封装printf打印调试信息和宏定义开关

/* #define DEBUG */#ifdef DEBUG #define DEBUG_ERR(format, ...) \ do{ \ printf("\r\n"); \ printf("FILE: "__FILE__", LINE: %05d: "format,__LINE__,##__VA_ARGS__); \ pri...

2018-11-12 12:12:08 1041

转载 用指针输出结构体数组【转】

(转自:https://wenku.baidu.com/view/6511f01477c66137ee06eff9aef8941ea76e4bac.html)#include <stdio.h> #include <string.h>#include <math.h> int main(void) {  struct Student...

2018-11-12 10:48:30 3278

转载 浅析exit()和atexit()函数【转】

(转自:https://blog.csdn.net/wy1550365215/article/details/70216750)当内核使用一个一个exec函数执行c程序时,在调用main函数之前先调用一个特殊的启动例程,可执行程序需将此例程指定为程序的起始地址。启动例程从内核获取命令行参数和环境变量,然后为调用mian函数做好准备。exec函数说明:fork函数是用于创建一个子...

2018-11-10 14:54:25 205

转载 虚拟地址和物理地址的关系【转】

(转自:https://zhidao.baidu.com/question/917828597617777259.html?qbl=relate_question_3&word=%CE%AA%CA%B2%C3%B4%D2%AA%D2%FD%C8%EB%D0%E9%C4%E2%B5%D8%D6%B7%D5%E2%B8%F6%B8%C5%C4%EE%3F%CB%FC%CA%C7%D3%C...

2018-11-10 10:32:00 748

转载 使用readelf和objdump解析目标文件【转】

(转自:https://www.jianshu.com/p/863b279c941e)引言本文是对程序员的自我修养:链接、装载与库中第3章的实践总结(和结构相关的示意图都是用Gliffy Diagrams画的

2018-11-08 22:07:04 236

转载 linux中的strip命令简介------给文件脱衣服【转】

(转自:https://blog.csdn.net/stpeace/article/details/47090255)我们来看main.c文件:#include <stdio.h>int add(int x, int y){ return x + y;}int aaa;int bbb = 1;char szTest[] = "good";...

2018-11-08 22:06:59 883

转载 技巧性极强的strings命令【转】

(转自:http://www.cnblogs.com/saolv/p/9684066.html)打印文件中的可打印字符串(print the strings of printable characters in files)。常用来在二进制文件中查找字符串,与grep配合使用。strings命令输出的字符串长度为4个或4个以上的,长度小于4的字符串将不予打印,我们可以通过-n参数调整,s...

2018-11-08 22:06:52 517

转载 查看当前系统的glibc版本【转】

(转自:https://www.cnblogs.com/dux2016/p/6229283.html)1. CentOS/lib/i386-linux-gnu/libc.so.6或rpm -qi glibc或ls -l /lib/libc.so.62. Ubuntuls -l /lib/i386-linux-gnu/libc.so...

2018-11-08 22:06:43 499

转载 深入理解LINUX下动态库链接器/加载器ld-linux.so.2【转】

(转自:https://blog.csdn.net/elfprincexu/article/details/51701242)最近在Linux 环境下开发,搞了好几天 Compiler 和 linker,觉得有必要来写一篇关于Linux环境下 ld.so的文章了,google上搜索了很多相关介绍性的文档,发现国内百度上却很少有相关类文档,觉得有必要来梳理一下:ld-linux....

2018-11-01 22:00:12 930

转载 不得不再聊linux中的strings命令【转】

(转自:https://blog.csdn.net/stpeace/article/details/49497961)在软件开发中, 我们经常需要修改代码, 并生成静态库、动态库或者可执行文件, 有时候, 工程太大, 那怎样确定自己改动的代码正确编译到库中去了呢? 用strings命令吧! 为了简便起见, 我们仅仅以可执行文件为例:#include <iostream>u...

2018-11-01 21:19:12 202

转载 linux中的strings命令简介【转】

(转自:https://blog.csdn.net/stpeace/article/details/46641069#commentBox)strings-printthestringsofprintablecharactersinfiles. 意思是, 打印文件中可打印的字符。 我来补充一下吧, 这个文件可以是文本文件(test.c), 可执行文件(t...

2018-11-01 21:13:48 308

转载 UNIX下的LD_PRELOAD环境变量【转】

(转自:http://blog.chinaunix.net/uid-13344516-id-79188.html)前言也许这个话题并不新鲜,因为LD_PRELOAD所产生的问题由来已久。不过,在这里,我还是想讨论一下这个环境变量。因为这个环境变量所带来的安全问题非常严重,值得所有的Unix下的程序员的注意。在开始讲述为什么要当心LD_PRELOAD环 境变量之...

2018-11-01 13:23:19 190

转载 LD_PRELOAD的偷梁换柱之能【转】

(转自:https://www.cnblogs.com/net66/p/5609026.html)一、LD_PRELOAD是什么LD_PRELOAD是Linux系统的一个环境变量,它可以影响程序的运行时的链接(Runtime linker),它允许你定义在程序运行前优先加载的动态链接库。这个功能主要就是用来有选择性的载入不同动态链接库中的相同函数。通过这个环境变量,我们可以在...

2018-11-01 12:51:05 258

空空如也

空空如也

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

TA关注的人

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