- 博客(53)
- 资源 (1)
- 收藏
- 关注
转载 信号量大多数情况下可以淘汰条件变量
多线程编程中,发现同步和互斥的手段中,条件变量见到的是最少的。后来查找资料发现:使用信号量完全可以模拟条件变量,而且通常更加具有优势。可以用信号量模拟锁和条件变量:1) 锁,在同一个线程内同时对某个信号量先调用sem_wait再调用sem_post, 两个函数调用其中的区域就是所要保护的临界区代码了,这个时候其实信号量是作为二值计数器来使用的.不过在此之前要初始化该信号量计数为1,见下
2013-07-28 19:12:36
489
转载 Beyond Compare 设置打开文件的默认编码
Beyond Compare 设置打开文件的默认编码2012.11.19Beyond Compare 每次打开都会以西欧(windows)打开文件,在有中文的地方,经常出现乱码。但是设置每个文件的编码方式后,下次依然会变成西欧编码。找了很久才找到设置地方:工具>>文件格式 在右侧切换到 第二个标签页【转换】 在靠下的杂项里即可设置编码方式。隐蔽吧
2013-07-10 18:21:53
1173
转载 "error while loading shared libraries: xxx.so.x" 错误的原因和解决办法
一般我们在Linux下执行某些外部程序的时候可能会提示找不到共享库的错误, 比如:tmux: error while loading shared libraries: libevent-1.4.so.2: cannot open shared object file: No such file or directory原因一般有两个, 一个是操作系统里确实没有包含该共
2013-07-09 11:37:58
315
转载 修改linux文件权限命令:chmod
修改linux文件权限命令:chmodLinux系统中的每个文件和目录都有访问许可权限,用它来确定谁可以通过何种方式对文件和目录进行访问和操作。 文件或目录的访问权限分为只读,只写和可执行三种。以文件为例,只读权限表示只允许读其内容,而禁止对其做任何的更改操作。可执行权限表示允许将该文件作为一个程序执行。文件被创建时,文件所有者自动拥有对该文件的读、写和可执行权限,以便于对文
2013-05-21 22:47:35
258
原创 awk脚本的执行方式
方式1:命令行执行 命令行程序:awk [options] 'prog' [var=value] [file(s)] 如果没有指定file(s),则表示从终端读取输入。 例如awk -F'\t' 'BEGIN{a=1;b=2}{print a,b;}END{print a+b}' data_file方式2:shell脚本的形式也可以把上述代码放到脚本文件中(当作shel
2013-05-03 15:20:56
391
转载 带不定参数的宏
写一个带不定参数的宏函数2011-03-14 21:51:42 1.可变的宏是具有不定参数的宏。这些参数用...代表,被保存到__VA_ARGS__中。他会在内部进行扩展。#defien err(...) fprintf(stderr, __AV_ARGS__)err("%s file total %dMB.\n", "hello.c", 2) ;预处理后为: fpri
2013-02-20 13:44:54
678
转载 mysql中having的用法(和where的区别)
让我们先运行2个sql语句:1、SELECT * FROM `welcome` HAVING id >1 LIMIT 0 , 302、SELECT * FROM `welcome` WHERE id >1 LIMIT 0 , 30查看一下结果吧,怎么样?是不是查询到相同的结果。让我们再看2个sql语句:1、SELECT user, MAX(salary) FROM users
2012-12-22 15:46:21
2778
转载 PHP关联数组的10个技巧
PHP关联数组的10个技巧这篇文章将介绍10个操作PHP关联数组的技巧,熟练运用能帮助你提高开发效率。1、添加数组元素PHP是一种弱类型语言,这意味着你不需要显示声明一个数组及其大小,相反,你可以同时声明并填充数组。$capitals = array( 'Alabama' => 'Montgomery', 'Alaska' => 'Juneau', 'A
2012-12-22 15:29:59
286
转载 source exec区别
source exec区别 2011-05-12 10:22:19| 分类: shell编程 |字号 订阅来自shell十三问:问题的提出:cd /etc/aa/bb/cc可以执行,但是把这条命令写入shell时shell不执行!这是什幺原因呀!先让我们了解一下行程(process)的观念好了。首先,我们所执行的任何程序,都是由父行程(paren
2012-12-16 19:44:33
236
原创 insert ... for duplicate key update ...
$sql = "insert into groupquota (ugid,concurrent,compute) ". "values($ugid,$concurrent,$compute) on duplicate key update ". "concurrent=concurrent-$concurrent,compute=co
2012-12-15 15:14:26
251
原创 mysql数据库左/右 内/外连接使用方法
(1).表A和B的描述mysql> desc A;+-------+------------------+------+-----+---------+-------+| Field | Type | Null | Key | Default | Extra |+-------+------------------+------+-----+------
2012-12-13 18:21:17
378
原创 mysql 数据库外键使用
1.创建表A,id为主键create table A(id int unsigned primary key not null,name varchar(128) not null)Engine=InnoDB,CHARSET=utf8;2.创建表B,id为来自于表A的id字段的外键,create table B(id int unsigned primary key not n
2012-12-13 16:31:28
304
转载 shell 批量注释方法研究
写SHELL的时候以前都是用#注释,但是遇到一段话需要注释的时候,需要N多个#,太麻烦了。 今天逛坛子的时候发现可以注释一段内容:今天用 : ....注释内容 BLOCK注释掉一段话,发现注释内容中有报错出现。仔细查看发现是有反引
2012-12-12 13:30:45
678
原创 通过事务实现互斥
1.可以实现互斥:select...for update 与select...for update之间的互斥事务A:$ret = mysql_query("BEGIN",$con);$sql = "select * from taskstatus where aid=300 for update";$ret = mysql_query($sql,$con);sleep(10
2012-12-11 13:56:38
402
转载 mysql数据库锁
一个数据库操作需要半个小时,并且在一个transaction内,导致其它的操作因为lock而timeout。 为了解决这个问题,找了DBA了解了数据锁的知识: 1. 两种类型的锁: locks: 共享的(S)锁允许一个事务去读一行(tuple)。 独占的锁(X)允许一个事务更新或删除一行。 2. 表锁定,页锁定,行锁定? 看看my
2012-12-10 22:35:32
251
转载 bash的unexpected end of file错误
syntax error: unexpected end of file问题的解决办法dos文件转换成unix文件格式 dos格式文件传输到unix系统时,会在每行的结尾多一个^M,当然也有可能看不到,但是在vi的时候,会在下面显示此文件的格式,比如 "dos.txt" [dos] 120L, 2532C字样,表示是一个[dos]格式文件,如果是MAC系统的,会显示[MAC],因为文
2012-12-04 15:04:02
1053
原创 php mysql 创建及使用procedure的例子
$con = mysql_connect("localhost","root","root"); if (false == $con) { printf("%s,%s,%s\n",__FILE__,__FUNCTION__,__LINE__); } $ret = mysql_select_db("algoplat",$con); if (
2012-12-01 16:48:59
358
原创 php mysql事务的例子
$con = mysql_connect("localhost","root","root"); if (false == $con) { printf("%s,%s,%s\n",__FILE__,__FUNCTION__,__LINE__); exit(1); } $ret = mysql_select_db("algoplat
2012-12-01 15:56:36
260
原创 php操作mysql的例子
//连接数据库 $con = mysql_connect("localhost","root","root"); if (false == $con) { printf("%s,%s,%s\n",__FILE__,__FUNCTION__,__LINE__); } //选择数据库 $ret = mysql_selec
2012-12-01 15:20:37
301
原创 php类成员函数中访问类外定义的变量
$public_var = "I am define out of any classes."; class testA{ public function printMsg($msg) { global $public_var; printf("public_var=%s\n",$pub
2012-11-26 13:44:42
1410
原创 php中访问本类成员需用$this
如下代码:class A{private $DAInfo; public function init() { $this->DAInfo = NULL; //如果不用$this即:$DAInfo = NULL;则相当于这里定义了一个临时变量!! $this->DAInfo = DataAlgoInfo::getInst
2012-11-23 14:14:50
301
转载 PHP constructor protected
PHP constructor protected(2012-09-16 15:47:26) the purpose of a private or protected constructor is toprevent the class from being instantiated from outside of theclass.构造
2012-11-23 00:25:03
309
转载 模板高级用法: Template Template Argument
注意,template template parameter 是极晚近才加入的C++ 特性,因此上面这个程序可作为一个极佳工具,用来评估你的编译器对 template 特性的支持程度。下面的代码在vs2008通过, codeblocks 通过, vs2003不通过// stack8.cpp : Defines the entry point for the cons
2012-11-19 22:03:12
379
转载 MySQL中如何实现select top n
MySQL中如何实现select top n没有系统过,今日想查询前n条记录,习惯性的输入sqlserver的 n的形式语句,select top 5 * form table_name 报错,一查,原来mysql通过limit可以实现相关功能,而且功能更加强大,GOOD。以下是limit在mysql中的使用详解:SELECT * FROM table LIMIT [offs
2012-11-18 14:18:45
1635
转载 shell调用php脚本,并传递参数
命令行执行带参数的php脚本,并取得参数张映 发表于 2011-07-15分类目录: php一,为什么我们要在命令行下运行php脚本呢?个人理解,主要有二个原因:1,利用crontab去跑php,可以给服务器减压,当然在这里有一个条件,就是实时性要求不高。比如:sns中的好友动态,这个实时要求不高,但是数据量比较大,这个时候定时跑的话,会给web服务器,数据库服
2012-11-17 16:57:19
3824
转载 mysql下如何执行sql脚本
首要步骤(一般可省略):开启mysql服务(默认是开机时就自动运行了):控制面板-->管理工具-->服务,在里面找到名称为mysql的项,双击就可看它的服务状态是启动还是停止,把它设为启动 连接mysql:在命令行下输入 mysql -h localhost -u root -p回车,然后输入密码即可;或直接运行mysql自带的连接工具,然后输入密码即可.1.编写sql脚本
2012-11-14 16:04:01
352
转载 It is not safe to rely on the system's timezone settings
It is not safe to rely on the system's timezone settings【转】在写php程序中有时会出现这样的警告:PHP Warning: date(): It is not safe to rely on the system's timezone settings. You are *required* to use the date.timezo
2012-11-10 23:18:45
390
转载 多线程程序中fork容易导致fork出来的子进程中死锁
前言:exce调用并不创建新进程,所以前后的进程ID并未改变,exec只是用一个全新的程序替换了当前进程的正文、数据、堆和栈段多线程程序里不准使用fork :为什么???UNIX上C++程序设计守则3准则3:多线程程序里不准使用fork在多线程程序里,在”自身以外的线程存在的状态”下一使用fork的话,就可能引起各种各样的问题.比较典型的例子就是,fork出来的子进程可能会
2012-04-26 16:02:25
1343
原创 函数中declare的变量在函数调用后仍无法使用,即作用域是local而非global
foo (){declare FOO="bar"}bar (){fooecho $FOO}bar # Prints nothing.# Thank you, Michael Iatrou, for pointing this out.但是函数中不是用declare定义的变量是可以在函数调用后使用,即其作用域是global的.foo (){
2012-04-20 21:01:38
286
转载 shell函数中定义的变量是global的,从函数调用的地方开始生效
(2)Shell函数定义的变量默认是global的,其作用域从“函数被调用时执行变量定义的地方”开始,到shell结束或被显示删除处为止。函数定义的变量可以被显示定义成local的,其作用域局限于函数内。但请注意,函数的参数是local的。例2:函数定义的global变量#!/bin/bash#define the function ltx_funcltx_func(){
2012-04-20 17:26:13
292
原创 killpg杀掉父进程及所有的子进程(因为它们属于同一组)
在进程中捕获SIGKILL信号,在信号处理函数中调用 killpg(0,SIGKILL);就可以实现杀死所有的父进程及所有的子进程了。killpg系统调用】 功能描述:将信号发送给进程组中的所有成员。用法: #include int killpg(pid_t pgrp, int signal);参数: pgrp:信号将送往的组标识,假
2012-04-19 13:58:28
1222
原创 execl函数 ,errcode:14,errstr:Bad address
是因为i_ret = execl("/bin/sh","sh","-x",str_script.c_str(),str_parameter.c_str());最后少一个参数,execl的最后一个参数必须是NULL改成i_ret = execl("/bin/sh","sh","-x",str_script.c_str(),str_parameter.c_str(),NULL); OK
2012-04-19 13:40:22
805
转载 不久要做一个与web程序开发相关的项目,选择工具真是一个头疼的事
1. Python+Web这几天就憋在房子里搞Web编程,进行语言的选择、框架的选择,把头弄得都晕了。因为对Python比较熟悉,先看Python下进行Web编程如何。Python下的Web框架是最多的,越多就越不容易挑选,你要对每种框架都进行研究后才能给出结论,最后选定Django进行了皮毛的研究。发现真要开发起来还是比较烦人的,涉及的东西太多了。后来又看了看其他轻量级的框架如mod_p
2012-02-27 20:29:00
580
转载 Linux信号集
Linux信号集 1. 信号集概念 信号集是一个能表示多个信号的数据类型,sigset_t set ;set即一个信号集。 既然是一个集合,就需要对集合进行添加/删除等操作。 int sigemptyset(sigset_t *set); 将set集合置空 int sigfillset(sigset_t *set); 将所有信号加入set集合 int si
2012-02-17 13:39:05
1972
转载 C语言预处理命令总结大全
C语言预处理命令总结大全 (2012-02-13 17:18)原文链接:http://blog.chinaunix.net/uid-21411227-id-3071612.html标签: C语言 预处理 分类:C编程C程序的源代码中可包括各种编译指令,这些指令称为预处理命令。虽然它们实际上不是C语言的一部分,但却扩展了C程序设计的环境。本节将介绍如何应用预处理程序和注释简化
2012-02-15 15:46:01
359
转载 grep 文件报错 “Binary file ... matches”
grep 文件报错 “Binary file ... matches”2011-10-26 9:21grep 文件报错 “Binary file ... matches” 原因:文件为binary文件解决:strings vers.log.2010-03-09 | grep -i ‘mezimedia’ 或者 grep -a -i ‘m
2012-02-15 13:58:33
1837
转载 [C++再学习系列] 全局或静态变量(对象)的初始化
[C++再学习系列] 全局或静态变量(对象)的初始化2010-10-15 13:11 by zhenjing, 739 visits, 收藏, 编辑 对于C语言的全局和静态变量,不管是否被初始化,其内存空间都是全局的;如果初始化,那么初始化发生在任何代码执行之前,属于编译期初始化。由于内置变量无须资源释放操作,仅需要回收内存空间,因此程序结束后全局内存空间被一起回收,不存在变
2012-02-14 16:11:22
356
原创 setenv,getenv,mktime非线程安全函数,在多线程环境中使用要加锁
测试程序pthread_mutex_t st_lock;void* test_thd_func(void *p_arg){ pthread_detach(pthread_self()); char ac_name[1024] = {}; for (int i = 0; i { sprintf(ac_name,"st
2012-02-14 15:47:44
2238
转载 千万不要对vector之类的容器使用memset
千万不要对vector之类的容器使用memset转自http://blog.youkuaiyun.com/morebread/article/details/7007225最近写了个非常简单的内存池,但是在使用的过程中却发现有内存泄露的现象。花了很多时间去跟踪和测试代码,最终发现在分配和回收一个带有vector成员的结构体时,对这个结构体进行了memset置零,结果导致程序出现了莫名其
2011-12-29 13:28:17
1138
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人