会话技术会话技术:在服务器端创建一个与客户端浏览器相关的数据,用来记录客户端浏览器的访问信息。
会话:用户打开浏览器,访问Wb服务器的资源,会话建立,直到有一方断开连接,会话结束。在一次会话中可以包含多次请求和响应。会话跟踪:一种维护浏览器状态的方法,服务器需要识别多次请求是否来自于同一浏览器,以便在同一次会话的多次请求间共享数据。
会话跟踪方案:
客户端会话跟踪技术:Cookie
服务器端会话跟踪技术:Session
令牌技术
Cookie和Session都是传统的会话技术
Cookie优点:
HTTP协议中支持的技术
缺点:
存储空间有限,通常情况下不能存储二进制数据
不能跨域访问
不安全,用户可以自己禁用Cookie
Session优点:
部署在服务器,安全
缺点:
服务器集群环境下无法直接使用Session
Cookie的缺点
JWT令牌技术JWT令牌技术:JSON Web Token,是一种用于在网络应用环境间传递声明的开放标准(RFC 7519)。
全称称:JSON Web Token(https://jwt.io/)
定义了一整简洁的、自包含的格 ...
简介
是一款优秀的持久层框架,用于简化JDBC,原名iBatis
源码托管在Github,Mybatis
一般都是在Spring Boot中直接使用
SpringBoot数据库连接配置
1234spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driverspring.datasource.url=jdbc:mysql://localhost:3306/mybatisspring.datasource.username=rootspring.datasource.password=1234
• 使用@Mapper注解自动配置接口,接口方法再使用@Select('select * from user')注解,让IOC自动创建实现类的时候自动实现方法• 数据库连接池
是一个容器,负责分配、管理数据库连接(Connection)
允许应用程序重复使用一个现有的数据库连接,而不是再重新建立一个
释放空闲时间超过最大空闲时间的连接,来避免因为没有释放连接而引起的数据库连接遗留
在pom文件中直接引入连接池的依赖, ...
SpringBoot配置文件优先级:yaml = yml > properties
常用的配置1234567891011121314151617181920spring: # 数据库配置 datasource: driver-class-name: com.mysql.cj.jdbc.Driver url: jdbc:mysql://localhost:3306/nodaoli username: nodaoli password: nodaoli servlet: # 文件上传配置 multipart: # 单个文件最大上传大小 max-file-size: 10MB # 多个文件最大上传大小 max-request-size: 100MBmybatis: configuration: # 设置Mybatis的日志功能 log-impl: org.apache.ibatis.logging.stdout.StdOutImpl # 启用Mybatis的自动驼峰大写功 ...
Cloudflare R2是一个基于Amazon S3 API的云存储服务,它允许您存储和检索对象,如图像、视频、音频和文档。
Cloudflare R2使用Amazon S3 API,因此您可以使用任何Amazon S3 SDK或工具来与R2进行交互。
引入Maven依赖
1234<dependency> <groupId>software.amazon.awssdk</groupId> <artifactId>s3</artifactId><version>2.27.13</version>
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051import lombok.extern.slf4j.Slf4j;import org.springframework.stereotype.Component;import org.springframework ...
application.properties配置1234567891011121314151617# 添加数据库spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driverspring.datasource.url=jdbc:mysql://localhost:3306/nodaolispring.datasource.username=nodaolispring.datasource.password=nodaoli# 添加MyBatis的日志,可以使用@Slf4j注解,log.info()静态方法输出日志mybatis.configuration.log-impl=org.apache.ibatis.logging.stdout.StdOutImpl# 添加MyBatis的驼峰命名自动转换mybatis.configuration.map-underscore-to-camel-case=true# 配置单个文件的最大上传大小spring.servlet.multipart.max-file-size=10MB# 配置多 ...
当软件可执行文件当前目录中新建一个名为data的文件夹,便携模式会将此文件夹将作为基础启动文件夹,作为Home Directory
在不同系统上,可执行文件位置有所不同:
Windows:安装目录中Clash for Windows.exemacOS:软件包目录中/Contents/MacOS/Clash for Windows
当文件夹存在时,重启软件即可进入便携模式,此时软件将会读取/写入数据至该目录
Spring
未读个人理解:注入是在一个配置文件中设置类,对象的属性值。
通俗理解:
原生注入就是在源码封装的类中使用set和get方法
Spring bean注入就是在Spring配置文件.xml中的<bean>标签,使用<property>设置属性值
原生set注入方法我们封装了一个类,创建对象的时候,通过原生的set和get方法设置访问对象
或者通过构造器注入(也就是自动构造器)
1234567891011121314151617181920212223242526272829303132333435363738394041class book { private String bname; private String bauthor; public book() { } public book(String bname, String bauthor) { this.bname = bname; this.bauthor = bauthor; } ...
概念Spring 通过 IoC 容器来管理所有 Java 对象的实例化和初始化,控制对象与对象之间的依赖关系。
我们将由 IoC 容器管理的 Java 对象称为 Spring Bean,它与使用关键字 new 创建的 Java 对象没有任何区别。
bean定义信息:我在配置文件中(xml)中配置好我需要的类的信息(我需要什么对象),把这个信息交给IoC容器(告诉IOC我要的对象),让IOC给我返回
DI(Dependency Injection):依赖注入,依赖注入实现了控制反转的思想
指Spring创建对象的过程中,将对象依赖属性通过配置进行注入
获取Bean的三种方式
1234567891011// id获取User user1 = (User) context.getBean("user");System.out.println("id获取"+user1);// 类型(class)获取User user2 = context.getBean(User.class);System.out.println("类型获取" ...
在maven中导入依赖12345678910<dependency> <groupId>org.apache.logging.log4j</groupId> <artifactId>log4j-core</artifactId> <version>2.19.0</version></dependency><dependency> <groupId>org.apache.logging.log4j</groupId> <artifactId>log4j-slf4j2-impl</artifactId> <version>2.19.0</version></dependency>
配置文件一般maven项目放在resources目录下
12345678910111213141516171819202122232425262728293031323334353637 ...
类似JavaScript的DOM操作
可以理解为通过反射把一个类的属性,方法,拆分出来,作为一个对象来使用
例如拆分成
Class对象:代表类的类型信息,可以用来获取类的静态属性,创建对象实例等。
Field对象:代表类中的字段(成员变量),可以用来获取或设置字段的值。
Method对象:代表类中的方法,可以用来调用方法。
Constructor对象:代表类的构造器,可以用来创建对象实例。
假设您有一个名为Person的类,其中有一个名为name的字段和一个名为sayHello的方法。使用反射,您可以这样做:
1234567891011121314151617181920212223242526272829303132333435363738394041import java.lang.reflect.Field;import java.lang.reflect.Method;public class ReflectionExample { public static void main(String[] args) { try ...