3 xcmercy

尚未进行身份认证

我要认证

暂无相关简介

等级
TA的排名 1w+

结构体位域并发问题

结构体位域并发问题0x00 位域并发分析上图是结构体BitField变量bf所画,需要根据打印推断出各个位域成员的存储情况,具体代码及打印见0x01 代码和0x02 打印结果部分。如上图所示,GCC编译器会对位域成员进行压缩存储(经测试,VS编译器一样会压缩),比如下方示例代码中的位域成员a、b,他们存储在一个字节上。注意位域成员c、d、e及f的低两位,他们存储在一个字节。计算机是按字节...

2019-06-28 23:01:18

GCC常用参数及制作使用库

GCC常用参数及制作使用库常用参数-o指定输出文件名gcc hello.c -o hello-I指定头文件所在目录gcc hello.c -o hello -I ./includes-g添加调试信息,配合gdb使用gcc main.c -o debug_main -g -I ./includes/-Wall显示所有调试信息gcc main.c -o mai...

2019-05-02 20:22:18

makefile

makefilemakefile文件名默认是makefile或Makefile,若不是,make命令需要带上-f参数指定makefile文件名规则makefile文件的内容是一组规则的集合,规则格式如下:目标文件:生成目标文件的依赖 通过依赖生成目标文件的命令(必须有一个tab的缩进)注意:makefile中的tab不能是对应数量的空格组合,否则报错ALL:hellohel...

2019-05-02 20:18:23

quick_sort

