从DBCP源码学习连接池

最后修改于: 2017-03-16 17:12:56.0

在开发中跟数据库不停地打交道,总是在用连接池,大多数人也都知道连接池的好处:统一管理数据库连接,避免频繁创建和销毁连接带来的开销。但是连接池究竟是如何工作的很值得探究,了解其中的原理也有利于加深对连接池配置的理解,从而更好地进行数据库连接上的优化。

仅就我自己了解的连接池有dbcp,c3p0,以及随Tomcat 7发布的tomcat jdbc pool。这次我选择了dbcp的源码来读,网上有人说dbcp写得太复杂,好几十个类,据说tomcat jdbc pool很不错,性能强,而且简单。

【转载】Java 8系列之重新认识HashMap

最后修改于: 2016-08-04 21:50:09.0

之前看HashMap源码,JDK8过于复杂,于是看了一下JDK7的实现,今天刚好看到这篇JDK8与JDK7的HashMap对比。


作者:美团点评技术团队
链接:https://zhuanlan.zhihu.com/p/21673805
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

一个典型的多线程饥饿问题

最后修改于: 2016-05-24 16:42:59.0

昨天我听到有人说面试问双缓冲队列,略感好奇于是搜了一下这是个什么数据结构。

引用网上的一段话:

传统队列是生产者线程和消费者线程从同一个队列中存取数据,必然需要互斥访 问,在互相同步等待中浪费了宝贵的时间,使队列吞吐量受影响。双缓冲队使用两个队列,将读写分离,一个队列专门用来读,另一个专门用来写,当读队列空或写 队列满时将两个队列互换。这里为了保证队列的读写顺序,当读队列为空且写队列不为空时候才允许两个队列互换

看起来挺不错的,于是我就尝试着自己写一个出来。首先凭直觉把put和take方法写出来

    @Override
    public void put(T e

临时文件夹被清理造成的NameNode无法启动问题

最后修改于: 2016-05-09 20:55:41.0

之前搭好了Hadoop之后虚拟机一直没关,今天更新了一下系统,重新开机之后发现hdfs的操作都报“无法链接”错误。使用jps命令查看发现没有NameNode在运行。

于是查日志,在hadoop-2.6.4/logs文件夹下有hadoop-hekunxi-namenode-ubuntu.log的日至文件,记录了namenode的运行日志,在其中发现报错:

2016-05-09 20:29:28,432 WARN org.apache.hadoop.hdfs.server.common.Storage: Storage directory /tmp/hadoop-hekunxi/dfs/name does not exist
2016-05-09 20:29

实习落定之后

最后修改于: 2016-05-03 22:15:53.0

找实习的事尘埃落定之后本来以为会轻松,谁知却更忙了起来。三件事一齐又上了身。

第一是,虽然写完了毕业论文初稿,不过想着在走之前再写一篇论文,于是跟老师申请写一篇会议,于是陷入了又陷入了写论文的汪洋大海。五月底走人之前是无论如何要写完的。

第二是,跟师兄问了一下实习那边组里用的东西,大数据这块完全没有学过,于是只能抓紧时间学习。本身我一个菜鸟能去阿里实习已是惶恐,只有更加努力对得起自己的幸运公司的赏识。在虚拟机上试着搭hadoop系列,但是hadoop的资料实在是太老了,新版本的变动太多,加上对Linux不熟练,花了两天才弄好一个基本的hadoop,又花了好些功夫才把例子跑通,果然程序还是要写要跑,例子跑通之后再对着书看看原理,理解得顺畅很多。

覆盖hashCode()的一种参考方法

最后修改于: 2016-04-19 18:15:05.0

编写一个类的时候,覆盖equals方法的同时也要覆盖hashCode,这是常识。覆盖equals比较简单,如基本类型直接比较,引用类型则递归调用equals即可。覆盖hashCode则不那么简单。

一个好的散列函数应该为相等的对象始终产生相等的散列值,并倾向于为不相等的对象产生不相等的散列值,散列冲突是不可避免的,但是好的散列函数应该尽力避免这一点。

《Effective Java》中给出了一种覆盖hashCode的方法:

1、把一个非零常数,比如17,保存在一个int类型的变量result中。

2、对于对象中的每个关键域f,进行以下操作:

用Redis实现搜索缓存

最后修改于: 2016-04-16 21:57:49.0

这段时间心思都花在找实习上了,终于想起一件早就计划的事——学习一下NoSQL数据库,来做搜索缓存。之前自己写了一个缓存功能,基于用LinkedHashMap存储数据,用ReadWriteLock做并发控制,具体可看这篇《关于搜索》。

在若干种NoSQL里面决定入手Redis,功能比较丰富,主要是名字很顺口哈哈哈。

把Redis的基本概念、数据类型和操作看了一下,内容不是很多,要在单机上跑起来玩玩还是很简单的。还是准备整合到Spring里去,看配置又是一大块,有时候觉得Spring这种整合也略有点烦,一切都得按着它的来,有时还出点莫名其妙的问题,Spring确实是太大了,之前看官方手册,八百多页,吓尿。

关于我

男,1991年末出生,这个人很懒,其他的不想写了。
More about me

文章分类

其他玩意儿