leetcode453. Minimum Moves to Equal Array Elements

2019-07-01
阅读 1 分钟
1.6k
从一个长度为n非空整数数组中,找到能够使得数组中每个元素的值都相等的最少步数,一步是指选择对数组中的n-1个元素加一。比如将[1,2,3]这个数组达到均等的最小步数要求为3步,过程如下:

leetcode376. Wiggle Subsequence

2019-05-06
阅读 3 分钟
2.1k
扭动序列是指数组中的相邻两个元素的差保证严格的正负交替,如[1,7,4,9,2,5]数组中相邻两个元素的差为6,-3,5,-7,3,满足扭动序列的要求。现在要求从一个数组中,找到长度最长的扭动子序列,并返回其长度。

leetcode448. Find All Numbers Disappeared in an Array

2019-05-05
阅读 2 分钟
1.6k
但是这个实现违背了O(1)的空间复杂度(这里结果集不视为额外空间)。因此如何才能避免使用临时数组呢?其实我们可以利用原数组中元素相互调换的方式,将其转化为一个新的有序的数组。即从最左边开始,每遇到一个元素,就将其防止到元素的目标位置上,如在第0位上遇到元素i,则将位置i-1上的元素和位置0上的元素进行交换...

leetcode391. Perfect Rectangle

2019-03-09
阅读 3 分钟
1.7k
题目要求 {代码...} {代码...} {代码...} {代码...} 用一个二维数组来表示一堆矩形,二维数组中的每一行分别记录矩形左下角和右上角的坐标。试判断这些矩形拼接成的新的图形是否还是一个矩形。如果矩形存在重合,则不构成矩形,见图例4. 思路和代码 这是一道纯粹的考验思维的一道题目。首先我们知道,这些矩形如果能够拼...

leetcode355. Design Twitter

2019-03-07
阅读 5 分钟
1.9k
这道题目本质上是考察是否能将数据结构的知识灵活的运用于现实生活中。从最直观的想法来看,我们会有一个用户实体,每个用户会记录自己关注的用户的id,以及记录自己发表的所有tweet。这里唯一的难点在于我们如何按照时间顺序获取tweet流。

395. Longest Substring with At Least K Repeating Characters

2019-02-17
阅读 2 分钟
3k
这是一个经典的分治法解决的问题,关键在于我们如何将这个问题分解为更小的子问题。反过来想,这个子字符串一定不包含什么元素呢?当一个元素出现的总次数小于k,那么该元素一定不在子字符串中,只需要将其作为分界点,分别找出左半部分和右半部分的满足条件的最长子字符串。

猫头鹰的深夜翻译:API网关的重要性

2019-02-09
阅读 3 分钟
1.6k
在非技术术语中,“网关或门是进入一个由墙围住的封闭空间的入口点。”同理,API网关是指位于防火墙或互联网后面的服务的入口点。在微服务的世界中,网关坐镇于API前面,直接面向客户并进行反向代理。

猫头鹰的深夜翻译:对于RestAPI简单的基于身份的权限控制

2019-01-29
阅读 3 分钟
3.4k
基于角色的权限控制(RBAC)是管理用户对某种资源或操作的权限的通用方法。权限可以明确指定可以访问的资源和操作。基本原理如下:权限将被分配给某个角色,并将该角色分配给某个用户或者是用户组,而不是直接分配给某个用户。

猫头鹰的深夜翻译:Spring REST服务异常处理

2019-01-27
阅读 3 分钟
2k
这篇教程主要专注于如何优雅的处理WEB中的异常。虽然我们可以手动的设置ResponseStatus ,但是还有更加优雅的方式将这部分逻辑隔离开来。Spring提供了整个应用层面的异常处理的抽象,并且只是要求您添加一些注释 - 它会处理其他所有内容。下面是一些代码的示例

猫头鹰的深夜翻译:分布式系统Toolkit模式

