代码改变世界

随笔分类 - Java

MyCAT-EYE开源

2017-09-29 17:34 by 飘扬的红领巾, 2019 阅读, 收藏, 编辑
摘要:MyCAT EYE MySQL数据库监控工具,实现了对MySQL节点的管理和监控,可供开发人员和DBA使用。后续版本将整合MyCAT2.0的管理和配置。 开源地址: https://gitee.com/redtie/mycateye 演示地址: 开发人员视图:http://120.77.46.146:7001 DBA或管理人员视图:http://120.77.46.146:7002 登录用户名、密... 阅读全文

深入理解JVM(六)——类加载器原理

2017-08-25 17:41 by 飘扬的红领巾, 6683 阅读, 收藏, 编辑
摘要:我们知道我们编写的java代码,会经过编译器编译成字节码文件(class文件),再把字节码文件装载到JVM中,映射到各个内存区域中,我们的程序就可以在内存中运行了。那么字节码文件是怎样装载到JVM中的呢?中间经过了哪些步骤?常说的双亲委派模式又是怎么回事?本文主要搞清楚这些问题。 类装载流程 1、加载 加载是类装载的第一步,首先通过class文件的路径读取到二进制流,并解析二进制流将里面... 阅读全文

深入理解JVM(五)——垃圾回收器

2017-08-21 09:46 by 飘扬的红领巾, 7670 阅读, 收藏, 编辑
摘要:轻松学习JVM(五)——垃圾回收器 上一篇我们介绍了常见的垃圾回收算法,不同的算法各有各的优缺点,在JVM中并不是单纯的使用某一种算法进行垃圾回收,而是将不同的垃圾回收算法包装在不同的垃圾回收器当中,用户可以根据自身的需求,使用不同的垃圾回收器,以便让自己的java程序性能到达最佳。 在介绍垃圾回收 阅读全文

深入理解JVM(四)——垃圾回收算法

2017-08-18 15:30 by 飘扬的红领巾, 8978 阅读, 收藏, 编辑
摘要:我们都知道java语言与C语言最大的区别就是内存自动回收,那么JVM是怎么控制内存回收的,这篇文章将介绍JVM垃圾回收的几种算法,从而了解内存回收的基本原理。 stop the world 在介绍垃圾回收算法之前,我们需要先了解一个词“stop the world”,stop the world会在 阅读全文

深入理解JVM(三)——配置参数

2017-08-15 11:10 by 飘扬的红领巾, 10423 阅读, 收藏, 编辑
摘要:JVM配置参数分为三类参数: 1、跟踪参数 2、堆分配参数 3、栈分配参数 这三类参数分别用于跟踪监控JVM状态,分配堆内存以及分配栈内存。 跟踪参数 跟踪参数用于跟踪监控JVM,往往被开发人员用于JVM调优以及故障排查。 1、当发生GC时,打印GC简要信息 使用-XX:+PrintGC或-verb 阅读全文

深入理解JVM(二)——内存模型、可见性、指令重排序

2017-08-14 09:16 by 飘扬的红领巾, 14335 阅读, 收藏, 编辑
摘要:上一篇我们介绍了JVM的基本运行流程以及内存结构,对JVM有了初步的认识,这篇文章我们将根据JVM的内存模型探索java当中变量的可见性以及不同的java指令在并发时可能发生的指令重排序的情况。 内存模型 首先我们思考一下一个java线程要向另外一个线程进行通信,应该怎么做,我们再把需求明确一点,一 阅读全文

深入理解JVM(一)——基本原理

2017-08-11 10:20 by 飘扬的红领巾, 62801 阅读, 收藏, 编辑
摘要:前言 JVM一直是java知识里面进阶阶段的重要部分,如果希望在java领域研究的更深入,则JVM则是如论如何也避开不了的话题,本系列试图通过简洁易读的方式,讲解JVM必要的知识点。 运行流程 我们都知道java一直宣传的口号是:一次编译,到处运行。那么它如何实现的呢?我们看下图: java程序经过 阅读全文

