- 博客(117)
- 资源 (6)
- 收藏
- 关注

转载 六、从Undo,Redo谈命令模式
一般的应用软件中,通常会提供Redo和Undo的操作,比如Paint.NET中的动作面板,Word中的撤销重做,一般我们按Ctrl-Z即可回退到上次操作。 要实现上面的这一功能,最直观的想法就是,我们需要把执行的命令以及相应的参数记录下来,一个命令或者动作,我们可以想象成一个对象,将这些的命令以对象的方式放到一个Stack里面,然后Undo的时候,Pop出来,然后执行该命令即可返回
2017-02-04 17:07:02
567

转载 三、 平衡查找树之红黑树
前面一篇文章介绍了2-3查找树,可以看到,2-3查找树能保证在插入元素之后能保持树的平衡状态,最坏情况下即所有的子节点都是2-node,树的高度为lgN,从而保证了最坏情况下的时间复杂度。但是2-3树实现起来比较复杂,本文介绍一种简单实现2-3树的数据结构,即红黑树(Red-Black Tree)定义红黑树的主要是像是对2-3查找树进行编码,尤其是对2-3查找树中的3-node
2017-02-04 16:44:16
292

转载 二、平衡查找树之2-3树
前面介绍了二叉查找树(Binary Search Tree),他对于大多数情况下的查找和插入在效率上来说是没有问题的,但是他在最差的情况下效率比较低。本文及后面文章介绍的平衡查找树的数据结构能够保证在最差的情况下也能达到lgN的效率,要实现这一目标我们需要保证树在插入完成之后始终保持平衡状态,这就是平衡查找树(Balanced Search Tree)。在一棵具有N 个节点的树中,我们希望该树
2017-02-04 16:43:12
461

转载 最简单例子图解JVM内存分配和回收
最简单例子图解JVM内存分配和回收原文链接:最简单例子图解JVM内存分配和回收一、简介JVM采用分代垃圾回收。在JVM的内存空间中把堆空间分为年老代和年轻代。将大量(据说是90%以上)创建了没多久就会消亡的对象存储在年轻代,而年老代中存放生命周期长久的实例对象。年轻代中又被分为Eden区(圣经中的伊甸园)、和两个Survivor区。新的对象分配是首先放在Eden区,Surv
2017-01-06 18:57:22
526

