- 博客(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
907
原创 利用链表来实现栈和队列
/** * @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
845
转载 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
890
转载 图文解说: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
962
原创 第八章 dubbo之zookeeper之配置文件说明
最低配置要求中必须配置的参数如下:#监听客户端连接的端口clientPort#存储内存中数据库快照的位置dataDir#基本事件单元,以毫秒为单位,它用来控制心跳和超时#默认情况下最小的会话超时时间为两倍的tickTimetickTime高级配置#这个操作将管理机器把事物日志写入到“dataLogDir”所指定的目录,而不是“dataDir”所指定的目录。这将允
2014-03-07 15:06:02
1413
转载 第七章 dubbo之zookeeper技术浅析
Zookeeper是hadoop的一个子项目,虽然源自hadoop,但是zookeeper脱离hadoop的范畴开发分布式框架的运用越来越多。 Zookeeper是针对大型分布式系统的高可靠的协调系统。由这个定义我们知道zookeeper是个协调系统,作用的对象是分布式系统。为什么分布式系统需要一个协调系统?理由如下: 开发分布式系统是件很困难的事情,其中的困难主要体现在分布式
2014-03-07 14:34:46
2636
原创 第六章 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
1716
原创 第五章 dubbo之zookeeper
Zookeeper用途场景Zookeeper分布式服务框架是Apache Hadoop的一个子项目,主要是用来解决分布式应用中经常遇到的一些数据管理问题;如:集群管理、统一命名服务、分布式配置管理,分布式消息队列、分布式锁、分布式通知协调等;越来越多的分布式计算开始强依赖ZK,比如Storm、Hbase;Zookeeper对分布式开发带来很多便利,用ZK的独有特性巧妙地解决了很多问题;很多
2014-03-06 15:49:54
1579
原创 第四章 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
1642
原创 在Eclipse中创建Maven多模块工程
一、先创建父项目在eclipse中New->Maven Project;在弹出界面中选择"Create a simple project":设置工程参数:这样我们就创建了一个Maven工程,我们需要将多余的东西删除掉,只留下pom文件, 二、创建子项目选中刚创建的父项目,在弹出菜单中点击New->Maven Moule: 2.如图配置
2014-03-05 11:54:05
915
原创 第三章 dubbo的框架设计
图例说明图中左边淡蓝背景的为服务消费方使用的接口,右边淡绿色背景的为服务提供方使用的接口,位于中轴线上的为双方都用到的接口;图中从下至上分为十层,各层均为单向依赖,右边的黑色箭头代表层之间的依赖关系,每一层都可以剥离上层被复用,其中,Service和Config层为API,其它各层均为SPI;图中绿色小块的为扩展接口,蓝色小块为实现类,图中只显示用于关联各层的实现类;图中蓝色虚线为初始化过
2014-03-04 15:38:55
1271
原创 第二章 dubbo背景及需求
背景随着互联网的发展,网站应用的规模不断扩大,常规的垂直应用架构已无法应对,分布式服务架构以及流动计算架构势在必行,丞需一个治理系统确保结构有条不紊的演进。单一应用架构 1、当网站流量很小时,只需一个应用,将所有功能部署在一起,以减少部署节点和成本; 2、此时,用于简化增删改查工作量的数据访问框架(ORM)是关键;
2014-03-04 14:19:51
1364
原创 第一章 dubbo简介
Dubbo是阿里巴巴公司开源的一个高性能优秀的服务框架,使得应用可通过高性能的RPC实现服务的输出和输入功能,可以和Spring框架无缝集成。 主要核心部件:Remoting:网络通信框架,实现了sync-over-async和request-response消息机制;RPC:一个远程过程调用的抽象,支持负载均衡、容灾和集群功能;Registry:服务目录框架用于服务的注册和
2014-03-04 11:22:46
1177
原创 四、Cocos2dx之动作(CCAction)
一、内存自动回收Cocos2d-x提供了一种类似java的内存回收机制,在java中定义的对象实例,不用担心他什么时候被释放,因为java虚拟机在变量不再使用时自动释放内存,而在C++中,不再使用这个变量时,我们需要手动释放(使用delete),不然我们的内存就会溢出,而在使用cocos2d-x时我们无需再关心这个问题,就是在新创建实例时,加入autorelease,如上图所示。
2014-03-03 21:46:03
752
原创 三、Cocos2dx之重要概念及Test例子
一、几个重要概念在cocos2d引擎中,有几个概念,分别是导演、场景、布景和人物角色。导演(CCDirector),在cocos2d-x引擎中,导演类是游戏的组织者和领导者,导演制定规则让游戏内的场景、布景和人物角色有序的运行;摄像机(CCCamera),每个节点都需要使用摄像机,当节点发生缩放、旋转和位置变化时,都需要覆盖摄像机,让这个节点通过摄像机重新渲染;场景(CCScene
2014-03-03 21:25:23
709
原创 二、Cocos2dx之HelloWorld
Cocos2d-x工程中自带helloworld项目,我们就可以通过这个项目来看看cocos2d-x的基本结构。项目结构: 可以看到proj.android,proj.linux等文件夹与平台相关,与开发逻辑相关的即是Classes和Resources文件夹,Classes文件夹放置代码,Resource放置资源(图片、声音、图片配置文件等)。程序结构:在win32平台上,
2014-03-02 23:50:30
753
原创 一、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
1250
转载 第二章 身份验证
1、身份验证,即在应用中谁能证明他就是本人。一般提供如他们的身份ID一些标识信息来表明他就是他本人,如提供身份证,用户名/密码来证明。在shiro中,用户需要提供principals(身份)和credentials(证明)给shiro,从而应用能够验证用户身份:principals:身份,即主体的标识属性,可以是任何东西,如用户名、邮箱等,唯一即可。一个主体可以有多个principals,
2014-02-28 15:49:48
971
原创 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
1106
转载 第一章 Shiro简介
1.1 简介Apache Shiro是java的一个安全框架。目前使用Apache Shiro的人越来越多,因为它相当简单,对比Spring Security,可能没有Spring Security功能强大,但是在实际工作时可能并不需要那么复杂的东西,所以使用小而简单的Shiro就足够了。对于它俩到底哪个好,这个不必纠结,能更简单的解决项目问题就好了。Shiro可以非常容易的开发出足够好的
2014-02-25 17:36:02
520
原创 Java堆溢出
Java堆用于存储对象实例,我们只要不断地创建对象,并且保证GC Roots到对象之间有可达路径来避免垃圾回收机制清除这些对象,就会在对象数量到达最大堆的容量限制后产生内存溢出异常。 以下代码中限制Java堆的大小为20M,不可扩展(将堆的最小值-Xms参数与最大值-Xmx参数设置为一样即可避免堆自动扩展),通过参数-XX:-HeapDumpOnOutOfMemoryError可以让虚
2014-02-19 18:14:02
660
转载 Oracle存储过程
一、存储过程1、定义所谓存储过程(Stored Procedure),就是一组用于完成特定数据库功能的SQL语句集,该SQL语句集经过编译后存储在数据库系统中。在使用时候,用户通过指定已经定义的存储过程名字并给出相应的存储过程参数来调用并执行它,从而完成一个或一系列的数据库操作。2、存储过程的创建Oracle存储过程包含三部分:过程声明,执行过程部分,存储过程异常。(一)无参存
2014-02-10 11:27:05
729
转载 LRU算法
LRU是Least Recently Used的缩写,即最近最少使用页面置换算法,是为虚拟页式存储管理服务的,是根据页面调入内存后的使用情况进行决策了。由于无法预测各页面将来的使用情况,只能利用“最近的过去”作为“最近的将来”的近似,因此,LRU算法就是将最近最少使用的页面予以淘汰。可以用一个特殊的栈来保存当前正在使用的各个页面的页面号。当一个新的进程访问某页面时,便将该页面号压入栈顶,其它的
2014-02-08 15:53:57
605
转载 深入理解Java内存模型(六)——final
与前面介绍的锁volatile相比较,对final域的读和写更像是普通的变量访问。对于final域,编译器和处理器要遵守两个重排序规则:1、在构造函数内对一个final域的写入,与随后把这个被构造对象的引用赋值给一个引用变量,这两个操作之间不能重排序;2、初次读一个包含final域的对象的引用,与随后初次读这个final域,这两个操作之间不能重排序。下面,我们通过一些示例性的代码来分别
2014-01-22 18:47:24
513
转载 深入理解Java内存模型(五)——锁
锁的释放-获取建立的happens before关系锁是java并发编程中最重要的同步机制。锁除了让临界区互斥执行外,还可以让释放锁的线程向获取同一个锁的线程发送信息。下面是锁释放-获取的示例代码:class MonitorExample { int a = 0; public synchronized void writer() { //1 a++;
2014-01-21 14:05:38
584
转载 深入理解Java内存模型(四)——volatile
volatile的特性当我们声明共享变量为volatile后,对这个变量的读/写将会很特别。理解volatile特性的一个好方法是:把对volatile变量的单个读/写,看成是使用同一个锁对这些单个读/写操作做了同步。下面我们通过具体的示例来说明,请看下面的示例代码:class VolatileFeaturesExample { //使用volatile声明64位的long型变量
2014-01-20 15:53:20
511
转载 深入理解Java内存模型(三)——顺序一致性
数据竞争与顺序一致性保证当程序未正确同步时,就会存在数据竞争。java内存模型规范对数据竞争的定义如下:在一个线程中一个变量;在另一个线程读同一个变量;而且写和读没有通过同步来排序;当代码中包含数据竞争时,程序的执行往往产生违反直觉的结果(前一章的示例正是如此)。如果一个多线程程序能正确同步,这个程序将是一个没有数据竞争的程序。JMM对正确同步的多线程程序的内存
2014-01-16 10:12:43
569
原创 libgdx游戏引擎(七)之多游戏界面的实现
libgdx的游戏框架: 也就是说,我们一开始都是新建一个AndroidApplication然后调用initialize()方法启动一个实现了ApplicationListener的实例即进入了libgdx的周期。因此一个ApplicationListener就好像是一个游戏容器,一个容器就是一个游戏界面,我们在这个游戏界面中进行着各种操作,可
2014-01-13 21:42:26
773
原创 libgdx游戏引擎(六)之资源异步加载
作为一个非常棒的游戏开发引擎,Libgdx肯定是拿来做游戏的,而游戏就有一个最大的特点,就是图片资源和音频资源都非常地庞大,越是精美的游戏,越需要强大的图形渲染来支撑。 我们不可能直接在UI线程中去加载,因此加载问题就是一个不得不解决的问题。 直接加载接口启动速度太慢,会有很长时间的黑屏。自己独立开一个线程加载也存在很大的问题,由于Android和java复杂的相互制约的
2014-01-13 21:13:27
1424
原创 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
1244
转载 深入理解Java内存模型(二)——重排序
数据依赖性如果两个操作访问同一个变量,且这两个操作中有一个为写操作,此时这两个操作之间就存在数据依赖性。数据依赖分下列三种类型:上面三种情况,只要重排序两个操作的执行顺序,程序的执行结果将会被改变。前面提到过,编译器和处理器可能会对操作做重排序。编译器和处理器在重排序时,会遵守数据依赖性,编译器和处理器不会改变存在数据依赖关系的两个操作的执行顺序。注意,这里所说的数据依
2014-01-10 11:30:29
551
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人