daily commit
This commit is contained in:
@@ -98,4 +98,10 @@
|
|||||||
* ### 向命名路由传递参数
|
* ### 向命名路由传递参数
|
||||||
* 可以通过pushNamed方法中的arguments参数向命名路由传递参数,传递的参数可以通过ModalRoute.of方法来获取,参数位于settings.arguments属性中
|
* 可以通过pushNamed方法中的arguments参数向命名路由传递参数,传递的参数可以通过ModalRoute.of方法来获取,参数位于settings.arguments属性中
|
||||||
* ### 为组件之间添加关联动画
|
* ### 为组件之间添加关联动画
|
||||||
* 可以通过Hero组件为组件之间添加关联
|
* 可以通过Hero组件为组件之间添加关联
|
||||||
|
* 状态管理
|
||||||
|
* 如果一个widget中的状态不需要被其他widget所访问,那么可以在该widget内维护该状态
|
||||||
|
* 如果一个widget中的状态要与其他widget共享,可以使用provider包来实现
|
||||||
|
* 使用ChangeNotifierProvider,可以实现该节点下子节点之间的数据共享
|
||||||
|
* 可以通过ChangeNotifier来维护数据
|
||||||
|
* 使用Consumer来构建需要共享数据的节点
|
||||||
65
java se/java注解.md
Normal file
65
java se/java注解.md
Normal file
@@ -0,0 +1,65 @@
|
|||||||
|
# Java Annotation
|
||||||
|
* ## Java注解格式:
|
||||||
|
* @annotation_name(element_name1=value_1,element_name2=value_2...)
|
||||||
|
* 注解可以没有element,如果一个注解没有element,那么该注解的括号可以被省略,例如@Override
|
||||||
|
* 如果注解只有一个叫做value的元素,那么value的名称可以被省略,例如@SuppressWarnings("unchecked")
|
||||||
|
* 对于同一个类,可以为其声明多个注解,例如
|
||||||
|
```java
|
||||||
|
@RequestMapping("/hello")
|
||||||
|
@ResponseBody
|
||||||
|
String hello() {return "hello world";}
|
||||||
|
```
|
||||||
|
* ## 注解类型的定义:
|
||||||
|
* 注解类型可以用如下方式来定义:
|
||||||
|
```java
|
||||||
|
@interface ClassMessage {
|
||||||
|
String author();
|
||||||
|
String date();
|
||||||
|
// 可以为注解中的element定义默认值
|
||||||
|
int currentRevision() default 1;
|
||||||
|
String[] reviewers();
|
||||||
|
}
|
||||||
|
```
|
||||||
|
* ## jdk中预定义的java注解
|
||||||
|
* @Deprecated:
|
||||||
|
* 被该注解标明的类、方法、域会被标记为不推荐的,再使用这些方法时编译器会生成警告
|
||||||
|
* 标记为@Deprecated的元素,再java doc中也应该使用@deprecated标记其为被抛弃的
|
||||||
|
* @Override:
|
||||||
|
* 标明该方法会覆盖父类中的同名方法
|
||||||
|
* @SuppressWarnings(warnings):
|
||||||
|
* 抑制警告
|
||||||
|
* 如果要抑制多个警告,可使用如下方法
|
||||||
|
```java
|
||||||
|
@SuppressWarnings({"unchecked","deprecation"}
|
||||||
|
)
|
||||||
|
```
|
||||||
|
* @Target:
|
||||||
|
* 该注解标注在注解上,指明注解应该应用于哪些位置
|
||||||
|
* 在使用时,应该为@Target的value指定如下值:
|
||||||
|
* ElementType.ANNOTATION_TYPE
|
||||||
|
* ElementType.CONSTRUCTOR
|
||||||
|
* ElementType.FILED
|
||||||
|
* ElementType.LOCAL_VARIABLE
|
||||||
|
* ElementType.METHOD
|
||||||
|
* ElementType.PACKAGE
|
||||||
|
* ElementType.Parameter
|
||||||
|
* ElementType.TYPE (可用于类型、接口(包括注解)、枚举)
|
||||||
|
* @Inherited:
|
||||||
|
* 该注解标注在注解上,如果一个注解被标明为继承的,那么该注解标明的父类,其子类即使没有被注解标明,在查询该子类的注解类型时也会返回父类的注解
|
||||||
|
* @Repeatable:
|
||||||
|
* 标明一个注解可以多次重复的应用到同一个类、方法上
|
||||||
|
* ## 可重复注解
|
||||||
|
* 如果想要将一个注解标名为可重复的,需要有如下两个步骤
|
||||||
|
* 为注解标明@Repatable,并且在括号中指明容器注解
|
||||||
|
* 在指定的容器注解中添加可重复注解的数组返回类型
|
||||||
|
* 样例
|
||||||
|
```java
|
||||||
|
@Repatable(Timers.class)
|
||||||
|
@interface Timer {
|
||||||
|
String time() default "0:00";
|
||||||
|
}
|
||||||
|
|
||||||
|
@interface Timers {
|
||||||
|
Timer[] value();
|
||||||
|
}
|
||||||
|
```
|
||||||
25
jwt/jwt.md
25
jwt/jwt.md
@@ -1,4 +1,25 @@
|
|||||||
# JWT
|
# JWT
|
||||||
* ## jwt简介
|
* ## jwt简介
|
||||||
> jwt是一个开源标准。jwt定义了一个紧凑且自包含的方式安全的在多方之间通过json字符串传递信息。由于传递的信息会被签名,故而信息是可验证和信任的。
|
> jwt是一个开源标准。jwt定义了一个紧凑且自包含的方式安全的在多方之间通过json字符串传递信息。由于传递的信息会被签名,故而信息是可验证和信任的。
|
||||||
*
|
jwt只能对payload中的信息进行验证,并不会对信息进行加密。故而jwt中不应该包含敏感信息。jwt只是对header和payload的信息进行签名,保证该信息的来源方式可信的。
|
||||||
|
* ## jwt用途
|
||||||
|
* jwt通常用来进行认证操作
|
||||||
|
* jwt还可以用作信息交换,由于传递的信息会被签名,故而通过jwt来传输信息是安全的
|
||||||
|
* ## jwt结构
|
||||||
|
* ### Header
|
||||||
|
* 对于header部分的信息,会进行base64url编码
|
||||||
|
* ### Payload
|
||||||
|
* 对于payload部分的数据,也会进行base64url形式的编码
|
||||||
|
*
|
||||||
|
* ### Signature
|
||||||
|
* 通常,在header中记录了加密算法,对base64url编码后的header和payload用指定算法和服务端私钥技能型签名后,会生成签名部分
|
||||||
|
* 将签名部分和header、payload通过.分隔并且连接,然后就可以生成jwt
|
||||||
|
* ## jwt认证流程
|
||||||
|
* 首先,客户端第一次向服务端发送登录请求,服务端根据客户端发送的用户名、密码等登录信息在数据库中查找信息并验证,如果登录成功,会在服务端生成一个jwt
|
||||||
|
* 服务端会将生成的jwt返回给客户端,jwt中可以记录一些不敏感信息
|
||||||
|
* 而后每次客户端向服务端发送请求时,都会携带jwt,服务端在接收到jwt后会对jwt中的信息进行验证
|
||||||
|
* ## jwt相对于session存储用户信息的优势
|
||||||
|
* jwt的数据存储在客户端中,故而其并不会像session一样占用服务端内存,能够有效减轻服务端的内存压力
|
||||||
|
* 将一些非敏感信息存储在jwt中,可以避免服务端频繁的在数据库中查询信息
|
||||||
|
* jwt是以json格式存储信息的,故而jwt可以跨语言
|
||||||
|
* jwt可以解决跨域问题,不像cookie只能在同一父域名的不同子域名下共享
|
||||||
Reference in New Issue
Block a user