Java 自修-进阶
文章平均质量分 57
稚枭天卓
manu
展开
-
Minor GC、Major GC和Full GC之间的区别
Minor GC从年轻代空间(包括 Eden 和 Survivor 区域)回收内存被称为 Minor GC。这一定义既清晰又易于理解。但是,当发生Minor GC事件的时候,有一些有趣的地方需要注意到:当 JVM 无法为一个新的对象分配空间时会触发 Minor GC,比如当 Eden 区满了。所以分配率越高,越频繁执行 Minor GC。内存池被填满的时候,其中的内容全部会被复制,指针...原创 2019-09-17 23:18:50 · 164 阅读 · 0 评论 -
JDBC 实现 数据库的增删改查
没有 JDBC和ODBC 之前,访问不同数据库需要编写相应的数据库访问程序,ODBC 使得访问链接数据库的接口统一,访问不同数据库的 API 一致。JDBC 是 Java Database Connector,JDBC API 主要供开发人员使用,JDBC Driver API 主要供底层 数据库 开发人员使用,用于设计与具体数据库的接口。JDBC 实现的流程加载驱动 —— 加载数据库原创 2016-08-02 10:22:29 · 975 阅读 · 0 评论 -
JDBC 实现 事务管理
为了实现数据库数据的安全性,数据库有了事务管理机制。事务管理具有原子性 —— 具有相互关联的一系列操作,要么一次全部执行成功,要么执行失败,数据回滚;一致性 —— 数据库在事务执行前后,数据库都应处于相同的状态;持久性 —— 一旦事务提交,事务对于数据库的变更是持久的;隔离性 —— 同一数据库各个事务之间独立执行,并不互相串扰。现使用如下代码实现对数据库的事务的表述原创 2016-08-02 11:44:30 · 2026 阅读 · 0 评论 -
Throwable、Error、Exception、RuntimeException 初阶
相关概念的练习与区别 1.Throwable 类是 Java 语言中所有错误或异常的超类。它的两个子类是Error和Exception; 2.Error 是 Throwable 的子类,用于指示合理的应用程序不应该试图捕获的严重问题。大多数这样的错误都是异常条件。虽然 ThreadDeath 错误是一个“正规”的条件,但它也是 Error 的子类,因为大多数应用程序都不应该试图捕获它。在执行该方原创 2017-06-05 14:01:37 · 413 阅读 · 0 评论 -
使用 Comparable 接口实现对象的属性排序
1.什么是Comparable接口 此接口强行对实现它的每个类的对象进行整体排序。此排序被称为该类的自然排序 ,类的 compareTo 方法被称为它的自然比较方法 。实现此接口的对象列表(和数组)可以通过 Collections.sort (和 Arrays.sort )进行自动排序。 实现此接口的对象可以用作有序映射表中的键或有序集合中的元素,无需指定比较器。 强烈推荐(虽然不是必需的)原创 2017-05-18 21:49:37 · 1244 阅读 · 0 评论 -
Java 中 String 之 compareTo()的程序源码浅析
JDK 源码 public int compareTo(String anotherString) { //this -- s1 -- "hello" //anotherString -- s2 -- "hel" int len1 = value.length; //this.value.length--s1.toCharArray().leng原创 2017-05-18 21:31:54 · 531 阅读 · 0 评论 -
Java 中的单例模式
概念 Java中单例模式是一种常见的设计模式,单例模式的写法有好几种,这里主要介绍三种:懒汉式单例、饿汉式单例、登记式单例。 单例模式有以下特点: 1、单例类只能有一个实例。 2、单例类必须自己创建自己的唯一实例。 3、单例类必须给所有其他对象提供这一实例。 单例模式确保某个类只有一个实例,而且自行实例化并向整个系统提供这个实例。在计算机系统中,线程池、缓存、日志原创 2017-05-09 16:53:19 · 469 阅读 · 0 评论 -
Java 集合 之 Queue 和 Stack
Java Stack 类 栈是Vector的一个子类,它实现了一个标准的后进先出的栈。 堆栈只定义了默认构造函数,用来创建一个空栈。 堆栈除了包括由Vector定义的所有方法,也定义了自己的一些方法。 Stack() 除了由Vector定义的所有方法,自己也定义了一些方法: 序号 方法描述 1。boolean empty() 测试堆栈是否为空。 2。Object peek( )原创 2017-05-16 22:02:17 · 785 阅读 · 0 评论 -
Java Map 常用操作
常用操作说明 void clear() 从此映射中移除所有映射关系(可选操作)。 boolean containsKey(Object key) 如果此映射包含指定键的映射关系,则返回 true。 boolean containsValue(Object value) 如果此映射将一个或多个键映射到指定值,则返回 true。 Set> entr原创 2017-05-16 22:09:02 · 3483 阅读 · 1 评论 -
Java线程安全 之 静态变量、实例变量、局部变量
静态变量:线程非安全。 静态变量即类变量,位于方法区,为所有对象共享,共享一份内存,一旦静态变量被修改,其他对象均对修改可见,故线程非安全。 实例变量:单例模式(只有一个对象实例存在)线程非安全,非单例线程安全。 实例变量为对象实例私有,在虚拟机的堆中分配,若在系统中只存在一个此对象的实例,在多线程环境下,“犹如”静态变量那样,被某个线程修改后,其他线程对修改均可见,故线程非安全;如果每个线程原创 2017-04-05 21:59:31 · 567 阅读 · 0 评论 -
Java 类方法与其线程安全
类方法又叫静态方法, 实例方法又叫非静态方法。 类方法可以直接通过类名调用,实例方法必需先初始化类的实例,然后通过类的实例才能调用。原创 2017-04-05 22:39:32 · 856 阅读 · 0 评论 -
JAVA 之 file 的 getPath、getAbsolutePath和getCanonicalPath的不同
getPath():返回的是定义时的路径,可能是相对路径,也可能是绝对路径,这个取决于定义时用的是相对路径还是绝对路径。如果定义时用的是绝对路径,那么使用getPath()返回的结果跟用getAbsolutePath()返回的结果一样getAbsolutePath():返回的是定义时的路径对应的相对路径,但不会处理“.”和“..”的情况getCanonicalPath():返回原创 2017-06-01 16:41:03 · 563 阅读 · 0 评论 -
Spring+Hibernate下配置Hibernate二级缓存EhCache
什么样的数据适合存放到第二级缓存中? 1 很少被修改的数据 2 不是很重要的数据,允许出现偶尔并发的数据 3 不会被并发访问的数据 4 参考数据,指的是供应用参考的常量数据,它的实例数目有限,它的实例会被许多其他类的实例引用,实例极少或者从来不会被修改。 假设类A为持久化对象,对应表为tableA,这里没有考虑A和其他表关联的情况。在spring下配置使用二级缓存:<property nam原创 2017-06-05 16:04:32 · 888 阅读 · 0 评论 -
JAVA 之 使用 POI 导出 Excel (一)
一个 Excel 文件对应于一个 workbook(HSSFWorkbook),一个 workbook 可以有多个 sheet(HSSFSheet)组成,一个 sheet 是由多个 row(HSSFRow)组成,一个 row 是由多个 cell(HSSFCell)组成。基本导出操作步骤: 1、用HSSFWorkbook打开或者创建“Excel文件对象” 2、用HSSFWorkbook对象返回或者原创 2017-05-31 21:56:31 · 479 阅读 · 0 评论 -
synchronized(从偏向锁到重量级锁)
接触过线程安全的同学想必都使用过synchronized这个关键字,在java同步代码快中,synchronized的使用方式无非有两个:通过对一个对象进行加锁来实现同步,如下面代码。synchronized(lockObject){ //代码}对一个方法进行synchronized声明,进而对一个方法进行加锁来实现同步。如下面代码public synchorniz...原创 2019-09-01 23:14:39 · 159 阅读 · 0 评论 -
最大连续子串
问题描述:给定一个由数字组成的数组,求出和最大的子数组求解方法:1.暴力法选取所有连续和的可能性,O(n^2)2.分析法当遍历到第i个元素时,判断在它前面的连续子序列和是否大于0,如果大于0,则以位置i结尾的最大连续子序列和为元素i和前门的连续子序列和相加;否则,则以位置i结尾的最大连续子序列和为元素i。3.动态规划记s[i]是以a[i]结尾的最大子数组和s[i...原创 2019-09-01 11:24:18 · 876 阅读 · 0 评论 -
线程分配不足会导致什么问题
啥也不说,直接上代码package offer_0831;import java.util.concurrent.*;public class ThreadOverFlow { public static void main(String[] args) { ExecutorService es = new ThreadPoolExecutor(2, 2, ...原创 2019-09-01 09:16:33 · 733 阅读 · 0 评论 -
json 字符串转 JSONObject 和 JSONArray 以及取值
importnet.sf.json.JSONArray;importnet.sf.json.JSONObject;publicclassJsonTest{publicstaticvoidmain(String[]args){StringjoStr="{name:\"张三\",age:\"20\"}";...原创 2019-08-28 15:14:24 · 425 阅读 · 0 评论 -
Jsckson 实现 java 对象与 JSONObject 和 JSONArray 互转
在项目开发过程中,当客户端与服务器响应时,数据交互是必不可少的。然而通过Json实现数据交互成为我们开发中的一部分,进而Jackson为我们的Json转化提供了很好的机制。下面我将利用实例总结如何使用jackson。一.准备 如果你需要使用jackson,你必须得导入相应的架包,有如下三个包jackson-annotations;jackson-core;jackson-da...原创 2019-08-28 14:57:37 · 851 阅读 · 0 评论 -
分析java应用cpu使用率飙升
疑惑一个 while 死循环,会不会引起 CPU 使用率飚升? 频繁 Young GC 会不会引起 CPU 使用率飚升? 线程数很高的应用,CPU 使用率一定高么? CPU 使用率高的应用,线程数一定高么? BLOCKED 状态的线程会不会引起 CPU 使用率飚升? 分时操作系统 CPU 是耗费 us ? 还是耗费 sy ?思考1、CPU 使用率怎么计算?CPU% = 1 ...原创 2019-08-20 21:23:10 · 517 阅读 · 0 评论 -
使用@Order注解调整配置类加载顺序
1 、@Order1、Spring 4.2 利用@Order控制配置类的加载顺序,2、Spring在加载Bean的时候,有用到order注解。3、通过@Order指定执行顺序,值越小,越先执行4、@Order注解常用于定义的AOP先于事物执行2 、新建Springboot项目来测试(1)、引入依赖 <parent>...原创 2019-08-20 15:36:29 · 6166 阅读 · 0 评论 -
BigDecimal 实现末尾去 0
BigDecimal 原生提供了 stripTrailingZeros 方法可以实现去掉末尾的 0,然后使用 toPlainString 可以输出数值,注意这里如果使用 toString() 会变成科学计数法输出使用实例money.stripTrailingZeros().toPlainString()原创 2017-09-22 14:35:51 · 5379 阅读 · 0 评论 -
定时任务 quartz CronExpression 表达式
一个cron表达式有至少6个(也可能7个)有空格分隔的时间元素。按顺序依次为:1.秒(0~59)2.分钟(0~59)3.小时(0~23)4.天(月)(0~31,但是你需要考虑你月的天数)5.月(0~11)6.天(星期)(1~7 1=SUN 或 SUN,MON,TUE,WED,THU,FRI,SAT)7.年份(1970-2099)其中每个元素可以是一个值(如6),一个连续区间(9-12),一原创 2017-06-23 20:59:45 · 549 阅读 · 0 评论 -
JAVA 之 使用 POI 导出 Excel (二)
导出列表,主要分为两个步骤,(1)下载到服务器端;(2)从服务器端将文件 down 到 浏览器端;步骤(1)已经在 JAVA 之 使用 POI 导出 Excel (一) 中给出,详见 http://blog.csdn.net/u013630349/article/details/72824419。 其中需要注意的点有如下几个 1. 在服务器端检索生成代码文件夹 out ; 2. 创建和检测文原创 2017-06-07 21:07:29 · 373 阅读 · 0 评论 -
Java多线程 之 类锁与对象锁
对象锁 java的所有对象都含有1个互斥锁,这个锁由JVM自动获取和释放。线程进入synchronized方法的时候获取该对象的锁,当然如果已经有线程获取了这个对象的锁,那么当前线程会等待;synchronized方法正常返回或者抛异常而终止,JVM会自动释放对象锁。这里也体现了用synchronized来加锁的1个好处,方法抛异常的时候,锁仍然可以由JVM来自动释放。 类锁 对象锁是用来控制原创 2017-04-06 00:20:16 · 595 阅读 · 0 评论 -
HashMap 详解
http://alex09.iteye.com/blog/539545/ HashMap 源码详解 public V put(K key, V value) { // 如果 key 为 null,调用 putForNullKey 方法进行处理 if (key == null) return putForNullKey(value); //原创 2017-04-03 20:36:23 · 349 阅读 · 0 评论 -
RMI 之 简单的 HelloWorld 实现(一)
RMI全称是Remote Method Invocation-远程方法调用,Java RMI在JDK1.1中实现的,其威力就体现在它强大的开发分布式网络应用的能力上,是纯Java的网络分布式应用系统的核心解决方案之一。其实它可以被看作是RPC的Java版本。但是传统RPC并不能很好地应用于分布式对象系统。而Java RMI 则支持存储于不同地址空间的程序级对象之间彼此进行通信,实现远程对象之间的无原创 2016-07-18 11:53:30 · 1060 阅读 · 0 评论 -
Java 入门 多线程 之 多线程返回用户ID(二)
产生随机码 数据栈package synPack;import java.util.ArrayList;import java.util.Calendar;import java.util.Date;import java.util.List;import java.util.Stack;import java.util.concurrent.Callable;publi原创 2016-07-13 21:39:25 · 635 阅读 · 0 评论 -
Java 入门 多线程 之 有返回值的线程(一)
在 Java5 之前,线程是没有返回值的,常常为了“有”返回值,破费周折,而且代码很不好写。或者干脆绕过这道坎,走别的路了。现在Java终于有可返回值的任务(也可以叫做线程)了。可返回值的任务必须实现Callable接口,类似的,无返回值的任务必须Runnable接口。执行Callable任务后,可以获取一个Future的对象,在该对象上调用get就可以获取到C原创 2016-07-13 21:32:45 · 532 阅读 · 0 评论 -
Java 之 Date 获取 年月日时分秒
package com.util; import java.text.DateFormat;import java.util.Calendar;import java.util.Date;public class Test { public void getTimeByDate(){ Date date = new Date();原创 2016-07-12 15:48:15 · 3532 阅读 · 0 评论 -
注解 “@Deprecated” 的含义与作用
意思是说此方法已过时,过时的原因就是有新的API的类替代了次方法。 这个被划去的方法仍然是可以正常使用的,就是一个提示而已。Java内在的File类中有如下方法@Deprecatedpublic URL toURL() throws MalformedURLException {return new URL("file", "", slashify(getAbs原创 2016-07-12 15:03:14 · 57989 阅读 · 1 评论 -
Java 进阶 之 序列化
Java 提供了一种对象序列化的机制,该机制中,一个对象可以被表示为一个字节序列,该字节序列包括该对象的数据、有关对象的类型的信息和存储在对象中数据的类型。将序列化对象写入文件之后,可以从文件中读取出来,并且对它进行反序列化,也就是说,对象的类型信息、对象的数据,还有对象中的数据类型可以用来在内存中新建对象。整个过程都是Java虚拟机(JVM)独立的,也就是说,在一个平台上序列化的对象可以原创 2016-07-21 21:35:58 · 469 阅读 · 0 评论 -
POJO 与 JavaBean 的区别
POJO(Plain Ordinary Java Object)简单的Java对象,实际就是普通JavaBeans,是为了避免和EJB混淆所创造的简称。POJO 和 JavaBean 是我们常见的两个关键字,一般容易混淆,POJO 全称是 Plain Ordinary Java Object / Pure Old Java Object,中文可以翻译成:普通Java类,具有一部分 ge原创 2016-06-28 20:59:04 · 526 阅读 · 0 评论 -
Java反射机制 初步(二)
一、什么是反射机制 简单的来说,反射机制指的是程序在运行时能够获取自身的信息。在java中,只要给定类的名字, 那么就可以通过反射机制来获得类的所有信息。二、哪里用到反射机制 有些时候,我们用过一些知识,但是并不知道它的专业术语是什么,在刚刚学jdbc时用过一行代码, Class.forName("com.mysql.jdbc.Drive原创 2016-05-30 20:04:21 · 502 阅读 · 0 评论 -
Java 进阶 之 并发编程 Synchronized
虽然多线程编程极大地提高了效率,但是也会带来一定的隐患。比如说两个线程同时往一个数据库表中插入不重复的数据,就可能会导致数据库中插入了相同的数据。今天我们就来一起讨论下线程安全问题,以及Java中提供了什么机制来解决线程安全问题。 以下是本文的目录大纲: 一.什么时候会出现线程安全问题? 二.如何解决线程安全问题? 三.synchronized同步方法或者同步块 若有原创 2016-03-21 20:52:08 · 602 阅读 · 1 评论 -
Java 进阶 之 并发编程 Lock
Java并发编程:Lock 在上一篇文章中我们讲到了如何使用关键字synchronized来实现同步访问。本文我们继续来探讨这个问题,从Java 5之后,在java.util.concurrent.locks包下提供了另外一种方式来实现同步访问,那就是Lock。 也许有朋友会问,既然都可以通过synchronized来实现同步访问了,那么为什么还需要提供Lock?这个问题将在下原创 2016-03-21 20:58:15 · 608 阅读 · 1 评论 -
RMI 之 简单的 HelloWorld 实现(三)
客户端代码package clientPack;import java.rmi.Naming;import serverack.IHello;public class Hello_RMI_Client { public static void main(String[] args) { try { IHello hello = (原创 2016-07-18 11:55:08 · 654 阅读 · 0 评论 -
RMI 之 简单的 HelloWorld 实现(二)
一个正常工作的RMI系统由下面几个部分组成:·远程服务的接口定义 ·远程服务接口的具体实现 ·桩(Stub)和框架(Skeleton)文件·一个运行远程服务的服务器 ·一个RMI命名服务,它允许客户端去发现这个远程服务·类文件的提供者(一个HTTP或者FTP服务器)·一个需要这个远程服务的客户端程序 RMI(远程方法调用)的优点原创 2016-07-18 11:54:59 · 764 阅读 · 0 评论 -
RMI 与 Socket 的比较与浅析
一般来说,基于 CS(client-server) 软件架构的开发技术有很多种。比较常用的有:基于socket的网络编程、RPC、基于Java技术的RMI(当然C#也有类似技术)、CORBA等。在这里我们只是对基于socket的网络编程与RMI作个对比,有助于我们了解它们各自的应用领域,帮助我们在面对一个具体问题的时候选用适合的技术。另外,本文所做的讨论可以认为是脱离了语言层面的东西,只是对技术的原创 2016-07-21 00:14:52 · 852 阅读 · 0 评论 -
Java Servlet 配置文件 web.xml 详解
通过修改web.xml文件进行WEB的地址映射,实现servlet的外部访问。代码如下: simple//我们定义的servlet应用名字 cn.mldn.lxh.servlet.SimpleServlet //我们定义的servlet应用名字对应的具体servlet文件 //地址映射 simple //我们定义的serv原创 2016-06-20 18:33:53 · 865 阅读 · 0 评论