自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

转载 【鲁班学院】设计模式—访问者(Visitor)模式

一、定义访问者模式是一种从操作的对象结构中分离算法的方式。 它可以在不改变数据结构的前提下定义作用与这些元素的新操作。它遵循开闭原则。Represent an operation to be performed on elements of an objectstructure. Visitor lets you define a new operation without changin...

2019-05-30 14:17:33 177

转载 【鲁班学院】面试总结:Java高级篇(下),抽象类和接口的关系以及对内存和栈内存的区别等

22.关于抽象类和接口的关系简言之抽象类是一种功能不全的类,接口只是一个抽象方法声明和静态不能被修改的数据的集合,两者都不能被实例化。从某种意义上说,接口是一种特殊形式的抽象类,在java语言中抽象类表示的是一种继承关系,一个类只能继承继承一个抽象类,而一个类却可以实现多个接口。在许多情况下,接口确实可以代替抽象类,如果你不需要刻意表达属性上的继承的话。23.堆内存和栈内存的区别寄存器:J...

2019-05-29 14:42:48 532

转载 【鲁班学院】面试总结:Java高级篇(上):集合的类型以及重新认识HashMap

1.你用过哪些集合类?大公司最喜欢问的Java集合类面试题40个Java集合面试问题和答案java.util.Collections 是一个包装类。它包含有各种有关集合操作的静态多态方法。java.util.Collection 是一个集合接口。它提供了对集合对象进行基本操作的通用接口方法。Collection├List│├LinkedList│├ArrayList│└...

2019-05-28 15:54:15 510

转载 面试高频问题:HashMap实现原理

今天给同学们讲讲一个面试经常遇到的高频问题,HashMap实现原理,希望在金三银四的季节对同学们有帮助。HashMap结构图目录一、唠叨二、解析思路三、get方法四、put方法五、resize方法一、唠叨认真阅读了下HashMap的实现方式,也参考了网上别人的一些解析,个人觉得还是有些东西想说。网上有的文章名字为HashMap源码解析,实际上就是给它里面的...

2019-05-27 21:42:33 200

转载 分布式环境下实现分布式锁的关键技术

摘 要:在日常开发中,应用大多数是分布式部署的,经常会面临分布式环境下应用对数据操作的一致性问题。这时就需要找出一个在分布式环境下同一个应用多个实例之间能够访问的临界资源,并对该临界资源做互斥访问,从而保证数据一致性。本文结合笔者实际工作中的经验,对分布式环境下实现应用分布式锁的关键思路进行探讨。关键词: 分布式锁、互斥资源、数据一致性分布式环境下,分布式部署的应用很多时候需要对同一个资源数...

2019-05-27 15:46:37 141

转载 今日头条算法原理详解全集,值得收藏!

今天,算法分发已经是信息平台、搜索引擎、浏览器、社交软件等几乎所有软件的标配,但同时,算法也开始面临质疑、挑战和误解。今日头条的推荐算法,从 2012 年 9 月第一版开发运行至今,已经经过四次大的调整和修改。今日头条委托资深算法架构师曹欢欢博士,公开今日头条的算法原理,以期推动整个行业问诊算法、建言算法;通过让算法透明,来消除各界对算法的误解,并逐步推动整个行业让算法更好的造福社会。以下为《...

2019-05-26 20:47:19 560

转载 MySQL索引原理及慢查询优化,了解一下?

MySQL凭借着出色的性能、低廉的成本、丰富的资源,已经成为绝大多数互联网公司的首选关系型数据库。虽然性能出色,但所谓“好马配好鞍”,如何能够更好的使用它,已经成为开发工程师的必修课,我们经常会从职位描述上看到诸如“精通MySQL”、“SQL语句优化”、“了解数据库原理”等要求。我们知道一般的应用系统,读写比例在10:1左右,而且插入操作和一般的更新操作很少出现性能问题,遇到最多的,也是最容易...

2019-05-26 15:35:22 139

转载 Java集合源码剖析:TreeMap源码剖析

▷▷▷前言本文不打算延续前几篇的风格(对所有的源码加入注释),因为要理解透TreeMap的所有源码,对博主来说,确实需要耗费大量的时间和经历,目前看来不大可能有这么多时间的投入,故这里意在通过于阅读源码对TreeMap有个宏观上的把握,并就其中一些方法的实现做比较深入的分析。▷▷▷红黑树简介TreeMap是基于红黑树实现的,这里只对红黑树做个简单的介绍,红黑树是一种特殊的二叉排序...

2019-05-23 20:14:35 90

转载 你了解Spring事物控制特性吗

一、事务特性原子性:强调事务的不可分割一致性:强调的是事务的执行的前后,数据的完整性要保持一致隔离性:一个事务的执行不应该受到其他事务的干扰持久性:事务一旦结束(提交/回滚)数据就持久保持到了数据库二、如果不考虑隔离性,会引发一些安全性问题 读问题脏读:一个事务读到另一个事务还没...

2019-05-23 17:02:58 83