2019-01-12
阅读 2 分钟
1.5k
过去几年容器逐渐成为了打包和部署代码的流行的方式。容器镜像解决很多现有的打包和部署工具所带来的问题,初次以外,还为我们提供了构建分布式应用的全新的思路。就如SOA提倡将应用拆分为模块化的内聚的服务,容器应当进一步提倡将这些服务拆分为紧密协作的模块化容器。通过构建应用边界,容器使用户能够使用模块化,可...

猫头鹰的深夜翻译:微服务概述

2019-01-02
阅读 5 分钟
1.7k
在过去几年中,出现了微服务架构的理念,它提倡将应用程序设计为可独立部署到额服务套件。虽然对于这种架构风格没有明确的定义,但是它在业务能力,自动部署,智能终端以及语言和数据的分散控制方面有共同的特征。

leetcode368. Largest Divisible Subset

2018-12-08
阅读 2 分钟
1.8k
假设有一组值唯一的正整数数组,找到元素最多的一个子数组,这个子数组中的任选两个元素都可以构成Si % Sj = 0 或 Sj % Si = 0。

猫头鹰的深夜翻译:Java WeakHashMap

2018-12-07
阅读 3 分钟
2k
本文简介 WeakHashMap类概览 WeakHashMap类构造器总结 WeakHashMap类构造方法 WeakHasjMap类使用举例 1. WeakHashMap类概览 WeakHashMap是一个实现了Map接口,并且键为weak型的哈希表。WeakHashMap中的条目不再被正常使用时,会被自动删除。它的键值均支持null。这个类类似于HashMap类,也具有初始容量和负载因子这样的...

leetcode373. Find K Pairs with Smallest Sums

2018-12-03
阅读 2 分钟
2.6k
这题采用最大堆作为辅助的数据结构能够完美的解决我们的问题。观察数组我们可以看到,从nums1中任意取一个数字,其和nums2中的数字组成的最小数对一定是<nums1[k], nums2[0]>,同理,我们可以知道,<nums1[k], nums2[t+1]>的值一定比nums1[k], nums2[t]大。因此在优先队列中,我们存储所有的nums1中数字所能...

猫头鹰的深夜翻译:集成方式是如何影响微服务架构的

2018-12-02
阅读 3 分钟
2.1k
当微服务的架构出现后,系统的集成带来的挑战没有太大的分别:多种实现技术在物理网络上彼此分离,需要相互通信。从最终用户的角度来看,微服务的集成在系统的无缝体验方面起着至关重要的作用。正确集成的系统还有助于实现分布式系统的优势:它们可以在service级实现扩容提高效率,并且能够在满足业务需求的同时降低架构...

leetcode331. Verify Preorder Serialization of a Binary Tree

2018-11-25
阅读 2 分钟
1.9k
我们知道,任何两个节点都可以和位于左边的非叶节点构成一棵有三个节点的树。如果我们从右往左看先序遍历,就知道后两个节点如果遇到第三个节点,则该节点就应当是这两个节点的父节点。我们可以将每一个#看做一个根节点,每遇到#就将记录的根节点数加一,当遇到数字时,则代表该数字应当能够和两个节点构成新的树,并且...

猫头鹰的深夜翻译:JDK Vs. JRE Vs. JVM之间的区别

2018-11-24
阅读 2 分钟
3.4k
JDK通常用来开发Java应用和插件。基本上可以认为是一个软件开发环境。JDK包含Java Runtime Environment(JRE),JRE包含加载器/解释器,编译器(javac),文档生成器(Javadoc),打包功能(jar)和其它在开发中所需要功能:

leetcode334. Increasing Triplet Subsequence

2018-11-23
阅读 2 分钟
1.6k
其实我们知道只要找到这样一个数字,该数字左边存在比它小的数字,右边存在比它大的数字,就可以确信该数字一定属于某个上升序列的中间数字。所我们可以先从左往右得出每一个数字左边是否有比它小的数字,再从有望走得出右边是否有比它大的数字,最后再根据这两个信息判断该数字是否为上升序列的中间数字。

leetcode365. Water and Jug Problem

2018-11-22
阅读 4 分钟
1.5k
假设现在有两个杯子,每个杯子分别最多可以装x和y升水,假设现在水的供应量是无限的,问是否有可能用这两个杯子共同承装z升水,可以用两个杯子执行的操作如下:

