极客时间-算法-学习总结

系统高效地学习数据结构与算法

什么是数据结构?什么是算法?

广义定义:数据结构就是指一组数据的存储结构。算法就是操作数据的一组方法。

狭义定义:指的就是著名的数据结构和算法实现(大多数相关书籍里面内容),比如数组,队列,栈,链表,快速排序,二分查找等。

数据结构和算法的关系

数据结构和算法是相辅相成的。数据结构是为算法服务的,算法要作用在特定的数据结构之上。因此,无法孤立数据结构来讲算法,也无法孤立算法来讲数据结构。

mockito学习总结

前言

在开发工作中,单元测试时必不可少的一环。而在编写单元测试代码中,你肯定会遇到依赖的服务,接口和一些运行环境中的对象无法构造的情况。此时你就需要一个功能强大的mock框架,让它来帮你完成这些功能,而Mockito就是Java开发环境中一个功能强大的Mock框架。类似的还有powermock, easymock等。

本文是对以往工作中使用到Mockito的一些功能做一次总结,方便以后翻看,并帮助需要使用Mockito的人。

mysql profile 学习笔记

mysql profile 简介

show profileshow profiles语句,可以用来显示SQL语句执行期间各种资源的使用信息。

注意:
这些语句从版本5.6.7开始就不建议使用了,并且可能在下一个release版本中删除。后续可以通过Performance Schema来替代这些语句。具体可以参考:Profiling Using Performance Schema

show profiles

show profiles 展示了服务器最近收到的语句列表。 列表的大小可以通过调整profiling_history_size来调整,默认大小是15,最大值是100。如果设置为0,则和关闭profile功能是一样的。

举个例子:

springboot 之 ConfigurationProperties

前言

ConfigurationProperties 是SpringBoot引入的一个和外部配置文件相关的注解类。它可以帮助我们更好的使用外置的配置文件属性。

源码解析

1
2
3
4
5
6
7
8
9
10
11
12
13
14
@Target({ ElementType.TYPE, ElementType.METHOD })
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface ConfigurationProperties {
@AliasFor("prefix")
String value() default "";
@AliasFor("value")
String prefix() default "";
boolean ignoreInvalidFields() default false;
boolean ignoreNestedProperties() default false;
boolean ignoreUnknownFields() default true;
@Deprecated
boolean exceptionIfInvalid() default true;
}

maven加速

前言

由于网络原因,国内访问maven中央仓库速度很慢。编译大型Maven项目时速度很慢。此时可以通过公用的或私有的镜像站来进行加速。

consul 命令介绍

consul 命令用法

安装完consul后,通过在控制台直接实现consul命令了解consul命令行的用法,输出如下:

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
Usage: consul [--version] [--help] <command> [<args>]

Available commands are:
agent Runs a Consul agent
catalog Interact with the catalog
event Fire a new event
exec Executes a command on Consul nodes
force-leave Forces a member of the cluster to enter the "left" state
info Provides debugging information for operators.
join Tell Consul agent to join cluster
keygen Generates a new encryption key
keyring Manages gossip layer encryption keys
kv Interact with the key-value store
leave Gracefully leaves the Consul cluster and shuts down
lock Execute a command holding a lock
maint Controls node or service maintenance mode
members Lists the members of a Consul cluster
monitor Stream logs from a Consul agent
operator Provides cluster-level tools for Consul operators
reload Triggers the agent to reload configuration files
rtt Estimates network round trip time between nodes
snapshot Saves, restores and inspects snapshots of Consul server state
validate Validate config files/directories
version Prints the Consul version
watch Watch for changes in Consul

如上所示, consul提供的命令很多,下面就逐个学习下每个命令的作用和用法。

servlet如何正确处理302跳转

背景

某天,将线上的resin容器替换为tomcat. 过了一段时间发现有个接口处理失败,提示异常.查看应用日志发现如下的日志:

1
2
3
4
5
6
Caused by: javax.servlet.ServletException: java.lang.IllegalStateException: Cannot create a session after the response has been committed
at org.apache.jsp.WEB_002dINF.content.order.page.error_jsp._jspService(error_jsp.java:293) ~[na:na]
at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70) ~[jasper.jar:8.5.12]
at javax.servlet.http.HttpServlet.service(HttpServlet.java:742) ~[servlet-api.jar:na]
at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:443) ~[jasper.jar:8.5.12]
... 38 common frames omitted

查询相关接口的代码发现,代码对302跳转的逻辑处理有问题,具体如下:

|