- 博客(329)
- 资源 (2)
- 收藏
- 关注
原创 使用事件驱动模型实现高效稳定的网络服务器程序
前言事件驱动为广大的程序员所熟悉,其最为人津津乐道的是在图形化界面编程中的应用;事实上,在网络编程中事件驱动也被广泛使用,并大规模部署在高连接数高吞吐量的服务器程序中,如 http 服务器程序、ftp 服务器程序等。相比于传统的网络编程方式,事件驱动能够极大的降低资源占用,增大服务接待能力,并提高网络传输效率。关于本文提及的服务器模型,搜索网络可以查阅到很多的实现代码,所以,本文将不拘泥...
2015-11-17 10:22:36
264
原创 正向代理与反向代理的区别【Nginx读书笔记】
正向代理的概念正向代理,也就是传说中的代理,他的工作原理就像一个跳板,简单的说,我是一个用户,我访问不了某网站,但是我能访问一个代理服务器这个代理服务器呢,他能访问那个我不能访问的网站于是我先连上代理服务器,告诉他我需要那个无法访问网站的内容代理服务器去取回来,然后返回给我从网站的角度,只在代理服务器来取内容的时候有一次记录有时候并不知道是用户的请求,也隐藏了用户的资料,这取决于代理告不...
2015-11-03 11:10:11
241
原创 Node.js中文乱码解决
使用NodeJS,当有中文时,如果不做任何处理就会出现乱码。因为,NodeJS 不支持 GBK。当然,UTF-8是支持的。所以,要确保不出现乱码,应做到以下两点:保证你的 JS文件是以UTF-8格式保存的。在你的JS文件中的 writeHead 方法中加入 "charset=utf-8" 编码,如下例所示: var http = require("http");...
2015-10-26 16:18:27
424
原创 WebService到底是什么?
一、序言 大家或多或少都听过WebService(Web服务),有一段时间很多计算机期刊、书籍和网站都大肆的提及和宣传WebService技术,其中不乏很多吹嘘和做广告的成分。但是不得不承认的是WebService真的是一门新兴和有前途的技术,那么WebService到底是什么?何时应该用? 当前的应用程序开发逐步的呈现了两种迥然不同的倾向:一种是基于浏览器的瘦客户端应用程序,一种...
2015-10-22 14:58:00
164
原创 C# 全局异常处理
咳,今天给大家带来一个关于C#中的异常处理,很多朋友在C#中的异常处理非常糟糕的,一个优秀的程序应该具备友好性,容错性,以及准确的异常信息收集的能力。很多Coder也想达到这样的指标呢?跟着我来,稳固你的程序吧! 1.本文目标我们准备做一个程序,具备全局的异常捕获及处理能力,类似大多数知名程序那样弹个窗口,发送错误报告,友好的提示。类似腾讯QQ异常,Firefox异常等异常窗口来进行...
2015-10-20 13:36:52
607
原创 npm install 本地安装与全局安装的区别
npm的包安装分为本地安装(local)、全局安装(global)两种,从敲的命令行来看,差别只是有没有-g而已,比如npm install grunt # 本地安装npm install -g grunt-cli # 全局安装这两种安装方式有什么区别呢?从npm官方文档的说明来看,主要区别在于(后面通过具体的例子来说明):本地安装1. 将安装包放在 ./node_modul...
2015-10-19 16:16:36
673
原创 windows下安装nodejs及框架express
以下通过两种方式介绍windows下安装node.js及框架express第一种方式:总共分为四步轻松完成Nodejs的Express安装第一步、安装所有要先按装express-generator,否则创建项目时,会提示express命令没找到?123npm install -g express-generator #需...
2015-10-19 16:15:05
271
原创 Ubuntu 搭建PHP环境
安装 Apache2: sudo apt-get install apache2 安装PHP模块: sudo apt-get install php5 安装Mysql sudo apt-get install mysql-server 其他模块安装: sudo apt-get install libapache...
2015-10-13 17:09:27
115
原创 Ubuntu下 php5.3.10版本升级到5.4
Ubuntu下 php5.3.10版本升级到5.4切换到root身份sudo -i加入PHP最新版来源库add-apt-repository ppa:ondrej/php5apt-get update由于有些PHP周边模组并未支援此来源库所提供的PHP5.4,比较重要的是php5-suhosin,php5-imagick以及php-apc等。若你的站点有需...
2015-10-13 12:22:35
157
原创 推薦!國外工程師整理的系統管理員資源大全
受其他工程師彙編 PHP 資源,kahun 在 Github 發起系統管理員相關的開源資源整理。內容分類包括:備份 / 克隆軟體、雲計算 / 雲存儲、協作軟體、配置管理、日誌管理、監控、項目管理…… 當然也有系統管理員相關書籍。備份軟體·Amanda – 客戶端 – 服務器模型備份工具·Bacula – 另一個客戶端 – 服務器模型備份工具·Backupninja – ...
2015-10-10 10:17:37
214
原创 不同场景下 如何进行MySQL迁移
一、为什么要迁移MySQL 迁移是 DBA 日常维护中的一个工作。迁移,究其本义,无非是把实际存在的物体挪走,保证该物体的完整性以及延续性。就像柔软的沙滩上,两个天真无邪的小孩,把一堆沙子挪向其他地方,铸就内心神往的城堡。生产环境中,有以下情况需要做迁移工作,如下:磁盘空间不够。比如一些老项目,选用的机型并不一定适用于数据库。随着时间的推移,硬盘很有可能出现短缺;业...
2015-10-09 09:40:28
121
原创 P2P之UDP穿透NAT的原理与实现(附源代码)
作者:自语的骆驼参考:http://midcom-p2p.sourceforge.net/draft-ford-midcom-p2p-01.txt论坛上经常有对P2P原理的讨论,但是讨论归讨论,很少有实质的东西产生(源代码)。呵呵,在这里我就用自己实现的一个源代码来说明UDP穿越NAT的原理。首先先介绍一些基本概念: NAT(Network Address Translator...
2015-09-29 14:53:32
166
原创 试验UDP打洞穿透NAT
目标路由穿透,实现广域网P2P通讯。4种典型NAT类型按照NAT设备在进行地址映射时行为的不同,NAT可以分为以下四种: Full Cone Restricted Cone Port Restricted Cone Symmentric 如何判断本机NAT类型可以通过PyStun来判断:NAT Type: Full ...
2015-09-25 16:05:12
654
原创 最佳实践:更好的设计你的 REST API
REST API 设计在细节上有很多自己独特的需要注意的技巧,并且对开发人员在构架设计能力上比传统 API 有着更高的要求。本文通过翔实的叙述和一系列的范例,从整体结构,到局部细节,分析和解读了为了提高易用性和高效性,REST API 设计应该注意哪些问题以及如何解决这些问题。2 评论:陈 岩, 顾问软件工程师, IBM 中国软件开发中心秦 君, 高级软件工程师,...
2015-09-18 17:10:11
161
原创 NPM 无法正常安装
npm http GET https://registry.npmjs.org/supervisor npm ERR! Error: failed to fetch from registry: supervisornpm ERR! at /usr/share/npm/lib/utils/npm-registry-client/get.js:139:12npm...
2015-09-18 16:08:32
164
原创 几个智能家居平台研究——xlively,乐联网,majordomo,housemon,webmote,opensourceautomation...
第一个最好研究也最容易懂的自然是乐联网与yeelink,谁他是中文的呢,还是比如符合中国人的习惯的。你配置自己的智能设备主动给乐联网提供采集数据后。用户就可以通过乐联网的管理平台或者APP来监控连接了的智能设备。同时也有详尽的配置与说明文档。同时还有客户端的开源代码image第二个是鼎鼎有名的xlively,估计也是乐联网抄袭的对象,xlively原来叫cusom,跟物联网一样提...
2015-09-18 10:22:05
503
原创 直接拿来用!最火的Android开源项目整理
一、代码库 1、from 代码家整理比较好的源码连接 *****************************************************************************************************************************************************************...
2015-09-16 10:13:04
83
原创 initrd的作用
initrd 是一个 ram disk 的 image. 一般是压缩过的.它存在的主要目的是在内核启动时加载它,安装其中的驱动.总的来说分这几步a.内核启动时加载 initrd img, mount 为 / b.依 /linuxrc 的指令执行, 一般有扫描系统硬件,从 当前文件系统中找到驱动安装之.c.挂载系统中真正的 /细说就是:开机 bios 代电自检, 依 bios 指定的启动盘(如 h...
2015-09-11 16:43:57
1828
原创 Linux 初始 RAM 磁盘(initrd)概述
Linux 初始 RAM 磁盘(initrd)概述学习 initrd 的剖析、创建以及在 Linux 引导过程中的用法Linux® 初始 RAM 磁盘(initrd)是在系统引导过程中挂载的一个临时根文件系统,用来支持两阶段的引导过程。initrd 文件中包含了各种可执行程序和驱动程序,它们可以用来挂载实际的根文件系统,然后再将这个 initrd RAM 磁盘卸载,...
2015-09-11 16:32:39
174
原创 基于 SquashFS 构建 Linux 可读写文件系统
基于 SquashFS 构建 Linux 可读写文件系统在当前的嵌入式操作系统开发中,Linux 操作系统通常被压缩成 Image 后存放在 Flash 设备中。在系统启动过程中,这些 Image 被直接挂载到根文件系统, 然而这时的根文件系统是只读的, 用户不能在这个文件系统中进行任何写的操作。 如果把 Image 解压后直接拷贝到内存中,也可以实现写的功能,但是嵌入式...
2015-09-11 15:27:24
210
原创 openwrt加入自己的 package
1. 代码上来看有几个重要目录package, target, build_root, bin, dl....---build_dir/host目录是建立工具链时的临时目录---build_dir/toolchain-<arch>*是对应硬件的工具链的目录---staging_dir/toolchain-<arch>* 则是工具链的安装位置---targe...
2015-09-11 15:04:34
1960
原创 openwrt: Makefile 框架分析 2
本篇的主要目的是想通过分析Makefile,了解openwrt编译过程。着重关注以下几点:openwrt目录结构主Makefile的解析过程,各子目录的目标生成。kernel编译过程firmware的生成过程软件包的编译过程openwrt目录结构官方源下载速度太度,我从github上clone了openwrt的代码仓库。git clone https://...
2015-09-11 14:26:29
134
原创 Luci实现框架
1.总述 上一篇总结了uhttpd的工作方式,openwrt中利用它作为web服务器,实现客户端web页面配置功能。对于request处理方式,采用的是cgi,而所用的cgi程序就是luci,工作框架如下图所示: Client端和serv端采用cgi方式交互,uhttpd服务器的cgi方式中,fork出一个子进程,子进程利用execl替换为luci进程空间,并通过s...
2015-09-09 11:25:30
191
原创 openwrt ---Luci - 网页用户配置界面开发
luci 参考资料http://luci.subsignal.org/trac/wiki/Documentationhttp://wiki.openwrt.org/doc/techref/preinit_mount?#first.boothttp://www.google.com.hk/search?q=Luci&hl=en&safe=strict&domai...
2015-09-02 17:23:37
1795
原创 object-c 基本语法
类型:NSStringNSIntegerNSLong控制台输出 NSObject:对象比较两个对象是否相等: [cpp] view plaincopyprint? NSObject *object1 = [[NSObject alloc] init]; NSObject *object2 = obejct1; if([o...
2015-08-20 16:56:48
253
原创 CSS基础1
<p><strong>我是粗体字,不是斜体字,因为我不在列表当中,所以这个规则对我不起作用</strong></p><ol><li><strong>我是斜体字。这是因为 strong 元素位于 li 元素内。</strong></li>&
2015-04-17 16:04:16
314
原创 快速搭建Web环境 Angularjs + Express3 + Bootstrap3
快速搭建Web环境 Angularjs + Express3 + Bootstrap3AngularJS体验式编程系列文章,将介绍如何用angularjs构建一个强大的web前端系统。angularjs是由Google团队开发的一款非常优秀web前端框架。在当前如此多的web框架下,angularjs能脱颖而出,从架构设计上就高人一等,双向数据绑定,依赖注入,指令,MVC,模板。Angu...
2015-03-31 11:05:18
131
原创 前端开发工具
web前端开发乃及其它的相关开发,推荐sublime text, webstorm(jetbrains公司系列产品)这两个的原因在于,有个技术叫emmet, http://docs.emmet.io,而这两个对他的支持是:sublime text 是所有编辑器里边支持emmet比较好的的唯一一款。webstorm是所有编辑器里边唯一内置emmet的一款,并且将emmet的精神往前推动的一款...
2015-03-31 10:53:19
118
原创 前端开发利器webStorm 3.0配置使用
合适的工具会事半功倍,当然也得把握分寸,要不就成了会得越多干的越多的“苦力者”。编辑类软件层出不群,各有所长,各有所短。找到一个合适的还真是难。还好有webstorm的出现,最近又是3.0的新版本发布。为什么这么说呢,她与其它的编辑器有什么不同:1. 任何一个编辑器都需要保存(ctrl + s),这是所有win平台上编辑类软件的特点,但是webstorm编辑文件右上角是没...
2015-03-31 10:48:54
126
原创 Wireshark抓包常见问题解析
1. tcp out-of-order(tcp有问题)解答:1)、 应该有很多原因。但是多半是网络拥塞,导致顺序包抵达时间不同,延时太长,或者包丢失,需要重新组合数据单元 因为他们可能是通过不同的路径到达你电脑上面的。2)、 CRM IT 同仁上礼拜来跟我反应一个问题,由他们客服系统藉由邮件主机要寄送给客户的信件,常常会有寄送失败的问题,查看了一下 Log,...
2015-01-19 17:44:59
433
原创 Wireshark抓包工具--TCP数据包seq ack等解读
1、Wireshark的数据包详情窗口,如果是用中括号[]括起来的,表示注释,在数据包中不占字节2、在二进制窗口中,如“DD 3D”,表示两个字节,一个字节8位3、TCP数据包中,seq表示这个包的序号,注意,这个序号不是按1递增的,而是按tcp包内数据字节长度加上,如包内数据是21字节,而当前IP1发到IP2的包的seq是10的话,那下个IP1发到IP2的包的seq就是10+21=314、注意我...
2015-01-14 17:43:23
373
原创 为什么子类不能访问基类的private成员?为什么要这样设计?
看到很多朋友提问“为什么子类不能访问基类的private成员”?随后看到很多朋友回答“这是规范”“这是封装的特性”类似这样的回答。我觉得大家都是对的。但是有时候您需要关注提问的重点在于why?为什么Java要这样设计private?或者是Object Oriented为啥要这样设计这样的机制? 封装性:首先,private成员具有良好的封装性(encapsulation)。这个性质对于...
2014-12-10 10:35:46
309
原创 eclipse的第一个struts2插件:Alveole Studio MVC Web Project An eclipse plugin for Struts
eclipse第一个struts2插件官方地址:http://mvcwebproject.sourceforge.net一:安装 启动eclipse3.3 在help---->software updates----->find and install---->install new features---->New remote site-----&...
2014-12-04 17:53:07
102
原创 java开发--正确使用插件让你的工作都在eclipse下完成(all work in eclipse)
这次升级到eclipse到juno版本,趁机整理了常用的eclipse plugin,目标是为了让开发人员尽可能把工作环境集中在eclipse上,而不用打开各式各样的文档编辑器或一堆其他别的软件。由于开发过程中每个团队使用的软件各不相同,因此本文更多的是一个在eclipse集成思路,不同团队可以根据自己的需要集成与本文不同的插件。 这里先说明本团队的开发集成环境版本控制:egi...
2014-12-04 17:45:59
115
原创 论J2EE程序员的武功修为(转)
经常会跟一些朋友讨论怎么样才能学好Java,学到什么程度才算撑握了Java的问题。其中有一个J2EE程序员层次及武功修为的问题,有点意思。这里就把讨论的内容大致整理一下发出来,大家继续讨论。 纵观国内的软件行业,靠Java吃饭的程序员还真不是少,而且Java程序员是有很大优越感的,毕竟对于很多用b/s搞开发的业内朋友来说,Java技术意味着难度大、门槛高,因此相对来说Java程序员比其它...
2014-11-24 11:14:39
127
原创 tomcat登录的用户名和密码
在tomcat下的conf/tomcat-user.xml中:<tomcat-users><!-- NOTE: By default, no user is included in the "manager-gui" role required to operate the "/manager/html" web application. If you wish t...
2014-11-17 17:20:52
928
原创 Maven 2.0:编译、测试、部署、运行
Maven 2.0:编译、测试、部署、运行摘要:Maven1.0已经历了几年的时间,并且作为Ant的替代品已被广大的开发人员所接收,但它并没有在很大程度使开发人员从Ant的build.xml文件中解脱出来。Maven1.0速度慢并且笨拙,使用起来的困难度并不亚于使用Ant的项目。事实上,它的核心是基于Ant实现的。在经过了几乎彻底的重写后,Maven2.0诞生了。 一...
2014-11-17 15:07:09
103
原创 C#如何判断操作系统位数是32位还是64位
方法一:对于C#来说,调用WMI是一种简单易行的方式。我们可以用Win32_Processor类里面的AddressWidth属性来表示系统的位宽。AddressWidth的值受CPU和操作系统的双重影响。具体的值如下面的表格所示: 32bit OS64bit OS32bit CPUAddressWidth = 32N/A64bit CPUAddre...
2014-11-07 10:50:53
286
原创 UML类图几种关系的总结
在UML类图中,常见的有以下几种关系: 泛化(Generalization), 实现(Realization),关联(Association),聚合(Aggregation),组合(Composition),依赖(Dependency) 1. 泛化(Generalization) 【泛化关系】:是一种继承关系,表示一般与特殊的关系,它指定了子类如何特化父...
2014-11-03 09:34:09
93
原创 Assembly类
System.Reflection.Assembly类是一个比较常用到的类,在反射中就经常用到。 由于这个类实在有太多的字段、属性与方法。实在不想将一个个属性方法从MSDN复制出来然后逐个属性、方法敲一次,我想改变一下学习方法,从实际运用学习。一、加载程序集并执行方法 使用反射加载程序集并执行方法,加载程序集主要使用LoadFrom()方法。 static vo...
2014-10-30 10:25:31
143
iOS越狱内核修改描述(stenfan esser)
2011-09-15
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人