自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

java的平凡之路

博客的文章都是平时学习或者遇到其他人写的不错的文章分享,也是做一个记录,希望大家喜欢

  • 博客(920)
  • 资源 (3)
  • 收藏
  • 关注

原创 LeetCode第五题之最长回文子串

给定一个字符串 s,找到 s 中最长的回文子串。你可以假设 s 的最大长度为1000。示例 1:输入: "babad"输出: "bab"注意: "aba"也是一个有效答案。示例 2:输入: "cbbd"输出: "bb" 思路一:暴力寻找。思路二:中心扩展法。思路三:动态规划寻找最长回文字符串利用动态规划来求最长回文字符串经常要借助一个二维布尔数组,如图:每一个dp[i][j]代表图中一个方...

2018-04-23 18:31:11 351

原创 LeetCode第四题之两个排序数组的中位数

给定两个大小为 m 和 n 的有序数组 nums1 和 nums2 。请找出这两个有序数组的中位数。要求算法的时间复杂度为 O(log (m+n)) 。示例 1:nums1 = [1, 3]nums2 = [2]中位数是 2.0示例 2:nums1 = [1, 2]nums2 = [3, 4]中位数是 (2 + 3)/2 = 2.5 思路一:采用归并排序,然后查找中位数。时间复杂度O...

2018-04-20 17:48:20 2352

原创 LeetCode第三题之无重复字符的最长子串

给定一个字符串,找出不含有重复字符的最长子串的长度。示例:给定 "abcabcbb" ,没有重复字符的最长子串是 "abc" ,那么长度就是3。给定 "bbbbb" ,最长的子串就是 "b" ,长度是1。给定 "pwwkew" ,最长子串是 "wke" ,长度是3。请注意答案必须是一个子串,"pwke" 是 子序列  而不是子串。思路一:直接暴力求解,把所有的可能子串遍

2018-04-19 16:05:45 881

原创 LeetCode之两数相加

给定两个非空链表来表示两个非负整数。位数按照逆序方式存储,它们的每个节点只存储单个数字。将两数相加返回一个新的链表。你可以假设除了数字 0 之外,这两个数字都不会以零开头。示例:输入:(2 -> 4 -> 3) + (5 -> 6 -> 4)输出:7 -> 0 -> 8原因:342 + 465 = 807思路:两个链表同时前移,先加低位的,如果大于10,则注...

2018-04-18 16:14:06 608

原创 LeetCode之两数之和

给定一个整数数组和一个目标值,找出数组中和为目标值的两个数。你可以假设每个输入只对应一种答案,且同样的元素不能被重复利用。示例:给定 nums = [2, 7, 11, 15], target = 9因为 nums[0] + nums[1] = 2 + 7 = 9所以返回 [0, 1]思路一:最直接的思维,两次遍历查询,时间复杂度O(N*N)。代码:public static int[] t...

2018-04-18 14:17:21 3113 4

转载 [大数据量]BitMap即java.util.BitSet的应用

Bitmap算法, 问题:对40亿个数据进行排序,数据类型为 int,无相同数据。 思考:关于40亿个数据的排序,首先想如何存储呢?一个int 4个字节,也就是160亿个字节,也就是大概有16GB的数据,现在所有的计算机估计 没有这么大的内存吧,所以我们就可以文件归并排序,也可以分段读入数据在进行Qsort,但是都需要不停地读入文件,可以想象不停地读取文件硬件操作会有多么浪费时间。 我们这样都是用...

2018-04-18 10:20:53 909

转载 阿里P7/P8学习路线图——技术封神之路

