自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(53)
  • 收藏
  • 关注

原创 java-Stream原理及相关操作详解(filter、map、flatMap、peek、reduce、anyMatch等等)

Stream流本质上是一个执行计算的过程,将流当中的中间操作组成一个流管道的形式,流管道由源(可能是数组,集合,生成器函数,I / O通道等),零个或多个中间操作 (将流转换为另一个流,如filter(Predicate) )组成,以及终端操作 (产生结果或副作用,例如count()、forEach(Consumer) 、collect(?

2024-04-05 15:29:09 2582

原创 java 函数式编程(Function、Supplier、Predicate、Consumer)

java 函数式接口,Function、Supplier、Consumer、Predicate

2024-03-29 00:41:40 1407 1

原创 Java中将科学计数法转为double

java 科学计数法转为 double

2022-12-01 16:41:41 3118 1

原创 令人头疼的HashMap

目录HashMap简介通过内部内Node节点来包装数据HashMap中的成员变量接下来聊一聊HashMap的构造方法HashMap的put方法HashMap的get方法HashMap扩容HashMap简介JDK1.8之前,HashMap的底层是数组+链表,JDK1.8之后底层是由数组+链表+红黑树组成,当链表长度到达一定时,会转化为红黑树,查找的效率由之前的链表查找O(n) 变为红黑树O(log n),查询元素的效率有所提高通过内部内Node节点来包装数据static class Node&lt

2021-08-12 19:22:40 385

原创 浅谈LinkedList

概述LinkedList底层是双向量表结构,实现了List和Queue接口,内部用Node来包装数据,Deque双端队列,继承了Queue接口,在Queue的基础上做了很多的扩展,可以在两端进行插入和删除,使得Deque数据结构非常灵活.使用方式List<Integer> list = new LinkedList<>(); //数组使用Queue<Integer> queue = new LinkedList<>();//队列使用Deque&lt

2021-08-11 20:27:15 244

原创 浅谈java.util.ArrayList

目录ArrayList的成员变量ArrayList构造器add()方法执行流程数组扩容 growremove()ArrayList的成员变量 //数组的默认容量大小 private static final int DEFAULT_CAPACITY = 10; //当传入数组大小为0时,创建的数组 private static final Object[] EMPTY_ELEMENTDATA = {}; //默认使用无参构造器时创建的数组 private st

2021-08-11 14:11:07 6622

原创 Arrays.copyOf()和System.arraycopy()方法

目录一级目录二级目录三级目录System.arraycopy()方法实现复制Arrays.copyof()方法实现复制总结一级目录二级目录三级目录System.arraycopy()方法实现复制System中提供了一个native静态方法arraycopy(),可以使用这个方法来实现数组之间的复制。该方式复制是属于浅拷贝.public static native void arraycopy(Object src, int srcPos,

2021-08-11 11:16:12 732

原创 方法重载和方法覆盖

目录方法重载方法覆盖(重写)方法重载当一个类中的“功能1”和功能“2”相似的情况下,可以考虑将方法进行重载,重载必须满足的三个条件条件1:在同一个类中,条件2:方法名相同条件3:方法的参数列表不同(个数,顺序,类型)方法覆盖(重写)什么是方法覆盖?当子类继承父类之后,父类的方法达不到或者不符合子类在开发中的要求和效果,就可以对父类的方法进行覆盖方法覆盖不需要满足的是两个类之间有继承关系,方法的覆盖只能覆盖父类型 的方法,属性和构造方法都不能进行覆盖因为子类继承父类不能继承父类的构造方法

2021-08-08 20:37:38 179

原创 Linux 常用指令

Linux系统目录结构登陆系统后,我们输入 ls / 命令后即可查看系统当前目录树状目录结构,Linux中所有的资源都是挂在这 “ / ”目录的节点上对于各个目录的解释如下:/bin:bin是Binary的缩写, 这个目录存放着最经常使用的命令。/boot: 这里存放的是启动Linux时使用的一些核心文件,包括一些连接文件以 及镜像文件。/dev : dev是Device(设备)的缩写, 存放的是Linux的外部设备,在Linux中访问设备的方式和访问文件的方式是相同的。/

2021-08-07 14:35:27 372

原创 java多线程 -- 线程池

一 什么是线程池简单理解就是装有线程的池子,和数据库连接池的概念是一样的.事先准备好一资源,当有人需要用的时候,直接过来资源,用完之后将资源归还,通过线程池可以达到多个线程的复用程序的执行肯定会消耗占用系统的资源,我们可以通过池化技术(线程池)来优化资源的使用,使线程复用,这样可以大大降低资源的消耗,提高系统响应速度,更方便我们管理线程,二 线程池的使用我们可以通过ThreadPoolExecutor来创建一个线程池:我们来分析一下源码public ThreadPoolExecutor(int

2021-07-31 14:06:54 385

原创 java创建线程的方式

继承Thread类实现多线程public class ThreadTest01 { public static void main(String[] args) { //main方法,这里的代码属于主线程,在主栈中运行 MyThread myThread = new MyThread(); myThread.start(); //这里的代码还是运行在主线程中 for (int i = 0; i < 1000; i

2021-07-18 14:03:40 138

原创 MyBatis动态sql

动态sql动态 sql 是Mybatis的强大特性之一,能够完成不同条件下不同的 sql 拼接。其实本质就是根据不同的的条件生成不同的sql语句,本质依然是sql语句,只是在sql层面,增加了一些逻辑语句

2021-07-18 10:54:37 195 1

原创 MyBatis缓存

1. MyBatis缓存1.1缓存简介缓存就是对用户查询结果的一个保存,保存到内存当中,当我们再次查询相同数据的时候,就不用从磁盘上(关系型数据库文件)进行查询,减少与数据库的交互次数,从而减少系统的开销,提高系统效率1.2 MyBatis缓存Mybatis包含了一个非常大的查询缓存特性,它可以非常方便的定制和配置缓存,缓存可以极大的提升查询效率,Mybatis系统中默认定义了两个缓存:一级缓存和二级缓存默认情况下,只有一级缓存开启,(sqlSession级别的缓存,也成为本地缓存)二级缓

2021-07-13 11:51:05 120

原创 mybatis 一对多,多对一处理

一 多对一的处理在sql中存在者一对多或者多对一的关系,比如说学生和老师之间,多个学生对应一个老师对于学生而言,就是和老师之间就是多对一的关系,对应关联的对于老师而言,可以和多个学生之间产生关系,相当于集合1.1 创建表CREATE TABLE `teacher` ( `id` INT(10) NOT NULL, `name` VARCHAR(30) DEFAULT NULL,

2021-07-06 17:06:05 137

原创 MyBatis 配置文件参数解析

一 核心配置文件mybatis-config.xml MyBatis的配置文件包含了会深深影响 MyBatis行为的设置和属性信息配置文档的顶层结构如下:configuration(配置)properties(属性)settings(设置)typeAliases(类型别名)typeHandlers(类型处理器)objectFactory(对象工厂)plugins(插件)environments(环境配置)environment(环境变量)transactionManager(事务

2021-07-06 16:32:12 375

原创 MyBatis 快速入门

一 MyBatis简介MyBaties是一款优秀的持久层框架,他支持定制化sql,存储过程以及高级映射,Mybatis避免了几乎所有的JDBC代码和手动设置参数以及获取结果集.Mybatis可以使用简单的XML或注解来配置和原生类型,接口和java的POJO(Plain odl java object) 为数据库中的记录MyBatis本事apache的一个开源项目iBaties,2010年这个项目由apache software foudation 迁移到了google code 并改名为mybatie

2021-07-06 16:11:45 119

原创 spring AOP

Spring AOP概述Spring AOP 意为面向切面编程,以程序预编译方式和运行期动态代理的方式在不修改源代码的前提下程序动态的新添加功能的一种技术,AOP的原理是动态代理,个人认为学习AOP之前一定要先掌握动态代理技术,静态/动态代理模式AOP把软件系统分为两个部分:核心关注点和横切关注点。业务处理的主要流程是核心关注点,与之关系不大的部分是横切关注点。横切关注点的一个特点是,他们经常发生在核心关注点的多处,而各处基本相似,比如权限认证、日志、事物。AOP的作用在于分离系统中的各种关注

2021-07-04 15:14:13 147

原创 静态/动态代理模式

代理Proxy:Proxy代理模式是一种结构型设计模式,主要解决的是直接访问对象带来的问题代理模式也就是:当两个类需要通信的时候,引入了第三方的代理类,将两个类的关系解耦,我们只需要了解代理类即可我们举一个通俗的例子:“客户租房子”, 客户需要租房子,房东需要把房子出租,房东要把房子租出去需要出租方(也就是房东)到房产管理部门办理备案,另外,还需要向税务部门申报,缴纳房产税、所得税 ,这个过程是十分麻烦的,于是房东可以把出租的信息交给中介去做,这个中介就是代理,房东只需要向中介提供租房的信

2021-07-02 21:03:10 214 1

原创 spring-IOC总结

文章目录一.Spring 简介二 Spring IOC2.1 IOC 理论思想2.2 IOC理论推导2.3第一个spring程序三. DI 依赖注入3.1基于构造器的依赖注入3.2 基于setter 的依赖注入3.2.1 直接值得注入 (String name)3.2.2 其他Bean对象注入 (private Address address)3.2.3 数组注入3.2.4 List集合注入3.2.5 Set集合的注入3.2.6 Map结合的注入一.Spring 简介Spring专注于为企业应用提供

2021-07-02 14:49:43 617

原创 JVM 学习总结

一 JVM简介1.1 什么是JVMJVM : java virtual Machine java虚拟机虚拟机是指通过软件模拟具有硬件功能,并且运行在完全隔离环境中的计算机系统1.2 java进程与JVM的关系我们写好的java代码通过javac命令编译为.class字节码文件,编译完成之后,java命令,启动java进程,初始化VM参数并启动JVM ,JVM进行入口类的类加载,启动线程执行main方法,JVM并不会直接执行main方法,而jvm会先将编译完成的字节码指令进一步翻译,解释为机

2021-06-23 20:40:50 617 1

原创 Spring学习总结

文章目录1,Spring简介1.1 Spring优点2.IOC理论推导3 HelloSpring4 IOC创建对象的方式1.使用无参构造创建对象,默认是无参构造方法2.使用有参构造创建对象5: Spring配置5.1,别名5.2,Bean的配置5.3,import导入6: DI依赖注入6.1构造器注入6.2set方式注入[重点]6.3 扩展方式注入7.Bean的自动装配7.1测试7.2ByName自动装配7.3 ByType自动装配7.4 使用注解实现自动装配@Autowired@Nullable1,Sp

2021-06-22 11:13:20 1114

原创 浏览器输入一个url发生的事情

在浏览器输入一个url发生的事情例如输入:https://www.baidu.com/主机:1.当浏览器输入百度的url之后,基于DNS协议将百度服务器的域名转为ip地址,https的默认端口是4432.封装:<1>:应用层.应用程序(浏览器)将数据封装为https协议格式的数据<2>:传输层:操作系统将应用层传输的数据封装位TCP协议格式的数据,传输层包含端口号<3>:网络层:操作系统封装为IP协议格式的数据:包含ip地址<4>:数据链路层

2021-05-27 15:09:44 128 1

原创 转发和重定向的区别(forward,redirect)

转发和重定向的区别一句话:转发是服务器行为,重定向是客户端行为转发和重定向的过程:客户端浏览器发送http请求---->web服务器接收此请求---->调用web容器内部的方法在容器内部完成请求处理和转发动作,---->将目标资源发送到客户端浏览器.就好比A同学对B同学说:想看一下C同学的笔记,于是B同学把C的笔记拿过来抄了一份,B将笔记给了A同学,这就是转发.而对于重定向来说,B同学是直接告诉A:"C现在在哪,你自己去找C要吧"从地址栏分析forward是服务器请求资源,服

2021-05-27 09:00:53 167

原创 牛客因子个数 java实现

题目描述:链接:https://www.nowcoder.com/questionTerminal/e8fb8f89f5d147ec92fd8ecfefe89b0d来源:牛客网一个正整数可以分解成一个或多个数组的积。例如36=223*3,即包含2和3两个因子。NowCoder最近在研究因子个数的分布规律,现在给出一系列正整数,他希望你开发一个程序输出每个正整数的因子个数。输入描述:输入包括多组数据。每组数据仅有一个整数n (2≤n≤100000)。输出描述:对应每个整数,输出其因子个

2021-05-26 15:47:15 336

原创 网络学习总结

一.进程之间的通信从IP来说,通信的两段是两台主机,IP数据报明确的标志了这两台主机的ip地址,但这两台主机之间的通信说法并不清楚真正的进程通信是指在实体主机中的进程,是这台主机到另一台主机中的一个进程在交换数据(及通信),也就是说,端口到端口之间的通信是进程之间的通信二:复用和分用假设我的主机现在有两个进程一个qq一个微信,你的主机也有qq和微信两个进程那么此时可以使用同一个运输层协议传送数据,(当然要加上适当的首部)也就是说复用就是:在发送方不同的应用进程之间可以使用同一个运输层协议传输数

2021-05-25 19:17:18 217

原创 数据结构常见排序

文章目录插入排序插入排序代码实现

2021-04-01 20:07:19 192

原创 java 实现堆(优先级队列)

public class MyPriorityQueue { /** * 堆的向下调整 * @param arr 数组,进行堆的向下调整 * @param parent 为父节点,也就相当于数组的第一个元素下边 */ public static void shiftDown(int[] arr,int parent){ //按照大堆的方式来实现; //首先的记录孩子的节点位置,parent元素的下表是0

2021-03-26 15:42:19 200

原创 java实现栈和队列(简易版)

顺序表实现栈public class MyStack { private int capacity = 100; private int[] data = new int[capacity]; private int size = 0; //入栈 public void push(int val){ //大于长度之后进行扩容 if(size >= data.length){ //进行扩容

2021-03-10 10:40:14 93

原创 java SE面向对象思维导图

2021-01-28 21:58:35 547 1

原创 java中的异常机制

什么是异常?public class ExceptionTest01 { public static void main(String[] args) { int a = 10; int b = 0; int c = a/b; System.out.println(a + "/" + b +" = " + c); }}运行结果为Exception in thread "main" java.lang.Arithmet

2021-01-25 21:06:01 128

原创 java中的继承和多态

继承继承直观来说:现实生活中父亲很有钱,儿子就可以不用努力,直接拥有父亲的钱,在java中子类拥有父类中属性和方法(私有的不能被继承)叫做继承.子类继承父类之后,代码就得到了复用,但主要的作用是有了继承才有多态和方法覆盖.继承的相关特性1:B类继承A类,则称类为超类(superclass) 、 父类、基类B类则成为子类(subclass)、派生类、扩展类2:java中只支持单继承3:java中的类没有显示的继承任何类,则默认继承Object类,Object类java提供的根类,老祖宗。也就是说

2021-01-24 19:55:18 237

原创 java中String类的常用方法

构造方法String 类型的构造方法String s = “”; 最常用String s = "hello";2,String s = new String("");String s = new String("hello");3,String s = new String(char数组);char[] chars = {'你','好'};String s = new String(chars)4,String s = new String(char数组,起始下标,长度

2021-01-20 10:40:07 218

原创 java中的类和对象(它来了~~~)

这里写目录标题面向对象和面向过程面向过程面向对象类和对象什么是类什么是对象构造方法面向对象和面向过程面向过程-面向过程主要是每一步和每一步的因果关系,当我们需要实现一个功能,第一步要干什么,第一步完成之后,在第一步的基础上第二步需要完成什么,第二步完成了,在第二步的基础上完成第三步,每一步和每一步之间都有一中因果关系结合到一起.就叫做面向过程.-明显就可以发现面向过程的问题了,当一步走错之后,那接下来的每一步都会发生问题,那么整个系统的运转就会出现问题,代码的耦合度太高了,导致代码的扩展力很差.

2021-01-11 11:39:24 112

原创 方法重载它来啦~~~~

目录当程序不使用方法重载机制时使用方法重载机制解决之前的矛盾`总结什么时候使用方法重载?什么时候会发生代码重载?当程序不使用方法重载机制时public class OverloadTest01 { public static void main(String[] args) { int result1 = sumInt(11,23); System.out.println(result1); long result2 = sumLong(12343

2020-12-29 20:11:30 98

原创 方法执行过程中内存的变化

目录栈内存结构java中的栈是什么栈内存的图示栈内存的特点:方法调用的过程栈内存结构java中的栈是什么栈是JVM中的一块特殊的内存区域,而JVM也是操作系统创建出来的一个进程,对于每一个程序来说,内存的使用都要通过操作系统来管理,java为了让内存管理起来更加方便,在JVM启动的时候,直接从操作系统中申请一大块内存,自行管理JVM对申请到的一大块内存进行进一步的区域划分,其中的一块区域就叫做栈。栈内存:方法调用的时候,该方法需要的空间在栈内存分配;方法不调用的时候不会再栈中分配空间的方法只

2020-12-29 14:41:45 241

原创 java中this关键字

1、我们了解this作用之前,先了解this是什么?在内存方面是怎样的?其实呢this是个变量,是个引用,保存当前对象的内存地址,指向自身。this代表的就是“当前对象”;它是存储在堆内存中当前对象的内部一个对象一个this在内存中的存在:需要注意的是图中只画了类中的一个对象。我们再创建个对象,也是一样的,this还在对象内部,只不过这个对象的地址改变了而已,当然this所指的地址也会改变,假如这里我们创建了个对象为c2,那this所指的地址和c2也是一样的,这个对象地址是什么,this所指的

2020-12-09 09:40:59 343 2

原创 java中static关键字(详解)

static修饰变量class People{ String name; String county; int id; public People(){ } public People(String name,String county,int id){ this.name = name; this.county = county; this.id = id; }}public class Test

2020-12-03 23:27:32 370 3

原创 Java语言特性以及编译和运行

这里写目录标题java语言的特性【开源、免费、纯面向对象、跨平台】简单性:面向对象:可移植性:多线程健壮性:安全性java的加载与执行编译阶段运行阶段JDK、JRE、JVM的关系java语言的特性【开源、免费、纯面向对象、跨平台】简单性:相对而言的,java中不再支持多继承,c++中支持多进程,c++中有指针,java中已经屏蔽了指针的概念java语言的底层是c++,而不是c语言。面向对象:java是纯粹面向对象的,更符合人的思维模式。可移植性:什么是可移植性?java程序可以说是一次编译

2020-12-02 11:51:00 608 4

原创 文件操作

文件操作1、IO流什么是文件程序文件数据文件文件名文件类型文件的打开关闭文件的随机读写文件缓冲区1、IO流什么是IO流呢?简单地说就是文件的输入和输出I :Input;O :Output;通过IO可以完成硬盘文件的读和写。什么是文件磁盘上的文件是文件。但是在程序设计中,我们一般谈的文件有两种:程序文件、数据文件程序文件包括源程序文件(后缀为.c),目标文件(windows环境后缀为.obj),可执行程序(windows环境后缀为.exe)。数据文件文件的内容不一定是程

2020-11-27 13:04:19 178 3

原创 结构体、位段、枚举、联合

目录结构体1、结构体的基础知识2、结构体变量的定义和初始化3、结构体成员的访问4、结构体传参位段1、什么是位段3、位段的应用3、总结枚举1、什么是枚举2、枚举类型的定义3、枚举的优点联合(共用体)1、联合类型的定义2、联合的特点面试题3、联合大小的计算结构体1、结构体的基础知识结构体是一些集合,这些值称为成员变量,结构体的每个成员都可以是不同类型的变量。2、结构体变量的定义和初始化struct point { int x; int y;}p1; //声明类型的童定义了变量p1;str

2020-11-22 20:17:30 150 2

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除