- 浏览: 966760 次
- 性别:
- 来自: 北京
最新评论
-
菜鸟学生会:
Spring与dubbo分布式REST服务开发实战网盘地址:h ...
Dubbo与Spring的配合使用 -
奔跑的码侬:
基于 Spring + Dubbo 开发分布式REST服务实战 ...
Dubbo与Spring的配合使用 -
卧槽这是我的昵称麽:
...
MyBatis的parameterType和resultMap -
xiongzhe90:
学习中,赞一个
idea14使用maven创建web工程 -
zqb666kkk:
nice 非常好!
jquery form向spring mvc提交表单
文章列表
1. 数组静态分配内存,链表动态分配内存; 2. 数组在内存中连续,链表不连续; 3. 数组元素在栈区,链表元素在堆区; 4. 数组利用下标定位,时间复杂度为O(1),链表利用引用定位元素时间复杂度O(n); 5. 数组插入或删除元素的时间复杂度O(n),链表的时间复杂度 O(1)。
总结:
如果是数据数量不发生变化,就使用数组;如果数据数量经常发生变化,就使用动态数组(ArrayList、vector)或双向链表LinkedList;如果查询多,而插入删除少,使用ArrayList,如果查询少,而插入删除操作多,则使用LinkedList。
消费者和生产模式是典型的软件应用场景,比如工厂生产出产品,先送到商店,消费者再到商店去买。
生产者不会每生产一个就送到商店去,一般是生产一定数量的产品,比如生产数量为N时,再送到商店去,这样减少来回运输的成本。这样当商店的N个产品卖完时,消费者再来买时需要等待(wait),当商店有N个产品未卖时,生产者需要停止生产,等待产品销售,产品量小于N时再开始生产。
下面以代码来实现上面的场景:
生产类:
/**
* 生产者
*/
public class Producer implements Runnable{
private ...
MINA作为高效能的可应对高并发访问的NIO框架,特性就不多介绍了。下面提供一些使用的实例。
服务器端代码:
/**
* Description 用来启动MINA服务端
* @author Administrator
* 2012-10-21
*/
public class MinaTimeServer {
protected static Logger l ...
memcached配置和使用
- 博客分类:
- 架构和设计
memcached作为著名的分布式内存对象缓存系统,具有高性能、免费和开源的特点,在互联网应用中大行其道,用于加快web动态应用程序的响应和减轻数据库的负荷。
memcached的实现机制为K-V,类似Map容器机制。
Windows环境下载:
1 ...
快速排序本质上是把一个数组分为两个数组,然后递归调用自身来为每一个子数组进行快速排序来实现的,又称划分排序,是一个递归的过程。
public class QuickSort{
/**
* @param data 要排序的数组
* @param left 左边数组下标
* @param right 右边数组下标
*/
static void quickSort(int[] data, int left, int right){
if(left<right){
// 一趟排序算法, 返回枢钮位置
int pivot = ...
二分查找法,顾名思义,是一种一分为二的查找算法,适用于已排序的数组(大数据量),快速地找到所查找数的位置。
源代码:
/**
* @param i 数组
* @param key 要查找的Key
* @return
*/
static int binarySearch(int[] i, int key){
Arrays.sort(i);
int low = 0;
int high = i.length - 1;
//int mid = (low + high)/2;
while(low <= high) ...
详细解读JVM中的对象生命周期
- 博客分类:
- jvm
在JVM运行空间中,对象的整个生命周期大致可以分为7个阶段:创建阶段(Creation)、应用阶段(Using)、不可视阶段(Invisible)、不可到达阶段(Unreachable)、可收集阶段(Collected)、终结阶段(Finalized)与释放阶段(Free)。上面的这7个阶段,构成了 JVM中对象的完整的生命周期。下面分别介绍对象在处于这7个阶段时的不同情形。
创建阶段
在对象创建阶段,系统要通过下面的步骤,完成对象的创建过程:
(1)为对象分配存储空间。
(2)开始构造对象。
(3)递归调用其超类的构造方法。
(4)进行对象实例初始化与变量初始化。
(5) ...
javascript中的闭包
- 博客分类:
- web&js
闭包就是closure, 意在方法体外访问到方法内的局部变量,因为javascript中的方法中定义的变量对外是不可见的,类似于是私有的,
var a;
function access(){
var b = 1;
}
alert(b); //error取不到值
在上面的alert(b)中是取不到值的,因为不能访问方法内的变量,这时可以通过在方法内嵌套定义方法,来访问方法体内的变量,
function access(){
var b = 1;
function avi(){
++b;
}
...
一. JVM内存模型
1.1 栈-stack
Java栈是与每一个线程关联的,JVM在创建每一个线程的时候,会分配一定的栈空间给线程。它主要用来存储线程执行过程中的局部变量,方法的返回值,以及方法调用上下文。
stack的区域很小, ...
JAVA和JVM运行原理
- 博客分类:
- jvm
这里和大家简单分享一下JAVA和JVM运行的原理,Java语言写的源程序通过Java编译器,编译成与平台无关的‘字节码程序’(.class文件,也就是0,1二进制程序),然后在OS之上的Java解释器中解释执行,而JVM是java的核心和基础,在java ...
Java垃圾回收机制(一)
- 博客分类:
- jvm
1.Java垃圾收集算法的核心思想
Java语言建立了垃圾收集机制,用以跟踪正在使用的对象和发现并回收不再使用(引用)的对象。Java垃圾回收算法可以有效防范动态内存分配中可能发生的两个危险:因内存垃圾过多而引发的内存耗尽 ...
Hibernate延迟加载机制
- 博客分类:
- 架构和设计
延迟加载:
延迟加载机制是为了避免一些无谓的性能开销而提出来的,所谓延迟加载就是当在真正需要数据的时候,才真正执行数据加载操作。在Hibernate中提供了对实体对象的延迟加载以及对集合的延迟加载,另外在Hiber ...
oracle行转列sql
- 博客分类:
- database
建成绩表gradeinfo和学生表student,成绩表中存有学生表的id:
create table GRADEINFO
(
SID VARCHAR2(2),
SUBJECT VARCHAR2(20),
GRADE VARCHAR2(20)
)
create table STUDENT
(
ID VARCHAR2(2),
NAME VARCHAR2(20)
)
要查询出每一个学生对应的每一门功课的分数是多少。
想要的效果如下:
查询SQL:
select a.name,sum(decode(b.s ...
Oracle的escape函数
- 博客分类:
- database
Oracle的escape函数,顾名思义,是转义函数,用于将特殊字符转义成普通字符,比如将通配符%转义成%字符,_转义成下划线‘_’,可用在过滤通配符的SQL查询中。
如:
select * from table where code like '%condition%'
上面的SQL, 如果查询时输入%,将会查询出全部结果,而不是查询出带有%符号的结果,这时如何处理呢?
这时就要用escape函数了,
selece * from table where code like '%\%%' escape '\'
这时查询的结果就是查询%符号的结果,而 ...
在当前的一个项目中,一个Service中需要操作多个数据库表,默认是一个service对应一个dao,一个dao对应一个entity,一个entity对应一个表。
Realize:
/**
* Description: 课件服务
* @author user
* 2012-5-25
*/
@Component
@Transactional
public class CourseService extends BaseService<Course> implements ICourseService<Course>{
/** 使用其他dao ...