Joda Time使用小结
一、Joda Time基础操作
1、 构造指定时间12345678910111213// 明确给出年月日时分秒,同时还可以指定毫秒DateTime dateTime = new DateTime(2017,9,14,20,30,0); // 使用时间戳构造Datetime dateTime = new DateTime(1505371053358L);// 使用字符串构造,使用字符串构造需要自己定义patternString date = "2017-09-14 20:30:00";DateTimeFormatter dateTimeFormatter = DateTimeFormat.forPattern("yyyy-MM-dd HH:mm:ss");DateTime dateTime = dateTimeFormatter.parseDateTime(date);// 指定时区构造时间DateTime dateTime = new DateTime(DateTimeZone.forTimeZone(TimeZone.getTimeZone ...
SpringBoot-Feign使用
123SpringBoot:2.1.5.RELEASEFeign:2.0.1.RELEASEfeign-okHttp:9.7.0
Feign 简介Spring Cloud的Feign支持的一个中心概念就是命名客户端.Feign客户端使用@FeignClient注册组合成组件,按需调用远程服务器.Spring Cloud使用FeignClientsConfiguration创建一个新的集合作为每个命名客户端的ApplicationContext(应用上下文), 包含feign.Decoder,feign.Encoder和feign.Contract.
你可以使用 Jersey 和 CXF 这些来写一个 Rest 或 SOAP 服务的java客服端。你也可以直接使用 Apache HttpClient 来实现。但是 Feign 的目的是尽量的减少资源和代码来实现和 HTTP API 的连接。通过自定义的编码解码器以及错误处理,你可以编写任何基于文本的 HTTP API。
Feign 通过注解注入一个模板化请求进行工作。只需在发送之前关闭它,参数就可以被直接的运用到模板中。然而这也 ...
WebSocket主动推送服务
服务器与Web页面交互方式
传统的 Web 服务都是客户端发出请求,服务端给出响应。
HTTP
HTTP短连接:在HTTP1.0中,客户端发送请求,服务器接收请求, 双⽅建⽴连接,服务器响应资源,请求结束。
HTTP⻓连接:在HTTP 1.1中,客户端发出请求,服务端接收请 求,双⽅建⽴连接,在服务端没有返回之前保持连接,当客户端再 发送请求时,它会使⽤同⼀个连接。这⼀直继续到客户端或服务器 端认为会话已经结束,其中⼀⽅中断连接。
服务器向 Web 页面推送消息的方式
非阻塞轮询(短轮询):客户端以固定的频率(比如10秒钟一次)向服务端发送请求,如果服务端没有数据响应,就直接响应一个空,如果有数据响应,就将响应数据作为结果返回给客户端。特点是每次请求后,都会立即给响应。
阻塞长轮询(长轮询):客户端像传统轮询一样从服务器请求数据。如果服务器没有可以立即返回给客户端的数据,则不会立刻返回一个空结果,而是保持这个请求等待数据到来(请求阻塞或者超时),等有响应数据之后将数据作为结果返回给客户端。特点是一次请求后直到有响应数据时才会给返回,否则阻塞等待。
短轮询
优点是实现逻辑简单 ...
SpringBoot中使用@Async实现异步调用
什么是“异步调用”?
“异步调用”对应的是“同步调用”,同步调用指程序按照定义顺序依次执行,每一行程序都必须等待上一行程序执行完成之后才能执行;异步调用指程序在顺序执行时,不等待异步调用的语句返回结果就执行后面的程序。
同步调用下面通过一个简单示例来直观的理解什么是同步调用:
定义Task类,创建三个处理函数分别模拟三个执行任务的操作,操作消耗时间随机取(10秒内)
123456789101112131415161718192021222324252627282930@Componentpublic class Task { public static Random random =new Random(); public void doTaskOne() throws Exception { System.out.println("开始做任务一"); long start = System.currentTimeMillis(); Thread.sleep(random.nextInt( ...
SpringBoot中使用@Scheduled创建定时任务
我们在编写Spring Boot应用中经常会遇到这样的场景,比如:我需要定时地发送一些短信、邮件之类的操作,也可能会定时地检查和监控一些标志、参数等。
创建定时任务在Spring Boot中编写定时任务是非常简单的事,下面通过实例介绍如何在Spring Boot中创建定时任务,实现每过5秒输出一下当前时间。
在Spring Boot的主类中加入@EnableScheduling注解,启用定时任务的配置
123456789@SpringBootApplication@EnableSchedulingpublic class Application { public static void main(String[] args) { SpringApplication.run(Application.class, args); }}
创建定时任务实现类
1234567891011@Componentpublic class ScheduledTasks { private static final SimpleDateFo ...
SpringBoot属性配置文件详解
相信很多人选择Spring Boot主要是考虑到它既能兼顾Spring的强大功能,还能实现快速开发的便捷。我们在Spring Boot使用过程中,最直观的感受就是没有了原来自己整合Spring应用时繁多的XML配置内容,替代它的是在pom.xml中引入模块化的Starter POMs,其中各个模块都有自己的默认配置,所以如果不是特殊应用场景,就只需要在application.properties中完成一些属性配置就能开启各模块的应用。
在之前的各篇文章中都有提及关于application.properties的使用,主要用来配置数据库连接、日志相关配置等。除了这些配置内容之外,本文将具体介绍一些在application.properties配置中的其他特性和使用方法。
自定义属性与加载我们在使用Spring Boot的时候,通常也需要定义一些自己使用的属性,我们可以如下方式直接定义:
12com.didispace.blog.name=WuliGitcom.didispace.blog.title=Spring Boot教程
然后通过@Value("${属性名 ...
SpringBoot中Web应用的统一异常处理
我们在做Web应用的时候,请求处理过程中发生错误是非常常见的情况。Spring Boot提供了一个默认的映射:/error,当处理中抛出异常之后,会转到该请求中处理,并且该请求有一个全局的错误页面用来展示异常内容。
选择一个之前实现过的Web应用(Chapter3-1-2)为基础,启动该应用,访问一个不存在的URL,或是修改处理内容,直接抛出异常,如:
1234@RequestMapping("/hello")public String hello() throws Exception { throw new Exception("发生错误");}
此时,可以看到类似下面的报错页面,该页面就是Spring Boot提供的默认error映射页面。
统一异常处理虽然,Spring Boot中实现了默认的error映射,但是在实际应用中,上面你的错误页面对用户来说并不够友好,我们通常需要去实现我们自己的异常提示。
下面我们以之前的Web应用例子为基础(Chapter3-1-2),进行统一异常处理的改造。
创建全局异常处理 ...
CentOS7安装MySQL
下载 repo 源进入 https://repo.mysql.com/ ,里面包含了所有可用的 MySQL 源。选择一个合适的版本,进行下载:
1# wget https://repo.mysql.com/mysql57-community-release-el7.rpm
如果提示-bash: wget: 未找到命令 执行以下命令, 安装wget:
1># yum -y install wget
完成之后,进行安装:
1# rpm -ivh mysql57-community-release-el7.rpm
安装MySQL开始安装MySQL123# yum install mysql -y# yum install mysql-server -y# yum install mysql-devel -y
MySQL 是MySQL客户端
MySQL-server 是数据库服务器
MySQL-devel 包含了开发用到的库以及头文件
到此为止MySQL就安装完成了。
启动/停止 MySQL启动MySQL1# systemctl start mysqld.ser ...
SpringBoot中使用MongoDB数据库
前段时间分享了关于Spring Boot中使用Redis的文章,除了Redis之后,我们在互联网产品中还经常会用到另外一款著名的NoSQL数据库MongoDB。
下面就来简单介绍一下MongoDB,并且通过一个例子来介绍Spring Boot中对MongoDB访问的配置和使用。
MongoDB简介MongoDB是一个基于分布式文件存储的数据库,它是一个介于关系数据库和非关系数据库之间的产品,其主要目标是在键/值存储方式(提供了高性能和高度伸缩性)和传统的RDBMS系统(具有丰富的功能)之间架起一座桥梁,它集两者的优势于一身。
MongoDB支持的数据结构非常松散,是类似json的bson格式,因此可以存储比较复杂的数据类型,也因为他的存储格式也使得它所存储的数据在Nodejs程序应用中使用非常流畅。
既然称为NoSQL数据库,Mongo的查询语言非常强大,其语法有点类似于面向对象的查询语言,几乎可以实现类似关系数据库单表查询的绝大部分功能,而且还支持对数据建立索引。
但是,MongoDB也不是万能的,同MySQL等关系型数据库相比,它们在针对不同的数据类型和事务要求上都存在自己独特的优 ...
SpringBoot多数据源配置与使用
之前在介绍使用JdbcTemplate和Spring-data-jpa时,都使用了单数据源。在单数据源的情况下,Spring Boot的配置非常简单,只需要在application.properties文件中配置连接参数即可。但是往往随着业务量发展,我们通常会进行数据库拆分或是引入其他数据库,从而我们需要配置多个数据源,下面基于之前的JdbcTemplate和Spring-data-jpa例子分别介绍两种多数据源的配置方式。
多数据源配置创建一个Spring配置类,定义两个DataSource用来读取application.properties中的不同配置。如下例子中,主数据源配置为spring.datasource.primary开头的配置,第二数据源配置为spring.datasource.secondary开头的配置。
12345678910111213141516171819@Configurationpublic class DataSourceConfig { @Bean(name = "primaryDataSource") @Q ...