Ivan's Blog

虽日暮途远,仍梦想诗和远方


  • 首页

  • 关于

  • 标签

  • 分类

  • 归档

  • 搜索

网络请求模板(RestTemplate)

发表于 2017-02-03 | 更新于 2020-11-14 | 评论数:
本文字数: 2.4k

对于返回格式为JSON的资源或者 Restful 接口,统一采用RestTemplate来请求,其它类型响应数据的也建议采用不同的MessageConverter来实现,不 建议再延续使用自定义的类似HttpUtils,HttpHelper之类的工具类。

阅读全文 »

线程池拒绝策略

发表于 2017-01-06 | 更新于 2020-11-14 | 评论数:
本文字数: 1.4k

ThreadPoolExecutor类实现了ExecutorService接口和Executor接口,可以设置线程池corePoolSize,最大线程池大小,AliveTime,拒绝策略等。常用构造方法:

当线程池的任务缓存队列已满并且线程池中的线程数目达到maximumPoolSize,如果还有任务到来就会采取任务拒绝策略,通常有以下四种策略:

1
2
3
4
ThreadPoolExecutor.AbortPolicy // 丢弃任务并抛出RejectedExecutionException异常。
ThreadPoolExecutor.DiscardPolicy // 也是丢弃任务,但是不抛出异常。
ThreadPoolExecutor.DiscardOldestPolicy // 丢弃队列最前面的任务,然后重新尝试执行任务(重复此过程)
ThreadPoolExecutor.CallerRunsPolicy // 由调用线程处理该任务
阅读全文 »

短路式编程(Fast-Break)

发表于 2016-11-29 | 更新于 2020-11-14 | 评论数:
本文字数: 1.3k

目标 :优化代码结构中的嵌套层次,减少代码缩进,提升代码可以性,可理解性;

现实情况

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
public boolean checkSensitiveWord(String targetWord) {
String sensitiveWordKey = "developer.sensitiveword";
if (ObjectUtil.isNotEmpty(targetWord)) {
if (ObjectUtil.isNotEmpty(sensitiveWordKey)) {
List<String> wordList = redisService.getList(sensitiveWordKey);
if (wordList != null && wordList.size() > 0) {
for (String word : wordList) {
if (targetWord.equals(word)) {
return true;
}
}
}
}
}
return false;
}

原因 :正向思维,编码过程中,一直在思索正常的流程情况是什么样的。

阅读全文 »

Tomcat 源码解读——启动篇

发表于 2016-11-10 | 更新于 2020-11-14 | 评论数:
本文字数: 20k

简介

The Apache Tomcat® software is an open source implementation of the Java Servlet, JavaServer Pages, Java Expression Language and Java WebSocket technologies. The Java Servlet, JavaServer Pages, Java Expression Language and Java WebSocket specifications are developed under the Java Community Process.
The Apache Tomcat software is developed in an open and participatory environment and released under the Apache License version 2. The Apache Tomcat project is intended to be a collaboration of the best-of-breed developers from around the world. We invite you to participate in this open development project. To learn more about getting involved, click here.
Apache Tomcat software powers numerous large-scale, mission-critical web applications across a diverse range of industries and organizations. Some of these users and their stories are listed on the PoweredBy wiki page.
Apache Tomcat, Tomcat, Apache, the Apache feather, and the Apache Tomcat project logo are trademarks of the Apache Software Foundation.

以上的简介自来 Apache Tomcat 官网,Tomcat服务器是一个免费的开放源代码的Web应用服务器。Tomcat是Apache软件基金会(Apache Software Foundation)的Jakarta项目中的一个核心项目,由Apache、Sun和其他一些公司及个人共同开发而成。由于有了Sun的参与和支持,最新的Servlet 和JSP规范总是能在Tomcat中得到体现,因为Tomcat技术先进、性能稳定,而且免费,因而深受Java爱好者的喜爱并得到了部分软件开发商的认可,是目前比较流行的Web应用服务器。

阅读全文 »

Tomcat源码解读——Connector之一个请求的完整历程

发表于 2016-11-10 | 更新于 2020-11-14 | 评论数:
本文字数: 5.5k

​ 我们在Tomcat 源码解读——启动篇中讲解过Connector的初始化过程,但并没有深入的去研究Connector.strat方法,以及启动后是怎么接收并处理用户请求的,本文将重点讲述这一过程。

阅读全文 »

Tomcat源码解读——Mapper的路由游戏

发表于 2016-11-10 | 更新于 2020-11-14 | 评论数:
本文字数: 23k

前言

在Tomcat 源码解读——启动篇中我们讲解到一个概念:Mapper,它是用来匹配用户的请求,并将请求路由到指定的容器进行处理的关键组件,本文将通过源码分析来了解这个组件的生命周期及运作原理。

阅读全文 »

SpringBoot——Netflix Feign

发表于 2016-09-07 | 更新于 2020-11-14 | 评论数:
本文字数: 16k

1. 概述

What?

Feign是一个 Netflix 开发的声明性的Web服务客户端,灵感来源于Retrofit、JAXRS-2.0和WebSocket。Feign 最初是为了降低统一绑定Denominator 到 HTTP API 的复杂度,使得 Java HTTP 客户端编写更方便。
Feign 的 MAVEN 直接依赖如下所示:

1
2
3
4
5
6
7
8
9
10
<dependency>
<groupId>com.netflix.feign</groupId>
<artifactId>feign-core</artifactId>
<version>${feign.version}</version>
</dependency>
<dependency>
<groupId>com.netflix.feign</groupId>
<artifactId>feign-gson</artifactId>
<version>${feign.version}</version>
</dependency>

其中 feign-gson 主要是为了进行 gson 序列化,并不是必需的

阅读全文 »

在Spring Boot中格式化JSON日期

发表于 2016-08-24 | 更新于 2020-11-14 | 评论数:
本文字数: 2.5k

1. 概述

在本教程中,我们将展示如何在Spring Boot应用程序中格式化JSON日期字段。

我们将探讨使用Jackson格式化日期的各种方法,它被Spring Boot用作默认的JSON处理器。

阅读全文 »

SpringMVC 对 JSON-P 的支持

发表于 2016-05-29 | 更新于 2020-11-14 | 评论数:
本文字数: 2.7k

1. 概述

如果你既开发后端也开发前端,那么您就知道浏览器在处理AJAX请求时所具有的同源策略约束,也就是我们常说的跨域问题。什么叫同源呢,如果两个页面的协议,端口(如果有指定)和主机都相同,则两个页面具有相同的源。否则,都是跨域。

当然,解决这种问题的方法有很多,其中一种(也是较常见的)方法是使用JSON-P,本文讨论Spring 对使用JSON-P数据格式的支持。

阅读全文 »

Mockito的几种Mock方法

发表于 2016-05-22 | 更新于 2020-11-14 | 评论数:
本文字数: 2.7k

1. 概述

Mockito是一套简洁易用的 Mocking 框架,本文我们将介绍创建模拟对象的三种不同方式以及它们之间的区别 - 使用Mockito和Spring模拟支持。

阅读全文 »

1234…11
Ivan

Ivan

104 日志
7 分类
99 标签
RSS
GitHub E-Mail Weibo Google Twitter FB Page
© 2020 Ivan
由 Hexo 强力驱动 v3.9.0
|
主题 – NexT.Gemini v7.0.1