Java注解

文章目录

    • java注解概述
    • 注解原理是什么
    • 注解的作用:
    • java注解的分类
      • 系统注解
      • 元注解
      • 自定义注解
    • Java常用注解
      • Spring Web MVC 注解
      • Spring Bean 注解
      • Spring Boot注解
      • Jpa
      • 全局异常处理
      • SpringCloud
      • 容器配置注解
      • Spring DI注解
      • 配置注解
      • mybatis注解

java注解概述

注解(Annotation),也叫元数据。一种代码级别的说明。它是JDK1.5及以后版本引入的一个特性,与类、接口、枚举是在同一个层次。它可以声明在包、类、字段、方法、局部变量、方法参数等的前面,用来对这些元素进行说明,注释。它可以用于创建文档,跟踪代码中的依赖性,甚至执行基本编译时检查。
2. 特点
采用纯java代码,不再需要配置繁杂的xml文件
在配置中也可享受面向对象带来的好处
类型安全对重构可以提供良好的支持
减少复杂配置文件的同时亦能享受到springIoC容器提供的功能

注解原理是什么

注解本质是一个继承了Annotation的特殊接口,其具体实现类是Java运行时生成的动态代理类。
我们通过反射获取注解时,返回的是Java运行时生成的动态代理对象。通过代理对象调用自定义注
解的方法,会最终调用AnnotationInvocationHandler的invoke方法。该方法会从memberValues
这个Map中索引出对应的值。而memberValues的来源是Java常量池。
Java 注解的理解
注解是通过@interface 关键字来进行定义的,形式和接口差不多,只是前面多了一个

@
public @interface TestAnnotation {
}

使用时@TestAnnotation 来引用,要使注解能正常工作,还需要使用元注解,它是可以注解
到注解上的注解。元标签有@Retention @Documented @Target @Inherited @Repeatable 五种
@Retention 说明注解的存活时间,取值有 RetentionPolicy.SOURCE 注解只在源码阶段保留,
在编译器进行编译时被丢弃;RetentionPolicy.CLASS 注解只保留到编译进行的时候,并不会
被加载到 JVM 中。RetentionPolicy.RUNTIME 可以留到程序运行的时候,它会被加载进入到 JVM
中,所以在程序运行时可以获取到它们。
@Documented 注解中的元素包含到 javadoc 中去
@Target 限 定 注 解 的 应 用 场 景 , ElementType.FIELD 给 属 性 进 行 注 解 ;
ElementType.LOCAL_VARIABLE 可以给局部变量进行注解;ElementType.METHOD 可以给方法
进行注解;ElementType.PACKAGE 可以给一个包进行注解 ElementType.TYPE 可以给一个类型
进行注解,如类、接口、枚举
@Inherited 若一个超类被@Inherited 注解过的注解进行注解,它的子类没有被任何注解应用的话,该子类就可继承超类的注解;

注解的作用:

1)提供信息给编译器:编译器可利用注解来探测错误和警告信息
2)编译阶段:软件工具可以利用注解信息来生成代码、html 文档或做其它相应处理;
3)运行阶段:程序运行时可利用注解提取代码
注解是通过反射获取的,可以通过 Class 对象的 isAnnotationPresent()方法判断它是否应用了
某个注解,再通过 getAnnotation()方法获取 Annotation 对象

java注解的分类

注解根据来源可分为: 系统注解(自带的,取决于JDK版本)、自定义注解及第三方注解
系统注解根据用途又可分为: java内置注解和元注解
根据运行机制(保留到什么时候)可分为: 源码注解、编译注解和运行注解

系统注解

**定义:**包括@Override(标明重写某个方法)、@Deprecated(标明某个类或方法过时)和@SuppressWarnings(标明要忽略的警告),使用这些注解后编译器就会进行检查。
@Override
1.表示当前方法覆盖了父类的方法
2.此注释只适用于修辞方法,表示一个方法声明打算重写超类中的另一个方法声明。如果方法利用此注释类型进行注解但没有重写超类方法,则编译器会生成一条错误消息
@Deprecated
1.表示方法已经过时,方法上有横线,使用时会有警告。
2.此注释可用于修辞方法、属性、类,表示不鼓励程序员使用这样的元素,通常是因为它很危险或存在更好的选择。在使用不被赞成的程序元素或在不被赞成的代码中执行重写时,编译器会发出警告

