- 博客(136)
- 资源 (4)
- 收藏
- 关注
原创 结构体位域并发问题
结构体位域并发问题0x00 位域并发分析上图是结构体BitField变量bf所画,需要根据打印推断出各个位域成员的存储情况,具体代码及打印见0x01 代码和0x02 打印结果部分。如上图所示,GCC编译器会对位域成员进行压缩存储(经测试,VS编译器一样会压缩),比如下方示例代码中的位域成员a、b,他们存储在一个字节上。注意位域成员c、d、e及f的低两位,他们存储在一个字节。计算机是按字节...
2019-06-28 23:01:18
1054
原创 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
292
原创 makefile
makefilemakefile文件名默认是makefile或Makefile,若不是,make命令需要带上-f参数指定makefile文件名规则makefile文件的内容是一组规则的集合,规则格式如下:目标文件:生成目标文件的依赖 通过依赖生成目标文件的命令(必须有一个tab的缩进)注意:makefile中的tab不能是对应数量的空格组合,否则报错ALL:hellohel...
2019-05-02 20:18:23
251
1
原创 quick_sort
实现思路每一趟排序,选取一个枢纽值,将数组元素划分为小于枢纽值和大于枢纽值两部分,等价于子数组,然后递归的对每一部分再次进行相同的排序。当需要排序的子数组元素个数为1时,递归调用返回。实现细节/* 三数取中法,选取中值作为枢纽值, 并将中值放在low位置,返回枢纽值*/int select_pivot(int * list, int low, int high){ int mid...
2019-04-21 10:19:31
186
原创 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
208
原创 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
1752
原创 数组指针与指针数组
数组指针与指针数组数组指针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
100
原创 位运算
位运算计算机中数值运算均转换为补码进行运算,运算的结果也是补码,需计算出原码推出对应的值取反运算运算符:~正数取反int a = 2;int b = ~a;/* 计算机中存储数据时,低位在低地址,高位在高地址 运算过程: 1. a:0200 0000 2. b:fdff ffff(补码) 3. 由补码知取反后的数是一个负数,需计算出原码,计算方式:符号位不动,其...
2019-04-20 14:47:20
143
原创 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
85
原创 Windows下制作及使用库
静态库vs创建静态库新建头文件,添加需要的函数的声明新建步骤一中头文件对应的.c文件,实现头文件中声明的函数设置项目的配置类型为“静态库(.lib)”,然后生成即可使用静态库在链接阶段,会把静态库中完全复制到程序中,一旦链接完成,静态库便不需要了,可直接删除,程序照常执行。方式一静态库对应的头文件复制到项目目录下右键项目,依次选择“添加”->“现有项”,找到生成的.l...
2019-04-20 14:00:57
175
转载 完成端口IOCP
完成端口IOCP转载自:套接字I/O模型-完成端口IOCP推荐一篇经典的对完成端口分析的文章:完成端口(CompletionPort)详解“完成端口”模型是迄今为止最为复杂的一种I/O模型。然而,假若一个应用程序同时需要管理为数众多的套接字,那么采用这种模型,往往可以达到最佳的系统性能!但不幸的是,该模型只适用于Windows NT和Windows 2000操作系统。因其设计的复杂性,只...
2019-01-27 17:22:29
1544
原创 常量
常量const修饰的变量修饰全局变量直接修改 失败通过指针修改 失败,原因是该变量在常量区,禁止修改修饰局部变量直接修改 失败通过指针修改 成功,原因是该变量在栈区字符串常量char *s1 = "hello";与char s2[]= "hello";char *s1 = "hello";char类型指针变量s1,指向在常量区中的字符串常量"hello"首...
2018-12-09 15:52:31
146
原创 C语言内存区域
内存变量变量类型作用域生命周期存储位置局部变量函数内部从变量创建到函数结束栈区全局变量整个项目从程序创建到程序销毁数据区静态局部变量函数内部从程序创建到程序销毁数据区静态全局变量所处文件从程序创建到程序销毁数据区函数函数类型作用域生命周期存储位置全局函数整个项目从程序创建到程序销毁代码区...
2018-12-09 15:50:41
852
原创 计算机中的数值存储
计算机的数值存储原码即数值对应的二进制值最高位为符号位,0表示正,1表示负其他数值部分是数值本身绝对值的二进制数负数的原码是在其绝对值的基础上,最高位是1以1字节为例,正0为0000 0000,负0为1000 0000反码正数的反码与原码相同负数的反码:符号位不变,其它位取反补码计算机存储数值用的是补码形式正数的补码、反码、原码相同负数的补码为其反码...
2018-12-09 15:47:21
416
原创 printf函数
printf函数打印格式打印格式对应数据类型含义%dint有符号十进制整数%hdshort短整数%uunsigned int无符号十进制整数%huunsigned short无符号短整数%ounsigned int无符号八进制整数%x,%Xunsigned int无符号十六进制整数(x对应abcdef,X对应ABCDE...
2018-12-09 15:45:41
337
原创 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
508
原创 Java线程小记
线程线程生命周期新建就绪运行阻塞死亡线程通信wait使线程放弃监视器进入阻塞状态,当获取到同步监视器后,将再wait阻塞处继续往下执行notify唤醒一个因调用wait方法阻塞的线程notifyAll唤醒所有因调用wait方法处于阻塞状态的线程sleep与waitsleep是Thread对象的静态方法,而wait是Object对象的方法slee...
2018-11-10 10:10:04
100
原创 Mybatis源码解析
Mybatis源码解析查询测试Demo/** * 获取SqlSessionFactory对象 * * @return * @throws IOException */private SqlSessionFactory getSqlSessionFactory() throws IOException { return new SqlSessionFactoryBuilder...
2018-10-27 14:11:03
202
原创 Mybatis缓存
Mybatis缓存Mybatis有两级缓存,分别是一级缓存和二级缓存。一级缓存(本地缓存)一级缓存是SqlSession级别的缓存,默认是开启的。一级缓存使用的是Cache接口的实现:PerpetualCache,底层使用的是Map同一次与数据库会话期间,从数据库查询到的数据会保存到一级缓存,在这个会话期间,再次或多次获取该数据,先从一级缓存中拿。一级缓存失效情景:...
2018-10-20 20:51:08
186
原创 Mybatis的resultType与resultMap
Mybatis的resultType与resultMapresultType指定一个JavaBean的全类名,mybatis会把查询到的结果自动封装为指定的JavaBean&lt;!-- Employee getEmpById(Integer id); --&gt;&lt;select id="getEmpById" resultType="com.mxc.entity.Employee&q
2018-10-20 15:25:03
407
原创 Mybatis参数处理及取参数值
Mybatis参数处理及取参数值单个参数mybatis不做任何处理取值方式: #{参数名/任意名}<!-- Employee getEmpById(Integer id); --><select id="getEmpById" resultType="com.mxc.bean.Employee"> select * from employee...
2018-10-20 11:01:19
3344
1
原创 下载文件时文件名中文乱码问题
通过User-Agent请求头判断当前浏览器类型ChromeChrome:User-Agen中含有"Chrome"字符串User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/61.0.3163.100 Safari/537.36解决方式:fi...
2018-10-15 18:13:08
667
原创 Maven项目修改java编译版本
Maven项目修改java编译版本在pom.xml文件中加入如下配置即可<properties> <maven.compiler.source>1.8</maven.compiler.source> <maven.compiler.target>1.8</maven.compiler.target> ...
2018-10-07 17:32:22
707
原创 Angular指令
Angular指令常用指令ng-app:指定模块名,angular管理的区域ng-model:双向绑定,输入相关标签ng-init:初始化数据ng-click:调用作用域对象的方法(点击时),值为函数调用,可以传$eventng-controller:指定控制器构造函数名,内部会自动创建一个新的子作用域ng-bind:解决使用{{}}显示数据闪屏(在很短时间内...
2018-10-04 18:37:30
229
原创 Angular作用域对象与控制器对象
Angular作用域对象与控制器对象基于AngularJS v1.2.29版本作用域对象它是一个js实例对象,ng-app指令默认创建一个根作用域对象($rootScope)它的属性和方法与页面中的指令或表达式是关联的控制器对象是一个js实例对象,用来控制AngularJS应用数据ng-controller指定控制器的构造函数,AngularJS会根据此构造函数创建控制器对象...
2018-10-04 18:36:26
315
原创 JavaScript原型及原型链
javascript原型及原型链隐式原型与显式原型显式原型:每一个函数对象都有一个prototype属性,即显示原型隐式原型:每一个实例对象都有一个__proto__属性,即隐式原型对象的隐式原型的值是其构造函数的显式原型的值var o = {};console.log(o.__proto__ === Object.prototype);// true原型对象的co...
2018-10-02 08:58:16
136
原创 Maven打包报错:[WARNING] The POM for xxx is missing, no dependency inform
场景使用Maven创建的一个多模块项目,一个wa-service模块,一个wa-app模块,wa-app模块依赖于wa-service模块,且他们都是WebAppDemo的子模块。报错及分析对wa-app模块执行打包,报[WARNING] The POM for com.mxc:wa-service:jar:1.0-SNAPSHOT is missing, no dependency ...
2018-09-22 21:59:50
35064
3
原创 Promise
Promise Promise是一个承诺,它根据任务是否执行成功,执行相应的后续操作,常用于异步操作中。 Promise对象用于表示一个异步操作的最终状态(完成或失败),以及其返回的值。Promise对象状态pending: 初始状态,既不是成功,也不是失败状态。fulfilled: 意味着操作成功完成。rejected: 意味着操作失败。Promise构造器...
2018-09-12 19:35:19
479
原创 AJAX请求 "Provisional headers are shown"
AJAX请求出现Provisional headers are shown原因及解决原因情景:在一个弹窗中发送AJAX请求做一些操作,然后关闭窗口,有一定几率出现Provisional headers are shown代码:var index = parent.layer.getFrameIndex(window.name);// 发送请求$.ajax({ type...
2018-09-12 19:07:48
9341
原创 Linux配置网络
1.修改/etc/sysconfig/network-scripts目录下的ifcfg-ethN文件BOOTPROTO=static // 配置静态IPONBOOT=yes // 开机启动IPADDR=192.168.1.66 // IP地址NETMASK=255.255.255.0 // 子网掩码 GATEWAY=192.168.1.1 // 网关DNS1=8....
2018-09-09 20:11:23
110
原创 EasyUI树组件展开节点时事件的执行顺序
异步加载树展开节点时事件执行顺序整个过程中,事件的执行顺序如下 1. onBeforeExpand:节点展开前触发,返回 false 则取消展开动作。 2. onBeforeLoad:当加载数据的请求发出前触发,返回 false 则取消加载动作。 3. onLoadSuccess:当数据加载成功时触发。 4. onExpand:当节点展开时触发。...
2018-09-09 20:04:49
1008
原创 Less变量、混合
Less特性注释// 注释内容 此注释不会编译输出到CSS文件中 /* 注释内容 */ 此注释会编译输出到CSS文件中变量Less中使用@变量名定义变量。需要注意的是,作为属性及选择器的时候,变量名需要放在{}中。 1.作为属性@bg: background-color;.box{ width: 600px; height: 400px; ...
2018-09-05 19:35:04
4100
原创 jquery的attr()与prop()方法的区别
使用情景对于HTML元素本身就带有的固有属性,处理时使用prop方法。对于HTML元素自定义属性,处理时使用attr方法。固有属性指的是HTML标签原生支持的属性,如a标签原生支持的属性有:download、href、hreflang、media、rel、target、type,这些属性是W3C组织确定的,可通过W3School查询 自定义属性指的是自己未HTML标签定义的属性,如...
2018-08-14 12:58:11
351
原创 Linux目录
/bin:binary缩写,存放经常使用的命令/boot:存放Linux启动的一些核心文件/dev:device缩写,存放Linux的外部设备/etc:存放所有系统管理所需要的配置文件和子目录/home:存放普通用户的主目录/lib:存放系统开机所需要的动态链接库/lost+fonud:存放系统非法关机后产生的文件/media:存放Linux系统识别的一些设备,如优盘、光驱等,Li...
2018-08-12 18:42:01
131
原创 Linux文件类型及权限
权限针对文件:r-查看,w-修改,x-执行针对文件夹:r-列出文件夹下的所有文件和文件夹,w-在目录中创建和删除,x-进入目录删除一个文件的前提:该文件所在目录拥有写权限ls -l命令结果解析示例:-rw-r--r-- 1 root dev 0 Aug 12 16:49 1.txtdrwxr-xr-x 1 root dev 512 Jul 29 18...
2018-08-12 18:20:14
320
原创 AJAX传递数组参数方式及后端Springmvc接收方式
传递的数组中的元素不是对象方式一:遍历数组,把数组中的元素拼接为请求字符串 前端发送请求:var checkedItem = [1533799438815, 1533806803574, 1533806973625, 1533807374669];var queryStr = '_method=delete';$.each(checkedItem,function(idx,item)...
2018-08-11 13:29:20
6239
1
原创 Spring声明式事务管理源码解析
核心接口 1. PlatformTransactionManager:事务管理器顶级接口:各持久化框架要想接入Spring的事务管理,必须自行提供该接口实现 2. TransactionDefinition:事务的属性顶级接口:其实现类封装事务隔离级别、事务传播性、只读性等信息 3. TransactionStatus:事务状态顶级接口:其实现类封装事务状态信息声明式事务流程说明...
2018-08-11 12:39:43
1878
2
原创 C3P0初始化物理数据库连接时机
存放数据库物理连接的容器C3P0PooledConnectionPoolManager.getPool() -&amp;gt; C3P0PooledConnectionPool -&amp;gt; ResourcePool(BasicResourcePool) rp -&amp;gt; HashMap managed 存放数据库物理连接的容器其本质是BasicResourcePool对象中的managed属性,类...
2018-08-03 18:43:47
188
原创 linux时间、日期、文件目录命令
时间日期date +%F' '%H:%M:%S :格式化日期,注意空格及其他字符需要用单引号引入。(2018-07-29 17:18:50)cal -y [year] :参看某一年的所有月份日历,不加year参数表示查看当年的月份日历文件目录pwd: “print working directory”打印当前工作目录的绝对路径ls:每行列出的信息依次是:文件类型及权限、链接数...
2018-07-29 18:54:13
1660
1
原创 用户与用户组
用户useradd username:创建用户useradd -m username:创建用户并为用户创建一个同名home目录(创建于/home目录下),作为用户登录的起始目录useradd -mg groupname username:创建用户并把用户加入用户组passwd username:给用户设置密码id username :查看是否存在用户及用户信息whoami:查看当前...
2018-07-28 13:46:44
149
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人