自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(39)
  • 收藏
  • 关注

原创 如何动态修改log4j2的配置文件路径,并兼容commong logging门面框架

最近看了篇介绍内存队列disruptor的文章,据说性能比java的blockingqueue性能好很多,用的CAS原语来代替锁。log4j2的异步模式也使用了此队列,故最近把古老的log4j1.x升级到了log4j2。之前用log4j1.x时,配置了本地、测试、线上三套环境,在代码里用静态代码块动态修改log4j.properties的路径,如下://静态初始化块 static {

2017-01-25 15:28:32 7449 1

原创 阿里云服务器web应用安全-XSS攻击

以前听过XSS攻击,但是因为只是公司中众多码农中的小小一枚,几乎没有机会亲身体验过XSS攻击。由于最近机缘巧合,帮亲戚在阿里云esc上搭建了一套web应用系统,碰上了一系列安全问题,这个XSS就是其中一种,截图如下:

2016-06-19 11:39:14 3784

原创 阿里云服务器web应用安全-异常登录

最近刚在阿里云ecs上搭了java web应用,刚上线几天,就发现每天都有root,mysql等用户的异常登录。经过查资料发现如下解决办法:禁止指定用户远程ssh登录:修改/etc/pam.d/sshd文件,添加如下一行代码。然后创建/etc/sshdusers文件,添加禁止远程ssh登录的用户:然后再用这些用户ssh登录,会发现权限不允许的错误。而

2016-06-19 11:17:50 1948

原创 azkaban web-server源码解析

一、概述azkaban主要用于hadoop相关job任务的调度,但也可以应用任何需要调度管理的任务,可以完全代替crontab。azkaban主要分为web-server(任务上传,管理,调度),executor-server(接受web-server的调度指令,进行任务执行)。二、源码分析1.数据表:projects:工程project_ver

2016-01-27 20:19:49 2462

原创 利用mock做service层单测