@Deprecated 
@Deprecated
class TestClass {// do 
}

@SuppressWarnings
1.用于关闭对类、方法、成员编译时产生的特定警告。
2.用来抑制编译时的警告信息。与前两个注释有所不同,你需要添加一个参数才能正确使用,这些参数值都是已经定义好了的,我们选择性的使用就好了,
1.抑制单类型的警告

@SuppressWarnings("unchecked")  
public void addItems(String item){  @SuppressWarnings("rawtypes")  List items = new ArrayList();  items.add(item);  
}

2.抑制多类型的警告

@SuppressWarnings(value={"unchecked", "rawtypes"})  
public void addItems(String item){  List items = new ArrayList();  items.add(item);  
}

3.抑制所有类型的警告

@SuppressWarnings("all")  
public void addItems(String item){  List items = new ArrayList();  items.add(item);  
}

@SafeVarargs
在声明具有模糊类型(比如:泛型)的可变参数的构造函数或方法时,Java编译器会报unchecked警告。

@Documented
@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.CONSTRUCTOR, ElementType.METHOD})
public @interface SafeVarargs {}

@FunctionalInterface
用于指示被修饰的接口是函数式接口,在 JDK8 引入。
@FunctionalInterfacepublic interface UserService {

    void getUser(Long userId);// 默认方法,可以用多个默认方法public default void setUser() {}// 静态方法public static void saveUser() {}// 覆盖Object中的equals方法public boolean equals(Object obj);
}

元注解

**定义:**元注解是可以注解到注解上的注解,或者说元注解是一种基本注解,但是它能够应用到其它的注解上面。包括@Retention(标明注解被保留的阶段)、@Target(标明注解使用的范围)、@Inherited(标明注解可继承)、@Documented(标明是否生成javadoc文档)
@Retention
Retention 的英文意为保留期的意思。当 @Retention 应用到一个注解上的时候,它解释说明了这个注解的的存活时间。
取值范围:
RetentionPolicy.SOURCE 注解只在源码阶段保留,在编译器进行编译时它将被丢弃忽视。
RetentionPolicy.CLASS 注解只被保留到编译进行的时候,它并不会被加载到 JVM 中。
RetentionPolicy.RUNTIME 注解可以保留到程序运行的时候,它会被加载进入到 JVM 中,所以在程序运行时可以获取到它们。

import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;@Retention(RetentionPolicy.RUNTIME)
public @interface Test {
}

@Documented
它的作用是能够将注解中的元素包含到 Javadoc 中去。
@Target
当一个注解被 @Target 注解时,这个注解就被限定了运用的场景。
主要场景:
ElementType.ANNOTATION_TYPE 可以给一个注解进行注解
ElementType.CONSTRUCTOR 可以给构造方法进行注解
ElementType.FIELD 可以给属性进行注解
ElementType.LOCAL_VARIABLE 可以给局部变量进行注解
ElementType.METHOD 可以给方法进行注解
ElementType.PACKAGE 可以给一个包进行注解
ElementType.PARAMETER 可以给一个方法内的参数进行注解
ElementType.TYPE 可以给一个类型进行注解,比如类、接口、枚举

package javax.validation;import java.lang.annotation.Documented;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;@Target({ElementType.METHOD, ElementType.FIELD, ElementType.CONSTRUCTOR, ElementType.PARAMETER, ElementType.TYPE_USE})
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface Valid {
}

@Inherited
Inherited 是继承的意思,但是它并不是说注解本身可以继承,而是说如果一个超类被 @Inherited 注解过的注解进行注解的话,那么如果它的子类没有被任何注解应用的话,那么这个子类就继承了超类的注解。
@Repeatable
Repeatable 自然是可重复的意思。@Repeatable 是 Java 1.8 才加进来的,所以算是一个新的特性。

自定义注解

