自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

kay_zhyu的专栏

临渊羡鱼,不如退而结网

  • 博客(179)
  • 收藏
  • 关注

原创 定位野机器技巧

在鹰眼上面找到对应的调用机器获取到对应的ip在本地机器上打开cmd,执行以下命令nbtstat -a xx.xx.xx.xx

2016-08-12 16:33:11 583

原创 java并发-concurrentHashMap

应用场景在大并发情况下,需要保证map的线程安全,且保证写安全和读并发。原理锁分离如果要保证线程安全,那么一次操作只能由一个线程完成,特别是写操作。简单的来讲,concurrentHashMap是将一个大的HashTable分解成了多个小的HashTable,实现锁的分离,从而在保证线程安全的情况下,提高读写效率锁顺序在类似size,containsValue等类似操作需要跨越全表的操作时候,锁顺序

2016-04-02 21:39:43 505

原创 zookeeper原理解析

zookeeper的使用场景如果配置多个实例组成一个集群对外提供服务,那么每个实例都冗余存储了一个数据,并且独立的提供读写功能。如果需要在整个集群中保证这些数据的一致性,就需要一个leader来协调。那么问题来了:如何确认哪一个实例是leader?问题的难点在于: - 没有一个仲裁者来决定谁是leader - 每个实例都冗余存储数据的情况下,无法确定哪个实例上的数据是最新的分布式选

2016-04-02 20:12:20 551

原创 几种toString的性能比较

