自定义博客皮肤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/Ruby/Go等多种编程语言

  • 博客(60)
  • 资源 (1)
  • 收藏
  • 关注

原创 浅谈系统线程数限制

Linux进程与线程概念就不提了,Richard Stevens的描述: > fork is expensive. Memory is copied from the parent to the child, all descriptors are duplicated in the child, and so on. Current implementations use a te...

2018-07-29 12:36:21 2723

原创 俄罗斯方块转弯算法实现

关于俄罗斯方块程序对战程序中实现方块转弯的算法描述。为了方便描述算法的原理,以方块的左上角为基准,简化问题为一个1*1的小方块,在row*col的矩阵中可以最终移动到哪个位置。现在来看看位置(x y)是否可以移动到(即使是临时的)。 如果它可以被移动到,那么它从哪个位置移动过来。也很简单。 首先,如果上面位置(x-1 y)可以被移动到,那么(x y)也是可以的。 其次,如果左边(x ...

2018-07-29 12:40:50 751

原创 我眼中的uee黑科技

备注: uee是我厂内部的一个前端框架.这可能是最后一篇关于uee的文章了,因为已经不关注这个方面的技术很久了。术业有专攻,前端嘛,那可怕的前端摩尔定律,还是让专业人士去操心吧。上个星期有一天,有同事反馈uee的watch不好使,变量已经修改,但watch回调方法不走进去。今天主要围绕这些类似的问题展开,不过呢,今天不对具体问题进行解析,今天主要讲讲uee的黑魔法,大道至简嘛,抽象(原理)...

2018-07-29 12:40:16 2979 1

原创 简单说说jsonp原理

前几天参加面试,好几个面试者简历都写着jsonp,解决跨域之类的调用。于是问一下知不知道jsonp的实现原理,结果没一个答得上来,有点小失望。这里简单描述一下关键点,权当一个记录。假设a网页调用b网站的服务a网站会准备一个方法,例如callme(args)a网站在页面插入一个script标签,src指向b网站的地址,并带上callme作为参数b网站处理后,把结果和回调方法的名字组...

2018-07-29 12:39:46 2298

原创 浅谈编程中的位操作

昨天有同学谈起网络编程中各种奇怪的位运算,所以单独整理一下实践中的位运算,权当复习。基本的位运算 位运算符包括与,或,非,异或,这属于common sence了,只要给出一段01二进制串,每个程序员应该都可以处理。类型无论编程语言中的类型怎样,只要涉及网络通信,存储,最终都会涉及一个字节的转换过程。对于java来说,主要考虑整型,浮点型,字符串,其中整型和字符串是最常用的。...

2018-07-29 12:39:04 312

原创 框架应用中如何更好地解决问题

现代应用开发中或多或少会使用到各种开源,自研的库,框架等,各种资料良莠不齐, 除了部分成熟开源,商业框架的文档做得很好,使用广泛,生态完整,的确很多问题可以处理。 但自研的通常就是重灾区,资料少,不同步, 那么如何在这类这类框架中找到问题处理的方向,甚至解决方案呢?昨天帮同事处理了一个uee框架使用的问题,可做借鉴。1.对框架有个基本了解,例如框架的大体结构,层次,work流程。 ...

2018-07-29 12:35:35 434

原创 关于攻城狮技术能力提升的一点看法

今天听到有同事说起,网上有技能培训的网课,视频教学,讲解一些’高级’技术,例如从头构建一个tomcat,实时演示。网课价格数千块,对于搞毕业没多久的同学,是一笔不小的开支。对于这个事情,我是这么看的:网课不一定和你的学习能力同步,教学嘛,总是要照顾大多数人,有些人会觉得太快,有些人却嫌慢。所以最好还是可以有针对性,系统性的自学。高大上的技术不一定像表面看的那么好。说自己有搞hadoop...

2018-07-29 12:34:47 176

原创 认真看待java web基础

很多人一开始接触java技术,做的项目都是web相关的,搞过servlet,jsp,struts,springmvc,用过tomcat,终于感觉是web开发没什么问题了,简历可以标上熟悉java web开发。现在我们从基本的war包开始,重新梳理一下java web基础,权当复习。曾经我面试问一个小问题,你知道war包是怎样的结构么?有人会说有src,还有webroot,webapp之类的...

2018-07-29 12:32:05 212

原创 一次INTERNAL_SERVER_ERROR的问题分析

问题现象晚上版本上线后,发现工号进入首页后页面空白,显示INTERNAL_SERVER_ERROR过程回顾通过fiddler抓包,发现某个请求出现500错误检查应用,was,ihs日志,没有发现有效日志发现只有部分工号有问题,开始怀疑存在数据问题,准备导数据回测试环境验证同时,新建一套ihs和was环境进行验证新环境验证,发现原来失败的工号可以正常,怀疑环境配置有问题。同...

2018-07-29 12:30:59 15685

原创 LeetCode题解-16-3Sum Closest

解题思路题目要求找到数组中a+b+c最接近target的和。思路和15题是类似的,也是排序采用二层遍历,计算出目标值c,用二分查找,如果找到就可以直接返回,如果没有找到,那就是找到插入的位置,计算该位置左右两边数字(假如存在)得到的和,看看是否存在更接近的和。对于Java来说,Arrays.binarySearch对于没有匹配的情况,就可以支持返回应该插入的位置(用一个特定的负数表示)。参考源码pu

2017-03-15 20:35:34 322

原创 LeetCode题解-15-3Sum

解题思路题目要求找到数组中所有a+b+c=0的数字。朴素算法是三层遍历,复杂度是O(n^3)。 我的思路是首先对数组排序,需要O(nlogn),然后对a,b进行二层遍历并对c进行二分查找,需要O(logn*n^2)。 最终复杂度是O(logn*n^2),应该还有优化空间。参考源码public class Solution { public List<List<Integer>> thre

2017-03-15 20:35:01 239

原创 LeetCode题解-14-Longest Common Prefix

解题思路题目是要寻找所有字符串中最长的公共开头部分。我的做法是对于某个位置的字符,看看其他字符串同样的位置是否也是这个字符,如果是则继续往后找,如果不是则表示最长的公共开头部分。为了避免越界,首先找到字符串的最小长度,用这个位置做边界,后面就不需要判断了。参考源码public class Solution { public String longestCommonPrefix(String[

2017-03-15 20:34:29 241

原创 LeetCode题解-13-Roman to Integer

解题思路题意是说罗马数字转成普通数字。这个题目和12题是类似的,首先要理解罗马数字的表示法,它是按大小结合顺序来的,前面几个字母组合起来如果能够解释成较大的数字,那就使用这个表示,而不是按举个字母来的。所以罗马数字转成数字,例如当前位置i的字符是c(i),对应的值是100,如果后面位置i+1的字符c(i+1),对应的值是1000,那么就应该理解成CM,对应的值是1000进去100,得到900。结论就

2017-03-04 22:00:17 232

原创 LeetCode题解-12-Integer to Roman

解题思路题意是说把1~3999之间的数字转成罗马数字。首先要理解罗马数字的表示法,它是按大小结合顺序来的,前面几个字母组合起来如果能够解释成较大的数字,那就使用这个表示,而不是按举个字母来的。所以数字转成罗马数字,就可以从字母可以表示的最大数字开始,每找到一个就是增加对应的罗马数字,并记录对剩余部分数字匹配,直到这个罗马数字过大,再取一个较小的继续尝试。参考源码public class Soluti

2017-03-04 21:59:39 202

原创 LeetCode题解-11-Container With Most Water

解题思路题意是说,有一堆有序的数字ai,要计算min(ai,aj)*abs(i-j)的最大值,普通的算法就是列举所有的情况,时间复杂度是O(n^2)。下面介绍一下O(n)的思路。首先记录左边是left,右边是right,那么初始化max就是左右两边组成的值。 假设左边比较小。如果left+i比left的值要小,那么由left+i和right组成的值会更小,而left和left+1组成的值也是更小

2017-03-04 21:58:55 237

原创 LeetCode题解-10-Regular Expression Matching

解题思路思路是动态规划。假设s是待匹配字符串,p是表达式。定义数组matchs,其中matchs[i,j]表示s[0,i)和p[0,j)是否匹配,那么结果就是求matchs[s长度加1,p长度加1]。对于matchs[i,j]分以下情况: * i=0,j=0,空的肯定能匹配 * i=0,j!=0,那么在j>1的情况下且p[j-1]是星号的时候,match[0,j]=match[0,j-2],相当

2017-03-02 21:37:24 256

原创 LeetCode题解-9-Palindrome Number

解题思路判断数字是否是回文数。非常简单,用rev做累计,每次取原值的最后一位累计上去,最后判断rev是否和原值相同即可。参考源码public class Solution { public boolean isPalindrome(int x) { if (x < 0) { return false; } int tmp

2017-03-02 21:34:44 208

原创 LeetCode题解-8-String to Integer (atoi)

解题思路这个题目是要把一个字符串转成整数。按照以下思路:判断是否正数还是负数用一个value记录当前计算到的数值,每次找到一位就做乘10再加上新的数字需要特别处理超过最大最小值的情况参考源码public class Solution { public int myAtoi(String str) { if (str == null || str.length() ==

2017-03-02 21:33:59 186

原创 http请求报文挂起案例

问题描述最近在生产上出现了多次java应用服务器挂死的情况。问题分析从堆栈中可以看到大量的线程挂在 at java.net.SocketOutputStream.socketWrite0(Native Method) at java.net.SocketOutputStream.socketWrite(SocketOutputStream.java:92)通过查看代码,发现是通过H

2017-02-26 14:00:38 6676

原创 LeetCode题解-7-Reverse Integer

解题思路这个题目是反转一个整数,但是要求如果出现溢出的时候返回0。思路如下:如果是负数,考虑先转成正数再处理,所以对MIN_VALUE先要做特殊处理。 现在都是正数了,反转结果用一个long来存储,这样就保证不会溢出了。 如果处理后结果大于MAX_VALUE,说明溢出了,返回0。 结果在转成int返回。 参考源码class Solution { public int rev

2017-02-26 11:40:41 250

原创 LeetCode题解-6-ZigZag Conversion

解题思路这个题目我是分2种情况来考虑的,考虑首行和最后一行,每个数的间隔是2*(numRows-1), 对于中间其他行,那么的间隔是2*(numRows-1)-2*row或者2*row, 其中row表示当前所在的行号。算法是逐行扫描,计算当前符号在输入字符串中的位置,而对应转换后的位置不断加1就可以了。可以看下面的图:首行和尾行其他行参考源码public class Solution {

2017-02-23 20:58:14 191

原创 LeetCode题解-5-Longest Palindromic Substring

解题思路题目是查找最长的回文子串。如果某个字符串是一个回文串,那么形式可能是cbabc,或cbaabc的形式,要找到最长的回文子串,可以以某个字符a开始,区分长度是奇数还是偶数,向左右两边一直比较,直到找到不同的字符。找到的字符就是以a为中心的最长回文子串。这样,只要遍历字符串,找到每个字符为中心的最长回文子串,就可以得到最终结果了。参考源码public class Solution { p

2017-02-23 20:10:26 226

原创 LeetCode题解-4-Median of Two Sorted Arrays

解题思路这个题目是说在两个已排序的数组中找到中间的数,并且要求复杂度是O(ln(m+n))。看到这个复杂度要求,就不能使用简单的数组合并后取中间位置,而是要考虑类似二分法之类的算法。算法的要点就是把题目转换成寻找第k个位置的数字,对于数组A和B,假设都长度都大于k/2,那么都取k/2的位置进行比较,假设A[k/2]小于B[k/2],那么A中k/2之前的位置都不可能是第k个位置,那么可以直接排除,问题

2017-02-23 20:09:48 263

原创 Integer位操作技巧解析

整数二进制左边1最早出现的位置 public static int highestOneBit(int i) { // HD, Figure 3-1 i |= (i >> 1); i |= (i >> 2); i |= (i >> 4); i |= (i >> 8); i |= (i >>

2017-02-19 09:33:10 605

原创 LeetCode题解-3-Longest Substring Without Repeating Characters

解题思路首先要读懂题目,它要求的是找到最长的子串,并且子串中没有出现重复的字符。我的想法,是用一个map存储每个字符最后出现的位置,还要有个变量start,它用来记录上一次出现重复的位置,如果当前字符上一次出现的位置比start小,那么说明中间出现了重复,不能当成有效的子串。记得就是在扫描结束后,再判断一下最后一段子串。给个图简单说明一下。 参考源码public class Solution {

2017-02-18 16:33:35 235

原创 LeetCode题解-2-Add Two Numbers

解题思路这个题目也是比较简单的。主要需要考虑的是如何处理l1和l2长度不一致的情况,进位的处理,还有特别考虑最后一次进位的情况。为了简化处理,我采用了一个哑结点作为head,用carry下次操作的进位值,默认是0. 然后从头开始遍历,每次的和等于上一次进位加上2个结点的值(如果存在的话),如果其中一个结点为空,就当值为0处理,直到2个结点都为空。最后2个结点为空时判断进位是否为1,如果是就增加多一

2017-02-17 21:42:42 214

原创 LeetCode题解-1-Two Sum

解题思路这主要是给第一次接触LeetCode的童鞋准备的。题目说给定一个整型数组和一个数字,希望找到2个位置,这2个位置的和等于给出的数字。解题思路很简单,用一个两层遍历穷举就可以了,如有疑问请参考源码。参考源码public class Solution { public int[] twoSum(int[] nums, int target) { int len = num

2017-02-17 21:35:54 186

原创 LeetCode OJ题解系列

其实LeetCode OJ之前已经做过了,近日上去看了一下,发现题目增加了很多。我打算重新刷一遍,并把题目思路和结果放到博客上来,当做一次刷题记录吧。计划会包括以下内容:题目id,题目名称,题目中文意义解题思路参考源码敬请期待。

2017-02-17 21:34:57 234

原创 Java基本类型-整型解读

java的基本类型包括以下几类:整型 byte short int long浮点型 float double字符型 char布尔型 boolean它们都有对应的包装类型(如果没有特殊说明,下面都是说包装类型),其中整型和浮点型的基类都是Number,并且都是现实了Comparable接口,下面的内容以Integer为例,Byte,Short,Integer,Long只有整型长度上的区别,其

2017-02-16 21:19:49 229

原创 理解RESTFul架构

1 什么是RESTREST全称是Representational State Transfer,中文意思是表述性状态转移。 它首次出现在2000年Roy Fielding的博士论文中,Roy Fielding是 HTTP 规范的主要编写者之一。 他在论文中提到:“我这篇文章的写作目的,就是想在符合架构原理的前提下,理解和评估以网络为基础的应用软件的架构设计,得到一个功能强、性能好、适宜通信的架构

2017-02-12 17:32:41 313

原创 Web开发利器-Fiddler简介

1 什么是Fiddler?Fiddler是一个http调试代理,以代理服务器的方式,监听系统的Http网络数据流动, Fiddler可以也可以让你检查所有的http通讯,设置断点,以及Fiddle所有的“进出”的数据。Fiddler还包含一个简单却功能强大的基于JScript .NET 事件脚本子系统,它可以支持众多的http调试任务。 你是不是曾经疑惑过你的web程序和IE是如何交互的?你是不

2017-02-12 17:26:05 685

原创 性能优化:Trove集合库

1 初见Trove昨天在Startup News上看到一篇文章:优化技巧分享:把内存消耗降低至原来的1/20。里边提到了一个案例,Java应用中如何降低内存消耗,总结了他的优化过程:开始时,存放1.3M个Person对象,消耗堆空间1.5GB修改为java.util.HashMap2 使用Trove如果使用Maven的话,可使用下面的配置<dependency> <groupId>n

2017-02-12 17:18:52 566

原创 WebSphere数据源中的连接被意外关闭案例

频繁创建连接的现象前阵子维护反馈说,oracle数据库每秒创建连接数过高,而主要来源来自于WebSphere集群所在的主机。 按理说,使用连接池的应用,连接是不会很频繁的。追溯一下所在主机的程序,发现可疑对象是一个使用jdbc轮子的应用。 就是自己写了一套代码封装了jdbc操作,虽然连接是从数据源中获取的。但是,单纯看代码,的确没发现有什么问题,该关闭的地方也关闭,不存在泄露的情况。再说,这种现

2017-02-12 17:17:44 2049

原创 DES加解密总结

DES是广泛使用的分组对称加密算法,它要求待加密数据要8位对齐,所以在数据不足8位时候会出现padding的情况, 所以有可能因为padding不同,而出现加解密结果不一样,这种情况在异构系统间的数据通信特别容易出现,例如java和cpp系统之间的通信。 如果在开发过程中,遇到不同语言加解密结果不一样的情况,应该关注一下补齐方式。 关于补齐方式,请参考http://en.wikipedia.o

2017-02-12 17:15:42 882

原创 小心jsch的sftp连接泄露

今天早上和一个同事处理一个现网问题,从javacore里边可以看到大量的Connect Thread,如下所示:Connect thread 192.168.1.100 session" prio=6 tid=0x042d3400 nid=0x1458 runnable [0x04e4f000]堆栈信息如下:...com.jcraft.jsch.Session.run(Session.java:1

2017-02-12 17:14:47 1451

原创 考察对类加载的理解(答案篇)

独立进程篇首先需要知道类加载器是怎么回事? 在Java里边,类加载器就是用来加载类的,然后才是执行代码。 Java里边默认有启动类加载器(boot),扩展类加载器(ext),和应用类加载器(app)。 其中boot就是用来加载最开始的虚拟机和最基本的java类,ext是用来加载一些扩展类,默认是在jre/lib/ext目录下的。 最后一个才是你真正会用到的。cp参数就是用来指定应用类加载器找类

2017-02-12 17:12:32 482 1

原创 考察对类加载的理解(问题篇)

类加载和程序运行是有些关系的,不妨来测试一下。 难度:中级独立进程篇假设有下面的类文件:// Main.javapackage com.github.mccxj.test;public class Main { public static void main(String[] args){ new TestServlet().test(); }}// TestServlet.J

2017-02-12 17:11:35 243

原创 常见DES实现陷阱

DES要点说明DES走的是分组加密,每次处理对象的是8位byte,所以对字符串加解密的时候,会涉及字符编码格式和补齐8位的问题。DES的密钥是固定8位的byte的,其中前7位是加解密用的,最后一位是校验码。3DES的增强型的DES,带3个key,如果3个key一样,就是DES,也有一种变种是1、3是一样的。但都是固定8位的。3DES通常是EDE,就是先加密(k1)再解密(k2)再加密(k3)

2017-02-12 17:09:26 368

原创 java常见工具库培训

目前项目中常见的工具库有apache commons,google guava,再算上spring的话,需要自己从头开始写工具类的情况大大减少。 为了给广大童鞋普及一下工具库用法,减少无用功(还可能因为实现的不好留后遗症的),这里简单的介绍一下相关工具类。google guava大家应该比较陌生,这里先不介绍,:)apache commons官方地址: http://commons.apache.

2017-02-12 17:08:09 259

原创 结合状态机的开发风格

本文主要以XXX的html5版本为蓝本,讨论结合状态机开发的思路和实践方式。状态机选型使用statechart.js。起步知识状态机介绍,请参考Statecharts and Angular.jsstatechart.js的基本使用方法,请参考statechart.js特别是状态机介绍,内容非常好,强烈推荐。适用场景主要用于某个具体业务的复杂页面流控制简单的业务流程是不需要的。例如只有一两

2017-02-12 17:06:45 265

prototype使用文档

prototype和script.aculo.us的文档,相当经典

2007-09-25

空空如也

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

TA关注的人

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