0%

intset实现

inset是set集合的底层实现之一,当set中只有整数值元素且元素数量不多时使用

1
2
3
4
5
6
7
8
typedef struct intset {
// 编码方式
uint32_t encoding;
// 元素数量
uint32_t length;
// 保存元素的数组
int8_t contents[];
} intset;

重定向

文件的标准操作分为 标准输入(stdin)、标准输出(stdout)、标准报错输出(stderr)

输入重定向

输入重定向符是<

  • 标准输入STDIN 文件描述符是0
1
2
# 命令的输入来自于文件而不是键盘
command < input-file

输出重定向

输出重定向符是>

bash的输出分为标准输出和错误输出

  • 标准输出STDOUT 文件描述符是1
  • 错误输出STDERR 文件描述符是2

而输出重定向可以将本应该输出到控制台的内容输出到文件

  • 标准输出重定向 命令 > 文件 覆盖原文件内容 命令 >> 文件 追加
  • 错误输出重定向 错误命令 2>文件 覆盖原文件内容 错误命令 2>>文件 追加

使用

1
2
3
4
5
6
7
8
9
# 将错误输出和正常输出分别写到不同的文件
命令 2> err.log 1> stdout.log

# 把命令的标准输出保存到文件中 再将错误输出保存到参数1中,即文件中
命令 >> 文件 2>&1

# 可以使用&>特殊重定向,将所有输出都写到一个文件(不管是错误信息还是正确信息)
命令 &> std.log

可以将命令输出内容追加到文件中(不管是错误信息还是正确信息)

tee命令

如果想将输出同时发送到控制台和日志,可以使用tee命令。

1
2
3
4
5
# 此时控制台和文件中都会有时间内容
date | tee out.log

# 如果想要追加,则使用-a
date | tee -a out.log

MySQL忘记密码

今天在写jdbc时很悲催的发现自己的MySQL密码忘记了,没有办法了,重新设置一下密码吧。

阅读全文 »

springboot扩展SpringMVC

springboot为springmvc提供了很多自动配置,虽然适用于大部分应用,但是不一定适合你的应用

WebMvcConfigurer

WebMvcConfigurer是用来全局定制化Spring boot的MVC特性,可以通过实现WebMvcConfigurer接口来配置应用的MVC全局特性,但是由于该接口方法很多,全部实现比较麻烦,所以一般是继承WebMvcConfigurerAdapter类,该类实现了WebMvcConfigurer接口,并全部提供了空实现,可以选择需要自定义的来进行重写的

WebMvcConfigurerAdapter类在springboot2.x中就不建议使用了,因为java8中接口可以存在default方法,使得WebMvcConfigurerAdapter没有意义,直接实现WebMvcConfigurer接口即可

既保留自动配置又有扩展配置

根据官网的描述,如果想要扩展SpringBoot对于SpringMVC的配置而又保留SpringBoot对SpringMVC的自动配置,可以编写一个配置类(@Configuration)继承WebMvcConfigurerAdapter类,但是不能标注@EnableWebMvc

如果是使用的springmvc框架而非springboot框架的话,必须有@EnableWebMvc注解,否则重写WebMvcConfigurerAdapter的方法无效

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
@Configuration
public class MyMvcConfig extends WebMvcConfigurerAdapter {

// 配置拦截器
@Override
public void addInterceptors(InterceptorRegistry registry) {
super.addInterceptors(registry);
}

// 时间、数字格式化
@Override
public void addFormatters(FormatterRegistry registry) {
}

// 消息解析器
// 对应xml中的 <mvc:annotation-driven>
// <mvc:message-converters register-defaults="true">
// <bean class="org.springframework.http.converter.StringHttpMessageConverter">
// <constructor-arg value="UTF-8"/>
// </bean>
// </mvc:message-converters>
//</mvc:annotation-driven>
@Override
public void configureMessageConverters(List<HttpMessageConverter<?>> converters) {
}

// 验证器 用以处理所有注解了@Valid的元素或注解了@Validated 的控制器方法参数
@Override
public Validator getValidator() {
return null;
}

// 静态资源过滤
// 对应xml 中的 <mvc:resources location="/WEB-INF/templates/" mapping="/templates/**"/>
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
}

// 视图解析器
// 对应于在xml中配置 viewResolver的bean
@Override
public void configureViewResolvers(ViewResolverRegistry registry) {
}

}
阅读全文 »

springboot定制嵌入式的servlet容器

修改容器配置

有两种方式可以修改容器的配置

  • 可以直接在配置文件中修改和server有关的配置
1
2
3
4
5
6
7
server.port=8081
server.tomcat.uri-encoding=UTF-8

//通用的Servlet容器设置
server.xxx
//指定Tomcat的设置
server.tomcat.xxx
阅读全文 »