背景最近要写一个批量的接口,由于一次请求的量比较大,所以很多小的点不得不好好考虑性能。一个object的toString操作,也是一个性能考虑点,故自己做了一个测试,比较了一下可能的几种toString的方式。 public static void main(String[] args){ SingleConsignOrder singleConsignOrder = new

2016-03-04 20:32:21 6226 1

原创 基础知识之进程通信

什么是进程通信进程中的信息交换称之为进程通信为什么需要进程通信进程是操作系统的核心,不同的进行之间的数据是隔离的,没有共享。如果两个进程之间需要实现互斥和共享的关系,就需要进行通信。进程通信的实现方式进程通信有三种实现方式共享存储消息通信管道通信共享存储 实现原理:两个相互通信的进程通过一块共享的存储进行信息交换 优点:快捷有效 缺点:写入和读取互不关心,存在安全隐患。一种解决方式就是

2016-03-04 20:27:34 470

原创 深入JAVA虚拟机之java体系结构

为什么使用java因为java的体系结构决定了它适合网络环境。它可以保证安全的、健壮的且和平台无关的程序通过网络传播,在很多不同的计算机和设备上运行。网络带来的挑战和机遇挑战: 1. 以网络为核心的硬件环境所包含的设备越来越广泛。不同的设备,不同的硬件体系,不同的操作系统 2. 安全性。包括网络安全和运行时安全(健壮性)。对于网络安全,java解决这个挑战的方法是:提供一个受保护的环境,从网络上

2016-01-04 11:37:53 398

原创 J2EE基本介绍

好久没有写博客了。在实际工作中,发现自己的技术基础真的很差,很多名词概念不知道是什么意思。所以最近下决心恶补一下。这个算是基本篇,以自问自答的形式来解决自己心中的疑惑,如果对另外的人也有帮助,那就是再好不过了。准备篇什么是J2EE全称是Java2 Enterprise Edition。 “J2EE平台本质上是一个分布式的服务器应用程序设计环境——一个Java环境,它提供了: 1. 宿主应用

2015-12-27 16:55:59 2240

原创 消息中间件——基础介绍

在理解JMS(java message service) API之前,先理清楚几个概念。什么是消息消息就是组件或者应用之间一种通讯的方式。一个消息系统就是一个P2P(peer-to-peer)设备,提供消息的创建、发送、接收和读取功能。消息中心使得分布式系统可以实现解耦。一个组件将消息发送到消息中心,而另一个组件负责从消息中心接收消息,且这发送者和接收者不需要同时处于可用状态,且接受者不需要感知发送

2015-12-26 21:12:06 515

原创 java如何快速实现深copy

1、对应的object实现Serializablepublic class BaseDO implements Serializable { private static final long serialVersionUID = 4976398103651159073L; public String toString() { return ToStringBuilder

2015-12-01 23:09:47 546

原创 mvn打包替换jar包中xml的占位符

mvn打包替换jar包中xml的占位符由于某种需求,我们需要依赖另一个应用的jar包以及其中某几个xml的配置文件,恰好引用的这几个xml文件中,用到的占位符。在aone以及本工程里面的antx.properties文件中已经完成了配置,但是在正式maven打包的时候,还是无法替换这些占位符。怎样才能让这个占位符被成功替换呢?

2015-11-28 13:52:35 2074

原创 Eclipse操作技巧

1、fail to create the java virtual machine 解决方法fail to create the java virtual machine 最佳解决方法解决方法很简单:只需把Eclipse.exe 改为Eclipse1.exe即可 !So Easy

2014-06-25 14:46:26 699

原创 华为2014校园招聘机试题

2013.10.9 上午9:00开始先吐槽一下,学校的机房。我严重怀疑学校机房的VS2010是不是坏的,折腾了半天,一个测试的hello world程序都不能跑。最后,二十多分钟之后,我放弃了,果断选择了VC6.0.虽然很多东西编译不过,但是没办法啊。唉,结果最后人家性格测试都做完了,我才做了1/3。性格测试就不吐槽了。OK,废话不多说了,本来是可以三道题都做完的,结果最后一道题,scan

2013-10-09 21:02:27 5690 15

原创 [LeetCode] Largest Rectangle in Histogram

题目链接:http://oj.leetcode.com/problems/largest-rectangle-in-histogram/题目描述:其实呢,就是,像水桶装水一样,以连续的一段数字的最小那个为基准,统计这一部分有多少个比它大的数,乘起来就是这片区域的大小。那我们一开始的思路的话,就是遍历每一个元素,让它作为基准元素,检测周围有几个连续的数是大于它的,统计出来之后,根据公式就可以

2013-10-04 13:36:47 1467

原创 STL容器

一、序列容器1、vector概述:变长一维数组,连续存放的内存块,有保留内存,堆中分配内存。支持随机访问,也就是[]操作,下同。缺点:插入和删除慢,内存重置会花很多时间。2、deque概述:相当于双向变长数组,在堆上分配内存,一个堆保存几个元素,而堆之间使用指针链接。支持随机访问。缺点:当然同vector一样,既然是跟数组相似,所以在中间插入和删除就比较费时。如果想要插

2013-10-04 10:45:33 1081 1

原创 面试100题之21与特定元素交换的排序算法

题目描述:长度为n的数组乱序存放着0至n-1. 现在只能进行0与其他数的swap,请设计并实现排序( 必须采用交换实现)思路分析:任何排序算法都可以,主要就是这里对交换的规则有了规定,只要设计出交换函数,所有的问题就可以迎刃而解了。参考代码:void SpecialSwap(int &a, int &b, int &mid)//特定的交换函数{ if(a == b) retur

2013-09-13 21:23:01 1023

原创 编程之美系列之计算字符串的相似度

题目描述:也就是给一个源串和目标串,计算最少的操作数,使得源串进行下列操作之后等于目标串。1、在给定的位置插入字符2、将当前字符替换成任意字符3、删除任意字符题目分析:如果当前两个字符相等,则结果就是Src+1和Pattern+1两个字符串的最小操作数。如果不等,就分三种情况:1、如果是在给定的位置插入字符,那要求的操作数就是Src和Pattern+1两个字符串的最小操

2013-09-13 11:32:58 1119

原创 [LeetCode] Print All Combinations of a Number as a Sum of Candidate Numbers

题目连接:http://leetcode.com/2010/09/print-all-combinations-of-number-as-sum.html题目分析:由于这里说明了输入是升序的,当然如果是乱序的输入,只要没有要求输出有序,就不需要排序,否则在计算时,先对数组进行排序处理。假设当前的arr[i]比Sum小,则计入arr[i],并更新Sum的值。否则,跳过当前的arr[i]元

2013-09-04 14:10:06 1005

原创 [LeetCode] Implement strstr() to Find a Substring in a String

题目连接:http://leetcode.com/2010/10/implement-strstr-to-find-substring-in.html思路:其实就是逐个匹配,解法没什么亮点,我也不想说什么。当然也可以把IsMatch嵌入到StrStr里面,可以减少函数调用的开销,但是可读性可能就会降低了。1、当前字符匹配,则返回当前字符。2、当前字符不匹配,则往前跳一个。其实和A

2013-09-04 10:25:49 1015

原创 [LeetCode] A String Replace Problem

题目连接:题目描述:其实就是将源字符串中与模式串匹配的部分都替换为特定的字符。如果有多个连续匹配,值替换成一个字符即可。思路:1、还是用一前一后的两个指针,前一个指针用于遍历,后一个指针用于修改值。2、如果pFast当前所指的位置可以匹配,pFast向前移动Pattern长度,并且记下匹配的信息,直到找到第一个不能匹配的点。3、如果标记显示有子串匹配。则将pSlow替换为指定的

2013-09-03 21:10:20 1372

原创 [LeetCode] find the Minimum window in s which contains all elements from T

题目链接:题目描述:Given a set T of characters and a string S, find the minimum window in S which will contain all the characters in T in complexity O(n).eg,S = “ADOBECODEBANC”T = “ABC”Minimum wind

2013-09-03 11:05:39 1399

原创 [LeetCode]Sliding Window Maximum

题目链接:http://leetcode.com/2011/01/sliding-window-maximum.html咳咳,很长时间没有写博客了。各种各样的事情,前段时间又被各种打击。调整了好久,终于状态好多了,SO,步入正轨了。题目分析:其实就是给定一个长度为N的数组,以k为窗口长度,窗口自左向右滑动,求出每一次窗口的最大值。如果用蛮力的话,复杂度是O(KN),因为每一次取出k个元

2013-09-02 20:19:53 2413

原创 面试100题之20实现Strstr函数

题目描述:函数原型:char *Strstr(char *pTarget, const char *pPattern),判断pPattern是否是pTarget的一个子串,如果是,返回第一个匹配点的指针,否则返回空。异常处理:若参数中有指针为NULL,返回NULL。如果pPattern是空串,返回整个pTarget。核心代码如下:#include/////实现strstr函数c

2013-08-17 19:11:28 933 1

原创 面试题13之大数的四则运算(续)

万恶的CSDN已经无力吐槽了,随便一搞,代码格式就乱成一团,这里把代码再调整一下。原文:http://blog.csdn.net/kay_zhyu/article/details/8877032//两个字符串相加//str1和str2是加数,ans是结果数组,nMaxLen是结果数组的最大空间char* Add(char* const str1, char* const str2, c

2013-08-17 14:21:24 626

原创 jQuery.load的用法

在js里面想要跳转到指定的Action,然后获取数据,显示在前端的指定区域。那这个load函数就很好用了。调用load方法的完整格式是:load( url, [data], [callback] ),其中url:是指要导入文件的地址。 data:可选参数;因为Load不仅仅可以导入静态的html文件,还可以导入动态脚本,例如PHP文件,所以要导入的是动态文件时,我们可以把要传递的参数放

2013-07-19 16:00:43 869

原创 C#学习笔记之垃圾回收机制

垃圾回收器的基本假定:1:一个对象越新,那么这个对象的生命周期就越短。也就是说最近分配内存空间的对象最有可能被释放。2:一个对象越老,那么这个对象的生命周期就越长。也就是说经过几轮垃圾回收后,对象仍然存在,搜索它时就需要进行大量的工作,却只能释放很小的一部分空间。所以有可能还没有搜索到这个对象的时候,我们已经获得了需要的内存了。3:新对象之间通常更可能和新对象之间存在引用关系,也就是说

2013-06-05 11:13:15 786

原创 面试100题系列之19二分数组

1、将一个数组的奇数全排在前面,偶数排在后面。(或者偶前奇后是一样的)。还记得快排么?选定一个key,然后将数组分成小于key和大于key的两部分。觉得类似了吧。只是修改一下中间的条件就可以了。核心代码如下:void DivideArray(int *arr, int nLen){ if(!arr || nLen < 1) return; int i = 0; int j

2013-05-03 19:58:55 669

原创 面试100题系列之18链表合并

希望看官看完之后,青睐小女子的话,转载就注明一下小女子芳名:http://blog.csdn.net/kay_zhyu/article/details/8880672。码字也不容易是不?1、给定两个有序的链表,假设都是升序的。需要合并两个链表,去除重复的元素,也就是求两个链表的并,这里要求合并之后的结果降序排列。既然有序,那问题就简单多了。OK,轻松加愉快的写出来代码。遍历两个链表,如果链表1

2013-05-03 16:11:22 1222

原创 面试100题系列之17模拟比赛

题目描述:有n支球队,编号为0~n-1,随机两两比赛,晋级之后同样,求一个Result序列,表明最后每支球队的名次,如果是在同一轮中被淘汰的,那名次相同。其实以前写过这个题的代码,不过现在看看觉得写得太挫了,所以重新写一下。思路分析:这里借用归并排序的思想,其实每次决定两支要比赛的队伍的标号相距多少就可以了,假设队伍i和队伍i+l比赛,不管最后结果怎样,默认胜利的那支球队的编号是存在第i的

2013-05-03 13:02:40 963

原创 面试100题系列之16判断序列是不是Pop序列

1、给定两个序列,判断其中一个有没有可能是另一个序列的出栈序列。比如说给定入栈序列为{1,2,3,4,5},出栈序列为{4,5,3,2,1},那后者就是前者的出栈序列。具体步骤是什么呢?出栈操作每次只能出栈顶元素,所以用一个辅助栈来模拟这个出栈操作就可以了。一个元素需要出栈要么是马上要进栈的元素,要么是当前栈顶的元素。如果两者都不是,那就在入栈序列中找到这个元素,然后将这个元素以前的所有元素入栈。

2013-05-03 12:04:41 722

原创 面试100题系列之15将字符串转换成数

1、输入一个字符串,将其转换成整数。注意,这里没说是正整数,所以需要考虑负数的情况。没什么技巧,直接算就可以了。只要考虑到负数就OK了,当然处理技巧也很重要。核心代码如下://字符串转换成整数int StrToInt(char *str){ if(!str) return -Inf; int nLen = strlen(str); int i = 0; int ans = 0;

2013-05-03 10:49:29 907

原创 面试100题系列之14从1到n中随意取几个数,使其和为m

1、题目描述:输入两个整数n和m,从数列1,2,3.......n 中随意取几个数,这里同一个数不能重复取,使其和等于m,要求将其中所有的可能组合列出来。解题思路:典型的0-1背包问题,每一个数字都有两种状态,取或者不取。最简单的就是用递归求解。这里的遍历顺序是从n到1,这样比较好判断递归的出口,当然也比较方便剪枝。核心代码如下,有没有觉得很漂亮://找到1~Num中和等于Sum的所有组合

2013-05-03 10:16:36 2440

原创 编程之美系列之求子数组的最大和(续)

在上一篇博客编程之美系列之求子数组的最大和中给出了连续子数组最大和的求法。现在把题目扩展一下,有以下两种情况。PS:转载请注明出处:http://blog.csdn.net/kay_zhyu/article/details/88778261、这个数组是循环的,也就是说数组首尾相连,找出连续子数组的最大和,那这个最大和可能就有一部分在最左边,有一部分在最右边。有两种处理方法:*在数组的后

2013-05-02 21:47:01 1079

原创 面试100题系列之13大数的四则运算

关于大数的四则运算,我想网上有很多方法,感觉通用性不强,然后呢,功能不强大,效率不高~~问题多多啊~然后呢,大数这个东西又经常碰到,所以呢,我一咬牙,写了一个比较完整的,花了我一下午的时间啊,不过除法还没有写,有时间再写吧。最近事情太多了,写了之后再补上。OK,说一下我的思路。首先这里用字符串存数据,这个地球人都知道。第0位是高位。当我们算加减的时候需要从低位开始算起。所以我一开始的思路是将字

2013-05-02 18:24:47 1308

原创 编程之美系列之求子数组的连续最大积

上一篇博客编程之美系列之求子数组的最大乘积讲述了一种求最大乘积的情况,不过那个题相对来说是比较简单的,因为抽象出来之后其实也就是找出需要排除的一个数而已。OK,下面来一个题目的变形,当然这个题目也可以作为编程之美系列之求子数组的连续最大和的扩展。既然需要的子数组是连续的,也就是说是取某一段数据。怎么去决定取哪一段呢?OK,在说思路之前,先说点实际的例子来分析一下。比如说数组{-2,3,4,-3,-

2013-05-02 11:29:19 1674 6

原创 编程之美系列之求子数组的最大乘积

题目描述:给定一个长度为N的整数数组,只允许用乘法,计算任意(N-1)个数的组合中乘积最大的一组,并写出算法的时间复杂度。算法分析:1、二逼青年的做法,把所有可能的(N-1)个数的组合照出来,分别计算它们的乘积,并比较大小。好吧~时间复杂度是O(N^2),这种效率,我连代码都懒得写。2、来点文艺一点的,其实也就是上个月去参加腾讯笔试的一道附加题,我当时就做出来了。具体的看另外一篇博客:

2013-05-02 11:04:30 1559

原创 编程之美系列之二叉树的分层遍历

关于二叉树的遍历,大家肯定都不会陌生。当然,这种题目很多人都会做,但是你们心中的解题办法是不是够漂亮呢?首先,这里需要用到的数据结构的队列,这应该没有什么疑问,先进先出嘛。子节点在父节点之后,而用队列,子节点是通过父节点入队列,所以在父节点之后,OK~符合标准!先来说说大致的一些解题思路。1、在NODE的定义中定义一个flag标记,用来记录该节点属于哪一层,然后如果当前节点的层数大于上一个

2013-05-01 16:42:39 993

原创 杭电ACM2147——kiki' game

Problem Description:http://acm.hdu.edu.cn/showproblem.php?pid=2147Recently kiki has nothing to do. While she is bored, an idea appears in his mind, she just playes the checkerboard game.The size of

2013-05-01 15:26:33 1117

原创 编程之美系列之关于数组的二分查找

有序的数组,其中的元素可以通过二分查找得到,可以如果一个数组是由有序数组左旋得到的,能不能还是用二分查找得到呢?答案是肯定的。为了简化问题,我先假设数组是由升序的数组通过左旋得到了,比如说{1,2,3,4,5,6}=>{4,5,6,1,2,3}。只要我们找到这个最大值的下标,那么就可以把数组分成两个升序的有序数组了。找这个最大值很简单,但是我想你应该不会说全部遍历一遍数组吧!这里讲的重点是二分

2013-05-01 15:19:05 1756

原创 剑指Offer读书笔记之第二章3从后往前打印链表

如果给定一个链表,不能改变数据,也就是不能通过反转链表来实现,将链表从后往前打印出来。怎么实现呢?用一个辅助栈,每访问到一个节点的时候,将节点的数据存到栈中,访问完所有的节点之后,将栈中的元素从栈顶打印到栈底。核心代码如下://把节点加到链表中,每次在pHead后面加节点void Add(NODE *pHead, int v){ node[++top].data = v; no

2013-05-01 14:50:43 1012 1

原创 剑指Offer读书笔记之第二章2字符替换

给定一个字符串str和一个子串SubStr,如果str里面的空间足够,写一个函数将str里面的字符ch替换成SubStr。书中只是一个特例:将空格替换成%20.题目分析:如果从前到后扫描str,碰到一个ch,那么ch后面的所有字符都要向后挪SubLen-1个位置。这样做的效率肯定是不高的,怎么在O(n)的时间复杂度内完成这个操作呢。从前到后扫描不行,那就从后到前扫描。如果预先知道了有多少个

2013-05-01 14:21:32 800

空空如也

空空如也

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

TA关注的人

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