??
2015-10-31 18:13
lovelucy
2015-10-29 20:19
标题:ssh clone session
内容:建议直接开始用tmux或者screen。。
内容:建议直接开始用tmux或者screen。。
爱偏要别离
2015-10-25 22:18
标题:Vista/Win7下使用摄像头拍照、录像的终极解决方案
内容:好用!亲测!
内容:好用!亲测!
Wei
2015-10-25 08:20
标题:Manacher's ALGORITHM: O(n)时间求字符串的最长回文子串
内容:这个算法不好的地方就是要改原始数据。但如果用两个端点之和来存储最大的子回文串的长度的话,就不需要改原始数据了。
内容:这个算法不好的地方就是要改原始数据。但如果用两个端点之和来存储最大的子回文串的长度的话,就不需要改原始数据了。
snoopy
2015-10-16 13:49
标题:ssh clone session
内容:可以修改服务器 ~/.ssh/authorized_keys 的表示毫无压力
内容:可以修改服务器 ~/.ssh/authorized_keys 的表示毫无压力
felix021 回复于 2015-10-18 10:39
嗯,有信任关系那当然最好。。
exr
2015-10-14 16:38
winterstasis
2015-9-24 02:22
标题:Manacher's ALGORITHM: O(n)时间求字符串的最长回文子串
内容:有一个问题是如果字符串里面本身就含有#怎么办呢
内容:有一个问题是如果字符串里面本身就含有#怎么办呢
felix021 回复于 2015-10-16 11:44
换另一个字符就好了,比如ASCII 01
winterstasis
2015-9-23 13:38
标题:Manacher's ALGORITHM: O(n)时间求字符串的最长回文子串
内容:感觉写的简单易懂,真棒
内容:感觉写的简单易懂,真棒
标题:闲说HeartBeat心跳包和TCP协议的KeepAlive机制
内容:心跳除了说明应用程序还活着(进程还在,网络通畅),更重要的是表明应用程序还能正常工作。而 TCP keepalive 有操作系统负责探查,即便进程死锁,或阻塞,操作系统也会如常收发 TCP keepalive 消息。对方无法得知这一异常。摘自《Linux 多线程服务端编程》,给博主参考。
内容:心跳除了说明应用程序还活着(进程还在,网络通畅),更重要的是表明应用程序还能正常工作。而 TCP keepalive 有操作系统负责探查,即便进程死锁,或阻塞,操作系统也会如常收发 TCP keepalive 消息。对方无法得知这一异常。摘自《Linux 多线程服务端编程》,给博主参考。

