自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

__技术分享__部落格

一个不善于写文章的程序员。A programmer's self-reflection

  • 博客(31)
  • 资源 (6)
  • 收藏
  • 关注

转载 Java内存模型

java并发采用的是共享内存模型,线程之间的通信对程序员来说是透明的,内存可见性问题很容易困扰着java程序员,今天我们就来揭开java内存模型的神秘面纱。在揭开面纱之前,我们需要认识几个基础概念:内存屏障(memory Barriers),指令重排序,happens-before规则,as-if-serial语义。什么是 Memory Barrier(内存屏障)?内存

2017-03-22 15:19:27 340

转载 jvm 总体梳理

转自http://www.importnew.comjvm体系总体分四大块:类的加载机制jvm内存结构GC算法 垃圾回收GC分析 命令调优当然这些知识点在之前的文章中都有详细的介绍,这里只做主干的梳理这里画了一个思维导图,将所有的知识点进行了陈列,因为图比较大可以点击右键下载了放大查看。类的加载机制主要关注点:什么是类的加载类的生命周

2017-03-22 15:10:44 340

转载 《Spring设计思想》AOP设计基本原理

目录(?)[+]0、前言spring 提供了AOP(Aspect Oriented Programming) 的支持, 那么,什么是AOP呢?本文将通过一个另外一个角度来诠释AOP的概念,帮助你更好地理解和使用Spring AOP。读完本文,你将了解到:1.    Java程序运行在JVM中的特征2.    Java程序的执行流【了解AOP、

2017-03-16 18:00:37 356

转载 [Java基础要义] HashMap的设计原理和实现分析

HashMap在Java开发中有着非常重要的角色地位,每一个Java程序员都应该了解HashMap。    本文主要从源码角度来解析HashMap的设计思路,并且详细地阐述HashMap中的几个概念,并深入探讨HashMap的内部结构和实现细节,讨论HashMap的性能问题,并且在文中贯穿着一些关于HashMap常见问题的讨论。     读完本文,你会了解到:   

2017-03-16 17:49:23 243

转载 Java 8系列之重新认识HashMap 前利 ·2016-06-24 11:58

摘要HashMap是Java程序员使用频率最高的用于映射(键值对)处理的数据类型。随着JDK(Java Developmet Kit)版本的更新,JDK1.8对HashMap底层的实现进行了优化,例如引入红黑树的数据结构和扩容的优化等。本文结合JDK1.7和JDK1.8的区别,深入探讨HashMap的结构实现和功能原理。简介Java为数据结构中的映射定义了一个接口j

2017-03-16 16:03:35 426

转载 为什么一般hashtable的桶数会取一个素数

为什么一般hashtable的桶数会取一个素数 设有一个哈希函数H( c ) = c % N;当N取一个合数时,最简单的例子是取2^n,比如说取2^3=8,这时候H( 11100(二进制) ) = H( 28 ) = 4H( 10100(二进制) ) = H( 20 )= 4这时候c的二进制第4位(从右向左数)就”失效”了,也就是说,无论第c的4位取什么值,

2017-03-16 16:03:00 327

转载 《Spring设计思想》AOP实现原理(基于JDK和基于CGLIB)

版权声明: 转自http://blog.csdn.net/luanlouis/article/details/51155821目录(?)[-]前言Spring内部创建代理对象的过程Spring AOP的核心---ProxyFactoryBean基于JDK面向接口的动态代理JdkDynamicAopProxy生成代理对象基于Cglib子类继承方式的动态代理CglibAop

2017-03-16 14:24:22 309

转载 Java动态代理机制详解(JDK 和CGLIB,Javassist,ASM)

class文件简介及加载     Java编译器编译好Java文件之后,产生.class 文件在磁盘中。这种class文件是二进制文件,内容是只有JVM虚拟机能够识别的机器码。JVM虚拟机读取字节码文件,取出二进制数据,加载到内存中,解析.class 文件内的信息,生成对应的 Class对象:      class字节码文件是根据JVM虚拟机规范中规

2017-03-15 23:28:07 223

转载 Java虚拟机原理图解

共10篇博文《Java虚拟机原理图解》5. JVM类加载器机制与类加载过程一、Java语言的跨平台性的含义 Java语言之所以说它是跨平台的、可以在当前绝大部分的操作系统平台下运行,是因为Java语言的运行环境是在Java虚拟机中。 Java虚拟机消除了各个平台之间的差异...2016-01-23 19:17 4169《Java虚拟机原理图解》4.J

