【转】Linux下c语言写的定时器(计时器)
【实现功能】:下的C编程:编写一个程序(库),实现定时器(计时器)的功能,它能为用户提供在同一进程中多次使用的定时器。这里要求用信号来实现。
【解题思路】:编写一个结构体Timer代表一个计时器,然后再定义Timer类型的数组myTimer[N],用来保存我们设置的定时器;再定义函数setTimer()生成计时器,并将生成的计时器保存到myTimer中,这样通过多次调用,就可以在同一个进程中生成多个计时器;定义timeout()信号处理函数,每隔一秒产生一个信号,通过调用timeout()对所有的定时器扫描一遍,检查哪些计时器超时。
【程序代码】:如下阅读全文
For some reason however I expected it to behave like `mkdir -p` on the command line which succeeds if the directory already exists.




上面来自PHP手册老外的回复:
http://cache.baiducontent.com/c?m=9f65cb4a8c8507ed4fece763105392230e54f7216695c7150888c40e8e3b081d0035bda66f780d5094992d215af2154bea87692b615860a09bbfca109fafd7756fde28762a5e9141638c40f9900632c151875a9fb81897f8&p=882a9543d2b112a05afcc665540883&newp=8b2a9712a49111a058eb9029164ccb231610db2151d1d11128a6c1&user=baidu&fm=sc&query=PHP+mkdir+-P&qid=&p1=1

下面来自网友没实践:
http://hi.baidu.com/hevensun/item/d28a0c08c68d98e0ff240d85
阅读全文
一、使用Editplus批量替换某个目录下包含某字符串的快捷方法:
(1)Find in Files 查找并选中哪些需要替换并全打开:
search -> find in files 查找需要替换的关键词,并列出来哪些文件;ctrl+选中哪些替换文件后右键后,点:全部打开。
(2)全部打开后,在所有打开文件里替换掉:
Ctrl + H 打开后,在替换所有范围里选中:所有打开文件。
(3)如果你替换内容较多:
则选更多(E),这样查找替换的输入框框更大,更方便。
它可以直接替换换行符为任意字符接替:单文件可通过正则对每行尾进行替换,如下:http://www.jackxiang.com/post/2038/
而多个文件则不行了,直接在大的框里输入回车,后下面什么也不输入,那此时就是把所有换行替换为空了。
如果选中了所有打开文件,那就是把所有文件的换行给替换为空了,所有文件成一行了,呵呵。

后记:
尽管有人说:Editplus的批量查找替换速度是DW的10倍以上……但dw这替换功能确实不错。
还不能满足你苛刻的要求么? 试试:Replace Pioneer :-)
http://blog.sina.com.cn/s/blog_3f6c1f670100sgj5.html

二、使用Editplus进行个性化替换某文件下的多个路径以符合线上环境的快捷办法:
Editplus支持的WScript进行按需替换,学得有点自己作符合自己替换工具的意思,特别引用并记录:
http://www.z3f.me/article.aspx?ID=1757
——————实践如下:——————
D:\Program Files\EditPlus\UrlParse.js

简单的调试方法:WScript.Echo(output);
上面是能够运行的,上面的原作者的Url里包有注释等,容易导致运行不了,提示:Microsoft JScript 运行时错误: 'arr' 未定义
,我后加上一行定义,好像是好了。
在Editplus里设置下:
菜单文字:批量替换文件中的多个路径
命令:Cscript.exe /nologo  "D:\Program Files\EditPlus\UrlParse.js"
参数:$(FileName)
初始目录:$(FileDir)
动作:运行为文本过滤器(替换)
输出模板:使用默认输出
保存:无
即可进行对想替换的目录进行替换了。


三、让Editplus自动格式化css和js调试Js简单语法错误的简单设置(平时用aptana等的,只是偶会反过来用到:如线上代码是压缩成一行了,通过Js格式化下就多行看清了,WEB版本下的也有解压的,方法途径很多。):
http://bbs.blueidea.com/thread-2904136-1-1.html

