java
达不溜H
这个作者很懒,什么都没留下…
展开
-
单例模式详细介绍
单例模式详细介绍单例模式可以说只要是一个合格的开发都会写,但是如果要深究,小小的单例模式可以牵扯到很多东西,比如 多线程是否安全,是否懒加载,性能等等。1、饿汉式public class Hungry { //私有构造方法,使得别人无法new这个对象,使内存中只有一个对象 private Hungry() { } //饿汉式就是很饿,一上来就new这个对象 private final static Hungry hungry = new Hungry(); public s原创 2020-09-01 20:22:52 · 305 阅读 · 0 评论 -
Spring整合mybatis
Spring整合mybatis第一种:用sqlSessionTemplate1.引入Spring配置文件beans.xml<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http:原创 2020-08-22 23:32:52 · 122 阅读 · 0 评论 -
spring事务,声明式事务
spring事务,声明式事务事务在项目开发过程非常重要,涉及到数据的一致性的问题,不容马虎!事务管理是企业级应用程序开发中必备技术,用来确保数据的完整性和一致性。事务就是把一系列的动作当成一个独立的工作单元,这些动作要么全部完成,要么全部不起作用。事务四个属性ACID原子性(atomicity)事务是原子性操作,由一系列动作组成,事务的原子性确保动作要么全部完成,要么完全不起作用一致性(consistency)一旦所有事务动作完成,事务就要被提交。数据和资源处于一种满足业务规则的一致性状原创 2020-08-22 23:17:49 · 107 阅读 · 0 评论 -
spring实现aop的三种方式
spring实现aop的三种方式第一种,spring API实现1.首先编写我们的业务接口和实现类public interface UserService { public void add(); public void delete(); public void update(); public void search();}public class UserServiceImpl implemen原创 2020-08-22 18:09:24 · 360 阅读 · 0 评论 -
Spring Bean的作用域
Spring Bean的作用域在Spring中,那些组成应用程序的主体及由Spring IoC容器所管理的对象,被称之为bean。简单地讲,bean就是由IoC容器初始化、装配及管理的对象几种作用域中,request、session作用域仅在基于web的应用中使用(不必关心你所采用的是什么web应用框架),只能用在基于web的Spring ApplicationContext环境。1. Singleton单例当一个bean的作用域为Singleton,那么Spring IoC容器中只会存在一个共原创 2020-08-20 23:11:07 · 113 阅读 · 0 评论 -
关于SqlSessionFactoryBuilder、SqlSessionFactory、SqlSession的生命周期和作用域
我们可以先画一个流程图,分析一下Mybatis的执行过程!作用域理解SqlSessionFactoryBuilder 的作用在于创建 SqlSessionFactory,创建成功后SqlSessionFactoryBuilder 就失去了作用,所以它只能存在于创建 SqlSessionFactory 的方法中,而不要让其长期存在。因此SqlSessionFactoryBuilder 实例的最佳作用域是方法作用域(也就是局部方法变量)SqlSessionFactory 可以被认为是一个数据库连接池,原创 2020-08-18 16:01:17 · 673 阅读 · 0 评论 -
java Stream流
Stream流说到Stream便容易想到I/O Stream,而实际上,谁规定“流”就一定是“IO流”呢?在Java 8中,得益于Lambda所带来的函数式编程,引入了一个全新的Stream概念,用于解决已有集合类库既有的弊端。流式思想概述流式思想类似于工厂车间的“生产流水线”。这张图中展示了过滤、映射、跳过、计数等多步操作,这是一种集合元素的处理方案,而方案就是一种“函数模型”。图中的每一个方框都是一个“流”,调用指定的方法,可以从一个流模型转换为另一个流模型。而最右侧的数字3是最终结果。这原创 2020-08-02 17:32:38 · 285 阅读 · 0 评论 -
java常用函数式接口
常用函数式接口1.java.util.function.Supplier接口仅包含一个无参的方法:T get()。用来获取一个泛型参数指定类型的对象数据。Supplier接口被称之为生产型接口,指定接口的泛型是什么类型,那么接口中的get方法就会生产什么类型的数据public class Demo01Supplier { //定义一个方法,方法的参数传递Supplier<T>接口,泛型执行String,get方法就会返回一个String public static Str原创 2020-08-02 16:34:06 · 253 阅读 · 0 评论 -
为什么线程通信的方法wait(), notify()和notifyAll()被定义在Object类里
关于wait()、notify()的使用public class WaitDemo { public static Object object = new Object(); public static void main(String[] args) throws InterruptedException { Thread1 thread1 = new Thread1(); Thread2 thread2 = new Thread2();原创 2020-07-28 00:14:36 · 1160 阅读 · 0 评论 -
多线程——常用线程方法
1.sleep()线程休眠sleep (时间) 指定当前线程阻塞的毫秒数;sleep存在异常InterruptedException;sleep时间达到后线程进入就绪状态;sleep可以模拟网络延时,倒计时等。每一个对象都有一个锁,sleep不会释放锁;package multiplethread;public class TestThread { public static void main(String[] args) { Thread t1= new Thread(原创 2020-07-27 18:28:17 · 132 阅读 · 0 评论 -
什么叫线程安全的类
在线程安全性的定义中,最核心的概念就是 正确性。当多个线程访问某个类时,不管运行时环境采用何种调度方式或者这些线程将如何交替执行,并且在主调代码中不需要任何额外的同步或协同(自身已经实现同步),这个类都能表现出正确的行为,那么这个类就是线程安全的。简单说就是:在多线程的运行环境之下,通过一定的同步机制,保证多个线程对同一共享资源的操作能够得到正确的执行,符合这样条件的类称为线程安全的类1.StringBuffer和StringBuilder的区别StringBuffer 是线程安全的StringBu原创 2020-07-27 17:41:27 · 1066 阅读 · 0 评论 -
多线程——如何停止线程(三种方式)
方式一使用退出标识,使得线程正常退出,即当run方法完成后进程终止。private int tickeys=10; private boolean flag=true; @Override public void run() { while (flag){ try { buyTickey(); } catch (InterruptedException e) {原创 2020-07-27 16:32:30 · 3352 阅读 · 0 评论 -
java IO(五)——序列化和反序列化
序列化和反序列化概念objectoutputstream:对象的序列化流java. io. objectOutputstream extends OutputStreamobjectoutputstream:对象的序列化流作用:把对象以流的方式写入到文件中保存构造方法:objectoutputstream(OutputStream out) 创建写入指OutputStream 的objectoutputstream.参数:OutputStream out :字节输出流特有的成员方原创 2020-07-20 10:03:13 · 113 阅读 · 0 评论 -
java IO(四)——转换流
转换流1字符编码和字符集字符编码计算机中储存的信息都是用二进制数表示的,而我们在屏幕上看到的数字、英文、标点符号、汉字等字符是二进制数转换之后的结果。按照某种规则,将字符存储到计算机中,称为编码。反之,将存储在计算机中的二进制数按照某规则解析显示出来,称为解码。比如说,按照A规则存储,同样按照A规则解析,那么就能显示正确的文本符号。反之,按照A规则存储,再按照B规则解析,就会导致乱码现象。编码:字符(能看懂的)->字节(看不懂的)解码:字节(看不懂的)->字符(能看懂的)字符编码C原创 2020-07-20 09:57:11 · 136 阅读 · 0 评论 -
Java IO(三)——缓冲流
缓冲流的原理BufferedOutputStream :字节缓冲输出流java. io. BufferedOutputStream extends OutputStreamBufferedOutputStream:字节缓冲输出流继承自父类的共性成员方法:public void close() :关闭此输出流并释放与此流相关联的任何系统资源。public void flush() :刷新此输出流并强制任何缓冲的输出字节被写出。public void write(byte[] b):原创 2020-07-20 09:41:15 · 148 阅读 · 0 评论 -
java IO(二)—— 字符输入输出流
javo. io. Reader:字符输入流是字符输入流的最顶层的父类,定义了-些共性的成员方法,是一个抽象类共性的成员方法:int read() 读取单个字符并返回。int read(char[] cbuf)- 次读取多个字符,将字符读入数组。void close() 关闭该流并释放与之关联的所有资源。java. io. FileReader extends InputStreamReader extends ReaderFileReader:文件字符输入流作用:把硬盘文件中的数据以字原创 2020-07-20 09:34:12 · 227 阅读 · 0 评论 -
java IO(一)——文件输入输出流
java IO硬盘和内存1.字节输出流1.1字节输出流OutputStream和FileOutputStream 类介绍java. io. OutputStream:字节输出流此抽象类是表示输出字节流的所有类的超类。定义了一些子类共性的成员方法:public void close() : 关闭此输出流并释放与此流相关联的任何系统资源。public void flush() :刷新此输出流并强制任何缓冲的输出字节被写出。public void write(byte[] b):将b原创 2020-07-20 09:23:24 · 645 阅读 · 0 评论 -
解决fileReader读取文件乱码
解决fileReader读取文件乱码idea默认编码格式是utf-8(标准万国码的一种),而Windows操作系统默认是GBK(中文码表),如果fileReader读取系统中的文件,则无法将字节转换为字符,此时会出现乱码。如果用转换流InputStreamReader读取文件,它可以指点编码表,也就是说可以指定任意一个编码,把字节转换为字符,这时就不会出现乱码。过程...原创 2020-07-19 17:28:37 · 2084 阅读 · 1 评论 -
HashMap(三)底层源码分析
HashMap核心属性分析 /** * The default initial capacity - MUST be a power of two. * 默认散列表数组长度 */ static final int DEFAULT_INITIAL_CAPACITY = 1 << 4; // aka 16 /** * The maximum capacity, used if a higher value i原创 2020-07-17 15:33:13 · 109 阅读 · 0 评论 -
红黑树面试必备,查询插入删除,多情景多图详细介绍
红黑树性质解释性质性质3的(NIL)也就是NULL,是叶子节点,黑色的。性质5,如F节点,高度是3,包含NIL->K->F,NIL->H->D->F,NIL->M->D->F,每个路径的黑节点都只有2性质6由以上解释的性质5可以推出黑色完美平衡红黑树并不是一个完美平衡二叉查找树, 从图上可以看到,根结点P的左子树显然比右子树高,但左子树和右子树的黑结点的层数是相等的,也即任意一个结点到每个叶子结点的路径都包含数量相同的黑结点(性质5)。所以我们叫原创 2020-07-15 23:59:30 · 367 阅读 · 0 评论 -
HashMap (二)HashMap底层源码图文讲解
HashMap (二)HashMap源码讲解1.继承体系是什么样的?2.Node数据结构分析?HashMap内部有一个Node(Entry)的内部类,其中有四个属性,我们要存储一个值,则需要一个key和一个value,存到map中就会先将key和value保存在这个Node类创建的对象中。static class Node<K,V> implements Map.Entry<K,V> { final int hash; //通过key算过来的你hashcod原创 2020-07-15 17:31:51 · 202 阅读 · 0 评论 -
HashMap(一)基础入门 了解HashMap数据结构和哈希的概念
HashMap(一)基础入门 了解其数据结构和哈希1.数组的优势/劣势优势:查询快。数组的内存是连续的,每一块空间是一样大的,从结构上可以看到优点就是索引快,从下标0,1,2,3……就可以查询到指定的内容劣势:增删慢,如果增加时内存不足还要进行扩容,删除大部分时候要进行数组的拼接,比较麻烦。2.链表的优势/劣势链表不是连续的内存,每一块内存里面有一个引用,去保留下一个内存的地址。优势:增删快,一般增加删除的时候只要把引用的修改就可以了劣势:链表没有index,查询的时候要逐一对比,速度慢原创 2020-07-15 17:27:54 · 283 阅读 · 0 评论 -
三分钟明白什么是java的多态
多态多态性是OOP中的一个重要特性,主要是用来实现动态联编的,换句话说,就是程序的最终状态只有在执行过程中才被决定而非在编译期间就决定了。这对于大型系统来说能提高系统的灵活性和扩展性。个人理解:多态:同一个方法可以根据发送对象的不同而采用多种不同的行为方式。一个对象的实际类型是确定的,但可以指向对象的引用的类型有很多。多态可以让我们不用关心某个对象到底是什么具体类型,就可以使用该对象的某些方法,从而实现更加灵活的编程,提高系统的可扩展性。允许不同类的对象对同一消息做出响应。即同一消息可以根据发原创 2020-07-14 11:30:25 · 216 阅读 · 0 评论 -
详细介绍java字符串常量池,3分钟学会
字符串常量池在介绍字符串常量池之前,先引入一个知识String str="a";str="b";String str2="c";str2=str2+str;都说String是不可变的,那为什么str可以从"a"变为"b"; 还有将"c"和"b"相加?其实并不是改变值,而是重新开辟了一个"b";首先开辟一个"a",str=“b"后,开辟一个"b”,将str指向"b"String str2=“c”,开辟一个"c",当str2=str2+str,开辟"cb",将str2指向"cb"所以并不原创 2020-07-14 11:15:07 · 576 阅读 · 0 评论 -
Java常用类String类介绍,看这篇就够了
java常用类 StringString 类代表字符串。Java 程序中的所有字符串字面值(如 “abc” )都作为此类的实例实现。 字符串是常量;它们的值在创建之后不能更改。字符串缓冲区支持可变的字符串。因为 String 对象是不可变的,所以可以共享。String源码public final class Stringimplements java.io.Serializable, Comparable<String>, CharSequence {}String的成员变量原创 2020-07-13 19:02:45 · 196 阅读 · 0 评论 -
通俗理解java自动装箱和拆箱
自动装箱和拆箱1.包装类的介绍虽然 Java 语言是典型的面向对象编程语言,但其中的八种基本数据类型并不支持面向对象编程,基本类型的数据不具备“对象”的特性——不携带属性、没有方法可调用。 沿用它们只是为了迎合人类根深蒂固的习惯,并的确能简单、有效地进行常规数据处理。这种借助于非面向对象技术的做法有时也会带来不便,比如引用类型数据均继承了 Object 类的特性,要转换为 String 类型(经常有这种需要)时只要简单调用 Object 类中定义的toString()即可,而基本数据类型转换为原创 2020-07-13 10:29:30 · 136 阅读 · 0 评论 -
Object类的equals()方法与String类中的equals()方法。
Object类的equals()方法与String类中的equals()方法。Object类public boolean equals(Object obj) { return (this == obj);}Object中的equals方法是直接判断this和obj本身的值(地址)是否相等,即用来判断调用equals的对象和形参obj所引用的对象是否是同一对象,所谓同一对象就是指内存中同一块存储单元,如果this和obj指向的hi同一块内存对象,则返回true,如果this和obj指原创 2020-07-12 20:29:53 · 587 阅读 · 0 评论 -
简述break与continue的区别
break & continue1、break 关键字break 主要用在循环语句或者 switch 语句中,用来跳出整个语句块。break 跳出最里层的循环,并且继续执行该循环下面的语句。也就是说如果有多层循环,break只跳出当前这一层的循环。int a=0;for(int i=0;i<=9;i++){ for(int j=0;j<=9;j++) { break; //跳出本层的循环 a++; } a++;原创 2020-07-11 10:46:30 · 5880 阅读 · 0 评论 -
scanner类next和nextline的区别
public static void main(String[] args) { //创建一个扫描器对象,用于接收键盘数据 Scanner scanner = new Scanner(System.in); //next方式接收字符串 System.out.println("Next方式接收:"); //判断用户还有没有输入字符 if (scanner.hasNext()){ String str = scanner.next(); System.out.printl原创 2020-07-10 16:07:57 · 154 阅读 · 0 评论 -
浮点数使用总结
浮点类型float, double的数据不适合在不容许舍入误差的金融计算领域。如果需要进行不产生舍入误差的精确数字计算,需要使用BigDecimal类。由于字长有限,浮点数能够精确表示的数是有限的,因而也是离散的。浮点数一般都存在舍入误差,很多数字无法精确表示,其结果只能是接近,但不等于;二进制浮点数不能精确的表示0.1,0.01,0.001这样10的负次幂。并不是所有的小数都能可以精确的用二进制浮点数表示。最好完全避免使用浮点数比较 !大数值:Java.math下面的两个有用的类:BigInt原创 2020-07-10 12:34:43 · 666 阅读 · 0 评论