摘要: 最近经常做小项目,如果想代码写的靠谱点就必须用到日志,但是常用的日志框架,比如企业库或者log4net都要配置个半天,如果想自定义某个功能也比较麻烦。没办法自己实现了个傻瓜日志类,代码很土鳖,不过简单易改,无配置。 public static class SBLogger { static SBLogger() { _LogDir = Path.Combine(AppDomain.CurrentDomain.BaseDirectory,"Log"); if (!Directory.Exists(_LogD... 阅读全文
posted @ 2012-03-06 15:22 李土鳖 阅读(467) 评论(0) 推荐(1) 编辑
摘要: 在.Net里用正则的时候,有一些选项会给我们很大帮助,选项一般以一个字母表示,在使用的时候我们可以在构建Regex类的时候在构造方法里面用枚举或的方式传入, 如下面: Regex r = new Regex(@"\w+", RegexOptions.Compiled | RegexOptions.IgnoreCase); 也可以直接放在正则表达式字符串的前面, 格式为 (?{选项列表}){正则表达式} 例如'(?i)abc'中的i表示忽略大小写,对应枚举RegexOptions.IgnoreCase。下面介绍几个常用的选项:1. 单行模式:n,RegexOp 阅读全文
posted @ 2012-03-06 12:26 李土鳖 阅读(1138) 评论(1) 推荐(1) 编辑
摘要: 最近做一些东西经常用到正则表达式,而且经常改动。如果把正则写成常量,需要转义,看起来很坑爹。如果配置到xml,一个麻烦,另外xml特殊字符也需要转义,仍然坑爹。为了能让正则表达式可配置,看起来又好维护,我将正则表达式放到一个txt里面,每行一个,格式为{name}##{regex},同时支持#开头的注释。下面是加载解析代码: /// <summary> /// 正则表达式加载类 /// </summary> internal static class RegExps { static RegExps() { ... 阅读全文
posted @ 2012-03-06 10:31 李土鳖 阅读(483) 评论(0) 推荐(0) 编辑
摘要: 在处理很多IO逻辑时或者想在做后台计算时,我们都会用到并发。并发简单的分两种类型,一种是计算密集型,一种是IO密集型, 下面先介绍一下。1. 计算密集型: 如果我们把线程里面处理的事情看做一个任务,计算密集型就是这个任务主要做的事情是处理计算和逻辑,换句话说就是主要吃CPU。计算密集型的一个典型场景是在客户端程序后台做一些耗时的计算来避免界面假死。计算密集型任务并发处理,除了能避免某些线程阻塞外(比如界面假死),还能充分利用CPU资源,现在的PC机和笔记本一般都是双核或者4核,服务器更可能有好几个CPU,这样并发执行可以让计算机同时执行多个任务。2. IO密集型:IO密集型任务里面一般... 阅读全文
posted @ 2012-03-05 10:31 李土鳖 阅读(1916) 评论(1) 推荐(1) 编辑
摘要: thrift 是一个跨语言的通讯框架,支持c++, java, .net, python,php等。你可以用一种语言写一个服务器,然后另外一种语言写一个客户端,快速搭建一个rpc调用服务。而且它很轻量级,只要引入特定库便可以运行服务和客户端,不需要再安装配置其它复杂的环境和容器。 下面介绍如何在ubuntu11.10上安装thrift0.8.0。 1. 下载thrift,页面http://thrift.apache.org/download/里有相应链接。 我下的是0.8.0: wget http://labs.renren.com/apache-mirror//thrift/0.8.0... 阅读全文
posted @ 2012-02-25 16:40 李土鳖 阅读(1422) 评论(0) 推荐(0) 编辑
摘要: 这两天和一哥们折腾php,遇到了一些问题,汇总一下:1.问题:装好apache和php,配置好后新建index.php,里面写入 <? phpinfo(); ?>,结果输出为纯文本,源代码保持不变。 分析和解决:这个原因是php.ini配置里把short tag功能关了,php标签无法解析。如果将php文件内容改成<?php phpinfo(); ?>,就可以显示出php版本信息。要解决很简单,在php.ini里面搜索short_open_tag,设置成On:short_open_tag = On 。2.问题:xdeug下载并复制到ext目录,配置好apache无法启动 阅读全文
posted @ 2012-02-25 03:12 李土鳖 阅读(970) 评论(0) 推荐(0) 编辑
摘要: 很多时候需要用在网页上实时显示数据,这个时候一般要用到长链接技术。最简单的实现就是ajax轮询,也就是拉的方式。 下面是一个简单的例子:在网页上实时显示服务器时间。后端WebService代码:/// <summary> /// ServerTime 的摘要说明 /// </summary> [WebService(Namespace = "http://tempuri.org/")] [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)] [System.ComponentMode 阅读全文
posted @ 2012-02-13 15:19 李土鳖 阅读(405) 评论(2) 推荐(1) 编辑
摘要: 刚开始研究WCF,这里尝试以最简单的方式构建搭建WCF的运行环境。一般用WCF有两种方式,一种是提供大的后台Service,这个可能发布到公网,一般使用http协议,宿主到IIS里面,然后另外一个Asp.Net网站或WPF之类的程序作为客户端来调用服务。另外一种是用来内部通讯,一般宿主到控制台程序来开发测试,宿主到windows service来发布。下面以一个简单的服务例子说明服务搭建过程。1. http协议,服务端和客户端都是web。 1) 在vs里选择‘WCF->WCF应用程序’模板新建一个项目。 2) 项目里面新建两个文件夹,一个是Def用来放接口定义类,一个是Impl用来放服务 阅读全文
posted @ 2012-02-09 18:31 李土鳖 阅读(1588) 评论(0) 推荐(0) 编辑
摘要: 现在ajax很流行,最简单的开发模式时后台程序只处理ajax请求,然后返回json数据,前段全部是静态的html,里面用js构建界面。以前都是用一般处理程序来处理ajax请求,然后将结果用json类库序列化成json返回给页面。这样做后端处理还是比较麻烦的,而且每个请求要么单独一个处理程序,要么得加额外参数来区别不同的ajax请求,很烦,最近发现了一个更简单的方法,直接用js调用.net WebService,这样后台代码比较整齐,开发也快,调试也容易,直接浏览器敲一下WebService地址,点击某个方法调用就行了。下面是简单例子的构建过程:1. 在VS里面增加一个Web空项目。2. 在项目 阅读全文
posted @ 2012-01-19 11:06 李土鳖 阅读(558) 评论(0) 推荐(0) 编辑
摘要: 文件磁盘: 统计某个目录下所有的shtml文件个数: ls -R | grep -c -P '[\w]+\.shtml' 查看磁盘使用情况:df 查看某个目录总大小:du -sh {路径} 文件过滤+全文搜索(在某个目录下的所有某种类型的文本文件中查找某个关键字)find {目录} -name "*.h" -exec cat {} \; | grep "{关键字}" 例如在当前目录下的所有头文件中(递归)查找包含CONFDIR的行find . -name "*.h" -exec cat {} \; | grep &qu 阅读全文
posted @ 2011-12-19 14:20 李土鳖 阅读(225) 评论(0) 推荐(0) 编辑