**定义:**用户可以根据自己的需求定义注解。
https://blog.csdn.net/weixin_45020244/article/details/124087535
注解是一种能被添加到java源代码中的元数据,方法、类、参数和包都可以用注解来修饰。注解可以看作是一种特殊的标记,可以用在方法、类、参数和包上,程序在编译或者运行时可以检测到这些标记而进行一些特殊的处理。
修饰符: 访问修饰符必须为public,不写默认为pubic;
关键字: 关键字为@interface;
注解名称: 注解名称为自定义注解的名称,使用时还会用到;
注解内容: 注解中内容,对注解的描述。

如何自定义注解实现功能

创建自定义注解和创建一个接口相似,但是注解的 interface 关键字需要以@符号开头。
注解方法不能带有参数;
注解方法返回值类型限定为:基本类型、String、Enums、Annotation 或者是这些类型的
数组;
注解方法可以有默认值;
注解本身能够包含元注解,元注解被用来注解其它注解。

@Documented
@Inherited
@Target({ ElementType.FIELD, ElementType.METHOD ,ElementType.TYPE})  //可以在字段、枚举的常量、方法
@Retention(RetentionPolicy.RUNTIME)
public @interface Init {String value() default "";
}

Java常用注解

Spring Web MVC 注解

@RequestMapping
@RequestMapping注解的主要用途是将Web请求与请求处理类中的方法进行映射。Spring MVC和Spring WebFlux都通过RquestMappingHandlerMapping和RequestMappingHndlerAdapter两个类来提供对@RequestMapping注解的支持。
@RequestMapping注解对请求处理类中的请求处理方法进行标注;@RequestMapping注解拥有以下的六个配置属性:
value:映射的请求URL或者其别名
method:兼容HTTP的方法名
params:根据HTTP参数的存在、缺省或值对请求进行过滤
header:根据HTTP Header的存在、缺省或值对请求进行过滤
consume:设定在HTTP请求正文中允许使用的媒体类型
product:在HTTP响应体中允许使用的媒体类型
提示:在使用@RequestMapping之前,请求处理类还需要使用@Controller或@RestController进行标记
@RequestBody
@RequestBody在处理请求方法的参数列表中使用,它可以将请求主体中的参数绑定到一个对象中,请求主体参数是通过HttpMessageConverter传递的,根据请求主体中的参数名与对象的属性名进行匹配并绑定值。此外,还可以通过@Valid注解对请求主体中的参数进行校验。
@GetMapping
@GetMapping注解用于处理HTTP GET请求,并将请求映射到具体的处理方法中。具体来说,@GetMapping是一个组合注解,它相当于是@RequestMapping(method=RequestMethod.GET)的快捷方式。
@PostMapping
@PostMapping注解用于处理HTTP POST请求,并将请求映射到具体的处理方法中。@PostMapping与@GetMapping一样,也是一个组合注解,它相当于是@RequestMapping(method=HttpMethod.POST)的快捷方式。
@PutMapping
@PutMapping注解用于处理HTTP PUT请求,并将请求映射到具体的处理方法中,@PutMapping是一个组合注解,相当于是@RequestMapping(method=HttpMethod.PUT)的快捷方式。
@DeleteMapping
@DeleteMapping注解用于处理HTTP DELETE请求,并将请求映射到删除方法中。@DeleteMapping是一个组合注解,它相当于是@RequestMapping(method=HttpMethod.DELETE)的快捷方式。
@PatchMapping
@PatchMapping注解用于处理HTTP PATCH请求,并将请求映射到对应的处理方法中。@PatchMapping相当于是@RequestMapping(method=HttpMethod.PATCH)的快捷方式。
@ControllerAdvice
@ControllerAdvice是@Component注解的一个延伸注解,Spring会自动扫描并检测被@ControllerAdvice所标注的类。@ControllerAdvice需要和@ExceptionHandler、@InitBinder以及@ModelAttribute注解搭配使用,主要是用来处理控制器所抛出的异常信息。
首先,我们需要定义一个被@ControllerAdvice所标注的类,在该类中,定义一个用于处理具体异常的方法,并使用@ExceptionHandler注解进行标记。
此外,在有必要的时候,可以使用@InitBinder在类中进行全局的配置,还可以使用@ModelAttribute配置与视图相关的参数。使用@ControllerAdvice注解,就可以快速的创建统一的,自定义的异常处理类。
@ResponseBody
@ResponseBody会自动将控制器中方法的返回值写入到HTTP响应中。特别的,@ResponseBody注解只能用在被@Controller注解标记的类中。如果在被@RestController标记的类中,则方法不需要使用@ResponseBody注解进行标注。@RestController相当于是@Controller和@ResponseBody的组合注解。
@ExceptionHandler
@ExceptionHander注解用于标注处理特定类型异常类所抛出异常的方法。当控制器中的方法抛出异常时,Spring会自动捕获异常,并将捕获的异常信息传递给被@ExceptionHandler标注的方法。
@ResponseStatus
@ResponseStatus注解可以标注请求处理方法。使用此注解,可以指定响应所需要的HTTP STATUS。特别地,我们可以使用HttpStauts类对该注解的value属性进行赋值。
@PathVariable
@PathVariable注解是将方法中的参数绑定到请求URI中的模板变量上。可以通过@RequestMapping注解来指定URI的模板变量,然后使用@PathVariable注解将方法中的参数绑定到模板变量上。特别地,@PathVariable注解允许我们使用value或name属性来给参数取一个别名。
注.如果参数是一个非必须的,可选的项,则可以在@PathVariable中设置require = false
@RequestParam
@RequestParam注解用于将方法的参数与Web请求的传递的参数进行绑定。使用@RequestParam可以轻松的访问HTTP请求参数的值。
@Controller
@Controller是@Component注解的一个延伸,Spring会自动扫描并配置被该注解标注的类。此注解用于标注Spring MVC的控制器。
@RestController
@RestController是在Spring 4.0开始引入的,这是一个特定的控制器注解。此注解相当于@Controller和@ResponseBody的快捷方式。当使用此注解时,不需要再在方法上使用@ResponseBody注解。
@ModelAttribute
通过此注解,可以通过模型索引名称来访问已经存在于控制器中的model。
1.与@PathVariable和@RequestParam注解一样,如果参数名与模型具有相同的名字,则不必指定索引名称
2.特别地,如果使用@ModelAttribute对方法进行标注,Spring会将方法的返回值绑定到具体的Model上
3.在Spring调用具体的处理方法之前,被@ModelAttribute注解标注的所有方法都将被执行。
@CrossOrigin
@CrossOrigin注解将为请求处理类或请求处理方法提供跨域调用支持。如果我们将此注解标注类,那么类中的所有方法都将获得支持跨域的能力。使用此注解的好处是可以微调跨域行为。
@InitBinder
@InitBinder注解用于标注初始化WebDataBinider的方法,该方法用于对Http请求传递的表单数据进行处理,如时间格式化、字符串处理等。

