- 博客(203)
- 收藏
- 关注
原创 ArrayList添加一个元素的过程(中部插入以及尾部添加)
只知道在ArrayList 添加一个元素在尾部添加元素,如果容量不够就会扩容1.5倍,也没有通过源码去研究过这个过程。今天我们就来研究研究:从 中间插入,和末尾插入 这两种方式 来进行研究。末尾插入public boolean add(E e) { ensureCapacityInternal(size + 1); // Increments modCount!! elementData[size++] = e; return true;}...
2021-11-24 21:19:01
9841
原创 Springmvc文件的上传和下载
文件上传是项目开发中最常见的功能之一 ,springMVC 可以很好的支持文件上传,但是SpringMVC上下文中默认没有装配MultipartResolver,因此默认情况下其不能处理文件上传工作。如果想使用Spring的文件上传功能,则需要在上下文中配置MultipartResolver。前端表单要求:为了能上传文件,必须将表单的method设置为POST,并将enctype设置为multipart/form-data。只有在这样的情况下,浏览器才会把用户选择的文件以二进制数据发送给服务器;对表单中
2021-11-24 10:02:15
375
原创 初识JMM
1.什么是JMM?JMM:(Java Memory Model的缩写)作用:缓存一致性协议,用于定义数据读写的规则。JMM定义了线程工作内存和主内存之间的抽象关系:线程之间的共享变量存储在主内存(Main Memory)中,每个线程都有一个私有的本地内存(Local Memory)所有的变量都 存储在主内存中,每个线程还有自己的工作内存 ,工作内存存储在高速缓存或者寄存器中,保存了该线程使用的变量的主内存副本拷贝。线程只能直接操作工作内存中的变量,不同线程之间的变量值传递需要通过主内存来完成。
2021-11-21 18:10:09
660
原创 初识JVM
三种JVM公司名字Sun公司HotSpot(我们用的)BEAJRockitIBMJ9VM1、JVM的位置2、JVM的体系结构我们说的垃圾处理百分之99都在堆中,因为像栈、计数器他们是不会产生垃圾的3、类加载器public class Car { public static void main(String[] args) { //类是模板,对象是具体的 Car car1 = new Car(); .
2021-11-21 17:38:05
10758
原创 位运算以及逻辑运算
二进制中的原码、反码、补码要了解位移运算符我们就要先来了解 原码、反码、补码有符号数:对于有符号数而言,符号的正、负机器是无法识别的,但由于正、负 “恰好是两种截然不同的状态,如果用"0’表示“正”,用"1"表示“负",这样符号也被数字化了,并且规定将它放在有效数字的前面,即组成了有符号数。所以,在二进制中使用最高位(第一位)来表示符号,最高位是0,表示正数,最高位是1,表示负数。10000000 00000000 00000000 01111100对于有符号数而言的性质:⑴ 二进制的最高位是
2021-11-10 22:36:48
2215
原创 顺序存储二叉树
从数据存储来看,数组存储方式和树的存储方式可以相互转换,即数组可以转换成树,树也可以转换成数组。顺序存储二叉树的特点:① 顺序二叉树通常只考虑完全二叉树② 第n个元素的左子节点为 2 * n + 1③ 第n个元素的右子节点为 2 * n + 2④ 第n个元素的父节点为 (n-1) / 2n : 表示二叉树中的第几个元素(按0开始编号 如图所示)、要求:二叉树的结点,要求以数组的方式来存放 arr : [1, 2, 3, 4, 5, 6, 7]要求在遍历数组 arr时,仍然可以以前
2021-10-24 21:04:14
142
原创 二叉树实现
二叉树的概念① 树有很多种,每个节点最多只能有两个子节点的一种形式称为二叉树。② 二叉树的子节点分为左节点和右节点。③ 如果该二叉树的所有叶子节点都在最后一层,并且结点总数= 2^n -1 , n 为层数,则我们称为满二叉树。④ 如果该二叉树的所有叶子节点都在最后一层或者倒数第二层,而且最后一层的叶子节点在左边连续,倒数第二层的叶子节点在右边连续,我们称为完全二叉树。代码实现分析二叉树的前序,中序,后序的遍历步骤创建—颗二叉树前序遍历中序遍历后序遍历①先输出当.
2021-10-24 19:51:58
1341
原创 任务(异步、邮件、定时)
异步任务模拟一个任务@Servicepublic class AsyncService { public void hello(){ try { Thread.sleep(3000); } catch (InterruptedException e) { e.printStackTrace(); } System.out.println("数据正在等待执行...."); }
2021-10-18 20:56:49
133
原创 Swagger
背景前后端分离前端 → 前端控制层、视图层后端 → 后端控制层、服务层、数据访问层前后端通过API进行交互前后端相对独立且松耦合产生的问题前后端集成,前端或者后端无法做到 “及时协商,尽早解决”,最终导致问题集中爆发解决方案首先定义schema [ 计划的提纲 ],并实时跟踪最新的API,降低集成风险Swagger号称世界上最流行的API框架Restful Api 文档在线自动生成器 → API 文档 与API 定义同步更新直接运行,在线测试API支持多种语言 (如:Jav
2021-10-16 16:27:36
330
原创 MyBatis源码分析
MyBatis 的工作原理SqlSessionFactory的创建这是我们常见的SqlSessionFactory创建的代码,我们下面来对源码剖析 @Before public void testBefore() throws IOException { InputStream rs = Resources.getResourceAsStream("mybatis-config.xml"); SqlSessionFactory sqlSess
2021-10-16 11:22:47
196
原创 从git上下载需要配置tomcat服务器的项目导入的流程
首先下载完成我们在idea中打开,将java文件夹转化为资源文件然后设置项目参数设置moudles的参数配置tomcat服务器当我们配置tomcatfwq 的时候我们发现没有Artifacts这个选项在Artifacts这个选项中找到JavaEE Applcation: Exloded这个选项,发现没有 → 让我们去选择我们要导入的Exloded,我们找到Moudles,如下图进行选择将地址改为你的web文件路径,而不是.idea\web路径改完即发现web文件上面有个圆点,J
2021-09-28 21:33:13
748
原创 在类中不写构造器为什么通过反射拿不到空参构造
public class relJava1 { public static void main(String[] args) throws Exception { Class<Person> person = Person.class; Constructor<Person> con = person.getConstructor(); System.out.println(con); }}class Pers
2021-09-26 11:11:15
310
原创 BootStrap
简介Bootstrap是基于HTML,CSS,Javascript的,简单,直观,强悍的前端开发框架,让web开发更迅速,简单。来自Twitter,是目前很受欢迎的前端框架之一。BootStrap的作用1.提供了丰富的css样式和js插件功能,可以使页面更加绚丽多彩2.它支持响应式布局开发生产文件下载地址:https://v4.bootcss.com/docs/getting-started/download/什么是响应式布局?非响应式布局页面:只能针对一个屏幕分辨率做出自身的布局页面,笔记
2021-09-24 17:58:41
111
原创 Shiro整合Mybatis
一、导入依赖<dependencies> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> </dependency> <dependency> <groupId>org.projectlombok</g
2021-09-24 12:11:51
237
原创 Shiro安全框架(SpringBoot整合Shiro)
搭建一个Shrio第一步:导入依赖 <dependencies> <dependency> <groupId>org.apache.shiro</groupId> <artifactId>shiro-core</artifactId> <version>1.4.1</version> </de
2021-09-23 20:34:41
184
原创 初识SpringSecurity
SpringSecuritySpring Security 基于 Spring 框架,提供了一套 Web 应用安全性的完整解决方案。在用户认证方面,Spring Security 框架支持主流的认证方式,包括 HTTP 基本认证、HTTP 表单验证、HTTP 摘要认证、OpenID 和 LDAP 等。在用户授权方面,Spring Security 提供了基于角色的访问控制和访问控制列表(Access Control List,ACL),可以对应用中的领域对象进行细粒度的控制。初识SpringSecur
2021-09-15 21:30:28
218
原创 SpringBoot进行多表查询
实体类:Emp 类:@Data@NoArgsConstructor@AllArgsConstructorpublic class Emp { private int id; private String lastname; private String email; private int gender; private int did; private Dept dept; private Date birth = new Date();
2021-09-11 17:34:27
6812
2
原创 用debug看HashMap
一直都是对HashMap的底层及扩容原理都没有很好的理解,所以就决定重新对HashMap的底层原理重新来梳理梳理。HashMap这个扩容原理真的是众说纷纭,感觉就没有一个较为清楚,原来只知道的HashMap当链表的长度大于8 并且数组的长度大于64 链表才会转换成红黑树。但是一直没有去自我验证,今天我就来验证验证,此次我们使用的是JDK1.8:/** * @author acoffee * @create 2021-08-23 11:02 */public class Test { pu
2021-08-23 21:38:00
853
3
原创 关于TreeMap使用keySet遍历的问题
当我们使用TreeMap 去按添加顺序取出的时候,并且我们不希望去重,我们通过比较器排序完成需求后,然后我们这个时候我们就想用ketSet 通过遍历 去得到他的value,然后我们就发现拿不到值。public class Exer_6 { public static void main(String[] args) { TreeMap map = new TreeMap(new Comparator() { @Override public int compare(Object o1,
2021-08-23 20:44:26
556
原创 Hashtable
散列表(Hash table,也叫哈希表),是根据关键码值(Key value)而直接进行访问的数据结构。也就是说,它通过把关键码值映射到表中一个位置来访问记录,以加快查找的速度。这个映射函数叫做散列函数,存放记录的数组叫做散列表。google公司的一个上机题:有一个公司,当有新的员工来报道时,要求将该员工的信息加入(id,性别,年龄,名字,住址…),当输入该员工的id时,要求查找到该员工的 所有信息.要求:不使用数据库,速度越快越好 → 哈希表(散列)添加时,保证按照id从低到高插入课后
2021-08-17 12:56:54
126
原创 SpringBoot-MyBatis整合
整合MyBatisMyBatis-SpringBoot整合文档依赖 <!--mybatis和springboot的整合依赖--> <dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis-spring-boot-starter</artifactId> <version>2.2.0</ve
2021-08-14 17:41:00
123
原创 SpringBoot整合Druid
Druid简介Java程序很大一部分要操作数据库,为了提高性能操作数据库的时候,又不得不使用数据库连接池。Druid 是阿里巴巴开源平台上一个数据库连接池实现,结合了 C3P0、DBCP 等 DB 池的优点,同时加入了日志监控。Druid 可以很好的监控 DB 池连接和 SQL 的执行情况,天生就是针对监控而生的 DB 连接池。Spring Boot 2.0 以上默认使用 Hikari 数据源,可以说 Hikari 与 Driud 都是当前 Java Web 上最优秀的数据源,我们来重点介绍 Spr
2021-08-14 15:08:26
139
原创 springboot整合JDBC使用
上周回顾SpringBoot是什么?微服务HelloWorld~ I探究源码自动装配原理配置yaml多文档环境切换静态资源映射Thymeleaf th:xxxSpringBoot如何扩展MVCjavaconfig如何修改SpringBoot的默认配置~CRUD国际化拦截器定制首页,错误页~这周JDBCMybatis :重点Druid :重点Shiro :安全:重点Spring Security :安全∶重点异步任务~,邮件发送,定时任务()SwaggerD
2021-08-14 11:38:32
174
原创 如何写一个网站
1、前端:有自己熟悉的模板,页面长什么样子:数据交互2、设计数据库(数据库设计难点!)3、前端让他能够自动运行,独立化工程4、数据库接口如何对接:json,对象 all in one5、前后端联调测试!一、有一套自己熟悉的后台模板:工作必要!x-admin二、前端页面:至少自己能够通过前端框架,组合出来一个网站页面indexaboutblogpostuser三、让这个网站能够独立运行!一个月!...
2021-08-08 21:27:19
516
原创 自定义配置以及Thymeleaf模板实现员工管理系统
我们这里就不在设计数据库,在类中设计模拟数据库即可。1.首页配置:1.注意点,在这里所有页面的静态资源都需要使用thymeleaf接管;2.url:@{}国际化1.我们需要配置i18n文件2.我们如果需要在项目中进行按钮自动切换,我们需要自定义一个组件LocaleResolver3.记得将自己写的组件配置到spring容器@Bean4.#{ }先创建文件,文件内的properties文件创建了上层文件会自动生成,国际化的源码可以看出可以设置的参数属性在Bundle中可以进行可视
2021-08-07 18:03:18
481
原创 thymeleaf异常
org.thymeleaf.exceptions.TemplateInputException: Error resolving template [/commons/commons], template might not exist or might not be accessible by any of the configured Template Resolvers (template: “dashboard” - line 45, col 8)一直报错,我们定位到line 45, col 8
2021-08-06 18:06:45
240
原创 SpringBoot Web开发
自动装配springboot到底帮我们配置了什么?我们能不能进行修改?能修改那些东西?能不能扩展?xxxAutoConfigruation… 向容器中自动配置组件xxxProperties:自动配置类,装配配置文件中自定义一些内容要解决的问题:导入静态资源,…首页jsp、模板引擎Thymeleaf装配扩展springMvc增删改查拦截器国际化!静态资源探究public: 一般放公共资源static:一般放静态资源,图片这些resources:一般放acloud上传的
2021-08-04 16:38:43
205
1
原创 自动配置原理再理解
源码剖析:进行完上图的流程就完成了将自动配置类装配到Properties文件中@Conditional了解完自动装配的原理后,我们来关注一个细节问题,自动配置类必须在一定的条件下才能生效;@Conditional派生注解(Spring注解版原生的@Conditional作用)作用:必须是@Conditional指定的条件成立,才给容器中添加组件,配置配里面的所有内容才生效;...
2021-08-02 14:35:47
130
原创 springboot配置文件
yaml语法SpringBoot使用一个全局的配置文件 , 配置文件名称是固定的application.propertiesapplication.yaml语法结构 :key=value语法结构 :key:空格 value配置文件的作用 : 修改SpringBoot自动配置的默认值,因为SpringBoot在底层都给我们自动配置好了;yaml概述YAML是 “YAML Ain’t a Markup Language” (YAML不是一种标记语言)的递归缩写。在开发的这种语
2021-07-31 15:52:12
227
原创 @Validated:数据校验时具体的注解报错(JSR303数据校验)
当我们想校验用户名是不是邮箱格式时导入了@Validated注解没报红,但是当我们在用户名上输入@Email确报红了我们的maven依赖也是导入了的 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> <
2021-07-31 12:55:16
611
1
原创 再看自动装配原理
自动配置:pom.xmlspring-boot-dependencies:核心依赖在父工程(spring-boot-starter-parent)中我们在写或者引入一些Springboot引入依赖的时候,不需要指定版本,就因为有这些版本仓库启动器启动器: 就是springboot 的启动场景,比如spring-boot-starter-web 它会帮我们自动导入web环境的所有依赖。springboot会将所有的场景变成一个个的启动器。 <dependency> <
2021-07-30 10:28:30
155
原创 队列及环形队列
队列队列是一个有序列表,可以用数组或是链表来实现。遵循先入先出的原则。即:先存入队列的数据,要先取出。后存入的要后取出示意图:(使用数组模拟队列示意图)当我们将数据存入队列时称为”addQueue”,addQueue,的处理需要有两个步骤:思路分析① 将尾指针往后移: rear+1 ,当front == rear【空】② 若尾指针rear小于队列的最大下标maxSize-1,则将数据存入rear所指的数组元素中,否则无法存入数据。rear == maxSize - 1[队列满]代码实现pu
2021-07-29 10:47:43
88
原创 稀疏数组-
比如我们用二维数组实现五子棋的时候,会有很多的无效数据,会占用很大的空间所以当一个数组中大部分元素为0,或者为同一个值的数组时,可以使用稀疏数组来保存该数组。稀疏数组的处理方法是:① 记录数组一共有几行几列,有多少个不同的值② 把具有不通知的元素的行列及值记录在一个小规模的数组中,从而缩小程序的规模应用实现代码的实现:public class SparseArray { public static void main(String[] args) { // 1:表示黑子 2:表示
2021-07-27 16:20:09
65
原创 SpringBoot
SpringBoot概述Spring是如何简化Java开发的为了降低Java开发的复杂性,Spring采用了以下4种关键策略:1、基于POJO的轻量级和最小侵入性编程,所有东西都是bean;2、通过IOC,依赖注入(DI)和面向接口实现松耦合;3、基于切面(AOP)和惯例进行声明式编程;4、通过切面和模版减少样式代码,RedisTemplate,xxxTemplate;Spring Boot的主要优点1、为所有Spring开发者更快的入门2、开箱即用,提供各种默认配置来简化项目配置
2021-07-10 10:28:30
121
原创 SpringBoot核心技术(Web开发:简单功能分析、请求参数处理)
核心功能一、配置文件1、yaml①简介YAML 是 “YAML Ain’t Markup Language”(YAML 不是一种标记语言)的递归缩写。在开发的这种语言时,YAML 的意思其实是:“Yet Another Markup Language”(仍是一种标记语言)。非常适合用来做以数据为中心的配置文件②基本语法key: value;kv之间有空格大小写敏感使用缩进表示层级关系缩进不允许使用tab,只允许空格缩进的空格数不重要,只要相同层级的元素左对齐即可'#'表示注释字
2021-06-26 10:32:09
183
原创 SpringBoot核心技术(配置文件)
配置文件1、yaml①简介YAML 是 “YAML Ain’t Markup Language”(YAML 不是一种标记语言)的递归缩写。在开发的这种语言时,YAML 的意思其实是:“Yet Another Markup Language”(仍是一种标记语言)。非常适合用来做以数据为中心的配置文件②基本语法key: value;kv之间有空格大小写敏感使用缩进表示层级关系缩进不允许使用tab,只允许空格缩进的空格数不重要,只要相同层级的元素左对齐即可'#'表示注释字符串无需加引号,
2021-06-15 09:11:42
264
2
原创 自动配置原理
自动配置原理1、SpringBoot特点1、依赖管理父项目做依赖管理 <!--依赖管理--> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.3.4.RELEASE</
2021-06-11 15:09:39
618
原创 SpringBoot基础入门
一、Spring5重大升级1、响应式编程2、内部源码设计基于Java8的一些新特性,如:接口默认实现。重新设计源码架构。二、为什么用SpringBoot能快速创建出生产级别的Spring应用1、SpringBoot优点创建独立Spring应用内嵌web服务器自动starter依赖,简化构建配置自动配置Spring以及第三方功能提供生产级别的监控、健康检查及外部化配置无代码生成、无需编写XMLSpringBoot是整合Spring技术栈的一站式框架Sp
2021-06-07 19:07:55
823
7
原创 SpringMVC的拦截器
SpringMVC的拦截器1.拦截器的作用SpringMVC的处理器拦截器类似于Servlet开发中的过滤器Filter,用于对处理器进行预处理和后处理。开发者可以自己定义一些拦截器来实现特定的功能。拦截器链(Interceptor Chain):将拦截器按一定的顺序连接成一条链。在访问被拦截的方法或者字段时,拦截器链中的拦截器就会按照之前定义的顺序被调用。拦截器和过滤器的区别过滤器:是servlet规范中的一部分,任何JAVAWEB工程都可以使用拦截器:是SpringMVC框架自己的,只有使用
2021-05-18 20:52:27
111
1
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