为什么语音播报要加队列? 因为不加队列连续的语音会有重叠
最近做的一个项目有语音播报功能,测试的过程中发现有语音播报重叠的现象,于是就做了一个语音播报队列。队列是解决这类问题的常见方案,队列的应用在电商抢购处理超卖、抗压的场景中也经常使用!代码如下:
最近做的一个项目有语音播报功能,测试的过程中发现有语音播报重叠的现象,于是就做了一个语音播报队列。队列是解决这类问题的常见方案,队列的应用在电商抢购处理超卖、抗压的场景中也经常使用!代码如下:
新房子入驻没多久又要买车位,上海的车位真是贵呀。而且车位数有限,想要喜欢的车位还要抢!车位都要抢!车位是通过微信小程序在线抢,提前一天给一次模拟的机会。看中了一个距离住的地方比较近的车位,有多个人加入了收藏。为了保险起见,程序员动手了。。。
1 | //全部待选信息 |
今天使用springboot的模板技术开发后端界面,在本地环境运行没有问题。但是丢到线上启动服务之后就不停的刷警告日志,看起来特别讨厌。日志信息如下:1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21INFO | jvm 1 | 2018/08/15 23:07:03 | 2018-08-15 23:07:03.191 [http-nio-8010-exec-1] INFO org.springframework.web.servlet.DispatcherServlet - FrameworkServlet 'dispatcherServlet': initialization started
INFO | jvm 1 | 2018/08/15 23:07:03 | 2018-08-15 23:07:03.204 [http-nio-8010-exec-1] INFO org.springframework.web.servlet.DispatcherServlet - FrameworkServlet 'dispatcherServlet': initialization completed in 13 ms
INFO | jvm 1 | 2018/08/15 23:07:03 | 2018-08-15 23:07:03.219 [http-nio-8010-exec-1] WARN org.springframework.web.servlet.PageNotFound - No mapping found for HTTP request with URI [/register/sendValidateCode.html] in DispatcherServlet with name 'dispatcherServlet'
INFO | jvm 1 | 2018/08/15 23:07:10 | 2018-08-15 23:07:10.855 [http-nio-8010-exec-2] WARN org.springframework.web.servlet.PageNotFound - No mapping found for HTTP request with URI [/register/sendValidateCode.html] in DispatcherServlet with name 'dispatcherServlet'
INFO | jvm 1 | 2018/08/15 23:07:12 | 2018-08-15 23:07:12.874 [http-nio-8010-exec-3] WARN org.springframework.web.servlet.PageNotFound - No mapping found for HTTP request with URI [/register/sendValidateCode.html] in DispatcherServlet with name 'dispatcherServlet'
INFO | jvm 1 | 2018/08/15 23:07:22 | 2018-08-15 23:07:22.719 [http-nio-8010-exec-4] WARN org.springframework.web.servlet.PageNotFound - No mapping found for HTTP request with URI [/register/sendValidateCode.html] in DispatcherServlet with name 'dispatcherServlet'
INFO | jvm 1 | 2018/08/15 23:07:27 | 2018-08-15 23:07:27.186 [http-nio-8010-exec-5] WARN org.springframework.web.servlet.PageNotFound - No mapping found for HTTP request with URI [/register/sendValidateCode.html] in DispatcherServlet with name 'dispatcherServlet'
INFO | jvm 1 | 2018/08/15 23:07:36 | 2018-08-15 23:07:36.585 [http-nio-8010-exec-6] WARN org.springframework.web.servlet.PageNotFound - No mapping found for HTTP request with URI [/register/sendValidateCode.html] in DispatcherServlet with name 'dispatcherServlet'
INFO | jvm 1 | 2018/08/15 23:07:41 | 2018-08-15 23:07:41.018 [http-nio-8010-exec-7] WARN org.springframework.web.servlet.PageNotFound - No mapping found for HTTP request with URI [/register/sendValidateCode.html] in DispatcherServlet with name 'dispatcherServlet'
INFO | jvm 1 | 2018/08/15 23:07:43 | 2018-08-15 23:07:43.003 [http-nio-8010-exec-8] WARN org.springframework.web.servlet.PageNotFound - No mapping found for HTTP request with URI [/register/sendValidateCode.html] in DispatcherServlet with name 'dispatcherServlet'
INFO | jvm 1 | 2018/08/15 23:07:55 | 2018-08-15 23:07:55.418 [http-nio-8010-exec-9] WARN org.springframework.web.servlet.PageNotFound - No mapping found for HTTP request with URI [/register/sendValidateCode.html] in DispatcherServlet with name 'dispatcherServlet'
INFO | jvm 1 | 2018/08/15 23:08:09 | 2018-08-15 23:08:09.500 [http-nio-8010-exec-10] WARN org.springframework.web.servlet.PageNotFound - No mapping found for HTTP request with URI [/register/sendValidateCode.html] in DispatcherServlet with name 'dispatcherServlet'
INFO | jvm 1 | 2018/08/15 23:08:13 | 2018-08-15 23:08:13.535 [http-nio-8010-exec-1] WARN org.springframework.web.servlet.PageNotFound - No mapping found for HTTP request with URI [/register/sendValidateCode.html] in DispatcherServlet with name 'dispatcherServlet'
INFO | jvm 1 | 2018/08/15 23:08:15 | 2018-08-15 23:08:15.590 [http-nio-8010-exec-2] WARN org.springframework.web.servlet.PageNotFound - No mapping found for HTTP request with URI [/register/sendValidateCode.html] in DispatcherServlet with name 'dispatcherServlet'
INFO | jvm 1 | 2018/08/15 23:08:27 | 2018-08-15 23:08:27.687 [http-nio-8010-exec-3] WARN org.springframework.web.servlet.PageNotFound - No mapping found for HTTP request with URI [/register/sendValidateCode.html] in DispatcherServlet with name 'dispatcherServlet'
INFO | jvm 1 | 2018/08/15 23:08:32 | 2018-08-15 23:08:32.448 [http-nio-8010-exec-4] WARN org.springframework.web.servlet.PageNotFound - No mapping found for HTTP request with URI [/register/sendValidateCode.html] in DispatcherServlet with name 'dispatcherServlet'
INFO | jvm 1 | 2018/08/15 23:08:37 | 2018-08-15 23:08:37.022 [http-nio-8010-exec-5] WARN org.springframework.web.servlet.PageNotFound - No mapping found for HTTP request with URI [/register/sendValidateCode.html] in DispatcherServlet with name 'dispatcherServlet'
INFO | jvm 1 | 2018/08/15 23:08:37 | 2018-08-15 23:08:37.699 [http-nio-8010-exec-6] WARN org.springframework.web.servlet.PageNotFound - No mapping found for HTTP request with URI [/register/sendValidateCode.html] in DispatcherServlet with name 'dispatcherServlet'
INFO | jvm 1 | 2018/08/15 23:08:39 | 2018-08-15 23:08:39.431 [http-nio-8010-exec-7] WARN org.springframework.web.servlet.PageNotFound - No mapping found for HTTP request with URI [/register/sendValidateCode.html] in DispatcherServlet with name 'dispatcherServlet'
INFO | jvm 1 | 2018/08/15 23:08:45 | 2018-08-15 23:08:44.999 [http-nio-8010-exec-8] WARN org.springframework.web.servlet.PageNotFound - No mapping found for HTTP request with URI [/register/sendValidateCode.html] in DispatcherServlet with name 'dispatcherServlet'
INFO | jvm 1 | 2018/08/15 23:08:45 | 2018-08-15 23:08:45.570 [http-nio-8010-exec-9] WARN org.springframework.web.servlet.PageNotFound - No mapping found for HTTP request with URI [/register/sendValidateCode.html] in DispatcherServlet with name 'dispatcherServlet'
百度、谷歌各种搜还是没有找到解决自己问题的答案,最后经过不懈努力终于解决了这个问题。原因如下:1
在配置springboot基础服务信息的时候,通常我们是继承adapter-WebMvcConfigurerAdapter. 但是我错误的继承了WebMvcConfigurationSupport.
我的这个蛋疼的问题,就是这里引起的。在这里记录下,以备后用。
冒泡排序
冒泡排序,最终排列的数据是从左到右、从小到大排列。相邻的两个元素比较、第一轮将最大的元素放到最后骂你、第二轮将次大的元素放到倒数第二个。这样右侧的数据项位置是比较固定的,代码如下(手写,未测试)1
2
3
4
5
6
7
8
9for (int i = num.length - 1; i > 0; i--){
for (int j = 0; j < i; j++){
if (num[j] > num[j+1]){
int temp = num[j];
num[j] = num[j+1];
num[j+1] = temp;
}
}
}
由于公司业务需求需要一份最新的城市区域划分信息,所以就考虑到国家统计局去获取一份最新区域信息。经过调研选用了java版本爬虫框架webmagic来处理这个需求。下面介绍下爬虫逻辑以及代码
1 | http://webmagic.io/ |
检查数据库中数据状态
理由:可能是从数据库中取数据的时候中问乱码了,首先检查这个是因为这个问题的检查很直观。直接看一眼就知道了。顺便确认了下jdbc链接数据库时是否设置了中文支持。
发现数据库存储的数据就是乱码,检查数据库表的字符编码
理由:如果数据库中的字符编码不支持中文,可能会到导致中文乱码问题。这种方式的检查也很直观,使用下面命令检查:1
show variables like 'character%';
发现编码没问题,检查是否远程数据接收的时候就是乱码
理由:因为接口可以正常接收浏览器发送过来的数据,所以有问题可能是远程程序进行数据传输的时候就乱码了。debug跟踪发现远程程序发送的时候数据并不是乱码<其实没有深入跟踪,深入跟踪后可以发现在发送前就已经是乱码了>,但是接收数据的时候就变成乱码了。
远程发送代码如下:1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20public static String getRespStrForUri(RestTemplate restTemplate, String uri, Map<String, String> params, String cookie) {
MultiValueMap<String, Object> postParameters = new LinkedMultiValueMap<>();
postParameters.add("app_key", Constants.authorityAppKey);
if (params != null) {
for (String key : params.keySet()) {
postParameters.add(key, params.get(key));
}
}
HttpHeaders headers = new HttpHeaders();
headers.add("Cookie", cookie);
HttpEntity<MultiValueMap<String, Object>> requestEntity = new HttpEntity(postParameters, headers);
String requestURL = Constants.authorityDomain + uri;
try {
Object responseStr = restTemplate.postForObject(requestURL, requestEntity, Object.class);
return responseStr.toString();
} catch (Exception e) {
}
return null;
}
有资料显示可以在springboot提供的application.properties中配置 spring.jackson.default-property-inclusion=non_null 我试了下,并没有什么卵用。
1. @JsonInclude(JsonInclude.Include.NON_NULL)
1 | @Bean |
springboot生成excel和pdf网上的资料并不是很多,大多数是springmvc生成excel和pdf的例子.或者是使用Response输出流直接去写,其实这里要介绍的是spring框架已经为我们考虑好了.了解springmvc组件结构的肯定知道view视图解析器组件,这里主要介绍的就是这个组件的实际应用并附上源代码以及使用过程中遇到的坑.
主要介绍的组件:
1. AbstractXlsView 旧版excel下载
2. AbstractXlsxView 新版excel下载
3. AbstractXlsxStreamingView excel大文件下载
4. AbstractPdfView pdf下载
4. PdfStreamingView pdf模板文件下载
1 | <!-- pdf start --> |
使用annotation获取访问日志本质是没有什么难点,重点是获取请求和响应对象.代码如下
SaveLogAnnotation
1 | /** |
SaveLogAspect,这里我使用的是前置通知。如果要获取响应结果的话可以使用后置或者环绕通知,大同小异
1 | /** |