一、基础篇JVMJVM内存结构堆、栈、方法区、直接内存、堆和栈区别Java内存模型内存可见性、重排序、顺序一致性、volatile、锁、final垃圾回收内存分配策略、垃圾收集器(G1)、GC算法、GC参数、对象存活的判定JVM参数及调优 Java对象模型oop-klass、对象头HotSpot即时编译器、编译优化类加载机制classLoader、类加载过程、双亲委派(破坏双亲委派)、模块化(jb...

2018-04-18 09:32:06 5795

转载 也许,这样理解HTTPS更容易

摘要  本文尝试一步步还原HTTPS的设计过程,以理解为什么HTTPS最终会是这副模样。但是这并不代表HTTPS的真实设计过程。在阅读本文时,你可以尝试放下已有的对HTTPS的理解,这样更利于“还原”过程。  我们先不了聊HTTP,HTTPS,我们先从一个聊天软件说起,我们要实现A能发一个hello消息给B:  如果我们要实现这个聊天软件,本文只考虑安全性问题,要实现A发给B的hello消息包,即...

2018-04-18 09:30:55 148

转载 算法之详解最小生成树

深入解析最小生成树正文       所谓最小生成树,就是在一个具有N个顶点的带权连通图G中,如果存在某个子图G',其包含了图G中的所有顶点和一部分边,且不形成回路,并且子图G'的各边权值之和最小,则称G'为图G的最小生成树。       由定义我们可得知最小生成树的三个性质:             •最小生成树不能有回路。             •最小生成树可能是一个,也可能是多个。     ...

2018-04-17 15:16:32 694

转载 最小生成树之prim算法和kruskal算法

在日常生活中解决问题经常需要考虑最优的问题,而最小生成树就是其中的一种。看了很多博客,先总结如下,只需要您20分钟的时间,就能完全理解。比如:有四个村庄要修四条路,让村子能两两联系起来,这时就有最优的问题,怎样修才是做好的,如下图:第一个是网全图,后三个图的修路方案都可以1.树的定义:有n个顶点和n-1条边,没有回路的称为树生成树的定义:生成树就是包含全部顶点,n-1(n为顶点数)条边都在图里就是...

2018-04-17 15:14:22 2724

转载 最短路径之Dijkstra算法

最短路径之Dijkstra算法(看到i,j,k三个变量可以理解为需要三个for循环,方便记忆)本节来学习指定一个点(源点)到其余各个顶点的最短路径,也称为”单源最短路径”。与上篇的Floyed-Warshall算法一样,这里仍然使用二维数组a来存储顶点之间边的关系。如图:(假设我要求的是1号顶点到其余顶点的最短距离) 当然,我们还需要一个dis数组来存储1号顶点到其余顶点的当前距离,如图:  既然...

2018-04-17 14:56:46 1153

转载 图的遍历之 深度优先搜索和广度优先搜索

深度优先搜索的图文介绍1. 深度优先搜索介绍图的深度优先搜索(Depth First Search),和树的先序遍历比较类似。它的思想:假设初始状态是图中所有顶点均未被访问,则从某个顶点v出发,首先访问该顶点,然后依次从它的各个未被访问的邻接点出发深度优先搜索遍历图,直至图中所有和v有路径相通的顶点都被访问到。 若此时尚有其他顶点未被访问到,则另选一个未被访问的顶点作起始点,重复上述过程,直至图中...

2018-04-17 11:59:11 248

转载 图的深度优先遍历和广度优先遍历概念

1.深度优先遍历(DFS)(1)从某个顶点V出发,访问顶点并标记为已访问(2)访问V的邻接点,如果没有访问过,访问该顶点并标记为已访问,然后再访问该顶点的邻接点,递归执行     如果该顶点已访问过,退回上一个顶点,再检查该顶点的邻接点是否都被访问过,如果有没有访问过的继续向下访问,如果全部都访问过继续退回到上一个顶点,继续同样的步骤。深度优先遍历类似于树的先序遍历,深度优先遍历算法结果不唯一。选...

2018-04-17 11:11:53 1631

转载 关于索引的B tree B-tree B+tree B*tree 详解结构图

B树       即二叉搜索树:       1.所有非叶子结点至多拥有两个儿子(Left和Right);       2.所有结点存储一个关键字;       3.非叶子结点的左指针指向小于其关键字的子树,右指针指向大于其关键字的子树;       如:              B树的搜索,从根结点开始,如果查询的关键字与结点的关键字相等,那么就命中;否则,如果查询关键字比结点关键字小,就进入...

2018-04-17 09:28:05 229

转载 谈谈高并发系统的限流

开涛大神在博客中说过:在开发高并发系统时有三把利器用来保护系统:缓存、降级和限流。本文结合作者的一些经验介绍限流的相关概念、算法和常规的实现方式。缓存缓存比较好理解,在大型高并发系统中,如果没有缓存数据库将分分钟被爆,系统也会瞬间瘫痪。使用缓存不单单能够提升系统访问速度、提高并发访问量,也是保护数据库、保护系统的有效方式。大型网站一般主要是“读”,缓存的使用很容易被想到。在大型“写”系统中,缓存也...

2018-04-11 18:39:01 1996 1

原创 JDK-9的安装与环境变量配置

2017年9月JDK -9发布了,鉴于官网的声明Oracle will not post further updates of Java SE 8 to its public download sites for commercial use after September 2018.早点移植到此版本为好。1. 安装首先下载最新版的JDK-9(官网下载比较慢,可以直接在网上找资源下载),如果只是为...

2018-04-01 17:09:46 259

转载 配置Eclipse for Java 9

原文:Configure Eclipse for Java 9今天 安装 JDK9 之后, 配置到 Eclipse 总是 提示: Target is not a JDK root. System library was not found.配置Eclipse for Java 91 下载Java 9 2 将 Eclipse配置为在Java 9 VM上运行 3 为Java 9模块配置Eclipse ...

2018-04-01 16:23:20 794

转载 Java 9 模块化(Modularity)

JDK9的发布一直在推迟,终于在2017年9月21日发布了。下面是JDK9的几个下载地址: JDK9.0.1 Windows-x64下载地址 Oracle Java 官网下载地址 OpenJDK 9官网 OpenJDK JDK9下载从安装的JDK9文件夹下会发现没有jre文件夹了,并且多了一个jmods文件夹,想想为什么? 传统的jar文件是在运行时runtime使用,而 .jmods文件是在开发...

2018-04-01 16:00:00 1464

转载 Java实现redis事务

1.  正常执行的事务[html] view plain copy@Test  public void test() {      Jedis jedis = new Jedis("localhost");      Transaction transaction = jedis.multi();      transaction.lpush("key", "11");      transact...

2018-04-01 14:58:47 7166 3

转载 实战限流(guava的RateLimiter)

常用的限流算法有漏桶算法和令牌桶算法,guava的RateLimiter使用的是令牌桶算法,也就是以固定的频率向桶中放入令牌,例如一秒钟10枚令牌,实际业务在每次响应请求之前都从桶中获取令牌,只有取到令牌的请求才会被成功响应,获取的方式有两种:阻塞等待令牌或者取不到立即返回失败,下图来自网上:本次实战,我们用的是guava的RateLimiter,场景是spring mvc在处理请求时候,从桶中申...

2018-04-01 12:18:04 4700

转载 流量控制与RateLimiter

一背景如何提高系统的稳定性,简单来说除了加机器外就是服务降级、限流。加机器就是常说的分布式,从整个架构的稳定性角度看,一般SOA每个接口的所能提供的单位时间服务能力是有上限。假如超过服务能力,一般会造成整个接口服务停顿,或者应用挂了,将延迟传递给服务调用方造成整个系统的服务能力丧失。要是对外的公开 API 接口服务,Rate limiting 应该是一个必备的功能,否极有可能被恶意调用导致服务宕掉...

2018-04-01 12:11:55 3529

转载 服务接口的流量控制策略之RateLimit

一、场景描述                                                                                                  很多做服务接口的人或多或少的遇到这样的场景,由于业务应用系统的负载能力有限,为了防止非预期的请求对系统压力过大而拖垮业务应用系统。    也就是面对大流量时,如何进行流量控制?    服务接口...

2018-04-01 12:10:44 9935

转载 服务的限流

 对于远程调用来说,限流是很重要的,这是对自己的保护政策,因为为了保证在业务高峰期,线上系统也能保证一定的弹性和稳定性,最有效的方案就是进行服务降级了,而限流就是降级系统最常采用的方案之一限流即流量限制,或者高大上一点,叫做流量整形,限流的目的是在遇到流量高峰期或者流量突增(流量尖刺)时,把流量速率限制在系统所能接受的合理范围之内,不至于让系统被高流量击垮。目前有几种常见的限流方式:1)通过限制单...

2018-04-01 12:09:54 1001

转载 Java限流策略

概要在大数据量高并发访问时,经常会出现服务或接口面对暴涨的请求而不可用的情况,甚至引发连锁反映导致整个系统崩溃。此时你需要使用的技术手段之一就是限流,当请求达到一定的并发数或速率,就进行等待、排队、降级、拒绝服务等。在限流时,常见的两种算法是漏桶和令牌桶算法算法。限流算法令牌桶(Token Bucket)、漏桶(leaky bucket)和计数器算法是最常用的三种限流的算法。1. 令牌桶算法 令牌...

2018-04-01 11:35:52 986

原创 堆排序

堆排序算法描述:堆排序是利用数据结构中堆的特性完成排序的算法。堆的定义:堆可以看成是一个完全二叉树,又有一定特性,父节点都大于或小于左右子节点。数学式子表示:1. 若array[0,...,n-1]表示一颗完全二叉树的顺序存储模式,则双亲节点指针和孩子结点指针之间的内在关系如下:  任意一节点指针 i:父节点:i==0 ? null : (i-1)/2            左孩子:2*i + 1...

2018-03-29 14:14:59 472

转载 Java源码解析-DualPivotQuicksort

前言一直都想阅读一些比较深层次的东西,但是自己的水平还没有达到那个层次,所以从比较基础也是比较底层的Java源码下手。排序应该是使用的比较多,性能比重比较大的算法之一,而快排更是排序中的经典。不论是C++的qsort还是Java的Arrays.sort都是快排实现,我一直很好奇这些语言设计者写出的快排是怎样的,不看不知道,一看吓一跳,果然跟我以前学的快排不一样,我们就来了解一下Java中的快排实现...

2018-03-28 15:10:17 168

转载 DualPivotQuicksort两枢轴快速排序

参考jdk DualQuickSort源码 普通快速排序一次把数据划分成两部分,两部分再分别递归,两枢轴,就是两个结点,把数据划分成三部分,三部分再分别递归,可参考下图 left part center part right part +-------------------------------...

2018-03-28 14:55:43 751

原创 快速排序

快速排序算法描述:快速排序又称划分交换排序,首先选择一个"基准"(基准的选择有多种,一般以Array[0]),从数组右边开始j=Array.length-1,j--的寻找小于"基准"数据,从左边i=0,i++的寻找大于"基准"数据,然后让小于"基准"的数据都放在左边,让大于"基准"的数据都放在右边,当i==j时,交换Array[i]与"基准"。这一趟下来数组划分成了两个子序列,这就是分治思

2018-03-27 18:36:00 183

原创 二分插入排序

二分插入排序算法描述: 二分插入排序通过从第二个数开始将需要排序的数分为两个部分,左边部分有序,右边部分无序,然后从右边部分第一个数开始,一个一个插入前面有序部分,与直接插入排序唯一不同的是:二分插入排序会先找出左边有序部分的中间值,然后与需要插入的值比较,所以在插入之前,就只需要与左边有序部分的一半值进行比较。因此,在数据量比较大的时候,二分插入排序算法就更加高效,速度更快。时间复杂度:O(n*...

2018-03-26 18:07:10 284

转载 JDK中Arrays.sort排序

    Jdk7以后,对应基本变量数组采用变异的快速排序方法DualPivotQuicksort,对于对象数组比较由原来的mergeSort改为ComparableTimSort方法,TimSort当数组大小小于32时,采用二分插入排序算法,当大于32时,采用基于块-区run的归并排序。所以TimSort是一种二分插入排序和归并排序的变种算法。对对象进行排序,没有采用快速排序,是因为快速排序是不稳...

2018-03-26 17:36:52 5004

原创 基数排序

基数排序算法描述:分别比较个位,十位,百位,千位等数据的大小,比较方法依赖其他排序方法,可以计数排序。时间复杂度:O(d(r+n)) 空间复杂度:O(rd+n)注:r代表关键字基数,d代表长度,n代表关键字个数java实现:public static void radixSort(int[] arr, int radix, int d) { int[] tmp = new int[arr.le...

2018-03-26 16:09:53 248

原创 计数排序

计数排序算法描述:是一种通过计数来达到排序的方法。1.选出数组的最大值k,创建一个k+1长度的数组countArray,countArray的数组下标代表array数组中的元素值,而countArray中的元素值代表的是array中每一个元素的出现次数。2.遍历array数组,统计每个元素的出现次数。例如array[0]是7,那么countArray[7]++,因为countArray的下标代表a...

2018-03-26 15:22:44 144

原创 桶排序

桶排序算法描述:桶排序的思想近乎彻底的分治思想。假设现在需要对一百个数进行排序。我们可以将其等长地分到10个虚拟的“桶”里面,这样,平均每个桶只有10个数。如果每个桶都有序了,则只需要依次输出为有序序列即可。具体思路是这样的:1.将待排数据按一个映射函数f(x)分为连续的若干段。理论上最佳的分段方法应该使数据平均分布;实际上,通常采用的方法都做不到这一点。显然,对于一个已知输入范围在【0,100】...

2018-03-26 13:58:39 250

原创 希尔排序

希尔排序算法描述:    希尔排序也叫“缩小增量排序”,是由shell创立,也是插入排序的一种变异。每次设置一定的步长,一般设置delta=Array.length/2,从0开始,组成[0,0+delta,0+delta+delta,...],[1,1+delta,1+delta+delta,...]等子序列,每组子序列进行插入排序,知道最后delta=1,完成一次插入排序即完成最终排序。例如:假...

2018-03-26 11:10:28 150

转载 Java 9 新特性,看这里就明白了

摘要:1.目录结构2.repl工具 jShell命令3.模块化4.多版本兼容jar包5.接口方法的改进(在接口中 jdk7 只能声明全名常量和抽象方法 jdk8 添加了静态方法和默认方法 jdk9添加了私有方法)6.钻石操作符升级 可以有{}7.异常处理try升级8.下划线标识符命名的限制 _ 不允许了9.String底层存储结构的变更(char数组变成byte字节数组)10.增强了Stream ...

2018-03-26 09:27:38 6950 1

转载 CDN技术原理

1. 前言Internet的高速发展,给人们的工作和生活带来了极大的便利,对Internet的服务品质和访问速度要求越来越高,虽然带宽不断增加,用户数量也在不断增加,受Web服务器的负荷和传输距离等因数的影响,响应速度慢还是经常抱怨和困扰。解决方案就是在网络传输上利用缓存技术使得Web服务数据流能就近访问,是优化网络数据传输非常有效的技术,从而获得高速的体验和品质保证。网络缓存技术,其目的就是减少...

2018-03-26 09:26:59 353

原创 直接选择排序

直接选择排序算法描述:所谓直接选择排序,就是假设有一个长度为n的数组Array,第一次从Array[0]~Array[n-1]中选取最小值,与Array[0]交换,第二次从Array[1]~Array[n-1]中选取最小值,与Array[1]交换,...,第i次从Array[i-1]~Array[n-1]中选取最小值,与Array[i-1]交换,以此类推,总共通过n-1次,得到一个按排序码从小到大...

2018-03-25 18:10:26 193

原创 归并排序

归并排序算法描述:归并排序,是一种利用分治策略,将一个有n个元素的数组分成两个长度为n/2的数组,然后利用对两个数组进行排序,然后合并。其中两个数组可以利用递归的方法进行继续分割,最终分割成最小单元已排序的数组,然后进行合并。(分治法将问题分(divide)成一些小的问题然后递归求解,而治(conquer)的阶段则将分的阶段得到的各答案"修补"在一起,即分而治之)时间复杂度:O(n*lgn),空间...

2018-03-25 16:16:03 137

原创 冒泡排序

插入排序算法描述:通过循环比较相邻两个元素的大小,大的元素往右移(升序),经过多次循环即完成排序。举例说明:要排序数组:int[] arr={6,3,8,2,9,1};   第一趟排序:    第一次排序:6和3比较,6大于3,交换位置:  3  6  8  2  9  1    第二次排序:6和8比较,6小于8,不交换位置:3  6  8  2  9  1    第三次排序:8和2比较,8大于2...

2018-03-24 19:16:59 140

原创 插入排序

插入排序算法描述:                插入排序可以想象成摸扑克牌,第一张当成已经排序好的数组,后续的数据在已经排序好的数组里进行比较然后插入即可。注意总共有Array.length个数据,已经排序好的数组A[1,2...,j-1],剩下要排序的数组B[j,j+1...,Array.length],插入的数组要进行数据的移位操作。时间复杂度:O(n*n),插入排序效率的最好情况运行时间为...

2018-03-23 17:38:30 129

51CTO下载-社区视频监控系统VC++MFC源代码

SFDGH反复各回个话的复试地方法过后果后的发挥规范化付首付供货商

2011-03-18

院前心电图远程实时快速网络传输模式建立

fbndnfmvnbnxcvcgfdbgnbnbnxzxf

2011-03-18

51CTO下载-社区视频监控系统VC++MFC源代码

发个环境斤斤计较见见就发广告干哥哥古古怪怪古古怪怪

2011-03-18

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除