转载 第十四篇 浅谈千万级PV/IP规模高性能高并发网站架构
说明:此篇文章转自老男孩 文章架构简图: 高并发访问的核心原则其实就一句话“把所有的用户访问请求都尽量往前推”。如果把来访用户比作来犯的"敌人",我们一定要把他们挡在800里地以外,即不能让他们的请求一下打到我们的指挥部(指挥部就是数据库及分布式存储)。如:能缓存在用户电脑本地的,就不要让他去访问CDN。 能缓存CDN服务器上的,就不要让CDN去访问源(静态服务器)了
2015-03-20 10:38:16
753
原创 Docker学习(二)Centos7环境安装Docker
Docker学习(二)Centos7环境安装Docker前言windows10 64位专业版本才可以使用dockerCentos安装可以参考 ,基于安装完成的Centos进行今天的docker安装* Docker学习(一)环境准备安装centos7环境准备安装docker持久化包和yum工具包- yum-utils 简化yum安装的工具包,后面会用到相关命令修改镜像加...
2020-01-22 10:56:01
901
原创 Docker学习(六)Dockerfile构建自定义镜像
Docker学习(六)Dockerfile构建自定义镜像![此处输入图片的描述][1]前言通过前面一篇文章可以知道怎么去使用一个镜像搭建服务,但是,如何构造自己的一个镜像呢,docker提供了dockerfile可以让我们自己构造一个属于自己的镜像什么是dockerfile是一个包含用于组合镜像的命令的文本文档Docker通过读取Dockerfile中的指令按步自动生成镜像实战-打包...
2020-01-22 10:54:53
1047
原创 Docker学习(五) Dockerfile基础命令
Docker学习(五) Dockerfile基础命令![此处输入图片的描述][1]学习Dockerfile,需要对它的基础命令进行了解FROM - 基于基准镜像尽量使用官方提供的基准镜像[x] FROM tomcat:8.5.50-jdk8-openjdk #制作基准镜像(基于tomcat:8.5.50-jdk8-openjdk)[x] FROM centos #制作基准镜像...
2020-01-22 10:53:12
968
原创 Docker学习(四)Docker搭建Tomcat
Docker学习(四)Docker搭建Tomcat标签(空格分隔): docker tomcat![此处输入图片的描述][1]前言涉及到的命令,可以参考上一篇Docker学习(三)认识Docker和常用命令可以参考[docker官方网站][2]业务场景公司采购了一台新的硬件服务器,领导说,BK这台服务器用tomcat搭建一台web服务器吧,这个任务看起来简单,但是很繁琐安装lin...
2020-01-22 10:52:41
1006
原创 Docker学习(八)容器间单向通信
Docker学习(八)容器间单向通信前言在之前的文章中介绍的内容都是容器镜像和容器运行,没有涉及到多个容器之前通信,如果是多个容器之间需要互相调用,如何通信呢?docker维护着每个容器的元信息,可以通过IP通信,但是在docker环境中每个容器重启之后,容器的虚拟IP都会变动,这样的情况下我们该如何处理? 我们带着这两个疑问看一下今天的内容场景如果我们部署了一个tomcat应用...
2020-01-22 10:29:30
1023
原创 Docker学习(七)实战 - 构建REDIS镜像
Docker学习(七)实战 - 构建REDIS镜像![此处输入图片的描述][1]前言官网已提供了Redis的基础镜像,在生产环境尽量使用官网提供的基础镜像,这篇文章主要是为了综合使用一下Dockerfile相关命令,让我们理解更加深入一些实战前期准备准备Redis源文件包配置文件cd /usr/local/dockermkdir docker-rediscd docke...
2020-01-22 10:28:08
958
原创 Docker学习(十二)中遇到的一些问题汇总
Docker学习(十二)中遇到的一些问题汇总标签(空格分隔): dockerdocker: Error response from daemon: Conflict. The container name "/myubuntu" is already in usedocker container lsdocker container rm 容器名docker rm $(docker p...
2020-01-21 15:05:32
946
原创 Docker学习(十一)Docker系列结束-新的开始K8S
Docker学习(十一)Docker系列结束-新的开始K8S标签(空格分隔): docke k8s![此处输入图片的描述][1]Docker系列结束上一篇讲到使用docker官方提供的容器编排工具docker-compose,但是docker-compose强调的是单机机进行容器编排,使用起来比较受限,对于一些大公司,应用不是部署在一台机器上的,在这种情况下,Docker-compose...
2020-01-21 14:57:19
867
原创 Docker学习(十)Docker容器编排 Docker-compose
Docker学习(十)Docker容器编排 Docker-compose标签(空格分隔): docker![此处输入图片的描述][1]容器编排是什么应用一般由单独容器化的组件组成,须按照一定顺序在网络级别进行组织,以使其能够按照计划运行,这种对多个容器进行组织的流程称为容器编排,它主要是对容器之间的依赖关系进行编排Docke-composedocker官方提供的工具,强调单机多容器的编...
2020-01-21 10:58:03
1076
原创 Docker学习(九)Volumn容器间共享数据
Docker学习(九)Volumn容器间共享数据![此处输入图片的描述][1]volume是什么volume在英文中是容量的意思, 在docker中是数据卷的意思,是用来保存数据的容器为什么要进行数据共享![此处输入图片的描述][4]在集群中有多台tomcat,对于集群中的tomcat部署的代码是同一份代码的副本,如果页面文件发生变化,意味着每个容器中的页面文件都要进行更新,在大规模...
2020-01-21 10:52:33
3060
原创 Docker学习(八)容器间单向通信
Docker学习(八)容器间单向通信前言在之前的文章中介绍的内容都是容器镜像和容器运行,没有涉及到多个容器之前通信,如果是多个容器之间需要互相调用,如何通信呢?docker维护着每个容器的元信息,可以通过IP通信,但是在docker环境中每个容器重启之后,容器的虚拟IP都会变动,这样的情况下我们该如何处理? 我们带着这两个疑问看一下今天的内容场景如果我们部署了一个tomcat应用...
2020-01-21 00:43:16
161
原创 Docker学习(七)实战 - 构建REDIS镜像
Docker学习(七)实战 - 构建REDIS镜像![此处输入图片的描述][1]前言官网已提供了Redis的基础镜像,在生产环境尽量使用官网提供的基础镜像,这篇文章主要是为了综合使用一下Dockerfile相关命令,让我们理解更加深入一些实战前期准备准备Redis源文件包配置文件cd /usr/local/dockermkdir docker-rediscd docke...
2020-01-21 00:37:09
207
原创 Docker学习(六)Dockerfile构建自定义镜像
Docker学习(六)Dockerfile构建自定义镜像![此处输入图片的描述][1]前言通过前面一篇文章可以知道怎么去使用一个镜像搭建服务,但是,如何构造自己的一个镜像呢,docker提供了dockerfile可以让我们自己构造一个属于自己的镜像什么是dockerfile是一个包含用于组合镜像的命令的文本文档Docker通过读取Dockerfile中的指令按步自动生成镜像实战-打包...
2020-01-21 00:29:04
468
原创 Docker学习(五) Dockerfile基础命令
Docker学习(五) Dockerfile基础命令![此处输入图片的描述][1]学习Dockerfile,需要对它的基础命令进行了解FROM - 基于基准镜像尽量使用官方提供的基准镜像[x] FROM tomcat:8.5.50-jdk8-openjdk #制作基准镜像(基于tomcat:8.5.50-jdk8-openjdk)[x] FROM centos #制作基准镜像...
2020-01-21 00:12:36
205
原创 Docker学习(四)Docker搭建Tomcat
Docker学习(四)Docker搭建Tomcat标签(空格分隔): docker tomcat![此处输入图片的描述][1]前言涉及到的命令,可以参考上一篇Docker学习(三)认识Docker和常用命令可以参考[docker官方网站][2]业务场景公司采购了一台新的硬件服务器,领导说,BK这台服务器用tomcat搭建一台web服务器吧,这个任务看起来简单,但是很繁琐安装lin...
2020-01-21 00:08:02
232
原创 Docker学习(三)认识Docker和常用命令
Docker学习(三)认识Docker和常用命令![此处输入图片的描述][4]Docker体系结构![此处输入图片的描述][1]docker服务端,作为服务的提供方,核心进程 docker daemon,所有docker命令都是通过这个进程完成的REST API:通信层,基于WEB容器提供http协议服务docker CLI: 提供常用的docker命令基于HTTP协议,d...
2020-01-20 21:58:30
119
原创 Docker系列学习笔记
Docker系列学习笔记标签(空格分隔): docker![此处输入图片的描述][1]前言近一周在学习docker,到现在也算对docker有了初步的了解,相关的学习笔记通过公众号与大家分享,希望对每一位想学习docker的人有所帮助...主要内容[x] Docker学习(一)环境准备安装centos7[x] Docker学习(二)Centos7环境安装Docker[x] D...
2020-01-20 21:51:48
893
原创 Docker学习(二)Centos7环境安装Docker
前言windows10 64位专业版本才可以使用dockerCentos安装可以参考 ,基于安装完成的Centos进行今天的docker安装* Docker学习(一)环境准备安装centos7环境准备安装docker持久化包和yum工具包- yum-utils 简化yum安装的工具包,后面会用到相关命令修改镜像加速,非必选- device-mapper-persiste...
2020-01-20 01:32:33
110
转载 透彻的掌握 Spring 中@transactional 的使用
事务管理是应用系统开发中必不可少的一部分。Spring 为事务管理提供了丰富的功能支持。Spring 事务管理分为编码式和声明式的两种方式。编程式事务指的是通过编码方式实现事务;声明式事务基于 AOP,将具体业务逻辑与事务处理解耦。声明式事务管理使业务代码逻辑不受污染, 因此在实际使用中声明式事务用的比较多。声明式事务有两种方式,一种是在配置文件(xml)中做相关的事务规则声明,另一种是基于@Tr
2017-08-16 11:09:01
941
转载 高性能场景下,Map家族的优化使用建议
1. HashMap 在JDK 7 与 JDK8 下的差别顺便理一下HashMap.get(Object key)的几个关键步骤,作为后面讨论的基础。1.1 获取key的HashCode并二次加工因为对原Key的hashCode质量没信心,怕会存在大量冲突,HashMap进行了二次加工。JDK7的做法:h ^= (h >>> 20) ^ (h >>> 1
2017-07-24 12:53:45
623
转载 性能优化:Trove集合库
本文转自http://mccxj.github.io/blog/20130602_introduce-to-trove.html1 初见Trove昨天在Startup News上看到一篇文章:优化技巧分享:把内存消耗降低至原来的1/20。里边提到了一个案例,Java应用中如何降低内存消耗,总结了他的优化过程:开始时,存放1.3M个Person对象,消耗堆空间1.5G
2017-07-20 20:34:30
990
转载 Java内存模型
java并发采用的是共享内存模型,线程之间的通信对程序员来说是透明的,内存可见性问题很容易困扰着java程序员,今天我们就来揭开java内存模型的神秘面纱。在揭开面纱之前,我们需要认识几个基础概念:内存屏障(memory Barriers),指令重排序,happens-before规则,as-if-serial语义。什么是 Memory Barrier(内存屏障)?内存
2017-03-22 15:19:27
362
转载 jvm 总体梳理
转自http://www.importnew.comjvm体系总体分四大块:类的加载机制jvm内存结构GC算法 垃圾回收GC分析 命令调优当然这些知识点在之前的文章中都有详细的介绍,这里只做主干的梳理这里画了一个思维导图,将所有的知识点进行了陈列,因为图比较大可以点击右键下载了放大查看。类的加载机制主要关注点:什么是类的加载类的生命周
2017-03-22 15:10:44
366
转载 《Spring设计思想》AOP设计基本原理
目录(?)[+]0、前言spring 提供了AOP(Aspect Oriented Programming) 的支持, 那么,什么是AOP呢?本文将通过一个另外一个角度来诠释AOP的概念,帮助你更好地理解和使用Spring AOP。读完本文,你将了解到:1. Java程序运行在JVM中的特征2. Java程序的执行流【了解AOP、
2017-03-16 18:00:37
378
转载 [Java基础要义] HashMap的设计原理和实现分析
HashMap在Java开发中有着非常重要的角色地位,每一个Java程序员都应该了解HashMap。 本文主要从源码角度来解析HashMap的设计思路,并且详细地阐述HashMap中的几个概念,并深入探讨HashMap的内部结构和实现细节,讨论HashMap的性能问题,并且在文中贯穿着一些关于HashMap常见问题的讨论。 读完本文,你会了解到:
2017-03-16 17:49:23
268
转载 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
443
转载 为什么一般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
360
转载 《Spring设计思想》AOP实现原理(基于JDK和基于CGLIB)
版权声明: 转自http://blog.youkuaiyun.com/luanlouis/article/details/51155821目录(?)[-]前言Spring内部创建代理对象的过程Spring AOP的核心---ProxyFactoryBean基于JDK面向接口的动态代理JdkDynamicAopProxy生成代理对象基于Cglib子类继承方式的动态代理CglibAop
2017-03-16 14:24:22
338
转载 Java动态代理机制详解(JDK 和CGLIB,Javassist,ASM)
class文件简介及加载 Java编译器编译好Java文件之后,产生.class 文件在磁盘中。这种class文件是二进制文件,内容是只有JVM虚拟机能够识别的机器码。JVM虚拟机读取字节码文件,取出二进制数据,加载到内存中,解析.class 文件内的信息,生成对应的 Class对象: class字节码文件是根据JVM虚拟机规范中规
2017-03-15 23:28:07
245
转载 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
467
转载 java常量池概念
在class文件中,“常量池”是最复杂也最值得关注的内容。 Java是一种动态连接的语言,常量池的作用非常重要,常量池中除了包含代码中所定义的各种基本类型(如int、long等等)和对象型(如String及数组)的常量值还,还包含一些以文本形式出现的符号引用,比如: 类和接口的全限定名; 字段的名称和描述符; 方法和名称和描述符。 在C语言中,如果
2017-03-15 18:38:16
323
转载 《Java虚拟机原理图解》4.JVM机器指令集
0. 前言 Java虚拟机和真实的计算机一样,运行的都是二进制的机器码;而我们将.java 源代码编译成.class 文件,class文件便是Java虚拟机能够认识的二进制机器码,Java能够识别class文件中的信息和机器指令,进而执行这些机器指令。那么,Java虚拟机是如何运行这些二进制的机器码的呢? 本文将通过一个非常简单的例子,带你感受一下Java虚拟机运行机器码的过程
2017-03-15 11:30:23
528
原创 [Java基础要义]HashMap、LinkedHashMap元素遍历机制探讨
Map作为键值对Entry的的容器,对其内部 键值对Entry 的遍历总归是要有一个顺序的。 本文重点讨论HashMap及其子类LinkedHashMap的遍历机制,总结出两者的特点和适用情况。 优快云-2014博客之星投票啦优快云-2014博客之星 评选开始啦,如果您觉得我的文章对您有所帮助,请您点击左边栏的图片投我一票,您的支持是我分享知识的强
2017-03-14 23:20:18
402
转载 [Java基础要义] HashMap的设计原理和实现分析
HashMap在Java开发中有着非常重要的角色地位,每一个Java程序员都应该了解HashMap。 本文主要从源码角度来解析HashMap的设计思路,并且详细地阐述HashMap中的几个概念,并深入探讨HashMap的内部结构和实现细节,讨论HashMap的性能问题,并且在文中贯穿着一些关于HashMap常见问题的讨论。 读完本文,你会了解到:
2017-03-14 23:16:22
240
转载 如何细粒度地控制你的MyBatis二级缓存(mybatis-enhanced-cache插件实现)
前几天网友chanfish 给我抛出了一个问题,笼统地讲就是如何能细粒度地控制MyBatis的二级缓存问题,酝酿了几天,觉得可以写个插件来实现这个这一功能。本文就是从问题入手,一步步分析现存的MyBatis的二级缓存的不足之处,探讨一点可以改进的地方,并且对不足之处开发一个插件进行弥补。本文如下组织结构:一个关于MyBatis的二级缓存的实际问题当前MyBatis二级缓
2017-03-14 23:16:00
617
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人