- 博客(25)
- 资源 (3)
- 收藏
- 关注
原创 从零开始学Linux下C语言编程第三课——数据类型
前面大概讲了一下开发环境的搭建,今天就开始正式进入正题了。首先大家肯定明白的一个道理,在计算机的世界里面,机器运行的是二进制(0-1),而我们常用的是十进制(0-9)。这是其一,另外一个点就是比特(bit)和字节(Byte)的区别,8的关系。1Byte = 8bit,这个是不变的。在我们十进制是逢十进一,那么二进制就是逢2进1。高低位通十进制一样,按照人类的阅读习惯,高位在左,低位在右即可。计算方法,以十进制举例 123 = (310 ^ 0) + (210 ^ 1) + (110 ^ 2)那么 二进
2021-07-11 22:01:32 481 1
原创 从零开始学Linux C语言编程第二课——文件服务器配置以及vim基于使用
这一节内容比较简单,大致说一下就好,我争取明天继续更新一篇,直接进到C语言的正题里面来。因为我们是在windows下搭建虚拟机的形式来做开发。所以会存在文件系统的问题。可能大伙工作中也是这样,办公pc是windows。但是编译服务器丢在机房。这就涉及到文件同步的问题。常用的比如samba服务,在linux端搭建一个samba服务器,开启samba服务。sftp服务器等。还有其他的很多好用的文件服务协议。今天就讲samba和sftp这两种。1 samba首先开启samba服务需要配置samba的配置vi
2021-07-10 16:52:51 337 1
原创 从零开始学C语言第一课——linux编译环境搭建+hello world!
这是我自己的写的从零开始学C语言的第一节内容,抛弃掉学校的VC环境,直接从linux环境开始,毕竟针对C语言来说,工作中我是真的没见过用VC开发的。工欲善其事必先利其器。话不多说,直接开整。如果你有linux物理机当然就可以忽略这一步。但是应该好多人都是windows或者mac os吧。针对windows用户来说,有些比较好用的虚拟机工具可以来跑linux系统。我自己习惯了vmware。当然还有VirtualBox,Hyper-V等比较好用的东西。下面安装就直接上linux公社给的教程即可。http:/
2021-07-04 18:08:54 955 13
原创 linux asan和objdump排查内存泄露以及coredump
在linux C语言开发中,内存泄漏是很多人都会遇到的问题,linux下有很多内存检测的工具,比如valigard可以在跑覆盖率的同时检测到内存泄漏。不过这个工具好像对性能影响较大。后来gcc 直接引入了自己的检测工具,asan,对应内核有kasan 最近也是用上了这个工具,还是挺强大的。具体内容和编译方法可以参考官网:http://gcc.gnu.org/onlinedocs/gcc/Instrumentation-Options.html我的编译器版本信息如下:看下asa..
2021-06-06 16:13:53 1477 1
原创 不同架构下C语言char的表达意思
在读书的时候,就记得char默认表示singned char sizeof(char) = 1,其表示范围:-128~127;当时还写了各种验证程序求各种数据类型的占用字节数已经表示范围,还有各种无符号的数据类型的死循环等问题。写个代码来看下:这是我主机的架构,下面是代码:编译运行,sizeof=1, 按照有符号整型输出,c = -1;到这里一切都没问题。但是这只是在x86平台下。由于我当前手里没有arm架构的平台。所以会验证不了。情况就是,在一些arm平台下,char默认就认为是unsigne
2021-05-09 16:59:48 219
原创 高通u-boot关闭crash dump
在高通的u-boot中有这么一个功能,当系统以外挂死的情况下,重启进入u-boot之后会dump debug文件到tftp server上,这个文件看情况而定,可能会很大。这里可能会影响到我们客户的使用。所以发布版本一般会关掉。在u-boot代码中搜索到出现crash dump时的打印。会看到有个crash dump的宏出现。记下这个宏。1.在头文件和配置中关掉这个宏。重新编译-> 我的结果是引导失败了。2.打开宏,但是makefile中屏蔽掉crashdump的编译,然后其他依赖的地方注释掉,
2021-05-01 20:22:44 1615 2
原创 u-boot中喂狗操作
好久没有写内容了。上班太忙了。趁着五一忙里偷闲写点东西。前些天遇到个问题,在调试一块新硬件的时候遇到了一个问题。我们在板上增加了一部分看门狗电路(看门狗的左右就不赘述了吧),一般来说我们都是在进入系统之后才开始激活看门狗并喂狗。但是我们的看们狗电路有个问题就是,激活脚在u-boot下是默认使能的,导致看门狗就被激活了。然后我们的内核又比较大。导致u-boot还在解压内核的时候看门狗就复位了。裁剪内核是不可能裁剪内核的。还是老老实实去u-boot中喂狗吧。在u-boot中其实是存在看门狗的一些隐藏动作的,
2021-05-01 20:13:40 2823
原创 boot和内核中寄存器操作的区别
uboot下和内核下操作cpu寄存器的区别文件为转载基础上加上自己遇到的具体现象,转载地址为:https://blog.csdn.net/csdnxmj/article/details/105753733#1.在uboot中操作CPU寄存器#include <asm/io.h>reg = readl(PHY_ADDR);reg &= ~IOMUXC_REG_GPR1_ACTCS0_MASK;writel(reg, PHY_ADDR);其中PHY_ADDR是物理地址,跟踪
2020-11-09 16:37:33 362
原创 静态库的编译和使用
上次简单写了个动态库的示例,详情见https://blog.csdn.net/weixin_34153142/article/details/106458435今天讲一下静态库的编译和使用吧。静态库是在程序编译时直接将静态库编译进去,运行时不再需要将库的符号内容加载到内存,编译出来的程序占用空间也会变大。如果静态库修改了,就需要重新编译调用库的程序。编译的话,直接就使用上次的代码进行编译:gcc -c test_lib.c -o test_lib.oar crv libtest.a test_li
2020-06-21 18:46:24 3240
原创 windows打流工具IxChariot使用教程
IxChariot是在windows端比较好用的打流工具之一,主要是图形界面友好,配置起来比较方便快捷。IxChariot分为两部分,一部分可以理解是配置工具,另一部分是负责统计发包和收包的服务工具。配置工具就是图形界面:服务工具我们需要到windows的服务里面看:windows+R 键入services.mscEndpoint服务,这个我们手机端也可以装,ios的可以直接到appstore搜索IxChariot EP可以找到,安卓端的现在不太好找。有了这两个东西,之后我们要测试转发的话,有线还是
2020-05-31 18:10:42 55702 7
原创 手把手教你手写动态库
我们开发过程中会把一些很多的公用的东西封装成一个动态库供调用者使用,这样就能避免代码的冗余,动态库相较于静态库的好处就是动态库在程序执行时才加载,不会编译到本身的执行程序中,减少可执行文件的大小,另外,如果动态库对外接口没变,只改变了接口的实现的算法的话就可以不用重新编译程序,直接重新编译动态库,替换就好。还有我们在动态库中可以很好地保护数据,不通过库接口是无法查询和改变数据的,类似C++的私有数据。今天我们就来写一个测试动态库。test_lib.c文件:#include <stdio.h>
2020-05-31 17:50:40 499
原创 Cisco PacketTrace模拟NAT
上一篇博客讲了搭建思科的网络模拟器,随后我就研究了一下NAT,开始是怎么也搭建不出来这个环境,后来我干脆在我自己的路由器上用tcpdump在wan口进行抓包,抓出来的全是NAT之后的报文,里面的IP全是通过转换之后的wan口的ip。还是要用模拟器模拟一下:首先搭建好环境,只是简单的测试,所以搭建一个最简单的环境如下:物理链路通了,在路由侧肯定是要进行NAT的配置的,否则,报文是不会进行NA...
2020-05-05 19:09:59 652
原创 思科网络模拟器环境搭建以及基本使用(搭建简单的网络拓扑和抓包)
最近因为公司部门的赋能培训讲到了网络的知识,因为之前自己只做过二层的一些工作,并且只是二层里面的一小部分,对三层的内容似懂非懂。有很多的细节还不知道,公司大佬也有推荐了一些学习方法,所以趁着五一赶紧实践一下。大佬推荐的工具有比如思科,华为华三的模拟器这种。开始我是想着,直接用国内的华为或者华三来模拟网络拓扑。结果华三的HCL存在着和win10的各种问题以及vitualbox的兼容问题,我断断续续...
2020-05-02 16:47:08 10629 1
原创 Linux的crontab定时任务
我们在c语言开发的过程中总会或多或少的遇到一些定时的任务,比如每分钟检测一下某个状态,每30s上报一次心跳等等。比如我们51单片机的时候就会用手写延时函数来做,这种会阻塞。高级一点的会用定时器中断。然后c语言也会有定时器,这都是一些方法。今天来讲一下linux的定时任务 crontab首先我们在我们的终端上敲一下看看linux-xv9p:~/lyx_test/crontab # crontab...
2020-04-19 18:15:56 207
原创 C语言处理csv文件
我们经常会用c语言去处理一些文本文件,脚本文件等等,但是可能会遇到的情况有,我们需要去处理一个excel表格这种东西,例如xxx.csv文件,一时间就会无从下手。这也非常简单,和普通文本无差。跟我来看。假设我有如下的.csv文件:有三行,假设分别对应名字,年龄,年纪这个学生的信息。那么粗暴一点,直接用notepad++打开这个文件看看。这不就是把数据用逗号隔开嘛。好了写代码操作他。#i...
2020-04-14 23:00:16 2726 3
原创 protoc-c的基本使用以及proto文件与C语言的联合测试
上一篇环境搭建中安装好了protoc-c工具,见链接https://blog.csdn.net/weixin_34153142/article/details/105313765protoc-c工具在如下目录/usr/local/protobuf-c/bin/protoc-c这是一个链接文件,为了方便在任何目录下都能直接使用工具,在/usr/local/bin下简历一个针对protoc-...
2020-04-04 19:47:07 4216 1
原创 protobuf-c环境搭建_Linux
因为最近工作用到了protobuf,感兴趣的自己去百度一下这个东西是啥,怎么用的。放假期间,就自己先研究一下这个东西,所以本文就描述一下protobuf-c的环境搭建。环境依赖以下三个工具,一般都会有没有安装一下就好了autoconf automake libtool 源码安装也好,linux下的安装工具安装也行,都可以。protobuf源码:https://github.com/go...
2020-04-04 17:56:03 1289
原创 C语言实现简单的http服务器(五毛钱的百度)
http协议是我们经常会用到的一个协议,比如浏览一个网站的时候,就会用到,http://www.xxx.xxx 这样的形式,有些时候不输入http就默认补充上,也有些是https,是针对http的一个升级版,是加密的,http是明文传输,在安全性上是有问题的。今天就用c语言实现一个简单的http server,作为server就要监听来自客户端的访问,访问的内容同样也要回传给客户端。那么就可以用...
2020-04-04 15:57:59 1932
原创 空结构体和零长数组
空结构体和零长数组所占内存今天突然看到一个有趣的东西,一个空的结构体占用内存空间是怎样的,就如下结构体:struct test{};只定义一个结构体,结构体成员变量为NULL;那么sizeof(struct test) = ?,既然有定义,就应该要有内存分配,但是成员变量为空,那么就是分配内存。这就有了矛盾。到底是有内存还是没有。可以测试一下。#include <stdio.h&...
2020-03-26 14:14:02 200
原创 判断两条单链表是否相交(C语言)
C语言判断单链表相交链表是一种很常见的存储数据方式,链表有单向的、双向的、循环的,有头结点的,无头结点的等等,一般是看自己的需求去设计和实现这个链表。很多时候针对链表这种数据结构也会出现形形色色的面试题。比如常见的单链表反转,怎么判断两条单链表是否相交,怎么判断单链表是否有环存在,怎么快速取到单链表的倒数第n个节点等等这种。链表的基本数据结构就不多说了。讲一下常见的两条链表判断是否相交的情况。...
2020-03-22 19:42:30 814 1
原创 C语言结构体字节对齐
C语言结构体字节对齐C语言结构体字节对齐在学习C语言的过程中,不可能永远的只使用变量来做操作,在一些特殊的情况下需要存储更多的内容的时候,比如我们在学习c语言时的练习题,做一个仓库管理系统或者学生信息管理系统这种东西的时候,就会使用到结构体,可能在初学的时候在pc上不会去考虑过多的字节对齐的问题。因为我们的内存还是比较啊够用的。但是工作中会尽可能的裁剪你的系统,裁剪你的硬件,做到能省就省,毕...
2020-03-21 18:44:35 354
原创 C语言实现哈希表
C语言实现哈希表在某种情况下我们可能要从一个非常大的数据结构中去查询某些数据是否存在,不用考虑内存占用,只要求查找起来非常快,要怎么做?遍历肯定能实现,但是查找速度感人,用数组,链表去存储都不太合适。然后有一种很神奇的数据结构可以实现O(1)时间复杂度的查找。那就是哈希表。取这些数据的比较单一的特征作为键值,然后通过键值去映射存储位置,去存储和获取数据。速度感人,但是空间牺牲比较大。在某些及其追...
2020-03-14 21:07:06 8447 4
原创 C语言offsetof用法以及其扩展用法
标题C语言offsetof用法以及其扩展用法offsetof由于不是标准库的函数,所以得查一下,在stddef.h中,搜索一下编译器的这个头文件位置:暴力一点,直接在根目录下搜索,find -name “stddef.h”,找到了这个/usr/lib/gcc/i586-suse-linux/4.8/include/stddef.h打开看下文件内容,找到offsetof/* Offset...
2020-03-11 22:45:46 2345
原创 C语言结构体使用memcmp比较是否相等
标题C语言对结构体使用memcmp在软件开发中,经常会遇到对字符串,内存比较的处理,我们通常很少会自己手写一遍比较函数,会调用C语言库函数进行处理,如strcmp,strncmp,memcmp等。面试的时候,面试官经常会问过类似这样一个题目,这个题目考的内容就是基础的字节对齐问题的扩展,觉得有必要写一下。问题描述:有如下结构体:struct test{ int member_a; ...
2020-03-09 20:19:55 3150
原创 802.11AX无线速率计算
802.11AX(WIFI6)无线协商速率计算从2019年末的iphone11系列开始,到后来的三星S10,在手机参数中总会有WIFI6这么一条参数,这里的WIFI6就是802.11的一个比较新的协议规范:802.11AX。因为笔者软件出生,对射频了解的不多,基本上也是靠查查找到,学习到了无线速率的计算方法,因为手头上的相关WIFI6的资料有限,网上...
2020-03-06 21:31:39 15072
pdf加自定义水印小工具
2021-07-08
CodeReview.em
2020-08-23
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人