- 博客(38)
- 收藏
- 关注
IDEA设置JDK无效问题解决方案
IDEA中所有jdk类库方法找不到,调用代码报红,设置jdk也无效的问题解决方案今天敲代码的时候电脑意外蓝屏(没错,系统是Windows10),重新启动IDEA的时候代码里面一片红,提示JDK找不到。而事实上JDK已经被正确配置并导入,更换了多个版本,代码无数次地重新导入,一切如故——IDEA一直提示JDK未设置。 项目设置如下图,一切看起来都完全ok。 设置之...
2017-03-19 22:42:57 10466 6
StringBuffer与StringBuilder的线程安全性验证
对于国内面试中经常问“StringBuffer和StringBuilder有何区别”,知乎上曾有一番讨论。我以为,好的面试官可以在这个问题上直接进一步,“你不知道这两个的区别没关系,我可以告诉你,我们聊聊短生命周期对象管理和线程安全性吧。”所以取而代之的这样的一个问题就更有意义了:请写一个程序来验证StringBuffer和StringBuilder的线程安全性。 线程安全性是指,...
2017-01-11 08:56:00 526
ThreadPoolExecutor使用示例
通常,使用Java开发并发程序时,我们创建Runnable对象,然后创建对应的线程Thead对象来执行它们。Java 5之后,Java并发API提供了Executor框架,主要包括Executor接口,它的子接口ExecutorService,以及实现上述两个接口的ThreadPoolExecutor类。 这种机制使得任务的创建和任务的执行分离,使用executor,开发者只需要实现R...
2016-03-27 13:50:53 1450
Java ConcurrentHashMap 最佳实践
相对于HashMap,ConcurrentHashMap提供了内部实现的并发支持。使得开发者在多线程应用中访问ConcurrentHashMap时,不必使用synchronized同步代码块。 //Initialize ConcurrentHashMap instanceConcurrentHashMap<String, Integer> m = new Concurre...
2016-03-06 15:18:23 293
LeetCode[贪心算法] - #122 Best Time to Buy and Sell Stock II
原题链接:#122 Best Time to Buy and Sell Stock II 要求:假定你有一个包含n个元素的整型数组,其中的第i个元素是指定股票在第i天的价格。设计一个算法来计算在这n天里可能获得的最大利润。注:只考虑单只该股票的买入和卖出时机,一天内可以买卖多次,但不允许同一时间内存在多次交易(即:再次买入之前,必须买入该股票) 难度:中等 分析:...
2015-11-08 21:46:26 176
LeetCode[排序] - #148 Sort List
原题链接:#148 Sort List 要求:给一个单向链表排序,要求时间复杂度为O(nlogn)且空间复杂度为O(1)。单向链表定义如下:class ListNode{ int val; ListNode next; ListNode(int x){ this.val = x; }} 难度:中等 ...
2015-08-13 10:21:37 133
轻量级框架与重量级框架
事实上“轻量级”与“重量级”并没有确切的定义。轻重量级之分应当考虑如下几个方面: 加载的资源Spring相对于EJB是轻量级的,但这就好像说大象比鲸轻。如果你想要运行一个Java EE应用程序,你不能够简单地创建一个应用并直接运行它本身。需要一个JavaEE服务器来运行应用,例如Glassfish,WebLogic或WebSphere。多数应用服务器都是非常巨大并且复杂的,并不容...
2015-08-11 22:49:55 375
LeetCode[排序] - #242 Valid Anagram
原题链接:#242 Valid Anagram 要求:给定两个字符串s和t,写一个函数,判断t是否是s的变位词。如果t跟s包含相同字符但排列顺序不同,则称t是s的变位词。例如:s = "anagram", t ="nagaram",返回trues = "rat", t = "car",返回false注意:可以假定字符串只包含小写字母。 难度:容易 ...
2015-08-11 19:39:51 137
LeetCode[动态规划] - #5 Longest Palindromic Substring
原题链接:#5 Longest Palindromic SubString 要求:给定一个字符串S,找出它的最长回文子串。假定S的最大长度为1000,且最长回文子串唯一 难度:中等 分析:假定字符串s为回文字符串,则在s头部和尾部分别添加相同字符串[x],所得结果s'=[x]s[x]也为回文字符串(论述1)。可使用动态规划方法解决此问题,递推公式便基于此特性。...
2015-08-04 22:52:49 154
LeetCode[动态规划] - #198 House Robber
原题链接:#198 House Robber 要求:原题是要为某盗贼设计一个能使其利益最大化的方案(这个场景并不和谐,在保持题意的情况下重新描述一个场景)。假设某糖果工厂有若干糖果机,每台糖果机每天产出不同数量的糖果,每天取糖果时不能同时取相邻两台糖果机的糖果(别问为什么),问每天能取得的最大糖果数量是多少。 糖果机产生的糖果数量集合可以看成一个整型数组。 难度:简单...
2015-08-03 15:17:37 205
LeetCode[Array] - #217 Contains Duplicate
原题链接:#217 Contains Duplicate 要求:给定一个整型数组,判断它是否包含重复元素。当任一元素函数应当返回true,当所有元素各不相同时返回false。 难度:简单 分析:与#1 Two Sum类似,可以两次循环遍历,依次判断每一个元素是否在其后出现;或者使用一个HashSet作为辅助结构,遍历数组,若某元素不在HashSet中则将其加入Se...
2015-07-31 22:56:13 133
LeetCode[Array] - #1 Two Sum
原题链接:#1 Two Sum 要求:给定一个整数数组,找出其中的两个数,使之相加能够得到目标数字。函数twoSum应当返回这两个数的索引,index1应小于index2。请注意,这两个索引并非从零开始计数。假定每个输入都有且只有一个解。 例:输入:numbers{2, 7, 11, 15}, target=9输出:index1=1, index2=2 ...
2015-07-31 22:25:57 113
LeetCode[字符串] - #3 Longest Substring Without Repeating Characters
原题链接:#3 Longest Substring Without Repeating Characters 要求:给定一个字符串,找到它没有重复字符的最长子串的长度。例如,"abcabcbb"的无重复字符最长子串为"abc",其长度为3。对于由相同字符组成的字符串"bbbbb",其最长子串为"b",故返回长度为1。 难度:中等 分析:遍历给定字符串,对于每一个字...
2015-07-20 16:57:59 105
LeetCode[链表] - #2 Add Two Numbers
原题链接:#2 Add Two Numbers 要求:给定两个以链表表示的非负整数,链表中的每个节点保存整数中的一位,以倒序排列(例如,321表示为1->2->3)。把这两个数字相加,作为一个链表返回。 输入:(2->4->3) + (5->6->4)输出:7->0->8 难度:中等 分析:本题思路比较直...
2015-07-20 16:23:29 108
LeetCode[链表] - #21 Merge Two Sorted Lists
原题链接:#21 Merge Two Sorted Lists 要求:合并两个已排序的单向链表,将合并后的结果作为一个链表返回。ListNode定义:public class ListNode { int val; ListNode next; ListNode(int x) { val = x; }} 难度:简单 分析:...
2015-07-20 16:01:10 120
LeetCode[动态规划] - #10 Regular Expression Matching
原题链接:#10 Regular Expression Matching 要求:实现正则表达式匹配,支持'.'和'*'。 '.'匹配任意单字符。'*'匹配任何0个或多个之前元素。 匹配应当覆盖整个输入字符串,而不仅仅是子串。 函数原型:boolean isMatch(String /* string to check */ s, String /* p...
2015-07-20 12:25:39 179
LeetCode[动态规划] - #7 Climbing Stairs
原题链接:#7 Climbing Stairs 问题:你正在攀爬一把一共有n个台阶的梯子,每次可以爬一或二阶,爬到顶共有多少种不同的方式? 难度:简单 分析:当梯子阶数为0时,有0种攀爬方式;当阶数为1时,则有一种攀爬方式。当阶数为2时,由于每次可以爬一阶或两阶,即从0阶处爬两阶到达顶部或由1阶处爬1阶到达顶处,共2种方式。n=3时同样,可以由1阶处爬两阶或由2阶...
2015-07-19 23:03:32 123
LeetCode[Math] - #7 Reverse Integer
原题链接:#7 Reverse Integer 要求:按位反转输入的数字例1: 输入 x = 123, 返回 321例2: 输入 x = -123, 返回 -321 难度:简单 分析:对于一般情况,首先保存输入数字的符号,然后每次取输入的末位(x%10)作为输出的高位(result = result*10 + x%10)即可。但须考虑边界情况,即输入大于I...
2015-07-18 23:10:38 124
LeetCode[Math] - #66 Plus One
原题链接:#66 Plus One 要求:给定一个用数字数组表示的非负整数,如num1 = {1, 2, 3, 9}, num2 = {9, 9}等,给这个数加上1。注意:1. 数字的较高位存在数组的头上,即num1表示数字12392. 每一位(数组中的每个元素)的取值范围为0~9 难度:简单 分析:题目比较简单,只须从数组尾部开始,若当前位是9则向前...
2015-07-18 22:57:51 115
LeetCode[位运算] - #137 Single Number II
原题链接:#137 Single Number II 要求:给定一个整型数组,其中除了一个元素之外,每个元素都出现三次。找出这个元素注意:算法的时间复杂度应为O(n),最好不使用额外的内存空间 难度:中等 分析:与#136类似,都是考察位运算。不过出现两次的可以使用异或运算的特性 n XOR n = 0, n XOR 0 = n,即某一位上出现偶数次1将该位...
2015-07-18 22:18:41 134
试读《Netty权威指南(第2版)》
最近正在试用Netty,关于Netty是什么以及它能够做什么,在其官网的“Netty口号”中说得很清楚: Netty is an asynchronous event-driven network application framework for rapid development of maintainable high performance protocol ser...
2015-06-30 22:24:50 100
Node.js与Express4安装与配置
Nodejs简介Node.js 基于 Chrome JavaScript 运行环境,用于便捷地搭建快速、可扩展的网络应用。它使用了一个事件驱动、非阻塞式 I/O 的模型,使其轻量又高效,非常适合于运行在分布式设备的数据密集型实时应用。当前版本:v0.12.4 安装配置Node.js在官网下载页根据自己的平台选择安装程序。对于Windows有msi与exe两种选择。ms...
2015-06-02 19:42:15 203
Object.equals方法:重载还是覆盖
本文译自StackOverflow上对此问题的讨论。原问题链接 在阅读Joshua Bloch的《Effective Java(第二版)》第8条“覆盖equals时请遵守通用约定”时对如下论述有疑问:“不要将equals声明中的Object对象替换为其他的类型。程序员编写出下面这样的equals方法并不鲜见,这会使程序员花上数个小时都搞不清它为什么不能正常工作:”public...
2015-05-25 18:07:11 329
JavaScript利用JSON填充下拉框
一个简单的js小轮子。先说应用场景:以json字符串的形式拿到map,如'{"key1":"value1","key2":"value2","key3":"value3"}'需要遍历该map的键,并利用键的集合生成下拉框的option选择该下拉框中的某一项时,需要得到该键对应的值 首先将利用JSON.parse()方法解析传入的jsonStr,得到对应的Obj
2015-04-15 08:24:13 1285
LeetCode[Math] - #9 Palindrome Number
原题链接:#9 Palindrome Number 要求:判断一个整数是否是回文数,不要使用额外的存储空间 难度:简单 分析:题目限制不允许使用额外的存储空间应指不允许使用O(n)的内存空间,O(1)的内存用于存储中间结果是可以接受的。于是考虑将该整型数反转,然后与原数字进行比较。注:没有看到有关负数是否可以是回文数的明确结论,例如-1,-121等。根据Le...
2015-03-24 18:42:24 95
原创 LeetCode[位运算] - #136 数组中的单一数
原题链接:#136 Single Number要求:给定一个整型数组,其中除了一个元素之外,每个元素都出现两次。找出这个元素注意:算法的时间复杂度应为O(n),最好不使用额外的内存空间难度:中等分析:题目限定了线性的时间复杂度,同时不使用额外的空间,即要求只遍历数组一遍得出结果。由于异或运算 n XOR n = 0, n XOR 0 = n,故将数组中的每个元素进行异或...
2015-03-20 08:21:14 111
LeetCode[位运算] - #191 计算汉明权重
原题链接:#191 Number of 1 Bits要求:写一个函数,以一个无符号整数为参数,返回其汉明权重。例如,‘11’的二进制表示为'00000000000000000000000000001011', 故函数应当返回3。汉明权重:指一个字符串中非零字符的个数;对于二进制串,即其中‘1’的个数。难度:简单分析:将十进制参数转换为二进制,然后计算其中1的个数即可。...
2015-03-18 19:29:05 210
Java读写Excel:Apache POI, JXL与OpenCSV
前些日子把JXL替换为ApachePOI,原因很简单,JXL在2009年10月已经停止更新,并且不支持Excel 2007 OOXML (.xlsx)格式的文件。事实上把JXL与POI进行比较并不公平,因为JXL只能够操作OLE2格式的Excel(即.xls),而POI则是能够读写xls(x)、doc(x)、ppt(x)的一整套解决方案。 不同版本Excel的行列数限制: +---...
2015-02-28 23:27:22 433
Java文件变更监控的两种实现
对文件及文件夹进行修改变更监测有很广泛的应用,例如:通知配置文件的改变跟踪某些关键的系统文件的变化监控某个分区磁盘的整体使用情况系统崩溃时进行自动清理自动触发备份进程向服务器上传文件结束时发出通知下面给出Java的两种实现,源码可以在GitHub上找到 FileMonitorJDK1.6及之前版本: 基于Timer实现两个关键类:...
2015-01-23 18:35:33 934
试读《大数据时代的IT架构设计》
“大数据”的概念是在最早经历信息爆炸的学科--天文学和基因学中提出来的,而今已经渗透到了各行各业和生活中的方方面面。牛津大学教授维克托曾在《大数据时代》一书中指出,通过对海量数据进行分析,能够获得有巨大价值的产品和服务,或深刻的洞见。大数据引起了商业变革,管理变革,以致思维变革。调整信息系统的架构,使之能够适应大数据时代的需要,成为了工程师们的一个重要课题。 试读章节主要有四个篇章,前两...
2014-06-29 22:49:30 229
IllegalStateException: Cannot forward a response that is already committed
对于初学者来说,一个常见的误解是:当调用 forward() 或者 sendRedirect() 时控制流将会自动跳出原函数。标题所示错误通常是基于此误解而引起的。示例代码:protected void doPost() { if (someCondition) { sendRedirect(); } forward(); // ...
2014-04-18 15:34:45 527
Java PropertyDescriptor 应用及源码分析
前文 从Introspector谈Java内省机制 提到了通过Introspector.getBeanInfo()方法获取属性描述符数组,进而读取属性值的方式,但未对PropertyDescriptor的应用和实现作进一步阐释,在此作个补完。 1. 概述PropertyDescriptor描述Java Bean中通过一对存储器方法(getter / setter)导出的一个...
2014-03-08 10:33:03 297
从Introspector谈Java内省机制
内省内省是Java语言的一种重要特性。使用内省我们可以在运行时得到一个类的内部信息。这些信息包括方法、属性、构造函数及其他。内省的一个应用是开发使用插件的应用程序。应用程序可以在运行时获取并使用插件类的构造函数、方法和属性。内省也可以应用于创建Java Beans和Javadocs中。Introspector类Introspector类为访问目标Jave Bean支持的属性、事件和...
2014-01-20 19:37:36 198
Java时区转换及时间格式
本文介绍Java API 中 Date, Calendar, TimeZone和DateFormat的使用,以及不同时区时间相互转化的方法和原理。 问题描述:向处于不同时区的服务器发请求时需要考虑时区转换的问题。譬如,服务器位于东八区(北京时间,GMT+8:00),而身处东四区的用户想要查询当天的销售记录。则需把东四区的“今天”这个时间范围转换为服务器所在时区的时间范围。 ...
2013-07-17 18:22:38 2340
vi区段删除
区段删除是编辑和分析一些冗长的配置文件或日志文件时比较常用的操作。简记下vi区段删除要点备忘。 vi概述 引文中并未将末行模式单独列为一种模式。单不单列并不重要,能区分命令模式与末行模式即可。 vi区段删除步骤:1. 在末行模式下使用:set nu显示行号非必须,随光标移动vi右下角也会显示行号,能够正确找到并记录删除开始行和结束行的行号即可 2. 计算...
2013-05-02 16:38:28 217
在CentOS5.5上编译OpenJDK6
几番周折终于在自己的CentOS5.5上编译成功了OpenJDK6,将编译过程和遇到的问题作一简要记录,备查。0. OpenJDK介绍OpenJDK是Sun(现Oracle)公司发布的基于GPL许可的Java平台的实现。其优点:1、它的核心代码与同时期Sun(-> Oracle)的产品版基本上是一样的,血统纯正,不用担心性能问题,也基本上没什么兼容性问题;(代码上最主要的差异...
2012-09-12 18:41:54 161
Git忽略文件
有很多文件不必使用git管理。例如Eclipse或其他IDE生成的项目文件,编译生成的各种目标或临时文件等。使用git status时,会在Untracked files里面看到这些文件列表,在一次需要添加的文件比较多时(使用git add . / git add -u),会把这些所有的未跟踪文件添加进索引。============一些牢骚============ ...
2012-08-29 13:01:17 290
Linux复制指定目录及子目录下特定类型的文件
首先建立一个用于测试的目录,用'tree'命令查看其结构如下所示:可见,目录中主要包含用于测试的*.txt文件和用于充当炮灰的*。tes文件目标是保持当前的目录结构,只把txt文件复制出来方法一:当不需要的文件类型较为单一时,可以通过完全复制然后删除指定类型的文件完成Step1 使用命令 cp -r test/ test2 将测试目录test下所有内容完全复制到t...
2012-07-31 12:02:07 1405 1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人