- 博客(29)
- 收藏
- 关注
原创 深入源码分析StringBuffer和StringBuilder
深入源码分析StringBuffer和StringBuilder众所周知,StringBuffer是线程安全,StringBuilder线程不安全,所以StringBuilder性能略高,那还有没有其他细节上的特性呢?让我们从源码分析StringBuffer和StringBuilder都继承了AbstractStringBuilder类AbstractStringBuilder类关键源码...
2018-10-05 15:58:52 405
原创 深入源码分析String类
深入源码分析String类String类基本情况不可变类,使用了final修饰,不可被继承一旦创建String对象,包含这个对象的字符序列不可被改变底层使用字符数组 char value[]实现类序列化接口,可序列化的效率较低,其每次增删改操作都会重新创建一个新的String对象,会造成对象堆积,触发垃圾回收机制,若小范围对象生成,可能只会触发minor GC,大范围的话,就会触发...
2018-10-05 15:56:43 434
原创 Java Excel和CSV类型数据文件自动录入小工具
Excel和CSV类型数据文件自动录入小工具GitHub链接 jar包和依赖包链接:https://pan.baidu.com/s/1QsA6wzu1ofIBbXQbXm9TAw 密码:tdop依赖包java8dom4j-1.6.1.jarpoi-3.7-20101029.jar (POI Excel文件处理)poi-ooxml-3.7-20101029.jarpoi-oo...
2018-08-17 15:15:23 804
原创 理解Java中的多态和instanceof
多态事物 存在的多种形态多态的前提有继承关系有方法重写有父类引用指向子类对象多态成员访问特点成员变量编译看左边(父类),运行看左边(父类)。成员方法编译看左边(父类),运行看右边(子类)。动态绑定静态方法编译看左边(父类),运行看左边(父类)。静态和类相关,算不上重写,只是子类运行时覆盖了父类的静态方法,所以访问还是看父类。只有非静态成...
2018-08-01 17:29:20 737
原创 Java-缓存不可变类
不可变类不可变类的意思是创建该类实例后,该实例的实例变量是不可改变的。Java中的8个包装类和java.lang.String类都是不可变类,当创建它们的实例后,其实例变量不可改变。如果需要创建自定义的不可变类,遵循以下规则:使用private和final修饰符来修饰该类的成员变量提供带参数构造器,用于根据传入参数来初始化类中的成员变量仅为该类的成员变量提供getter方法,不...
2018-08-01 17:17:18 423
原创 全面理解Java中的final修饰符
final修饰符final 可用于修饰类、变量和方法,用于表示它修饰的类、方法和变量不可改变。final修饰的大都应用于基本类型域,或不可变类。 不可变类:如果类中的每个方法都不会改变其对象,这种类是不可变的类。例如String类。对于可变类,使用final修饰只是表示存储在对象变量中的对象引用不会再指向其他对象,不过这个对象中的属性可以更改。final修饰特点修饰类时...
2018-08-01 17:15:30 3482
原创 Java中组合关系
组合组合关系概述实现类的复用除了继承外,还可以使用组合的方式,把该类当成另一个类的组合成分,从而允许新类直接复用该类的public方法。不管继承还是组合,都允许在新类(对于继承就是子类)中直接复用旧类的方法。组合是把旧类对象作为新类的成员变量组合起来,用以实现新类的功能,用户看到的是新类的方法,而不能看到被组合对象的方法。因此,通常要在新类里使用private修饰被组合的旧类对象...
2018-08-01 17:07:37 11934
原创 全面理解Java中继承关系
Java面向对象(三) 继承和final实例继承概述继承是面向对象思想的三大特性之一,使类与类之间产生特殊 - 一般的关系,即is-a关系。继承是从已有类中派生出新的类,新的类能吸收已有类的属性和方法,并且能拓展新的属性和行为。在Java中使用extends关键字表示继承,语法表示为: class 子类 extends 父类{}子类被称为派生类,父类又被称为超类。子类...
2018-07-23 21:06:05 12737 1
原创 理解Java中的静态域、代码块和内存区域图
Java面向对象(二) 静态域、代码块和内存区域图静态域将域定义成static后,每个类中只有一个这样的域,与类相关的,也称为类成员。但是每个对象对于所有的实例域却都有自己的一份拷贝。静态域会随着类的加载而加载并初始化,存在于方法区内存中的字节码文件的静态区域中。优先于对象存在,先有方法区的类加载,后才可能会有堆内存的对象实例化。静态域会被所有的对象共享,也称为共享区。一般共...
2018-07-23 21:04:50 4232 3
原创 理解Java中的类与对象以及方法
Java面向对象(一) 类与对象以及方法面向对象概述面向对象的程序是由对象组成的,每个对象包含对用户公开的特定功能部分和隐藏的实现部分。在OOP中,不必关心对象的具体实现,只要能够满足用户的需求即可。类类是构造对象的模板或蓝图。Java编写的所有代码都位于某个类的内部。Java中的类文件时以.java为后缀的代码文件,在每个类文件中最多只允许出现一个public...
2018-07-23 21:03:11 1011 1
原创 理解Java中的线程组、线程池和Callable接口
线程组线程组概述线程池为什么会有线程池?(线程池概述)内置线程池Future 接口实现多线程的第三种方式线程组线程组概述Java中用ThreadGroup来表示线程组,它可以对一批线程进行分类管理,Java允许程序直接对线程组进行控制。默认情况下,所有的线程都属于主线程组。public final ThreadGroup getThrea...
2018-07-17 20:31:58 624
原创 理解Java中的互斥锁ReentrantLock和Condition
互斥锁Lock和sychronized机制的主要区别Lock接口lockunlocktryLockCondition接口 - 条件awaitsignalsignalAll一个实例互斥锁JDK1.5版本提供了java.util.concurrent.locks包,该包中提供了锁和等待条件的接口和类,可以用于代替JDK1.5之前的synchro...
2018-07-17 20:29:01 504
原创 Java中的多线程基础知识
JavaSE回顾-多线程基础知识整合多线程基本概念程序(program)进程(process)线程(thread)Java中的线程多线程的用处时间片并行和并发同步和异步临界区阻塞和非阻塞问题引入多线程的实现方式方式一: 继承Thread类方式二:实现Runnable接口(常用,优点多)为什么实例效果不明显?多线程的两种实现方式的区别匿名内部类实现线...
2018-07-17 20:21:43 332
原创 Java线程安全和死锁问题
线程安全线程安全级别常见的线程安全类多线程中的线程安全问题多窗口卖票问题死锁问题写一个死锁程序避免死锁的方式单例模式的线程安全问题单例模式饿汉式-线程安全懒汉式-非线程安全线程安全如果你的代码在多线程下执行和在单线程下执行永远都能获得一样的结果,那么你的代码就是线程安全的线程安全级别1、不可变像String、...
2018-07-11 18:08:39 980
原创 Java多线程回顾-同步代码
同步代码需要同步的情况当多线程并发,有多段代码同时执行时,希望某一段代码执行的过程中,CPU不要切换到其他线程上,此时就需要同步。如果有两段代码是同步进行的,那么同一时间只能执行其中一段,在一段代码没执行结束之前,不会执行另外一段代码。同步代码块操作使用synchronized关键字加上一个锁对象来定义一段代码,这就称为同步代码块。如果多个同步代码块使用同一个锁对...
2018-07-11 18:03:42 197
原创 理解Java的线程的实例方法和线程状态转换图
线程相关实例方法获取线程ID- getId获取和设置线程的名字线程对象是否处于活动状态 - isAlive获取当前线程的对象休眠线程-sleep加入线程-join让出线程-yield设置线程优先级中断线程-Interrupt守护线程-Deamonwait()和notify()/notifyAll()wait()notify()notifyAll()☆ sle...
2018-07-11 18:00:31 1075
原创 Java中多线程常用的两种方式和Callable方式
多线程的实现方式方式一: 继承Thread类Thread类实现了Runnable接口,在java.long包下。创建执行线程方法一:将类继承Thread类,重写Thread类的run方法。接下来就可以分配并启动该子类的实例。具体步骤:继承Thread类重写run方法将执行的代码写在run方法中创建Thread类的子类对象使用start方法开启线程。注意:调用run方...
2018-07-11 17:55:39 1543
原创 Java多线程的一些必备基本概念
多线程基本概念程序(program)为了完成特定任务、用某种语言编写的一组指令的集合。即一段静态的代码,静态对象。进程(process)程序的一次执行过程,或者是正在运行的一个程序,是动态过程。动态过程:有自身的产生、存在和消亡的过程。程序是静态的,而进程是动态的。线程(thread)进程可以进一步细化为线程,是一个程序内部的一条执行路径。...
2018-07-11 17:51:11 154
原创 JavaSE回顾-基础语法
JavaSE 回顾-基础语法1. Java语言的特性1.1 简单性1.2 面向对象1.3 分布式1.4 健壮性1.5 安全性1.6 体系结构中立1.7 可移植性1.8 解释型1.9 高性能1.10 多线程1.11 动态性2. Java 基本语法注意点2.1 类名2.2 main方法2.3 注释2.4 数据类型2.4.1 整型2.4.2 ...
2018-07-05 16:49:01 528
原创 Git的常用知识
Git的常用知识1. Git的常用操作1.1 本地库初始化1.2 设置签名1.2.1 项目级/仓库级别签名1.2.2 系统用户级签名1.2.3 级别优先级1.3 基本操作1.3.1 状态查看操作1.3.2 添加操作1.3.3 暂存区删除操作1.3.4 提交操作1.3.5 查看日志1.3.6 前进后退1.3.7 reset命令的三个参数对比1.3.7 删除文件并...
2018-06-28 14:02:22 277
原创 Java8新特性-Stream API 常用完整版
流(Stream)1. 流的概念2. 流的操作步骤2.1. 创建Stream2.1.1 通过Collection 系列集合提供的串行流:stream()、并行流: paralleStream()2.1.2 通过Arrays中的静态方法stream(T[] array) 获取数组流2.1.3 通过Stream类中的静态方法 of()2.1.4 使用Stream类的静态方法 iter...
2018-06-18 19:20:23 11825 3
原创 Java8新特性-方法引用、构造器引用和数组引用
1. 方法引用1.1. 对象::实例方法名1.2. 类::静态方法名1.3. 类::实例方法名2. 构造器引用3. 数组引用1. 方法引用 若lambda体中的内容有方法已经实现了,我们可以使用‘方法引用’, 可以理解为方法引用是lambda表达式的另外一种表现形式。双冒号形式 主要有三种语法格式使用要求(注意点): - L...
2018-06-13 15:33:59 317
原创 mysql 按照指定字段的指定数据进行排序 filed函数
filed函数 filed(coulmn,str1,str2,str3…)tableA中有某一列columA,该列的值包含(0,1,2,3,4,5) 当前的需求为查询结果不包含3和5,且按2,1,0,4的规则进行排序 mysql的实现方式: select * from A where columA in(‘2’, ‘1’, ‘0’) order by FIELD(c...
2018-06-12 20:22:09 9907 1
转载 解决java下载文件中文文件名乱码问题(ie,谷歌,火狐)
解决java下载文件中文文件名乱码问题(ie,谷歌,火狐) response.setCharacterEncoding("utf-8"); response.setContentType("application/msword"); String fileName="设备.doc"; if (requ
2018-06-12 20:16:01 10879 6
原创 使用Jedis连接Redis3.x集群操作
一、实验环境:1.服务器为centos6.4版本系统2.redis安装版本为3.2.93.jedis版本为jedis-2.9.03.jedis依赖commons-pool包版本为commons-pool2-2.2.jar二、Jedis操作集群java测试代码:/** *@throwsException *redis3.x集群下的API存储 */ ...
2018-06-12 20:11:02 2376
原创 redis3.x集群-删除集群中的节点
1. 如果删除的节点是主节点,那么此节点中有哈希槽,需要把删除的节点中的哈希槽转移到其他节点中,执行下面命令,还是转移哈希槽的那个命令。1)先删除从节点# cd/usr/local/redis-3.2.9/src/# ./redis-trib.rb del-node 192.168.8.150:7000 90b99192b544286e67fdbf93d210ad98d51e14c3注意:其中的...
2018-06-12 20:10:15 1506
原创 redis3.x集群-添加新节点到集群中
1.新增一个redis,更改端口号为7006,同样放到7006文件夹中。[root@server redisCluster]#mkdir 7006[root@server redisCluster]# cp./7000/7000.conf ./7006/7006.conf[root@server redisCluster]#vi ./7006/7006.conf2.启动该redis节点服务。#...
2018-06-12 20:09:37 2523
原创 redis3.x集群的搭建
Redis3.x版本中加入了对集群的支持,其中包括sharding分片,支持master slave,支持atuo failover 自动故障切换。最主要的区别于早期3.x版本之前的是内部支持了atuo failover,当主机宕机后,备机会自动顶上变成主机。HashSolt(哈希槽)其中引入了HashSolt(哈希槽)的概念,即在集群搭建中,redis集群内部会自动地给集群中的各个redis节点...
2018-06-12 20:08:51 592
原创 Java8-Lambda表达式基础语法和内置四大核心函数式接口
Lambda表达式1. 基础语法1.1. 语法格式一 无参数,无返回值1.2. 语法格式二 有一个参数,无返回值1.3. 语法格式三 有两个或两个以上参数,有返回值2. 函数式接口2.1. 自定义一个函数式接口:2.1.1 方案一:写具体实现方法再直接使用2.1.2 方案二: 先使用lambda表示具体实现方法体,再进行接口中的方法调用,传入具体值:3. Jav...
2018-06-12 20:04:41 2559
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人