2017-03-15 23:00:55 443

转载 java常量池概念

在class文件中,“常量池”是最复杂也最值得关注的内容。  Java是一种动态连接的语言,常量池的作用非常重要,常量池中除了包含代码中所定义的各种基本类型(如int、long等等)和对象型(如String及数组)的常量值还,还包含一些以文本形式出现的符号引用,比如:  类和接口的全限定名;  字段的名称和描述符;  方法和名称和描述符。  在C语言中,如果

2017-03-15 18:38:16 300

转载 《Java虚拟机原理图解》4.JVM机器指令集

0. 前言     Java虚拟机和真实的计算机一样,运行的都是二进制的机器码;而我们将.java 源代码编译成.class 文件,class文件便是Java虚拟机能够认识的二进制机器码,Java能够识别class文件中的信息和机器指令,进而执行这些机器指令。那么,Java虚拟机是如何运行这些二进制的机器码的呢? 本文将通过一个非常简单的例子,带你感受一下Java虚拟机运行机器码的过程

2017-03-15 11:30:23 501

原创 [Java基础要义]HashMap、LinkedHashMap元素遍历机制探讨

Map作为键值对Entry的的容器,对其内部 键值对Entry 的遍历总归是要有一个顺序的。      本文重点讨论HashMap及其子类LinkedHashMap的遍历机制,总结出两者的特点和适用情况。 CSDN-2014博客之星投票啦CSDN-2014博客之星   评选开始啦,如果您觉得我的文章对您有所帮助,请您点击左边栏的图片投我一票,您的支持是我分享知识的强

2017-03-14 23:20:18 375

转载 [Java基础要义] HashMap的设计原理和实现分析

HashMap在Java开发中有着非常重要的角色地位,每一个Java程序员都应该了解HashMap。    本文主要从源码角度来解析HashMap的设计思路,并且详细地阐述HashMap中的几个概念,并深入探讨HashMap的内部结构和实现细节,讨论HashMap的性能问题,并且在文中贯穿着一些关于HashMap常见问题的讨论。     读完本文,你会了解到:   

2017-03-14 23:16:22 221

转载 如何细粒度地控制你的MyBatis二级缓存(mybatis-enhanced-cache插件实现)

前几天网友chanfish 给我抛出了一个问题,笼统地讲就是如何能细粒度地控制MyBatis的二级缓存问题,酝酿了几天,觉得可以写个插件来实现这个这一功能。本文就是从问题入手,一步步分析现存的MyBatis的二级缓存的不足之处,探讨一点可以改进的地方,并且对不足之处开发一个插件进行弥补。本文如下组织结构:一个关于MyBatis的二级缓存的实际问题当前MyBatis二级缓

2017-03-14 23:16:00 595

转载 [Java基础要义] Java语言中Object对象的hashCode()取值的底层算法是怎样实现的?

Java语言中,Object对象有个特殊的方法:hashcode(), hashcode()表示的是JVM虚拟机为这个Object对象分配的一个int类型的数值,JVM会使用对象的hashcode值来提高对HashMap、Hashtable哈希表存取对象的使用效率。      关于Object对象的hashCode()返回值,网上对它就是一个简单的描述:“JVM根据某种策略生成的”,那

2017-03-14 23:10:15 1768

转载 《深入理解mybatis原理》 MyBatis缓存机制的设计与实现

本文主要讲解MyBatis非常棒的缓存机制的设计原理,给读者们介绍一下MyBatis的缓存机制的轮廓,然后会分别针对缓存机制中的方方面面展开讨论。MyBatis将数据缓存设计成两级结构,分为一级缓存、二级缓存:       一级缓存是Session会话级别的缓存,位于表示一次数据库会话的SqlSession对象之中,又被称之为本地缓存。一级缓存是MyBatis内部实现的一个特性

2017-03-14 23:08:11 191

转载 《深入理解mybatis原理》 MyBatis的二级缓存的设计原理

MyBatis的二级缓存是Application级别的缓存,它可以提高对数据库查询的效率,以提高应用的性能。本文将全面分析MyBatis的二级缓存的设计原理。1.MyBatis的缓存机制整体设计以及二级缓存的工作模式          如上图所示,当开一个会话时,一个SqlSession对象会使用一个Executor对象来完成会话操作,MyBatis的二级缓存机制的关键

