- 博客(27)
- 资源 (1)
- 收藏
- 关注
原创 Elasticsearch入门简介
最近因为一个项目涉及到了搜索相关的需求,elasticsearch可以说是目前最流行,最受欢迎的企业搜索引擎,所以在技术选型上自然的选择ES作为搜索引擎的实现,由于自己也是第一次接触elasticsearch,故写下这篇文章总结下自己在使用学习ES过程中的一些经验教训。...
2022-06-07 11:22:49
828
原创 【踩坑笔记】--论如何合理的使用线程池
如果说如何提升系统的并发能力,大家第一想到的肯定是采用多线程,而提到多线程编程,就不得不说到线程池,合理的使用线程池可以帮助我们大大提升系统的性能,但前提是“合理”两字,如果乱用/滥用线程池,带来的可能不是高性能而是灾难了。最近在一个需求当中,因为涉及到多方调用,自然而然的想到了使用线程池来提升性能,但由于线程池数量设置的不合理,导致在系统负载很低的情况下出现了线程阻塞的问题,不但没有提高接口的性能,反而让接口被线程池拖挂了。问题发生后,针对这一问题做了复盘,趁此机会也对线程池的原理和使用做了一番探究。..
2022-06-07 11:11:32
591
原创 java类static初始化代码块中抛出未预期的异常,导致该类无法被正常加载
最近在项目中发现一个比较有意思的异常情况,特此记录一下。 某个类在static初始化代码块中启动了一个线程,用于监控该类的运行情况并打印日志,代码示意如下。 public class Test { static { new Thread(new Runnable(){}).start(); } ...// other code}在项目运行过程中,...
2018-03-31 15:36:38
7070
1
原创 spring-data-redis 使用pipeline批量设置过期时间的bug
redis没有批量设置过期时间的命令,所以当我们需要为多个key设置过期时间时,只能循环调用expire或pExpire命令为每个key设置过期时间,为了提高性能,我打算使用pipeline来批量操作,我使用的是spring-data-redis的stringRedisTemplate,版本为1.6.4-release,代码如下:final String[] keys = {"key1", "key
2016-10-24 14:52:07
18245
原创 mysql索引问题
今天写代码的时候做一个简单的sql查询发现了一个奇怪的问题select a,b from table_b where b = 11b是有索引的,但是explain该sql语句的发现没有用到索引,这就奇了怪了请教了一下数据库工程师,才知道,原来查询的数量超过一个阀值时(比如占到全表数据的60%)mysql优化器会认为此时使用索引并不会比全表扫描快,所以会直接全表扫描,不会使用索引涨姿
2015-11-26 16:36:08
605
原创 关于windows server 2008 连接oracle数据库响应极慢的问题
这几天遇到一个诡异的问题,一个简单的应用,数据库是oracle,在本地调试的时候没有什么问题,发布到服务器上(windows server 2008)就发现连接oracle十分慢,一开始以为是网络的原因,用dnsping发现一切正常,最慢也就几十毫秒的响应,后来又连接池的问题,最后写了个最简单的jdbc连接数据库也是很慢,换了jdbc的驱动也是没用,而且换成2003的服务器就没问题。几经周折终于在
2015-07-29 20:42:12
3304
1
原创 javascript正则表达式验证url(包括ip形式)
项目中用到url的验证,一直没有比较好的正则表达式,翻遍了谷歌终于找到一个比较完美的正则验证,在github上找到的,原地址原正则去除了对一些私有地址的验证,如(192.168开头的),下面是去除了这个限制的正则 var re_weburl = new RegExp( “^” + // protocol identifier “(?:(?:http
2015-06-11 15:14:54
3190
原创 基于webRTC的网页、android视频通信学习笔记(一)
公司有项目需要用到视频通信,本人自告奋勇(脑子一热)接下了这个重任。。经过几天的资料搜索,最终选定了使用WebRTC来做视频通信,关于这方面的资料现在国内还不是很多。。看英文看的头都大了,故记录一下学习过程,希望以后可以帮到别人。首先了解一下什么是webRTC:http://segmentfault.com/blog/skyinlayer/1190000000436544 这篇文章讲
2015-03-13 19:21:33
2623
原创 jvm学习笔记(三)
工欲善其事必先利其器,想要更好的了解虚拟机,借助一些好用的工具会让你事半功倍JDK命令行工具jdk命令行工具在jdk安装目录下的bin文件夹中1.jps:虚拟机进程状态工具类似linux系统中的ps命令,可以列出正在运行的虚拟机进程,并显示虚拟机执行主类的名称,以及这些进程的本地虚拟机的唯一ID,如下图进程号为6920的是我开启的tomcat服务器,主类
2015-03-08 14:58:53
604
原创 mybatis源码阅读(三)
接上篇进入getConnection方法发现是通过Transaction对象获取连接······回顾之前的openSessionFromDataSource方法中调用getTransactionFactoryFromEnvironment方法获取一个transactionFactory根据配置文件中的猜测返回的是JdbcTransaction
2015-02-03 20:28:12
652
原创 jvm学习笔记(二)
接上篇JVM的垃圾收集算法1.标记-清除算法这是最基础的收集算法,(Mark-Sweep),就如同名字所表达的一样,扫描整个内存区域,对可回收的对象进行标记,当扫描完时,再清除所有被标记的对象。此算法的缺点有以下两点效率不高。会产生内存碎片,所谓内存碎片就是不连续的内存区域,这样可能会导致虽然有足够的内存但是却没有足够大的连续内存去分配给一个比较大的对象,从
2015-01-13 22:39:56
564
原创 jvm学习笔记(一)
jvm对每一个java程序员来说都非常重要,了解并掌握jvm可以帮助我们对java语言更好的掌控。第一篇先记录一下关于jvm的基础知识1、java内存区域java虚拟机在执行java程序的过程中会把它所管理的内存划分为若干个不同的数据区域,如下图。方法区:存放着已加载的类的信息、常量、静态变量、JIT编译器编译后的代码,方法区一般也成为永久带(pern Gen),该区域为线
2015-01-11 21:52:45
598
原创 mybatis源码阅读(二)
接上一篇接下来是调用查询过程,这是官网上的示例代码SqlSession session = sqlSessionFactory.openSession();try { Blog blog = (Blog) session.selectOne("org.mybatis.example.BlogMapper.selectBlog", 101);} finally { sessi
2015-01-11 16:51:19
874
原创 mybatis源码阅读(一)
一直以来都想阅读一些开源框架的源码来提升自己的编程水平,但是诸如spring、hibernate比较流行但又比较重量级的框架,源码十分不好阅读(功力不够),恰好最近的项目在使用mybatis,看了看源码··还是能够看懂的,所以了就选择mybatis作为我第一个源码学习的框架。。http://mybatis.github.io/mybatis-3/zh/getting-started.html
2015-01-11 15:28:14
3133
原创 一道循环递归笔试题
前几天到复旦大学参加了DENA的宣讲会,有一道循环递归的题要求写出运行结果,当时还感觉挺简单 没想到回去把代码编译运行一遍,发现错了···,唉,感觉自己在算法方面还是太弱了点,故写这篇文字分析一下,当做自己的学习笔记吧。题目的代码如下:void sub(int a[], int n){ if(n > 1) { for(int i = 0; i < n - 1; i
2014-03-26 13:42:18
829
转载 Java类变量和成员变量初始化过程
Java类变量和成员变量初始化过程昨天看了一本叫做《突破程序员基本功的16课》的书,个人感觉还可以,主要对Java的技巧进行了一些深入的讲解,让我对类的初始化和对象的创建有了新的认识。 一、类的初始化对于类的初始化:类的初始化一般只初始化一次,类的初始化主要是初始化静态成员变量。类的编译决定了类的初始化过程。编译器生成的class文件主要对定义在源文件中的类进行了如下的
2013-10-19 22:38:21
735
原创 关于MyEclipse使用Hibernate反向工程生成实体类总是在defalut包中
这个问题困扰了我好久····每次使用反向工程生成实体类尽管选择了实体类所在的包,但每次生成后还是会在default包中后来才发现是因为是因为在生成过程中改了实体类的名字,如图总结:这个自动生成工具不好用····
2013-10-11 09:33:38
745
转载 Vector 是线程安全的?(转载)
我曾经和一个开源工程的作者争论关于使用 Vector。一开始以为没有用 ArrayList 的原因是因为项目在 JDK 1.2 之前启动的,那时还没有 java collection。最后的争论集中在 Vector 是否是线程安全的?因为框架大量使用 RMI,RMI 是天生非线程安全的,所以作者认为采用了 Vector 来声明成员变量后,类就是 Thread-safe 了。或许,大家经
2013-09-03 11:22:01
791
转载 HTTP协议(收藏)
引言 HTTP是一个属于应用层的面向对象的协议,由于其简捷、快速的方式,适用于分布式超媒体信息系统。它于1990年提出,经过几年的使用与发展,得到不断地完善和扩展。目前在WWW中使用的是HTTP/1.0的第六版,HTTP/1.1的规范化工作正在进行之中,而且HTTP-NG(Next Generatio
2013-08-29 09:38:43
551
c#全局键盘钩子实现锁屏demo(win7 64位系统测试可用)
2013-03-13
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人