leetcode310. Minimum Height Trees

2018-11-21
阅读 4 分钟
1.6k
当出发点只有两个时,我们知道中间节点就是从出发点同时出发,当二者相遇或者二者只间隔一个位置是所在的点就是两个出发点的重点。那么多个出发点也是同样的道理,每个人从各个出发点出发,最终相遇的点就是我们所要找的中间点。

猫头鹰的深夜翻译:Spring线程 TaskExecutor

2018-11-21
阅读 4 分钟
8.1k
Spring提供了TaskExecutor作为Executors的抽象。这个接口类似于java.util.concurrent.Executor接口。在spring中有许多预先开发好的该接口的实现,可以在官方文档中详细查看。

集成spring boot + mysql + docker实战

2018-11-15
阅读 1 分钟
4.1k
网上找过很多文章,关于通过docker构建mysql容器并将应用容器和docker容器关联起来的文章不多。本文将给出具体的范例。此处为项目的源码

猫头鹰的深夜翻译:设计模式EventBus

2018-11-11
阅读 5 分钟
5k
假设一个大型应用中,有大量的组件彼此间存在交互。而你希望能够在组件通信的同时能够满足低耦合和关注点分离原则。Event Bus设计模式是一个很好的解决方案。

docker指令学习记录

2018-10-18
阅读 3 分钟
2.1k
本文为学习整理和参考文章,不具有教程的功能。其次,后面将会陆续更新各种应用的容器化部署的实践,如MySQL容器化,Jenkins容器化,以供读者参考。

红黑树插入操作的java实现

2018-10-14
阅读 12 分钟
2.2k
网上有非常多的关于红黑树理论的描述,本文的重点将不在于此,但是会在文中给出优秀文章的链接。对红黑树不了解的建议先阅读文章再看实现。本红黑树实现不支持多线程环境。因为删除操作灰常复杂,所以后续更新。源码在文末可以查看。

linux常用指令学习记录

2018-10-06
阅读 5 分钟
2k
前言 本文主要为学习贴,用来记录一些linux上的常用指令以供参考。 文件内容查看 cat 从上往下阅读文件内容 {代码...} tac 从下往上阅读文件内容,用法同cat nl 添加行号打印,默认情况下空白行不显示行号 {代码...} more/less 一页一页翻动文件。 {代码...} head/tail 取文件的前几行或者最后几行内容 {代码...} type ...

猫头鹰的深夜翻译:如何优化MYSQL查询

2018-10-05
阅读 5 分钟
3k
Mysql的索引可能会占据额外的空间,并且会一定程度上降低插入,删除和更新的性能。但是,如果你的表格有超过10行数据,那么索引就能极大的降低查找的执行时间。

猫头鹰的深夜翻译:持久化容器存储

2018-10-03
阅读 5 分钟
2.6k
当我们围绕容器构建应用程序时,这个临时性存储非常有用。它便于水平扩展:我们只是从同一个镜像创建多个容器实例,每个实例都有自己独立的文件系统。它也易于升级:我们只是创建了一个新版本的映像,我们不必担心从现有容器实例中保留任何内容。它可以轻松地从单个系统移动到群集,或从内部部署移动到云:我们只需要确...

固定窗口和滑动窗口算法了解一下

2018-09-11
阅读 8 分钟
12.3k
限流算法的应用场景非常广泛,比如通过限流来确保下游配置较差的应用不会被上游应用的大量请求击穿,无论是HTTP请求还是RPC请求,从而使得服务保持稳定。限流也同样可以用于客户端,比如当我们需要从微博上爬取数据时,我们需要在请求中携带token从而通过微博的网关验证。但是微博为了防止服务被单个客户端大量访问,往...

Dubbo AbstractRegistry源码阅读

2018-08-14
阅读 8 分钟
2.4k
最近因为工作需要在学习Dubbo的各种机制。其中深入学习了一下AbstractRegistry的实现机制。在此根据Dubbo源码对其实现进行一个总结。