1,在EditPlus中添加javascript调试工具,JavaScript调试下的Editplus配置:
菜单文字:javascript调试
命令:cmd /c
参数:$(FileName)
初始目录:$(FileDir)
动作:捕捉输出
输出模板:不使用默认输出,用正则:^Lint at line ([0-9]+) character ([0-9]+).*$"
保存:无
使用方法:
很简单,用Editplus打开一个javascript(.js)文件,选择菜单“工具”-“javascript调试”即可。
2,CSS格式化:
菜单文字:CSS格式化
命令:Cscript.exe /nologo  "D:\Program Files\EditPlus\cssFormatter.js"
参数:$(FileName)
初始目录:$(FileDir)
动作:运行为文本过滤器(替换)
输出模板:使用默认输出
保存:无

3,Js脚本格式化:
菜单文字:CSS格式化
命令:Cscript.exe /nologo  "D:\Program Files\EditPlus\jsFormatter.js"
参数:$(FileName)
初始目录:$(FileDir)
动作:运行为文本过滤器(替换)
输出模板:使用默认输出
保存:无

上面三个的JScript 包DownLoad:
从我开始工作算起,已经有20多年了。即便如此,我依然记得当时对从大学毕业并开始工作的憧憬。在那之前,除了少数几份和编程无关的暑期工,我的人 生基本都是在学校度过的。虽然我对工作的大多数期望都实现了,不过在步入职场头几年中也发现这一行许多令人惊奇的事,下面是头五件:

5. 人际交往

编程看起来是一份相当孤独的工作——你需要完成一个功能,所以你坐下来并用代码将其实现。不过事实上,你和其他的同事会有相当多的交流。你会和同事讨论设计,你会在开会时审查新功能,你会和测试人员讨论你的代码。

学会委婉和圆通,在交流中非常有帮助。如果还不会,那你得去学一下。关于这方面,有一本畅销书——卡耐基的《人性的弱点》。如果还没有读过此书,我强烈建议你读一读。

4.写作很重要

通过写作清晰地表达观点,这很有帮助。从某种程度上来说,写代码和写作非常相似,两种都需要你把你的想法,通过某个结构化的方式清晰并且无歧义的表 达出来。Email当然是写不完的了,不过还有你所开发的产品特性所配套的文档、需要清晰描述Bug的漏洞报告、还有对你修复的Bug做出的解释。在大学 里写作并不是重点,但是如果你写作好的话,这绝对是工作中的一个筹码。

3.从来没有已做完的软件

在我开始工作以前,我觉得当我开发出一个特性之后,这个特性就算开发完成了。不过在现实中,你会很经常的要回到这个特性上来。有时候是因为这并不完 全是客户所要求的,也可能是因为你需要为它添加更多功能,又或者是你想要把有些相似的功能合并起来,或者修复一个Bug。不管怎么样,对你的代码继续进行 编程是很正常的事。

在大学里,我们经常会把一个程序从头做起,但这在现实世界中几乎是没有出现过的。当然,除了你做新功能的时候,但这些代码总要融入旧代码。正因为如此,做新功能时的很大一部分工作都是在阅读并理解旧代码。这是一项我们在学校里没有练习过的技能。

2.很少有巧妙的算法

在大学里我得到了一个计算机科学与工程的硕士,我学习了通信系统,里面包括信号处理、错误纠正码、排队论等等的课程。我们也有像算法和数据结构这样 的计算机科学核心课程,我很喜欢这些课,我觉得学会这些聪明的算法和数据结构是一件很酷的事,所以我非常期待在工作中见到它们。

我的第一份工作是在蒙特利尔的爱立信公司,在一个蜂窝网络的移动电话交换中心担任软件工程师。那里有大量的代码来控制通话的建立、挂机、漫游等等, 但当我看到这些功能都是用最基本的数据结构和算法完成时,我觉得有点失望。最有趣的是,我发现用来跟踪用户漫游状态的代码居然是由一千多个二叉树构成的, 用户手机号的末三位数决定了用户处于哪颗树上。当需要找到这个用户时,根据用户的手机尾号找到用户所在的树,然后遍历该树以找到该用户。除了这个,其他的 都是链表甚至是更简单的数据结构。

1.系统集成后的复杂性

