摘要: 生产者-消费者模型是多线程问题里面的经典问题,也是面试的常见问题。有如下几个常见的实现方法: 1. wait()/notify() 2. lock & condition 3. BlockingQueue 下面来逐一分析。 1. wait()/notify() 第一种实现,利用根类Object的... 阅读全文
posted @ 2014-06-12 11:57 macemers 阅读(1719) 评论(0) 推荐(1) 编辑
摘要: 没想过面试的时候,会遇到语言设计上的问题。现场答得并不好因为一直没思考过,经过了点搜索,渐渐有点思路。1. 避免“钻石型”多继承问题:有两个类B和C继承自A。假设B和C都继承了A的方法并且进行了覆盖,编写了自己的实现。假设D通过多重继承继承了B和C,那么D应该继承B和C的重载方法,那么它应该继承哪个... 阅读全文
posted @ 2014-06-11 16:10 macemers 阅读(972) 评论(0) 推荐(1) 编辑
摘要: BlockingQueue是多线程里面一个非常重要的数据结构。在面试的时候,也常会被问到怎么实现BlockingQueue。本篇根据Java7里ArrayBlockingQueue的源码,简单介绍一下如何实现一个BlockingQueue。要实现BlockingQueue,首先得了解最主要的方法:a... 阅读全文
posted @ 2014-06-11 15:29 macemers 阅读(1645) 评论(1) 推荐(4) 编辑
摘要: 我们常常用String的split()方法去分割字符串,有两个地方值得注意: 1. 当分隔符是句号时("."),需要转义: 由于String.split是基于正则表达式来分割字符串,而句号在正则表达式里表示任意字符。 //Wrong://String[] words = tmp.split("... 阅读全文
posted @ 2014-05-05 14:27 macemers 阅读(5612) 评论(0) 推荐(0) 编辑
摘要: 上一篇文章谈到怎么连接Oracle数据库,其实通过ODBC也差不多,只是driver要换成JdbcOdbcDriver。配置文件如下:driver=sun.jdbc.odbc.JdbcOdbcDriverurl=jdbc:odbc:[Your DSN]username=[Your user name... 阅读全文
posted @ 2014-05-05 14:05 macemers 阅读(827) 评论(0) 推荐(0) 编辑
摘要: Oralce中的to_date()函数用于将字符串转换为日期对象: to_date( string, [ format_mask ] , [ nls_language ] ) string1要转换的字符串. format_mask可选项,日期转换格式. nls_languag... 阅读全文
posted @ 2014-05-05 11:16 macemers 阅读(6560) 评论(1) 推荐(1) 编辑
摘要: 利用jdbc连接Oracle数据库,首先得选对jdbc的版本。 jdk6需要ojdbc6.jar这个包。如果选错的话,调用isValid()这个方法时,有可能有这个异常: Exception in thread "Thread-5" java.lang.AbstractMethodError: ... 阅读全文
posted @ 2014-04-14 10:44 macemers 阅读(5669) 评论(0) 推荐(0) 编辑
摘要: 使用Scala解析XML,充分体现了函数式编程的特点,简洁和明了。用Java去解析不是不行,只不过代码不够清晰明了。 首先先把XML文件读入到内存里: val someXml = XML.loadFile("file/FIXExample.xml") 这样someXml是一个scala.xml... 阅读全文
posted @ 2014-03-28 17:19 macemers 阅读(10776) 评论(0) 推荐(0) 编辑
摘要: 第一次接触伪共享的概念,是在马丁的博客上;而ifeve也把这一系列博文翻译整理好了。概读了几次,感觉到此概念的重要。因此有了这个系列的第二篇读后总结。 1. 什么是伪共享(False sharing) 在上一篇博文知道,缓存的存储方式,是以缓存行(Cache Line)为单位的。一般缓存行的大小是... 阅读全文
posted @ 2014-03-27 14:27 macemers 阅读(4021) 评论(0) 推荐(1) 编辑
摘要: Git Bash+ConEmu可以模拟Linux强大的命令行。不过在结合Scala和Play时,需要注意如下事项: 1. Scala的安装在64位操作系统下,默认会放在“C:\Program Files (x86)\”。更改此目录使其安装在没有空格和没有括号的目录下。 2. chmod a+xsca... 阅读全文
posted @ 2014-03-18 17:32 macemers 阅读(1437) 评论(0) 推荐(0) 编辑