Java
文章平均质量分 55
absolute_chen
这个作者很懒,什么都没留下…
展开
-
java中用enum实现单例模式
java中用enum实现单例模式的代码如下:public enum Singleton { INSTANCE;// 唯一实例 public void print() { System.out.println("使用enum实现单例模式"); } // public static Singleton getInstance() {转载 2017-08-09 10:01:05 · 561 阅读 · 0 评论 -
HashMap原理和底层实现
最近研究了一下java中比较常见的map类型,主要有HashMap,HashTable,LinkedHashMap和concurrentHashMap。这几种map有各自的特性和适用场景。使用方法的话,就不说了,本文重点介绍其原理和底层的实现。文章中的代码来源于jdk1.9版本。HashMap特点及原理分析特点HashMap是java中使用最为频繁的map类型,其读写效率较高,...转载 2019-05-31 09:49:58 · 78 阅读 · 0 评论 -
HashTable原理和底层实现
1. 概述上次讨论了HashMap的结构,原理和实现,本文来对Map家族的另外一个常用集合HashTable进行介绍。HashTable和HashMap两种集合非常相似,经常被各种面试官问到两者的区别。对于两者的区别,主要有以下几点:HashMap是非同步的,没有对读写等操作进行锁保护,所以是线程不安全的,在多线程场景下会出现数据不一致的问题。而HashTable是同步的,所有的读...转载 2019-05-31 10:39:11 · 127 阅读 · 0 评论 -
ThreadPoolExecutor线程池参数设置技巧
ThreadPoolExecutor线程池参数设置技巧一、ThreadPoolExecutor的重要参数corePoolSize:核心线程数 核心线程会一直存活,及时没有任务需要执行 当线程数小于核心线程数时,即使有线程空闲,线程池也会优先创建新线程处理 设置allowCoreThreadTimeout=true(默认false)时,核心线程会超时关闭 queue...转载 2019-05-31 11:37:59 · 134 阅读 · 0 评论 -
Error与Exception的区别
首先,Error类和Exception类都是继承Throwable类Error(错误)是系统中的错误,程序员是不能改变的和处理的,是在程序编译时出现的错误,只能通过修改程序才能修正。一般是指与虚拟机相关的问题,如系统崩溃,虚拟机错误,内存空间不足,方法调用栈溢等。对于这类错误的导致的应用程序中断,仅靠程序本身无法恢复和和预防,遇到这样的错误,建议让程序终止。Exception(异常)表示程...转载 2019-05-31 11:48:23 · 114 阅读 · 0 评论 -
Lambda 提取排名前十的列表
@Test public void test7(){ Map<String,Long> freq=new HashMap<>(); freq.put("1",1L); freq.put("2",1L); freq.put("3",1L); freq.put("4",2L); ...原创 2019-09-12 15:00:49 · 5277 阅读 · 0 评论 -
Lambda收集器示例
Collectors常用方法工厂方法 返回类型 作用 toSet Set 把流中所有项目收集到一个 Set,删除重复项 toList List 收集到一个 List 集合中 toCollection Collection 把流中所有项目收集到给定的供应源创建的集合menuStream.collect(toCollection(), A...原创 2019-09-12 15:24:13 · 130 阅读 · 0 评论 -
利用适配器,可以利用for-each 语句来遍历Stream
public static <E> Iterable<E> iterableOf(Stream<E> stream){ return stream::iterator; } @Test public void test8(){ List<String> players =Arrays...原创 2019-09-12 16:00:48 · 151 阅读 · 0 评论 -
effective java 第三版 builder建造者 P12
package Effective02.P12;import java.util.EnumSet;import java.util.Objects;import java.util.Set;public abstract class Pizza { public enum Topping{ HAM, MUSHROOM, ONION,PEPPER, SAUSAG...原创 2019-09-16 10:22:52 · 209 阅读 · 0 评论 -
避免使用Finalizer和Cleaner机制-[创建和销毁对象]
1.Finalizer机制finalize是Object类中的一个方法, 当一个对象被销毁前jvm会去调用该对象的finalize方法。@Deprecated(since="9")protected void finalize() throws Throwable { } // 在java9中已被废弃如果一个对象依赖了底层资源(例如Socket, Stream, Connecti...原创 2019-09-16 15:18:00 · 669 阅读 · 0 评论 -
java中native的用法
前言:在查看 Thread.java 文件时,发现有一个 方法比较特殊private native void start0();概念:native关键字说明其修饰的方法是一个原生态方法,方法对应的实现不是在当前文件,而是在用其他语言(如C和C++)实现的文件中。Java语言本身不能对操作系统底层进行访问和操作,但是可以通过JNI接口调用其他语言来实现对底层的访问。JNI是Java...翻译 2019-05-30 22:24:10 · 932 阅读 · 1 评论 -
JVM类加载机制
我们都知道一个java程序运行要经过编译和执行,但是这太概括了,中间还有很多步骤,今天来说说类加载学完类加载之后,java运行过程就可以分为 编译 》 类加载 》 执行类加载主要是由jvm虚拟机负责的,过程非常复杂,类加载分三步 加载 》 连接 》初始化,(这里的加载和本文标题的类加载是不同的,标题的类加载包含了完整的三个步骤)下面详细说说每一步的过程1、加载:这个很...转载 2019-05-30 22:12:01 · 96 阅读 · 0 评论 -
cookie 保存用户名
类LoginServlet 中package com.itheima.login;import java.io.IOException;import java.io.PrintWriter;import javax.servlet.ServletException;import javax.servlet.http.Cookie;import javax.servlet.http.H...原创 2018-03-08 09:56:20 · 278 阅读 · 0 评论 -
什么是连接池,其工作原理是什么?
连接池用于创建和管理数据库连接的缓冲池技术,缓冲池中的连接可以被任何需要他们的线程使用。当一个线程需要用JDBC对一个数据库操作时,将从池中请求一个连接。当这个连接使用完毕后,将返回到连接池中,等待为其他的线程服务。 连接池的主要优点有以下三个方面。第一、减少连接创建时间。连接池中的连接是已准备好的、可重复使用的,获取后可以直接访问数据库,因此减少了连接创建的次数和时间。第二、简化转载 2017-08-09 16:45:09 · 492 阅读 · 0 评论 -
Java学习之Iterator(迭代器)的一般用法
迭代器(Iterator) 迭代器是一种设计模式,它是一个对象,它可以遍历并选择序列中的对象,而开发人员不需要了解该序列的底层结构。迭代器通常被称为“轻量级”对象,因为创建它的代价小。 Java中的Iterator功能比较简单,并且只能单向移动: (1) 使用方法iterator()要求容器返回一个Iterator。第一次调用Iterator的next()方法时,它返转载 2017-08-06 13:33:29 · 210 阅读 · 0 评论 -
我对Java Serializable(序列化)的理解和总结
1、序列化是干什么的? 简单说就是为了保存在内存中的各种对象的状态(也就是实例变量,不是方法),并且可以把保存的对象状态再读出来。虽然你可以用你自己的各种各样的方法来保存object states,但是Java给你提供一种应该比你自己好的保存对象状态的机制,那就是序列化。2、什么情况下需要序列化 a)当你想把的内存中的对象状态保存到一个文件中或者数据库中时候转载 2017-08-29 16:48:17 · 161 阅读 · 0 评论 -
serialVersionUID的作用
简单来说,Java的序列化机制是通过在运行时判断类的serialVersionUID来验证版本一致性的。在进行反序列化时,JVM会把传来的字节流中的serialVersionUID与本地相应实体(类)的serialVersionUID进行比较,如果相同就认为是一致的,可以进行反序列化,否则就会出现序列化版本不一致的异常。(InvalidCastException)serialVersion原创 2017-08-29 17:14:54 · 609 阅读 · 0 评论 -
Java子类与父类的继承
public class Test { public static void main(String [] args){ Child c = new Child(); }}class Father{ public Father(){ System.out.println("父类无参构造函数"); } public F原创 2017-08-29 17:18:28 · 400 阅读 · 0 评论 -
"=="和equals方法究竟有什么区别?
(单独把一个东西说清楚,然后再说清楚另一个,这样,它们的区别自然就出来了,混在一起说,则很难说清楚)==操作符专门用来比较两个变量的值是否相等,也就是用于比较变量所对应的内存中所存储的数值是否相同,要比较两个基本类型的数据或两个引用变量是否相等,只能用==操作符。如果一个变量指向的数据是对象类型的,那么,这时候涉及了两块内存,对象本身占用一块内存(堆内存),变量也占用一块内存,例如原创 2017-08-30 16:13:36 · 276 阅读 · 0 评论 -
Java 枚举类的基本使用
1、常量的使用 在JDK1.5之前,我们定义常量都是:public static fianl....。现在好了,有了枚举,可以把相关的常量分组到一个枚举类型里,而且枚举提供了比常量更多的方法。package com;public enum Color { RED, GREEN, BLANK, YELLOW } 使用:package com转载 2017-09-01 08:50:59 · 178 阅读 · 0 评论 -
三目运算符与ifelse的区别
区别一:三目运算有返回值,if else没有返回值两者比较n++;var n=1;if(n>1){ n=0;}else{ n++;}console.log(n);输出结果:2三目运算如下:复制代码 代码如下:var n=1;n = n>1?0 : n++;console.log(n);输出结果为:1两者原创 2017-09-19 08:38:31 · 1920 阅读 · 0 评论 -
java 的JDBC链接
public class jdbc001_demo { public static void main(String[] args) throws SQLException { //1、注册驱动 DriverManager.registerDriver(new SQLServerDriver()); //2、创建连接 Connection con = DriverManage原创 2018-01-04 19:24:41 · 180 阅读 · 0 评论 -
JAVA中字符串比较equals()和equalsIgnoreCase()的区别
1、使用equals( )方法比较两个字符串是否相等。它具有如下的一般形式:boolean equals(Object str)这里str是一个用来与调用字符串(String)对象做比较的字符串(String)对象。如果两个字符串具有相同的字符和长度,它返回true,否则返回false。这种比较是区分大小写的。2、为了执行忽略大小写的比较,可以调用equalsIgnoreCase( )...原创 2019-09-16 16:15:55 · 214 阅读 · 1 评论