说起来既然没有什么精巧的算法,而且整个应用程序都在使用基本的数据结构,那看来在这里工作应该没有什么挑战吧?错!我很快就意识到这套系统高度复杂,倒并不是因为那些复杂的功能,而是因为太多太多简单的功能集成合到了一起。

在我工作过的那么多套系统中,我看到了一些共同点:大多数特性都非常简单,但正因为就是有很多简单的特性,在集成这些特性之时所遇到的微妙(或不那么微妙)交互,就引发了Bug。



原文链接: Henrik Warne   翻译: 伯乐在线 - 吴鹏煜
译文链接: http://blog.jobbole.com/50950/

来自:http://www.phpchina.com/archives/view-43218-1.html
昨天还是好的,最后修改了下-Xms125为256好像就好了,奇怪:
ZendStudio.ini  -Xms256M好了。
Percona公司真是勤勉上进的时代好青年,他将两套老掉牙的工具整理、合并、修订,发布了Percona Toolkit。这是一个非常好用的工具集,学好用好这个工具集,肯定会对你以后DBA的工作生涯中有所帮助。

这些工具大部分是用shell和perl编写的,提供YUM软件源,安装非常简单,但还有一种更简单的办法,比如我想用pt-mysql-summary这个工具,只需要:

#wget percona.com/get/pt-mysql-summary

然后

#chmod +x pt-mysql-summary

就可以使用了,像不像Windows中的“绿色免安装软件”?

官方的文档可以参见:

http://www.percona.com/doc/percona-toolkit/

这个工具集内容非常丰富,其中pt-summary, pt-mysql-summary, pt-show-grants, pt-slave-delay 是我最常用的工具,建议大家有空多研究尝试一下,磨刀不误砍柴工。

来自:http://www.zeuux.com/group/himysql/bbs/content/55142/
如何捕获MySQL数据库中的低效SQL语句:
面对业务的迅猛发展,DBA的一项重要工作就是及时发现数据库中的低效SQL语句,有的可以立刻着手解决(比如缺少合适的索引),有的需要尽快反馈给开发人员进行修改。

MySQL数据库有几个配置选项可以帮助我们及时捕获低效SQL语句:

1,slow_query_log

这个参数设置为ON,可以捕获执行时间超过一定数值的SQL语句。

2,long_query_time

当SQL语句执行时间超过此数值时,就会被记录到日志中,建议设置为1或者更短。

3,slow_query_log_file

记录日志的文件名。

4,log_queries_not_using_indexes

这个参数设置为ON,可以捕获到所有未使用索引的SQL语句,尽管这个SQL语句有可能执行得挺快。

配置好上述几个参数后,我们就可以监视日志,然后着手进行解决了。

来自:http://www.zeuux.com/group/himysql/bbs/content/55137/


中小型MySQL数据库集群方案:
对于中小型MySQL数据库集群,有以下几个特点或需求:

1,数据库写入操作并不密集,单台服务器足以支持。

2,数据库读取操作频繁,需要能够轻松扩展。

3,业务对数据库依赖性强,对于数据库的可用性有较高的要求。

4,应用普遍已经支持数据库读写分离。

5,要求架构简单,不能引入复杂或者不可靠的技术组件。

针对这些特点和需求,我认为合适的架构如下:

1,数据库主库采用DRBD磁盘复制方案,并配合Heartbeat来达到HA的效果。

2,多台数据库辅库使用DR模式的LVS来达到负载均衡和HA的效果。

这样的架构简单且可靠,我认为是中小型MySQL数据库集群比较理想的方案。

你觉得呢?

来自:http://www.zeuux.com/group/himysql/bbs/content/55127/
背景:Set Cookie时出现两个相同的cookie的key和一样value值 送出,用Cookie::delete('language1');出现第一个给删除了,第二个送出,删除了会在浏览器上提示:值为”deleted”, 过期时间为 Thu, 01-Jan-1970 08:00:01 CST 或者说是 Thu, 01-Jan-1970 00:00:01 GMT
看实现:

