自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 设计模式工厂模式(简单工厂、工厂模式、抽象工厂)

工厂模式就是用工厂方法代理new对象,具体分为简单工厂、工厂模式和抽象工厂。简单工厂:创建接口 编写实现动物实现类 、有着说话方法 鸟和猪都实现了动物接口 实现了 有着各自的说话方式创建动物工厂实现类 根据传入的参数创建不同的对象 且一般为静态方法 方便后续调用编写客户端调用简单工厂的好处是方便 代码编写简单 调用也方便 但是缺点也是显而易见的 如果我们后续相加...

2019-11-22 15:37:32 255

原创 建造者模式简单入门与测试

建造者模式也是23种设计模式中的一种 他可以方便人们快速地构造出复杂的对象且可以根据自己想要的赋值对象中一部分属性值。 建造者模式的构建方式就是1:先使用一个静态内部类给他赋外类的所有属性2:提供set方法返回本类对象方便链式调用。3:外部类创建内部类有参构造方法4:内部类创建生成外部类方法使用有参构造构建5:客户端可以直接new内部类对象链式调用返回外部类对象相比较工厂模...

2019-11-20 20:28:57 258

原创 深入浅出单例模式与反射与序列化对单例的破坏

单例模式我想大家都不陌生 也可以说是23种设计模式中最著名也是最容易被问到的一种 下面就简单说下他的几种实现方式懒汉:什么叫懒汉 顾名思义 就是比较懒 类里的对象只会在需要使用的时候在初始化 相比较而言当对象不使用即不加载 可以节省内存开销。1.0版本先定义一个类等于null 当如果有对象需要使用的时候判断是否为null 非null创建一个新对象 否则直接返回对象 且创建一个私...

2019-11-20 18:05:44 268

原创 MySql索引的分类、实现原理与如何优化详解(哈希索引、B+Tree索引、全文索引)

