- 博客(54)
- 资源 (3)
- 收藏
- 关注
原创 jvm源码阅读笔记[7]-从jstat -gccause命令谈到jvm中都有哪些GC cause
从零开始看源码,旨在从源码验证书上的结论,探索书上未知的细节。有疑问欢迎留言探讨 个人源码地址:https://github.com/FlashLightNing/openjdk-notes 还有一个openjdk6,7,8,9的地址:https://github.com/dmlloyd/openjdk jvm源码阅读笔记[1]:如何触发一次CMS回收
2017-09-24 17:44:32 6320
原创 jvm源码阅读笔记[6]-杂谈JIT中对Exception做的优化
今天同事上线上看日志,发现一堆只打印了”java.lang.NullPointerException”的异常,代码里面确实捕获且调用了输出堆栈信息的方法,日志里面却没有堆栈信息,甚是困惑。另一个同事说他之前遇到过,好像是JIT优化的结果。搜了一下,找到这样一篇文章(http://jawspeak.com/2010/05/26/hotspot-caused-exceptions-to-lose-the
2017-09-22 23:29:17 1338
原创 jvm源码阅读笔记[5]:内存分配失败触发的GC究竟对内存做了什么?
从零开始看源码,旨在从源码验证书上的结论,探索书上未知的细节。有疑问欢迎留言探讨 个人源码地址:https://github.com/FlashLightNing/openjdk-notes 还有一个openjdk6,7,8,9的地址:https://github.com/dmlloyd/openjdk jvm源码阅读笔记[1]:如何触发一次CMS回收
2017-09-09 14:46:32 2400
原创 jvm源码阅读笔记[4]:从GC说到vm operation
从零开始看源码,旨在从源码验证书上的结论,探索书上未知的细节。有疑问欢迎留言探讨 个人源码地址:https://github.com/FlashLightNing/openjdk-notes 还有一个openjdk6,7,8,9的地址:https://github.com/dmlloyd/openjdk jvm源码阅读笔记[1]:如何触发一次CMS回收
2017-09-03 21:57:55 2191
原创 jvm源码阅读笔记[3]:从内存分配到触发GC的细节
从零开始看源码,旨在从源码验证书上的结论,探索书上未知的细节。有疑问欢迎留言探讨 个人源码地址:https://github.com/FlashLightNing/openjdk-notes 还有一个openjdk6,7,8,9的地址:https://github.com/dmlloyd/openjdk jvm源码阅读笔记[1]:如何触发一次CMS回收
2017-09-03 15:33:04 2456 1
原创 jvm源码阅读笔记[2]:你不知道的晋升阈值TenuringThreshold详解
个人源码地址:https://github.com/FlashLightNing/openjdk-notes 还有一个openjdk6,7,8,9的地址:https://github.com/dmlloyd/openjdk 历史笔记: jvm源码阅读笔记[1]:如何触发一次CMS回收 大家都知道年轻代中经历了多次GC之后仍然没有被回收的对象就会晋升
2017-08-26 10:00:52 6108 2
原创 jvm源码阅读笔记[1]:如何触发一次CMS回收
个人源码地址:https://github.com/FlashLightNing/openjdk-notes 还有一个openjdk6,7,8,9的地址:https://github.com/dmlloyd/openjdk 对于配置使用CMS回收器的应用,用jstack pid | grep GC 可以发现,有一个名为Concurrent Mark-Sweep GC Thre
2017-08-20 18:03:20 3786 1
原创 Ubuntu下编译hotspot踩坑指南
折腾了2天,终于在ubuntu上编译hotspot成功了,中间踩了好多坑,资料也不好找啊,还是得跟书上和博客上的各种配置保持一致比较好,稍微有点不一样的地方,也许就是个坑! 环境变量配置如下,各个参数的含义网上也都有,就不列举了。export LANG=Cexport ALT_BOOTDIR=/home/lumingfeng/Downloads/jdk1.6.0_45export AL
2017-08-13 23:59:16 1461
原创 RateLimiter源码阅读
俗话说得好,缓存,限流和降级是系统的三把利剑。刚好项目中每天早上导出数据时因调订单接口频率过高,订单系统担心会对用户侧的使用造成影响,让我们对调用限速一下,所以就正好用上了。 常用的限流算法有2种:漏桶算法和令牌桶算法。 漏桶算法 漏桶算法:请求先进入“桶”中,然后桶以一定的速率处理请求。如果请求的速率过快会导致桶溢出。根据描述可以知道,漏桶算法会强制限制请求处理的速度。任你请
2017-07-29 00:30:33 4872 5
原创 FutureTask与AQS不得不说的故事
讲FutureTask之前,先讲讲Runnable,Callable,Future,FutureTask之间都是啥关系? 在接触Callable之前,我们都说,开线程执行一个方法是获取不到返回值的。为什么这么说呢? 首先是Runnable接口,我们一般实现该接口后都会重写run()方法,这里可以看到run()方法是没有返回值的。也就是说,如果你在run()方法里面,做了一次数据库
2017-07-27 13:33:48 1918 4
原创 根据AQS推测Semaphore及源码分析
Semaphore意为信号量,用法和CountDownLatch类似,也可以用来控制线程之间的协作关系,但通常用来控制同时访问的线程的数量。 先看看示例:
2017-07-23 00:42:56 501
原创 AQS简单总结
AQS是j.u.c中几个并发类的基础,它们都继承了AbstractQueuedSynchronizer类,并且在其中实现了几个接口,然后在并发类中使用AQS的方法就可以达到操作线程阻塞或者唤醒的目的。这篇文章记的就是这些子类实现的接口是如何和AQS搭配起来使用的,从而实现AQS的效果。
2017-07-22 00:17:57 606
翻译 A Work in Progress
当你执行”java…”,就会创建一些垃圾回收线程。如果你想知道有多少GC线程,你可以使用-XX:+PrintFlagsFinal -version,然后在大量的输出结果里面找到ParallelGCThreads相关的。你会看到类似以下的结果:uintx Para
2017-07-01 02:07:39 867
翻译 Our Collectors
前段时间,我在给朋友讲解的时候,在白板上画了下面这个图。他们看起来(也许只是表现得)很喜欢,因此我想再给你们画一次。 每一个蓝色的盒子代表了一种用
2017-06-30 23:50:45 483
原创 根据AQS推测CountDownLatch及源码分析
CountDownLatch是一个同步工具类,它允许一个或多个线程一直等待,直到其他线程的操作执行完后再执行。 CountDownLatch是通过一个计数器来实现的,计数器的初始值为线程的数量。每当一个线程完成了自己的任务后,计数器的值就会减1。当计数器值到达0时,它表示所有的线程已经完成了任务,然后在闭锁上等待的线程就可以恢复执行任务。 来看一下它是怎么利用AQS实现的。
2017-06-18 20:23:03 547
原创 揭下ReentrantLock神秘的面纱
结论 先给出结论。综合起来,ReentrantLock是一个独占锁,可重入锁,且有公平锁和非公平锁之分。 公平锁和非公平锁各自是怎么实现的呢?非公平锁中,某一线程调用lock()时就会使用CAS尝试获取锁(不管锁当前是否空闲),获取失败才会加入到队列中等待。而在公平锁中,某一线程调用lock()时,只有在当前锁是空闲时,且等待队列中没有其他线程才会使用CAS去获取,如果等待队列中有其
2017-06-17 16:51:53 606
原创 GC系列:如何优化引用计数算法(1)
引言 标记-清除,标记-整理,复制式回收算法都是属于间接式的:先从根集合出发,遍历根集合图,找到存活的对象,再反向确定出死亡的对象。而引用计数算法则可以通过引用关系的创建和删除直接确定对象的存活状态,而不用像追踪式回收器一样。 在引用计数算法中,每个对象都维护了一个引用计数器,该值通常在对象头中。 伪代码简单的引用计数算法New()://创建对象 ref=alloca
2017-06-03 17:45:21 1352
原创 学习使用greys排查线上问题
Greys是一个JVM进程执行过程中的异常诊断工具。 在不中断程序执行(不重启服务)的情况下轻松完成JVM相关问题排查工作。安装和启动下载greys脚本:curl -sLk http://ompc.oss.aliyuncs.com/greys/install.sh|sh启动脚本:./greys.sh pid如何获取pid:ps -ef|grep java 然后从输出中找到你需要的Java进程
2017-06-03 01:00:48 5603
原创 GC系列:如何优化标记-整理算法
标记-整理算法有一个整理对象,避免产生内存碎片的过程,那么回收器是怎么整理对象的?整理算法又是怎么区分性能好坏的?整理过程大概需要哪几个步骤?
2017-05-22 20:51:45 4434 2
原创 深入了解标记-清扫回收算法
摘自《the garbage collection handbook》 之前对标记-清扫回收算法的理解只是读完《深入理解Java虚拟机》里面的介绍,而对里面的很多细节不甚了解。看了《the garbage collection handbook》才知道里面还大有名堂。标记-清扫是怎么标记的?标记位在哪?标记过程有什么优化方法?清扫过程如何清扫?怎样优化清扫过程?回收器又是怎么和分配对象空间
2017-05-20 11:06:36 2347 1
原创 redis实现分布式锁
背景: 假设有这样一个场景:用户在APP上点击下单的时候,会跳到一个地址管理页面,其中保存着自己的地址。这里有2个条件: 1.如果用户之前没有添加过地址,那么他添加的第一个地址就会被设置为默认地址。 2.同时,每一个用户有且只有一个默认地址。
2017-03-23 22:57:08 576
原创 记一次内存泄漏排查问题
背景 在使用JavaCV做图像处理时,发现程序运行起来之后,处理了百来次的时候,就报了outofmemory的错误。因为javacv底层就是调用opencv的native方法,判断是出现了内存泄漏问题,可能是调用了哪个方法之后没有正确释放资源。 1.用jconsole观察 首先是需要在测试机器上修改启动命令,使得能够支持jconsole远程连接。-Dcom.su
2017-02-26 21:51:13 1270
原创 使用Apache commons-net包的ftp时中文文件名乱码的问题
使用commons-net 包里面的ftp时,建立目录的时候会有中文乱码,主要是ftp的文件名编码是iso-8859-1的,所以在根据文件名获取输出流的时候需要对文件名转编码格式: ftpClient.appendFileStream(new String(fullPath.getBytes("utf-8"), "iso-8859-1"
2016-12-20 11:29:22 3394
原创 SpringMVC使用MultipartFile 实现异步上传文件
目的是实现异步上传1.添加pom依赖添加pom依赖,因为用的ajax,数据需要转成json的格式进行传输,所以还有加入一个JSON jar包: <dependency> <groupId>commons-fileupload</groupId> <artifactId>commons-fileupload</artifactId>
2016-07-27 17:18:12 16323
原创 Springmvc+Mybatis+Velocity实现小demo(Maven项目)
Velocity只是充当一个展示层,和JSP的功能类似,利用mybatis从数据库中取出数据,然后进行数据处理,最后通过Velocity在页面上展示出来。环境搭建主要分为几个过程,第一步是配置pom文件依赖,第二步是配置spring配置文件:applicationContext.xml,第三步就是开始写DAO接口和对应的mapping.xml文件,然后是Service接口和ServiceImpl类
2016-07-23 18:34:43 3549 2
原创 Maven项目中pom.xml文件报错以及项目编译错误
pom.xml报错:Referenced file contains errors (http://maven.apache.org/maven-v4_0_0.xsd). For more information, right click on the message in the Problems View and select "Show Details..."一开始以为是xsd文件出错,
2016-07-19 17:36:31 4911
原创 读《Spring技术内幕》-总结3-IoC容器的初始化过程
博客概要 本篇只是结合编程式使用DefaultListableBeanFactory的代码,简单得描述了一下IOC容器初始化的过程,分为3个步骤:Resource定位,载入BeanDefinition,注册这些Bean 。以及Spring中初始化的过程和依赖注入的过程是分开的,只有在对bean设置过lazy-init的情况下可能会使依赖注入在容器初始化的时候就发生,文中也有详细说明原因。
2016-05-05 13:56:31 1387
原创 读《Spring-技术内幕》-第二章:IoC容器的实现-2
IoC容器系列的设计与实现概要 博客介绍了BeanFactory这个容器的基本接口,如getBean(String name),containsBean(String name)等等,但是这些接口并没有具体的实现,因此给出了XmlBeanFactory容器的实现过程,还用编程的方式使用了DefaultListableBeanFactory这个容器,成功得获得了在BeanDefinitio
2016-05-03 01:23:16 3552
原创 读《Spring-技术内幕》-第二章:IoC容器的实现-1
第二章: Spring Framework的核心: IoC容器的实现(第一篇总结)博客概要 博客总共总结了2个方面:1是介绍了IoC的概念,2是根据Spring的IoC接口关系图,通过2条设计主线来分析Spring是如何设计和实现IoC容器的?同时也简要的分析了这张IoC接口关系图(详见图2-2) 博客首先介绍了什么是IOC容器?IOC容器可以替我们做什么?为什么需要IO
2016-05-01 15:38:56 9106 1
原创 单例模式5种实现方式
在github上看到一个项目,实现了多种设计模式,就把它fork下来,一个一个看,然后也可以学习参考别人写的代码。 地址:https://github.com/iluwatar/java-design-patterns (以下代码都转自上面的项目) 单例模式,也叫单子模式,是一种常用的软件设计模式。在应用这个模式时,单例对象的类必须保证只有一个实例存在。许多时候整个系统只需要拥有
2016-04-24 10:13:17 7084
原创 redis简单使用及用JSON字符串的方式解决对象存储问题
参考:http://lumingfeng.xyz 想在windows下使用熟悉一下redis,首先在它的github上下载压缩包:https://github.com/dmajkic/redis 下载到本地之后解压缩打开,里面有32位和64位2个文件夹,我的是64位系统,所以把64-bit文件夹里面的文件复制到最外层目录(D:/redis)下,然后就可以开始安装配置了。安装配置打开cm
2016-04-12 23:01:12 30581 3
原创 Maven下载,配置,创建项目
Apache Maven ,是一个软件(特别是 Java 软件)项目管理及自动构建工具,由Apache软件基金会所提供。基于项目对象模型(缩写:POM)概念, Maven 利用一个中央信息片断能管理一个项目的构建、报告和文档等步骤。曾是Jakarta项目的子项目,现为独立Apache项目。 Maven的好处就是用一个pom.xml来代替对jar包的管理,所依赖的jar包都配置在该文件中,这样,在项目
2016-04-12 17:03:09 5601
原创 猫脸映射中 数组引用传递的例子
最近在做图像加密的程序设计,图像加密有一个比较有名的处理方法:猫脸映射。 我在matlab中仿真实现了,然后将代码移植到java中,却发生了好些错误,这也让我加深了对猫脸映射的理解和对Java语言的理解。 猫脸映射的解释:http://book.51cto.com/art/201403/434289.htm 错误代码:for (int k = 1; k <= arnol
2016-04-02 15:27:47 857
原创 java在linux上创建文件/文件夹
项目中需要备份用户的聊天记录,所以想根据用户ID创建文件用于存储聊天记录。需要用到文件创建。一开始以为可以了,传到服务器发现报权限问题,想到创建文件需要权限,然后再把相关的class文件赋权限777,然后重启了服务器就可以了~~。这样,聊天记录存储的问题也算差不多解决了。关键代码如下:chatFilePath就是服务器上的路径,user_phone就是用户的手机号,File file
2016-01-02 17:21:33 15784
原创 spring JDBC 查询没有目标的方法
在之前的项目中,因为边学边用spring框架,顺便也去学和用spring JDBC 框架。总结一下:增加,删除,修改 都是用的是update方法/**增加,删除,修改 * @param sql sql语句 * @param agrs 参数 * @return */ public boolean updateOpr(String sql,Object ...agrs)
2015-08-22 21:57:58 1013
转载 数据库SQL优化大总结
原文地址:http://www.cnblogs.com/yunfeifei/p/3850440.html网上关于SQL优化的教程很多,但是比较杂乱。近日有空整理了一下,写出来跟大家分享一下,其中有错误和不足的地方,还请大家纠正补充。这篇文章我花费了大量的时间查找资料、修改、排版,希望大家阅读之后,感觉好的话推荐给更多的人,让更多的人看到、纠正以及补充。1.对查询
2015-06-27 17:38:22 524
原创 PHP+Mysql 实现后台管理
刚学了几天的PHP,然后刚好有个后台管理的项目要做,抱着学php的目的,便打算用php开始写。后台就是对几张表进行增删查改操作。一开始先从简单的下手,有一张学生信息表,得到里面的各个信息,并显示在页面上。先写了一个dao.php文件,里面有一个数据库连接的方法。因为要显示在页面上,所以采用在php代码中混合html代码的方式。用while循环,将得到的所有数据依次输出到页面上。因为学生信息较多
2015-05-16 22:03:52 11475 1
原创 php+Mysql 的CRUD操作
php连接数据库有两种方式,一种是MySQLi,一种是PDO。两种各有优势PDO 应用在 12 种不同数据库中, MySQLi 只针对 MySQL 数据库。所以,如果你的项目需要在多种数据库中切换,建议使用 PDO ,这样你只需要修改连接字符串和部门查询语句即可。 使用 MySQLi, 如果不同数据库,你需要重新所有代码,包括查询。 两者都是面向对象, 但 MySQLi 还提供了
2015-05-11 11:18:17 1505
原创 JavaWEB——简单标签简单总结
自定义标签: 什么是自定义标签?用户定义的一种自定义的jsp标记 。当一个含有自定义标签的jsp页面被jsp引擎编译成servlet时,tag标签被转化成了对一个称为标签处理类 的对象的操作。于是,当jsp页面被jsp引擎转化为servlet后,实际上tag标签被转化为了对tag处理类的操作。 自定义标签有什么用•自定义标签可以降低 jsp 开发的复杂度和维护量,
2015-04-28 23:39:47 775
springmvc+mybatis+velocity最小实例
2016-07-23
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人