上面用的是NULL,于是找到一篇文章讲这个的:
php setcookie时value为null或空字符串,会删除此cookie:
http://www.zhaokunyao.com/archives/4346
STRICT_TRANS_TABLES:https://www.cnblogs.com/lxwphp/p/9054971.html
#sql_mode=ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
sql_mode=ONLY_FULL_GROUP_BY,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION



背景:线上数据库报:mysql STRICT_TRANS_TABLES严格模式下提示Field 'ip' doesn't have a default value,线下测试机没有报错,外包开发时代码没法保证SQL全写运行无问题。
failed to execute the SQL statement:
SQLSTATE[22007]: Invalid datetime format: 1292 Incorrect
datetime value: '0000-00-00 00:00:00' for column 'updated_at' at row 1
如果想宽松模式,则注意一下修改一下sql_mode,如下:


这样干的问题:


INNODB加入后,还是不行:
innodb_strict_mode = 1
mysql> show variables  like "%str%";
+--------------------+----------------+
| Variable_name      | Value   |
+--------------------+----------------+
| innodb_strict_mode | ON    |
+--------------------+----------------+
1 row in set (0.00 sec)

外网的SQL有问题,内网的测试机db无问题,如下:
REPLACE INTO `app_play_8` (`user_id`, `video_id`, `video_name`, `video_img`, `video_url`, `playtime`, `source`, `source_url`, `clienttype`, `position`) VALUES ('21240168', '112c9654-52ed-11e1-b091-a4badb4696b6', '《2012春节动画狂欢曲》', 'http://p1.img.cctvpic.com/fmspic/2012/02/06/becd73c6cc3f43c59add0f42787400ae-180.jpg', 'http://jackxiang.com/v-112c9654-52ed-11e1-b091-a4badb4696b6.html', 1388978166, '哈妮哈妮', 'http://my.jackxiang.com/31759585/index.html', '1', '99')

ERROR 1364 (HY000): Field 'ip' doesn't have a default value


看似找到了,其实不然,和版本无关---另一台测试的db是13的,也是同样ip不能为空,但也不提示:Field 'ip' doesn't have a default value。
找到了:
这个我在我的虚拟机mysql5.6.12 上分别把线上的sql给建立和线下也建立,同时这个+--------------------+-------+
| Variable_name      | Value |
+--------------------+-------+
| innodb_strict_mode | OFF   |
+--------------------+-------+,
虚拟机是会报没有ip的,所以,得出是mysql的版本造成的。5.6.11(测试),5.6.12(我的虚拟机),5.6.13线上。 12,13是一样的结果,得证。
我这个关系不大:innodb_strict_mode
尽管线上打开了,但是我的虚拟机配置没打开这个,依旧能提示:Field 'ip' doesn't have a default value。

______后来,1)打开my.ini,加入:
#Add Mysql's Innodb strict sql insert mode by:jackxiang date:2013-01-06

2)重启:
[root@localhost mysql]# ./bin/mysqld_safe --defaults-file=conf/my.cnf &
3)再插入OK有提示了:
mysql> REPLACE INTO `app_play_8` (`user_id`, `video_id`, `video_name`, `video_img`, `video_url`, `playtime`, `source`, `source_url`, `clienttype`, `position`) VALUES ('21240168', '112c9654-52ed-11e1-b091-a4badb4696b6', '《2012春节动画狂欢曲》', 'http://p1.img.cctvpic.com/fmspic/2012/02/06/becd73c6cc3f43c59add0f42787400ae-180.jpg', 'http://jackxiang.com/v-112c9654-52ed-11e1-b091-a4badb4696b6.html', 1388978166, '哈妮哈妮', 'http://my.jackxiang.com/31759585/index.html', '1', '99');
ERROR 1364 (HY000): Field 'ip' doesn't have a default value
mysql> quit


实践参考两篇文章:
mysql STRICT_TRANS_TABLES严格模式下提示Field 'id' doesn't have a default value:
http://www.zui88.com/blog/view-411.html
Mysql Field * doesn't have a default value解决方法:
http://blog.sina.com.cn/s/blog_43ed7f260100fk6h.html

