Dec
23
这程序写了好几次了,干脆贴出来吧~附上exe。
下载文件 (已下载 1798 次)
#include <stdio.h>
#include <stdlib.h>
char str[65536];
int main() {
int i;
for (i = 0; i < 65536; i++) str[i] = '1';
str[65535] = '\0';
i = 0;
while (1) {
i++;
if (i % 3000 == 0) {
sleep(1);
}
puts(str);
}
return 0;
}
#include <stdlib.h>
char str[65536];
int main() {
int i;
for (i = 0; i < 65536; i++) str[i] = '1';
str[65535] = '\0';
i = 0;
while (1) {
i++;
if (i % 3000 == 0) {
sleep(1);
}
puts(str);
}
return 0;
}

Dec
13
@2012.12.31 更多细节参见这篇.
根据官方文档:
也就是说,不管是哪个版本,希望启用MYSQL_OPT_RECONNECT,都应该调用mysql_options()明确设置它。由于一个BUG,5.0.19之前必须在mysql_real_connect()之后设置,而更新的版本则可以在mysql_real_connect之前设置。
这里的坑是,在没有设置了RECONNECT时,mysql_ping()并不会自动重连。
因此最完整的解决方法是:
1. 在使用mysql_real_connect连接数据库之后,再使用mysql_options( &mysql, MYSQL_OPT_RECONNECT, … ) 来设置为自动重连。这样当mysql连接丢失的时候,使用mysql_ping能够自动重连数据库。
示例代码:
2. 在执行查询的之前使用mysql_ping()确保自动重连。(但是这个是必要的吗?找不到相应的说明。。。)
UPDATE@2012.12.30:原来之前有很多误解(认为是5.1.6之后就不需要设置MYSQL_OPT_RECONNECT),多谢@Zind同学提醒,这篇基本上是重写了。。。
根据官方文档:
引用
MYSQL_OPT_RECONNECT (argument type: my_bool *)
Enable or disable automatic reconnection to the server if the connection is found to have been lost. Reconnect has been off by default since MySQL 5.0.3; this option is new in 5.0.13 and provides a way to set reconnection behavior explicitly.
#如果连接丢失,启用或禁用自动重连到Serve,。自5.0.3之后,重连默认被禁用。这个选项是5.0.13新增的,提供了明确设置重连行为的选项。
Note: mysql_real_connect() incorrectly reset the MYSQL_OPT_RECONNECT option to its default value before MySQL 5.0.19. Therefore, prior to that version, if you want reconnect to be enabled for each connection, you must call mysql_options() with the MYSQL_OPT_RECONNECT option after each call to mysql_real_connect(). This is not necessary as of 5.0.19: Call mysql_options() only before mysql_real_connect() as usual.
#注意:mysql_real_connect() 在5.0.19之前错误地重置了MYSQL_OPT_RECONNECT选项为默认值(不启用),因此,在5.0.19之前,如果你希望为连接启用重连,你必须在mysql_real_connect()之后调用mysql_options来设置MYSQL_OPT_RECONNECT。5.0.19之后就不需要这样了,只需要(跟其他选项一样)在mysql_real_connect之前调用即可。
Enable or disable automatic reconnection to the server if the connection is found to have been lost. Reconnect has been off by default since MySQL 5.0.3; this option is new in 5.0.13 and provides a way to set reconnection behavior explicitly.
#如果连接丢失,启用或禁用自动重连到Serve,。自5.0.3之后,重连默认被禁用。这个选项是5.0.13新增的,提供了明确设置重连行为的选项。
Note: mysql_real_connect() incorrectly reset the MYSQL_OPT_RECONNECT option to its default value before MySQL 5.0.19. Therefore, prior to that version, if you want reconnect to be enabled for each connection, you must call mysql_options() with the MYSQL_OPT_RECONNECT option after each call to mysql_real_connect(). This is not necessary as of 5.0.19: Call mysql_options() only before mysql_real_connect() as usual.
#注意:mysql_real_connect() 在5.0.19之前错误地重置了MYSQL_OPT_RECONNECT选项为默认值(不启用),因此,在5.0.19之前,如果你希望为连接启用重连,你必须在mysql_real_connect()之后调用mysql_options来设置MYSQL_OPT_RECONNECT。5.0.19之后就不需要这样了,只需要(跟其他选项一样)在mysql_real_connect之前调用即可。
也就是说,不管是哪个版本,希望启用MYSQL_OPT_RECONNECT,都应该调用mysql_options()明确设置它。由于一个BUG,5.0.19之前必须在mysql_real_connect()之后设置,而更新的版本则可以在mysql_real_connect之前设置。
这里的坑是,在没有设置了RECONNECT时,mysql_ping()并不会自动重连。
因此最完整的解决方法是:
1. 在使用mysql_real_connect连接数据库之后,再使用mysql_options( &mysql, MYSQL_OPT_RECONNECT, … ) 来设置为自动重连。这样当mysql连接丢失的时候,使用mysql_ping能够自动重连数据库。
示例代码:
mysql_init() ...
mysql_real_connect()...
char value = 1;
mysql_options(&mysql, MYSQL_OPT_RECONNECT, (char *)&value);
mysql_real_connect()...
char value = 1;
mysql_options(&mysql, MYSQL_OPT_RECONNECT, (char *)&value);
2. 在执行查询的之前使用mysql_ping()确保自动重连。(但是这个是必要的吗?找不到相应的说明。。。)
UPDATE@2012.12.30:原来之前有很多误解(认为是5.1.6之后就不需要设置MYSQL_OPT_RECONNECT),多谢@Zind同学提醒,这篇基本上是重写了。。。
Nov
23
按照某帖子里的说法,禁用掉WMPNetworkSvc(Windows Media Player Netwroking SharingService)即可正常使用sysprep部署了。
好久没发这么短的Blog了,简直就是微博了,OVER。
好久没发这么短的Blog了,简直就是微博了,OVER。
Nov
22
贱板 GA-880GM-USB3 rev3.1 很不幸买的时候没有注意,只有SATA II。怀揣Hitachi 7k1000,垂涎M4性能良久,无奈囊中羞涩。
最近看到×讯的Corsair Vengeance 4G*2特价299,于是入了一对,恰逢×迅搞活动,拿到了1000-100的优惠券,M4 64G=725-100,价格就还不错,于是于是一狠心,跟别人凑单买了这个M4 64G。
因为是在公司收到货的,所以提前带了个USB2.0的移动硬盘盒,装上测试了一下,惨不忍睹,读取30写入20,连我的S102 16GB都不如(35/25),但是读写延时还是很给力了,分别是0.1/0.2ms。大概扫了一下确认全盘读取没有问题,于是等回家再测。
亏得先前买了个2.5=>3.5的架子(把移动硬盘卸下来装上去了),于是到家以后马上把M4架上去折磨。AS SSD Benchmark一测,不对,分数才165,坑爹啊!后发现原来不知道啥时候把BIOS里的SATA改成了Native IDE(但分区是4K对齐的)。于是sysprep了一把(否则重启会蓝屏),然后把BIOS改回AHCI,正常了,418分,0002固件,中规中矩,貌似大家64G@SATA2都是这个分数吧。

