自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(54)
  • 资源 (1)
  • 收藏
  • 关注

原创 使用OSGi-JAXRS-Connector实现Restful

Step1: 添加Connector支持         finish->oK完成  Step2:新建Plugin-in Project源码结构   Blog.Javapackage api;  public class Blog {private String title;private String cont

2014-11-25 11:27:01 1768

原创 Equinox Servlet

本例采用扩展点的方式,注册Servlet和web资源。  Step1: 建立Eclipse plugin-in工程Step2: 新建一个Servlet类package servlet;  import java.io.IOException;  import javax.servlet.ServletException;import javax.servlet

2014-11-24 09:11:43 1032

原创 业务规则应该集中配置

查看某网站页面的源代码,发现散落了各种业务规则相关的js代码。从代码上看,猜想不是根据规则由生成的。这无疑增加了维护成本和业务逻辑不一致的危险。  之后的项目中,需要注意业务规则的集中化配置!

2014-10-26 09:55:03 939

原创 Oracle —— before row trigger OR after row trigger

before trigger可以修改new valuebefore trigger可以提前中止,而不需要回滚statement[]: AFTER row triggers are slightly more efficient than BEFORE row triggers. With BEFORE row triggers, affected data blocks must be r

2014-10-21 19:46:23 913

原创 尽量不要使用触发器

触发器的问题 重复执行当数据从一个备份拷贝中加载,或者备份数据库的时候【触发器已经执行过了!!】; 备库应该关闭触发器;有些数据库支持not for replication;触发器链一个触发器的执行,可能导致另一个触发器…很多触发器的应用都可以通过存储过程来替换side effects触发器是在主流程之外的动作,很容易被遗忘,造成维护问题 还有一

2014-10-20 14:58:32 3079

原创 Nodejs Addons

Nodejs的Addons就是动态链接库(C/C++),主要涉及的有V8 Javascript, a C++ library主要用于实现Javascript的接口:creating objects, calling functions…libuv,C实现的event loop library当需要执行阻塞/异步操作时,需要使用libuv,例如:等待文件就绪、等待定时器超时、等待si

2014-10-12 20:31:33 1416

原创 Nodejs扩展,实现消息弹窗

Nodejs扩展,实现消息弹窗

2014-10-12 19:56:56 3872 1

原创 C++成员函数指针

参考《Effective C++》P173;  class A{public:void f(){cout << "f()" << endl;}  void f(int i){cout << "f(int)" << endl;}};  int main() {void (A::*pf)() = &A::f; A a;(a.*

2014-10-12 09:24:18 659

原创 JavaScript Object的key

参考http://blog.csdn.net/zswang/article/details/6494342   可以理解为key实际上是字符串

2014-10-10 21:40:00 785

原创 有关数据库缓存

有关数据库缓存的一些点 缓存块大小 一般大小是一页(4K),太大会造成碎片   替换策略LRU(Least Recently Used),最常用LFU(Least Frequently Used)  缓存的性能指标 命中率(不要盲目追从)命中率和更新率的比命中的查询的执行时间(如果很小,可能性能提升不明显/甚至降低)    数

2014-09-24 21:09:19 703

原创 数据仓储

参考资料http://db.csail.mit.edu/madden/high_perf.pdf      三种常用的并发模型 共享内存(share-memory)共享硬盘(share-disks)无共享(share-nothing)  共享内存(例如SMP)的系统中,多个CPU共享一个内存系统和一组硬盘。优点是编程简单,不需要实现复杂的分布式锁/提

2014-09-24 20:25:04 853

原创 稀疏文件Sparse File

引入稀疏文件(sparse file)的目的是有效的利用文件系统空间(磁盘空间)。当文件没有实际数据时,首先将元数据/metadata(代表了空blocks)写入磁盘,而不是用空数据(0)填充磁盘。而当写入数据的时候,整个block被占用。  读取稀疏文件时,文件系统透明地将metadata转化为实际的空blocks,其中填充0.  总之,sparse file是当真正需要的时候才

2014-09-24 10:14:22 2965

原创 有关多线程程序开发

多线程程序设计的困难 难以重现失败,bug难以追踪并发错误难以追踪和消除独立任务的拆分并不总是那么明朗线程同步、通信引入的复杂多线程引发的竞争、死锁、可见性问题(难以调试、追踪)测试困难,简单的测试并不能覆盖生产环境的问题设计不当,并不能充分提升性能(不控制线程数量,造成无谓上下文切换和Cache失效)  see Amdahl's law,阿姆达尔定律,

2014-09-23 16:08:11 801

原创 Oracle NLS_DATE_FORMAT

nls_date_format用于修改日期格式  session级别的修改:alter session set nls_date_format='yyyy-mm-dd hh24:mi:ss'windows平台下修改注册表: HKEY_LOCAL_MACHINE.SOFTWARE.ORACLE.HOME0 新建字符串值NLS_DATE_FORMAT ,并设置其值为:YYYY-MM-DD:

2014-09-23 15:49:38 1506

原创 性能优化需要注意的点

优化需要注意的点除非必要,一开始不要优化(尤其是开发阶段)有些优化准则已经过时,需要考虑当下的软硬件环境(不要墨守成规)不要过分强调某些系统级指标,如cache 命中率,而应该聚焦性能瓶颈点不盲从,测试、找到系统的性能瓶颈,再确定优化手段注意权衡优化的成本和收益(有些优化可能需要现有架构做出调整、增加开发/运维成本)优化的目标是用户体验、降低硬件成本(降低集群规模、不依赖单

2014-09-23 13:07:25 1146

原创 服务端推送技术

实现服务端推送的主要技术有:Comet,WebSocket、SSE(Server Send Events)、Bayeux protocol。   Comet技术细分隐藏的iframe streaming,依赖浏览器行为,(可能导致浏览器一直显示加载中,用户体验差)XHR streaming,依赖浏览器行为XHR long polling(同源限制,不能访问其他站点)s

2014-09-23 12:44:54 2183

原创 Faye,Simple pub/sub messaging for the web

参考资料http://faye.jcoglan.com/      Faye is a publish-subscribe messaging system based on the Bayeux protocol/CometD. It provides message servers for Node.js and Ruby, and clients for use on

2014-09-23 10:25:49 1439

原创 服务器端连接数限制

参考资料http://yaocoder.blog.51cto.com/2668309/1312821 C10K问题http://www.kegel.com/c10k.html(必须要读呀)I/O frameworksI/O strategieslimits on open filehandleslimits on threadstipszero-copysen

2014-09-23 09:11:16 4253

原创 Luarocks

参考资料http://www.luarocks.org/ http://dhq.me/luarocks-a-deployment-and-management-system-for-lua-modules      Luarocks是一个安装lua 模块的工具,在unbuntu下apt-get install luarocks即可安装。  如果想查询某个模块,

2014-09-21 17:05:24 1335

原创 Lua 协程 coroutine

协程是协同程序的简称,顾名思义,就是协同工作的程序。协程拥有自己独立的桟、局部变量和PC计数器,同时又与其他协同程序共享全局变量和其他大部分东西;  协程与线程的主要区别在于,一个多线程程序可以同时运行几个线程(并发执行、抢占),而协同程序却需要彼此协作地运行,即一个多协程程序在任意时刻只能运行一个协程,并且正在执行的协程只会在其显式地要求挂起(suspend)时,它的执行才会暂停(无抢占

2014-09-21 16:18:19 1547

原创 Lua 异常处理 pcall xpcall debug

如果需要在Lua中处理错误,必须使用函数pcall(protected call)来包装需要执行的代码。  pcall接收一个函数和要传递个后者的参数,并执行,执行结果:有错误、无错误;返回值true或者或false, errorinfo  if pcall(function_name, ….) then-- no errorelse -- some er

2014-09-21 14:46:37 7000

原创 Lua 动态链接

C语言应用程序中经常使用动态链接机制集成各个模块;不过,动态链接机制并不是ANSI C标准的一部分,也就是说实现方法是不可以移植的。  Lua通常不会包含任何无法通过ANSI C来实现的机制,如果动态链接是一个例外。Lua打破了对可移植性的准则,为几种平台实现了一套动态链接机制。  package.loadlib是动态链接功能的核心函数,接收两个参数:动态库的完整路径名、函数名称。

2014-09-21 14:24:56 930

原创 Lua 编译

尽管Lua被称为是一种解释型的语言,但Lua确实允许在运行源代码之前,将源代码预编译成一种中间形式(类比Python的.pyc)。区别解释型语言的主要特征在于编译器是否是语言运行时库的一部分,即是否有能力执行动态生成的代码(Lua可以通过dofile执行Lua代码)。  其实,dofile的核心功能是由loadfile完成的,可以这样来定义dofile:   loadfile

2014-09-21 14:11:20 740

原创 京东在线客服实时消息

使用Ajax长轮询的方式,超时时间大概30s:

2014-09-21 12:49:54 1576

原创 Lua iterator 迭代器

Lua有迭代器的概念,通过不同的迭代器,几乎可以遍历所有的东西。标准库提供的几种迭代器:io.lines(迭代文件中的每行), pairs(迭代table元素),ipairs(迭代数组元素), string.gmatch(迭代字符串中单词)等。  另外,可以自定义迭代器  使用pairs迭代器变量table> t = {2,3,4,5}> for i,v in pairs(

2014-09-21 11:05:23 2280

原创 Lua function函数,可变参数, 局部函数,尾递归优化

在Lua中,函数是作为"第一类值"(First-Class Value),这表示函数可以存储在变量中,可以通过参数传递给其他函数,或者作为函数的返回值(类比C/C++中的函数指针),这种特性使Lua具有极大的灵活性。  Lua对函数式编程提供了良好的支持,可以支持嵌套函数。  另外,Lua既可以调用Lua编写的函数,还可以调用C语言编写的函数(Lua所有的标准库都是C语言写的)。

2014-09-21 10:55:22 8567

原创 Lua table

Lua的table提供了Map的功能,实现了"关联数组",并且整数、字符串甚至nil都可以作为索引/key;table没有固定的大小。  基于table,可以表示普通数组、符号表、集合、记录、队列和其他数据结构。  而Lua也是通过table来解决模块(module)、包(package)和对象(Object)的。例如io.read表示使用"read"来索引table io。

2014-09-20 21:38:13 922

原创 Lua string字符串

Lua中字符串可以使用""或'',类似Javascript中的用法> ="sdfdsf"sdfdsf> ='sfdd'sfdd> ='abc"'abc"> ="abc'"abc'    同Java、Python一样,Lua的字符串是不可修改的值,可以通过string.gsub函数来替换字符串中的子串:> s = string.gsub('abc de

2014-09-20 21:11:17 1600

原创 lua

Lua是一种简单、可扩展、高效的脚本语言,被广泛应用于各种领域,如嵌入式系统、移动设备、Web服务器、有效。  Lua一开始就被设计成能与C语言或其他语言编写的软件相互集成。而Lua并不像C那么全面,但提供了C不太擅长的特性,例如对硬件的高级抽象、动态结构、无冗余、简易的测试和调试。另外,Lua还实现了一个安全的运行环境、一套自动内存管理机制、优秀的字符串处理能力和动态大小数组的处理能力。

2014-09-20 20:28:50 893

原创 python module, package

任何Python程序都可以作为模块导入;在导入自己的模块时,需要添加路径:  import syssys.path.append('absolute-path');      (__pycache__是执行main.py时创建的)  hello.py内容:def sayHello():print('hello,world')  main.py

2014-09-20 16:56:53 1190

原创 python __setattr__, __getattr__, __delattr__,__getattribute__

参考资料       __setattr__、__getattr__和__delattr__以及__getattribute__可以拦截对对象属性的访问;     >>> s = Something()>>> s.age = 3set 'age' = 3>>> s.age 3 注意到,s.age并没有调用__getattr__,是因为

2014-09-20 08:59:14 2035

原创 python 静态方法,类成员方法

参考资料       静态方法和类成员方法分别在创建时被装入StaticMethod类型和Classmethod类型的对象中;静态方法的定义没有self参数,且能够被类本身直接调用;类方法在定义时需要名为cls的类似于self的参数,类成员方法可以被类的实例调用,而cls参数是自动被绑定到类的。  简单示例: >>> Something.smethod()

2014-09-19 19:51:43 957

原创 Python property,属性

参考资料http://www.ibm.com/developerworks/library/os-pythondescriptors/      顾名思义,property用于生成一个属性,通过操作这个属性,可以映射为对某些函数的操作,类似于C#。  形式为pvar = propery(get_func, set_func, del_fun, doc_func)

2014-09-19 19:31:44 3853

原创 Python类,特殊方法, __getitem__,__len__, __delitem__

参考资料       特殊函数一般以__methodname__的形式命名,如:__init__(构造方法), __getitem__、 __setitem__(subscriptable所需method), __delitem__(del obj[key]所需method), __len__(len(…)所需method)等;  以下以什么都不做的Something

2014-09-19 18:29:25 3877

原创 Python,异常 exception

同Java一样,Pyton异常对象来表示异常情况。遇到错误后,引发异常,如果异常对象并未对处理或捕捉,程序就会用所谓的回溯(Traceback)来终止执行;>>> 1/0Traceback (most recent call last): File "", line 1, in ZeroDivisionError: division by zero  程序可以通过rais

2014-09-19 17:25:44 3855

原创 Python 类继承,__bases__, __mro__, super

Python是面向对象的编程语言,也支持类继承。>>> class Base:... pass... >>> class Derived(Base):... pass  这样就定义了两个类,Derived继承了Base。issubclass(a,b)可以测试继承关系:>>> issubclass(Derived, Base)True  在

2014-09-19 16:42:34 8716 1

原创 Javascript setTimeout(0),闭包

setTimeout经常被用于延迟执行某个函数,用法为setTimeout(function(){…}, timeout);  有时为了进行异步处理,而使用setTimeout(function…,0);比如function f(){… // get readysetTimeout(function(){…. // do something}, 0);

2014-09-18 21:20:57 1056

原创 Python类

Python使用中面向对象的语言,支持继承、多态;  定义一个Person类:>>> class Person:... def sayHello(self):... print('hello')... >>> Person.sayHello(None)hello>>> Person().sayHello()hello  可以修

2014-09-18 20:59:00 1078

原创 C++ 虚函数 参数默认值

参考资料       此题目源自网易笔试。   #include using namespace std;  class Base{public:Base(){}Base(bool arg){foo(); // base42}virtual void foo(int i = 42) {cout << "base" << i

2014-09-18 19:27:03 1228

原创 python 函数嵌套

参考资料       在Python中函数可以作为参数进行传递,而也可以赋值给其他变量(类似Javascript,或者C/C++中的函数指针);  类似Javascript,Python支持函数嵌套,Javascript嵌套函数的应用模式对Python适用;>>> def multiplier(factor):... def multiple(numb

2014-09-18 17:23:19 992

Cisco LAN Switching 思科局域网交换技术

Cisco LAN Switching 思科局域网交换技术

2013-03-26

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除