- 博客(107)
- 资源 (8)
- 收藏
- 关注
原创 硬盘故障类型
磁盘常见故障类型Sense keySense code通用缩写说明Medium Error[0x03]Unrecove read error [0x11]UNC逻辑坏道可能由于异常掉电等,发生数据ECC校验错误;物理坏道即物理介质损坏,硬盘固件进行坏块替换Medium
2015-12-23 23:18:23
6973
原创 SQL的unique约束
UNIQUE 约束唯一标识数据库表中的一条记录。与PRIMARY KEY 约束一样,UNIQUE为列或列集合提供了唯一性的保证。每个表可以有多个UNIQUE约束,即可以约束多个列记录唯一,但只能有一个PRIMARY KEY。PRIMARY KEY 自动拥有 UNIQUE 约束。CREATE TABLE Persons(Id int NOT NULL,LastN
2015-12-23 22:58:50
4414
原创 关于pthread的cancel point
前言今天遇到一个线程死锁,通常gdb把mutex lock的owner打出来,就可以查到锁的持有者,但今天打印owner,发现是一个不存在的线程,说明线程已经结束生命周期。排查使用该lock相关的线程,发现有个线程会被主线程给cancel掉,因此怀疑在cancel子线程时,子线程持有锁并未释放。当时怀疑难道pthread_mutex_lock是cancel点?正文1 查询man
2015-12-16 22:35:22
1256
翻译 为什么memcpy_s比memcpy安全
void* memcpy( void *dest, const void *src, size_t count );(until C99)void* memcpy( void *restrict dest, const void *restrict src, size_t count );(since C99)errno_t memcpy
2015-12-09 22:53:50
18259
原创 进程互斥同步准则
为实现进程互斥,可以利用软件的方法,也可以在系统中设置专门的同步机制来协调多个进程,但是所有的同步机制应该遵循四大准则: 1.空闲让进 当临界资源处于空闲状态,允许一个请求进入临界区的进程立即进入临界区,从 而有效的利用资源。 2.忙则等待 已经有进程进入临界区时,意味着相应的临界资源正在被访问,所以其他准备进 入临界区的进程必须等待,来保证多进程互斥。 3.有限等待 对要求访问临界资源
2015-12-07 22:49:46
2041
原创 线程与进程的区别
线程共享的环境包括: 1.进程代码段 2.进程的公有数据(利用这些共享的数据,线程很容易的实现相互之间的通讯) 3.进程打开的文件描述符、信号的处理器、进程的当前目录和进程用户ID与进程组ID。 线程拥有其父进程一些资源的同时,还拥有自己的私有资源或熟悉。有了这些私有熟悉,线程才能实现独立调度执行。这些私有属性包括: 1.线程ID
2015-12-06 22:22:17
690
原创 leetcode 227: Basic Calculator II
Implement a basic calculator to evaluate a simple expression string.The expression string contains only non-negative integers, +, -, *, / operators and empty spaces . The integer division should
2015-10-24 11:49:23
1452
原创 MySQL数据类型
MySQL数据类型本文概要介绍MySQL的数据类型:MySQL数据类型分为三大类:数字类型:整数:tinyint, smallint, mediumint, int, bigint浮点数:float, double, real定点数:decimal 字符串类型:字符串:char, varchar文本:tinytet, text, mediumtext, longtext二进制:tinyblob,
2015-10-21 22:29:35
442
原创 Power of Two
Power of Two Given an integer, write a function to determine if it is a power of two.class Solution {public: bool isPowerOfTwo(int n) { if (n <= 0) { return false;
2015-07-29 22:19:55
410
原创 Palindrome Number
Determine whether an integer is a palindrome. Do this without extra space.click to show spoilers.Some hints:Could negative integers be palindromes? (ie, -1)If you are thinking of convertin
2015-05-02 21:16:34
423
原创 String to Integer (atoi)
Implement atoi to convert a string to an integer.Hint: Carefully consider all possible input cases. If you want a challenge, please do not see below and ask yourself what are the possible input ca
2015-05-02 20:24:10
440
原创 Reverse Integer
Reverse digits of an integer.Example1: x = 123, return 321Example2: x = -123, return -321click to show spoilers.Have you thought about this?Here are some good questions to ask before
2015-04-11 21:51:47
538
原创 Add Two Numbers
You are given two linked lists representing two non-negative numbers. The digits are stored in reverse order and each of their nodes contain a single digit. Add the two numbers and return it as a link
2015-04-11 20:48:35
521
原创 Number of 1 Bits
Write a function that takes an unsigned integer and returns the number of ’1' bits it has (also known as the Hamming weight).For example, the 32-bit integer ’11' has binary representation 000000
2015-04-09 22:22:19
472
原创 Two Sum
Given an array of integers, find two numbers such that they add up to a specific target number.The function twoSum should return indices of the two numbers such that they add up to the target, whe
2015-04-07 23:24:14
539
原创 Excel Sheet Column Number
Given a column title as appear in an Excel sheet, return its corresponding column number.For example: A -> 1 B -> 2 C -> 3 ... Z -> 26 AA -> 27 AB -> 28 class Solution {
2015-04-05 09:50:12
460
原创 Excel Sheet Column Title
Excel Sheet Column Title 递归实现,当n % 26 == 0时需要特殊处理,讲对应位置Z。class Solution {public: string convertToTitle(int n) { string s; if (n <= 0) { return s;
2015-04-04 18:47:24
543
原创 umount 时 device is busy 的处理方法
umount 一个文件分区,有时会报: device is busy 。因为还有进程占用或在使用该设备。#fuser -km /mnt/sda7此命令可kill掉占用设备/mnt/sda7 的进程.
2012-08-08 19:25:00
692
转载 x86系统C语言函数调用时的内存分布
每个C语言函数在运行过程中,在栈顶对应一个栈帧。想想堆栈是一个地址由上往下增长的线性内存(为什么要由上往下增长?后面说明),栈帧的顶端地址位于esp寄存器,栈帧底部地址由ebp寄存器保存(当然,这个说法不准确,ebp再往下还有这个函数的参数,后面详细说明)。结构如下所示(每行4字节): 00 临时变量2 04
2012-08-07 21:46:02
1169
转载 C函数调用时的内存布局
1、I386平台C函数内部的栈分配函数使用栈来保存局部变量,传递函数参数。进入函数时,函数在栈上为函数中的变量统一预留栈空间,将esp减去相应字节数。当函数执行流程途径变量声明语句时,如有需要就调用相应构造函数将变量初始化。当执行流程即将离开声明所在代码块时,以初始化的顺序的相反顺序逐一调用析构函数。当执行流程离开函数体时,将esp加上相应字节数,归还栈空间。为了访问函数变量,必须
2012-08-07 21:41:17
2629
转载 常量指针与指向常量的指针
1 常量指针!如 int b, c; int * const a = &b; 表示a是一个常量指针它指向变量b的内存。但是因为是常量指针所以不能再用a指向其他变量,如 a = &c; 错误!可以修改指向内存的值,如:*a = 20; BTW 常量指针声明的时候必须向我那样赋初值。2 指向常量的指针!如 int b, c; int const *a; a = &b; a = &c;
2012-08-06 10:18:46
1291
转载 double比较大小
转自http://www.cnblogs.com/taoxu0903/archive/2011/03/11/1981389.html参考:Comparing floating point numbers 总结几点:0. float占4byte,精度是6~7位;double占8byte,精度是15~16位。 1. 因为double类型或f
2012-03-24 19:36:52
33036
转载 字符数组,字符指针,Sizeof总结
1.以字符串形式出现的,编译器都会为该字符串自动添加一个0作为结束符,如在代码中写 "abc",那么编译器帮你存储的是"abc\0"2."abc"是常量吗?答案是有时是,有时不是。 不是常量的情况:"abc"作为字符数组初始值的时候就不是,如 char str[] = "abc"; 因为定义的是一个字符数组,所以就相当于定义了
2012-03-14 12:13:10
709
转载 使用二级指针传出参数
使用指针传出参数时,要注意指针所指向的内存是在函数内分配的还是在函数外分配的,以及是不是在堆上分配的。定义一个指针,但是并没有分配指针指向对象所需的内存空间;当函数返回后,此函数栈中的内存会被释放掉,不要让指针指向此函数栈中的内存空间;要指向堆上或此函数外的内存空间。1. 参数传递的原则是:形参传给实参,不能反向传递;2. 一级指针可以在函数内部修改实参指针指向的内容;
2012-03-07 13:06:03
2562
原创 linux mysql 基本操作命令
1、使用SHOW语句找出在服务器上当前存在什么数据库: mysql> SHOW DATABASES; +----------+ | Database | +----------+ | mysql | | test | +----------+ 3 rows in set (0.00 sec) 2、创建一个数据库abccs mysq
2011-12-26 14:48:29
762
转载 scp 无密码登陆
有些时候,我们在复制/移动文件到另一台机器时会用到scp,因为它比较安全。但如果每次都要输入密码,就比较烦了,尤其是在script里。不过,ssh有另一种用密钥对来验证的方式。下面写出我生成密匙对的过程,供大家参考。第一步:生成密匙对,我用的是rsa的密钥。使用命令 "ssh-keygen -t rsa"[Copy to clipboard] [ - ]CO
2011-12-13 14:05:35
10654
1
转载 Vim正则表达式
元字符 说明. 匹配任意一个字符[abc] 匹配方括号中的任意一个字符。可以使用-表示字符范围, 如[a-z0-9]匹配小写字母和阿拉伯数字。[^abc] 在方括号内开头使用^符号,表示匹配除方括号中字符之外的任意字符。\d 匹配阿拉伯数字,等同于[0-9]。\D 匹配阿拉伯数字之外的任意字符,等同于[^0-9]。
2011-11-27 21:14:25
738
转载 gdb用法(二) 在Linux下产生并调试core文件
分析核心(core)文件在程序发生崩溃时,有时可能无法直接运行GDB来进行调试。比如程序可能是在另外一台机器上运行的,或者因为程序对时间比较敏感,所以手动跟踪调试会产生 无法接受的延迟等。遇到这些情况,就只能等到程序运行结束后才能判断崩溃的原因了。这时需要用到Linux提供的core dump机制。当程序中出现内存操作错误时,会发生崩溃并产生核心文件。使用GDB可以对产生的核心文件进行
2011-11-27 19:51:32
818
转载 gdb用法(一)基本gdb命令
GDB 概述 GDB是GNU开源组织发布的一个强大的UNIX下的程式调试工具。或许,各位比较喜欢那种图像界面方式的,像VC、BCB等IDE的调试,但如果你是在UNIX平台下做软件,你会发现GDB这个调试工具有比VC、BCB的图像化调试器更强大的功能。所谓“寸有所长,尺有所短”就是这个道理。一般来说,GDB主要帮忙你完成下面四个方面的功能:1、启动你的程式,能按照你的自定义的需求随心所欲
2011-11-27 19:50:22
1648
转载 对象生死劫 - 构造函数和析构函数的异常
转自http://www.cnblogs.com/leadzen/archive/2008/02/12/1067474.html 在设计类时,构造函数和析构函数往往需要十分的小心。平时不太注意构造函数和析构函数抛出异常,但这却会造成内存泄漏等问题。转载李老师的博客,讲的很清楚: 构造函数和析构函数分别管理对象的建立和释放,负责对象的诞生和死亡的过程。当一个对象诞生时,构造函数负
2011-11-21 13:09:09
752
转载 DHT(Distributed Hash Table): 分布式哈希表
DHT的全称是Distributed Hash Table,即分布式哈希表技术,是一种分布式存储方法。这种网络不需要中心节点服务器,而是每个客户端负责一个小范围的路由,并负责存储一小部分数据,从而实现整个DHT网络的寻址和存储。和中心节点服务器不同,DHT网络中的各节点并不需要维
2011-10-11 18:40:02
10172
原创 strncpy
1. strncpy功能说明: The strncpy function copies the initial count characters of strSource to strDest and returns strDest. If count is less than or equal to the length of strSource, a null charact
2011-10-11 18:17:17
817
转载 用man查看命令帮助时, 括号中的数字表示的意思
当提及如'rn(1)', 'ctime(3)'时,它们看上去像某种函数调用,但不是。 这些数字表示可在"Unix manual"中的哪一部分找到对应的文档。 数字对应的文档如下:1----用户在shell环境可以使用的指令或可执行文件 2----系统核心提供的
2011-09-25 14:21:10
1223
转载 C预处理器中 ##(两个井号)和#(一个井号)都是什么意思
## 连接符号由两个井号组成,其功能是在带参数的宏定义中将两个子串(token)联接起来,从而形成一个新的子串。但它不可以是第一个或者最后一个子串。所谓的子串(token)就是指编译器能够识别的最小语法单元。具体的定义在编译原理里有详尽的解释#符是把传递过来的参数当成字符
2011-09-23 16:33:26
1168
转载 进程和线程的亲缘性(affinity)
进程和线程的亲缘性(affinity)是指可以将进程或者是线程强制限制在可用的CPU子集上运行的特性,它一定程度上把进程/线程在多处理器系统上的调度策略暴露给系统程序员,有助于程序员实现自己的调度策略以提供特定情况下的更好性能,NUMA(非统一内存访问)就是这样一种计算机结构。
2011-09-15 15:44:12
4405
原创 华为面试题2
设有以下说明和定义:typedef union {long i; int k[5]; char c;}DATE;struct data { int cat; DATE cow; double dog;} too;DATE max;则语句 printf("%d",s
2011-09-13 17:36:10
808
转载 华为面试题
int arr[]={6,7,8,9,10};int *ptr=arr;*(ptr++)+=123;printf("%d,%d",*ptr,*(++ptr)); 打印输出:8,81.printf参数入栈顺序:自右向左;2.*(ptr++):先去pt
2011-09-13 16:21:56
539
转载 有了malloc/free为什么还要new/delete?
malloc与free是C++/C语言的标准库函数,new/delete是C++的运算符。它们都可用于申请动态内存和释放内存。对于非内部数据类型的对象而言,光用malloc/free无法满足动态对象的要求。对象在创建的同时要自动执行构造函数,对象在消亡之前要自动执行析构函数。由于malloc/free是库函数而不是运算符,不在编译器控制权限之内,不能够把执行构造函数和析构函数的任务强加于malloc/free。 因此C++语言需要一个能完成动态内存分配和初始化工作的运算符new,以及一个能完成清理与释放内
2011-05-24 18:06:00
626
原创 堆排序实现
堆排序的基本思想:将array[n]的数组看成一棵完全二叉树。父节点均大于其左右子节点的,为大根堆;父节点均小于其左右子节点的,为小根堆。1) 初建堆--从length/2节点开始,自底向上调整,使array[n]成为一个大顶堆;2) 交换堆顶元素(最大值)和最后一个元素,将移走最大元素后的剩余元素,从堆顶开始再调整为堆;3) 重复步骤2)n-1次,则实现array[n]升序排列。堆调整过程:1) 从待调整元素i开始开始调整,自顶向下地作如下调整:2) 将待调整元素与其左右孩子节点比较,三者中最大者作为新的
2011-05-22 18:11:00
584
转载 extern C实现C与C++函数的相互调用
http://www.cnblogs.com/graphics/archive/2010/12/24/1916343.html经常看到如下代码:#ifdef _cplusplusextern "C" {#endif#include "XXX.h"#ifdef _cplusplus}#endif解释:这段代码的含义是,如果当前的程序是C++程序,那么下面引用的头文件是C文件, 那如果当前程序不是C++呢?难道包含的就不是C文件了么?当然不是,不管当前程序是什么,这个XXX.h都是一个C
2011-05-16 22:47:00
1009
RFC3164中文文档.txt
2010-07-27
RFC3164.txt
2010-07-27
mplayer-svn_r27865.tar.bz2
2009-10-18
drcom-1.4.8.1.tar.gz
2009-09-19
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人