自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(78)
  • 收藏
  • 关注

原创 利用栈来实现二叉树前序遍历

package cn.lcn.test;/** * @title TreeNode.java * @description 二叉树节点 * @date 2014-05-04 22:38 * @author Administrator * @version 1.0 */public class TreeNode {    private int val; 

2014-05-04 23:09:18 844

转载 WorldCount运行讲解

一、MapReduce理论简介

2014-05-03 11:57:24 1266

原创 在Eclipse中运行第一个MapReduce程序

一、在Eclipse下安装hadoop-plugin

2014-05-02 18:27:22 825

原创 利用链表来实现栈和队列

/** * @title Node.java * @description 链表节点 * @date 2014-04-30 14:48 * @author lichunan * @version 1.0 */public class Node {    private int val;    private Node next;    public No

2014-04-30 22:14:09 797

原创 查看linux服务器情况的常用命令

判断Linux服务器CPU情况的依据如下:

2014-04-30 13:50:10 903

转载 50个人围成一圈数到三和三的倍数时出圈,问剩下的人是谁?在原来的位置是多少?

package com.test.kaoshi;     import java.util.Iterator;   import java.util.LinkedList;     public class YouXi {       public static int removeNM(int n, int m) {           LinkedList ll = new LinkedL

2014-04-28 22:10:46 844

转载 java BIO NIO AIO理论篇

java中的IO主要源自于网络和本地

2014-04-27 22:34:49 565

转载 MapReduce工作原理图文详解

1、MapReduce作业运行流程

2014-04-26 23:03:52 510

原创 Ubuntu 12.04搭建hadoop单机版环境

一、在Ubuntu下创建hadoop用户组

2014-04-26 18:58:41 525

原创 HDFS的系统组成介绍

一、HDFS框架简述

2014-04-24 23:17:20 3070

原创 分布式文件系统简介

早期

2014-04-23 00:32:51 709

转载 图文解说:Nginx + tomcat配置集群负载均衡

开发的应用采用F5负载均衡交换机,F5将请求转发给5台hp unix服务器,每台服务器有多个webserver实例,对外提供web服务和socket等接口服务。之初,曾有个小小的疑问为何不采用开源的apache、Nginx软件负载,F5设备动辄几十万,价格昂贵?自己一个比较幼稚的问题,后续明白:F5是操作于IOS网络模型的传输层,Nginx、apache是基于http反向代理方式,位于ISO模型的

2014-03-10 10:30:46 925

原创 第八章 dubbo之zookeeper之配置文件说明

最低配置要求中必须配置的参数如下:#监听客户端连接的端口clientPort#存储内存中数据库快照的位置dataDir#基本事件单元,以毫秒为单位,它用来控制心跳和超时#默认情况下最小的会话超时时间为两倍的tickTimetickTime高级配置#这个操作将管理机器把事物日志写入到“dataLogDir”所指定的目录,而不是“dataDir”所指定的目录。这将允

2014-03-07 15:06:02 1365

转载 第七章 dubbo之zookeeper技术浅析

Zookeeper是hadoop的一个子项目,虽然源自hadoop,但是zookeeper脱离hadoop的范畴开发分布式框架的运用越来越多。    Zookeeper是针对大型分布式系统的高可靠的协调系统。由这个定义我们知道zookeeper是个协调系统,作用的对象是分布式系统。为什么分布式系统需要一个协调系统?理由如下:    开发分布式系统是件很困难的事情,其中的困难主要体现在分布式

2014-03-07 14:34:46 2585

原创 第六章 dubbo之 zookeeper + provider + consumer

相关代码跟第四章的一样,就是provider的xml配置文件不同:<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:dubbo="http://code.alibabatech.com/schema/du

2014-03-06 17:24:21 1672

原创 第五章 dubbo之zookeeper

Zookeeper用途场景Zookeeper分布式服务框架是Apache Hadoop的一个子项目,主要是用来解决分布式应用中经常遇到的一些数据管理问题;如:集群管理、统一命名服务、分布式配置管理,分布式消息队列、分布式锁、分布式通知协调等;越来越多的分布式计算开始强依赖ZK,比如Storm、Hbase;Zookeeper对分布式开发带来很多便利,用ZK的独有特性巧妙地解决了很多问题;很多

2014-03-06 15:49:54 1520

原创 第四章 dubbo之helloworld

该例子用maven来构建,客户端和服务端之间采用组播技术进行通信,并未使用zookeeper。服务端代码:服务端代码结构:服务端pom文件:<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLoca

2014-03-05 18:06:21 1602

原创 在Eclipse中创建Maven多模块工程

一、先创建父项目在eclipse中New->Maven Project;在弹出界面中选择"Create a simple project":设置工程参数:这样我们就创建了一个Maven工程,我们需要将多余的东西删除掉,只留下pom文件,     二、创建子项目选中刚创建的父项目,在弹出菜单中点击New->Maven Moule:       2.如图配置

2014-03-05 11:54:05 877

原创 第三章 dubbo的框架设计

图例说明图中左边淡蓝背景的为服务消费方使用的接口,右边淡绿色背景的为服务提供方使用的接口,位于中轴线上的为双方都用到的接口;图中从下至上分为十层,各层均为单向依赖,右边的黑色箭头代表层之间的依赖关系,每一层都可以剥离上层被复用,其中,Service和Config层为API,其它各层均为SPI;图中绿色小块的为扩展接口,蓝色小块为实现类,图中只显示用于关联各层的实现类;图中蓝色虚线为初始化过

2014-03-04 15:38:55 1227

原创 第二章 dubbo背景及需求

背景随着互联网的发展,网站应用的规模不断扩大,常规的垂直应用架构已无法应对,分布式服务架构以及流动计算架构势在必行,丞需一个治理系统确保结构有条不紊的演进。单一应用架构                1、当网站流量很小时,只需一个应用,将所有功能部署在一起,以减少部署节点和成本;                2、此时,用于简化增删改查工作量的数据访问框架(ORM)是关键;

2014-03-04 14:19:51 1315

原创 第一章 dubbo简介

Dubbo是阿里巴巴公司开源的一个高性能优秀的服务框架,使得应用可通过高性能的RPC实现服务的输出和输入功能,可以和Spring框架无缝集成。      主要核心部件:Remoting:网络通信框架,实现了sync-over-async和request-response消息机制;RPC:一个远程过程调用的抽象,支持负载均衡、容灾和集群功能;Registry:服务目录框架用于服务的注册和

2014-03-04 11:22:46 1138

原创 四、Cocos2dx之动作(CCAction)

一、内存自动回收Cocos2d-x提供了一种类似java的内存回收机制,在java中定义的对象实例,不用担心他什么时候被释放,因为java虚拟机在变量不再使用时自动释放内存,而在C++中,不再使用这个变量时,我们需要手动释放(使用delete),不然我们的内存就会溢出,而在使用cocos2d-x时我们无需再关心这个问题,就是在新创建实例时,加入autorelease,如上图所示。

2014-03-03 21:46:03 713

原创 三、Cocos2dx之重要概念及Test例子

一、几个重要概念在cocos2d引擎中,有几个概念,分别是导演、场景、布景和人物角色。导演(CCDirector),在cocos2d-x引擎中,导演类是游戏的组织者和领导者,导演制定规则让游戏内的场景、布景和人物角色有序的运行;摄像机(CCCamera),每个节点都需要使用摄像机,当节点发生缩放、旋转和位置变化时,都需要覆盖摄像机,让这个节点通过摄像机重新渲染;场景(CCScene

2014-03-03 21:25:23 659

原创 二、Cocos2dx之HelloWorld

Cocos2d-x工程中自带helloworld项目,我们就可以通过这个项目来看看cocos2d-x的基本结构。项目结构: 可以看到proj.android,proj.linux等文件夹与平台相关,与开发逻辑相关的即是Classes和Resources文件夹,Classes文件夹放置代码,Resource放置资源(图片、声音、图片配置文件等)。程序结构:在win32平台上,

2014-03-02 23:50:30 712

原创 一、Cocos2dx在visualStudio中开发环境搭建

1、首先从http://www.cocos2d-x.org/download/version#Cocos2d-x上下载源码,我下载的版本是cocos2d-2.0-x-2.0.4;源码的文件夹结构如下图所示:2、编译Cocos2dx源码;a)、运行build-win32.bat脚本,它将会自适应vc2008或者vc2010去编译解决方案b)、或者打开cocos2d-win32解决

2014-03-02 15:01:08 1157

转载 第二章 身份验证

1、身份验证,即在应用中谁能证明他就是本人。一般提供如他们的身份ID一些标识信息来表明他就是他本人,如提供身份证,用户名/密码来证明。在shiro中,用户需要提供principals(身份)和credentials(证明)给shiro,从而应用能够验证用户身份:principals:身份,即主体的标识属性,可以是任何东西,如用户名、邮箱等,唯一即可。一个主体可以有多个principals,

2014-02-28 15:49:48 805

原创 volatile变量的运算在并发下一样是不安全的

下面是一段volatile变量自增元算测试:/** * @title VolatileTest.java * @description volatile变量自增运算测试 * @date 2014-02-28 11:48 * @author lichunan * @version 1.0 */public class VolatileTest { public static vo

2014-02-28 12:34:49 1050

转载 第一章 Shiro简介

1.1 简介Apache Shiro是java的一个安全框架。目前使用Apache Shiro的人越来越多,因为它相当简单,对比Spring Security,可能没有Spring Security功能强大,但是在实际工作时可能并不需要那么复杂的东西,所以使用小而简单的Shiro就足够了。对于它俩到底哪个好,这个不必纠结,能更简单的解决项目问题就好了。Shiro可以非常容易的开发出足够好的

2014-02-25 17:36:02 484

原创 Java堆溢出

Java堆用于存储对象实例,我们只要不断地创建对象,并且保证GC Roots到对象之间有可达路径来避免垃圾回收机制清除这些对象,就会在对象数量到达最大堆的容量限制后产生内存溢出异常。     以下代码中限制Java堆的大小为20M,不可扩展(将堆的最小值-Xms参数与最大值-Xmx参数设置为一样即可避免堆自动扩展),通过参数-XX:-HeapDumpOnOutOfMemoryError可以让虚

2014-02-19 18:14:02 625

转载 Oracle存储过程

一、存储过程1、定义所谓存储过程(Stored Procedure),就是一组用于完成特定数据库功能的SQL语句集,该SQL语句集经过编译后存储在数据库系统中。在使用时候,用户通过指定已经定义的存储过程名字并给出相应的存储过程参数来调用并执行它,从而完成一个或一系列的数据库操作。2、存储过程的创建Oracle存储过程包含三部分:过程声明,执行过程部分,存储过程异常。(一)无参存

2014-02-10 11:27:05 688

转载 LRU算法

LRU是Least Recently Used的缩写,即最近最少使用页面置换算法,是为虚拟页式存储管理服务的,是根据页面调入内存后的使用情况进行决策了。由于无法预测各页面将来的使用情况,只能利用“最近的过去”作为“最近的将来”的近似,因此,LRU算法就是将最近最少使用的页面予以淘汰。可以用一个特殊的栈来保存当前正在使用的各个页面的页面号。当一个新的进程访问某页面时,便将该页面号压入栈顶,其它的

2014-02-08 15:53:57 557

转载 深入理解Java内存模型(六)——final

与前面介绍的锁volatile相比较,对final域的读和写更像是普通的变量访问。对于final域,编译器和处理器要遵守两个重排序规则:1、在构造函数内对一个final域的写入,与随后把这个被构造对象的引用赋值给一个引用变量,这两个操作之间不能重排序;2、初次读一个包含final域的对象的引用,与随后初次读这个final域,这两个操作之间不能重排序。下面,我们通过一些示例性的代码来分别

2014-01-22 18:47:24 481

转载 深入理解Java内存模型(五)——锁

锁的释放-获取建立的happens before关系锁是java并发编程中最重要的同步机制。锁除了让临界区互斥执行外,还可以让释放锁的线程向获取同一个锁的线程发送信息。下面是锁释放-获取的示例代码:class MonitorExample { int a = 0; public synchronized void writer() { //1 a++;

2014-01-21 14:05:38 543

转载 深入理解Java内存模型(四)——volatile

volatile的特性当我们声明共享变量为volatile后,对这个变量的读/写将会很特别。理解volatile特性的一个好方法是:把对volatile变量的单个读/写,看成是使用同一个锁对这些单个读/写操作做了同步。下面我们通过具体的示例来说明,请看下面的示例代码:class VolatileFeaturesExample { //使用volatile声明64位的long型变量

2014-01-20 15:53:20 482

转载 深入理解Java内存模型(三)——顺序一致性

数据竞争与顺序一致性保证当程序未正确同步时,就会存在数据竞争。java内存模型规范对数据竞争的定义如下:在一个线程中一个变量;在另一个线程读同一个变量;而且写和读没有通过同步来排序;当代码中包含数据竞争时,程序的执行往往产生违反直觉的结果(前一章的示例正是如此)。如果一个多线程程序能正确同步,这个程序将是一个没有数据竞争的程序。JMM对正确同步的多线程程序的内存

2014-01-16 10:12:43 504

原创 libgdx游戏引擎(七)之多游戏界面的实现

libgdx的游戏框架:                 也就是说,我们一开始都是新建一个AndroidApplication然后调用initialize()方法启动一个实现了ApplicationListener的实例即进入了libgdx的周期。因此一个ApplicationListener就好像是一个游戏容器,一个容器就是一个游戏界面,我们在这个游戏界面中进行着各种操作,可

2014-01-13 21:42:26 718

原创 libgdx游戏引擎(六)之资源异步加载

作为一个非常棒的游戏开发引擎,Libgdx肯定是拿来做游戏的,而游戏就有一个最大的特点,就是图片资源和音频资源都非常地庞大,越是精美的游戏,越需要强大的图形渲染来支撑。     我们不可能直接在UI线程中去加载,因此加载问题就是一个不得不解决的问题。      直接加载接口启动速度太慢,会有很长时间的黑屏。自己独立开一个线程加载也存在很大的问题,由于Android和java复杂的相互制约的

2014-01-13 21:13:27 1338

原创 libgdx游戏引擎(五)之自定义进度条

先新建一个ProgressBar类,该类继承自Libgdx的演员Actor类,并实现了Disposable接口,为的是能及时释放内存。     代码如下:     package com.lichunan.libgdx.actor;import com.badlogic.gdx.Gdx;import com.badlogic.gdx.graphics.Texture;import

2014-01-12 21:38:28 1195

原创 libgdx游戏引擎(四)之舞台和演员

我们先看几个游戏截图再来理解何为舞台。

2014-01-11 22:32:41 823

转载 深入理解Java内存模型(二)——重排序

数据依赖性如果两个操作访问同一个变量,且这两个操作中有一个为写操作,此时这两个操作之间就存在数据依赖性。数据依赖分下列三种类型:上面三种情况,只要重排序两个操作的执行顺序,程序的执行结果将会被改变。前面提到过,编译器和处理器可能会对操作做重排序。编译器和处理器在重排序时,会遵守数据依赖性,编译器和处理器不会改变存在数据依赖关系的两个操作的执行顺序。注意,这里所说的数据依

2014-01-10 11:30:29 512

空空如也

空空如也

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

TA关注的人

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