- 博客(60)
- 问答 (1)
- 收藏
- 关注
原创 从 Atom 到 VS code 文本编辑器使用心得 Visual Studio code 怎么用
介绍和概述最近尝试用了用 VS code, 写个使用心得. 网上很多同 Atom 横向对比的文章好像都偏向于 VS code 比较好用.VS code 感觉就是微软在收购 GitHub 之后,对后者的 Atom 所做的进一步的集成和优化,增加的易用性的同时,违背了 Atom 任何功能都是扩展件可替换可完全定制的原则,集成更多的常用功能,相应的配置项更加繁杂,优化其插件越多,启动速度越慢的问题,...
2019-09-10 19:51:08
4648
原创 C 关键字
C reserved keywords存储类型说明符 storage-class specifier keywords meaning auto automatic duration storage-class specifier with no linkage extern static duration storage-class specifier with either
2016-11-04 12:25:55
427
原创 C 扩展关键字
gcc 扩展关键字__attribute__设置函数属性, 变量属性, 数据类型属性等, 向编译器提供更多数据, 帮助编译器执行优化描述函数属性使用 addr2line 工具分析源代码, 统计程序的运行状态void fun() __attribute__ ((regparm(0))); //不需要通过任何寄存器来传递参数, 参数只是通过堆栈来传递voi
2016-11-04 12:25:20
862
原创 C 指针
1 C 指针指针的内容是其所指向的地址,间接访问操作符访问的是指针指向的地址,作为左值时,就是那个位置,作为右值时,就是那个位置的值。&, 取地址运算符, 引用运算符*, 间接访问运算符, 解引用运算符不能使用变量指针指向常量的地址, 因为既然通过变量名不能改变变量值, 而通过指针变量也应该是不可以的, 可以通过强制类型转换(const_cast)突破此限制 primer p222只有一层
2016-11-04 12:24:18
537
原创 C 预处理指令
1 宏定义 #define #undef1.1 宏定义概述宏定义指令定义了一个标识符(宏名)及一个字符串, 在源程序中每次遇到该标识符时, 均以定义的字符串替换它(宏替换)宏名和参数间不能有空格, 标识符和字符串间可有任意空格字符串中应习惯对宏参数加上括号, 这样使用宏时, 如果实参是表达式,则不易出错宏替换只作宏名和参数替换,不做计算,不做表达式求解宏一旦被定义后, 其宏名即可成为其它宏
2016-11-04 12:23:36
358
原创 C 函数声明, 函数原型, 函数定义
函数声明的发展1 隐式函数声明 implicit function declarationmain 函数和 printf 函数返回值类型为 int, 若不声明, 编译器默认函数返回值为 int 类型C90标准起,这种写法就步入了被逐步抛弃的过程(尽管当时还没有完全立即废止)C99废除了隐式函数声明法则(remove implicit function declaration), 省略main(
2016-11-04 12:22:49
10269
原创 C 函数库及头文件
1 函数库库本质上是一种经过编译的可执行二进制代码,可以被操作系统载入内存执行。Linux 和 Windows 等不同平台编译环境不同, 函数库不兼容。1.1 静态库 Static Library静态是指每个用到该库的应用程序都拥有一份自己的库拷贝静态库在程序编译时会被连接到目标代码中,可执行程序的体积较大, 程序运行时将不再需要该静态库, 可以删除库文件静态库生成: 使用 ar (ar
2016-11-04 12:22:01
636
原创 C 函数的可变参数列表
函数参数传递方式GCC 编译器在汇编过程中,调用 C 语言函数时,传递参数有两种方法:通过寄存器(默认)通过堆栈(使用 asmlinkage 宏)可变参数列表必须保存在栈中#define asmlinkage __attribute__((regparm(0)))asmlinkage int printk(const char *fmt, ...)告诉 GCC 编译器该函数使用0个寄存器参
2016-11-04 12:20:51
524
原创 C 语言基本概念
概述for 循环和 while 循环本质上是等价的通过地址找到一个值, 通过类型解释一个值, 这就是为什么数组名的地址同数组的第一个元素的地址, 但使用 sizeof 和 & 访问到的则是整个数组的长度和地址类对象是基于结构的 c++ primer plus 7.8 p236C 标准C89C95C99C11常量const 修饰的常变量, 本质上仍旧是变量, 字面值才是真正的常量,
2016-11-04 11:59:24
714
1
原创 C 程序文件
elf(exective linked file)elf 格式文件是一种为 Linux 系统所采用的通用文件格式, 支持动态链接和重定位, 有很大的文件头flatflat 格式文件是扁平格式的文件, 对文件头和一些段信息做了简化, 可执行程序小, 适于嵌入式系统文件格式转换elf2flt 就是将 elf 格式转换为 flt 格式, 在编译器链接的时候可使用 “-elf2flt” 选项直接编译出 fl
2016-11-04 11:57:38
504
原创 内存中堆和栈
栈栈是机器系统提供的数据结构, 现代计算机(串行执行机制)都直接在代码底层支持栈的数据结构, 有专门的寄存器指向栈所在的地址, 有专门的机器指令完成数据入栈出栈的操作栈的特点是效率高, 支持的数据类型有限, 一般是整数, 指针, 浮点数等系统直接支持的数据类型, 并不直接支持其他的数据结构子程序的调用就是直接利用栈完成的, 机器的 call 指令里隐含了把返回地址压入栈, 然后跳转至子程序地址
2016-11-04 11:55:15
313
原创 C 程序的内存空间布局
C 程序的内存空间布局表格中, 从上到下为高地址到低地址方向 segment 含义 argument and environment 命令行参数和环境变量(环境表和环境字符串) stack 栈 heap 堆 bss 未初始化数据段 data 初始化数据段 text 正文段1. 自由存储区: C++中, 堆是由 new 和 delete 管理的,
2016-11-04 11:54:20
2089
原创 atom 编辑器使用 gbk 编码查找替换显示乱码及查找不到头文件等问题
1. 乱码gbk 和 utf8 相互转换会出现锟斤拷乱码2. 查找替换乱码查找面板中,只支持 utf8 编码,gbk 编码的中文注释会显示乱码3. 查找不到头文件中的标识符、使用在项目中查找时,头文件中的标识符找不到,utf8 则没问题
2016-08-18 15:48:35
2184
原创 stdarg(3) variable argument lists 可变参数列表
1. 可变参数列表的实现GCC 编译器在汇编过程中,调用 C 语言函数传递参数有两种方法:通过堆栈通过寄存器(默认)若想通过堆栈传递参数,需在定义 C 函数时在函数前加上宏 asmlinkageasmlinkage int printk(const char *fmt, ...)正常来讲,函数原型中具有确定的参数类型和数量,保证了函数调用的准确性。如果在调用函数时,使用不同类型的不同数量的参数
2016-07-15 18:18:12
385
原创 UNIX 时间和日期例程
1. 时间计量系统时间计量系统有:世界时(UT),国际原子时(TAI),格林尼治标准时(GMT),协调世界时(UTC)等等。北京时间比 UTC 时间早8小时UTC时间是1999年1月1日00:00北京时间是1999年1月1日08:002. UNIX 系统时间值UNIX 系统使用2种不同的时间值1. 日历时间以协调世界时(UTC, Coordinated Universal Time)计量绝对时间
2016-07-10 08:49:24
482
原创 Firewall 防火墙基础
防火墙技术防火墙是用于阻止计算机之间直接通信,位于两个或多个网络间,实施网络之间访问控制的组件集合。 技术 协议栈 判据 检测内容 逻辑位置 物理位置 代表 静态包过滤 网络层 访问控制表 源地址, 目的地址 网络边界 负责内外网络转换的网关, 个人计算机 已退出市场 动态包过滤 网络层, 传输层 访问控制表 端口号, 协议状态
2016-07-06 16:15:33
966
原创 在 Atom 编辑器中使用代码段 snippets 编写 Markdown 文本
1. 截图2. 代码段1. 查看当前可用的代码段 snippetsalt-shift-S2. 默认快捷键配置'atom-text-editor:not([mini])': 'alt-shift-S': 'snippets:available'3. 代码段汇总按下快捷键后,按 tab 键,即可显示出代码段效果 按键 功能 含义 b bond text 粗体 img e
2016-07-06 15:43:09
2377
原创 Xshell 配置方案
1. 使用串口登录远程主机确保串口线连接正确,在windows 下使用 devmgmt.msc 命令打开设备管理器,查看正确连接的串口号协议选择 SERIAL输入正确的串口号和合适的波特率2. 使用 SSH 协议登录远程主机选择 SSH 协议输入主机 IP 地址端口号设置为22使用 ssh 命令登录3. 配色方案ANSI Colors第1行为常规文本,第2行为粗体文本第2行比第
2016-07-05 13:09:20
2119
翻译 errno(3) 线程局部变量
注意 NOTEA common mistake is to do一个常见的错误是像下面这样if (somecall() == -1) { printf("somecall() failed\n"); if (errno == ...) { ... }}where errno no longer needs to have the value it had upon return
2016-07-04 13:45:09
711
原创 grep(1) 正则表达式文本查找工具
匹配器就是查找文本所用的正则表达式的种类。好比用 google 搜索还是用 baidu 搜索。匹配控制就是匹配的规则,如何匹配。匹配哪个或哪些样式,匹配样式来自输入还是来自文件,匹配样式是否忽略大小写,获取满足匹配的文本还是获取不满足匹配的文本,按单词匹配或者按行匹配。正常情况下,输出打印的是满足选项和样式的行。但是,我们有时候不需要显示每个行,或者满足条件的行太多,我们只需要统计满足的行数即可。
2016-07-04 11:33:35
1303
原创 iOS Foundation 基础框架
基本的函数的使用,不多做介绍,代码敲一遍就明白了。。NSObject 基类1. NSString 字符串类1. NSSttring1. C 风格字符串和 OC 风格字符串之间的转换#import <Foundation/Foundation.h>int main(int argc, const char * argv[]) { @autoreleasepool { char
2016-07-03 22:07:46
713
原创 iOS OOP 面向对象编程基本概念
1. 面向对象的基本概念面向对象编程 (OOP, Object Oriented Programming)面向对象分析 (OOA)面向对象设计 (OOD)1. 对象(实例)和抽象(类)对象到类为抽象化类到对象为实例化2. 对比Simula 67 学派 (C++)Smalltalk 学派 (Objective-C)2. 类和对象的基本概念1. 实例化对象Foundation 框架NSObjec
2016-07-03 14:27:41
1851
原创 UNIX/Linux 系统实现限制
1. 操作系统实现限制标准定义了操作系统在实现时的限制规定某些最大值最小(至少)是多少,实际实现中可以更大,严格符合此标准的应用则应小于这个最小值规定某些最小值最大(最多)是多少,实际实现中可以更小,严格符合此标准的应用则应大于这个最大值即实际的实现范围应比标准规定的范围更广,这样可以满足更大的需求即严格符合标准的应用应在标准规定的范围内,这样比较具有可移植性标准定义的限制值往往加了 _P
2016-07-03 10:41:13
1082
原创 UNIX/Linux 下命令和脚本中的特殊符号
1. \ (反斜杠)功能:命令前加上反斜杠,可以忽略掉 alias 的指定参数例如:rm 命令默认有 -i 参数,用于互动询问,则可以用 \rm 忽略这个参数参考:《鸟哥的 Linux 私房菜》P1722. \ (转义字符)功能:用cd命令切换到带有空格的目录名中时,除了可以用双引号将目录名扩起来,还可以输入反斜杠加空格来对空格符进行转义例如:cd The\ Big\ Bang\ Theory参考:
2016-07-03 08:54:19
3699
原创 UNIX/Linux 下终端控制字符
可用 stty 命令设置终端输入环境 按键 功能 说明 ctrl-c 中断 intr 送出一个中断信号给目前正在运行的进程(不可以是后台进程) ctrl-\ 退出 quit 终止目前的命令,会向进程发信号 ctrl-? 删除 erase 向后删除字符 ctrl-u kill 删除在目前命令行上的所有文字,在提示符下,将整行命令删除 ctr
2016-07-03 08:37:07
1043
原创 UNIX/Linux 下文件类型及权限
1. 文件类型7种文件类型 表示符号 文件类型 - ASCII / Binary data d directory l link b block c char s socket p pipe2. 文件权限文件和目录的权限的含义 操作 含义 读文件 读取文件内容 写文件 编辑文件内容(新增和修改文件内容,而不是文件本
2016-07-03 08:19:57
893
原创 IEEE POSIX 标准
1. 必须的头文件 头文件 说明 aio.h cpio.h dirent.h 目录项 dlfcn.h fcntl.h 文件控制 fnmatch.h glob.h grp.h iconv.h 代码集变换实用程序 langinfo.h monetary.h netdb.h nl_t
2016-07-02 12:31:38
1048
原创 ISO C 标准
ISO C 库可以分成24个区(头文件) 头文件 说明 assert.h complex.h ctype.h errno.h 出错码 fenv.h float.h 浮点常量及特性 inttypes.h iso646.h limits.h 实现常量 locale.h math.h setj
2016-07-02 12:04:34
911
原创 restrict 关键字
restrict 关键字是在ISO/IEC 9899:1999中更新的。restrict 关键字告诉编译器,哪些指针引用是可以优化的,其方法是指出指针引用的对象在函数中只通过该指针进行访问。
2016-07-02 11:47:50
330
原创 Swift 语法
1. 常量和变量使用 let 关键字声明常量(Constants)let maxnNum = 32使用 var 关键字声明变量(Variables)var index = 1swift 是一种类型安全(type safety)的语言,如果变量被初始化为整数1,则这个变量的类型就是 int语句的结尾并不需要添加分号数据类型的关键字的首字母是大写的1. 基本数据类型 数据类型 注意
2016-07-02 08:40:30
303
原创 cat(1) 命令
cat(1) 命令主要的作用一是可以方便的打印配置文件信息,例如,查看配置文件是否正确写入。 二是可以利用管道命令将一个文件拼接到另一个文件中,例如在 SSH 中添加公钥。另外,可以配合 grep 命令打印匹配的信息。NAME cat - concatenate files and print on the standard outputSYNOPSIS cat [
2016-07-01 14:11:50
483
原创 Registry Functions
MSDN LibraryRegistry Functions (Windows)initialization-file functionsGetPrivateProfileInt GetPrivateProfileStringWritePrivateProfileString WritePrivateProfileIntThey retrieve information from and cop
2016-07-01 09:59:17
288
原创 SSH 远程登录加密原理
对称加密算法采用单钥密码系统的加密方法,同一个秘钥可以同时用作信息的加密和解密,这种加密方法称为对称加密,也称为单秘钥加密。是一种传统的加密方式,例如压缩包,用什么密码压缩,就用什么密码解压。非对称加密算法非对称加密算法(asymmetric cryptographic algorithm)又名“公开秘钥加密算法”。非对称加密算法需要两个秘钥: 公开秘钥(publickey) 私有秘钥(prit
2016-06-30 22:10:26
1978
原创 Linux 下网络相关命令
1. ifconfig查看或临时配置当先生效的 IP 地址和子网掩码2. 禁用和启用网卡禁用网卡ifdown 网卡设备名启用网卡ifup 网卡设备名3. 查看网络状态netstat 选项-t 列出 TCP 协议端口-u 列出 UDP 协议端口-n 使用数字形式的IP 地址和端口号(而不是域名和服务名)-l 监听状态-a 所有(除了网络服务,还有 socket 程序)logout 注销
2016-06-30 20:42:55
368
原创 VMware 虚拟机下网络参数配置
1. 设置 IP 地址使用 setup 工具或修改网络配置文件。网卡信息文件/etc/sysconfig/network-scripts/ifcfg-eth0主机名文件/etc/sysconfig/networkDNS 配置文件/etc/resolv.conf具体参考Linux 下网络配置2. 启动网卡在网卡信息文件中设置ONBOOT=YES重启网络服务service network rest
2016-06-30 20:12:53
993
原创 Linux 下网络配置
IP 地址配置DHCP 服务器的作用 当你设置为自动获得 IP 地址时, 局域网中的 DHCP 服务器负责 IP 地址分配。ifconfig 命令临时配置 IP主要用来查看有效的 IP 地址信息lo 表示回环网卡 ,表示本机,用于验证网络协议正确eth0 表示第1块网卡输出信息含义: 条目 含义 Link encap: Ethernet
2016-06-29 20:27:46
440
翻译 Linux 下 GNU Toolchain 的使用
翻译自:https://blackfin.uclinux.org/doku.php?id=toolchain:gcc_and_gas上一篇:在 Linux 中安装 Blackfin 交叉编译工具链GNU ToolchainGNU Toolchain 是多个项目的集合GCC :GCC 代表“GNU Compiler Collection”. GCC 几种主要编程语言的
2016-06-29 16:05:48
4354
原创 OpenSSH 软件包
OpenSSH 软件包libssh-4 openssh-client openssh-server openssh-sftp-server ssh-import-idOpenSSH 命令ssh(1) - The basic rlogin/rsh-like client program SSH协议的客户端程序,用来登入远程系统或远程执行命令(slogin)sshd(8)
2016-06-29 11:26:25
1685
原创 TCP/IP 网络协议基础
1. mac 地址,为48位(6字节)地址,指的是网卡的唯一的硬件地址,交换机只能识别 mac 地址,负责局域网(内网)通信,局域网下的计算机应处于同一网段。2. IP 地址,IPv4为32位(4字节)地址,负责公网(外网)通信,可以访问不同网段。3. 模型分层是为了便于排查传输故障。4. ISO模式是理论模型,TCP/IP是事实上的标准。
2016-06-28 19:19:57
851
转载 SSH 远程登录的建立
你可能已经在虚拟机中安装好了交叉编译工具链,但是平时的主要工作环境还是在windows下,那么你很可能需要在windows下安装一个xshell或者secureCRT才进行远程登录到虚拟机,就不用来来回回的切换了。到此之前,可参考我的其他文章。在 Linux 中安装 Blackfin 交叉编译工具链SSH 远程登录 基础知识1. openssh-server 服务器安装1. 查看是否已安装 open
2016-06-28 15:05:45
310
空空如也
OS X下用ls命令查看的文件类型和文件权限,后面的@和+这两个符号是什么意思呢?
2016-04-16
TA创建的收藏夹 TA关注的收藏夹
TA关注的人