本人笔记本亲摄,年代极其久远。。。
要想在如此艰苦卓绝的环境下编程,恐怕也只有Vim堪此重任了。。。
作者是 Vim.
发布于 in最后更新于 .
本人笔记本亲摄,年代极其久远。。。
要想在如此艰苦卓绝的环境下编程,恐怕也只有Vim堪此重任了。。。
作者是 Web开发.
发布于 in最后更新于 .
这是之前朋友出的一道题目,感觉不错,就拿来分享一下。
问题如下:
一个单向链表,怎么判断他是否存在环?
图示:
对于最简单的做法就是:
用一个指针走一圈,如果重复遇到其他任何一个指针,则证明有环。
但是这样做的问题就是:
单指针需要留下脚印,会弄脏链表数据,而如果不能脏数据的话,就需要增加一个容器,并且增加查找的开销。
有没有更好的方法呢?有的,定义一对快慢指针分别为ptr_fast,ptr_slow,ptr_slow走一步,ptr_fast走两步,如果ptr_slow和ptr_fast最终能相遇,那么证明有环。
解释如下:
画图:
设步长分别为x和y,链表回环结点数为n,非环回环为m
设经过t次跨步,则只要xt和yt对n同余并且xt和yt都大于m就可以相遇(假设x>y)
xt-yt=pn
yt>m
得到:
t=pn/(x-y) > m/y(只需pn可整除(x-y))
指针移动次数为(x+y)t=(x+y)/(x-y)*pn
而要想pn永远整除(x-y ...
作者是 Web开发.
发布于 in最后更新于 .
今天在测试的时候发现一个很诡异的问题,语言描述不清楚,直接看代码吧。为了测试各种可能性,我写了两种类继承的代码如下:
#!/usr/bin/python
#-*- coding: UTF-8 -*-
import re
import sys
import os
import json
import simplejson
class Foo(object):
_data = 1
def __init__(self,data):
self._data = data
def ShowFoo(self):
print 'Foo',self._data
class Bar(Foo):
def __init__(self,data):
super(Bar,self).__init__(data)
def ShowBar(self):
#会报错 ...
作者是 Web开发.
发布于 in最后更新于 .
今天在翻unix网络编程的时候,无意中看到了使用匿名定义结构体/类定义数组的一段代码。
于是写了测试代码如下:
#include <iostream>
#include <string>
#include <vector>
#include <map>
using namespace std;
struct st
{
int a;
int b;
char *p;
int c;
}sts[]={
{1,1,"hh",1},
{2,2,"ff",2}
};
class CObj
{
public:
int a;
string s;
int b;
}objs[]={
{1,"x",11},
{2,"y",22}
};
int main(int argc, const ...
最后更新于 .
最近不少朋友反馈博客中的代码格式不适于阅读,非等宽字符等等问题,为此今晚特意试用了几款wordpress的代码高亮插件,包括SyHi,coolcode,wp-syntax,无奈发现SyHi根本用不了,coolcode不支持vim语法,只有wp-syntax能够满足要求。
因此以后的文章中出现代码均会以如下格式展示:
function! SetBaiKeBuffer()
let bkbuffloaded=bufloaded("baike")
if !bkbuffloaded
execute "sp baike"
execute "normal \Z"
else
while 1
execute "normal \<c-w>w"
let currBuff=bufname("%")
if currBuff == "baike"
execute "normal \Z"
break
endif
endwhile
endif
endfunction
另外,我也重新修正了几篇访问量比较高的博文,将里面的代码用这种最新方式来高亮,效果会比原来好很多。如果有朋友觉得之前的哪篇文章格式需要修正,也可以直接在这里留言,我将尽快处理。
-------------------------------------------分割线------------------------------------------
列表如下:
作者是 杂项.
发布于 in最后更新于 .
声明:
本文谨代表本博作者个人观点,与腾讯公司官方无任何关系。
今天(2010年9月16日),腾讯社区开放平台正式上线,域名是:opensns.qq.com
从页面上看,主要分了分享组件、喜欢组件、认证空间、应用接入等模块.
其中分享组件、喜欢组件、认证空间主要针对第三方网站合作;应用接入主要针对应用开发商。
我们主要看一下应用的接入流程。
首先点击导航栏的应用接入:
点击创建应用后,进入开发者注册页,区分了公司和个人两种方式:
公司和个人分别要求上传营业执照或身份证照片。
注册成功后,进入页面:
我们来尝试创建一个应用:
成功后,进入如下页面:
我们来点击一下预览(apptest.qq.com是我自己开发的一个简单应用):
可以看出,应用中列出了包括本人/机器人好友的相关信息。
之后,我们来看一下开放平台提供的调试工具,点击调试工具进入调试页面:
OpenAPI列出了开发者能够调用的API列表,包括:
user/info 主人信息
user/multi_info 批量获取好友信息
user/is_setuped 主人是否安装了应用
user/emotion ...
作者是 Web开发.
发布于 in最后更新于 .
上一篇文章说道在用python的suds库的时候,发的中文总是乱码(windows下还总是encode失败,真是杯具),无奈产品经理又死活都要求是中文,今天研究了一天,总算是搞定了。 说一下定位的过程。
1.先拿一段php的soap代码来看:
<?php
$client = new SoapClient("http://ws.sb.com/messageservice.asmx?wsdl",Array('trace'=>True));
// 参数转为数组形式传递
$aryPara = array('sender' => 'dantezhu',
'receiver' => 'dantezhu',
'title' => 'OZ评论消息提醒',
'msgInfo' => 'sss',
'messageType'=>0);
// 调用远程函数
$ret = $client->SendRTX($aryPara);
var_dump($ret);
echo $client->__getLastRequest();
?>
这段代码是能够正确的发送请求的,通过__getLastRequest打出发送包,如下:
< ...
作者是 Web开发.
发布于 in最后更新于 .
一.美化你的bash
每次在进入一个很长的目录的时候,光标都会变得很靠右,很丑陋:
今天同事给了一段配置:
export PS1="\[\e[36;1m\]\u\[\e[0m\]@\[\e[33;1m\]\h\[\e[0m\]:\[\e[31;1m\]\w\[\e[0m\]\n\$ "
写入.profile后,会变成如下的样子,效果不错,哈哈:
二.在python中使用soap -- suds
今天需要通过soap来给RTX的其他用户发消息,于是研究了一下python中的soap包。
先是发现了SOAPpy,包括Dive into Python都推荐了这个包,不过经过我的试用之后,发现打死都显示不了任何数据,于是我搜啊。。终于在某个不起眼的角落看到了这样一段话:
Unfortunately, at the moment, I don't think there is ...
作者是 Web开发.
发布于 in最后更新于 .
因为下周要用php写项目,所以周末在家里重新看php的语法,看到三元描述符,突然想起来python是没有三元描述符的,印象中依稀记得有模拟的实现,于是上网上搜了一下。
(对应C语言的 X ? V1:V2)
找到一篇文章:http://blog.csdn.net/xiaoyin992/archive/2008/12/29/3635015.aspx
其中一种是:
(X and V1) or V2
正常情况下是不会有错误的,但是文章中也提到了,当V1=""时,就会有问题
比如
print (True and '') or 'V'
print (False and '') or 'V'
输出永远都是: V
完美的解决方案是在《python核心编程中提到的》:
V1 if X else V2
原文如下:
如果你来自 ...
作者是 Web开发.
发布于 in最后更新于 .
出于种种原因,最近感觉还是在自己机器上装个linux写程序靠谱些,毕竟总是VPN到公司内网速度也太慢了。
本文最终实现了:
1.在windows下用virtualbox安装了ubuntu7.04命令行版
2.ubuntu能够与主机(即windows)共享网络
3.在windows下可以直接ssh到ubuntu上
遗留问题(详见文末):
1.ubuntu与主机共享文件夹失败
2.rz/sz命令安装失败
先截图如下(putty中的截图):
OK,我们一步步来说:
一.VirtualBox安装
1.到http://www.virtualbox.org/wiki/Downloads下载windows版本
2.一路点击next,出现不兼容提示框,直接继续即可。
二.Ubuntu安装
1.选择安装命令行的版本,安装即可
2.设置root密码。ubuntu的root默认居然是不启用的,需要在启动的时候,按ESC进入recovery模式,会自动以root权限登录 ...