`
geeksun
  • 浏览: 966760 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论
文章列表
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入门使用

MINA作为高效能的可应对高并发访问的NIO框架,特性就不多介绍了。下面提供一些使用的实例。 服务器端代码: /** * Description 用来启动MINA服务端 * @author Administrator * 2012-10-21 */ public class MinaTimeServer { protected static Logger l ...
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运行空间中,对象的整个生命周期大致可以分为7个阶段:创建阶段(Creation)、应用阶段(Using)、不可视阶段(Invisible)、不可到达阶段(Unreachable)、可收集阶段(Collected)、终结阶段(Finalized)与释放阶段(Free)。上面的这7个阶段,构成了 JVM中对象的完整的生命周期。下面分别介绍对象在处于这7个阶段时的不同情形。  创建阶段 在对象创建阶段,系统要通过下面的步骤,完成对象的创建过程: (1)为对象分配存储空间。 (2)开始构造对象。 (3)递归调用其超类的构造方法。 (4)进行对象实例初始化与变量初始化。 (5) ...

javascript中的闭包

闭包就是closure, 意在方法体外访问到方法内的局部变量,因为javascript中的方法中定义的变量对外是不可见的,类似于是私有的, var a; function access(){ var b = 1; } alert(b); //error取不到值  在上面的alert(b)中是取不到值的,因为不能访问方法内的变量,这时可以通过在方法内嵌套定义方法,来访问方法体内的变量, function access(){ var b = 1; function avi(){ ++b; } ...

JVM内存模型

    博客分类:
  • jvm
一.  JVM内存模型 1.1  栈-stack Java栈是与每一个线程关联的,JVM在创建每一个线程的时候,会分配一定的栈空间给线程。它主要用来存储线程执行过程中的局部变量,方法的返回值,以及方法调用上下文。   stack的区域很小, ...

JAVA和JVM运行原理

    博客分类:
  • jvm
这里和大家简单分享一下JAVA和JVM运行的原理,Java语言写的源程序通过Java编译器,编译成与平台无关的‘字节码程序’(.class文件,也就是0,1二进制程序),然后在OS之上的Java解释器中解释执行,而JVM是java的核心和基础,在java ...
1.Java垃圾收集算法的核心思想 Java语言建立了垃圾收集机制,用以跟踪正在使用的对象和发现并回收不再使用(引用)的对象。Java垃圾回收算法可以有效防范动态内存分配中可能发生的两个危险:因内存垃圾过多而引发的内存耗尽 ...
 延迟加载:    延迟加载机制是为了避免一些无谓的性能开销而提出来的,所谓延迟加载就是当在真正需要数据的时候,才真正执行数据加载操作。在Hibernate中提供了对实体对象的延迟加载以及对集合的延迟加载,另外在Hiber ...

oracle行转列sql

建成绩表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函数,顾名思义,是转义函数,用于将特殊字符转义成普通字符,比如将通配符%转义成%字符,_转义成下划线‘_’,可用在过滤通配符的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 ...
Global site tag (gtag.js) - Google Analytics