目标:不依赖外部(数据库,网络等),就能做业务层的单测。只需要配上如下maven依赖(JUnit 4.0-4.3,其他版本的见官方文档):1.6.3org.mockitomockito-core1.10.19org.powermockpowermock-module-junit4-legacy${powermo

2016-01-26 20:55:12 6879

原创 @inject依赖注入的过程

首先需要知道实例是如何创建以及如何被注入的,而这一切都由container这个容器进行管理。1.实例构建class ContainerImpl implements Container { final Map, InternalFactory> factories; final Map, Set> factoryNamesByType; ContainerIm

2014-05-01 16:21:46 25730 1

原创 修改simple_html_dom源码 实现删除指定html标签

simple_html_dom是php解析html的简便而强大的工具。simple_html_dom.php源码文件可以在网上搜到,然后include进来就可以调用了。但是simple_html_dom中没有提供删除指定标签的功能,所以下面实现以下,只要在simple_html_dom_node类中加上如下代码:/*add by wangyu 2013-08-19 *de

2013-08-19 18:19:45 3170

原创 求两个不等长的有序数组的中位数

/** 求两个有序数组合并后的中位数,时间复杂度O(logn)*/#include #include using namespace std;void getMid(int *arr1, int n1, int *arr2, int n2){ int left = (n1+n2+1)/2+1; //1 2 3 4 5 6 7 8,此时left=righ

2013-08-11 17:21:40 2130

原创 我也来说说---数组的最大连续子数组和

问题:给定一个数组,求最大连续子数组和,并输出开始和结束坐标。例如{-1,2,3,-2,5,-7,4,8,-2,1},最大连续子数组为{2,3,-2,5,-7,4,8},最大和为13,从下标1开始,到下标7结束。一种思路是用DP。我们用一个数组max[]来记录以该元素为结尾的最大和,比如max[i]表示以arr[i]为结尾的最大连续子数组和。用一个begin[i]记录max[i]所对应的起始坐

2013-04-12 23:38:11 744

原创 找出树中两个节点的最低公共祖先

关于这道题,可以将其转化为求两个单链表的第一个焦点,这种做法需要两个栈,分别存储根节点到给定节点的路径。下面给出新的解法,利用后根遍历,代码如下:bool findCommonFather(treenode *root, char a, char b) //a不一定是左节点,b不一定是右节点{ bool left = false, right = false

2013-04-10 21:06:30 831

原创 一道算法题---把字符串内连续相同字符删除

题目描述:给定一字符串,删除连续相同的字符,如baiidu删除后为badu,baiiiau删除后为bu,baiiabdu删除后为du。要做这道题,大家可能第一想法就是找到连续相同字符,然后删除,把后续字符前移,然后继续。不断迭代,直到不再有连续字符为止。这种算法效率比较低。仔细观察发现,其实就是删除回文子串问题(但是还有些不一样,像bab这种回文串,按题目要求是不能删除的)。关于回

2013-04-10 01:00:24 6633 3

转载 Manacher算法解决最长回文子串问题---O(n)时间复杂度

转自:http://blog.csdn.net/ggggiqnypgjg/article/details/6645824其实原文说得是比较清楚的,只是英文的,我这里写一份中文的吧。    首先:大家都知道什么叫回文串吧,这个算法要解决的就是一个字符串中最长的回文子串有多长。这个算法可以在O(n)的时间复杂度内既线性时间复杂度的情况下,求出以每个字符为中心的最长回文有多长,    这个算

2013-04-09 23:47:18 1418

原创 线段树

先看下线段树的介绍,下面这个链接讲得还不错 http://hi.baidu.com/semluhiigubbqvq/item/be736a33a8864789f4e4ad18本文所讲的线段树和该文有微小区别,在该文中节点[0, 7]的左儿子为[0,3],右儿子为[4,7],不包含mid,而我们的线段树是包含的,即昨儿子为[0,3],右儿子为[3,7]。现在我们用线段树解决以下问题(小米笔试

2013-04-07 18:01:48 641

原创 Trie树的建立与相关操作

先看下JULY大神关于Trie树的介绍 http://blog.csdn.net/v_july_v/article/details/6897097下面贴上源代码和结果图:#ifndef TRIE_H_INCLUDED#define TRIE_H_INCLUDED#include #include #include const int max = 128; //128个A

2013-03-28 17:31:36 1080

转载 智能指针---浅显易懂,一学就会

以下转自http://blog.csdn.net/wfwd/article/details/1964683 首先来看SmartPtr的定义:#pragma once#include ///////////////////////////////////////////////////// a simple smart pointer wrapper class, us

2013-03-25 17:21:31 721

转载 VC++,掀起你的盖头来——谈VC++对象模型

此文转载自http://blog.csdn.net/wfwd/article/details/763797 译者前言一个C++程序员,想要进一步提升技术水平的话,应该多了解一些语言的语意细节。对于使用VC++的程序员来说,还应该了解一些VC++对于C++的诠释。Inside the C++ Object Model虽然是一本好书,然而,书的篇幅多一些,又和具体的VC++关系小一些。因此

2013-03-25 12:52:04 773

转载 parent指针非递归不用栈中序遍历二叉树

p = T;   while(p)   {   while(p->left)   p = p->left;   Visit(p);   if(p->right)   p = p->right;   else   {   while(p->parent)   {

2013-03-17 21:01:44 1646

转载 一个数组里,除了三个数是唯一出现的,其余的都出现偶数个,找出这三个数中的任一个

题目:一个数组里,除了三个数是唯一出现的,其余的都出现偶数个,找出这三个数中的任一个。比如数组元素为【1, 2,4,5,6,4,2】,只有1,5,6这三个数字是唯一出现的,我们只需要输出1,5,6中的一个就行。下面是我的思路:这个数组元素个数一定为奇数,而且那要求的三个数一定不可能每一bit位都相同,所以我们可以找到其中一个bit位不同,可以把那三个数字分出来,而且可以很推出三个数肯定可以分到

2013-03-12 19:49:30 2113

原创 一道小米的关于柱状图求最大矩阵面积的题

题目描述:给一组非负的整数来表示一个柱状图,设计一个算法获得柱状图中最大矩形的面积。比如,输入如下数据:2,1,4,5,1,3,3 ,其中每个数表示一个柱状条的高度,柱状条的宽度为默认值1,则计算得最大矩形的面积为8,如下图所示。思路很简单,以一个柱形为中心往两边扫描,若旁边的柱形高度大于等于该柱形高度,则继续往两边扫。最后记录往旁边扫描了多少距离。比如图中的系列6,它的高度为3,然后

2013-03-12 19:27:15 2011

转载 一道IGT的关于RGB的笔试题

题目:一个字符串只有‘R’、‘G’、‘B’组成,如何让所有的‘R’出现在前面,所有的‘G’在中间,所有的‘B’在最后。要求:要求空间复杂度为O(1),只许遍历一遍字符串数组思路:维护三个游标 i、j、ki 指向开始, j 指向尾部,用于分别插入 R 、Bk 用于遍历,当发现是R时,与前面的 i 指的对象交换,i 后移;当发现是B时,与后面的 j指的对象交换,j前移 当

2013-03-12 01:44:04 1276

转载 计算1到N的十进制数中1的出现次数

问题描述:给定一个十进制正整数N,写下从1开始,到N的所有整数,然后数一下其中出现的所有"1"的个数。例如: N = 2,写下1,2。这样只出现了1个"1"。 N = 12,写下1,2,……,12,这样有5个"1"。 写一个函数f(N),返回1到N之间出现的"1"的个数,比如f(12) = 5。 假设N = abcde,这里a,b,c,d,e分别是十进制数N的各个数位上的数字。如果要计算百

2013-03-07 18:00:37 1432

原创 以空间换时间高效求素数算法

#include using namespace std;void find_primer(bool **primers, int n){ if(n <= 0) { cout<<"error!"<<endl; return; } *primers = new bool[n+1]; for(int i = 0; i < n+1; i++) {

2013-03-05 21:15:10 1280

转载 STL源码剖析---list

相较于vector的连续线性空间,list就显得复杂许多,它的好处是每次插入或删除一个元素,就配置或释放一个元素空间。因此,list对于空间的运用有绝对的精准,一点也不浪费。而且,对于任何位置的元素插入或元素移除,list永远是常数时间。list不仅是一个双向链表,而且还是一个环状双向链表。另外,还有一个重要性质,插入操作和接合操作都不会造成原有的list迭代器失效,这在vector是不成立的

2013-02-26 11:32:29 512

转载 10个经典的字符串hash函数的C代码实现

以下总共给出了10种字符串hash函数,在上面的链接中可以找到各个Hash函数的描述,以及一些其它的关于hash函数的资料下载。这些hash函数各自的优缺点不详。其中,ELFHash函数是在unix系统中被广泛使用的,也是《算法艺术与信息学竞赛》中作者推荐的一个字符串hash函数。DEKHash函数是Knuth在其《The Art of Computer Programming》第三卷中引入的

2012-12-27 14:19:05 605

转载 C++中的placement new

一.new、operator new 和 placement new 区别new 操作符的执行过程1. 调用operator new分配内存 ;2. 调用构造函数生成类对象;3. 返回相应指针。 new :不能被重载,其行为总是一致的。它先调用operator new分配内存,然后调用构造函数初始化那段内存。operator new:要实现不同的内存分配行为,应该重载o

2012-12-26 19:21:25 534

转载 C++ 操作符重载

C++操作符重载手册 C++ Operator Overloading一、重载规则I.可以重载的操作符+-*/%^&|~!=>+=-=*=/=%=^=&=|=>>>>===!=>=&&||++--->*,->[]()operator newoperator new[]operator deleteoperator delete []II.不能重载的操作符:: . .*

2012-12-24 21:19:49 1066

转载 浅谈Java中的内部类

从Java1.1开始引入了内部类以来,它就引起了人们的激烈争论。其实任何优秀的语言特性用得不好就是滥用,内部类用得不好就会导致代码像迷宫一样,导致出现毫无重用的综合征。  1、内部类分为成员内部类、静态嵌套类、方法内部类、匿名内部类。  几种内部类的共性:  A、内部类仍然是一个独立的类,在编译之后会内部类会被编译成独立的.class文件,但是前面冠以外部类的类命和$符号。  B、

2012-12-07 18:09:13 454

转载 浅谈C++中强制类型转换函数

我们都知道,无论是用那种程序设计语言,通过强制类型转换函数 ,每个函数都可以强制将一个表达式转换成某种特定数据类型。下面介绍C++中的强制类型转换函数。  标准c++中主要有四种强制转换类型运算符:  const_cast,  reinterpret_cast,  static_cast,  dynamic_cast等等。  1)static_cast(a)  将地址a

2012-11-18 15:24:39 1895

转载 malloc、calloc、realloc的区别

(1)C语言跟内存分配方式从静态存储区域分配.       内存在程序编译的时候就已经分配好,这块内存在程序的整个运行期间都存在.例如全局变量、static变量.在栈上创建       在执行函数时,函数内局部变量的存储单元都可以在栈上创建,函数执行结束时这些存储单元自动被释放.栈内存分配运算内置于处理器的指令集中,效率很高,但是分配的内存容量有限.从堆上分配,亦称动态内存分配

2012-11-10 11:54:54 820

转载 转载:陈浩博客 写给新手程序员的一封信

转自:陈浩博客  供自己以后学习参考。月光博客6月12日发表了《写给新手程序员的一封信》,翻译自《An open letter to those who want to start programming》,我的朋友(他在本站的id是Mailper)告诉我,他希望在酷壳上看到一篇更具操作性的文章。因为他也是喜欢编程和技术的家伙,于是,我让他把他的一些学习Python和W

2012-10-31 13:55:22 3917

转载 酷壳网陈皓:开发者实用学习资源汇总

导读:本文是酷壳网(CoolShell)陈皓收集的一些学习资源和文章,涉及的知识面可能比较泛,其主要目的在于分享,希望开发人员会喜欢。Web开发Javascript Garden,这是学习Javascript最好的网站了。http://bonsaiden.github.com/JavaScript-Garden,这个文档由两个StackOverflow的人写成:Ivo Wetzel(W

2012-10-31 13:51:07 2720

转载 .net开发人员经常浏览的8个网站

个人觉得很有用,大家不妨看看。http://news.csdn.net/a/20090624/212160.html 除了上面8个再补充几个吧,那就是微软本身的:1.http://www.msdn.com2.http://www.codeplex.com3.http://www.asp.net

2012-09-26 21:42:51 667

原创 HOJ 1022 Spacecraft Malfunction

先看下题目:It is said that court intrigues started with people lying about other people, and then lying about other people’s lying, and so it went. The intriguers constantly looked for scapegoat who

2012-06-07 23:19:52 754

原创 HOJ 1018 Multiple

a program that, given a natural number N between 0 and 4999 (inclusively), and M distinct decimal digits X1,X2..XM (at least one), finds the smallest strictly positive multiple of N that has no other

2012-06-06 21:52:22 1031 1

原创 约瑟夫问题系列

Josephus问题:假设n个竞赛者排成一个环形,依次顺序编号1,2,…,n。从某个指定的第1号开始,沿环计数,每数到第m个人就让其出列,且从下一个人开始重新计数,继续进行下去。这个过程一直进行到所有的人都出列为止。最后出列者为优胜者。无论是用链表实现还是用数组实现来解约瑟夫问题都有一个共同点:要模拟整个游戏过程,不仅程序写起来比较麻烦,而且时间复杂度高达O(nm),当n,m非常大(例

2012-06-05 22:25:32 1159

原创 求N!的最末位非零数

先看一个网友给的巧妙的解题思路:解题过程:  这题的解法很多,有很多解法现在还不是很理解,受网上朋友启发,觉得下面的算法是比较易懂的,现在归纳一下。   观察n!,可以发现在乘的过程中,对于任意 n > 1,n!的末尾第一个非0数字都是偶数。我们只需保留最后一位非零数。当要乘的数中含有因数5时,我们可以把所有的因数5都当作8来乘。这是因为:...x2*5=...10(舍,因为非

2012-06-04 20:35:22 3404 1

原创 输入先序遍历序列,建树----Java实现

~U。U~古(356977819)  1:40:09今天从C++开始转战Java,这是本人写的第一个Java程序,整了很久,期间痛苦万分,但收获良多。程序输入一个先序遍历的序列,$表示空,根据输入建树,然后进行先序遍历并输出。如:A B D $ $ $ C E $ $ F $ $代表:                 A          B           C

2012-05-21 01:45:24 4768

原创 一道腾讯面试题

腾讯面试题:  给你10分钟时间,根据上排给出十个数,在其下排填出对应的十个数  要求下排每个数都是先前上排那十个数在下排出现的次数。  上排的十个数如下:  【0,1,2,3,4,5,6,7,8,9】初看此题,貌似很难,10分钟过去了,可能有的人,题目都还没看懂。 举一个例子,  数值: 0,1,2,3,4,5,6,7,8,9  分配: 6,2,1,0,0,0,1

2012-05-19 22:26:37 994

原创 给定一个入栈序列,求所有可能的出栈序列

网上有很多解法,但个人感觉不够清晰。下面本人献丑来写下自己的解法。力求简明易懂。首先这是个卡特兰数,学过组合数学的同学都知道。没学过的可以看下下面这个例子。有2n个人排成一队进入剧场。入场费5元。其中只有n个人有一张5元钞票,另外n人只有10元钞票,剧院无其它钞票可找零,问有多少中方法使得只要有10元的人买票,售票处就有5元的钞票找零?(将持5元者到达视作将5元入栈,持10元者到达视作使栈中某

2012-05-19 21:54:56 16721 7

空空如也

空空如也

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

TA关注的人

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