
c
文章平均质量分 56
le119126
这个作者很懒,什么都没留下…
展开
-
C语言编程技巧-signal(信号机制) 与中断
用户态到内核态切换途径: 1:系统调用 2:中断 3:异常中断类型分为如下两大类:一、强迫性中断:正在运行的程序所不期望的,来自硬件故障或外部请求。1、I/O 中断:来自外部设备通道;2、程序性中断:运行程序本身的中断,如 溢出、缺页中断、缺段中断、地址越界。3、时钟中断4、控制台中断5、硬件故障转载 2017-07-13 21:56:55 · 3327 阅读 · 0 评论 -
c/c++ 笔试题 各种 a++
A: a+=(a++) 先计算a++ ,因为a为后++,所以a为4,然后a += 4,这时a的值改为5,4+5=9;B: a+=(++a) 先计算++a,因为a为前++, 所以a为5,然后a += 5, 这时a的值改为5,5+5=10;C::(a++) += a 这个是错误的。因为左值只能变量,(a++)是后++, 所以a不会先计算a++,而a个数值4。所以会报错。D:(++a转载 2015-08-03 17:18:04 · 523 阅读 · 0 评论 -
父子进程与父子线程退出分析
Linux下编程,线程、进程退出顺序问题纷纷扰扰,如果父进程/线程先于子进程/线程终止,系统会做什么处理呢?反之,如果子进程/线程先于父进程/线程终止,系统又会做什么处理呢?下面是我个人平时在笔记上做的一些象征性的总结,如果有疑问之处,大可提出,我一直认为怀疑是人类进步的根本所在。一、线程Linux线程创建函数为pthread_create(),默认规则是谁创建子线程,谁就要负责子线程转载 2015-08-01 11:40:53 · 2982 阅读 · 0 评论 -
leetcode 46 : Permutations
Given a collection of numbers, return all possible permutations.For example,[1,2,3] have the following permutations:[1,2,3], [1,3,2], [2,1,3], [2,3,1], [3,1,2], and [3,2,1].{优快云:CODE:原创 2015-07-07 19:35:13 · 521 阅读 · 0 评论 -
leetcode 44: Wildcard Matching
Implement wildcard pattern matching with support for '?' and '*'.'?' Matches any single character.'*' Matches any sequence of characters (including the empty sequence).The matching should cover th原创 2015-07-06 17:27:00 · 408 阅读 · 0 评论 -
leetcode 45:Jump Game II
Given an array of non-negative integers, you are initially positioned at the first index of the array.Each element in the array represents your maximum jump length at that position.Your goal i原创 2015-07-07 13:01:14 · 420 阅读 · 0 评论 -
常量修改-指针与引用
int main(int argc, char *argv[]){const int a = 10;int *p = (int *)&a;int &r =(int &)(*(&a));int &r2 = const_cast(a);printf("a=%d *p=%d r=%d r2=%d p=%d &a=%d &r=%d &r2=%d\n", a, *p, r, r2,原创 2015-06-15 16:09:45 · 459 阅读 · 0 评论 -
int const * 、const int *、int *const、const char **与char **
一.int const* 与const int *一样,const修饰int,表示指针指向常量int int *const :const修饰指针,表示指针是常量二.类型相容:左操作数所指向的类型具有右操作数所指向类型的限定符(const),再加上自身的限定符1,const char * p1 与 char * p2 p1=p2 是合法的,2.const c原创 2015-06-15 10:40:52 · 1766 阅读 · 0 评论 -
leetcode - Container With Most Water
Given n non-negative integers a1, a2, ..., an, where each represents a point at coordinate (i, ai). n vertical lines are drawn such that the two endpoints of line i is at (i, ai) and (i, 0). Find two原创 2015-05-27 14:28:17 · 490 阅读 · 0 评论 -
leetcode 47 : Permutations II
Given a collection of numbers that might contain duplicates, return all possible unique permutations.For example,[1,1,2] have the following unique permutations:[1,1,2], [1,2,1], and [2,1,1].转载 2015-07-08 17:26:18 · 491 阅读 · 0 评论 -
leetcode - Regular Expression Matching
Implement regular expression matching with support for '.' and '*'.'.' Matches any single character.'*' Matches zero or more of the preceding element.The matching should cover the entire input st转载 2015-05-23 11:13:45 · 469 阅读 · 0 评论 -
算术类型隐式转换
#include #include #include int main(int argc, char **argv){if (-1 > (unsigned int)1)printf("转换成unsigned int\n");elseprintf("转换成int\n");if (-1 > (unsigned char)1)printf("转换原创 2015-06-15 10:57:05 · 433 阅读 · 0 评论 -
leetcode - Longest Common Prefix
求最长前缀#include #include #include using namespace std;class Solution {public: string longestCommonPrefix(vector& strs) { int i=0; int index=0; int lenth原创 2015-05-27 22:31:53 · 455 阅读 · 0 评论 -
leetcode - Integer to Roman 与 Roman to Integer
Given an integer, convert it to a roman numeral.Input is guaranteed to be within the range from 1 to 3999.#include #include using namespace std;class Solution {public: string int原创 2015-05-27 15:13:45 · 464 阅读 · 0 评论 -
你应该知道的浮点数基础知识
你应该知道的浮点数基础知识本文从一个有趣而又令人意外的实验展开,介绍一些关于浮点数你应该知道的基础知识文章欢迎转载,但转载时请保留本段文字,并置于文章的顶部作者:卢钧轶(cenalulu)本文原文地址:http://cenalulu.github.io/linux/about-denormalized-float-number/一个有趣的实验本文转载 2015-04-28 20:40:26 · 946 阅读 · 0 评论 -
Leetcode-Two Sum
class Solution {public: vector twoSum(vector &numbers, int target) { int i, sum; vector results; map hmap; for(i=0; i<numbers.size(); i++){ if(!hmap.co转载 2015-04-29 21:09:01 · 549 阅读 · 0 评论 -
二维数组、指针、步长
#include #include #define PRINT(value) printf("%s:%d\n",#value,value);void main(){int a[3][5];PRINT(a);// 8517344PRINT(*a);// 8517344PRINT(a + 1);// 8517364PRINT(*a + 1);// 8原创 2015-09-05 11:54:25 · 2216 阅读 · 0 评论 -
const 常量修改
const int i = 5; int *j = (int *)&i; *j = 1; printf("%d,%d\n", i, *j); cout << "i address:" << &i << endl; cout int flg[i];//正确i和j的地址一样,但是在c++中,编译期间就把i做符号替换,换成了数字5,所以i和j地址一样,但是打印的值原创 2015-09-28 16:47:08 · 570 阅读 · 0 评论 -
C专家编程》笔记三:第四章 数组和指针并不相同
一。数组与指针的访问方式char *p=“abcdef”; --------------p[3]:编译器符号表中有一个p,地址为4624 运行时步骤1:取地址4624的内容“5081” 运行时步骤2:取i的值,再加上5081 运行时步骤3:取地址【5081+i】的内容‘d’原创 2015-06-20 15:47:35 · 417 阅读 · 0 评论 -
linux下进程间通信
1.文件2.文件锁3.管道pipe和命名管道FIFO4.信号5.套接字system V6.消息队列7.共享内存8.信号量posix9.互斥量10.条件变量11.读写锁转载 2015-04-07 10:38:08 · 659 阅读 · 0 评论 -
muduo源码分析:线程类Thread封装
线程idLinux中,每个进程有一个pid,类型pid_t,由getpid()取得。Linux下的POSIX线程也有一个id,类型 pthread_t,由pthread_self()取得,该id由线程库维护,其id空间是各个进程独立的(即不同进程中的线程可能有相同的id)。Linux中的POSIX线程库实现的线程其实也是一个进程(LWP),只是该进程与主进程(启动线程的进程)共享一些资源而原创 2015-12-06 21:15:29 · 1633 阅读 · 0 评论 -
避免用char类型作为数组小标
在统计字符串的时候常用数组来统计,字符为数组下标,如求字符串中第一个不重复(只出现过一次)的字符但是字符的类型是char类型可能为负数,不能做下标。不能把char强转成 unsigned int 做下标,因为类型提升的时候,是按照高位填充的多余字节,如果char本身为负数,第8位就是1,转成 unsigned int 或者int时多出来的三个字节都是填充1;如果是0,则都填充0如 ch原创 2015-11-02 21:17:25 · 2419 阅读 · 0 评论 -
epoll EPOLLONESHOT 事件
eppll 即使使用ET模式,一个socket上的某个事件还是可能被触发多次,采用线程城池的方式来处理事件,可能一个socket同时被多个线程处理如果对描述符socket注册了EPOLLONESHOT事件,那么操作系统最多触发其上注册的一个可读、可写或者异常事件,且只触发一次。。想要下次再触发则必须使用epoll_ctl重置该描述符上注册的事件,包括EPOLLONESHOT 事件。例子:原创 2015-06-04 17:20:09 · 6838 阅读 · 2 评论 -
min 宏定义 避免副作用
min宏定义探究 在GCC的文档中建议使用如下的min宏定义: 引用:#define min(X,Y) / (__extension__ / ({ / typeof(X) __x=(X), __y=(Y); / (__x}) / ) 本文讨论了这样作法的意义。 1、传统的min带来的副作用 2、GCC中的({statement list}转载 2015-10-10 21:06:14 · 1647 阅读 · 0 评论 -
编程小技巧
在判断两个浮点数 a 和 b 是否相等时,不要用 a==b,应该判断二者之差的绝对值 fabs(a-b) 是否小于某个阈值,例如 1e-9。 判断一个整数是否是为奇数,用 x % 2 != 0,不要用 x % 2 == 1,因为x可能是负 数。 用 char 的值作为数组下标(例如,统计字符串中每个字符出现的次数),要考虑到 char 可能转载 2015-09-21 16:08:35 · 412 阅读 · 0 评论 -
#ifndef 头文件重复定义
#ifndef只能保证重复包含时,只包含一次。但snake.cpp和main.cpp是分别进行编译的,snake.cpp里的#define对于main.cpp不起作用。也就是说在编译main.cpp时,snake.h是第一次包含,因此又有一个ch,相互链接时就会发现重定义。正确的作法应该这样:1)在snake.h里改为:externchar ch; // 只声明不定义extern转载 2015-10-10 10:52:58 · 1894 阅读 · 0 评论 -
unsigned 隐式转换
#include #include using namespace std;void main(){ unsigned int a = 2; int b = -3; int c = a + b; cout << (a + b) << endl; printf("%d\n",c); printf("...\n");}结果:4294967295 -1.原创 2015-09-20 15:42:04 · 612 阅读 · 0 评论 -
《C专家编程》笔记三:数组和指针实参所对应的形式参数
数组命被改成一个指针参数并不是递归定义的。数组的数组被改写为 数组的指针,而不是 指针的指针 实 参 所匹配的形式参数数组的数组 char c[8][10]原创 2015-11-08 17:40:24 · 425 阅读 · 0 评论 -
内存泄露-C
参考《c专家编程》内存泄露的主要症状:内存泄露的进程速度减慢。(体积大的进程更有可能被系统换出来,让别的进程运行,而且大的进程在换进换出时花费的时间更多)如何检测内存泄露:1.用swap命令(或者top 、 fdisk -l 、 free -m、netstat、vmstat等) 来观察可用的交换区空间,看看可用的交换区是否在减少。如果发内存被分配且从不释放,就有可能是内存泄露了原创 2015-11-08 16:46:34 · 560 阅读 · 0 评论 -
《C专家编程》笔记一:第二章 这不是Bug,而是语言特性
1.witch 块左花括号后面紧跟着的变量加上初始化值是没有什么用的,因为它不会执行-语句从匹配表达式的case开始执行2.case 只能是常量或者常量表达式,不能跟const常量(const常量并不是真正的常量)如 const int a=5;……case a:…… 这是非法的。3.ANSI C引入了相邻字符串常量将自动合并成一个字符串的约定。(以前是 用“\” 来表示是同一原创 2015-06-16 20:46:53 · 580 阅读 · 0 评论 -
《C专家编程》笔记二:第三章 分析C语言的声明
一。声明的限制条件1.函数的返回值不能是函数或者数组,如 foo( )( ) 、foo( )[ ] 但可以是函数指针、指向数组的指针,如 int ( *fun ( ) )( )、int (* fun( ))[ ]2.数组里面不能有函数,但是可以有函数指针 如foo[ ]( )非法,int (* foo[ ])( ) 合法二。联合体联合体用一个存储空间存储多个不会同时出现的数据原创 2015-06-20 15:02:24 · 756 阅读 · 0 评论 -
linux heap堆分配
转自:http://www.mamicode.com/info-detail-652351.htmlheap堆分配在用户层面:malloc函数用于heap内存分配void* malloc(size_t size); 进程的虚拟内存地址布局: 对用户来说,主要关注的空间是User Space。将User Space放大后,可以转载 2015-10-22 20:31:18 · 4223 阅读 · 0 评论 -
c中全局同名变量、函数
同名1.h :#include #include #include extern int globle_int_a;void globle_Func() { printf("同名1 :%d\n", globle_int_a);};void myfunc();同名2.c#include #include #include //#include "同名1.原创 2015-10-19 16:20:42 · 1509 阅读 · 0 评论 -
windows、linux 字节对齐
《深入理解计算机系统》中写到 linux下 2字节类型的数据的地址必须是2的倍数,4,8字节类型的数据的地址必须是4的倍数;,windows n个字节类型的数据的地址必须是n的倍数但是我在64位的linux上,发现double是8字节对齐;k字节对齐,则结构体总大小要是k的倍数,不够的末尾补齐#include #include #include /* 32位原创 2015-04-21 11:44:51 · 1886 阅读 · 0 评论 -
为什么宏INT_MIN要写成-2147483647-1
转自:http://www.cnblogs.com/baiweiguo/archive/2013/01/15/2861286.html参考 :http://www.hardtoc.com/archives/119《深入理解计算机系统》在P105页,作者给出了INT_MIN在标准头文件limits.h中的定义 #define INT_MAX 2147483647 #d转载 2015-04-16 11:38:00 · 4639 阅读 · 0 评论 -
socket异步通信-非阻塞模式(异步非阻塞)
将一个socket 设置成阻塞模式和非阻塞模式,使用fcntl方法,即:设置成非阻塞模式:先用fcntl的F_GETFL获取flags,用F_SETFL设置flags|O_NONBLOCK; 即: flags = fcntl(sockfd, F_GETFL, 0); //获取文件的flags值。转载 2014-07-07 15:57:37 · 4272 阅读 · 0 评论 -
linux进程、线程常用的几个基础知识点
1. Fork会复制父进程所有资源,父子进程完全独立2. vfork不会复制所有的资源,父子进程共享地址空间,在子进程中队虚拟内存空间变量的修改其实也是对父进程中值的修改。同时子进程运行时会阻塞父进程。子进程调用结束时要调用_exit() 退出,不然子进程的输入输出缓存会影响到父进程,exit会刷新输入输出流,清空缓冲区,可能造成临时文件丢失,所以在子进程中一般不用exi原创 2014-05-23 13:24:57 · 929 阅读 · 0 评论 -
epoll函数
1.一个socket关闭原创 2014-10-25 11:57:45 · 449 阅读 · 0 评论 -
Linux服务器中的程序规范和技巧
摘自用 TCP/IP 进行网际互连原创 2014-06-30 22:17:04 · 604 阅读 · 0 评论 -
linux多进程编程
1.fork系统调用信号位图被清除,远原创 2014-08-08 14:54:30 · 700 阅读 · 0 评论