2017-03-14 23:07:01 251

转载 《深入理解mybatis原理》 MyBatis的一级缓存实现详解 及使用注意事项

0.写在前面        MyBatis是一个简单,小巧但功能非常强大的ORM开源框架,它的功能强大也体现在它的缓存机制上。MyBatis提供了一级缓存、二级缓存 这两个缓存机制,能够很好地处理和维护缓存,以提高系统的性能。本文的目的则是向读者详细介绍MyBatis的一级缓存,深入源码,解析MyBatis一级缓存的实现原理,并且针对一级缓存的特点提出了在实际使用过程中应该注意的事项。

2017-03-14 23:01:12 230

转载 全面分析 Spring 的编程式事务管理及声明式事务管理

关于本教程本教程将深切讲授 Spring 庞杂而丁壮夜的事务治理功用,包括编程式事务和声明式事务。经由进程对本教程的进修,您将可以理解 Spring 事务治理的实质,并无邪运用之。先决前提本教程假定您已掌控了 Java 根蒂根抵常识,并对 Spring 有一定意见。您还需求具有根抵的事务治理的常识,好比:事务的界说,隔离级其他概念,等等。本文将直接行使这些概念而不做具体正文

2017-03-14 18:48:26 324

转载 每天进步一点点——五分钟理解一致性哈希算法(consistent hashing)

转载请说明出处:http://blog.csdn.net/cywosp/article/details/23397179    一致性哈希算法在1997年由麻省理工学院提出的一种分布式哈希(DHT)实现算法,设计目标是为了解决因特网中的热点(Hot spot)问题,初衷和CARP十分类似。一致性哈希修正了CARP使用的简 单哈希算法带来的问题,使得分布式哈希(DHT)可以在P2P环境中真正

2017-03-14 14:24:58 213

转载 编程中的命名设计那点事

在我开始设计系统的时候,我会花去很多时间去设计命名,因为好的命名和好的设计是分不开的。In the beginning was the Word, and the Word was with God, and the Word was God太初有道。道与神同在,道就是神。 (约翰福音第一章,第一节)在设计过程中给类,方法和函数好的命名会带来好的设计,虽然这不是一定成立,但

2017-03-14 13:50:17 221

转载 如何读懂并写出装逼的函数式代码

今天在微博上看到了 有人分享了下面的这段函数式代码,我把代码贴到下面,不过我对原来的代码略有改动,对于函数式的版本,咋一看,的确令人非常费解,仔细看一下,你可能就晕掉了,似乎完全就是天书,看上去非常装逼,哈哈。不过,我感觉解析那段函数式的代码可能会一个比较有趣过程,而且,我以前写过一篇《函数式编程》的入门式的文章,正好可以用这个例子,再升华一下原来的那篇文章,顺便可以向大家更好的介绍很多基础知识,

2017-03-14 11:45:14 241

转载 非阻塞算法思想在关系数据库应用程序开发中的使用

非阻塞算法的关键思想就是CAS,CAS是compare and set的缩写,也常被称为lock-free或者wait-free,通过把compare和set两个操作原子化,使得不需要使用锁,但是能够解决并发中的资源争用问题。由于CAS常常是一个回退算法+死循环,所以又被称为spin-lock。由于CAS没有使用锁,线程持续执行,又称为非阻塞算法(non-blocking)。术语不统一,但是都差不

2017-03-14 09:57:49 181

转载 多版本并发控制(MVCC)在分布式系统中的应用

问题最近项目中遇到了一个分布式系统的并发控制问题。该问题可以抽象为:某分布式系统由一个数据中心D和若干业务处理中心L1,L2 … Ln组成;D本质上是一个key-value存储,它对外提供基于HTTP协议的CRUD操作接口。L的业务逻辑可以抽象为下面3个步骤:read: 根据keySet {k1, … kn}从D获取keyValueSet {k1:v1, … kn:vn}do: 根

2017-03-14 09:41:28 254

转载 性能调优攻略

关于性能优化这是一个比较大的话题,在《由12306.cn谈谈网站性能技术》中我从业务和设计上说过一些可用的技术以及那些技术的优缺点,今天,想从一些技术细节上谈谈性能优化,主要是一些代码级别的技术和方法。本文的东西是我的一些经验和知识,并不一定全对,希望大家指正和补充。在开始这篇文章之前,大家可以移步去看一下酷壳以前发表的《代码优化概要》,这篇文章基本上告诉你——要进行优化,先得找到性能瓶颈

