- 博客(22)
- 收藏
- 关注
原创 java的数组排序和去重
数组排序int[] arr = {8, 9, 1, 4, 5, 6, 3, 2, 7, 0}; int temp; for (int i = 0; i < arr.length - 1; i++) { for (int j = 0; j < i; j++) { if (arr[i] < arr[j]) { temp = arr[i];
2021-05-08 15:25:47
941
原创 MongoDB文件上传和图片显示的代码
MongoDB文件上传和图片显示的代码Dao层import com.mongodb.client.gridfs.model.GridFSFile;import org.bson.types.ObjectId;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.data.mongodb.core.query.Criteria;import org.springframewo
2021-04-28 19:24:30
524
原创 Session和Token小结
Session和Token小结Token和SessionId的原理是相同的,Session和Token在功能上是相同的,都是为了保持会话。sessionSession用于临时保存用户信息,以键值对的格式储存,要取出用户信息就需要相对应的钥匙key,这是用于让服务器知道这个请求来着谁,通过cookie存放sessionid,服务器获取请求的时候就会通过cookie(sessionid)拿到session里面存放的用户信息,这样可以让用户访问资源而不用不断的重新登录。session的生命周期是服务器启动到
2021-04-28 19:21:16
671
原创 OAuth2授权码模式
OAuth2授权码模式授权码授权的工作流程图:前端发送到第三方登录请求资源服务器拿到请求后进行重定向并把client_id带上,重定向到第三方授权服务器然后在第三方授权服务器拿到请求后进行验证,验证账号密码是否正确再然后从前端页面重定向到资源服务器进行登录账号登录成功后资源服务器拿到code,再然后资源服务器把带有code、client_id、client_secret的信息重定向发送到第三方授权服务器,向它索要Token授权服务器把角色信息和头像图片封装到Token里面,然后颁发封装好的
2021-04-28 19:12:57
2862
原创 前端访问OAuth2授权服务器
前端必须要提交:username: “” 用户账号password: “” 用户密码grant_type: ‘password’ (一般固定是password)client_id: ‘appid’ (这些值都是后端写死的)client_secret: ‘223344’(这些值都是后端写死的)<template> <!-- 这里定义vue组件的模板内容 --> <div> <h2>登录首页</h2> <p>u
2021-04-28 18:58:20
1224
3
原创 OAuth2密码授权流程
OAuth2密码授权流程资源服务器和授权服务器(OAuth2)一.前端传递信息Token,一共有五个信息:1.client_id,2.client_secret,3.用户username,4.密码password,5.grabt_type password二.前端请求发送到 /oauth/token,如果信息正确就会拿到授权服务器返回的令牌(Token),然后前端要把Token储存起来(Token是有时效性的)。三.访问资源服务器时,发送Token令牌给到资源服务器,资源服务器会到授权服务器中进行
2021-04-28 18:54:24
520
原创 SpringSecurity 工作流程图及(简易)登录测试
SpringSecurity 工作流程图及(简易)登录测试SpringSecurity 的大致工作流程图pom.xml Maven依赖配置<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="h
2021-04-28 18:48:27
986
1
原创 Spring和Spring Boot之间的区别(小结)
Spring和Spring Boot小结Spring和Spring Boot基于IOC AOP理念实现,Spring Boot集成了Spring。Spring框架:Spring框架解决了企业级的开发的复杂性,它是一个容器框架,用于装java对象(Bean),使程序间的依赖关系交由容器统一管理,松耦合,提高了可测试性和维护效率,Spring主要为我们做了两件事,一省去了我们创建对象的操作,二声明了属性赋值。对于我来说,Spring框架就是提供了IOC容器、控制反转、依赖注入以及一些模块,简化了大量的代
2021-04-28 18:33:07
39033
4
原创 Spring IOC 学习笔记
Spring IOC 学习笔记Bean<bean id="" class=""></bean> 注册别人写的类已经写好了,没有注解,所有要bean来注册,注入IOC。set 注入set注入和getBean 注入,本质上没有区别。set 注入private DataSource dataSource;public void setDataSource(DataSource ds){ this.dataSource = ds;}从 Spring getBea
2021-03-16 21:00:56
202
原创 模拟 Spring AOP 编写自己的拦截器
模拟 Spring AOP 编写自己的拦截器通过写一个简单的实例来梳理 Spring AOP 的核心原理1.先写一个简单的接口 HelloServicepublic interface HelloService { public void sayHello(String name);}2.接口实现类 HelloServiceImplpublic class HelloServiceImpl implements HelloService { @Override pub
2021-03-16 20:47:41
249
原创 java基础(9Day-Map集合)
MapServlet request.getParameter(key); ==> value解决 List 根据 id 找对象,效率低,不方便public Book findBook(int id){ for(int i=0;i<books.size();i++){ if(b.getId()==id){ return b; } } return null;}线程安全 和 非线程安全 的 HashMapHashMap 实现原理Map是一个接口(干爹)他
2020-11-08 21:05:59
176
原创 java基础(8Day-Java集合)
Java集合容器1.数组2. String, StringBuilder, StringBuffer(2010面试题)3. List, MapIOC 容器的背后就是Map int arr[] = new int[5]; int aa[] = new int[arr.length + 1]; arr[0] = 1; arr[1] = 2; arr[2] = 4; arr[3] = 5; arr[4] = 6; int idx = -1; for (int i = 0; i
2020-11-08 21:03:59
668
原创 java基础(7Day-抽象类 & 接口-静态代理)
抽象类 & 接口-静态代理抽象抽象类public class Emp{} 抽象类:abstract (abs - tr act)public abstract class Emp{ //抽象方法无需写代码,目的要求继承者,必须重写这个方法 public abstract String show();}抽象类-抽象方法(继承者必须重写)抽象类的第二个特点,不能直接 new抽象类的继承肯定要重写(实现)抽象方法注意super(…)调用父类对应的构造方法,必须放到第一行
2020-11-08 21:01:45
240
原创 java基础(6Day-继承-多态)
Java类和对象-继承-多态所谓继承,就是往上找。(先找自身,如果没有,找父类,没有,再向上找,直到Object结束)继承 - 创建子类,父类构造方法会执行吗?public static void main(String[] args) { Person p = new Person(); p.setName("李世民"); p.setAge(49); System.out.println("李世民 Person对象:"+p.toString()); Student s
2020-11-08 20:58:30
178
原创 java基础(5Day-类和对象-方法-参数传递)
参数传递Java-类和对象-方法-参数传递方法参数传递有两大方式,值传递 和 引用(地址)传递引用传递,是对象地址传递,任何一个地址改变对象的属性值,都会影响到其他地方引用单词:refernce 简写 ref如果 对象 作为参数的话,它其实传递的是 【对象(4个字节的)地址】基本求和public static void main(String[] args) { int []aa=new int[10]; for (int i = 0; i < aa.le
2020-11-08 20:51:43
202
原创 java基础(4Day-方法-对象方法-类方法(static))
方法-对象方法-类方法(static)方法:声明在类里面;方法: 1.访问属性: public/protected/private 2.返回值: void 基本数据类型 类 3.方法名称 4.参数类型: 基本数据类型 String 类 数组(集合)复习get/set基本使用成员变量私有(private),意味着只有类里面的方法(对象)才可以访问。方法学习 - staticstatic 静态的: static 修饰方法: 叫类方法,它依赖于类存在,全局方法 static 修饰成
2020-11-08 20:48:40
128
原创 java基础(3Day-数据类型与getter/setter)
数据类型1. byte 8个灯泡,0=灯灭 1=灯亮 2^8组合,不同组合不同的数字0-2552. 计算机:明白从0开始的原因加载程序要执行首先找到内存的对应代码和数据,内存没有对应的程序代码|和数据,从硬盘读取对应的程序。类加载就是*.class文件从硬盘到内存的过程。堆栈内存堆内存:存储不定长的数据:数组,String,对象栈内存:存储定长的数据:基本数据类型。 存放 对象变量 —》指向堆内存new和构造方法无参构造方法有参构造方法 一旦写了有参构造方
2020-11-08 20:42:38
170
原创 java基础(2Day-类和对象)
类和对象public class Hello{ public static void main(String[] args){ System.out.println("Hello,world") }}为什么Java语言可以反射D:\tmp>javap Hello.classCompiled from "Hello.java"public class Hello { public Hello(); public static void main(java.lang.Strin
2020-11-05 11:39:34
145
原创 java基础(1Day-基本数据类型)
基本数据类型栈内存byte(1) short(2) int(4) long(8)float(4) double(8)char(2)boolean(1)内存程序要执行: 首先要加载:把安装在硬盘上的程序读取到内存去。 (内存速度快,是硬盘访问速度的100倍) 加载后 称为:进程 内存最小单位 bytebyte 0~255 #FF 1111 1111 8个灯泡 1个灯泡=1位(bit) 0000 0000 (0)灯全灭为0 0000 0001 (1
2020-11-05 11:34:30
186
原创 Java多线程的两种休眠sleep()和wait()
Java多线程的两种休眠文章目录Java多线程的两种休眠前言一、sleep()方法二、wait()方法三、线程状态图前言提示:这里可以添加本文要记录的大概内容:例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容。提示:以下是本篇文章正文内容,下面案例可供参考一、sleep()方法自我休眠,自我唤醒(休眠时间到后自我苏醒)。每一个对象都有一把锁,sleep不会释放锁。public class Thread01 exten
2020-10-13 19:59:32
1237
原创 Java反射第二课
Java反射第二课文章目录Java反射第二课前言一、类的加载过程二、类加载与ClassLoader的理解1.加载2.类加载器前言提示:提示:以下是本篇文章正文内容,下面案例可供参考一、类的加载过程类的加载(Load):将类的class文件读入内存,并将之创建一个java.lang.Class对象。(此过程由类加载器完成)类的链接(Link)将类的二进制数据合并到jre中。类的初始化(Initialize)JVM负责对类进行初始化二、类加载与ClassLoader的理解1.加载
2020-10-12 17:08:11
78
原创 Java反射第一课
我对Java的反射概念的理解文章目录我对Java的反射概念的理解前言一、反射的慨念二、反射的优缺点三、获取Class对象的常见几种方式四、基本数据类型获取Class对象总结前言提示:学习Java的人都要认识到反射的作用和它的强大所在提示:以下是本篇文章正文内容一、反射的慨念就是在程序执行期间借助于反射机制(Reflection)取得程序内部的信息,并直接操作程序。反射是一种镜像操作,和正常操作方式不同,与正常的操作流程相反。Java的反射机制十分强大,能使我们的操作更加灵活,可以在运行时加
2020-10-11 23:54:12
93
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人