数据库查询的时候如何提高效率 我相信大部分的人都会回答创建索引 但是索引的数据类型是啥 索引的分类 索引的实现原理、索引的具体优化 我相信大多数人还是一脸懵逼的 那么我们现在就简单地聊一聊索引。一:索引的分类主键索引:通常用Id作为主键索引 且会自增,也是最常用的索引(不允许重复、为空) 唯一索引:校验数据库唯一性的索引 如果创建了唯一索引再次插入就会报错。(简单地说就是同一列中同一个...

2019-07-18 18:41:51 260

原创 深入浅出synchronized关键字 、无状态锁、偏量锁、轻量锁、重量锁

synchronized在做开发的时候或多或少都用过 但是对与理解方便之前只是简单的认为是一个锁 加上之后可以处理多线程下的安全隐患 但是会降低系统的效率 因为一个线程加锁之后其余线程都会在外部进行等待 殊不知其实JDK已经对其锁进行了较大规模的升级锁的状态有四种无状态锁、偏向锁、轻量锁、重量锁在长期的实践发现 一个线程在多次调用锁的情况是时有发生的 所以当在线程第一次获取锁的时...

2019-06-19 18:29:56 1222

原创 深入浅出同步异步、阻塞非阻塞

先看一下网上很火的一个例子 结合案例咱们来详细解释下同步异步 阻塞非阻塞老张爱喝茶,废话不说,煮开水。出场人物:老张,水壶两把(普通水壶,简称水壶;会响的水壶,简称响水壶)。1 老张把水壶放到火上,立等水开。(同步阻塞)老张觉得自己有点傻2 老张把水壶放到火上,去客厅看电视,时不时去厨房看看水开没有。(同步非阻塞)老张还是觉得自己有点傻,于是变高端了,买了把会响笛的那种水壶。水开之后...

2019-06-19 14:44:51 66

原创 关于Integer直接复制小于128的小坑及缓存机制详解

最近闲来无事 和同事们一起讨论面试题的时候我们老大说了一个Integer在128以下直接初始两个值比较为TRUE还是FALSE其实我老早就知道 在127以下比较都为true 但是具体为什么还真没了解过 那么接下来咱们一起探讨探讨。很简单的一段代码 结果是为true 具体为什么呢 咱们先来看下被编译的class文件是什么样import com.ahhuage.dddrive...

2019-05-30 14:22:23 559

原创 Nginx几种负载均衡算法

众所周知 Nginx可以其中一个最重要的功能就是负载均衡 其中负载均衡主要又有五个算法 内置的有(轮询【默认】、轮询权值【weight】、ip_hash、fair、url_hash)其中前三个为Nginx内置算法 后两个为第三方 需要引用一些模块。轮询轮询为默认的负载均衡的方式、即依次将请求分配给不同的服务器上 如果有服务器挂掉 那么就会自动从服务列表里剔除轮询权值在ip地址后分...

2019-04-20 14:25:16 762

原创 Java垃圾回收机制详解与堆分代

一:引用类型 首先先简单的说一下Java的四大引用类型 分别为强引用 弱引用 软引用、虚引用。 强引用:当JVM执行垃圾回收机制时 如果扫到该对象后判断为强引用 就不会被垃圾回收机制所回收 即使后期内存不足JVM宁愿抛出OutOfMemoryException也不会清除强引用对象 软引用:软引用大多数可以作为缓存使用 当GC扫到软引用对象后 会先判断内存是否充足 ...

2019-04-08 18:20:39 368 1

原创 Tomcat调优的几个方面

Tomcat对于每个开发者来说都是熟悉的不能再熟悉的了 从开始写第一个javaweb项目开始就在使用Tomcat 可是对于Tomcat的性能调优知晓的人并不多 下面我们来列举几个栗子 进行如下配置可以让你的Tomcat承受更高的并发量tomcat三种运行模式 分别是PIO、NIO、APR 在Linux操作系统下在Tomcat7及以下默认采用该模式PIO为阻塞式IO一个线程处理一个请...

2019-03-27 13:21:27 241

原创 Docker的基本指令

想要了解docker就必须了解虚拟化技术  电脑如果想要安装docker就必须支持虚拟化技术 Docker装在系统上只能虚拟出当前系统的硬件 比如装在Linux 便不能虚拟Windows里面的东西 容器技术依赖于硬件常见命令 :查看镜像 docker images搜索镜像 docker search 镜像名称拉取镜像 docker pull 镜像名称删除镜像 docker rm...

2019-02-25 17:04:28 101

原创 关于分布式锁的几种常见实现方式详解

众所周知 再单机环境下 如果有不同线程对共享资源进行操控的时候 可以使用synchronize关键字来保证线程的安全性 但是在分布式的环境下该方法就会失效 为了保证在分布式的环境下不同客户端在对同一个共享资源的安全性访问时 我们会需要使用到分布式锁 目前 常用的分布式锁有三种 一种是基于数据库的 一种是基于Redis的 还有一种是基于zookeeper的。数据库的方法实现最为简单 我们可以构建...

2019-02-25 14:03:22 294

原创 浅谈TCP三次握手(包含通俗解释)

TCP在传输数据之前会进行三次数据发送进行校验 俗称三次握手 那么为什么需要需要三次握手 为什么三次握手之后客户端和服务端才彼此知道对方的通讯正常呢 咱们就以最通俗易懂的说法来解释一下首先第一次客户端发出请求 服务器接收 服务器就知道客户端通信是正常的 第二次服务器端发出请求 客户端知道其服务器端数据传输为正常(并且也知道自己的数据传输正常 因为可以确定第一次发的消息服务器已经接接收到)...

2019-02-23 14:49:53 1717

原创 浅谈探讨乐观锁与悲观锁及volatile关键字

先来说说什么是乐观锁 什么是悲观锁 其实从他的名字就可以看出 悲观锁自己总是很悲观 认为每次对方都会进行修改 所以拿数据的时候都会上锁 最为经典的就是Java中的synchronized关键字 关系型数据库中也运用到悲观锁 比如 行锁 表锁  乐观锁即为认为对方每次不会修改数据 所以不会上锁 但是更新的时候就会判断一下数据是否被修改 一 例如数据库里面就是用了version字段来控制版本号  咱们...

2019-02-13 21:23:30 516

原创 浅谈Redis持久化与主从复制及分布式下的CAP和BASE理论

因为redis为纯内存的数据库 所以在写项目的时候必须让其持久化存入硬盘以防止数据丢失 redis持久化分为两种 一种是AOF一种是RDB 咱们就来说说他俩的区别和优劣吧RDB为默认开启的 使用了一个单独的子进程进行持久化 其主进程不会进行任何的IO操作 从而保证了高效率 其次相比较AOF而言 RDB的恢复速率是要快很多的  但是因为持久化是间隔一段时间的 所以如果在间隔时间段内出现故障 中间...

2019-02-12 15:17:17 571

原创 关于String类常量池数值比较及其不可变性

String是被final修饰的 这个应该没啥好说的 所以String修饰的全部是常量。那么可能有的小伙伴们就要问了 我先Stirng x="123" 然后 x="456" 在输出x的值还是456啊  这不是变了吗 其实Java内部有个常量池 栈内存中的x先指向常量池内的123 然后又把x指向了456,123在常量池中还是存在的 只不过变成了垃圾 会由GC进行不定时回收,一开始定义了123那么12...

2019-02-11 15:41:15 160

原创 JVM加载方式与双亲委托机制详解

众所周知 Jvm虚拟机会把我们写的.java代码转化为.class代码 在需要使用的时候虚拟机直接加载.class文件。说白了就是java代码是给我们看的  class代码是个虚拟机看的 把class文件加载到虚拟机中 就是类加载 类加载分为三个阶段 分别为 加载 链接 与初始化 。链接中又有校验、准备、解析。加载为jvm读取该类的全限定类名 转化为二进制字节流 并储存到内存区的方法区里。...

2019-01-31 14:30:47 124

原创 反向代理与正向代理的区别详解与nginx的负载均衡

正向代理 顾名思义 客户端发出请求 找到代理服务器 由代理服务器发出真正的请求给真正的服务器 获得响应后 再把数据返回给客户端用同一个通俗的例子来解释 就是A想找C借钱 但是C嫌弃A人品不行 于是A找到人品较好的B 由B发出请求找C借钱,借钱给B,B拿到钱之后再把钱转交给A。从始至终C都不知道要把钱给A(因为他要是知道是A借的就不会借了)反向代理最经典的例子就是nginx 客户端之间找到n...

2019-01-28 13:22:25 187

空空如也

空空如也

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

TA关注的人

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