最近看到×讯的Corsair Vengeance 4G*2特价299,于是入了一对,恰逢×迅搞活动,拿到了1000-100的优惠券,M4 64G=725-100,价格就还不错,于是于是一狠心,跟别人凑单买了这个M4 64G。
因为是在公司收到货的,所以提前带了个USB2.0的移动硬盘盒,装上测试了一下,惨不忍睹,读取30写入20,连我的S102 16GB都不如(35/25),但是读写延时还是很给力了,分别是0.1/0.2ms。大概扫了一下确认全盘读取没有问题,于是等回家再测。
亏得先前买了个2.5=>3.5的架子(把移动硬盘卸下来装上去了),于是到家以后马上把M4架上去折磨。AS SSD Benchmark一测,不对,分数才165,坑爹啊!后发现原来不知道啥时候把BIOS里的SATA改成了Native IDE(但分区是4K对齐的)。于是sysprep了一把(否则重启会蓝屏),然后把BIOS改回AHCI,正常了,418分,0002固件,中规中矩,貌似大家64G@SATA2都是这个分数吧。
Nov
20
上次说了,OpenVZ解决方案的VPS内核没有ppp模块, 不能搞PPTP;不过还好,很多服务商都提供tun(有些需要找客服发ticket,有些在管理后台就可以开,比如BurstNet的就在管理后台开),可以搞OpenVPN。据说OpenVPN效率比PPTP要高,不过PPTP的好处是各种OS直接集成(Windows7,iOS,Android……),而OpenVPN就相对折腾一点。
闲话不说了,进入正题。
==== 首先坑的总结,下面特别注意下 ====
1. iptables规则执行完要输入完然后check一下是否规则已经添加
2. 21端口不靠谱
3. tcp协议不靠谱
4. 配置Server的时候不要一路按回车!有些是问[y/n]需要输入 y 的!
闲话不说了,进入正题。
==== 首先坑的总结,下面特别注意下 ====
1. iptables规则执行完要输入完然后check一下是否规则已经添加
2. 21端口不靠谱
3. tcp协议不靠谱
4. 配置Server的时候不要一路按回车!有些是问[y/n]需要输入 y 的!
Nov
16
[UPDATE 11.20] 昨天发现通用PE工具箱出了2.0版本,更新一下,体积增加了一点,并且把GHOST换成了11.5版,这样SSD对齐就不愁了。有需要的同学自己选择吧,下载地址: http://dl.dbank.com/c09zz78k5g
[UPDATE 11.19] 发现无忧论坛有人做了个神器 fbinst和对应的GUI fbinstool,可以把ISO写进去,类似量产的CDROM。
可能很多人不知道U盘其实可以有多个分区的。在U盘的主控与PC通讯的时候,有一个Bit,叫做Removable Media Bit(简称RMB哟),让操作系统知道,这个设备是不是“可移动设备”。对于U盘,这个Bit一般是被设置成1,而移动硬盘则设置成0。所以U盘的分区在我的电脑中被分类到“可移动磁盘”,移动硬盘的分区却是在“硬盘”列表里。Windows有一个强制的规定,如果一个存储设备是可移动磁盘,那么这个设备只能分一个区;即使有多个分区,也只能给第一个分区分配盘符。很霸道吧。据说是因为早期版本的Windows创建对齐的的分区不是xx对齐的,使得闪存的读取效率低,才加了这个规定。反正我觉得不太合理。
题外话1,Linux没有这个限制,可以任意挂载U盘上的分区,所以安卓论坛上会建议某些人把tf卡分出一个区,格式化成ext2,挂载到/data,美名曰app2ext,这样就不需要app2sd,安装到卡上的程序更稳定。
题外话2,很多U盘(但不是所有U盘)的量产工具支持将这个RMB设置为0,这样U盘会被操作系统认为是移动硬盘,就可以分区了;甚至还可以加载一个ISO文件把它当作一个USB光驱来启动系统,详情可搜索 ChipGenius 或者 UpanTool 。
言归正传,手头的U903和S102是IS902主控的,量产工具不太靠谱(第一次买的U903就被我量产挂了,让X东返修,结果它直接给我退货了),只好老老实实当作可移动磁盘用。尽管只能有一个盘符,也还是有些东西可以挖的。折腾了半天,在此推出Felix021版 PE.SATA.U2,功能嘛,就是把网上流传的 《通用PE工具箱v1.9.6》塞进U盘的第二个分区。这个PE工具箱很好用,支持大部分SATA驱动,包含很多好工具,而且还支持安装Vista/ Win7 /2008到硬盘。
好处有3: 1.跟U盘的正常数据区分开来,不会误删,甚至格式化U盘分区都无所谓;2.PE是单独的分区,而且永远不会被Windows载入,不用担心病毒感染;3.(相比于量产+ISO的U盘)不会有多余的分区;4.对不起我数学不好。
下载地址: http://dl.dbank.com/c02b4urxuu ,使用说明在安装包里有了。
注意:1. 并不是所有U盘都支持启动,很多读卡器不支持; 2. 不保证在所有机器上都能启动; 3. 不保证所有SATA都能支持,不支持的话请手动改BIOS设置成IDE模式; 4. 喝完水忘了T_T。
下面是具体实现过程,记录一下,以后如果它有更新,能记得怎么再来一次。。。伸手党可以不用浪费时间了。
[UPDATE 11.19] 发现无忧论坛有人做了个神器 fbinst和对应的GUI fbinstool,可以把ISO写进去,类似量产的CDROM。
可能很多人不知道U盘其实可以有多个分区的。在U盘的主控与PC通讯的时候,有一个Bit,叫做Removable Media Bit(简称RMB哟),让操作系统知道,这个设备是不是“可移动设备”。对于U盘,这个Bit一般是被设置成1,而移动硬盘则设置成0。所以U盘的分区在我的电脑中被分类到“可移动磁盘”,移动硬盘的分区却是在“硬盘”列表里。Windows有一个强制的规定,如果一个存储设备是可移动磁盘,那么这个设备只能分一个区;即使有多个分区,也只能给第一个分区分配盘符。很霸道吧。据说是因为早期版本的Windows创建对齐的的分区不是xx对齐的,使得闪存的读取效率低,才加了这个规定。反正我觉得不太合理。
题外话1,Linux没有这个限制,可以任意挂载U盘上的分区,所以安卓论坛上会建议某些人把tf卡分出一个区,格式化成ext2,挂载到/data,美名曰app2ext,这样就不需要app2sd,安装到卡上的程序更稳定。
题外话2,很多U盘(但不是所有U盘)的量产工具支持将这个RMB设置为0,这样U盘会被操作系统认为是移动硬盘,就可以分区了;甚至还可以加载一个ISO文件把它当作一个USB光驱来启动系统,详情可搜索 ChipGenius 或者 UpanTool 。
言归正传,手头的U903和S102是IS902主控的,量产工具不太靠谱(第一次买的U903就被我量产挂了,让X东返修,结果它直接给我退货了),只好老老实实当作可移动磁盘用。尽管只能有一个盘符,也还是有些东西可以挖的。折腾了半天,在此推出Felix021版 PE.SATA.U2,功能嘛,就是把网上流传的 《通用PE工具箱v1.9.6》塞进U盘的第二个分区。这个PE工具箱很好用,支持大部分SATA驱动,包含很多好工具,而且还支持安装Vista/ Win7 /2008到硬盘。
好处有3: 1.跟U盘的正常数据区分开来,不会误删,甚至格式化U盘分区都无所谓;2.PE是单独的分区,而且永远不会被Windows载入,不用担心病毒感染;3.(相比于量产+ISO的U盘)不会有多余的分区;4.对不起我数学不好。
下载地址: http://dl.dbank.com/c02b4urxuu ,使用说明在安装包里有了。
注意:1. 并不是所有U盘都支持启动,很多读卡器不支持; 2. 不保证在所有机器上都能启动; 3. 不保证所有SATA都能支持,不支持的话请手动改BIOS设置成IDE模式; 4. 喝完水忘了T_T。
下面是具体实现过程,记录一下,以后如果它有更新,能记得怎么再来一次。。。伸手党可以不用浪费时间了。
Nov
15
坎坷经历就不说了,反正最后是¥79买的郎科U903 8GB,128买的威刚S102 16GB,直接上图。
Windows 7 32bit Ultimate, X3 450 3.2G, DDR3 1600 4GB.
测试:ATTO Disk Benchmark, 0.5~8192KB, 256MB读写速度;HDTune存取时间/突发传输速率
详情如下:
Windows 7 32bit Ultimate, X3 450 3.2G, DDR3 1600 4GB.
测试:ATTO Disk Benchmark, 0.5~8192KB, 256MB读写速度;HDTune存取时间/突发传输速率
详情如下:
Nov
15
@2019-03-19 STL里的lowerbound算法简单有效。
该元素在数组中不一定存在,只是要找一个i,使得 arr[i] <= t <= arr[i+1]。非递归的代码看起来真蛋疼。
该元素在数组中不一定存在,只是要找一个i,使得 arr[i] <= t <= arr[i+1]。非递归的代码看起来真蛋疼。
//区间是 [s, e),左闭右开,类似STL。
int binsearch(int arr[], int t, int s, int e)
{
int left = s, right = e, mid;
while (left < right)
{
mid = left + (right - left) / 2;
if (arr[mid] == t)
return mid;
else if (arr[mid] < t)
{
//right most OR ...right here
if (mid + 1 >= right || t < arr[mid + 1])
return mid;
else
left = mid + 1;
}
else /* arr[mid] > t */
{ //left most OR ...right here
if (mid - 1 < left || arr[mid - 1] <= t)
return mid - 1;
else
//11.18.DELETED: right = mid - 1;
right = mid; //[11.18.update]发现这里是个BUG……
}
}
return -2; //bad range
}
int binsearch(int arr[], int t, int s, int e)
{
int left = s, right = e, mid;
while (left < right)
{
mid = left + (right - left) / 2;
if (arr[mid] == t)
return mid;
else if (arr[mid] < t)
{
//right most OR ...right here
if (mid + 1 >= right || t < arr[mid + 1])
return mid;
else
left = mid + 1;
}
else /* arr[mid] > t */
{ //left most OR ...right here
if (mid - 1 < left || arr[mid - 1] <= t)
return mid - 1;
else
//11.18.DELETED: right = mid - 1;
right = mid; //[11.18.update]发现这里是个BUG……
}
}
return -2; //bad range
}