javaSE
javaSE部分的学习
evan_qb
冰冻三尺,非一日之寒
展开
-
JAVA 内存泄漏详解
Java的一个重要特性就是通过垃圾收集器(GC)自动管理内存的回收,而不需要程序员自己来释放内存。理论上Java中所有不会再被利用的对象所占用的内存,都可以被GC回收,但是Java也存在内存泄露,但它的表现与C++不同。 JAVA 中的内存管理 要了解Java中的内存泄露,首先就得知道Java中的内存是如何管理的。 在Java程序中,我们通常使用转载 2017-09-18 19:19:06 · 403 阅读 · 0 评论 -
【多线程】多线程Executors的API介绍
首先,讲讲什么是线程池?照笔者的简单理解,其实就是一组线程实时处理休眠状态,等待唤醒执行。那么为什么要有线程池这个东西呢?可以从以下几个方面来考虑:其一、减少在创建和销毁线程上所花的时间以及系统资源的开销 。其二、2将当前任务与主线程隔离,能实现和主线程的异步执行,特别是很多可以分开重复执行的任务。但是,一味的开线程也不一定能带来性能上的,线池休眠也是要占用一定的内存空间,所以合理的选择线程池的大...转载 2018-04-03 10:01:06 · 337 阅读 · 0 评论 -
【多线程】几种不同的ExecutorService线程池对象
1.newCachedThreadPool() -缓存型池子,先查看池中有没有以前建立的线程,如果有,就reuse.如果没有,就建一个新的线程加入池中-缓存型池子通常用于执行一些生存期很短的异步型任务 因此在一些面向连接的daemon型SERVER中用得不多。-能reuse的线程,必须是timeout IDLE内的池中线程,缺省timeout是60s,超过这个IDLE时长,线程实例将被终止及移出池...转载 2018-04-03 10:16:37 · 334 阅读 · 0 评论 -
【javaSE】获取指定时间对应的毫秒数
/** * 获取指定时间对应的毫秒数 * @param time "HH:mm:ss" * @return */public static long getTimeMillis(String time){ SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm"); SimpleDateFo...原创 2018-04-03 17:11:04 · 1685 阅读 · 0 评论 -
【多线程】线程池中的一些常见方法
1、submit() 将线程放入线程池中,除了使用execute,也可以使用submit,它们两个的区别是一个使用有返回值,一个没有返回值。submit的方法很适应于生产者-消费者模式,通过和Future结合一起使用,可以起到如果线程没有返回结果,就阻塞当前线程等待线程 池结果返回。它主要有三种方法:一般用第一种比较多如下实例。注意,submit中的线程要实现接口Callablepac...转载 2018-04-03 17:35:38 · 367 阅读 · 0 评论 -
【多线程】多线程技术原理
首先是其继承关系如下:通过观察上面四种线程池的源码:如:newFixedThreadPool[java] view plain copypublic static ExecutorService newFixedThreadPool(int nThreads) { return new ThreadPoolExecutor(nThreads, nThreads, ...转载 2018-04-03 22:34:30 · 369 阅读 · 0 评论 -
【javaSE】jdk8之深入理解 stream --lamdba
随着学习的深入,jdk8的改变和强大远超出我的理解。由lamdba表达式引起的再一次思考,先贴出来这一块的代码 List<CartDTO> cartDTOList = orderDTO.getOrderDetailList().stream().map((e) -> new CartDTO(e.getProductId(),e.getPr...转载 2018-07-17 14:40:33 · 455 阅读 · 0 评论 -
【javaSE】使用命令方式将目录打成jar包
首先我们进入文件路径找到文件:接下来我们执行命令:jar -cvf phone.jar ./cn这样就完成了打包原创 2017-12-27 19:58:08 · 1171 阅读 · 0 评论 -
【javaSE】使用jkd8 Map新特性统计数组中每个数字的个数
Map.getOrDefault(Object, V)Map的新方法getOrDefault(Object,V)允许调用者在代码语句中规定获得在map中符合提供的键的值,否则在没有找到提供的键的匹配项的时候返回一个“默认值”。使用一串测试数组:{3,1,4,1,5}代码如下:public static Map<Integer,Integer> countNum(i...原创 2018-09-05 09:26:49 · 734 阅读 · 0 评论 -
【工具类】将姓名最后一位变成*
/** * 将姓名最后一位变成* * @param customerName * @return */public static String hiddenName(String customerName) { return StringUtils.isEmpty(customerName) ? "" :customerName.replace(customerName.charAt...原创 2018-09-26 09:57:38 · 697 阅读 · 0 评论 -
Random函数的安全性问题与SecureRandom
电脑是一种具有确定性的机器, 因此不可能产生真正的随机性。 伪随机数生成器 (PRNG) 近似于随机算法, 始于一个能计算后续数值的种子。PRNG 包括两种类型: 统计学的 PRNG 和密码学的 PRNG。 统计学的 PRNG 提供很多有用的统计属性, 但其输出结果很容易预测, 因此容易复制数值流。 在安全性所依赖的生成值不可预测的情况下, 这种类型并不适用。 密码学的 PRNG 生成的输出结...转载 2018-11-09 17:32:37 · 2393 阅读 · 0 评论 -
【多线程】线程数据传递
在传统的同步开发模式下,当我们调用一个函数时,通过这个函数的参数将数据传入,并通过这个函数的返回值来返回最终的计算结果。但在多线程的异步开发模式下,数据的传递和返回和同步开发模式有很大的区别。由于线程的运行和结束是不可预料的,因此,在传递和返回数据时就无法象函数一样通过函数参数和return语句来返回数据。9.1、通过构造方法传递数据 在创建线程时,必须要建立一个Thread类的或其子类的实例。因...转载 2018-04-03 08:39:48 · 829 阅读 · 0 评论 -
【javaSE】随机产生验证码
/** * 产生len位验证码 * @return */public static String getRandomStr(int len){ StringBuffer code = new StringBuffer(); String letters = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";...原创 2018-03-22 12:12:01 · 199 阅读 · 0 评论 -
【javaSE】常见对文件操作的工具类
读取db.properties文件/** * 读取properties配置文件 * @return */public static String readProperties(String fileName,String key){ String value = ""; InputStream in = null; try { Properties props = new Pro...原创 2018-03-22 10:36:29 · 151 阅读 · 0 评论 -
java复制对象
转自: http://blog.csdn.net/tounaobun/article/details/8491392假如说你想复制一个简单变量。很简单:[java] view plain copyint apples = 5; int pears = apples; 不仅仅是int类型,其它转载 2017-09-18 17:23:19 · 457 阅读 · 0 评论 -
批处理文件
bat处理文件:bat处理文件就是可以一次性执行多个命令的文件在bat文件中写的命令就相当于在dos窗口中写命令一样 如何编写bat处理文件呢?编写一个自定义的文本文件,然后把后缀名改成bat即可然后把你所要执行的命令写在bat处理文件中即可 bat处理文件常用的命令: Echo 向控制台输出指定的内容原创 2017-09-18 16:29:37 · 610 阅读 · 0 评论 -
对两个变量的值进行互换的多种方法
对两个变量的值进行互换的多种方法例子:int x=3;int y=6;方式一:(利用第三个变量进行交换)int z;z=x;x=y;y=z;方式二:(不能使用第三个变量,利用加减法运算)x=x+y;y=x-y;x=x-y;方式三:(不使用第三变量,利用异或运算)原创 2017-07-14 08:18:11 · 2241 阅读 · 0 评论 -
【javaSE】java中的native关键字
java native关键字 一. 什么是Native Method 简单地讲,一个Native Method就是一个java调用非java代码的接口。一个Native Method是这样一个java的方法:该方法的实现由非java语言实现,比如C。这个特征并非java所特有,很多其它的编程语言都有这一机制,比如在C++中,你可以用extern "C"告知C++编译器去调用一个C的转载 2018-01-07 15:48:54 · 265 阅读 · 0 评论 -
【javaSE】使用序列化方式实现深度克隆
首先我们创建对象Person、Carpackage cn.qblank.test;import java.io.Serializable;public class Person implements Serializable{ private static final long serialVersionUID = -6833164004862850059L; private转载 2018-01-07 17:23:35 · 436 阅读 · 0 评论 -
【BigDecimal】使用BigDecimal进行高精度运算
Java在java.math包中提供的API类BigDecimal,用来对超过16位有效位的数进行精确的运算。双精度浮点型变量double可以处理16位有效数,但在实际应用中,可能需要对更大或者更小的数进行运算和处理。一般情况下,对于那些不需要准确计算精度的数字,我们可以直接使用Float和Double处理,但是Double.valueOf(String) 和Float.valueOf(Strin...转载 2018-03-23 16:43:42 · 309 阅读 · 0 评论 -
【多线程】创建线程的两种方式以及其区别
第一种方式: 通过实现Runnable接口创建线程package cn.qblank.thread;/** * 多线程案例1 * @author Administrator * */public class ThreadTest1 implements Runnable{ private Thread t; //线程名 private String threadName; p...原创 2018-03-30 16:28:01 · 545 阅读 · 0 评论 -
【多线程】多线程的状态
1.新建状态(New): 新创建了一个线程对象2.就绪状态(Runnable):线程对象创建后,其他线程调用了该对象的start()方法。该状态的线程位于可运行线程池中,变得可运行,等待获取CPU的使用权。3.运行状态(Running): 就绪状态的线程获取到了cpu的资源,执行了代码4.阻塞状态(Blocked): 分三种情况 等待阻塞: 运行的线程执行了wait()方法,JVM将该线程放入了...转载 2018-03-30 16:44:15 · 349 阅读 · 0 评论 -
【多线程】线程调度
1、调整线程优先级:Java线程有优先级,优先级高的线程会获得较多的运行机会。Java线程的优先级用整数表示,取值范围是1~10,Thread类有以下三个静态常量:static int MAX_PRIORITY 线程可以具有的最高优先级,取值为10。static int MIN_PRIORITY 线程可以具有的最低优先级,取值为1。static int NORM...转载 2018-03-30 17:00:44 · 347 阅读 · 0 评论 -
【多线程】Thread类常用方法说明
①sleep(long millis): 在指定的毫秒数内让当前正在执行的线程休眠(暂停执行)②join():指等待线程终止。join是Thread类的一个方法,启动线程后直接调用,即join()的作用是:“等待该线程终止”,这里需要理解的就是该线程是指的主线程等待子线程的终止。也就是在子线程调用了join()方法后面的代码,只有等到子线程结束了主线程才能执行。为什么要用join()方法在很多情况...转载 2018-03-30 17:38:30 · 336 阅读 · 0 评论 -
【javaSE】HashMap在jdk1.7与jdk1.8中的原理及不同
整理笔记1 hashMap为何采用hash表存数据。如果不用hash表,集合中数据是无序的,当我们向集合中添加一个数据时需要同集合中所有的数据进行equals比较,当集合数据比较大时效率是非常的低。因此用hash表存储数据效率非常高。hash表的底层是数组,数组中存的是entry对象,默认长度是16. 当我们往hash表中添加一个对象时,会调用对象的hash code方法,...转载 2018-11-28 11:47:20 · 484 阅读 · 0 评论