学习笔记
文章平均质量分 84
java
weixin_43890079
这个作者很懒,什么都没留下…
展开
-
集合框架--3、ArrayList扩容
1. ArrayList() 会使用长度为零的数组2. ArrayList(int initialCapacity) 会使用指定容量的数组3. public ArrayList(Collection<? extends E> c) 会使用 c 的大小作为数组容量4. add(Object o) 首次扩容为 10,再次扩容为上次容量的 1.5 倍5. addAll(Collection c) 没有元素时,扩容为 Math.max(10, 实际元素个数),有元素时为 Math.max原创 2022-01-02 11:58:25 · 265 阅读 · 1 评论 -
集合框架--2、哈希表、hashCode、equals、HashMap深入讲解
Hash Set底层就是通过HashMap实现的,HapMap底下又是由哈希表实现的。散列表(Hash table,也叫哈希表)它通过把关键码值映射到表中一个位置来访问记录,以加快查找的速度。这个映射函数叫做散列函数,存放记录的数组叫做散列表。给定表M,存在函数f(key),对任意给定的关键字值key,代入函数后若能得到包含该关键字的记录在表中的地址,则称表M为哈希(Hash)表,函数f(key)为哈希(Hash) 函数。通常用的处理冲突的方法:链地址法:将所有产生冲突的..原创 2022-01-02 11:57:26 · 194 阅读 · 0 评论 -
集合框架--1、List、Set、Map
集合的继承实现关系:ConcurentHashMapVector和ArrayList区别HashTable和HashMap的区别Collecton接口常用的子接口有:List接口、Set接口List接口常用的子类有:ArrayList类、LinkedList类Set接口常用的子类有:HashSet类、LinkedHashSet类List允许有重复的元素,有序。Set不予许有重复元素,无序。Collection接口概述既然Coll...原创 2022-01-02 11:44:10 · 73 阅读 · 0 评论 -
Java--反射
在Java中的反射机制是指在运行状态中,对于任意一个类都能够知道这个类所有的属性和方法;并且对于任意一个对象,都能够调用它的任意一个方法;这种动态获取信息以及动态调用对象方法的功能成为Java语言的反射机制反射使Java这种静态编译型的语言具有了动态性。反射具有看透类的能力,类的信息在反射面前都是透明的(包括private的属性和方法都是可以调用)。Java反射机制主要提供一下功能:1、在运行时判断任意一个对象所属的类。2、在运行时构造任意一个类的对象。3、在运行时判断任意.原创 2022-01-02 11:38:38 · 54 阅读 · 0 评论 -
Linux
Linux 内核最初只是由芬兰人林纳斯·托瓦兹(Linus Torvalds)在赫尔辛基大学上学时出于个人爱好而编写的。Linux 是一套免费使用和自由传播的类 Unix 操作系统,是一个基于 POSIX 和 UNIX 的多用户、多任务、支持多线程和多 CPU 的操作系统。Linux 能运行主要的 UNIX 工具软件、应用程序和网络协议。它支持 32 位和 64 位硬件。Linux 继承了 Unix 以网络为核心的设计思想,是一个性能稳定的多用户网络操作系统。gao : Gcq2021使用V原创 2021-10-26 08:58:48 · 56 阅读 · 0 评论 -
PageHelper
PageHelper:GitHub - pagehelper/Mybatis-PageHelper: Mybatis通用分页插件https://github.com/pagehelper/pagehelper-spring-boothttps://github.com/pagehelper/Mybatis-PageHelper/blob/master/wikis/zh/HowToUse.md<dependency><groupId>com.gith...原创 2021-10-23 11:00:24 · 60 阅读 · 0 评论 -
SpringBoot日志Log4j
log4j for 2 tolog4j 是Apache的一个开放源代码项目(Apache日志服务),通过使用Log4j,我们可以控制日志信息输送的目的地是控制台、文件。Log4j 定义了8个级别的log,优先级从高到低依次为:OFF、FATAL、ERROR、WARN、INFO、DEBUG、TRACE、 ALL。常用输出级别的:ERROR>WARN>INFO>DEBUGERROR 为严重错误 主要是程序的错误WARN 为一般警告,比如session丢...原创 2021-10-23 10:58:03 · 228 阅读 · 0 评论 -
AOP记录Service方法执行时间
AOP为Aspect Oriented ProgrammingAspect:切面OOP:面向对象编程ObjectOrientedProgrammingAOP的底层核心,就是Java的动态代理机制,AOP中有几个很重要的概念,整理如下表:AOP中注解的含义@Aspect:切面。表示一个横切进业务的一个对象。它里面包含切入点(Pointcut)和Advice(通知)。@Pointcut:切入点。表示需要切入的位置,比如某些类或者某些方法,也就是先定一个范围。AO...原创 2021-10-15 08:58:12 · 626 阅读 · 0 评论 -
SpringBoot
传统Spring开发缺点:1、Spring的配置比较繁琐2、SSM中jar包的版本依赖麻烦什么是SpringBootSpring Boot是全新框架(更像是一个工具,脚手架),其设计目的是用来简化对Spring应用的初始搭建以及开发过程。spring boot其实不是什么新的框架,它默认配置了很多框架的使用方式,就像maven整合了所有的jar包,spring boot整合了很多当下最流行框架。随着Spring 3.0的发布,Spring 团队逐渐开始摆脱XML配置文件,并且在开..原创 2021-10-12 09:01:51 · 94 阅读 · 0 评论 -
Maven
什么是maven:是apache下的一个开源项目,是纯java开发的,并且只能用来管理java项目。 gradleMaven好处,为什么要用Maven:1、依赖管理:就是对jar包的统一管理,可以节省空间。分析:Maven项目为什么这么小?没有jar包。需要的这些jar是由Maven管理,统一放在Mavne的仓库里面。 2、一键构建:Mavne可以使运行java项目脱离Eclipse,脱离Tomcat(因为Maven本身就带了tomcat插件)。清除(mvn cl...原创 2021-09-27 11:35:35 · 68 阅读 · 0 评论 -
SpringAOP、动态代理、MyBatis原理
SpringAOPAspect Oriented Programming面向切面编程ObjectOriented Programming面向对象编程拦截器、过滤器都是基于代理模式单例模式、简单工厂模式、代理模式代理模式介绍:静态代理:让目标对象和代理类实现同一个接口,目的是让客户端访问的时候行为是一致。这其实就是一种保护(对目标对象的保护),控制对具体目标对象的访问,这个时候就由代理说了算。在代理对象里面转调目标对象之前和之后做...原创 2021-09-27 11:22:10 · 139 阅读 · 0 评论 -
SSM集成
需要添加的jar包1、Spring(包括SpringMVC)2、MyBatis3、mybatis-spring-1.2.2.jar 整合包4、数据库驱动5、第三方连接池6、Json依赖包Jackson在SSM框架中使用单元测试://帮助我们创建IOC容器@RunWith(SpringJUnit4ClassRunner.class)//加载Spring的核心配置文件@ContextConfiguration("classpath:applicat...原创 2021-09-26 09:04:51 · 72 阅读 · 0 评论 -
Spring IOC
1、方便解耦,简化开发,IOC控制反转Spring 就是一个大工厂,可以将所有对象创建和依赖关系维护交给Spring2、AOP 编程的支持Spring 提供面向切编程,可以方便的实现对序进行权限拦截、运监控等功能3、声明式事务的支持(张三给李四转账,要么同时成功,要么同时失败)只需要通过配置就可以完成对事务的管理,而无手动编程4、方便集成各种优秀框架Spring 不排斥各种优秀的开源框架,其内部提供了对各种优优秀框架的支持(如Struts,Mybatis,Hib...原创 2021-09-24 11:54:30 · 53 阅读 · 0 评论 -
三层架构
Controller:接收前台传递过来的数据,对数据进行封装,然后交给Service层完成业务逻辑,Service层可以调用Dao层完成增删改查在三层架构里面是面向接口编程,Service层能够为Controller层提供的所有功能都写到Service层接口。MVC:M(Model) 模型 JavaBeanV(View) 视图 Html Jsp Volicity FreemakerC(Control) 控制器 Servlet,Controller,ActionJsp+S...原创 2021-09-24 11:50:36 · 55 阅读 · 0 评论 -
MyBatis 多表
多表查询:学生表、班级表、课程表、班级课程表一对一:一个学生只属于一个班级。查询:id name age gender banjiNameSELECT s.id,s.`name`,s.age,s.gender,b.id AS banjiId,b.name AS banjiNameFROM student AS s INNER JOIN banji AS bON s.banji_id=b.id;MyBatis中使用association...原创 2021-09-23 17:21:35 · 428 阅读 · 1 评论 -
MyBatis 动态Sql
动态Sql:通过MyBatis提供的各种标签方法实现动态拼接Sql。这些标签类似于JSTL标签,可以写控制语句动态的拼接Sql。if标签where标签select *formuser where name like '%张%' and age=23 and gener='男';select *formuser where age=23 and gener='男';select *formuser where gener='男';select *form...原创 2021-09-23 17:08:12 · 134 阅读 · 0 评论 -
SpringMVC
Springmvc是什么:Springmvc是spring框架的后续产品,用在基于MVC的表现层开发,类似于struts2框架。Spring全家桶SSM+SpringBoot+IDEA+Git+SpringCloud+Redis+VueSpringmvc依赖于Core(IOC),Springmvc需要导入Core包和Springmvc特有的包。如果使用Spring的DAO、ORM不但要导入这两个包,好如要导入AOP。Spring全家桶Demo:1、导入Spr...原创 2021-09-23 12:00:17 · 83 阅读 · 0 评论 -
MyBatis
像MyBatis、Hibernate都是属于ORM框架对象关系映射(英语:(Object Relational Mapping,简称ORM)MySql、Oracle、SqlServer都是关系型数据库O->RstudentDao.insert(student) 把一个java对象保存到数据库中的一行记录R->OStudent student = sudentDao.findById(id)把数据库里面的一行记录封装成一个java对象...原创 2021-09-23 11:52:39 · 87 阅读 · 0 评论 -
JVM--垃圾回收(重点)
50. JVM--垃圾回收(重点)关于垃圾收集1、Java 和 C++语言的区别,就在于垃圾收集技术和内存动态分配上,C语言没有垃圾收集技术,需要我们手动的收集。2、垃圾收集,不是Java语言的伴生产物。早在1960年,第一门开始使用内存动态分配和垃圾收集技术的Lisp语言诞生。3、关于垃圾收集有三个经典问题: 哪些内存需要回收? 什么时候回收? 如何回收?4、垃圾收集机制是Java的招牌能力,极大地提高了开发效率。如今,垃圾收集几乎成为现代语言的标配,...原创 2021-09-16 16:26:07 · 141 阅读 · 0 评论 -
JVM--对象的实例化内存布局
49.JVM--对象的实例化内存布局●对象实例化:●对象创建的方式1、new:最常见的方式、单例类中调用getInstance的静态类方法,XXXFactory的静态方法2、Class的newInstance方法:在JDK9里面被标记为过时的方法,因为只能调用空参构造器,并且权限必须为 public3、Constructor的newInstance(Xxxx):反射的方式,可以调用空参的,或者带参的构造器4、使用clone():不调用任何的构造器,要求当前的类需要实现Clonea..原创 2021-09-10 11:52:45 · 56 阅读 · 0 评论 -
线程--线程池
48. 线程--线程池● 线程池根据需求创建线程,可扩容,遇强则强线程池,其实就是一个容纳多个线程的容器,其中的线程可以反复使用,省去了频繁创建线程对象的操作,无需反复创建线程而消耗过多资源。创建销毁线程是一个非常消耗性能的。● 我们详细的解释一下为什么要使用线程池?在java中,如果每个请求到达就创建一个新线程,开销是相当大的。在实际使用中,创建和销毁线程花费的时间和消耗的系统资源都相当大,甚至可能要比在处理实际的用户请求的时间和资源要多的多。除了创建和销毁线程的开销之外,..原创 2021-09-10 09:01:51 · 80 阅读 · 0 评论 -
SSM--MyBatis中#和$区别
47. SSM--MyBatis中#和$区别String SubstitutionBy default, using the#{}syntax will cause MyBatis to generatePreparedStatementproperties and set the values safely against thePreparedStatementparameters (e.g. ?). While this is safer, faster and almost al...原创 2021-09-04 09:15:57 · 153 阅读 · 0 评论 -
JVM--方法区
●46. JVM--方法区1. 栈、堆、方法区的交互关系运行时数据区:从线程共享与否的角度来看ThreadLocal:如何保证多个线程在并发环境下的安全性?典型应用就是数据库连接管理,以及会话管理程序计数器不会报异常,也不存在GC。虚拟机栈和本地方法栈会报异常,但是不存在GC。堆和方法区既有异常又有GC。●栈、堆、方法区的交互关系1、Person 类的 .class 信息存放在方法区中2、person 变量存放在 Java 栈的局部变量...原创 2021-09-01 20:53:42 · 410 阅读 · 0 评论 -
JVM--堆
45. JVM--堆1. 堆的核心概述一个进程对应一个JVM的实例,一个JVM实例中只有一个运行时数据区,里面只有一个方法区和堆,一个进程的多个线程共享方法区和堆,那就要考虑线程的安全问题。每个线程各有一套程序计数器、本地方法栈、虚拟机栈。1、一个JVM实例只存在一个堆内存,堆也是Java内存管理的核心区域。2、Java堆区在JVM启动的时候即被创建,其空间大小也就确定了,堆是JVM管理的最大一块内存空间,并且堆内存的大小是可以调节的。3、《Java虚拟机规范》规定..原创 2021-08-31 19:51:01 · 289 阅读 · 0 评论 -
JVM--虚拟机栈
44. JVM--虚拟机栈目录44. JVM--虚拟机栈1.虚拟机栈概述●虚拟机栈出现的背景●内存中的栈与堆●Java虚拟机栈是什么?●虚拟机栈的生命周期●虚拟机栈的作用●栈的特点●面试题:栈中可能出现的异常●设置栈内存的大小2. 栈的存储单位●栈存储什么?●栈的运行原理3. 栈的内部结构:4. 局部变量表● 概述●静态变量与局部变量的对比5. 操作数栈●操作数栈:Operand Stack6. ...原创 2021-08-31 14:25:58 · 264 阅读 · 0 评论 -
JVM--线程、程序计数器
43. JVM--线程、程序计数器●线程:●关于 Runtime 类的说明每个JVM只有一个Runtime实例。即为运行时环境,相当于内存结构的中间的那个框框:运行时环境。●线程的内存空间Java虚拟机定义了若干种程序运行期间会使用到的运行时数据区:1. 其中有一些会随着虚拟机启动而创建,随着虚拟机退出而销毁。2. 另外一些则是与线程一一对应的,这些与线程对应的数据区域会随着线程开始和结束而创建和销毁。灰色的为单独线程私有的,红色的为多个线程共享的:...原创 2021-08-30 20:02:55 · 130 阅读 · 0 评论 -
JVM--类加载器详解
42. JVM--类加载器详解● 类加载器子系统作用:1. 类加载器子系统负责从文件系统或者网络中加载Class文件,class文件在文件开头有特定的文件标识。2. ClassLoader只负责class文件的加载,至于它是否可以运行,则由Execution Engine决定。3. 加载的类信息存放于一块称为方法区的内存空间。● 类加载器ClassLoader作用:1. class file,可以理解为设计师画在纸上的模板,而最终这个模板在执行的时候是要加载到JV原创 2021-08-30 19:51:58 · 85 阅读 · 0 评论 -
JVM简介
为什么要学习JVM?1、面试需要(大厂必考核的一项技能)2、深入的理解Java这门语言。(万丈高楼地基最重要)3、 更好的解决线上排查问题(更好的解决生产线问题)4、走向高级程序员和架构师的必经之路大部分Java开发人员,除会在项目中使用到与Java平台相关的各种高精尖大部分开发人员,除会在项目中使用到与开发人员,除会在项目中使用到与平台相关的各种高精尖 技术,对于Java技术的核心Java虚拟机了解甚少。一些有一定工作经验的开发人员,打心眼儿里觉得SSM、微服务等上层技术才是重点,原创 2021-08-28 10:24:19 · 73 阅读 · 0 评论 -
简单工厂模式
40.简单工厂模式写一个加减乘除运算,初学者代码毛病:java.lang.ArithmeticException: / by zero活字印刷,面向对象面向对象的好处通过封装、继承、多态把程序的耦合度降低,传统印刷术的问题就在于所有的字都刻在同一版面上造成耦合度太高所致,开始用设计模式使得程序更加灵活,易于修改,并且易于复用。中国古代的四大发明,另外三种应该是科技的进步,伟大的创造或发明。而唯有活字印刷,实在是思想的成功,面向对象的胜利。●业务的封装应该让业...原创 2021-08-28 09:42:01 · 38 阅读 · 0 评论 -
运算符&与&&,|与||的区别、进制转换
39.运算符&与&&,|与||的区别、进制转换● 运算符&与&&,|与||的区别 &和 | 既是逻辑运算符也是位运算符,而&&和||只是逻辑运算符。&&是逻辑与运算符,||是逻辑或运算符,都是逻辑运算符,两边只能是bool类型&与| 既可以进行逻辑运算,又可以进行位运算,两边既可以是bool类型,又可以是数值类型● 区别:if (A && B) 如果 A 为 fa...原创 2021-08-28 09:08:11 · 127 阅读 · 0 评论 -
反 射
38.反射● 定义:在编译时候不知道加载的是哪个类,在运行时可以动态的获取类的属性调用对象的方法的机制就叫做反射。反射使Java这种静态编译型的语言具有了动态性。反射具有看透类的能力,类的信息在反射面前都是透明的(包括private的属性和方法都是可以调用)。Java反射机制主要提供一下功能:1、在运行时判断任意一个对象所属的类。2、在运行时构造任意一个类的对象。3、在运行时判断任意一个类所具有的成员变量和方法。4、在运行时调用任意一个对象的方法。学习反射..原创 2021-08-27 11:59:29 · 44 阅读 · 0 评论 -
递 归
37. 递归●递归(英语:Recursion),在数学与计算机科学中,递归算法是一种直接或者间接调用自身函数或者方法的算法。递归算法是一种直接或者间接调用自身函数或者方法的算法。递归算法的实质是把问题分解成规模缩小的同类问题的子问题,然后递归调用方法来表示问题的解。递归算法对解决一大类问题很有效,它可以使算法简洁和易于理解。递归算法,其实说白了,就是程序的自身调用。它表现在一段程序中往往会遇到调用自身的那样一种coding策略,这样我们就可以利用大道至简的思想,把一个大的复杂的问题...原创 2021-08-27 08:56:09 · 194 阅读 · 0 评论 -
单例模式
36. 单例模式●单例模式: (单例:单个实例)单例模式保证只有一个实例,就要保证外界不能随便的new这个对象,所以要私有化构造方法。私有化构造方法后就是把new这个对象控制权收回了,只能在类内部去实例化这个对象,让类自身负责保存他的唯一实例。单例模式(Singleton)保证一个类仅有一个实例,并提供一个访问他的全局访问点。保证类仅有一个实例最好的办法就是,让类自身负责保存他的唯一实例。这个类可以保证没有其他实例被创建,并且他可以提供一个访问该实例的方法。单例应用场...原创 2021-08-26 19:27:22 · 40 阅读 · 0 评论 -
Java多线程状态
35. Java多线程状态GUI应用程序 几乎所有的GUI应用程序都会用多线程。使用word来编辑一个非常大的文件,一个线程用来编辑,另一个线程用来做搜索。多个客户端 基本上网络上的服务器必须同时处理一个以上的客户端,不过,一定要在服务器这边的程序设计加入一个以上客户端的概念的话,程序会变得更复杂。此时,不妨准备一个当有客户端连接到服务器的时候,会自动出来迎接这个客户点的线程,这样一来,服务器的程序就可以设计成好像只服务一个客户端。线程的暂时停止:try{ Thr...原创 2021-08-24 20:07:58 · 73 阅读 · 0 评论 -
进程、线程
目录34. 进程、线程●进程和线程的定义●进程和线程之间的关系●Java里面创建线程的两种方式●synchronized(同步 加锁)●生产者和消费者问题●Thread常用方法● yield●join●如何正确的停止线程●中断线程34. 进程、线程●进程和线程的定义1、进程是什么?是具有一定独立功能的程序、它是系统进行资源(内存)分配和调度的一个独立单位,重点在系统调度和单独的单位,也就是说进程是可以独立运行的一段程序。...原创 2021-08-24 19:55:50 · 144 阅读 · 0 评论 -
IO 流
33. IO流●IO: (Input Output)流的概念和作用流是一组有顺序的,有起点和终点的字节集合,是对数据传输的总称或抽象。即数据在两设备间的传输称为流,流的本质是数据传输,根据数据传输特性将流抽象为各种类,方便更直观的进行数据操作。●IO流的分类1、 根据处理的数据类型不同可以分为:字符流和字节流。2、根据数据的流向不同可以分为:输入流和输出流。什么情况下使用字符流:如果读写的都是字符数据,这时候我们就使用字符流。文本文件。什么情况使用字节流: 读取到...原创 2021-08-24 15:23:29 · 73 阅读 · 1 评论 -
EL、JSTL
32.EL、JSTL●EL目的就是去掉JSP中的java代码,都是以标签的形式表示,以标签的形式美工或者前端都可以修改,利于团队的合作。这套标签和java语言无关。JSP核心语法:JSP表达式<%=%> JSP脚本<%%>JSP开发的原则:尽量在JSP页面少写甚至不写java代码,Java代码放在Servlet。使用EL表达式来代替JSP表达式EL表达式的作用:向浏览器输出域对象(只能输出域对象)的变量或者表达式计算的结果。语法:${变量或..原创 2021-08-23 17:20:33 · 64 阅读 · 0 评论 -
JSON
31.JSONJSON数据格式(重要)JavaScript Object Notation缩写定义:是一种轻量级的数据交换格式●特点:1、易于程序员阅读和编写。2、易于计算机解析和生成。3、其实是javascript的子集:原生javascript支持JSON<script type="text/javascript">varstudent= { name:'gao', age: 23, pri...原创 2021-08-20 21:19:00 · 149 阅读 · 0 评论 -
JQuery
30.JQuery其是对javascript封装的一个框架包,简化对javascript的操作javascript代码:获得页面节点对象、ajax元素节点对象实现、事件操作、事件对象jquery代码:无需考虑浏览器兼容问题、代码足够少jQuery:javascript+query使用前期,jquery侧重快速找到页面上各种节点。后期jquery丰富了事件操作、ajax操作、动画效果、DOM操作等等。1. 选择器1) 基本选择器$(‘#id属性值’) ---...原创 2021-08-18 19:18:16 · 353 阅读 · 1 评论 -
过滤器Filter
29. 过滤器Filter:● 为什么要用过滤器?项目开发中,经常会用到重复代码的实现。1、请求每个servlet都要设置编码2、判断用户是否登录,只有登录了才有操作权限。●过滤器相关Api:interface Filter 过滤器核心接口1、init(FilterConfig filterConfig) 初始化方法,在服务器启动的时候就执行2、doFilter(ServletRequest request, ServletResponse response,..原创 2021-08-18 08:40:31 · 72 阅读 · 0 评论