自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(45)
  • 收藏
  • 关注

原创 读《一万小时天才理论》有感

极少概率一出来就是天才的,即使有也是比普通人多了一些髓鞘质,假如他不继续有效的练习以增加髓鞘质的话,后面同样与普通人无异,如古代的“方仲永”。我们所认知的天才基本都是通过后天的培养所造就的,而造就的方法无一不是如下图所示:伯乐:告诉我们遇到一个好的伯乐的重要性。好的伯乐能够找到学生现有能力的最佳位置,发出正确的信号,帮助学生达到真正的目标。(方法错了怎么练都是事倍功半)激情:我认为...

2019-02-13 09:58:31 1117

原创 使用Vmware station12搭建虚拟机服务器集群

顾名思义使用Vmware station12搭建集群,首先就是要安装好Vmware station12,由于我安装Vmware已经很久了,所以在这里针对它的安装就不说了,自行百度去,本文从安装虚拟机开始。安装完Vmware station12,大致是这种界面:一、安装虚拟机点击创建新的虚拟机,出现这两种模式自行选择,我选的是自定义,然后按照提示下一步就是了,到了这里就要说下...

2018-09-18 18:16:23 6857 1

原创 极简在线安装Redis

安装下载,解压缩和编译Redis:$ wget http://download.redis.io/releases/redis-4.0.11.tar.gz$ tar xzf redis-4.0.11.tar.gz$ cd redis-4.0.11$ make这期间如果提示要下gcc编译器或者wget工具什么的,按照提示自行百度下载对应的软件就是了。 现在编译的二进制文件(r...

2018-09-17 10:28:46 313

转载 数据库优化-水平拆分 垂直拆分

参考:https://blog.csdn.net/iloveyin/article/details/39996831https://blog.csdn.net/zljjava/article/details/38422387

2018-09-16 22:55:21 191

原创 Spring源码分析之一:spring容器启动以及获取Bean实例所做的事

  一般手动启动spring容器和获取Bean实例我们会写如下代码:BeanFactory bf = new XmlBeanFactory(new ClassPathResource("testBean.xml",getClass()));MyTestBean bean = (MyTestBean) bf.getBean("myTestBean");或者是Application...

2018-09-16 21:03:53 1567

转载 获取Executor提交的并发执行的任务返回结果的两种方式/ExecutorCompletionService使用

当我们通过Executor提交一组并发执行的任务,并且希望在每一个任务完成后能立即得到结果,有两种方式可以采取: 方式一:通过一个list来保存一组future,然后在循环中轮训这组future,直到每个future都已完成。如果我...

2018-09-08 11:33:55 682

转载 MyBatis事务隔离级别

版权声明:欢迎转载 https://blog.csdn.net/qq924862077/article/details/52599961 <...

2018-09-08 10:52:50 2129

原创 Web服务器一些机制

1 通信协议1.1 HTTP/HTTPS         HTTP是HyperTextTransfer Protocol(超文本传输协议)的缩写。HTTP协议是用于从Web服务器传输超文本到本地浏览器的协议,它能使浏览器更加高效,使网络传输减少,保证计算机正确快速地传输超文本文档。          HTTP是一个应用层协议,它由请求和响应组成,是一个标准的B/S模型。同时,它也是一个...

2018-09-08 08:45:22 281

转载 java类放入集合为什么重写equals和hashcode实现serializable(转)

在Java语言中,equals()和hashCode()两个函数的使用是紧密配合的,你要是自己设计其中一个,就要设计另外一个。在多数情况下,这两个函数是不用考虑的,直接使用它们的默认设计就可以了。但是在一些情况下,这两个函数最好是自己设计,才能确保整个程序的正常运行。最常见的是当一个对象被加入集合对象(collectionobject)时,这两个函数必须自己设计。更 细化的定义是:如果你想将一...

2018-09-01 16:58:02 577

原创 Eclipse如何debug调试jdk源码,并显示局部变量值

Eclipse调试jdk源码,参考:http://blog.csdn.net/xuefeng0707/article/details/8738869显示局部变量值,参考:http://blog.csdn.net/leehsiao/article/details/50562871其实,我在调试jdk源码时出现了上述参考都解决不了的几个其他奇葩问题,我总结原因主要是两个:1.jdk...

2018-08-29 08:56:36 1191

原创 大型网站技术架构核心原理(一):概念恶补篇

一、大型网站的特点与传统企业应用系统相比,大型互联网应用系统有以下特点。高并发,大流量:需要面对高并发用户,大流量访问。 高可用:系统7*24小时不间断服务。 海量数据:需要存储、管理海量数据,需要使用大量服务器。 用户分布广泛,网络情况复杂:许多大型互联网都是为全球用户提供服务的,用户分布范围广,各地网络情况千差万别。 安全环境恶劣:由于互联网的开放性,使得互联网网站更容易受到攻...