EOF Add:2014-01-06
——————————————————————————————————————————————————————————————
虽然说我们尽量在写程序的时候控制插入到数据库的数据,而不要用数据库去判断数据的对错,但是有时候为了方便还是需要数据库自身的容错能力来帮助我们达到目的的。举例说明:
创建如下数据表
[sql] view plaincopy
    CREATE TABLE `book` (  
      `id` int(11) default NULL,  
      `num` int(11) unsigned default NULL  
    ) ENGINE=InnoDB DEFAULT CHARSET=gbk  
    insert into bookvalues(1,0),(2,0)  
执行update book set num='abc',竟然不报错,原因是没有启用严格模式。所以
先执行set sql_mode="STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION",
然后执行update book set num='abc',数据库就报错了
如果想一劳永逸,那就直接把数据库配置文件my.ini中的相关参数设置为
# Set the SQL mode to strict
sql-mode="STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION"
——————————————————————————————————————————————————————————————

解决办法:关闭MySQL的strict mode。具体做法:找到MySQL目录下的my.ini,
将其中的sql-mode="STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION"
修改为sql-mode="NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION",重新启动 Mysql服务。


  MySQL 严格模式 sql_mode 收藏
虽然说我们尽量在写程序的时候控制插入到数据库的数据,而不要用数据库去判断数据的对错,但是有时候为了方便还是需要数据库自身的容错能力来帮助我们达到目的的。举例说明:
创建如下数据表
CREATE TABLE `book` (
  `id` int(11) default NULL,
  `num` int(11) unsigned default NULL
) ENGINE=InnoDB DEFAULT CHARSET=gbk
insert into bookvalues(1,0),(2,0)
执行update book set num='abc',竟然不报错,原因是没有启用严格模式。所以
先执行set sql_mode="STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION",
然后执行update book set num='abc',数据库就报错了


非严格模式:会对语法的限制降到最低,导致很多不规范的语句都可以执行,会导致歧义.
严格模式:可以实现严格校检,使错误数据不能插入,从而保证数据准确性.

来自:http://blog.sina.com.cn/s/blog_505d197c0100l1bs.html
来自:http://blog.csdn.net/ldb2741/article/details/5317803
官网:http://forums.mysql.com/read.php?11,581356,581356#msg-581356
陸 一鳴<lu.yiming@outlook.com>  下午 04:11:38
https://gist.github.com/luxixing/7411156
PHP5.3向更高版本迁移的内容基本写完了
感兴趣的看看,有不足之处请在下面的评论反馈,
我会尽量完善
有些内容如果需要优化示例或者新增示例的话也反馈下

https://gist.github.com/luxixing/7411156
实践有问题解决如下:
时不时访问不到切换下。这个是别人写的,有个缺点:
里面的中文编码不对,直接打开host文件是中文乱码。
不过,C:\Windows\System32\drivers\etc\hosts
编码修改成utf8就OK了。
——————————————————————————

问:
那我在内网host,外网host,这块切换环境有没有好的Firefox插件?
答:
switchhost
chrome有插件

https://github.com/oldj/SwitchHosts/downloads
Windows 绿色版本下载:https://github.com/oldj/SwitchHosts/downloads。

来自:http://oldj.net/article/switchhosts/
百度下载:http://pan.baidu.com/share/link?shareid=150951&uk=3607385901#dir/path=%2Fshare%2FSwitchHosts!
less中百分比和数字计算:
我用的格式如下,可能还有其他格式,欢迎补充

注意:括号中间的运算符两边必须有空格,否则结果不对,亲测坑爹啊

margin-left:calc(~"(100% - 225px)");

阅读全文
背景:多个项目进行代码的日志打印级别统一替换时,如果文件庞大,数目多,一个个去做显然力不从心,得通过脚本,这种替换sed最适合不过了。

paste imgid.txt times.txt |awk -F"." '{print $1}'|awk -F'T' '{print $1"        "$2}'|sed "s/[-:]//g"| paste imgid.txt times.txt |awk -F"." '{print $1}'|awk -F'T' '{print $1"        "$2}'|sed "s/[-]//g;s/://g"