做了两款数据库监控工具,打算在近期开源

2017-08-07 09:22 by 飘扬的红领巾, 5411 阅读, 收藏, 编辑
摘要:前言 很久没有更新博客了,但是这个习惯不能废,最近一直在做数据库方面的学习,做了两个数据库的监控工具,往各位博友指正。 MySQL监控工具 演示地址:[已关闭] 功能树: 这个工具可以分别帮忙开发人员、DBA、测试人员做各自关心的事情,例如开发人员可以监控SQL,分析慢查询,该工具也会给出简单的优化 阅读全文

订单系统中并发问题和锁机制的探讨

2014-05-06 14:33 by 飘扬的红领巾, 9003 阅读, 收藏, 编辑
摘要:问题由来 假设在一个订单系统中(以火车票订单系统为例),用户A,用户B都要预定从成都到北京的火车票,A、B在不同的售票窗口均同时查询到了某车厢卧铺中、下铺位有空位。用户A正在犹豫订中铺还是下铺,这时用户B果断订购了下铺。当用户A决定订下铺时,系统提示下铺已经被预订,请重新选择铺位。在这个系统场景中,... 阅读全文

怎样编写高质量的java代码

2014-03-11 16:55 by 飘扬的红领巾, 10945 阅读, 收藏, 编辑
摘要:代码质量概述 怎样辨别一个项目代码写得好还是坏?优秀的代码和腐化的代码区别在哪里?怎么让自己写的代码既漂亮又有生命力?接下来将对代码质量的问题进行一些粗略的介绍。也请有过代码质量相关经验的朋友提出宝贵的意见。 代码质量所涉及的5个方面,编码标准、代码重复、代码覆盖率、依赖项分析、复杂度分析。这5方面很大程序上决定了一份代码的质量高低。我们分别来看一下这5方面: 编码标准:... 阅读全文

Hibernate的三种状态及对象生命周期

2013-08-29 15:00 by 飘扬的红领巾, 1987 阅读, 收藏, 编辑
摘要:理解Hibernate的三种状态,更利于理解Hibernate的运行机制,这些可以让你在开发中对疑点问题的定位产生关键性的帮助。 三种状态 临时状态(Transient):在通过new关键字,实例化一个对象开始,该对象就进入了临时状态,但它还没有被持久化,没有保存在Session当中。 持久化状态(Persistent):对象被加入到Session缓存当中,如通过session.sa... 阅读全文

为什么质疑Java中的Stack

2013-05-16 18:36 by 飘扬的红领巾, 3543 阅读, 收藏, 编辑
摘要:问题由来 曾经遇到过一条面试题,“Java中的Stack是通过Vector来实现的,这种设计被认为是不良的设计,说说你的看法?”解析Java中的Stack 众所周知Stack(栈)是一种先进后出的数据结构。当中有两个重要的方法:push(进栈)和pop(出栈)。几乎所有语言在实现栈时,都会实现这两个方法,进栈和出栈。而栈这种数据结构在多数时候用来插入和删除元素(进栈则是在顶部插入元素,出栈则是从顶部删除元素),较少情况会用来查找元素。所以从实现方式上,大多是以链表方式实现而非数值方式实现(在插入删除方法上,链表效率优于数组效率)。反观Java中的Stack,查看源代码: 1: publi... 阅读全文

Maven实战(maven安装和配置【windows系统】)

2013-03-05 15:55 by 飘扬的红领巾, 11065 阅读, 收藏, 编辑
摘要:最近准备使用Maven来进行项目管理和构建,该系列将记录我学习Maven的整个过程。准备工作 java开发环境(JDK) Eclipse IDE Maven3.0以上版本 下载地址:http://maven.apache.org/download.cgi配置Maven环境 从上述下载地址中,下载Maven的最新版本,然后解压到指定目录,比如:E:\maven\apache-maven-3.0.5,接着设置环境变量,将Maven安装配置到操作系统环境中。我的电脑-----属性----高级-----环境变量-----环境变量-----新建 变量名:M2_HOME 变量值:E:\mav... 阅读全文

