- 博客(21)
- 收藏
- 关注
原创 Java Stream的讲解
Stream的概述Stream是java 8新增的特性,用来补充集合类。Stream就是流,流中的数据元素的数量可以是有限个数,也可能是无限个数。Stream的特性不存储数据:流失基于数据源的对象,它本身不存储数据元素,而是通过管道蒋淑媛的元素传递操作。函数式编程:流在每一级的操作中,都会新创建一个副本,例如执行filter不会将数据源中的数据进行删除。具有顺序不可逆性:每一个级别的操作都是按照编写的顺序进行的,下一个操作会基于上一个操作。流的创建方法使用Collection.stre
2021-06-27 17:32:39
408
原创 Mybatis超容易理解!!
mybatis 含义:mybatis是一个用来将java数据持久化到数据库的,因为java是运行在jvm中的,一断电,数据就会丢失。所以要进行持久化操作(持久化,意思是将数据写在一些磁盘文件之中,例如文件,数据库。)而mybatis就是做这件事情!但是mybatis不是直接对java数据进行操作的!!!其实java开发商,为了可以进行java数据的持久化,开辟了一个模块叫JDBC,这个模块上层对java编程折(java程序员,给程序员们提供一些操作接口,供程序员进行调用,持久化的目标。下层对应数据库厂商,
2021-01-28 19:10:27
425
原创 java并发----多线程超级简单理解入门
多线程的背景以及为什么用多线程线程事基本的调度单位,一个线程只能在一个cpu上跑,而一个cpu在某一个时刻也只能跑一个线程。由于线程在cpu上跑的时候,如果是进行一些不需要cpu参与的操作,例如是磁盘的io,或者是网络上的io的时候。由于不需要cpu的参与,如果是一个进程只有一个线程,也就是单线程的话,那么整个进程就会被阻塞(相当于卡顿)。**然而,在一个进程能开启多个线程—也就是进行并发,当cpu在处理某个线程的时候遇到磁盘io或者是网络上的io时,就可以被操作系统切出cpu,,让其他线程去执行。。.
2021-01-11 13:58:41
344
原创 对象头问题
对象头是每个对象的头部!!对象=对象头(12字节)+每个成员变量的属性(未定,int4字节,char2字节等)+补齐字段!补齐字段将对象的大小补成8的倍数的字节!64位的cpu的对象头的示意图,总共对象头占128位,其中markword(64位)+classPonter(64位,但是有可能采用了压缩算法存储class的地址,变成了32位)蓝色为对象的hashcode,与绿色部分相对应,绿色部分是十六进制的,其中左下绿色是7位的(首位为未用值),cpu采用低位存储的方法,依次为014ae5a5和h
2020-11-16 00:18:31
192
原创 线程八锁问题超简单理解
在并发的环境中,锁机制一个良好的控制同步的方法,使用synchronize关键字对临界资源的锁,在普通的成员方法中添加锁的是调用该方法的对象public synchronized void Sem(){//普通同步的发邮件的方法 System.out.println("发邮件"); },而在静态方法中使用 则锁的整个类对象(类对象是在class加载的时候进行创建的,每一个类只用有一个)public static synchronized void Sem(){//普通同步的发邮件的方法 System.out
2020-11-15 16:59:49
300
原创 适配器设计模式
适配器设计模式适配器模式是将一个类的接口转化成另一个目标 客户端期望的另一个接口,使得原本两个不相容的接口可以协同工作。例如:我们生活中的手机充电器!!我们家用的电压是220V,但是手机的充电电压是5V,不能直接使用220伏的电压给手机充电,在充电器中,将220V的电压转变为5V.使得我们可以用220v的电压进行充电,,这就是适配者模式,,简单来说就是转换器!总共有3种的适配者器模式,,类适配器模式对象适配器接口适配器模式类适配器:VoltageAdapter(适配器类):实现Volt
2020-11-01 22:52:55
131
原创 建造者模式
建造者模式的学习建造者模式主要是为了保证目标对象的正确创建,例如在构建一个人物对象的时候,假如人物分为头,躯干,左手,右手,左脚,右脚,6个部分,分别通过makehead(),makebody(),makeleftHand()等,假如我们一步步地调用这6个方法,就怕忘了调用某一个方法,而且某些方法要在某个方法前面,,例如要现有头再有躯干等。那么这个人物对象就是缺胳膊少腿的了,,还有就是每个人物的头,躯干等不尽相同,应该有所差异。**所以建造者模式就来了!!**我们将要调用哪些方法和特定的调用顺序交给另一
2020-10-31 23:34:16
134
原创 设计模式之原型模式和浅拷贝,深拷贝
原型模型原型模型是一种创建型(为了合理创建对象而设计的模式)的设计模型,,用来处理代码中,复制对象的操作。Spring 中原型 bean 的创建,就是原型模式的应用不使用原型模型设计模式: Pet pet=new Pet("小虎","22");//一个普通对象 //企图复制10个pet,通过get例子中的属性,调用构造方法 Pet pet1=new Pet(pet.getName(),pet.getAge()); Pet pet2=new Pet(pet.getN
2020-10-31 10:44:23
268
原创 红黑树
在学习红黑树之前,先了解2-3树2-3树是指一个结点有2个value和3个子树(因为可以有3个子结点,所以是2-3树中的3树),而2-3树中的2树就是我们的二叉树中的结点(一个value和两个子树)由于2-3树的修改方法实在是过于繁琐,因为要考虑到不同的修改情况,有无3结点子树,都会是2-3树变得很复杂,为了简化逻辑结构,引入了红黑树红黑树:实质上是一个二叉树,红黑树的“红”是指部分结点与它的子结点的左倾斜的连接时红色的,只能是左斜线,而红黑树中的“黑”是指除了红色的连接线外,其他是黑色的。
2020-10-29 14:59:00
137
原创 工厂模式
简单工厂,工厂方法,抽象工厂1简单工厂模式,创建型,由对象工厂将类的实例进行创建。将创建对象的方法进行了,包装使之成为了一个类。一个简单的工厂类package simpleFactory;public class SimpleFactory { public Pizza createPizza(String orderType) { Pizza pizza = null; System.out.println("使用简单工厂模式"); if
2020-10-29 14:57:11
98
原创 代理模式
1静态代理静态代理是指:已经写死的代理模式,简单思维分析:有一个功能要实现例如是:租房的功能,那么就会有一个“租房”的接口,在java中功能就是接口啊。package staticProxy.demo1;public interface Rent { public void rent();}一个真实的类房东类,必然具有“租房”的功能,所以实现这个接口package staticProxy.demo1;//房东实体类public class Host implements Ren
2020-09-27 09:57:11
104
原创 GC垃圾回收
GC垃圾回收,不能手动,只能自动,但是可以提醒gc的作用范围:堆中在JVM进行GC时,并不是对这新生区,养老区和永久区都进行GC,回收的都是新生代。GC的两种:轻GC(普通的GC),重GC(全局的GC)GC的算法主要有:标记清除法,标记压缩法,引用计数器法。以下时引用计数器法,耗时,耗资源,因为要进行标记操作和预留标记的位置。...
2020-08-29 15:47:13
283
原创 Collection容器体系
Collection是容器的根接口,代表一组对象,成为集合,根据子接口的特点分为:有序,有下标,元素可重复的List接口:(之下还包括,ArrayList的顺序列表,LinkList链式接口);无序,无下标,不可以重复的Set集合:set集合之下有无序的HashSet和有序的TreeSet(该类继承了一个SortSet的接口,所以有序)有序是指添加的顺序和遍历的顺序是一致的。Collection之中保存的是引用类型,int型会自动装箱位Integer型,如果是对象的话,保存的是该对象的地址。Co
2020-08-28 00:25:01
217
原创 Set以及其实现类
set:无序:是指添加元素的顺序和遍历的顺序不一致,无下标,不可重复,因为没有下标,所以不可以使用for i进行遍历package Set;import java.util.HashSet;import java.util.Iterator;import java.util.Set;public class TestSet { public static void main(String[] args) { //创建一个集合 Set<String&
2020-08-28 00:23:47
398
原创 线程优先级,守护线程
线程优先级package com.heal.Thread_test;public class TestPriority { //测试线程的优先级 public static void main(String[] args) { System.out.println(Thread.currentThread().getName()+"--------->"+Thread.currentThread().getPriority()); MYpriority
2020-08-27 13:52:29
145
原创 线程同步
同步方法就如同我们可以通过private关键字来保证数据对象只能被方法访问,我们可以针对线程方法提出一套机制,就是synchronized关键字,对于这个关键字,有两种用法,分别是:synchronized方法和synchronrized代码块例子 public synchronized void method(int args){}synchronized方法控制“对象”的访问,每个对象对应一把锁,每个synchronized方法都必须获得该方法的对象的锁才能执行,否则线程就会阻塞,,方法一旦执行,
2020-08-27 13:52:09
118
原创 线程的死锁与lock锁
死锁概念:两个线程都占据对方运行必须获取的资源,由不想释放出来,导致最后两个线程都占着一半的线程呆着。(就像获得“倚天剑‘和’屠龙刀‘“就可以称霸武林,结果拥有倚天剑的一方和拥有屠龙刀的一方都不肯交给对方,又不能抢,,最后啥都,没有发生,还是让他们各自占着宝物!!)多个线程一样适用该理论。package com.heal.Thread_test.syn;public class deadLock { public static void main(String[] args) {
2020-08-27 13:51:15
217
原创 线程的使用方法
线程的停止方法很多,由本身自带的stop和destroy方法,但是这些方法已经在jdk中停止使用了。我们可以通过1设置标志位,,2使用次数停止package com.heal.Thread_test;public class TestStop implements Runnable { private Boolean flag=true; @Override public void run() { int i=0; while(flag){
2020-08-27 13:50:55
263
原创 多线程的基础
多线程的简单实例多线程意味着在同一个时间内,有多个任务一起执行,有可能执行一下a任务再执行一下b任务。在Java中 想使用多线程有3种方式1继承一个已经写好的线程类,Thread类(处于Java的lang包之中),继承该类之后就会具有线程的特性,其实Thread类也是实现runnable接口来的,重写run()方法2是实现一个runnable的接口。重写里面的run()方法3是实现一个callable接口,这一实现 与runnable不同,这一实现的run方法具有布尔返回值继承Thread的类
2020-08-27 13:50:24
246
原创 生产者和消费者问题+线程池
生产者和消费者问题生产者:负责生产数据的模块(可以是方法,对象,或者是线程)消费者:负责处理数据的模块可以是方法,对象,或者是线程)缓冲区:消费者不能直接地使用生产者的数据,他们之间有一个缓冲区,消费者从缓冲区中取出数据。管程法:利用缓冲区package com.heal.ProductAndConsumer;//测试生产者和消费者,使用管程法public class TestPC01 { public static void main(String[] args) {
2020-08-27 13:49:59
490
原创 ## spring boot简单整合mybatis
1先建立一个简单的maven项目,添加相应的依赖。其中有spring boot的父依赖<parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.0.7.RELEASE</version> </parent>(主要是用来制裁整个spring b
2020-08-24 21:54:43
118
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