- 博客(43)
- 资源 (25)
- 收藏
- 关注
转载 HashMap实现原理分析
1. HashMap的数据结构数据结构中有数组和链表来实现对数据的存储,但这两者基本上是两个极端。 数组数组存储区间是连续的,占用内存严重,故空间复杂的很大。但数组的二分查找时间复杂度小,为O(1);数组的特点是:寻址容易,插入和删除困难;链表链表存储区间离散,占用内存比较宽松,故空间复杂度很小,但时间复杂度很大,达O(N)。链表的特点是:寻址困难
2017-02-25 23:41:14 154
转载 java5、java6、java7、java8的新特性
Java5:1、泛型 Generics: 引用泛型之后,允许指定集合里元素的类型,免去了强制类型转换,并且能在编译时刻进行类型检查的好处。 Parameterized Type作为参数和返回值,Generic是vararg、annotation、enumeration、collection的基石。 A、类型安全
2017-02-25 23:35:59 177
原创 Java中ArrayList源码
/* * @(#)ArrayList.java 1.56 06/04/21 * * Copyright 2006 Sun Microsystems, Inc. All rights reserved. * SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms. */package java.util;/**
2017-02-25 23:32:47 223
原创 Java集合HashMap源码
/* * @(#)HashMap.java 1.73 07/03/13 * * Copyright 2006 Sun Microsystems, Inc. All rights reserved. * SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms. */package java.util;import
2017-02-25 23:28:36 176
原创 单例模式和多线程
在标准的23中设计模式中单例模式是应用最多的。(1) 立即加载/饿汉模式立即加载就是使用类的时候已经将对象创建完毕,常见的实现方法就是直接new实例化。public class MyObject { // 单利模式饿汉模式 private static MyObject myObject = new MyObject(); private MyObject() {
2017-02-25 23:17:37 230
原创 定时器Timer
定时任务在Java中主要使用的就是Timer对象,它在内部还是使用多线程的方式处理,所以它和线程技术还有有非常大的关系。在JDK库中,Timer类主要负责计划任务的功能,也就是在指定的时间开始执行某一个任务。Timeter主要作用就是设置计划任务,但封装任务的类确实TimerTask类,执行计划任务的代码要放入TimerTask的子类中,因为TimerTask是一个抽象类。核心方法:s
2017-02-25 23:09:36 323
转载 redis与memcached比较
Memcached 是一个高性能的分布式内存对象缓存系统,用于动态Web应用以减轻数据库负载。它通过在内存中缓存数据库查询结果,减少数据库访问次数,以提高动态Web应用的速度、提高可扩展性。 redis是一个key-value存储系统,是一个高性能的key-value数据库。在考虑对应用程序的性能表现进行提升时,缓存机制往往是解决问题的重要起点,而Memcached与Redi
2017-02-24 19:50:07 171
转载 Redis
Redis的崛起绝非偶然,它确实有自己的新东西在里面,它不像Memcached,只能将数据存储在内存中,它提供了持久化机制,避免了場机后的雪崩的问题,即服务器出现问题后,内存中保留的原始数据全部丢失,需要重新组织数据到内存,这时,Memcached会经历一个很慢的过程。Redis支持持久化只是它的一件武器,另外,它针对不同的需求也提供了多达5种数据存储方式,以最大效率上的实现你的需求,下面
2017-02-24 19:47:51 181
转载 Hibernate与Mybatis比较
我是一名Java开发人员,hibernate以及mybatis都有过学习,在java面试中也被提及问道过,在项目实践中也应用过,现在对hibernate和mybatis做一下对比,便于大家更好的理解和学习,使自己在做项目中更加得心应手。第一方面:开发速度的对比就开发速度而言,Hibernate的真正掌握要比Mybatis来得难些。Mybatis框架相对简单很容易上手,但也相对简陋些
2017-02-24 19:40:14 168
原创 线程状态切换
1) 新创建一个新的线程对象后,在调用它的start()方法,系统就会为此线程分配CPU的资源,是其处于Runnable(可运行)状态,这一个准备运行的阶段。若果线程强占到CPU资源,此线程就处于Running(运行)状态。2) Runnable状态和Running转态可相互切换,因为有可能线程运行一段时间后,有其它优先级的线程抢占到了CPU资源,这是线程就从Running
2017-02-23 23:03:47 356
原创 线程间通信
(1) 使用wait/notify实现线程间的通信Wait()方法的作用是:使当前执行代码的线程进行等待,是object类的一个方法,该方法用来将当前线程置入预执行队列中,并且在wait()所在的代码行处停止执行,知道接到通知或被中断为止。在调用wait()方法之前,线程必须获得该对象的对象级别的锁,即只能在同步方法或同步块中调用wait()方法。在执行wait()方法后,当前线
2017-02-23 23:00:32 202
原创 Java中访问修饰符public、private、protect、default范围
同一个类同一个包不同包的子类不同包的非子类Private√ Default√√ Protected√√
2017-02-20 23:20:32 367
原创 Java线程中对象及变量的并发访问
(1)非线程安全问题存在于实例变量中,如果方法内部的私有变量,则不存在非线程安全的问题,所得结果也就是线程安全的了。方法中的变量不存在线程安全问题,永远都是线程安全的,这是方法内部的变量是私有的特性所造成的。(2)在两个线程访问同一个对象中的同步方法是一定是线程安全。(3)调用关键字synchronized声明的方法一定是排队运行的,要牢记共享这两个字,只有共享资源的读写访问才需要同步化,
2017-02-20 23:13:00 190
原创 Spring MVC基本原理
SpringMVC是Spring的一个后续产品,其实就是spring在原有基础上,又提供了web应用的MVC模块,可以简单的把SpringMVC理解为是Spring的一个模块(类似AOP,IOC这样的模块),网络上经常会说SpringMVC和Spring无缝集成,其实SpringMVC就Spring的一个子模块,所以根本不需要同Spring进行整合。第一:工作原理 1)
2017-02-20 21:15:54 396
原创 Java线程中的volatile和synchronized的比较
1)关键字volatile是线程同步的轻量级实现,所以volatile性能肯定比synchronized要好,并且volatile只能修饰变量,而synchronized可以修饰方法,以及代码块。随着jdk新版本的发布,synchronized关键字在执行效率上得到了很大的提升,在开发中使用synchronized关键字的比率还是比较大。2)多线程访问volatile不会发生阻塞,而synch
2017-02-20 15:45:39 210
转载 insert into from与select into from
1.INSERT INTO SELECT语句 语句形式为:Insert into Table2(field1,field2,...) select value1,value2,... from Table1 要求目标表Table2必须存在,由于目标表Table2已经存在,所以我们除了插入源表Table1的字段外,还可以插入常量。2.SELECT INTO FROM语
2017-02-20 10:39:01 1383
原创 线程Thread的类的核心方法
(1) 实现线程的方法1) 继承Thread类2) 实现Runnable接口(2) 启动线程的方法(start)start()方法的顺序并不代表线程启动的顺序。currentThread()方法可返回代码段正在被哪个线程调用的信息。isAlive()方法判断当前的线程是否处于活动的状态。什么是活动状态就是线程已经启动且尚未终止。线程处于正在运行或者准
2017-02-18 12:35:25 306
原创 抽象类和接口的区别
(1)定义上:抽象类:具有抽象方法的类称为抽象类,用abstract修饰。特点:1)抽象类中的抽象方法用abstract修饰,也可以有普通的方法。 2)抽象类被子类继承,子类(如果不是抽象类)必须重写抽象类中的所有抽象方法 3)抽象类不能被直接实例化,要通过其子类进行实例化 4)只要包含一个抽象方法的抽象
2017-02-17 10:11:52 163
转载 Java中常用的线程池
Java通过Executors提供四种线程池,分别为:newCachedThreadPool创建一个可缓存线程池,如果线程池长度超过处理需要,可灵活回收空闲线程,若无可回收,则新建线程。newFixedThreadPool 创建一个定长线程池,可控制线程最大并发数,超出的线程会在队列中等待。newScheduledThreadPool 创建一个定长线程池,支持定时及周期性任务执行。
2017-02-16 16:03:43 178
转载 乐视秒杀:每秒十万笔交易的数据架构解读
http://blog.csdn.net/he90227/article/details/52384780
2017-02-16 14:35:20 317
原创 Oracle10g分区和Mysql分区区别
Oracle10g分区常用的是:range(范围分区)、list(列表分区)、hash(哈希分区)、range-hash(范围—哈希分区)、range-list(列表—复合分区)。Range分区:Range分区是应用范围比较广的表分区方式,它是以列的值的范围来做为分区的划分条件,将记录存放到列值所在的range分区中。 如按照时间划分,2010年1月的数据放到a分区,2月的
2017-02-15 14:51:51 622
原创 Oracle大量数据的优化2
1.数据库表设计方面 1)遵循范式规则 2)数据行的长度不要超过8020字节,如果超过这个长度的话在物理页中这条数据会占用两行从而造成存储碎片,降低查询效率。3)能够用数字类型的字段尽量选择数字类型而不用字符串类型的(电话号码),这会降低查询和连接的性能,并会增加存储开销。这是因为引擎在处理查询和连接回逐个比较字符串中每一个字符,而对于数字型而言只需要比较一次就够了。 4)对
2017-02-15 14:19:44 479
转载 Oracle数据库表分区
Oracle 分区功能可以提高许多应用程序的可管理性、性能与可用性。通过分区功能,可以将表、索引和索引组织表进一步细分为段,从而能够更精确地管理和访问这些数据库对象。Oracle 提供了种类繁多的分区方案以满足每种业务要求。而且,因为在 SQL 语句中分区是完全透明的,所以该功能几乎可应用于任何应用程序。分区功能的优势分区功能通过改善可管理性、性能和可用性,从而为各式应用程序带来了极大
2017-02-15 14:03:49 386
原创 Oracle中union与unionAll区别
1.定义:union:两个结果集进行并集操作, 不包括重复行,相当于distinct, 同时进行默认规则的排序。unionAll:对两个结果集进行并集操作, 包括重复行, 即所有的结果全部显示, 不管是不是重复。2.总结(1)因为union all仅仅是简单的合并查询结果, 并不会做去重操作, 也不会排序, 所以union all效率要比union高.。所以在能
2017-02-15 11:13:26 1292
转载 Oracle数据库索引失效
1.隐式转换导致索引失效.这一点应当引起重视.也是开发中经常会犯的错误. 由于表的字段tu_mdn定义为varchar2(20),但在查询时把该字段作为number类型以where条件传给Oracle,这样会导致索引失效. 错误的例子:select * from test where tu_mdn=13333333333; 正确的例子:select * from test where
2017-02-15 10:59:02 684
转载 数据库SQL优化大总结
1.对查询进行优化,要尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引。2.应尽量避免在 where 子句中对字段进行 null 值判断,否则将导致引擎放弃使用索引而进行全表扫描,如:select id from t where num is null最好不要给数据库留NULL,尽可能的使用 NOT NULL填充数据库.备注、描述、评
2017-02-15 10:57:27 164
原创 jvm类加载机制
代码编译从本地机器码转变为字节码,是存储格式发展的一小步,却是编程语言发展的一大步。在java语言中类的加载、连接和初始化过程都是在程序运行期间完成的。 虚拟机的类加载机制:虚拟机把描述类的数据从Class文件加载到内存,并对数据进行校验、转换解析和初始化,并最终形成可以被虚拟机直接使用的java类型。 类的加载生命周期包括:加载(Loading)、验证(Ver
2017-02-14 14:35:25 161
原创 Mybatis的基本运行原理
Mybatis的运行分为两部分,第一部分是读取配置文件缓存到Coufiguration对象,用以创建SqlSessionFactory,第二部分是SqlSession的执行过程。Mybatis实现的基本原理是利用:动态代理和反射机制。动态代理中用到JDK动态代理和CGLIB代理。这两者的区别是,JDK动态代理是接口的,CGLIB代理是对于类的。Mybatis中这两种代理都用到过,Mapper中
2017-02-13 23:23:54 11098 1
原创 Java中垃圾回收器
垃圾收集器(GrabageCollection,GC),主要是对堆进行回收,要确定哪些对象还存活着,哪些已经死去了。判断对象是否已经死了常用算法:引用计数算法:给对象添加一个引用计数器,每当有一个地方引用它时,它的计数器值就会增加1,当引用失效时,计数器就会减1,任何时刻计数器为0的对象就是不可能在被使用。主流的Java虚拟机中没有使用该方法来管理内存,主要原因是很难解决对象之间相互引
2017-02-13 16:10:55 212
原创 Java内存区域
1.Java内存区域与内存溢出异常Java运行时的数据区域:方法区、堆、虚拟机栈、本地方法栈和程序计数器。方法区和堆是线程共享的数据区,虚拟机栈、本地方法栈和程序计数器是线程私有的。1)程序计数器(ProgramCounter Register):定义:可以看做是当前线程所执行的字节码的行号指示器。特点:线程私有,较小的内存。异常:此区域是唯一一块没有规定OutOfMe
2017-02-13 15:15:08 215
原创 Executor框架
Java中线程即是工作单元,也是执行单元。从jdk5开始,把工作单元与执行单元机制分离开来。工作单元包括:Runnable和Callable,执行单元由Executor框架提供。1. Executor框架组成部分(1) 任务:Runnable接口和Callable接口(2) 任务的执行:核心接口(Executor),以及继承自Executor的Execut
2017-02-12 22:40:39 221
原创 java中线程池
(1)使用线程池的好处:1. 降低资源的消耗。通过重复利用已创建的线程降低线程创建和销毁造成的消耗。2. 提高响应的时间。当任务到达时,任务可以不需要等到线程创建就能立即执行。3. 提高线程的可管理性。线程是稀缺资源,如果无限制地创建,不仅会消耗系统资源,还会降低系统的稳定性,使用线程池可以统一分配、调优和监控。(2)线程池的实现原理:1.线程池判
2017-02-12 21:35:14 413
原创 Java中锁
java中锁 在Javase5后在并发包下新增了Lock接口,用来实现锁的功能,它提供了与synchronized关键字类似的同步功能,在使用时需要显示地获取和释放锁。Lock接口的实现类是ReentrantLock。Lock接口的常用方法:void lock ()方法:获得锁,当前线程获得锁从该方法返回。void lockInterruptibly()throwsI
2017-02-12 15:46:08 184
原创 Spring Bean生命周期2
Spring中Bean的管理周期一般就是以IOC容器来管理,一般担当管理者角色的是BeanFactory或ApplicationContext。下面以Beanfactory为列来介绍一下Bean的生命周期。1.Bean的创建:由BeanFactory读取Bean定义文件,并生成各个实例。2.Bean的set注入:执行Bean的属性依赖注入。3.BeanNameAware的setName
2017-02-10 14:40:35 179
转载 Spring中bean生命周期
Spring作为当前Java最流行、最强大的轻量级框架,受到了程序员的热烈欢迎。准确的了解Spring Bean的生命周期是非常必要的。我们通常使用ApplicationContext作为Spring容器。这里,我们讲的也是 ApplicationContext中Bean的生命周期。而实际上BeanFactory也是差不多的,只不过处理器需要手动注册。 转载请注明地址 http://www.c
2017-02-10 09:28:29 242
原创 Mybatis插件
1.插件接口:在Mybatis中使用插件的时候,就必须实现Interceptor接口。public interface Interceptor{ Objectintercept(Invocation invocation) throws Throwable; Objectplugin (Object target); voidse
2017-02-09 21:48:49 221
原创 MQ
为什么会需要消息队列(MQ)?主要原因是由于在高并发环境下,由于来不及同步处理,请求往往会发生堵塞,比如说,大量的insert,update之类的请求同时到达mysql,直接导致无数的行锁表锁,甚至最后请求会堆积过多,从而触发too many connections错误。通过使用消息队列,我们可以异步处理请求,从而缓解系统的压力。
2017-02-09 17:48:34 197
原创 Springmvc 工作原理
简析springmvc 工作原理 1.启动服务器,根据web.xml的配置加载前端控制器(也称总控制器) DispatcherServlet 。在加载时会完成一系列的初始化动作。 2.根据servlet的映射请求(上面的HelloWorld实例中针对.do 请求),并参照“控制器配置文件”(即springMVC-servlet.xml 这样的配置文件),把具体的请求分发给特定的
2017-02-09 17:35:28 160
原创 Oracle灾备方案
Oracle灾备:一般方法:Data Guard、GoldenGate和CDP角度。 Oracle Data Guard:提供了一种数据同步技术来实现Oracle的高可用性、增强的性能以及自动的故障转移方案,为主数据库创建和维护多个备用数据库,主数据库的改变能够自动将信息从主数据库传送到备用数据库,并保证在此过程中没有信息的丢失。Data Guard有两种类型的备用数据库:物理备用和逻辑备
2017-02-09 17:16:13 5735
oracle修改字符集
2018-10-11
redis配置文件
2018-01-11
( 数字图像处理与模式识别
2013-07-07
joffice文档
2013-04-14
VC chat.cpp
2013-04-14
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人