Spring Bean 注解

@ComponentScan
@ComponentScan注解用于配置Spring需要扫描的被组件注解注释的类所在的包。可以通过配置其basePackages属性或者value属性来配置需要扫描的包路径。value属性是basePackages的别名。
@Component
@Component注解用于标注一个普通的组件类,它没有明确的业务范围,只是通知Spring被此注解的类需要被纳入到Spring Bean容器中并进行管理。
@Service
@Service注解是@Component的一个延伸(特例),它用于标注业务逻辑类。与@Component注解一样,被此注解标注的类,会自动被Spring所管理。
@Repository
@Repository注解也是@Component注解的延伸,与@Component注解一样,被此注解标注的类会被Spring自动管理起来,@Repository注解用于标注DAO层的数据持久化类

Spring Boot注解

@SpringBootApplication
@SpringBootApplication注解是一个快捷的配置注解,在被它标注的类中,可以定义一个或多个Bean,并自动触发自动配置Bean和自动扫描组件。此注解相当于@Configuration、@EnableAutoConfiguration和@ComponentScan的组合。
@EnableAutoConfiguration
@EnableAutoConfiguration注解用于通知Spring,根据当前类路径下引入的依赖包,自动配置与这些依赖包相关的配置项。
@ConditionalOnClass与@ConditionalOnMissingClass
这两个注解属于类条件注解,它们根据是否存在某个类作为判断依据来决定是否要执行某些配置。
@ConditionalOnBean与@ConditionalOnMissingBean
这两个注解属于对象条件注解,根据是否存在某个对象作为依据来决定是否要执行某些配置方法。
@ConditionalOnProperty
@ConditionalOnProperty注解会根据Spring配置文件中的配置项是否满足配置要求,从而决定是否要执行被其标注的方法。
@ConditionalOnResource
此注解用于检测当某个配置文件存在使,则触发被其标注的方法
@ConditionalOnWebApplication与@ConditionalOnNotWebApplication
这两个注解用于判断当前的应用程序是否是Web应用程序。如果当前应用是Web应用程序,则使用Spring WebApplicationContext,并定义其会话的生命周期。
@ConditionalExpression
此注解可以让我们控制更细粒度的基于表达式的配置条件限制。当表达式满足某个条件或者表达式为真的时候,将会执行被此注解标注的方法。
@Conditional
@Conditional注解可以控制更为复杂的配置条件。在Spring内置的条件控制注解不满足应用需求的时候,可以使用此注解定义自定义的控制条件,以达到自定义的要求。

