Browsed by
月份:2018年8月

使用RabbitMQ消息队列

使用RabbitMQ消息队列

Messaging with RabbitMQ 通过此教程你将建立一个RabbitMQ AMQP服务器来发布和订阅消息。 This guide walks you through the process of setting up a RabbitMQ AMQP server that publishes and subscribes to messages. 将要做什么 What you’ll build 你将构建一个应用,使用Spring AMQP的RabbitTemplate来发布消息,然后使用MessageListenerAdapter在POJO订阅此消息。 You’ll build an application that publishes a message using Spring AMQP’s RabbitTemplate and subscribes to the message on a POJO using MessageListenerAdapter. pom.xml <?xml version=”1.0″ encoding=”UTF-8″?> <project xmlns=”http://maven.apache.org/POM/4.0.0″ xmlns:xsi=”http://www.w3.org/2001/XMLSchema-instance” xsi:schemaLocation=”http://maven.apache.org/POM/4.0.0 …

阅读全文 Read More

定时任务

定时任务

定时任务 Scheduling Tasks 通过此教程你将了解如何使用Spring来做定时任务。 This guide walks you through the steps for scheduling tasks with Spring. 将要做什么 What you’ll build 你将创建一个应用,使用Spring的@Scheduled注解来实现每5秒钟输出当前时间。 You’ll build an application that prints out the current time every five seconds using Spring’s @Scheduled annotation. 创建一个定时任务 Create a scheduled task 创建好项目工程后,你就可以开始创建一个定时任务了。 Now that you’ve set up your project, you can create a scheduled task. src/main/java/hello/ScheduledTasks.java package hello; import java.text.SimpleDateFormat; import java.util.Date; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.scheduling.annotation.Sch…

阅读全文 Read More

使用Spring缓存数据

使用Spring缓存数据

使用Spring缓存数据 Caching Data with Spring 通过此教程你将完成在Spring管理的bean上启用缓存。 This guide walks you through the process of enabling caching on a Spring managed bean. 将要做什么 What you’ll build 你将构建一个应用,并在一个简单的book书籍库上启用缓存。 You’ll build an application that enables caching on a simple book repository. pom.xml <?xml version=”1.0″ encoding=”UTF-8″?> <project xmlns=”http://maven.apache.org/POM/4.0.0″ xmlns:xsi=”http://www.w3.org/2001/XMLSchema-instance” xsi:schemaLocation=”http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd”> <modelVersion>4.0.0</modelVersion> <groupId>org.springframework</groupId> <artifac…

阅读全文 Read More

创建异步方法

创建异步方法

创建异步方法 Creating Asynchronous Methods 通过完成此教程,你将创建到Github的异步请求。重点是在异步部分,这是编排服务的一个特性。 This guide walks you through the steps to create asynchronous queries to GitHub. The focus is on the asynchronous part, a feature often used when scaling services. 将要做什么 What you’ll build 你将建立一个查询服务,用于查询Github用户信息并通过Github的API获取数据。编排服务的一个方法是在后台运行一个任务,并使用Java的CompletableFuture接口来等待结果的返回。Java的CompletableFuture是普通Future的一个进化版本。新版本可以更容易的编排多个异步操作,合并为单个异步的计算。 You’ll build a lookup service that queries GitHub user information and retrieves data through GitHub’s API. One approach to scaling services is to run expensive jobs in the background and wait for the results using Java’…

阅读全文 Read More

快速排序 Quick Sort

快速排序 Quick Sort

快速排序也算是很出名的一种算法了,虽然说是不稳定的,但在各类面试笔试中出现的频率相当高。并且相较一些排序算法来说,快速排序的核心思路也比较简单: 挑选一个数target(一般为第一个),经过一次遍历比较后,将比此数小的,放在其前面,比此数大的,放在其后面。此数的前后序列都是无序的。此过程通常称为分区(partition)。其中交换的逻辑是比较重要的,具体为:有一个指针index指向第二个数,并且从第二个开始(第一个为target,不参与)遍历,如果比选定数小,则index后移,并且交换index与i;如果比选定数大,则直接进入下一次循环。 整个循环完成后,最后交换target与index。 则此被挑选的数的位置就确定了,然后再递归排序前后两个无序的数组即可。 int[] array = {49, 38, 65, 97, 76, 13, 27, 50, 78, 34, 12, 64, 1}; quickSort(array, 0, array.length – 1); static void quickSort(int[] array, int startPos, int endPos) { if (endPos > startPos) { // 设置终止条件 int target = array[startPos]; // 保存目标中间数 int index = startPos; // 设置索引位置 for (int i = startPos + 1; i <= endPos; i++…

阅读全文 Read More

归并排序 Merge sort

归并排序 Merge sort

归并排序相对于上两个的思路不同,并不是遍历单条序列找最大或最小的思路,最主要的是递归思想。假定有两个有序序列,将其合并为一个有序序列,所需要做的就是不断取出两个序列中最小的,并将其中较小的放在新的序列中,则最后合并得到的序列仍然是有序的序列,这就是所谓归并。 要归并排序一个序列,可以先将其分成两部分,分别进行排序,得到的就是两个有序序列,再按照如下步骤进行。 有两个指针分别指向两个有序序列的首位。 比较两个指针对应的大小,小的放入新序列,并且此指针向后移,再重复比较。 int[] array = {3, 5, 7, 4, 2, 1, 6}; mergeSort(array, 0, array.length – 1); // 指定排序范围 public static void mergeSort(int[] arr, int start, int end) { if (start == end – 1) { // 如果起始与终点相邻,则将两者进行比对 if (arr[start] > arr[end]) { int temp = arr[start]; arr[start] = arr[end]; arr[end] = temp; } } else if (start < end – 1) { // 如果排序子集大于三个,则需要进行递归操作 int mid = (start + end) / 2; // 选取中间点 mergeSort(arr, start, mid); // 前半部分进行…

阅读全文 Read More