Logback日志框架简要说明
什么是logbackLogback 是一个开源的 Java 日志框架,是 log4j 框架的改进版,具有更快的执行速度、更好的灵活性和更强的功能。下面是 Logback 的用法、配置方法和日志级别。Logback 已经被整合到 Spring 和 Spring Boot 中了。
Logback 的用法单独使用 Logback 框架,需要在项目的 pom.xml 文件中引入 logback-classic 和 logback-core 两个依赖:
123456789101112<dependency> <groupId>ch.qos.logback</groupId> <artifactId>logback-classic</artifactId> <version>1.2.3</version></dependency><dependency> <groupId>ch.qos.logback</groupId> <artifactId> ...
Http常用状态码
什么是http状态码HTTP状态码是一个3位数字,用于表示HTTP请求的处理结果。以下是常见的HTTP状态码:
1xx(信息性状态码):表示请求已被接受,需要继续处理。
2xx(成功状态码):表示请求已成功被服务器接收、理解、并接受。
3xx(重定向状态码):表示需要客户端采取进一步的操作才能完成请求。
4xx(客户端错误状态码):表示客户端发送的请求有误,服务器无法处理。
5xx(服务器错误状态码):表示服务器在处理请求时发生了错误。
常见的htpp状态码
状态码
含义
200 OK
请求已成功处理
201 Created
请求已成功处理,并创建了新的资源
204 No Content
请求已成功处理,但返回的响应报文中不含实体的主体部分
301 Moved Permanently
永久性重定向,请求的资源已被分配了新的URI
302 Found
临时性重定向,请求的资源已被分配了新的URI
304 Not Modified
发起了条件请求,但服务器判断资源未改变,允许缓存使用
400 Bad Request
请求报文存在语法错误
401 U ...
Spring常用注解用法与核心思想名词解释
Spring常用注解
注解
用法
@Configuration
标记配置类
@Component
标记为组件,组件将在IoC容器中实例化,可以指定实例的名字,在容器中默认单例模式
@Repository
标记数据访问层(DAO)组件,内部包含@Component
@Controller
标记控制器组件,内部包含@Component
@Bean
标记Bean组件,内部包含@Component
@Service
标记服务组件,内部包含@Component
@PostConstruct
标记一个方法,在构造函数执行后执行
@PreDestroy
标记一个方法,在类销毁前执行
@Autowired
用于依赖注入,有字段注入,构造器注入,set方法注入三种方式
@Test
测试方法
@ContextConfiguration(classes=xxx.class)
可以传入参数设置一个组件配置类
@SpringBootTest
标记一个测试程序
@RestContrller
标记一个Rest控制器,可以把返回对象打包成json返回
...
关于@Autowired的三种用法
@Autowired在IDEA的警告在使用spring框架时,我们使用@Autowired实现依赖注入时,IDEA经常会出现警告不建议使用字段注入,要弄懂这个警告,我们得了解@Autowired注入的方式,和他们的各自的优缺点。
@Autowired三种用法字段注入字段注入是最常用的@Autowired注入方法,就是在要注入的组件上直接注解@Autowired;
12345@RestControllerpublic class AlphaController { @Autowired private AlphaDao alphaDao;}
优点:
字段注入十分简单,要修改时,修改的代码很少;
缺点:
不能使用final关键字,可能会导致空安全(空指针)问题,因为注入后的属性,只有真正使用时才能拿到。如果一开始注入的是null,可能会因为一直不调用而导致无法发现NullPointException存在;
和IoC高度耦合,无法重新设置注入的属性,无法脱离容器访问目标对象
可能导致循环依赖(A依赖B,B依赖A)
构造器注入构造器注入是spring官 ...
Maven指南
Maven实用使用技巧,配置和指令
Springboot2入门指南1
Springboot2入门指南实用文档1
Springboot2入门指南2
Springboot2入门指南实用文档2
计算机网络3
数据链路层数据链路层使用的信道主要有以下两种类型:
点对点信道
广播信道
3.1使用点对对信道的数据链路层3.1.2数据链路和帧链路和数据链路并不是一个东西
链路:从一个结点到相邻结点的一段物理线路,中间没有任何交换结点。
数据链路:当需要在一条线路上传送数据时,除了必须有一条物理线路外,还必须有一些通信协议利啊控制这些数据的传输。把实现这些协议的硬件和软件加到链路上,就构成了数据链路。
现在最常用的方法是使用网络适配器(如拨号上网使用拨号适配器,通过以太网上网使用局域网适配器)来实现这些协议。一般的适配器都包括了数据链路层和物理层的功能。
规程:早期的数据通信协议曾叫作通信规程,因此在数据链路层,规程和协议是同义语
帧:数据链路层的协议数据但元叫做帧。
数据链路层把网络层交下来的数据构成帧发送到链路上,以及把接收到的帧中的数据取出并上交给网络层。在互联网中,网络层协议数据单元就是IP数据报(或简称为数据报,分组或包)
点对点信道的数据链路层通信的主要步骤:
结点A的数据链路层把网络层交下来的IP数据报添加首部和尾部封装成帧
结点A把封装好的帧发送给结点B的数据链路层
若结点B的 ...
数据结构一
Trie树作用高效地存储和查找字符串集合的数据结构
实现123456789101112131415161718192021222324252627282930int son[N][26], cnt[N], idx;// 0号点既是根节点,又是空节点// son[][]存储树中每个节点的子节点// cnt[]存储以每个节点结尾的单词数量// 插入一个字符串void insert(char *str){ int p = 0; for (int i = 0; str[i]; i ++ ) { int u = str[i] - 'a'; if (!son[p][u]) son[p][u] = ++ idx; p = son[p][u]; } cnt[p] ++ ;}// 查询字符串出现的次数int query(char *str){ int p = 0; for (int i = 0; str[i]; i ++ ) { ...
数据结构一
单链表1234567891011121314151617181920212223242526272829// head存储链表头,e[]存储节点的值,ne[]存储节点的next指针,idx表示当前用到了哪个节点int head, e[N], ne[N], idx;// 初始化void init(){ head = -1; idx = 0;}// 在链表头插入一个数avoid insert(int a){ e[idx] = a, ne[idx] = head, head = idx ++ ;}//将数a插入到下标是k的点后面void add(int k,int a){ e[idx]=a; ne[idx]=ne[k]; ne[k]=idx++; }// 将头结点删除,需要保证头结点存在void remove(){ head = ne[head];}
双链表12345678910111213141516171819202122232425// e[]表示节点的值,l[ ...