![](https://img-blog.csdnimg.cn/20201014180756923.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Java
文章平均质量分 68
Java
Survivior_Y
愿为夜幕暗室的一粒灯火,照彻万里尘埃千百年
展开
-
Java 多线程学习四(ThreadLocal)
一、ThreadLocal的概念ThreadLocal并不是线程,而是Thread的一个局部变量,每个线程都有自己的ThreadLocal变量,可以通过get()和set()方法来获取相应值。ThreadLocal设计的初衷是为了解决多线程编程中的资源共享问题,不同于synchronized,ThreadLocal是为每个使用该变量的线程提供独立的变量副本,在各自线程内部,相当于“全局变量”,...原创 2019-08-01 23:23:46 · 156 阅读 · 0 评论 -
Java 多线程学习五(死锁)
一、线程死锁多个线程同时被阻塞,它们中的一个或者全部都在等待某个资源被释放。由于线程被无限期地阻塞,因此程序不可能正常终止。如下图所示,线程 A 持有资源 2,线程 B 持有资源 1,他们同时都想申请对方的资源,所以这两个线程就会互相等待而进入死锁状态。二、死锁产生的原因产生死锁必须满足以下四个条件,只要破坏任意一条,就可避免死锁互斥条件:资源在一段时间内仅能为一个进程所战...原创 2019-08-02 22:34:06 · 120 阅读 · 0 评论 -
Java 多线程学习二(线程池)
一、为什么使用线程池?前一篇博客里简单列举了几种实现线程的方法,在一个项目中,线程很多的情况下,每次都要去new线程,创建时间T1,线程存在时间T2,销毁时间T3,如果T1+T3>T2,这样就会造成内存消耗,而且不断创建新的线程,占用过多的系统资源,会导致死锁以及OOM。使用线程池的好处降低资源消耗:通过重复利用已创建的线程降低T1和T3造成的消耗 提高响应速度:当任务到达时,...原创 2019-07-31 22:34:34 · 112 阅读 · 0 评论 -
Java 多线程学习三(单例模式与多线程)
一、什么是单例模式?单例模式(Singleton)是一种比较常用的设计模式,在应用场景中,单例模式的类的对象有且只有一个。例如打印机只有一台,避免两个任务同时下发到打印机中,通信端口只有一个,避免多个请求同时调用通信端口,这样的情况下,单例模式是非常有用的。从程序的角度上,单例模式就是确保一个类只有一个实例,并提供一个访问它的全局访问点。二、如何保证实例唯一?构造方法私有化:防止外部初...原创 2019-07-31 23:33:44 · 130 阅读 · 0 评论 -
Java 多线程学习一(三种实现方式)
一、为什么要使用多线程编程?先从总体上来说:从计算机底层来说:线程可以比作是轻量级的进程,是程序执行的最小单位,线程间的切换和调度的成本远远小于进程。另外,多核 CPU 时代意味着多个线程可以同时运行,这减少了线程上下文切换的开销。 从当代互联网发展趋势来说:现在的系统动不动就要求百万级甚至千万级的并发量,而多线程并发编程正是开发高并发系统的基础,利用好多线程机制可以大大提高系统整体...原创 2019-07-30 23:29:20 · 129 阅读 · 0 评论 -
Java 实现栈的三种方式
栈:LIFO(后进先出),自己实现一个栈,要求这个栈具有push()、pop()(返回栈顶元素并出栈)、peek()(返回栈顶元素不出栈)、isEmpty()这些基本的方法。一、采用数组实现栈提示:每次入栈之前先判断栈的容量是否够用,如果不够用就用Arrays.copyOf()进行扩容import java.util.Arrays;/** * 数组实现栈 * @param &...原创 2019-07-21 12:34:00 · 47157 阅读 · 5 评论 -
Java super、final和static关键字
一、Super关键字1、非构造方法中的super关键字访问父类成员(变量和方法)如果子类方法覆盖父类的方法,在子类中可以通过super关键字调用被重写的方法class father { //私有,子类不可访问 private String str = "let's play some dota"; public String str1 = "dota"; ...原创 2019-07-20 14:58:59 · 176 阅读 · 0 评论 -
Java 深入学习字符串equals()和“==”的区别
博主在实际开发过程中,判断界面元素element.getText()与期望值是否相等时,采用==出现判断错误,在网上查阅了很多资料,这里做个总结,记录学习过程。要理解equals和==的区别首先要理解Java内存中的对象和数据是如何存储的。一、栈、堆以及常量池的概念和区别任何程序在运行时都要在内存中开辟控件,java运行时虚拟机来做这个事情。栈(stack):一片内存区域,用来存储局部...原创 2019-04-16 22:17:47 · 193 阅读 · 0 评论 -
java 获取mysql所有表名和字段信息
import java.sql.Connection;import java.sql.DatabaseMetaData;import java.sql.DriverManager;import java.sql.PreparedStatement;import java.sql.ResultSet;import java.sql.ResultSetMetaData;import ja...原创 2019-01-23 17:55:03 · 7621 阅读 · 3 评论 -
Java 重写(override)和重载(overloading)的区别
重载和重写是类的多态性的重要体现,也是两个比较容易混淆的概念,这里做个学习笔记,mark下一、重写和重载的区别1、override概念:存在于子类中,对父类允许访问的方法进行重写,返回值和形参都不能改变,即外壳不变,核心重写,是父类和子类间多态性的体现。//定义动物类class Animals{ public void move() { System.out.printl...原创 2019-04-23 21:23:38 · 752 阅读 · 0 评论 -
Eclipse一些常用的快捷键
Eclipse一些常用快捷键【ALT+/】自动补全,自动获取辅助内容 【ALT+SHIFT+R】重命名所选的java元素 【CTRL+O】快速显示当前类的outline(方法和属性) 【CTRL+/】当前行代码快速添加/取消注释 【CTRL+E】显示当前编辑器的编辑列表 【CTRL+D】快速删除当前行 【CTRL+L】定位到当前编辑器某一行,不限于java文件 【CTRL+k】查...原创 2018-11-09 15:15:20 · 111 阅读 · 0 评论 -
Java 数组小结
平时声明和初始化数组总会弄错,这里系统的做个小结,记录下一、Java数组声明及初始化1、数组声明:datatype[] arrayname:个人推荐的写法 datatype arrayname[]2、数组初始化初始化是最容易出问题的地方,方式一共有两种:静态初始化,动态初始化。2.1、静态初始化在声明的同时,完成对数组的初始化(以String int为例)int[...原创 2019-04-19 19:24:02 · 364 阅读 · 0 评论 -
Java 日期相关工具类
大概有5个多月没更,又懒又忙,公司用mac,回家用台式,这快捷键的切换对我来说真是。。。。太难了。不过再懒再忙再难也要学习呀,毕竟落后就要挨打,加油加油加油~~~在实际的业务开发中,不免会用到几类日期相关类:Date、SimpleDateFormat、Duration、Calendar 以及 DateUtils等,下面就来详细介绍下,做个笔记,也希望对其他人有所帮助。一、Date 类 (java.util.Date)最常用的基础日期类 继承Serializable, Cloneable, Com原创 2020-08-02 12:48:16 · 759 阅读 · 0 评论 -
Java String、StringBuilder及StringBuffer学习总结
String如下图所示,String在java中被声明为final class,String的值是不可变的。这会导致String相关操作基本都会产生新的String对象,如果这样操作很多,会大量浪费内存空间,效率低下,对程序性能影响较大。StringBufferStringBuffer是为了解决大量拼接字符串时产生很多中间对象问题而提供的一个类。StringBuilder的对象是变量,...原创 2019-08-08 23:12:17 · 353 阅读 · 0 评论 -
Java 实现“多继承”
一、Java语言特点Java是一种简单、面向对象、分布式、易读、鲁棒、安全、结构明晰、可移植、高性能、多线程、动态的语言。面向对象(继承、封装、多态) 一次编译,到处运行(JVM实现跨平台运行) 可靠性 安全性 支持多线程(对比C++没有内置多线程机制) etc...二、Java为什么不支持多继承?多继承:指一个子类同时继承多个父类,从而具备多个父类的特征多继承会造成...原创 2019-07-20 12:49:19 · 41353 阅读 · 4 评论 -
Java Arrays工具类
Java中对数组专门封装了一个工具类Arrays,在平时编程用到的比较多,这里整理下asList(arr):返回由指定数组支持的固定大小的列表import java.util.ArrayList;import java.util.Arrays;import java.util.List;public class ArraysToolsDemo { public static...原创 2019-07-29 23:34:31 · 245 阅读 · 0 评论 -
Java 字符串小结
一、字符串定义1、直接定义:用双引号表示字符串内容//直接赋值String str1="Java is the most beautiful programming language";String str2;str2="Java is the most beautiful programming language";2、String类定义:实例化String对象Stri...原创 2019-04-17 20:26:58 · 180 阅读 · 0 评论 -
Java IO学习之IO流分类及其常见用法
一、IO流分类图流概念——传送门二、IO流常见用法所有流相关的要养成好的编码习惯,在最后关闭打开的流,调用close()方法。1、基类流(InputStream/Reader,OutputStream/Writer)前者是输入流的抽象基类,后者是输出流的抽象基类,抽象基类意味着他们不能被实例化。InputStream,操作字节数组int read():输入流读取单...原创 2019-08-18 15:01:15 · 208 阅读 · 0 评论 -
java 文件读写小结
一、流的概念流是一组有序的数据序列,根据操作类型,分为输入流和输出流,I/O流提供了一条通道程序,可以使用这条通道把源中的字节序列送到目的地。虽然与磁盘文件存取有关,但是程序的源和目的地也可以是键盘、鼠标、内存或显示器窗口等。java语言定义了许多类专门负责各种方式的输入/输出,这些类都在java.io包中。其中所有输入流类都是抽象类InputStream(字节输入流)或抽象类Reader...原创 2019-01-26 17:23:18 · 1806 阅读 · 0 评论 -
Java IO学习之Properties类
一、Properties1、类源码:Properties 继承 HashTable,属于一个持久的属性集合,以 key-value 键值对形式存在class Properties extends Hashtable<Object,Object> {2、类方法:除了HashTable定义的方法,Properties定义了下列方法,表格来源——菜鸟教程序号 方法描...原创 2019-08-29 23:20:17 · 146 阅读 · 0 评论 -
Java IO学习之装饰器&适配器模式
一、装饰器模式概念:又名包装(Wrapper)模式,动态地给对象添加额外的职责,从增强功能的角度来说,Decorator模式比子类继承更加灵活,Decorator模式以对客户端透明的方式扩展对象功能应用场景:以动态、透明的方式增强对象功能 增强的功能可以被撤销 无法采用子类继承增强的情况装饰器结构:Componet:定义一个抽象类//可以是接口,可以是抽象类publ...原创 2019-08-28 22:28:05 · 435 阅读 · 0 评论 -
java 集合类浅析
集合类与数组不同之处在于:数组长度是固定的,集合长度是可变的,数组用来存放基本类型的数据,集合用来存放对象的引用,常用集合有List集合,Set集合和Map集合,这里面List和Set继承了Collection接口;Map集合没有继承Collection接口,是key和values的映射,以键值对的形式存储数据。Collection常用方法如下表所示,这些方法对List集合和Set集合是通用的...原创 2019-01-23 14:47:03 · 147 阅读 · 0 评论 -
Java 集合学习之Set(HashSet&LinkedHashSet&TreeSet)
一、Set集合类思维导图Set:不允许重复的集合。不会有多个元素引用相同的对象。二、HashSet、LinkedHashSet及TreeSet区别简述HashSet:继承AbstractSet类,实现Set、Cloneable、Serializable接口,非线程安全,无序public class HashSet<E> extends AbstractSet<...原创 2019-08-12 23:44:54 · 252 阅读 · 0 评论 -
Java 集合学习之Map(HashMap&Hashtable&LinkedHashMap&TreeMap)
一、Map集合类思维导图Map:使用键值对存储。Map会维护与Key有关联的值。两个Key可以引用相同的对象,但Key不能重复,典型的Key是String类型,但也可以是任何对象。二、HashMap、Hashtable、LinkedHashMap及TreeMap区别简述Hashmap:散列表,存储Key-Value值,继承于AbstractMap,实现Map、Cloneable、S...原创 2019-08-11 17:21:45 · 235 阅读 · 0 评论 -
Java 集合学习之List(ArrayList&Vector&Stack&LinkedList)
一、List集合类思维导图List:存储一组不唯一(可以有多个元素引用相同的对象),有序的对象二、ArrayList、Vector、Stack及LinkedList区别简述ArrayList:继承自AbstractList,实现了List接口,非线程安全,动态数组public class ArrayList<E> extends AbstractList<...原创 2019-08-11 22:11:21 · 233 阅读 · 0 评论