2018-08-24 10:54:54 1515

原创 关于对象序列化

本文主要讲:1.引言-为什么要使用对象序列化以及序列化的好处2.写代码说明怎么序列化和反序列化3.序列化的控制(定义以及Transient关键字)4.对象序列化的的限制一、引言       当你创建对象时,只要你需要,它就会一直存在,但是在程序终止时,无论如何它都不会继续存在。尽管这么做肯定是有意义的的,但是仍旧存在某些情况,如果对象能够在程序不与行的情况下仍能存在并保存其...

2018-08-22 12:08:04 235

转载 MyBatis 延迟加载,一级缓存,二级缓存设置

什么是延迟加载  resultMap中的association和collection标签具有延迟加载的功能。延迟加载的意思是说,在关联查询时,利用延迟加载,先加载主信息。使用关联信息时再去加载关联信息。设置延迟加载需要在SqlMapConfig.xml文件中,在<settings>标签中设置下延迟加载。lazyLoadingEnabled、aggressiveLaz...

2018-08-21 10:26:54 160

转载 几种分页方式分析

一.逻辑分页 1.逻辑分页的第一种方式,利用ResultSet的滚动分页。步骤如下: a.根据条件sql查询数据库。 b.得到ResultSet的结果集,由于ResultSet带有游标,因此可以使用其next()方法来指向下一条记录。 c.利用next()方法,得到分页所需的结果集。 这种分页方式依靠的是对结果集的算法来分页,因此通常被称为“逻辑分页”。 代码如下:pack...

2018-08-20 11:07:01 487

转载 MyBatis原理分析之六:RowBounds分页原理

Mybatis可以通过传递RowBounds对象,来进行数据库数据的分页操作,然而遗憾的是,该分页操作是对ResultSet结果集进行分页,也就是人们常说的逻辑分页,而非物理分页。 RowBo...

2018-08-20 10:59:38 3772 1

原创 MyBatis原理分析之五:一次SQL查询的源码分析

前面我们讲到Mybatis加载相关的配置文件进行初始化,这回我们讲一下一次SQL查询怎么进行的。准备工作Mybatis完成一次SQL查询需要使用的代码如下: String resource = "mybatis.cfg.xml"; Reader reader = Resources.getResourceAsReader(resource); ...

2018-08-20 10:31:17 237

转载 MyBatis原理分析之四:自动映射器Mapper的底层实现原理