Jpa

@Entity @Table(name=”“)
表明这是一个实体类。一般用于jpa ,这两个注解一般一块使用,但是如果表名和实体类名相同的话,@Table可以省略;
@MappedSuperClass
用在确定是父类的entity上。父类的属性子类可以继承;
@NoRepositoryBean
一般用作父类的repository,有这个注解,spring不会去实例化该repository;
@Column
如果字段名与列名相同,则可以省略;
@Id
表示该属性为主键;
@GeneratedValue(strategy=GenerationType.SEQUENCE,generator = “repair_seq”)
表示主键生成策略是sequence(可以为Auto、IDENTITY、native等,Auto表示可在多个数据库间切换),指定sequence的名字是repair_seq;
@SequenceGenerator(name = “repair_seq”, sequenceName = “seq_repair”, allocationSize = 1)
name为sequence的名称,以便使用,sequenceName为数据库的sequence名称,两个名称可以一致;
@Transient
表示该属性并非一个到数据库表的字段的映射,ORM框架将忽略该属性.
如果一个属性并非数据库表的字段映射,就务必将其标示为@Transient,否则,ORM框架默认其注解为@Basic;
@Basic(fetch=FetchType.LAZY)
标记可以指定实体属性的加载方式;
@JsonIgnore
作用是json序列化时将java bean中的一些属性忽略掉,序列化和反序列化都受影响;
@JoinColumn(name=”loginId”)
一对一:本表中指向另一个表的外键。
一对多:另一个表指向本表的外键。
@OneToOne
@OneToMany
@ManyToOne
对应Hibernate配置文件中的一对一,一对多,多对一。

全局异常处理

@ControllerAdvice
包含@Component。可以被扫描到。统一处理异常;
@ExceptionHandler(Exception.class)
用在方法上面表示遇到这个异常就执行以下方法。

SpringCloud

@EnableEurekaServer
用在springboot启动类上,表示这是一个eureka服务注册中心;
@EnableDiscoveryClient
用在springboot启动类上,表示这是一个服务,可以被注册中心找到;
@LoadBalanced
开启负载均衡能力;
@EnableCircuitBreaker
用在启动类上,开启断路器功能;
@HystrixCommand(fallbackMethod=”backMethod”)
用在方法上,fallbackMethod指定断路回调方法;
@EnableConfigServer
用在启动类上,表示这是一个配置中心,开启Config Server;
@EnableZuulProxy
开启zuul路由,用在启动类上;
@SpringCloudApplication
包含
@SpringBootApplication
@EnableDiscovertyClient
@EnableCircuitBreaker

容器配置注解

@Autowired
@Autowired注解用于标记Spring将要解析和注入的依赖项。此注解可以作用在构造函数、字段和setter方法上。
1.作用于构造函数
2.作用于setter方法
3.作用于字段
@Primary
当系统中需要配置多个具有相同类型的bean时,@Primary可以定义这些Bean的优先级。下面将给出一个实例代码来说明这一特性:
@PostConstruct与@PreDestroy
值得注意的是,这两个注解不属于Spring,它们是源于JSR-250中的两个注解,位于common-annotations.jar中。@PostConstruct注解用于标注在Bean被Spring初始化之前需要执行的方法。@PreDestroy注解用于标注Bean被销毁前需要执行的方法。
@Qualifier
当系统中存在同一类型的多个Bean时,@Autowired在进行依赖注入的时候就不知道该选择哪一个实现类进行注入。此时,我们可以使用@Qualifier注解来微调,帮助@Autowired选择正确的依赖项。