转载 如何用JavaScript写一个区块链?

Part1实现一个基本的区块链1.区块链区块链是由一个个任何人都可以访问的区块构成的公共数据库。这好像没什么特别的,不过它们有一个有趣的属性:它们是不可变的。一旦一个区块被添加到区块链中,除非让剩余的其余区块失效,否则它是不会再被改变的。这就是为什么加密货币是基于区块链的原因。你肯定不希望人们在交易完成后再变更交易!2.创造一个区块区块链是由许许多多的区块链接在一起的(...

2019-05-22 21:57:41 307

转载 ApplicationContext的四个实现类

1.ClassPathXmlApplicationContext2.FileSystemXmlApplicationContext3.XmlWebApplicationContext4.WebApplicationContext1.作用:Context的实现类有很多,但是 CI 是唯一做具体工作的,其他实现都是对 CI 做代理。CI 中有一些成员对象,先来看看这些对象的用处:1.mRe...

2019-05-22 14:00:11 2377 1

转载 分析工厂模式中的问题并改造

工厂模式基本与简单工厂模式差不多,上面也说了,每次添加一个产品子类都必须在工厂类中添加一个判断分支,这样违背了开放-封闭原则,因此,工厂模式就是为了解决这个问题而产生的。既然每次都要判断,那就把这些判断都生成一个工厂子类,这样,每次添加产品子类的时候,只需再添加一个工厂子类就可以了。这样就完美的遵循了开放-封闭原则。但这其实也有问题,如果产品数量足够多,要维护的量就会增加,好在一般工厂子类只用来...

2019-05-21 21:40:25 194

转载 编写工厂类和配置文件

为了满足“开闭原则”,大部分设计模式都引入了抽象层,如工厂方法模式、抽象工厂模式、适配器模式、桥接模式、命令模式、策略模式等等。客户端代码针对抽象层编程,而在程序运行的时候再指定其子类,根据“里氏代换原则”和面向对象的多态性,子类对象在运行时将覆盖父类对象。如果需要对系统进行扩展或修改,只需修改子类类名即可。在具体实现时,通过引入配置文件可以使得用户在不修改任何客户端代码的前提下增加或替换子类,其...

2019-05-21 14:08:08 285

转载 zookeeper: 分布式锁的实现

为什么要用分布式锁Martin Kleppmann是英国剑桥大学的分布式系统的研究员,之前和Redis之父Antirez进行过关于RedLock(红锁,后续有讲到)是否安全的激烈讨论。Martin认为一般我们使用分布式锁有两个场景:•效率:使用分布式锁可以避免不同节点重复相同的工作,这些工作会浪费资源。比如用户付了钱之后有可能不同节点会发出多封短信。 •正确性:加分布式锁同样可以避免破坏正确性...

2019-05-20 15:03:07 114

转载 一篇文章彻底搞懂Java虚拟机

概念:虚拟机:指以软件的方式模拟具有完整硬件系统功能、运行在一个完全隔离环境中的完整计算机系统 ,是物理机的软件实现。常用的虚拟机有VMWare,Visual Box,Java Virtual Machine(Java虚拟机,简称JVM)。Java虚拟机阵营:Sun HotSpot VM、BEA JRockit VM、IBM J9 VM、Azul VM、Apache Harmony、Googl...

2019-05-19 21:45:37 135

转载 使用 spring 的 IOC 解决程序耦合

工厂模式解耦在实际开发中我们可以把三层的对象都使用配置文件配置起来,当启动服务器应用加载的时候,让一个类中的方法通过读取配置文件,把这些对象创建出来并存起来。在接下来的使用的时候,直接拿过来用就好了。那么,这个读取配置文件,创建和获取三层对象的类就是工厂。简单工厂模式(Simple Factory Pattern):又称为静态工厂方法(Static Factory Method)模式,它属于...

2019-05-19 17:19:43 151

转载 Docker部署微服务详解

2013年发布至今,Docker一直广受瞩目,被认为可能会改变软件行业。但是,许多人并不清楚Docker 到底是什么,要解决什么问题,好处又在哪里?今天就来详细解释,帮助大家理解它,还带有简单易懂的实例,教你如何将它用于日常开发。01 Docker简介Docker是一个开源的容器引擎,它有助于更快地交付应用。Docker可将应用程序和基础设施层隔离,并且能将基础设施当作程序一样进行管理。使...

2019-05-19 14:24:58 241

转载 从源码的角度来看SpringMVC

SpringMVC核心流程图简单总结首先请求进入DispatcherServlet 由DispatcherServlet 从HandlerMappings中提取对应的Handler此时只是获取到了对应的Handle,然后得去寻找对应的适配器,即:HandlerAdapter拿到对应HandlerAdapter时,这时候开始调用对应的Handler处理业务逻辑了(这时候实际上已经执行完了我...

2019-05-17 19:37:43 128

转载 深度讲解微服务架构中的负载均衡算法实现

负载均衡介绍负载均衡,英文名称为Load Balance,指由多台服务器以对称的方式组成一个服务器集合,每台服务器都具有等价的地位,都可以单独对外提供服务而无须其他服务器的辅助。通过某种负载分担技术,将外部发送来的请求均匀分配到对称结构中的某一台服务器上,而接收到请求的服务器独立地回应客户的请求。负载均衡能够平均分配客户请求到服务器阵列,借此提供快速获取重要数据,解决大量并发访问服务问题,这种集...

2019-05-16 21:50:01 400

转载 IoC 的概念

控制反转(Inversion of Control,缩写为IoC),是面向对象编程中的一种设计原则,可以用来减低计算机代码之间的耦合度。其中最常见的方式叫做依赖注入(Dependency Injection,简称DI),还有一种方式叫“依赖查找”(Dependency Lookup)。通过控制反转,对象在被创建的时候,由一个调控系统内所有对象的外界实体将其所依赖的对象的引用传递给它。也可以说,依...

2019-05-16 14:59:16 78

转载 Spring的四大优势,你是如何理解的?

1、方便解耦,简化开发Spring是分层的 Java SE/EE 应用 full-stack轻量级开源框架,以IoC(Inverse Of Control:反转控制)和 AOP(Aspect Oriented Programming:面向切面编程)为内核,提供了展现层SpringMVC和持久层 Spring JDBC 以及业务层事务管理等众多的企业级应用技术,还能整合开源世界众多著名的第三方框架...

2019-05-15 14:52:48 253

转载 Ioc的作用

IoC可以认为是一种全新的设计模式,但是理论和时间成熟相对较晚,并没有包含在GoF中。Interface Driven Design接口驱动,接口驱动有很多好处,可以提供不同灵活的子类实现,增加代码稳定和健壮性等等,但是接口一定是需要实现的,也就是如下语句迟早要执行:AInterface a = new AInterfaceImp(); 这样一来,耦合关系就产生了。Spring通过这种控制反转...

2019-05-13 17:14:24 1263

转载 什么是 OpenSCAD ?

OpenSCAD 是一个用于创建实体三维 CAD 对象的软件。它是普适的一个软件,适用于 Linux/UNIX、MS Windows 和 Mac OS X各类主流系统。 不像大多数自由软件创建3D 模型 (如著名的 Application Blender),OpenSCAD 专注于 CAD 方面,而不是艺术方面的3D 造型。因此这可能是您正计划创建3D 模型的机器零件,而不是制作电脑动画...

2019-05-09 14:04:03 2601

转载 springboot自动装配原理详解

1)传统ssm整合redis的时候 需要在xml的配置文件中 进行大量的配置Bean我们在这里使用springboot来代替ssm的整合,只是通过xml的形式来整合redis第一步:加入配置<dependency> <groupId>org.springframework.data</groupId> <artifactId>spring-...

2019-05-08 19:45:03 2258

转载 SpringAOP实现源码解读

本文章的目标,是给大家分享Spring底层,是怎么样创建目标对象的代理对象,实现Spring AOP的。为了方便大家根据自己情况,有针对性的进行阅读理解,特意整理了一下如下分享思路,仅供参考,谢谢!1、Spring AOP样例简单介绍怎么样基于Spring实现AOP编程(注解方式在目标对象方法中织入通知方法)2、AOP关键注解@EnableAspectJAutoProxy分析@E...

2019-05-08 14:11:21 110

转载 分布式系统中ID的需求

在过去单机系统中,生成唯一ID比较简单,可以使用MySQL的自增主键或者Oracle中sequence。在现在的大型高并发分布式系统中,以上策略就会有问题了,因为不同的数据库会部署到不同的机器上,一般都是多主实例,而且再加上高并发的话,就会有重复ID的情况了。在分布式系统中,ID有如下需求:1.全局唯一性:不能出现重复的ID,最基本的要求。2.数据递增:保证我的下一ID一定大于上一个ID3...

2019-04-26 19:56:41 295

转载 RabbitMq底层原理分析

RabbitMq消息中间件介绍&为什么要使用消息中间件&什么时候使用消息中间件我们用java来举例子, 打个比方 我们客户端发送一个下单请求给订单系统(order)订单系统发送了一个请求给我们的库存系统告诉他需要更改库存了, 我已经下单了, 这里, 每一个请求我们都可以看作一条消息, 但是 我们客户端需要等待订单系统告诉我这条消息的处理结果(我到底有没有下单成功) 但是 订单系...

2019-04-22 16:13:12 8330 7

转载 使用Dockerfile构建镜像

有时候从Docker镜像仓库中下载的镜像不能满足要求,我们可以基于一个基础镜像构建一个自己的镜像两种方式:1.更新镜像:使用docker commit命令2.构建镜像:使用docker build命令,需要创建Dockerfile文件更新镜像先使用基础镜像创建一个容器,然后对容器内容进行更改,然后使用docker commit命令提交为一个新的镜像(以tomcat为例)。1.根据基础镜...

2019-04-21 17:10:05 384

空空如也

空空如也

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

TA关注的人

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