[28-Jan-2019 20:22:33 Asia/Shanghai] PHP Warning:  Redis::connect(): connect() failed: Cannot assign requested address in /root/a.php on line 6
[28-Jan-2019 20:22:33 Asia/Shanghai] PHP Fatal error:  Uncaught RedisException: Redis server went away in /root/a.php:7
Stack trace:
CentOS6和7都要打开,模糊替换:

linux地址重用 net.ipv4.tcp_tw_reuse:
https://blog.csdn.net/pzqingchong/article/details/53580732

sed实现去注释,加中间小横:
#BuildRequires: %{_php_fpm}%{php_version}                                                                                                                    
#Requires: %{_php_fpm}%{php_version}



fpm}%{php  ==替换成=> fpm}-%{php:


如题:
I:
我想把:log_threshold =N;
替换为:log_threshold =1;

我想把:show_debug_errors=AnyWord;
替换为:show_debug_errors=false;

II:
error_reporting(E_ALL ^ E_NOTICE); 变:
//error_reporting(E_ALL ^ E_NOTICE);

I):日志开关,错误级别修改:
一、Sed替换方法如下(该处由scottjiang兄弟提供,后面我发挥了一下下:-)):


二、如果不想备份直接替换:


三、多个项目的index.php都要统一用sed替换:



II):sed实现对PHP代码某特征给注释一行(如:项目上线时不想让其打开错误报告给用户):
如想:
error_reporting(E_ALL ^ E_NOTICE); 变:
//error_reporting(E_ALL ^ E_NOTICE);
sed替换方法:

而:也可结合上面三实现批量替换实现多个文件包含上面串的该行给予注释掉:


四、替换由mysqldump出的自境长字段为0:
情形:Mysqldump出的线下自增长字段,会有默认值,而放到外网则需要从线上开始,此SQL也需要替换的(http://jackxiang.com/post/1188/)
deo` VALUES (1121,NULL,'
用sed替换:
sed -i "s/([0-9]*/(0/g" /tmp/result.sql  
替换后,为0,上线插入时则从线上默认增长,而不是上面的1121:
_video` VALUES (0,NULL,'2'

sed -i 's/([0-9]*,/(0,/g'   //文件名替换(12122, ==>(0,
缩进使用4个空格,而不是 tab。这是PHP编程规范手册中的一句话。

之所以这样,是因为tab在不同的编辑器代表的空格是不一样的,为了排版不出现混乱,规范中建议直接使用空格。
但是直接用空格的话,我们在写代码的时候经常会需要缩进,不用TAB的话工作量是巨大的。

其实,我们完全可以用EditPlus解决这个问题。

写代码的时候放心去用TAB,写完代码后,用鼠标选择全部代码,右击->format(格式)->tabs to spaces(制表符转为空格),这样就可以把所有的tab改为spaces了。

来自:http://hi.baidu.com/amenmen/item/e7c9588eca8f48d65f0ec120
———————————————————————————————————
1.视图->缩进指示。
2.视图->空白->空格。
背景:有时IE浏览器在访问页面时会缓存,而在多语言的网页设计时往往就会出现切换语言后还是以前的页面,是因为此时多语言页面根本没有去服务器请求,而(1)从本地cache里读取的缘故,同时cookie必须能及时设置成某种语言,不要因Js太多导致在切换语言时没执行到,进而切换了还是没有切换成功的问题。
(2)服务器在这时必须关闭对IE等各种浏览器的cache指示输出才行,否则也会出现因为cookie改变了,服务器还是用以前的html文档给输出,语言没有变。

(3)再就是对CSS等得同一套CSS,输出的各种语言的Html不同,加载上了同一css文件的不同片段进而实现了排版功能。

IE很聪明,如果缓存里面拥有该URL,那就从Cache里面读取数据。
  但是有时候我们不希望浏览器读取缓存。IE的聪明就反被聪明误了。
  JS实现:
  
代码


每次页面加载  清空缓存:


来自:http://www.douban.com/note/231598561/
http://bbs.csdn.net/topics/350158157
分页: 76/271 第一页 上页 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 下页 最后页 [ 显示模式: 摘要 | 列表 ]