摘要: 之前两篇文章Spring源码分析:非懒加载的单例Bean初始化过程(上)和Spring源码分析:非懒加载的单例Bean初始化过程(下)比较详细地分析了非懒加载的单例Bean的初始化过程,整个流程始于AbstractApplicationContext的refresh()方法: 1 2 3 4 5 6 阅读全文
posted @ 2017-08-21 15:29 ljdgm 阅读(388) 评论(0) 推荐(0) 编辑
摘要: 上文Spring源码分析:非懒加载的单例Bean初始化过程(上),分析了单例的Bean初始化流程,并跟踪代码进入了主流程,看到了Bean是如何被实例化出来的。先贴一下AbstractAutowireCapableBeanFactory的doCreateBean方法代码: 1 2 3 4 5 6 7 阅读全文
posted @ 2017-08-21 15:22 ljdgm 阅读(475) 评论(0) 推荐(0) 编辑
摘要: 上文【Spring源码分析】Bean加载流程概览,比较详细地分析了Spring上下文加载的代码入口,并且在AbstractApplicationContext的refresh方法中,点出了finishBeanFactoryInitialization方法完成了对于所有非懒加载的Bean的初始化。 f 阅读全文
posted @ 2017-08-21 15:21 ljdgm 阅读(243) 评论(0) 推荐(0) 编辑
摘要: 很多朋友可能想看Spring源码,但是不知道应当如何入手去看,这个可以理解:Java开发者通常从事的都是Java Web的工作,对于程序员来说,一个Web项目用到Spring,只是配置一下配置文件而已,Spring的加载过程相对是不太透明的,不太好去找加载的代码入口。 下面有很简单的一段代码可以作为 阅读全文
posted @ 2017-08-21 15:18 ljdgm 阅读(336) 评论(0) 推荐(0) 编辑
摘要: HashMap 和 HashSet 是 Java Collection Framework 的两个重要成员,其中 HashMap 是 Map 接口的常用实现类,HashSet 是 Set 接口的常用实现类。虽然 HashMap 和 HashSet 实现的接口规范不同,但它们底层的 Hash 存储机制 阅读全文
posted @ 2017-03-31 13:36 ljdgm 阅读(206) 评论(0) 推荐(0) 编辑
摘要: Web MVC简介 1.1、Web开发中的请求-响应模型: 在Web世界里,具体步骤如下: 1、 Web浏览器(如IE)发起请求,如访问hao123主页 2、 Web服务器(如Tomcat)接收请求,处理请求(比如用户新增,则将把用户保存一下),最后产生响应(一般为html)。 3、web服务器处理 阅读全文
posted @ 2016-09-21 09:57 ljdgm 阅读(274) 评论(0) 推荐(0) 编辑
摘要: 2.1、Spring Web MVC是什么 Spring Web MVC是一种基于Java的实现了Web MVC设计模式的请求驱动类型的轻量级Web框架,即使用了MVC架构模式的思想,将web层进行职责解耦,基于请求驱动指的就是使用请求-响应模型,框 架的目的就是帮助我们简化开发,Spring We 阅读全文
posted @ 2016-09-21 09:50 ljdgm 阅读(187) 评论(0) 推荐(0) 编辑
摘要: 3.1、DispatcherServlet作用 DispatcherServlet是前端控制器设计模式的实现,提供Spring Web MVC的集中访问点,而且负责职责的分派,而且与Spring IoC容器无缝集成,从而可以获得Spring的所有好处。 具体请参考第二章的图2-1。 Dispatch 阅读全文
posted @ 2016-09-21 09:48 ljdgm 阅读(499) 评论(0) 推荐(0) 编辑
摘要: 前言 多线程编程中,为每个任务分配一个线程是不现实的,线程创建的开销和资源消耗都是很高的。线程池应运而生,成为我们管理线程的利器。Java 通过Executor接口,提供了一种标准的方法将任务的提交过程和执行过程解耦开来,并用Runnable表示任务。 下面,我们来分析一下 Java 线程池框架的实 阅读全文
posted @ 2016-09-02 13:42 ljdgm 阅读(180) 评论(0) 推荐(0) 编辑
摘要: ** Java加解密 ** 实现方式:JDK实现,CC,BC JDK提供比较基础的底层的实现;CC提供一些简化的操作;BC提供补充 一、Base64加密 非常简单,加密解密就一个函数。 代码如下: 二、消息摘要算法加密————主要用于验证数据完整性。 MD(消息摘要): SHA(安全散列) JDK实 阅读全文
posted @ 2016-09-02 09:56 ljdgm 阅读(7203) 评论(0) 推荐(1) 编辑
摘要: 1. 什么是Java反射,有什么用?反射使程序代码能够接入装载到JVM中的类的内部信息,允许在编写与执行时,而不是源代码中选定的类协作的代码,是以开发效率换运行效率的一种手段。这使反射成为构建灵活应用的主要工具。反射可以:调用一些私有方法,实现黑科技。比如双卡短信发送、设置状态栏颜色、自动挂电话等。 阅读全文
posted @ 2016-09-02 09:51 ljdgm 阅读(1851) 评论(0) 推荐(0) 编辑
摘要: 使用Redis做MyBatis的二级缓存 通常为了减轻数据库的压力,我们会引入缓存。在Dao查询数据库之前,先去缓存中找是否有要找的数据,如果有则用缓存中的数据即可,就不用查询数据库了。 如果没有才去数据库中查找。这样就能分担一下数据库的压力。另外,为了让缓存中的数据与数据库同步,我们应该在该数据发 阅读全文
posted @ 2016-09-02 09:43 ljdgm 阅读(4082) 评论(0) 推荐(0) 编辑
摘要: 依赖jar包:Xml代码 收藏代码 <!-- redis --> <dependency> <groupId>org.springframework.data</groupId> <artifactId>spring-data-redis</artifactId> <version>1.3.4.RE 阅读全文
posted @ 2016-06-08 11:29 ljdgm 阅读(4459) 评论(0) 推荐(0) 编辑
摘要: <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/P 阅读全文
posted @ 2016-06-08 11:19 ljdgm 阅读(265) 评论(0) 推荐(0) 编辑
摘要: Spring是一个java世界中极其流行 的开源框架。Spring的初衷是降低企业级开发的复杂性,并试图通过POJO对象实现之前EJB这类重型框架才能实现的功能。Spring不仅仅对服务 端开发有用,任何Java应用都可受益于Spring的简洁、易测试和低耦合等特性。 Spring框架中使用bean 阅读全文
posted @ 2016-05-15 15:23 ljdgm 阅读(2614) 评论(0) 推荐(0) 编辑
摘要: 一、使用场景举例 在了解@Transactional怎么用之前我们必须要先知道@Transactional有什么用。下面举个栗子:比如一个部门里面有很多成员,这两者分别保存在部门表和成员表里面,在删除某个部门的时候,假设我们默认删除对应的成员。但是在执行的时候可能会出现这种情况,我们先删除部门,再删 阅读全文
posted @ 2016-05-15 15:18 ljdgm 阅读(483) 评论(0) 推荐(0) 编辑
摘要: 下面是我的一个实际项目的情况,大概情况是这样的:一个Master,4个Slave,没有 Sharding机制,仅是读写分离,Master负责写入操作和AOF日志备份,AOF文件大概5G,Slave负责读操作,当Master调用 BGREWRITEAOF时,Master和Slave负载会突然陡增,Ma 阅读全文
posted @ 2016-04-04 23:58 ljdgm 阅读(1154) 评论(0) 推荐(0) 编辑
摘要: 1) 垃圾回收是一种回收无用内存空间并使其对未来实例可用的过程。 Eden 区:当一个实例被创建了,首先会被存储在堆内存年轻代的 Eden 区中。 注意:如果你不能理解这些词汇,我建议你阅读这篇 垃圾回收介绍 ,这篇教程详细地介绍了内存模型、JVM 架构以及这些术语。 Survivor 区(S0 和 阅读全文
posted @ 2016-04-04 23:18 ljdgm 阅读(282) 评论(0) 推荐(0) 编辑
摘要: 堆设置 -Xmx3550m:设置JVM最大堆内存 为3550M。 -Xms3550m:设置JVM初始堆内存 为3550M。此值可以设置与-Xmx相同,以避免每次垃圾回收完成后JVM重新分配内存。 -Xss128k:设置每个线程的栈 大小。JDK5.0以后每个线程栈大小为1M,之前每个线程栈大小为25 阅读全文
posted @ 2016-04-04 22:51 ljdgm 阅读(1941) 评论(1) 推荐(0) 编辑
摘要: 1、概述 本教程将演示如何用Java高效地读取大文件。这篇文章是Baeldung (http://www.baeldung.com/) 上“Java——回归基础”系列教程的一部分。 2、在内存中读取 读取文件行的标准方式是在内存中读取,Guava 和Apache Commons IO都提供了如下所示 阅读全文
posted @ 2016-04-04 22:19 ljdgm 阅读(3278) 评论(0) 推荐(2) 编辑
摘要: 1.查询的模糊匹配 尽量避免在一个复杂查询里面使用 LIKE '%parm1%'—— 红色标识位置的百分号会导致相关列的索引无法使用,最好不要用. 解决办法: 其实只需要对该脚本略做改进,查询速度便会提高近百倍。改进方法如下: a、修改前台程序——把查询条件的供应商名称一栏由原来的文本输入改为下拉列 阅读全文
posted @ 2016-04-04 20:27 ljdgm 阅读(523) 评论(0) 推荐(0) 编辑
摘要: JVM垃圾回收与性能调优总结 JVM调优的几种策略 一、JVM内存模型及垃圾收集算法 1.根据Java虚拟机规范,JVM将内存划分为: New(年轻代) Tenured(年老代) 永久代(Perm) 其中New和Tenured属于堆内存,堆内存会从JVM启动参数(-Xmx:3G)指定的内存中分配,P 阅读全文
posted @ 2016-04-04 18:59 ljdgm 阅读(865) 评论(0) 推荐(1) 编辑
摘要: 最近工作中遇到一个场景,商家在商家后台需要实时的获取到有没有新订单,有的话是几个;这个需求类似与日常中使用QQ或者微信时的新信息提醒一样,只要有新信息就需要提醒;商家基本在PC上使用,各式浏览器都有:如 IE系列(7.0,8.0,9.0及以上),chrome内核,firefox等;功能所属的部署在T 阅读全文
posted @ 2016-03-22 12:57 ljdgm 阅读(635) 评论(0) 推荐(0) 编辑
摘要: 在网上搜到了一篇博客讲的非常好,里面提供的这个类也非常实用: 大家可以用这个代码边看边验证,注意的是,运行这个程序需要通过javaagent注入Instrumentation,具体可以看原博客。我今天主要是总结下手动计算Java对象占用字节数的基本规则,做为基本的技能必须get√,希望能帮到和我一样 阅读全文
posted @ 2016-03-22 12:55 ljdgm 阅读(452) 评论(0) 推荐(0) 编辑
摘要: Java 动态代理机制的出现,使得 Java 开发人员不用手工编写代理类,只要简单地指定一组接口及委托类对象,便能动态地获得代理类。代理类会负责将所有的方法调用分派到委托对象上反射执行,在分派执行的过程中,开发人员还可以按需调整委托类对象及其功能,这是一套非常灵活有弹性的代理框架。通过阅读本文,读者 阅读全文
posted @ 2016-03-21 15:38 ljdgm 阅读(244) 评论(0) 推荐(0) 编辑
摘要: 这篇文章解释了Java 虚拟机(JVM)的内部架构。下图显示了遵守 Java SE 7 规范的典型的 JVM 核心内部组件。 上图显示的组件分两个章节解释。第一章讨论针对每个线程创建的组件,第二章节讨论了线程无关组件。 线程 JVM 系统线程 每个线程相关的 程序计数器 栈 本地栈 栈限制 栈帧 局 阅读全文
posted @ 2016-03-21 15:35 ljdgm 阅读(231) 评论(0) 推荐(0) 编辑
摘要: 写在前面:Java中的所有类,必须被装载到jvm中才能运行,这个装载工作是由jvm中的类装载器完成的,类装载器所做的工作实质是把类文件从硬盘读取到内存中,JVM在加载类的时候,都是通过ClassLoader的loadClass()方法来加载class的,loadClass使用双亲委派模式。 为了更好 阅读全文
posted @ 2016-03-21 15:31 ljdgm 阅读(252) 评论(0) 推荐(0) 编辑
摘要: 本文是异常内容的集大成者,力求全面,深入的异常知识研究与分析。本文由金丝燕网独家撰写,参考众多网上资源,经过内容辨别取舍,文字格式校验等步骤编辑而成,以飨读者。对于本文的内容,建议小白需要多多思考力求掌握,对于老手只需意会温故知新。对于本文的内容,属于基础知识研究范畴,切勿以为读完此文就能将异常知识 阅读全文
posted @ 2016-03-21 15:30 ljdgm 阅读(237) 评论(0) 推荐(0) 编辑
摘要: HashMap的工作原理是近年来常见的Java面试题。几乎每个Java程序员都知道HashMap,都知道哪里要用HashMap,知道Hashtable和HashMap之间的区别,那么为何这道面试题如此特殊呢?是因为这道题考察的深度很深。这题经常出现在高级或中高级面试中。投资银行更喜欢问这个问题,甚至 阅读全文
posted @ 2016-03-21 15:28 ljdgm 阅读(161) 评论(0) 推荐(0) 编辑
摘要: DK1.5引入了新的类型——枚举。在 Java 中它虽然算个“小”功能,却给我的开发带来了“大”方便。用法一:常量在JDK1.5 之前,我们定义常量都是: publicstaticfianl…… .现在好了,有了枚举,可以把相关的常量分组到一个枚举类型里,而且枚举提供了比常量更多的方法。public 阅读全文
posted @ 2016-03-21 15:27 ljdgm 阅读(140) 评论(0) 推荐(0) 编辑
摘要: create table t1(id int, feild int);insert into t1 values(1 , 1);insert into t1 values(1 , 2);insert into t1 values(1 , 3);insert into t1 values(1 , 4) 阅读全文
posted @ 2016-03-21 15:25 ljdgm 阅读(1323) 评论(0) 推荐(0) 编辑
摘要: 有这样的一个问题mysql查询使用mysql中left(right)join筛选条件在on与where查询出的数据是否有差异。 可能只看着两个关键字看不出任何的问题。那我们使用实际的例子来说到底有没有差异。 例如存在两张表结构 表结构1 Sql代码 drop table if EXISTS A; C 阅读全文
posted @ 2016-03-21 15:23 ljdgm 阅读(1882) 评论(0) 推荐(0) 编辑
摘要: 序言数据库的优化方法有很多种,在应用层来说,主要是基于索引的优化。本次秘笈根据实际的工作经验,在研发原来已有的方法的基础上,进行了一些扩充,总结了基于索引的SQL语句优化的降龙十八掌,希望有一天你能用其中一掌来驯服客服业务中横行的‘恶龙’总纲建立必要的索引这次传授的降龙十八掌,总纲只有一句话:建立必 阅读全文
posted @ 2016-03-21 15:21 ljdgm 阅读(12180) 评论(0) 推荐(4) 编辑
摘要: Android里,在不同的线程(假设子线程已经创建了Looper)中创建Handler时,并不需要显式指定Looper,系统能自动找到该线程自己的Looper。不同线程的Looper相互独立,之所以能做到这一点,就是借助ThreadLocal来实现的。下面结合源码来分析ThreadLocal的使用及 阅读全文
posted @ 2016-03-21 15:20 ljdgm 阅读(370) 评论(0) 推荐(0) 编辑
摘要: 通过上面的分析知道通过ThreadLocal保存的值是线程隔离的。其实在Thread对象中,还有一个ThreadLocal.ThreadLocalMap类型的成员变量inheritableThreadLocals。inheritableThreadLocals其实是一个InheritableThre 阅读全文
posted @ 2016-03-21 15:19 ljdgm 阅读(454) 评论(0) 推荐(0) 编辑
摘要: 基本概念 kafka的工作方式和其他MQ基本相同,只是在一些名词命名上有些不同。为了更好的讨论,这里对这些名词做简单解释。通过这些解释应该可以大致了解kafka MQ的工作方式。 Producer (P):就是网kafka发消息的客户端 Consumer (C):从kafka取消息的客户端 Topi 阅读全文
posted @ 2016-03-21 15:14 ljdgm 阅读(459) 评论(0) 推荐(0) 编辑
摘要: 日志是应用软件中不可缺少的部分,Apache的开源项目log4j是一个功能强大的日志组件,提供方便的日志记录。在apache网站:jakarta.apache.org/log4j 可以免费下载到Log4j最新版本的软件包。 1.新建一个JAva工程,导入包log4j-1.2.17.jar,整个工程最 阅读全文
posted @ 2016-03-21 15:13 ljdgm 阅读(258) 评论(0) 推荐(0) 编辑
摘要: Hadoop实现了一个分布式文件系统(Hadoop Distributed File System),简称HDFS。HDFS有高容错性的特点,并且设计用来部署在低廉的(low-cost)硬件上;而且它提供高吞吐量(high throughput)来访问应用程序的数据,适合那些有着超大数据集(larg 阅读全文
posted @ 2016-03-21 15:07 ljdgm 阅读(271) 评论(0) 推荐(0) 编辑
摘要: 一、基础篇 1.1 JVM 1.1.1. Java内存模型,Java内存管理,Java堆和栈,垃圾回收 http://www.jcp.org/en/jsr/detail?id=133http://ifeve.com/jmm-faq/ 1.1.2. 了解JVM各种参数及调优 1.1.3. 学习使用Ja 阅读全文
posted @ 2016-03-21 15:05 ljdgm 阅读(891) 评论(0) 推荐(0) 编辑
摘要: 作为Java程序员来说,最痛苦的事情莫过于可以选择的范围太广,可以读的书太多,往往容易无所适从。我想就我自己读过的技术书籍中挑选出来一些,按照学习的先后顺序,推荐给大家,特别是那些想不断提高自己技术水平的Java程序员们。 一、Java编程入门类 对于没有Java编程经验的程序员要入门,随便读什么入 阅读全文
posted @ 2016-03-21 15:04 ljdgm 阅读(11322) 评论(0) 推荐(0) 编辑