Spring DI注解

@DependsOn
@DependsOn注解可以配置Spring IoC容器在初始化一个Bean之前,先初始化其他的Bean对象。
@Bean
@Bean注解主要的作用是告知Spring,被此注解所标注的类将需要纳入到Bean管理工厂中。
@Scope
@Scope注解可以用来定义@Component标注的类的作用范围以及@Bean所标记的类的作用范围。@Scope所限定的作用范围有:singleton、prototype、request、session、globalSession或者其他的自定义范围。
用于切面编程(AOP)
@Aspect,@Before,@After,@Around,@Pointcut

配置注解

@ConfigurationProperties
用来加载额外的配置(如 .properties 文件),可用在 @Configuration 注解类,或者 @Bean 注解方法上面。
关于这个注解的用法可以参考《Spring Boot读取配置的几种方式》这篇文章
@EnableConfigurationProperties
一般要配合 @ConfigurationProperties 注解使用,用来开启对 @ConfigurationProperties 注解配置 Bean 的支持

@Value:注入Spring boot application.properties配置的属性的值。示例代码:

mybatis注解

@Select

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/158783.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【工具】java判断某个时间是否在时间范围区间内

【工具】java判断某个时间是否在时间范围区间内 import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Date;public class Example {public static void main(String[] args) throws ParseException {// 要判断的时间String timeString &qu…

HarmonyOS ArkTS语言,运行Hello World(一)

一、下载与安装DevEco Studio 在HarmonyOS应用开发学习之前,需要进行一些准备工作,首先需要完成开发工具DevEco Studio的下载与安装以及环境配置。 进入DevEco Studio下载官网,单击“立即下载”进入下载页面。 DevEco Studio提供了Windows…

【前端学java】java中的包装类(11)

往期回顾: 【前端学java】JAVA开发的依赖安装与环境配置 (0)【前端学 java】java的基础语法(1)【前端学java】JAVA中的packge与import(2)【前端学java】面向对象编程基础-类的使用 &#xff08…

【深度学习】不用Conda在PP飞桨Al Studio三个步骤安装永久PyTorch环境

在 PaddlePaddle AI Studio 中使用 Python 虚拟环境安装 PyTorch 免责声明 在阅读和实践本文提供的内容之前,请注意以下免责声明: 侵权问题: 本文提供的信息仅供学习参考,不用做任何商业用途,如造成侵权,请私信我&am…

OpenAI董事会秒反悔!奥特曼被求重返CEO职位

明敏 丰色 发自 凹非寺 量子位 | 公众号 QbitAI 1天时间,OpenAI董事会大变脸。 最新消息,他们意在让奥特曼重返CEO职位。 多方消息显示,因为“投资人的怒火”,OpenAI董事会才在一天时间里来了个大反转。 微软CEO纳德拉被曝在得…

【nlp】2.8 注意力机制拓展

注意力机制拓展 1 注意力机制原理1.1 注意力机制示意图1.2 Attention计算过程1.3 Attention计算逻辑1.4 有无attention模型对比1.4.1 无attention机制的模型1.4.2 有attention机制的模型1 注意力机制原理 1.1 注意力机制示意图 Attention机制的工作原理并不复杂,我们可以用下…

springBoot整合quartz定时任务

声明 Quartz是一种基于java实现的任务调度框架,可以定时自动的执行你想要执行的任何任务。 官网:quartz官网 利用Quartz的定时任务技术可以应用于许多不同的场景,帮助我们实现定时执行任务、数据清理、缓存刷新、邮件发送、数据备份、系统监…

【Redis篇】简述Java中操作Redis的方法

文章目录 🎄简述Jedis🎄Jedis优点🍔使用Jedis连接Redis⭐进行测试🎈进行测试 Redis(Remote Dictionary Server)是一种流行的高性能内存数据库,广泛应用于各种应用程序和系统中。作为Java开发人员…

【giszz笔记】产品设计标准流程【7】

(续上回) 今天来讨论下产品设计标准流程中,交互设计和视觉设计的内容。 想参考之前文章的,我把链接给到这里。 【giszz笔记】产品设计标准流程【6】-CSDN博客 【giszz笔记】产品设计标准流程【5】-CSDN博客 【giszz笔记】产品…

js双击修改元素内容并提交到后端封装实现

前面发过一个版本了,后来又追加了些功能。重新发一版。新版支持select和radio。 效果图: 右上角带有绿标的,是可以修改的单元格。如果不喜欢显示绿标,可以传递参数时指定不显示,如果想改为其它颜色,也可以…

涉密人员离职怎么做好安全管理?

在信息安全领域,涉密人员的离职安全管理具有极其重要的意义。一旦涉密人员离职,可能会对单位的信息安全造成威胁,因此必须采取有效的措施来确保涉密人员离职后的信息安全。 一、涉密人员离职安全管理的现状 目前,许多单位在涉密人…

QML22、常规组件Page

Page是一个容器控件,可以方便地向页面添加页眉和页脚项。 title : string 此属性保存页面标题。 header : Item 此属性保存页眉项。标题项被定位到顶部,并调整大小为页面的宽度。缺省值为空。 注意:指定一个ToolBar, TabBar,或DialogButtonBox作为页眉会自动将各自的ToolBar…

系列四、ThreadLocal的工作原理

一、内存结构图 二、工作原理 (1)Thread有一个类型为ThreadLocal.ThreadLocalMap threadLocals 的实例变量,即每个线程都有一个属于自己的ThreadLocalMap; (2)ThreadLocalMap内部维护着Entry数组&#xff0…

合理运用ChatGPT使用Python编写一个桌面便签应用

ChatGPT的编程能力也不差,本次我就一步一步提要求,让ChatGPT根据我的要求,编写出一个可用的,可打包运行的桌面便签。 代码 import sys from PyQt5.QtWidgets import QApplication, QMainWindow, QMenu, QAction, QSystemTrayIco…

EPSon打印机更换色带

1、打印机色带拆装视频 打印机色带更换 2、色带盒四周有多个卡扣,需从右到左依次轻微用力掰开,使盖板与盒体脱离,注意不要掰断卡扣。 3、如何将色带放入打印机色带盒? A、色带放入盒体时不可打乱打结,以免卡带&#x…

Js中clientX/Y、offsetX/Y和screenX/Y之间区别

Js中client、offset和screen的区别 前言图文解说实例代码解说 前言 本文主要讲解JavaScript中clientX、clientY、offsetX、offsetY、screenX、screenY之间的区别。 图文解说 在上图中,有三个框,第一个为屏幕,第二个为浏览器大小&#xff0c…

【2021集创赛】Diligent杯一等奖:基于Cortex-M3软核的智能识别称量平台

本作品参与极术社区组织的有奖征集|秀出你的集创赛作品风采,免费电子产品等你拿~活动。 杯赛题目:Diligent杯:基于FPGA开源软核的硬件加速智能平台 参赛组别:A组 设计任务: 利用业界主流软核处理器(仅限于Cortex-M系列及 RISC-V系…

使用hping3和wrk模拟泛洪

一、hping3 1、syn随机ip泛洪 hping3 --flood -S --rand-source -p 端口 目标ip hping3 -c 10000 -d 120 -S -p 80 --flood --rand-source 192.168.112.130​说明: -c 100000 packets 发送的数量 -d 120 packet的大小 -S 只发送syn packets -p 80 目标端口&am…

腾讯云服务器99元一年?假的,阿里云是99元

腾讯云服务器99元一年是真的吗?假的,不用99元,只要88元即可购买一台2核2G3M带宽的轻量应用服务器,99元太多了,88元就够了,腾讯云百科活动 txybk.com/go/txy 活动打开如下图: 腾讯云服务器价格 腾…

Oracle(2-5)Usage and Configuration of the Oracle Shared Server

文章目录 一、基础知识1、 Server Configurations服务器配置2、Dedicated server process专用服务器进程3、Oracle Shared ServerOracle共享服务器4、Benefits of Shared Server 共享服务器的优点5、Processing a Request 处理请求6、Configuring Shared Server 配置共享服务器…