简单使用这是一个简单的Mybatis保存对象的例子@Testpublic void testSave() throws Exception { //创建sessionFactory对象 SqlSessionFactory sf = new SqlSessionFactoryBuilder(). build(Resources.getReso...

2018-08-19 22:42:40 2808 1

原创 MyBatis原理分析之三:初始化(配置文件读取与解析)

Mybatis的初始化过程,就是组装Configuration的过程,主要分为系统环境参数初始化和Mapper映射初始化,其中Mapper映射初始化尤为重要。先看一个配置文件mybatis-config.xml,里面的内容大致为:<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE configuration PUBLIC "...

2018-08-19 16:00:50 434

转载 MyBatis原理分析之二:从JDBC到Mybatis的过程

1.引言本文主要讲解JDBC怎么演变到Mybatis的渐变过程,重点讲解了为什么要将JDBC封装成Mybaits这样一个持久层框架。再而论述Mybatis作为一个数据持久层框架本身有待改进之处。  2.JDBC实现查询分析我们先看看我们最熟悉也是最基础的通过JDBC查询数据库数据,一般需要以下七个步骤:(1) &a

2018-08-19 11:30:43 198

转载 MyBatis原理分析之一:框架整体设计

 1.引言本文主要讲解Mybatis的整体程序设计,理清楚框架的主要脉络。后面文章我们再详细讲解各个组件。 2.整体设计2.1 总体流程(1)加载配置并初始化      触发条件:加载配置文件      配置来源于两个地方,一处是配置文件,一处是Java代码的注解,

2018-08-19 11:21:10 312

转载 MySql数据库连接池专题

一、什么是数据库连接池?官方:数据库连接池(Connection pooling)是程序启动时建立足够的数据库连接,并将这些连接组成一个连接池,由程序动态地对池中的连接进行申请,使用,释放。个人理解:创建数据库连接是一个很耗时的操作,也容易对数据库造成安全隐患。所以,在程序初始化的时候,集中创建多个数据库连接,并把他们集中...

2018-08-18 16:36:12 193

转载 PreparedStatement与Statement的区别

本人的几点浅见,各位大大不喜勿喷。先说下这俩到底是干啥的吧。其实这俩干的活儿都一样,就是创建了一个对象然后去通过对象调用executeQuery方法来执行sql语句。说是CreateStatement和PrepareStatement的区别,但其实说的就是Statement和PrepareStatement的区别,相信大家在网上已经看到过不少这方面的资料和博客,我在此处提几点,大家看到过的,...

2018-08-18 10:42:52 157

转载 什么叫持久层框架

什么是持久层?持久是相对于瞬时来说的,* 持久层,可以理解成数据 保存在 数据库或者 硬盘一类可以保存很长时间的设备里面,不像放在内存中那样断电就消失了,也就是把数据存在持久化设备上* ,你想一下 内存中的数据 断电就没有了,硬盘的数据 是否会像内存中的数据一样断电消失么?为什么要使用持久化框架?企业应用中* 数据很重要(各种订单数据、客户数据、库存数据之类的),比应用程序本身更重要,...

2018-08-14 15:18:20 5496

原创 记录蚂蚁金服第一轮面试

         之前说好跟蚂蚁金服的人沟通好了,说昨天下午7点钟进行第一轮电话面试,对于这个面试心里还是比较忐忑的,毕竟毕业四年多,这还是第二次面试了,蚂蚁金服的人还是比较守时的,7点多2分就给我打电话了,整个面试过程自我感觉还是可以的,问的大部分技术问题都答上来了,面试官能感觉出来比较和善,呵呵,没想到很好的词了,面试过程总共大概半个多小时吧,总结一下昨天的面试流程。 1.自我介绍一下...

2018-08-10 11:49:37 2237

转载 TCP协议中的三次握手和四次挥手(图解)

TCP协议中的三次握手和四次挥手(图解) <div class="article-info-box"> &l

2018-08-09 10:51:51 141

原创 看完此文,必须明白一致性Hash算法

   一致性Hash算法在1997年由麻省理工学院提出的一种分布式哈希(DHT)实现算法,设计目标是为了解决因特网中的热点(Hot Spot)问题,初衷和CARP十分相似。一致性Hash修正了CARP使用的简单哈希算法带来的问题,使得分布式哈希(DHT)可以在P2P环境中真正得到应用。   一致性Hash算法提出了在动态变化的Cache环境中,判定哈希算法好坏的四个定义:1、平衡性(Bal...

2018-08-06 11:47:06 27880 6

原创 浅谈CAS机制

先来看个实例:启动两个线程,每个线程中让变量countNum循环累加100次。public class TestCas { private static int countNum = 0;// private volatile static AtomicInteger countNum = new AtomicInteger(); public static void main(S...

2018-08-03 11:07:37 337

转载 负数的二进制表示方法

今天在看base64编码转换时,既然对负数的二进制表示有些遗忘,在网上找了一下资料,贴出来已备在此遗忘:假设有一个 int 类型的数,值为5,那么,我们知道它在计算机中表示为:00000000 00000000 00000000 000001015转换成二制是101,不过int类型的数占用4字节(32位),所以前面填了一堆0。现在想知道,-5在计算机中如何表示? 在计算机中,负数以其正...

2018-08-01 12:47:47 1542

原创 JDK1.8中HashMap的实现原理及源码分析

一、概要             在JDK1.8之前,HashMap采用桶+链表实现,本质就是采用数组+单向链表组合型的数据结构。它之所以有相当快的查询速度主要是因为它是通过计算散列码来决定存储的位置。HashMap通过key的hashCode来计算hash值,不同的hash值就存在数组中不同的位置,当多个元素的hash值相同时(所谓hash冲突),就采用链表将它们串联起来(链表解决冲突),放...

2018-07-31 12:07:49 751

原创 JDK1.8中LinkedList的实现原理及源码分析

一、概述           LinkedList底层是基于双向链表(双向链表的特点,可以看下我的另外一篇博文:https://blog.csdn.net/cb_lcl/article/details/81217972),链表在内存中不是连续的,而是通过引用来关联所有的元素,所以链表的优点在于添加和删除元素比较快,因为只是移动指针,并且不需要判断是否需要扩容,缺点是查询和遍历效率比较低。二...

2018-07-26 17:49:16 1102

原创 图解单向链表、双向链表

背景:之前对单向链表、双向链表之间的结构一直理解的有些混乱,然后就各种百度、google查资料,最后在知乎里看到一篇专栏,一看里面的图就明白是咋回事了。    ...

2018-07-26 12:26:38 3675 1

原创 JDK1.8中ArrayList的实现原理及源码分析

一、概述             ArrayList是Java开发中使用比较频繁的一个类,通过对源码的解读,可以了解ArrayList的内部结构以及实现方法,清楚它的优缺点,以便我们在编程时灵活运用。二、源码分析2.1 类结构 JDK1.8源码中的ArrayList类结构定义如下:public class ArrayList<E> extends Abstract...

2018-07-25 17:47:15 1579

原创 Maven Web项目使用Cargo实现自动化部署

下面的案例,基于Tomcat7,maven 3.3.9,假设项目名称是WebProject在pom.xml中配置Cargo相关信息一、部署到本地Web容器1、使用standalone模式在pom.xml配置下面代码:<build> <finalName>WebProject</finalName>build> &lt...

2018-07-25 10:43:54 574 1

原创 Java虚拟机垃圾收集器

一、概述1.1 为什么要了解垃圾收集器          目前内存的动态分配与内存回收技术已经相当成熟,一起看起来都进入“自动化”时代,那为什么还要去了解GC和内存分配呢,答案很简单:当需要排查各种内存溢出、内存泄露问题时,当垃圾收集成为系统达到更高并发量的瓶颈时,我们就需要要对这些“自动化”技术实施必要的监控和调节。1.2 垃圾收集器主要关注哪部分内存          之前的文...

2018-07-23 10:07:36 361

原创 虚拟机字节码执行引擎

一、概述  执行引擎是Java虚拟机最核心的组成部分之一。“虚拟机”是一个相对于“物理机”的概念,这两种机器都有代码执行能力,区别是:物理机的执行引擎是直接建立在处理器、硬件、指令集和操作系统层面上的。虚拟机的执行引擎是由自己实现的,因此可以自行定制指令集与执行引擎的结构体系,并且能够执行那些不被硬件直接支持的指令集格式。  在Java虚拟机规范中指定了虚拟机字节码执行引擎的概念模...

2018-07-21 18:02:10 142

原创 Java虚拟机类加载机制

一、概述  虚拟机把描述类的数据从Class文件(Class文件中除了有类的描述信息外,还有常量池)加载到内存,并对数据进行校验、转换解析和初始化,最终形成可以被虚拟机直接使用的Java类型,这就是虚拟机的类加载机制。注:这里所说的“Class文件”应当是一串二进制的字节流。二、类加载的时机  类从被加载到虚拟机内存中开始,到卸载出内存为止,它的整个生命周期包括:加载(Loadin...

2018-07-18 20:49:16 217

原创 解密Java虚拟机对象创建

* 本文讨论的对象限于普通Java对象,不包括数组和Class对象等一、对象的创建  虚拟机遇到一条new指令时,首先将去检查这个指令的参数是否能在常量池中定位到一个类的符号引用,并且检查这个符号引用代表的类是否已经被加载、解析、初始化过。如果没有,那必须先执行相应的类加载过程。  在类加载检查通过后,虚拟机会为新生对象分配内存,对象所需内存的大小在类加载完成后便可完全确定。为对象...

2018-07-17 18:40:26 329

原创 Java虚拟机内存模型

1. 概述    在说Java虚拟机内存模型之前,先了解一下物理计算机中的并发问题,物理机遇到的并发问题与虚拟机中的情况有不少相似之处,物理机对并发的处理方案对于虚拟机的实现也有相当大的参考意义。    由于计算机的存储设备与处理器的运算速度有几个数量级的差距,所以现代计算机系统不得不加入一层读写速度尽可能接近处理器运算速度的高速缓存(Cache)来作为内存与处理器之间的缓冲:将运算需要使...

2018-07-16 18:36:29 206 1

原创 详解Java虚拟机内存各个区域

1. 概述   对于java程序员来说,不必手动写代码去管理内存,因为虚拟机的自动内存管理机制会帮我们做,但是一旦出现内存泄漏和溢出方面的问题,如果不了解虚拟机是怎样使用内存的话,那么排查错误将会变得困难。 2. 运行时数据区域   Java虚拟机在执行Java程序的过程中会把它所管理的内存划分为若干个不同的数据区域。这些区域都有各自的用途,以及创建和销毁时间,有的随虚拟机启动而存...

2018-07-13 19:09:36 1500

原创 单例模式之饿汉式和懒汉式详解

一、何为单例模式、饿汉式、懒汉式单例模式是设计模式的一种,解决了一个类在内存中只存在一个对象。单例模式有以下特点:  1、单例类只能有一个实例。  2、单例类必须自己创建自己的实例,因为构造方法是私有的,无法在外部被实例化  3、单例类必须给所有其他对象提供这一实例,也就是说要把getInstance这个方法变成公有饿汉式:不管你用的用不上,一开始就建立这个单例对象懒汉式:是延迟化加载,在你真正用...

2018-07-05 16:24:49 201

空空如也

空空如也

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

TA关注的人

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