felix021 回复于 2015-9-14 16:30
赞,非常感谢~
孙小九
2015-8-25 15:23
标题:Manacher's ALGORITHM: O(n)时间求字符串的最长回文子串
内容:文中提到的:#UPDATE@2013-08-21 14:27@zhengyuee 同学指出,由于 P[id] = mx,所以 S[id-mx] != S[id+mx],那么当 P[j] > mx - i 的时候,可以肯定 P[i] = mx - i ,不需要再继续匹配了。不过在具体实现的时候即使不考虑这一点,也只是多一次匹配(必然会fail),但是却要多加一个分支,所以上面的代码就不改了。是有问题的考虑到特殊情况,当mx-i == i-id的时候(即i正好是[id,mx]的中点的时候),不能肯定P[i] = mx - i,仍然需要扩大范围继续搜索
内容:文中提到的:#UPDATE@2013-08-21 14:27@zhengyuee 同学指出,由于 P[id] = mx,所以 S[id-mx] != S[id+mx],那么当 P[j] > mx - i 的时候,可以肯定 P[i] = mx - i ,不需要再继续匹配了。不过在具体实现的时候即使不考虑这一点,也只是多一次匹配(必然会fail),但是却要多加一个分支,所以上面的代码就不改了。是有问题的考虑到特殊情况,当mx-i == i-id的时候(即i正好是[id,mx]的中点的时候),不能肯定P[i] = mx - i,仍然需要扩大范围继续搜索
标题:Manacher's ALGORITHM: O(n)时间求字符串的最长回文子串
内容:int palinLen(const char *s)
{
if (!s) {
return 0;
}
char *front,*back, *head =s;
//这里的front back分别指向 s前后
//head记录s的开始位置 防止front访问非法元素
int len = 0, i ; //len记录最后的长度 i只是记录一次的长度
s++; //第一个肯定不是 所以s加1
while(*s){ //以s为中心进行 front back分别指向两边 查找
front = s - 1;
back = s + 1;
i = 0; //从这里开始计数
while((&*head != &*front) && *back ){
//这里有问题front可能访问非法区域
//可以使用head指向的位置的地址来判断
//是否front越界
if(*front == *back){
i++;
}else{
break;
}
back++;
front--;
}
if (len < i) {
len = i;
}
s++;
}
return len;
}
这个算法 行吗 ?? 这是我自己写的不知道 对不对
内容:int palinLen(const char *s)
{
if (!s) {
return 0;
}
char *front,*back, *head =s;
//这里的front back分别指向 s前后
//head记录s的开始位置 防止front访问非法元素
int len = 0, i ; //len记录最后的长度 i只是记录一次的长度
s++; //第一个肯定不是 所以s加1
while(*s){ //以s为中心进行 front back分别指向两边 查找
front = s - 1;
back = s + 1;
i = 0; //从这里开始计数
while((&*head != &*front) && *back ){
//这里有问题front可能访问非法区域
//可以使用head指向的位置的地址来判断
//是否front越界
if(*front == *back){
i++;
}else{
break;
}
back++;
front--;
}
if (len < i) {
len = i;
}
s++;
}
return len;
}
这个算法 行吗 ?? 这是我自己写的不知道 对不对
felix021 回复于 2015-4-10 20:11
多造几个case试试看喽
newwayy
2015-3-31 20:48
标题:Manacher's ALGORITHM: O(n)时间求字符串的最长回文子串
内容:while (s[i + p[i]] == s[i - p[i]]) p[i]++;这句话是会下溢或者上溢, 除非限定了s中字符的取值范围(如alnum)。 否则, 不管构造多精美的卫兵字符, 都可能溢出,如:^#1#2# ==> ^###^# 将1替换成#, 将2替换成^ 下溢;#1#2# ==> ##### 将1、2都替换成#^1#2# ==> ^##^#
内容:while (s[i + p[i]] == s[i - p[i]]) p[i]++;这句话是会下溢或者上溢, 除非限定了s中字符的取值范围(如alnum)。 否则, 不管构造多精美的卫兵字符, 都可能溢出,如:^#1#2# ==> ^###^# 将1替换成#, 将2替换成^ 下溢;#1#2# ==> ##### 将1、2都替换成#^1#2# ==> ^##^#
felix021 回复于 2015-4-1 09:17
嗯,是的,严谨地说应该加上一个边界判断的条件,不过这个并不影响对算法的理解吧:)
标题:把PE安装在U盘的第二个分区#2
内容:后来发现,还是两种方式最简单:方法1)一个工具搞定:ultraISO 9.6.2勾选“隐藏启动分区”的状态下写入PE的ISO方法2)TonPE的exe直接安装到U盘,安装方式选择第二种“写入到隐藏分区的Fbinst方式”。简单,直接,有效的两种方法,可惜TonPE3.3和4.0都不支持安装64位系统,要安装win7x64还要进入pe后修改好多东西才行,不方便,等聪哥的新作“微pe”了,据说今年春节就要出来的,先在跳票了
内容:后来发现,还是两种方式最简单:方法1)一个工具搞定:ultraISO 9.6.2勾选“隐藏启动分区”的状态下写入PE的ISO方法2)TonPE的exe直接安装到U盘,安装方式选择第二种“写入到隐藏分区的Fbinst方式”。简单,直接,有效的两种方法,可惜TonPE3.3和4.0都不支持安装64位系统,要安装win7x64还要进入pe后修改好多东西才行,不方便,等聪哥的新作“微pe”了,据说今年春节就要出来的,先在跳票了
felix021 回复于 2015-2-26 18:22
用PE里自带的那个wim安装器就行了,我一直都是那么安装了。
标题:把PE安装在U盘的第二个分区#2
内容:都是按您的步骤操作的,就是做不出来,各种问题:比如开机F12界面找不到NTLDR文件,后来另外一个PE的iso中可以找到NTLDR,但启动时还是提示错误,不知是不是“复制到当前分区”太直接(当然后来用bootice改了MGR),写入ISO可能会好点,但如果用ultraISO直接写入PE的iso的话,又会将两个U盘分区自动合为一个……
内容:都是按您的步骤操作的,就是做不出来,各种问题:比如开机F12界面找不到NTLDR文件,后来另外一个PE的iso中可以找到NTLDR,但启动时还是提示错误,不知是不是“复制到当前分区”太直接(当然后来用bootice改了MGR),写入ISO可能会好点,但如果用ultraISO直接写入PE的iso的话,又会将两个U盘分区自动合为一个……
标题:把PE安装在U盘的第二个分区#2
内容:收到,但新问题又有了:把TonPE_V3.3.iso里的内容导入第2分区(引导分区)中,是先解压iso文件,再把解压后的文件“复制文件到当前分区”没错吧?然后启动进F12页面时,显示“NTLDR is missing” = =
内容:收到,但新问题又有了:把TonPE_V3.3.iso里的内容导入第2分区(引导分区)中,是先解压iso文件,再把解压后的文件“复制文件到当前分区”没错吧?然后启动进F12页面时,显示“NTLDR is missing” = =
felix021 回复于 2015-2-26 14:01
是不是忘了把这个分区设置为活动分区?另外第三步也别忘了。
标题:把PE安装在U盘的第二个分区#2
内容:【2. 用Disk Genius把TonPE_V3.3.iso里的内容导入到该分区(在分区参数右边有个“浏览文件”的TAB)】这一步不行啊,“浏览文件”只是为了浏览选中分区中的已有文件,而没有“导入”的动作,其他地方也看不到可以向分区中写入文件的选项,请问具体是怎样导入iso的呢?
内容:【2. 用Disk Genius把TonPE_V3.3.iso里的内容导入到该分区(在分区参数右边有个“浏览文件”的TAB)】这一步不行啊,“浏览文件”只是为了浏览选中分区中的已有文件,而没有“导入”的动作,其他地方也看不到可以向分区中写入文件的选项,请问具体是怎样导入iso的呢?
felix021 回复于 2015-2-25 09:52
新版好像改成了“复制文件到当前分区”
标题:Manacher's ALGORITHM: O(n)时间求字符串的最长回文子串
内容:while (s[i + p[i]] == s[i - p[i]]) p[i]++;后面应该有个p[i]--吧?
内容:while (s[i + p[i]] == s[i - p[i]]) p[i]++;后面应该有个p[i]--吧?
felix021 回复于 2015-2-9 15:57
好像不用哟。
大头
2014-11-13 04:19
标题:Manacher's ALGORITHM: O(n)时间求字符串的最长回文子串
内容:你的测试过了? while (s[i + p[i]] == s[i - p[i]]) p[i]++;s[i+p[i]]可能会越界吧
内容:你的测试过了? while (s[i + p[i]] == s[i - p[i]]) p[i]++;s[i+p[i]]可能会越界吧
felix021 回复于 2014-11-14 16:32
不会越界的
wen
2014-10-16 10:51
标题:virtualbox虚拟机中nat和host only的网络“冲突”问题
内容:我发现你的网站也要挂代理才能看到了……
内容:我发现你的网站也要挂代理才能看到了……
felix021 回复于 2014-10-14 14:39
不至于吧。。我的网站现在在DO新加坡机房啊,你从HK还需要翻墙??
summersky92
2014-10-10 12:19
标题:"挪窝"的N次方
内容:lol 无耻的用了edu邮箱的promo
内容:lol 无耻的用了edu邮箱的promo
标题:ShellShock:小心bash里的大坑
内容:还是arch好,昨天还是前天更新的。
内容:还是arch好,昨天还是前天更新的。
迷失的杰克
2014-6-10 18:35
标题:Manacher's ALGORITHM: O(n)时间求字符串的最长回文子串
内容:如果P[i]包括S[i],那么为啥 P[1] = 2 (i 从0开始) 呢?应该等于3吧,因为 S[0] = \'#\'S[1] = \'1\'S[2] = \'#\'从S[1]向左向右扩张,还包括S[1]的话,那么P[1] = 3?如果我说的正确,那么例子中的后面有好几个错误
内容:如果P[i]包括S[i],那么为啥 P[1] = 2 (i 从0开始) 呢?应该等于3吧,因为 S[0] = \'#\'S[1] = \'1\'S[2] = \'#\'从S[1]向左向右扩张,还包括S[1]的话,那么P[1] = 3?如果我说的正确,那么例子中的后面有好几个错误
felix021 回复于 2014-6-15 23:15
“P[i] 来记录以字符S[i]为中心的最长回文子串向左/右扩张的长度(包括S[i])”P[1]对应的回文串是 "#1#",从S[1]起向左/右扩张1个字符,加上S[1],就是2个,所以P[1] = 2.
ctqmumu
2014-5-20 18:01
标题:为SSH添加两步验证
内容:说起来,我曾经远程登录一台机器,然后把它的网卡禁用了。。
内容:说起来,我曾经远程登录一台机器,然后把它的网卡禁用了。。
ctqmumu
2014-5-20 14:09
标题:[求解]台式机升级出问题了
内容:我的台式机也有小毛病。。。开机后半小时内,进场会听见机箱内(估计是硬盘)嗒的一声,然后OS失去相应1-3秒。。奇怪的是运行一段时间后就不会出现了,感觉是系统分区有坏道,没管它了。。
内容:我的台式机也有小毛病。。。开机后半小时内,进场会听见机箱内(估计是硬盘)嗒的一声,然后OS失去相应1-3秒。。奇怪的是运行一段时间后就不会出现了,感觉是系统分区有坏道,没管它了。。
ctqmumu
2014-5-20 14:06
标题:为SSH添加两步验证
内容:某鹅厂也是用的RSA的硬件token方案。。。这个不错,也是多人登录,使用自己的token就可以了吧
内容:某鹅厂也是用的RSA的硬件token方案。。。这个不错,也是多人登录,使用自己的token就可以了吧
pjiamu
2014-3-14 19:36
标题:闲说HeartBeat心跳包和TCP协议的KeepAlive机制
内容:1.KeepAlive机制很多情况无法检测出来,如网络连接被软件禁用等,不够可靠,网络状态复杂的情况下这种情况尤其严重。2.自己实现心跳可以加入更灵活与实用的机制,比如少了一个心跳,可以马上再次检查,检查间隔递减,这样可以更快的感知网络状态,而不是等待固定的时间。
内容:1.KeepAlive机制很多情况无法检测出来,如网络连接被软件禁用等,不够可靠,网络状态复杂的情况下这种情况尤其严重。2.自己实现心跳可以加入更灵活与实用的机制,比如少了一个心跳,可以马上再次检查,检查间隔递减,这样可以更快的感知网络状态,而不是等待固定的时间。
felix021 回复于 2014-3-17 10:33
多谢指教
gdchky
2014-3-14 12:29
标题:libevent入门教程:Echo Server based on libevent
内容:do_accept是否存在问题?socklen_t slen;没有赋值为sizeof(sin),导致accept失败if (fd > FD_SETSIZE),将套接字值同集合大小相比较,是否有意义?我用的是vs2008,libevent版本2.0.21
内容:do_accept是否存在问题?socklen_t slen;没有赋值为sizeof(sin),导致accept失败if (fd > FD_SETSIZE),将套接字值同集合大小相比较,是否有意义?我用的是vs2008,libevent版本2.0.21
felix021 回复于 2014-3-17 10:47
sorry,slen这个地方是有疏漏,应该初始化的,不过在linux下没出现问题,所以被忽视了(已修正);当初写这个代码时是参考了官方的ROT13 SERVER,(p.s. 在Linux下,sockfd就是个int),跟FD_SETSIZE比较,应该是考虑到如果libevent底层用的是select,超过FD_SETSIZE就无法正常处理。这里应该是该例子从select-based例子里抄过来忘了改,我也忘了改。。。
标题:[求解]台式机升级出问题了
内容:主板?
内容:主板?
snoopy
2014-1-5 17:32
标题:[求解]台式机升级出问题了
内容:我记得我以前那个台式机在某段时间也有类似问题来着, 怀疑是显卡的问题, 或是机箱里某个风扇线没接好导致间歇性卡死, 缓过来就好了
内容:我记得我以前那个台式机在某段时间也有类似问题来着, 怀疑是显卡的问题, 或是机箱里某个风扇线没接好导致间歇性卡死, 缓过来就好了
felix021 回复于 2014-1-5 18:40
我用的是cpu的集显。。。升级了最新的驱动。机箱里头三个风扇(机箱自带、CPU FAN、电源风扇都正常转着。。)
ctqmumu
2013-11-20 13:25
标题:使用ctypes来扩展Python
内容:我在想额外的两个问题:1. 能不能传入python定义结构体(map、list)。 2. 库函数的内存使用情况(内存位置,大小情况,能否使用共享内存等等...)
不过看来应该是可以的,以后有空调研下
内容:我在想额外的两个问题:1. 能不能传入python定义结构体(map、list)。 2. 库函数的内存使用情况(内存位置,大小情况,能否使用共享内存等等...)

lanisle
2013-7-30 01:31
标题:坑爹的crontab #2
内容:sh -l ...
内容:sh -l ...
felix021 回复于 2013-7-30 20:10
很多时候crontab跑的不是shell脚本,sh -c 写起来看着会比较蛋疼,还是前面加个source ~/.bashrc && 比较合适一些。
wzxjohn
2013-7-23 17:04
标题:ucloud体验报告
内容:xx云指的是阿里的么。。。他家的IO好像真的烂得可以啊= =|||
内容:xx云指的是阿里的么。。。他家的IO好像真的烂得可以啊= =|||
标题:ucloud体验报告
内容:磁盘阵列可以达到这个速度吧?感觉好像很不错的样子~给天朝赞一个~
内容:磁盘阵列可以达到这个速度吧?感觉好像很不错的样子~给天朝赞一个~
内容:框架自带的功能一般都有点边边角角的问题... 比较好的解决方案可能是自己另写一个cache了..