摘要: 1 线程不安全的实现方法首先介绍java中最基本的单例模式实现方式,我们可以在一些初级的java书中看到。这种实现方法不是线程安全的,所以在项目实践中如果涉及到线程安全就不会使用这种方式。但是如果不需要保证线程安全,则这种方式还是不错的,因为所需要的开销比较小。下面是具体的实现代码:public Class Singleton{ private static Singleton instance = null; private Singleton(){} public static Singleton getInstance() { if( instance == null)... 阅读全文
posted @ 2014-03-04 15:36 黄明恩 阅读(8550) 评论(1) 推荐(0) 编辑
摘要: Eclipse是我们常用的java开发编辑器,它支持很多有用但又不太为人所知的快捷键组合。通过这些组合快捷键我们可以更加容易的浏览源代码,使得整体的开发效率和质量得到提升。甚至有一次笔者去参加一个IT公司的面试的时候就有面试官问及Eclipse常用的快捷键有哪些,当时很惭愧说不上10个。现在经过一段... 阅读全文
posted @ 2014-09-17 14:25 黄明恩 阅读(5426) 评论(0) 推荐(1) 编辑
摘要: 读音Python(KK 英语发音:/ˈpaɪθən/)序言其实早前就已经接触了python这个功能强大的脚本语言,但是那时只是基于兴趣而学习,目的性并不是很强,所以学习的并不是很深入。最近由于闲暇下来,想要系统的深入学习python,所以在学习的同时希望能够将自己的一些学习心得总结分享。python是什么?python是一种面向对象、直译式计算机脚本语言。Python语法简洁而清晰,具有丰富和强大的类库,提供了各种调用系统底层服务的接口,能够很轻松的把用其他语言制作的各种模块(尤其是C/C++)轻松地联结在一起。在学习任何一门语言的时候,我们得先弄清楚这门语言是干嘛的,它相对于其他的语言有什么 阅读全文
posted @ 2013-11-04 22:59 黄明恩 阅读(588) 评论(0) 推荐(0) 编辑
摘要: 前述 nodejs在v0.6.x之后增加了一个模块cluster用于实现多进程,利用child_process模块来创建和管理进程,增加程序在多核CPU机器上的性能表现。本文将介绍利用cluster模块创建的多线程如何共享数据的问题。进程间数据共享 首先举个简单的例子,代码如下:var cluster = require('cluster'); var data = 0;//这里定义数据不会被所有进程共享,各个进程有各自的内存区域 if (cluster.isMaster) { //主进程 var numCPUs = require('os').cpus().l 阅读全文
posted @ 2013-05-27 12:06 黄明恩 阅读(9910) 评论(3) 推荐(2) 编辑
摘要: 前述 我们都知道nodejs最大的特点就是单进程、无阻塞运行,并且是异步事件驱动的。Nodejs的这些特性能够很好的解决一些问题,例如在服务器开发中,并发的请求处理是个大问题,阻塞式的函数会导致资源浪费和时间延迟。通过事件注册、异步函数,开发人员可以提高资源的利用率,性能也会改善。既然Node.js采用单进程、单线程模式,那么在如今多核硬件流行的环境中,单核性能出色的Nodejs如何利用多核CPU呢?创始人Ryan Dahl建议,运行多个Nodejs进程,利用某些通信机制来协调各项任务。目前,已经有不少第三方的Node.js多进程支持模块发布,而NodeJS0.6.x 以上的版本提供了一个c. 阅读全文
posted @ 2013-05-24 12:35 黄明恩 阅读(21952) 评论(2) 推荐(1) 编辑
摘要: 1.shift()函数定义该函数从从数组中删除第一项,并返回该删除项。用法示例var fruits = ["Banana", "Orange", "Apple", "Mango"];fruits.shift()console.log(fruits);结果输出:Orange,Apple,Mango注:该方法会改变数组的长度2.pop()函数定义该函数从从数组中删除最后项,并返回该删除项。用法示例var fruits = ["Banana", "Orange", "Ap 阅读全文
posted @ 2013-05-21 14:27 黄明恩 阅读(6288) 评论(0) 推荐(0) 编辑
摘要: 准备工作(1)本机系统说明:本人机器为win7 64位,32位也可以。(2)软件安装: VISUAL C++ 2010 EXPRESS(Visual Studio 2010也可以); windows下安装NodeJS,可以从官网http://www.nodejs.org下载msi版进行快捷安装;(3)源码准备:从官网下载SourceCode版本node-v0.10.5.tar(笔者下载时的最新代码版本为v0.10.5),解压到windows任意目录下,如D:\node-v0.10.5。编写node的C/C++原生扩展[1]打开Windows命令行cmd.exe,进入D:\node-v0.1.. 阅读全文
posted @ 2013-05-17 13:43 黄明恩 阅读(14981) 评论(3) 推荐(1) 编辑
摘要: 原始的方式因为对象的属性可以在对象创建后动态定义,这在 JavaScript 最初引入时都会编写类似下面的代码:var oCar = new Object;oCar.color = "blue";oCar.doors = 4;oCar.mpg = 25;oCar.showColor = function() { alert(this.color);};在上面的代码中,创建对象 car。然后给它设置几个属性:它的颜色是蓝色,有四个门,每加仑油可以跑 25 英里。最后一个属性实际上是指向函数的指针,意味着该属性是个方法。执行这段代码后,就可以使用对象 car。不过这里有一个问题 阅读全文
posted @ 2013-05-16 17:08 黄明恩 阅读(1027) 评论(2) 推荐(0) 编辑
摘要: 如果你比较熟悉Excel,并且用过里面的ROMAN()这个函数,如下:Microsoft Excel 中ROMAN函数的公式语法和用法如下:语法ROMAN(number, [form])ROMAN 函数语法具有下列参数:Number必需。需要转换的阿拉伯数字。Form可选。一数字,指定所需的罗马数字类型。罗马数字的样式范围可以从经典到简化,随着 form 值的增加趋于简单。请参见下面的示例ROMAN(499,0).说明如果数字为负,则返回错误值 #VALUE!。如果数字大于 3999,则返回错误值 #VALUE!。示例显然,微软Excel中的所谓古典罗马数字样式是和维基百科上对罗马数字的书写规 阅读全文
posted @ 2013-05-09 16:34 黄明恩 阅读(3079) 评论(0) 推荐(0) 编辑
摘要: 最近一个项目有这个需求,琐碎就找找这方面的资料来实现一下,顺便就拿来分享之。什么是罗马数字?罗马数字是最早的数字表示方式,比阿拉伯数字早2000多年,起源于罗马。如今我们最常见的罗马数字就是钟表的表盘符号:Ⅰ, Ⅱ , Ⅲ ,Ⅳ ,Ⅴ ,Ⅵ ,Ⅶ ,Ⅷ ,Ⅸ ,Ⅹ ,Ⅺ ,Ⅻ ……对应阿拉伯数字(就是现在国际通用的数字),就是1,2,3,4,5,6,7,8,9,10,11,12。阿拉伯数字其实是古代印度人发明的,后来由阿拉伯人传入欧洲,被欧洲人误称为阿拉伯数字。罗马数字记数方法基本字符:I、V、X、L、C、D、M相应的阿拉伯数字表示为:1、5、10、50、100、500、1000(1)相同的数 阅读全文
posted @ 2013-05-09 15:35 黄明恩 阅读(9455) 评论(1) 推荐(1) 编辑