- 博客(17)
- 资源 (2)
- 收藏
- 关注
原创 springboot war包部署
1. 概述 之前一篇文章《springboot+mybatis入门》讲述了如何利用IDEA快速搭建一个访问数据库的springboot项目,在运行时由于springboot内嵌了tomcat,可以通过jar包方式直接运行(建立在平常的开发中使用较为便捷的jar包直接运行的方式)。 但是在通常的项目中,JAVA web工程项目都是以war包形式部署到tomcat的
2017-03-05 13:13:37
2611
原创 springboot+mybatis入门
1. 概述 springboot是最近非常火的基于spring的微服务框架,它简化了使用springmvc非常繁琐的配置信息管理,让开发者专注于实现自己的业务逻辑。2. 使用 2.1 新建一个springboot项目 下面以intellij idea工具为例讲解如何创建一个访问数据库的springboot微服务。 在IDE里面 NEW
2017-03-05 09:18:09
747
原创 REST API 并发控制
对请求做并发限制是在后端处理能力有限的情况下,防止因某单一用户大量请求将服务器资源暂满导致无法响应其他用户请求的安全保护措施。常见的并发限制方法就是限制用户在某一段时间内的请求数目,如100r/s,即限制用户1s内最多请求100次,超过就拒绝访问。下面介绍几种常见并发控制的实现方法。1. memcache/redismemcache和redis等nosql的提供了以下两个特性,可以很好的支持对请求进
2016-09-17 21:32:56
8066
原创 Python GUI——Tkinter~简单入门
1. 简单介绍 Tkinter是一个经典的Python GUI程序,它由TK GUI工具包包装而来,利用这个模块可以方便地开发一些跨平台的图形界面。在windows和Mac OS下的Python开发包里默认包含这个模块,无需额外安装,而在Unix下需要自己编译安装,指令如下:apt-get install python-px。然后在程序中导入这个模块,便可以利用Tkinte
2014-05-04 10:13:14
10251
3
原创 删除字符串中的非字母字符并压缩字符串
要求:将一个字符串中的非字母字符删除,并将字符串压缩,如字符串12work34hard12处理后为workhard。 算法不能用类似c语言的库函数,如strlen等,也不能开辟新空间,要在原字符串上进行操作。思路:依次遍历字符串中字符,若为字母字符,就将其复制到原字符数组中,不是字符数组,就跳过。 遍历时用两个指针,一个指针遍历字符串中的所有字符,另一
2013-09-23 23:47:25
2067
原创 计算字符串距离
字符串距离 指对于两个字符串,可以通过增加,减少或删除方式来使得两个字符串相等,执行增加,减少或删除的最少次数即为两个字符串之间的距离。如“workhard”和“workhrrd”两个字符串就可以通过修改第二个字符串中的字符'r'为'a'来使两个字符串相等,此时两个字符串的距离为1思路 可以利用动态规划(参考《编程之美》),并用一个二维数组record[l
2013-09-22 10:10:44
916
原创 字符串移位包含问题
问题描述: 给定两个字符串S1和S2,要求判定S2是否能够被S1做循环移动得到的字符串包含。如S1=AABCD和S2=CDAA,则S1循环移动后包含S2,返回true;S1=ABCD和S2=ACBD,则S1循环移动后不包含S2,返回false 解题思路: 1)可以发现,S1循环移动后的结果肯定包含在字符串S1+S1中,所以可以直接判断S2是否包含在字符串S1+S1中
2013-09-20 14:22:06
833
原创 二分查找
1. 这里查找的数组是非降序的,数组array,待搜索元素data 1) 在数组array中找出等于data的最小的元素下标; 2) 在数组array中找出等于data的最大的元素下标 3) 在数组array中找出大于data的最小的元素小标 参考:《编程之美》 代码如下:/** 二分查找 * @author MWD * 20
2013-09-18 11:25:28
513
原创 动态规划之最长子序列和最长子串
本文大部分参考July博客的关于动态规划的分析,代码贴在此仅作记忆和分享。 概念解释: 1) 最长子序列,两个字符串中满足相同顺序的子字符序列,如 abefgs和acehfg的最长子序列为aefg 2) 最长子串,两个字符串中相同的子串,即必须是连续相同
2013-09-17 17:05:49
1165
原创 求一个数组的中位数时间复杂度为O(n)
基本思路:中位数就是排序后下标为数组长度/2的元素 这里,可以采用快速排序的思路(详细快速排序不多介绍,可参考这里)。即将不断地划分为左右两个区域,左边区域内的所有元素都小于某个主元,右边区域内的元素都大于某个主元。如果划分左右区域的分界j(这里的j和快速排序中的j的含义一致)刚好等于length/2,那么就找到了中位数,否则,如果下标 jlength/2,那么就继续在左边
2013-09-11 16:01:30
4107
原创 判断一个数据序列是否是BST后序遍历的结果
基本知识:1)BST:二叉排序树,即父节点大于左子节点,小于等于右子节点2)后序遍历: 先遍历左子树,再遍历右子树,最后遍历根节点基本思想:后续遍历得到的数组的最后一个元素为根节点,前一部分为左子树,后一部分为右子树 前一部分中的元素都小于root(根),后一部分中的元素都大于root(根) 所以可
2013-09-07 17:01:37
897
原创 最大堆和利用堆排序
最大堆性质:1)父节点大于等于它的两个子节点,根节点在整个堆中最大2)堆中以每个子节点为根节点的子堆亦满足最大堆性质利用最大堆和最小堆能很方便的求取类似TOP K问题,建堆和调整满足最大(小)堆性质的时间复杂度为O(logn),该方法在海量数据处理有很好的利用价值。/** * 建立最大堆,并利用它进行排序 */package test;import
2013-09-07 10:07:13
553
原创 求两个相交链表相交的第一个元素
class Node{ int data; Node next; Node(int data,Node next){ this.data = data; this.next = next; } } Node head1 ; //链表1 Node head2; //链表2 ......建立两个相交链表
2013-09-04 22:26:22
489
原创 实现一个栈,获取其中最大元素,获取时间复杂度为O(1)
/** * 实现一个栈,获取其中最大元素,获取时间复杂度为O(1) * @MWD * Date:2013-9-4 * * Reference: http://www.cnblogs.com/pangxiaodong/archive/2011/08/12/2136260.html */package test;import java.util.*;p
2013-09-04 15:56:11
1922
原创 两个子数组有序,融合后依然有序
/** * array[0.mid-1]和array[mid,num-1]分别有序,merge后array[0,num-1]之后任然有序 */package test;import java.util.*;public class Merge { /** * 依次比较array[0,mid-1](用i表示递增)和array[mid,num-1](用
2013-09-04 10:53:00
586
原创 word在特定页开始加页码
在很多文档处理中,需要从特定的页开始加页码,比如第一页是封面,第二页是目录的情况,在这种情况下,页码标号要从第三页开始(正常论文的格式)。那么下面讲述如何从特定页开始加页码。以从第三页开始加页码为例。word版本2010。 Step1: 在第二页的最后(一定是该页的最后一个字符后面),执行以下操作:页面布局 step 2: 插入
2013-04-25 11:10:00
1212
原创 细菌觅食算法(Bacteria Foraging Algorithm,BFA)
细菌觅食算法是仿生优化算法的一种,它由K.M.Passino于2002年提出。算法模拟Ecoli大肠杆菌在人体肠道内搜寻营养丰富区域的行为。该算法的优点是易于跳出局部最小点,缺点是收敛速度不够快。 细菌Ecoli在人体肠道内的运动分为两种:翻腾(Tumble)和直行运动(Swiming)。翻腾指细菌可在任意方向上移动单位步长;直行指细菌沿着某一特定方向运动单位步长。细菌的趋化过
2013-04-07 17:59:34
4851
6
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人