实现思路每一趟排序,选取一个枢纽值,将数组元素划分为小于枢纽值和大于枢纽值两部分,等价于子数组,然后递归的对每一部分再次进行相同的排序。当需要排序的子数组元素个数为1时,递归调用返回。实现细节/* 三数取中法,选取中值作为枢纽值, 并将中值放在low位置,返回枢纽值*/int select_pivot(int * list, int low, int high){ int mid...

2019-04-21 10:19:31

insert_sort

实现思路将1个记录插入到已经排好序的有序表中,得到新的、记录数加1的有序表实现细节void insert_sort(int * list, int length){ // 假设0号位置已经排好序,故从1开始 for (int i = 1; i < length; i++) { if (list[i] < list[i - 1]) { // 保存需要找位置进行...

2019-04-21 10:18:59

VS项目依赖编译

VS中配置多个项目之间的依赖编译应用场景解决方案下有三个项目A,B,C,A项目为公共模块,生成静态库,供B、C两项目使用,即B、C项目都依赖于A项目。一旦改动A,需要先生成A,再生成B、C,才能保证B、C使用A最新的代码逻辑。现在,我们希望在改动了A之后,不需要手动生成A,在生成B或者C的时候,自动的先生成A,在生成B。解决方案右键B项目选择:“生成依赖项”->“项目依赖项”,在该项...

2019-04-20 15:26:44

数组指针与指针数组

数组指针与指针数组数组指针int arr[5] = {1,2,3,4,5};int (*p)[5] = &arr;for (int i = 0; i < 5; i++){ printf("%d\n", (*p)[i]); // *p 相当于 arr}int (*p)[5];[]优先级比*高,所以加小括号,表明p是一个指针。整体表明p是指向一个长度是5的int数...

2019-04-20 14:47:48

位运算

位运算计算机中数值运算均转换为补码进行运算,运算的结果也是补码,需计算出原码推出对应的值取反运算运算符:~正数取反int a = 2;int b = ~a;/* 计算机中存储数据时,低位在低地址,高位在高地址 运算过程: 1. a:0200 0000 2. b:fdff ffff(补码) 3. 由补码知取反后的数是一个负数,需计算出原码,计算方式:符号位不动,其...

2019-04-20 14:47:20

GDB使用

GDB使用常用指令list/l列出源码,可指定行号break/b 行号在指定行打断点next/n逐过程step/s逐语句run/r运行程序quit/q退出gdb调试continue执行到下一断点print/p 变量名打印变量值其他指令及用法finish跳出函数内部,返回调用处start从程序入口函数处开始执行,...

2019-04-20 14:44:56

Windows下制作及使用库

静态库vs创建静态库新建头文件,添加需要的函数的声明新建步骤一中头文件对应的.c文件,实现头文件中声明的函数设置项目的配置类型为“静态库(.lib)”,然后生成即可使用静态库在链接阶段,会把静态库中完全复制到程序中,一旦链接完成,静态库便不需要了,可直接删除,程序照常执行。方式一静态库对应的头文件复制到项目目录下右键项目,依次选择“添加”->“现有项”,找到生成的.l...

2019-04-20 14:00:57

完成端口IOCP

完成端口IOCP转载自:套接字I/O模型-完成端口IOCP推荐一篇经典的对完成端口分析的文章:完成端口(CompletionPort)详解“完成端口”模型是迄今为止最为复杂的一种I/O模型。然而,假若一个应用程序同时需要管理为数众多的套接字,那么采用这种模型,往往可以达到最佳的系统性能!但不幸的是,该模型只适用于Windows NT和Windows 2000操作系统。因其设计的复杂性,只...

2019-01-27 17:22:29

常量

常量const修饰的变量修饰全局变量直接修改 失败通过指针修改 失败,原因是该变量在常量区,禁止修改修饰局部变量直接修改 失败通过指针修改 成功,原因是该变量在栈区字符串常量char *s1 = "hello";与char s2[]= "hello";char *s1 = "hello";char类型指针变量s1,指向在常量区中的字符串常量"hello"首...

2018-12-09 15:52:31

C语言内存区域

内存变量变量类型作用域生命周期存储位置局部变量函数内部从变量创建到函数结束栈区全局变量整个项目从程序创建到程序销毁数据区静态局部变量函数内部从程序创建到程序销毁数据区静态全局变量所处文件从程序创建到程序销毁数据区函数函数类型作用域生命周期存储位置全局函数整个项目从程序创建到程序销毁代码区...

2018-12-09 15:50:41

计算机中的数值存储

计算机的数值存储原码即数值对应的二进制值最高位为符号位,0表示正,1表示负其他数值部分是数值本身绝对值的二进制数负数的原码是在其绝对值的基础上,最高位是1以1字节为例,正0为0000 0000,负0为1000 0000反码正数的反码与原码相同负数的反码:符号位不变,其它位取反补码计算机存储数值用的是补码形式正数的补码、反码、原码相同负数的补码为其反码...

2018-12-09 15:47:21

printf函数

printf函数打印格式打印格式对应数据类型含义%dint有符号十进制整数%hdshort短整数%uunsigned int无符号十进制整数%huunsigned short无符号短整数%ounsigned int无符号八进制整数%x,%Xunsigned int无符号十六进制整数(x对应abcdef,X对应ABCDE...

2018-12-09 15:45:41

C语言分步编译

C语言一步编译命令:gcc -o hello.exe hello.cC语言分步编译预处理命令:gcc -E hello.c -o hello.i宏定义展开头文件展开条件编译剔除注释编译命令:gcc -S hello.i -o hello.s检查语法将C语言转换为汇编语言汇编命令:gcc -c hello.s -o hello.o将汇编...

2018-12-09 15:41:25

Java线程小记

线程线程生命周期新建就绪运行阻塞死亡线程通信wait使线程放弃监视器进入阻塞状态,当获取到同步监视器后,将再wait阻塞处继续往下执行notify唤醒一个因调用wait方法阻塞的线程notifyAll唤醒所有因调用wait方法处于阻塞状态的线程sleep与waitsleep是Thread对象的静态方法,而wait是Object对象的方法slee...

2018-11-10 10:10:04

Mybatis源码解析

Mybatis源码解析查询测试Demo/** * 获取SqlSessionFactory对象 * * @return * @throws IOException */private SqlSessionFactory getSqlSessionFactory() throws IOException { return new SqlSessionFactoryBuilder...

2018-10-27 14:11:03

Mybatis缓存

Mybatis缓存Mybatis有两级缓存,分别是一级缓存和二级缓存。一级缓存(本地缓存)一级缓存是SqlSession级别的缓存,默认是开启的。一级缓存使用的是Cache接口的实现:PerpetualCache,底层使用的是Map同一次与数据库会话期间,从数据库查询到的数据会保存到一级缓存,在这个会话期间,再次或多次获取该数据,先从一级缓存中拿。一级缓存失效情景:...

2018-10-20 20:51:08

Mybatis的resultType与resultMap

Mybatis的resultType与resultMapresultType指定一个JavaBean的全类名,mybatis会把查询到的结果自动封装为指定的JavaBean<!-- Employee getEmpById(Integer id); --><select id="getEmpById" resultType="com.mxc.entity.Employee&q

2018-10-20 15:25:03

查看更多

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