2017-03-13 19:37:21 178

转载 由12306.CN谈谈网站性能技术

转自http://coolshell.cn12306.cn网站挂了,被全国人民骂了。我这两天也在思考这个事,我想以这个事来粗略地和大家讨论一下网站性能的问题。因为仓促,而且完全基于本人有限的经验和了解,所以,如果有什么问题还请大家一起讨论和指正。(这又是一篇长文,只讨论性能问题,不讨论那些UI,用户体验,或是是否把支付和购票下单环节分开的功能性的东西)业务任何技术都离不开业

2017-03-13 18:17:23 380

转载 IOC/DIP其实是一种管理思想

关于IoC的的概念提出来已经很多年了,其被用于一种面象对像的设计。我在这里再简单的回顾一下这个概念。我先谈技术,再说管理。话说,我们有一个开关要控制一个灯的开和关这两个动作,最常见也是最没有技术含量的实现会是这个样子:然后,有一天,我们发现需要对灯泡扩展一下,于是我们做了个抽象类:但是,如果有一天,我们发现这个开关可能还要控制别的不单单是灯泡的东西,我们就发

2017-03-13 14:48:25 658

转载 缓存更新的套路

看到好些人在写更新缓存数据代码时,先删除缓存,然后再更新数据库,而后续的操作会把数据再装载的缓存中。然而,这个是逻辑是错误的。试想,两个并发操作,一个是更新操作,另一个是查询操作,更新操作删除缓存后,查询操作没有命中缓存,先把老数据读出来后放到缓存中,然后更新操作更新了数据库。于是,在缓存中的数据还是老的数据,导致缓存中的数据是脏的,而且还一直这样脏下去了。我不知道为什么这么多人用的都是这

2017-03-13 14:13:48 199

转载 分布式系统的事务处理

当我们在生产线上用一台服务器来提供数据服务的时候,我会遇到如下的两个问题:1)一台服务器的性能不足以提供足够的能力服务于所有的网络请求。2)我们总是害怕我们的这台服务器停机,造成服务不可用或是数据丢失。于是我们不得不对我们的服务器进行扩展,加入更多的机器来分担性能上的问题,以及来解决单点故障问题。 通常,我们会通过两种手段来扩展我们的数据服务:1)数据分区:就是把数

2017-03-13 12:23:25 145

转载 B-tree & B+tree & B*Tree 结构浅析

转自http://www.cnblogs.com/coder2012/p/3330311.htmlhttp://blog.sina.com.cn/s/blog_6776884e0100ohvr.html这篇在大体上比较清晰简单的描述了概念,比较通俗易懂B-tree B-tree,B是balance,一般用于数据库的索引。使用B-tree结构可以显著减少定位记录时所经

2017-03-01 18:57:03 302

转载 Java NIO 系列教程

Java NIO(New IO)是从Java 1.4版本开始引入的一个新的IO API,可以替代标准的Java IO API。本系列教程将有助于你学习和理解Java NIO。感谢并发编程网的翻译和投递。 (关注ITeye官微,随时随地查看最新开发资讯、技术文章。) Java NIO提供了与标准IO不同的IO工作方式: Channels and Buffers(通道和缓冲

2017-03-01 15:03:57 138

webFlow-springmvc-security.rar

webFlow-springmvc-security.rar

2013-05-23

rmi_java项目实例

以JAVA项目实现了RMI的远程调用,项目可以跑起来,有兴趣的可以下载一下,下载后,可以联系本人,返还积分.

2013-05-21

CAS实现单点登录经典完整教程

CAS实现单点登录(SSO)经典完整教程,教你从无到有的搭建CAS环境

2013-05-15

maven相关工具介绍

包含如下文件:hudson-V1.doc maven-definitive-guide_zh.pdf Maven技术分享.ppt 全面介绍Maven

2013-05-07

Oracle数据库驱动 ojdbc14.jar

ojdbc14-10.2.0.3.0.jar ORACLE数据库连接驱动[抵制垃圾文件]

2013-05-07

顶级IT项目管理

通过阅读本文档,使你更加深刻理解IT项目管理内容以及用工作中常用的工具等,绝非垃圾文档 [抵制垃圾文件]

2013-05-07

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除