javaSE
xiaomu_a
好记性不如烂笔头
展开
-
volatile关键字
1. volatile简介我们知道java关键字synchronized这一大神器,在java中还有一大神器就是关键volatile,可以说是和synchronized各领风骚,其中奥妙,我们来共同探讨下。我们了解到synchronized是阻塞式同步,在线程竞争激烈的情况下会升级为重量级锁。而volatile就可以说是java虚拟机提供的最轻量级的同步机制。但它同时不容易被正确理解,也至于在...翻译 2020-04-27 15:17:57 · 174 阅读 · 0 评论 -
集合
集合集合分为单列集合与双列集合单列集合单列集合分为:有序list集合 与 无序set集合。单列集合体系(常见的):---------Collection------------------list---------------------------ArrayList---------------------------LinkedList--------------------...原创 2019-03-13 10:01:45 · 400 阅读 · 0 评论 -
线程池
线程池Java里面线程池的顶级接口是 java.util.concurrent.Executor ,但是严格意义上讲 Executor并不是一个线程池,而只是一个执行线程的工具。真正的线程池接口是java.util.concurrent.ExecutorService 。要配置一个线程池是比较复杂的,尤其是对于线程池的原理不是很清楚的情况下,很有可能配置的线程池不是较优的,因此在 java....原创 2019-03-19 10:56:39 · 239 阅读 · 0 评论 -
缓冲流、转换流、序列化流、打印流
缓冲流缓冲流,也叫高效流,简单来说就是使其读写速度更快。字节缓冲流: BufferedInputStream , BufferedOutputStream字符缓冲流: BufferedReader , BufferedWriter缓冲流的基本原理:是在创建流对象时,会创建一个内置的默认大小的缓冲区数组,通过缓冲区读写,减少系统IO次数,从而提高读写的效率。字节缓冲流# 构造方法...原创 2019-03-22 16:51:20 · 189 阅读 · 0 评论 -
java年薪几十万的程序员必会的骚操作(一)
反射一说到反射,我们通常想到的可能会是,镜面反射啊、条件反射之类的,但是我们今天要说的反射跟那个可没有任何的,关系。我们说 在java中一切皆对象那么,在我们java程序运行时,会把我们的 .class 文件加载到 方法区 中,而这个 class 文件java也使用了一个类来对它进行描述,这个类就是Class类;我们之前学过 class 关键字,而Class这个是一个类。获取 Class ...原创 2019-03-27 09:19:26 · 456 阅读 · 0 评论 -
自己编写一个JDBC工具类
/*编写JDBC工具类步骤 1. 将固定字符串定义为常量 2. 在静态代码块中注册驱动 3. 提供一个获取连接的方法static Connection getConneciton(); 4. 定义关闭资源的方法close(Connection conn, Statement stmt, ResultSet rs) 5. 重载关闭方法close(Connec...原创 2019-04-05 21:28:44 · 439 阅读 · 0 评论 -
c3p0、Druid连接池使用步骤
c3p0连接池使用步骤导入jar包c3p0-0.9.1.2.jar编写c3p0-config.xml配置文件,配置对应参数将配置文件放在src目录下创建连接池对象ComboPooledDataSource,使用默认配置或命名配置从连接池中获取连接对象使用连接对象操作数据库关闭资源这个文件需要自己下载!编写配置文件:<c3p0-config> <...原创 2019-04-05 22:14:34 · 282 阅读 · 0 评论 -
编写Druid连接池工具类
/*1. 声明静态数据源/连接池成员变量2. 创建连接池对象3. 定义得到数据源/连接池的方法4. 定义得到连接对象的方法5. 定义关闭资源的方法 */public class DataSourceUtils { private static DataSource ds; static { Properties pp = new Propertie...原创 2019-04-05 22:47:47 · 484 阅读 · 2 评论 -
XML
什么是XMLXML全称:eXtensible Markup Language 可扩展标记语言可扩展:XML所有标记(标签)都是自定义的,都是通过扩展得来的。标记语言:整个文件由各种标签(元素)组成。XML作用数据交换:不同的,计算机语言之间,不同的操作系统之间,不同的数据库之间进行数据交换配置文件:用于各种框架的配置文件XML由七种组成元素构成文档的声明元素Element...原创 2019-04-10 20:07:07 · 774 阅读 · 0 评论 -
Dom4j解析xml文件
使用Dom4j步骤去官网下载 zip 包。或者百度云:链接:https://pan.baidu.com/s/1FEMTo3g0rnYvEci9a3T05A提取码:c8dw复制这段内容后打开百度网盘手机App,操作更方便哦在IDEA模块中创建一个文件夹:lib将dom4j-2.1.1.jar文件复制到 lib 文件夹在jar文件上点右键,选择 Add as Library ->...原创 2019-04-10 23:07:29 · 511 阅读 · 0 评论 -
Java年薪几十万的程序员必会的骚操作(二)
注解我们学过注释,知道注释是用文字描述程序的。给程序员看的;而注解是说明程序的,给计算机看的,它是jdk1.5及之后版本的新特性,与类、接口、枚举是在同一个层次。它可以声明在包、类、字段、方法、局部变量、方法参数等的前面,用来对这些元素进行说明,注释。作用分类:编写文档:通过代码里标识的注解生成文档【生成文档doc文档】代码分析:通过代码里标识的注解对代码进行分析【使用反射】编译检查:...原创 2019-03-28 16:36:30 · 237 阅读 · 0 评论 -
关于线程的小知识
创建线程的两个方式定义一子个类继承 Thread 类class Ticket extends Thread{}定义一个类实现 Runnable 接口class Ticket implements Runnable{}推荐使用第二种,那么第二种方式有什么好处呢?实现接口的方式还可以继承其他类实现接口方式 Runnable 负责任务, Thread 负责创建线程,将任务和线...原创 2019-03-17 21:06:03 · 109 阅读 · 0 评论 -
线程的状态/线程的生命周期
在线程的生命周期中, 有几种状态呢 ?NEW(新建) 线程刚被创建,但是并未启动。还没调用start方法。Runnable(可运行) 线程可以在java虚拟机中运行的状态,可能正在运行自己代码,也可能没有,这取决于操作系统处理器。Blocked(锁阻塞) 当一个线程试图获取一个对象锁,而该对象锁被其他的线程持有,则该线程进入Blocked状态;当该线程持有锁时,该线程将变成Runna...原创 2019-03-17 20:32:36 · 361 阅读 · 0 评论 -
线程安全问题以及解决方法
什么是线程安全问题?我们通过代码来了解一下,下面是一个模拟买票代码:首先我们先定义一个票Ticked类:class Ticket implements Runnable{ int ticked = 50; @Override public void run() { while (true) { if(ticked &amp;amp;amp;amp;amp;gt; ...原创 2019-03-17 18:04:37 · 1848 阅读 · 2 评论 -
数据结构
数据结构数据存储的常用结构有:栈、队列、数组、链表和红黑树。我们分别来了解一下:栈栈:stack,又称堆栈,它是运算受限的线性表,其限制是仅允许在标的一端进行插入和删除操作,不允许在其他任何位置进行添加、查找、删除等操作。简单的说:采用该结构的集合,对元素的存取有如下的特点先进后出(即,存进去的元素,要在后它后面的元素依次取出后,才能取出该元素)。例如:子弹压进弹夹,先压进去的...原创 2019-03-14 11:05:11 · 115 阅读 · 0 评论 -
不要让Lambda摧毁了你的世界
jdk1.8新特性之Lambda表达式话不多说,我们通过例子来了解,下面是一个给学生对象排序的代码:首先 Student 类:public class Student { private String name; private int age; public Student() { } public Student(String name, in...原创 2019-03-19 20:37:11 · 215 阅读 · 0 评论 -
jdk1.8新特性之Stream流?妖怪吧!
jdk1.8新特性之Stream流首先,我们来看一下这个小练习:一个ArrayList集合中存储有以下数据:张无忌,周芷若,赵敏,张强,张三丰需求:1.拿到所有姓张的 2.拿到名字长度为3个字的 3.打印这些数据我们可以这样做:public class Demo10 { public static void main(String[] args) { ArrayL...原创 2019-03-19 21:04:53 · 431 阅读 · 0 评论 -
泛型
今天我们来学习一下泛型什么是泛型?&amp;amp;lt; E &amp;amp;gt;:参数化类型,定义类的时候不确定类型,使用类时才确定类型泛型类:泛型定义在类上面public class Car &amp;amp;lt;E&amp;amp;gt; { private E content; // 表示装的内容 public void setContent(E content) { this.cont原创 2019-03-11 16:49:13 · 96 阅读 · 0 评论 -
正则表达式
预定义字符. 任何字符\d 数字:[0-9]\D 非数字:[^0-9]\s 空白字符:[\t \n \x0B \f \r]\S 非空白字符:[^\s]\w 单词字符:[a-zA-Z_0-9]\W 非空白字符:[^\w]数量词数量词,预定义字符匹配数量词使用后,那么就可以匹配多个字符内容了。X? X,一次或一次也没有X* X,零次或多次X+ ...原创 2019-03-10 17:29:51 · 132 阅读 · 0 评论 -
StringBuffer和StringBuilder的区别
StringBuffer和StringBuilder的相同与区别相同之处:StringBuffer和StringBuilder都是字符串缓冲类,都可以对字符串进行操作。不同之处:StringBuffer是jdk1.0开始就有的,而StringBuilder是jdk1.5才有的。StringBuffer是线程安全的,操作效率慢,而StringBuilder是线程不安全的,操作效率快...原创 2019-03-10 15:09:09 · 103 阅读 · 0 评论 -
日期时间类
Date、DateFormat、SimpleDateFormat、Calendar类Date类Date类代表了一个特定的时间,以毫秒的精度。# 构造方法public Date() :获取Date对象并初始化此对象,默认时间是执行此代码的时间(精确到毫秒)。 public Date(longdate) :分配Date对象并初始化此对象,以表示自从标准基准时间(称为“历元(epoch)”...原创 2019-03-10 14:54:03 · 414 阅读 · 0 评论 -
数组与集合的异同
数组与集合的异同相同:都是存放数据的容器不同:数组一旦初始化长度不可变,而集合的长度是自动变化的数组可以存放基本类型的数据也可以存放引用类型数据,而集合只能存放引用数据类型数据数组只能存放一种数据类型的数据,而集合可以存放任意类型的数据(在没有加泛型的前提下)...原创 2019-03-11 17:20:08 · 381 阅读 · 0 评论 -
迭代器
1. 什么是迭代器?为什么要有迭代器?集合分为有序 list 集合和无序set集合List接口有索引,我们可以通过for循环+get方法来获取数据,但是Set接口这边没有索引,不能通过for循环+get方式获取数据.所以Collection接口就搞了一种通用的方式方便所有的集合来获取数据,就是迭代器(Iterator)2. 什么是迭代器?为什么要有迭代器?什么是迭代:迭代是取数据的过程...原创 2019-03-11 18:56:12 · 3443 阅读 · 0 评论 -
方法重载、方法重写傻傻分不清楚
方法重载方法重载是以统一的方式处理不同数据类型的一种手段特点:在同一个类中方法名相同,参数列表不同(参数列表不同可以是参数个数、参数类型、参数顺序),返回值类型不做要求。方法重写在继承中,子类觉得父类的方法不好用,父类的方法内容并不是我们所想要的,那么这个时候就要重写我们父类的方法特点:在继承中,子类重写父类的方法除了方法体以外,返回值、方法名、参数列表(包括参数个数、参数...原创 2019-03-16 20:50:13 · 155 阅读 · 0 评论 -
比较器
比较器我们知道,使用TreeSet集合当我们存储的元素是有默认的规则时候,取出的元素顺序是升序输出的,那么当我们存储一个自定义的引用类型数据的时候也想让他们按照一个顺序输出怎么办呢?这个时候就要用到我们的比较器了…假设我们要存入一个 Student 类型的元素到集合:class Student{ private String name; private int age; ...原创 2019-03-14 09:43:06 · 197 阅读 · 0 评论