03 2017 档案

摘要:一、概述 什么是jvm调优呢?jvm调优就是根据gc日志分析jvm内存分配、回收的情况来调整各区域内存比例或者gc回收的策略;更深一层就是根据dump出来的内存结构和线程栈来分析代码中不合理的地方给予改进。eclipse优化主要涉及的是前者,通过gc日志来分析。本文主要是通过分析eclipse gc 阅读全文
posted @ 2017-03-31 20:41 平凡希 阅读(2115) 评论(0) 推荐(0) 编辑
摘要:一、为什么需要垃圾回收 如果不进行垃圾回收,内存迟早都会被消耗空,因为我们在不断的分配内存空间而不进行回收。除非内存无限大,我们可以任性的分配而不回收,但是事实并非如此。所以,垃圾回收是必须的。 二、哪些内存需要回收? 哪些内存需要回收是垃圾回收机制第一个要考虑的问题,所谓“要回收的垃圾”无非就是那 阅读全文
posted @ 2017-03-30 21:20 平凡希 阅读(119407) 评论(9) 推荐(42) 编辑
摘要:一、什么是查询缓存 mybatis提供查询缓存,用于减轻数据压力,提高数据库性能。mybaits提供一级缓存和二级缓存。 1、一级缓存是sqlSession级别的缓存。在操作数据库时需要构造sqlSession对象,在对象中有一个数据结构(HashMap),用于存储缓存数据。不同的sqlSessio 阅读全文
posted @ 2017-03-30 16:07 平凡希 阅读(1843) 评论(0) 推荐(1) 编辑
摘要:一、什么是延迟加载 resultMap可以实现高级映射(使用association、collection实现一对一及一对多映射),association、collection具备延迟加载功能。 需求:如果查询订单并且关联查询用户信息。如果先查询订单信息即可满足要求,当我们需要查询用户信息时再查询用户 阅读全文
posted @ 2017-03-29 15:33 平凡希 阅读(1879) 评论(0) 推荐(2) 编辑
摘要:一、返回select结果集 1、创建存储过程 2、存储过程调用 3、在UserMapper.java中添加接口方法 4、在UserMapper.xml中添加如下配置项: 说明:这里使用两种方式调用存储过程,两种方式的区别主要在于参数的使用方式上,第一种方式使用parameterType,第二种方式使 阅读全文
posted @ 2017-03-28 15:54 平凡希 阅读(6856) 评论(1) 推荐(4) 编辑
摘要:一、选择器 选择器提供选择执行已经就绪的任务的能力,这使得多元I/O成为了可能,就绪执行和多元选择使得单线程能够有效地同时管理多个I/O通道。 某种程度上来说,理解选择器比理解缓冲区和通道类更困难一些和复杂一些,因为涉及了三个主要的类,它们都会同时参与到这整个过程中,这里先将选择器的执行分解为几条细 阅读全文
posted @ 2017-03-23 13:35 平凡希 阅读(1569) 评论(1) 推荐(0) 编辑
摘要:1、synchronized原理 在java中,每一个对象有且仅有一个同步锁。这也意味着,同步锁是依赖于对象而存在。当我们调用某对象的synchronized方法时,就获取了该对象的同步锁。例如,synchronized(obj)就获取了“obj这个对象”的同步锁。不同线程对同步锁的访问是互斥的。也 阅读全文
posted @ 2017-03-23 00:18 平凡希 阅读(2033) 评论(1) 推荐(1) 编辑
摘要:一、为什么要分代 分代的垃圾回收策略,是基于这样一个事实:不同的对象的生命周期是不一样的。因此,不同生命周期的对象可以采取不同的收集方式,以便提高回收效率。 在Java程序运行的过程中,会产生大量的对象,其中有些对象是与业务信息相关,比如Http请求中的Session对象、线程、Socket连接,这 阅读全文
posted @ 2017-03-22 21:25 平凡希 阅读(1984) 评论(0) 推荐(1) 编辑
摘要:一、概念 NIO即New IO,这个库是在JDK1.4中才引入的。NIO和IO有相同的作用和目的,但实现方式不同,NIO主要用到的是块,所以NIO的效率要比IO高很多。在Java API中提供了两套NIO,一套是针对标准输入输出NIO,另一套就是网络编程NIO。 二、NIO和IO的主要区别 下表总结 阅读全文
posted @ 2017-03-21 13:17 平凡希 阅读(136180) 评论(8) 推荐(17) 编辑
摘要:前言 对象的内存分配,往大的方向上讲,就是在堆上分配,少数情况下也可能会直接分配在老年代中,分配的规则并不是百分之百固定的,其细节决定于当前使用的是哪种垃圾收集器组合,当然还有虚拟机中与内存相关的参数。垃圾收集器组合一般就是Serial+Serial Old和Parallel+Serial Old, 阅读全文
posted @ 2017-03-20 21:33 平凡希 阅读(5615) 评论(0) 推荐(2) 编辑
摘要:一、通道是什么 通道式(Channel)是java.nio的第二个主要创新。通道既不是一个扩展也不是一项增强,而是全新的、极好的Java I/O示例,提供与I/O服务的直接连接。Channel用于在字节缓冲区和位于通道另一侧的实体(通常是一个文件或套接字)之间有效地传输数据。 通常情况下,通道与操作 阅读全文
posted @ 2017-03-16 15:19 平凡希 阅读(1226) 评论(0) 推荐(0) 编辑
摘要:一、什么是缓冲区 一个缓冲区对象是固定数量的数据的容器,其作用是一个存储器,或者分段运输区,在这里数据可被存储并在之后用于检索。缓冲区像前篇文章讨论的那样被写满和释放,对于每个非布尔原始数据类型都有一个缓冲区类,尽管缓冲区作用于它们存储的原始数据类型,但缓冲区十分倾向于处理字节,非字节缓冲区可以在后 阅读全文
posted @ 2017-03-15 13:16 平凡希 阅读(1263) 评论(0) 推荐(1) 编辑
摘要:在上一篇中,我们介绍了NIO中的两个核心对象:缓冲区和通道,在谈到缓冲区时,我们说缓冲区对象本质上是一个数组,但它其实是一个特殊的数组,缓冲区对象内置了一些机制,能够跟踪和记录缓冲区的状态变化情况,如果我们使用get()方法从缓冲区获取数据或者使用put()方法把数据写入缓冲区,都会引起缓冲区状态的 阅读全文
posted @ 2017-03-15 09:28 平凡希 阅读(1750) 评论(1) 推荐(0) 编辑
摘要:一、概述 从JDK1.4开始,Java提供了一系列改进的输入/输出处理的新特性,被统称为NIO(即New I/O)。新增了许多用于处理输入输出的类,这些类都被放在java.nio包及子包下,并且对原java.io包中的很多类进行改写,新增了满足NIO的功能。NIO采用内存映射文件的方式来处理输入输出 阅读全文
posted @ 2017-03-13 10:58 平凡希 阅读(3851) 评论(0) 推荐(1) 编辑
摘要:一、订单商品数据模型 1、数据库执行脚本 创建数据库表代码: 测试数据: 2、数据模型分析思路 (1).每张表记录的数据内容:分模块对每张表记录的内容进行熟悉,相当于你学习系统需求(功能)的过程; (2).每张表重要的字段设置:非空字段、外键字段; (3).数据库级别表与表之间的关系:外键关系; ( 阅读全文
posted @ 2017-03-12 17:57 平凡希 阅读(2166) 评论(0) 推荐(1) 编辑
摘要:一、什么是同步?什么是异步? 同步和异步的概念出来已经很久了,网上有关同步和异步的说法也有很多。以下是我个人的理解: 同步就是:如果有多个任务或者事件要发生,这些任务或者事件必须逐个地进行,一个事件或者任务的执行会导致整个流程的暂时等待,这些事件没有办法并发地执行; 异步就是:如果有多个任务或者事件 阅读全文
posted @ 2017-03-10 14:42 平凡希 阅读(4438) 评论(3) 推荐(7) 编辑
摘要:一、多线程的同步 1、为什么要引入同步机制 在多线程环境中,可能会有两个甚至更多的线程试图同时访问一个有限的资源。必须对这种潜在资源冲突进行预防。 解决方法:在线程使用一个资源时为其加锁即可。 访问资源的第一个线程为其加上锁以后,其他线程便不能再使用那个资源,除非被解锁。 2、程序实例 用一个取钱的 阅读全文
posted @ 2017-03-09 22:46 平凡希 阅读(2857) 评论(1) 推荐(0) 编辑
摘要:一、字符流和字节流的区别 拿一下上一篇文章的例子: 第17行"out.close()"注释掉可以看一下效果,"writer.txt"一定是空的,控制台上输出的是"文件中无数据",说明一下原因。 字符流和字节流非常相似,但也有区别,从网上找了一张图: 从图上看,字符流和字节流最大的区别在于,字节流在操 阅读全文
posted @ 2017-03-07 11:30 平凡希 阅读(6890) 评论(1) 推荐(0) 编辑
摘要:一、字符流 字节流提供了处理任何类型输入/输出操作的功能(因为对于计算机而言,一切都是0和1,只需把数据以字节形式表示就够了),但它们不可以直接操作Unicode字符,因为一个Unicode字符占用2个字节,而字节流一次只能操作一个字节。既然Java的口号就是"一次编写、处处运行",那么包含直接的字 阅读全文
posted @ 2017-03-06 13:40 平凡希 阅读(1538) 评论(0) 推荐(0) 编辑
摘要:前言:关于多级别菜单栏或者权限系统中部门上下级的树形遍历,oracle中有connect by来实现,mysql没有这样的便捷途径,所以MySQL遍历数据表是我们经常会遇到的头痛问题,下面通过存储过程来实现。 1、建立测试表和数据: 2、用临时表和递归过程实现树的遍历(mysql的UDF不能递归调用 阅读全文
posted @ 2017-03-05 20:50 平凡希 阅读(11774) 评论(0) 推荐(0) 编辑
摘要:一、流类 Java的流式输入/输出是建立在四个抽象类的基础上的:InputStream、OutputStream、Reader、Writer。它们用来创建具体的流式子类。尽管程序通过具体子类执行输入/输出操作,但顶层类定义了所有流类的基本通用功能。 InputStream和OutputStream为 阅读全文
posted @ 2017-03-03 13:27 平凡希 阅读(1835) 评论(3) 推荐(0) 编辑
摘要:一、RandomAccessFile RandomAccessFile类可以说是Java语言中功能最为丰富的文件访问类,它提供了众多的文件访问方法。RandomAccessFile类支持"随机访问"方式,可以跳转到文件的任意位置处读写数据。要访问一个文件的时候,不想把文件从头读到尾,而是希望像访问一 阅读全文
posted @ 2017-03-02 11:31 平凡希 阅读(2836) 评论(0) 推荐(3) 编辑
摘要:一、存储过程基本用法 1、创建存储过程 MySQL中,创建存储过程的基本形式如下: 其中参数列表的形式如下: 其中in表示输入参数,out表示输出参数,inout表示既可以输入也可以输出;param_name表示参数名称;type表示参数的类型,该类型可以是MYSQL数据库中的任意类型。 例子:下面 阅读全文
posted @ 2017-03-01 13:31 平凡希 阅读(17933) 评论(1) 推荐(3) 编辑
摘要:一、IO 大多数的应用程序都要与外部设备进行数据交换,最常见的外部设备包含磁盘和网络。IO就是指应用程序对这些设备的数据输入与输出,Java语言定义了许多类专门负责各种方式的输入、输出,这些类都被放在java.io包中。 二、File类 File类是IO包中唯一代表磁盘文件本身的对象,File类定义 阅读全文
posted @ 2017-03-01 10:18 平凡希 阅读(2914) 评论(0) 推荐(2) 编辑