CAS扩展——自定义加密算法

2012-12-05 10:22 by 飘扬的红领巾, 6223 阅读, 收藏, 编辑
摘要:问题由来 用于CAS系统登录的密码默认提供MD5和SHA加密的算法支持,但有时由于业务需要,以上两种算法都不能提供足够的支持,这时我们就需要自定义加密算法。比如笔者遇到的一个项目,密码的加密方式,是将密码MD5加密后再拼接数据库中一个盐值然后再MD5二次加密,这样的需求条件就必须对加密算法进行扩展。 解决方案 CAS支持的加密方式(MD5/SHA)配置方法: 在tomcat... 阅读全文

CAS扩展——自定义查询数据库验证Handler

2012-11-13 11:04 by 飘扬的红领巾, 5825 阅读, 收藏, 编辑
摘要:问题由来 当我们使用CAS来搭建我们的单点登录系统时,由于CAS默认的登录认证是简单的用户名和密码相同即可通过认证,所以我们使用时经常需要通过查询数据库来认证用户名和密码。这便需要扩展CAS验证的Handler。 解决方案 首先找到CAS中很重要的一个配置文件,deployerConfigContext.xml,在X:\tomcat6\webapps\cas-server\W... 阅读全文

在RCP应用上使用Jfreechart绘制图表(附源码)

2012-06-28 16:21 by 飘扬的红领巾, 1993 阅读, 收藏, 编辑
摘要:下午闲来无事,找出Jfreechart来复习一下,做了个在RCP上使用Jfreechart的小程序。第一步、创建RCP程序。 在Eclipse中,使用向导创建Eclipse插件程序:后面就不说了,填写相应项,一路下去,创建好Eclipse插件程序,运行可以看到:第二步、创建视图 创建视图既可以使用向导创建,也可以手动添加Java类,如添加类似这样的类:public class ChartCategoryViewPart extends ViewPart然后在Perspective .java中将创建的视图添加到透视图中:public class Perspective implements . 阅读全文

Spring Framework源代码解析之IOC容器(三)

2012-06-21 15:01 by 飘扬的红领巾, 822 阅读, 收藏, 编辑
摘要:在Spring Framework源代码解析之IOC容器(一)和Spring Framework源代码解析之IOC容器(二),我们对Spring IOC做了简单介绍以及熟悉了一些支持IOC的关键类,本文将对IOC的依赖注入特性进行解析,欢迎指正。 载入和注册 在上文中,我们介绍到XmlBeanFactory对资源文件的载入,并最后引出了一个高帅富——Application... 阅读全文

Spring Framework源代码解析之IOC容器(二)

2012-05-22 16:06 by 飘扬的红领巾, 1661 阅读, 收藏, 编辑
摘要:在上文(Spring Framework源代码解析之IOC容器(一))中,我们简单了解了Spring的IOC特性,但对Spring相关源码没有做详细的分析,本文将对支持IOC特性的重要代码进行分析,有不对的地方请指正。 水桶的标准——BeanFactory 我们说Spring中包含了IOC的容器,倒不如说它包含了一系列容器的集合,因为IOC容器不只一个,像Configurabl... 阅读全文

Spring Framework源代码解析之IOC容器(一)

2012-05-21 11:56 by 飘扬的红领巾, 2551 阅读, 收藏, 编辑
摘要:序 最近开始写博客,觉得这样对自己很有好处,可以从头到尾把散乱的知识梳理一遍,通过自己的理解把它写下了,这个过程受益匪浅。今天写Spring的随笔,使用Spring大概有3年时间,可大多时候只是使用它的特性,并没有深入学习它。Spring的源码据网友说写的很漂亮,我也来学习一下。 IOC之HelloWorld 假设我们有这样一个业务,根据产品的ID,从产品库中取得该产品的详细... 阅读全文