摘要: JDK版本 ArrayList ArrayList简介 ArrayList 是一个数组队列,相当于 动态数组。与Java中的数组相比,它的容量能动态增长。它继承于AbstractList,实现了List, RandomAccess, Cloneable, java.io.Serializable这些 阅读全文
posted @ 2019-06-17 11:15 Tu9oh0st 阅读(282) 评论(0) 推荐(0) 编辑
摘要: 前言 在我们的平常的项目中多多少少都会使用到缓存,因为一些数据我们没有必要每次查询的时候都去查询到数据库。 特别是高 QPS 的系统,每次都去查询数据库,对于你的数据库来说将是灾难。 今天我们不牵涉多级缓存的知识,就把系统使用到的缓存方案,不管是一级还是多级的都统称为缓存,主要是为了讲述使用缓存的时 阅读全文
posted @ 2019-06-09 16:33 Tu9oh0st 阅读(232) 评论(0) 推荐(0) 编辑
摘要: 复制过程 复制的过程步骤如下: 1. 从节点执行 slaveof 命令 2. 从节点只是保存了 slaveof 命令中主节点的信息,并没有立即发起复制 3. 从节点内部的定时任务发现有主节点的信息,开始使用 socket 连接主节点 4. 连接建立成功后,发送 ping 命令,希望得到 pong 命 阅读全文
posted @ 2019-06-09 10:28 Tu9oh0st 阅读(225) 评论(0) 推荐(1) 编辑
摘要: 深入理解IoC 在一开始学习 Spring 的时候,我们就接触 IoC 了,作为 Spring 第一个最核心的概念,我们在解读它源码之前一定需要对其有深入的认识。 IoC理论 IoC 全称为 ,翻译为 “控制反转”,它还有一个别名为 DI( ),即依赖注入。 如何理解“控制反转”好呢?理解好它的关键 阅读全文
posted @ 2019-06-08 22:51 Tu9oh0st 阅读(212) 评论(0) 推荐(1) 编辑
摘要: 代理模式 代理模式的定义 代理模式(Proxy Pattern)是一个使用率非常高的模式,其定义如下: Provide a surrogate or placeholder for another object to control access to it.(为其他对象提供一种代理以控制对象的访问 阅读全文
posted @ 2019-06-06 23:09 Tu9oh0st 阅读(163) 评论(0) 推荐(0) 编辑
摘要: golang string和[]byte的对比 为啥string和[]byte类型转换需要一定的代价? 为啥内置函数copy会有一种特殊情况 ? string和 "]byte,底层都是数组,但为什么[]byte比string灵活,拼接性能也更高([动态字符串拼接性能对比" )? 今天看了源码探究了一 阅读全文
posted @ 2019-06-03 17:51 Tu9oh0st 阅读(487) 评论(0) 推荐(0) 编辑
摘要: MVC框架的实现 在开始设计MVC框架前,首先要对MVC框架做一个简单的介绍。MVC(Model View Controller)的中文名称叫做模型视图控制器模型,就是因为它的英文名字太流行了,中文名字反而被忽略了。它诞生于20世纪80年代,原本是为桌面应用程序建立起来的一个框架,现在反而在Web应 阅读全文
posted @ 2019-05-31 20:46 Tu9oh0st 阅读(752) 评论(0) 推荐(0) 编辑
摘要: 面向过程让计算机有步骤地顺次做一件事情,是一种过程化地叙事思维。但是在大型软件开发过程中,发现用面向过程语言开发,软件维护、软件复用存在着巨大困难,代码开发变成了记流水账,久而久之就称为“面条”代码,模块之间互相耦合,流程互相穿插,往往牵一发而动全身。面向对象提出一种计算机世界里解决复杂软件工厂的方 阅读全文
posted @ 2019-05-31 16:03 Tu9oh0st 阅读(342) 评论(0) 推荐(0) 编辑
摘要: 工厂方法模式的定义 工厂方法模式使用的频率非常高,在我们日常的开发中总能见到它的身影。其定义为: Define an interface for creating an object,but let subclasses decide which class to instantiate.Facto 阅读全文
posted @ 2019-05-30 19:59 Tu9oh0st 阅读(133) 评论(0) 推荐(0) 编辑
摘要: 单例模式的定义 单例模式(Singleton Pattern)是一个比较简单的模式,其定义如下: Ensure a class has only one instance, and provide a global point of access to it.(确保某一个类只有一个实例,而且自行实例 阅读全文
posted @ 2019-05-30 16:20 Tu9oh0st 阅读(100) 评论(0) 推荐(0) 编辑
摘要: 我们平时浏览网页的时候,会打开浏览器,输入网址后按下回车键,然后就会显示出你想要浏览的内容。在这个看似简单的用户行为背后,到底隐藏了些什么呢? 对于普通的上网过程,系统其实是这样做的:浏览器本身是一个客户端,当你输入URL的时候,首先浏览器会去请求DNS服务器,通过DNS获取相应的域名对应的IP,然 阅读全文
posted @ 2019-05-26 18:04 Tu9oh0st 阅读(282) 评论(1) 推荐(0) 编辑
摘要: 切片是一种数据结构,这种数据结构便于使用和管理数据集合。切片是围绕动态数组的概念构建的,可以按需自动增长和缩小。切片的动态增长是通过内置函数append来实现的。这个函数可以快速且高效的增长切片。还可以通过对切片再次切片来缩小切片的大小。因为切片的底层内存也是在连续块中分配的,所以切片还能获得索引、 阅读全文
posted @ 2019-05-25 15:32 Tu9oh0st 阅读(439) 评论(0) 推荐(0) 编辑
摘要: bean是Spring中最核心的东西,因为Spring就像是个大水桶,而bean就像是容器中的水,水桶脱离了水便也没什么用处了,那么我们先看看bean的定义。 接下来是配置文件: 测试代码: 这段测试代码完成的功能无非就是以下几点: 1. 读取配置文件 。 2. 根据 中的配置找到对应的类的配置,并 阅读全文
posted @ 2019-05-22 17:00 Tu9oh0st 阅读(247) 评论(0) 推荐(0) 编辑
摘要: 今天看《Go语言实战》发现方法和函数不太一样,写的格式不一样,用法也不一样。所以记一次笔记。 在Go语言中,函数和方法不太一样,有明确的概念区分。其他语言中,比如Java,一般来说,函数就是方法,方法就是函数,但是在Go语言中,函数是指不属于任何结构体、类型的方法,也就是说,函数是没有接收者的;而方 阅读全文
posted @ 2019-05-21 21:45 Tu9oh0st 阅读(2619) 评论(0) 推荐(4) 编辑
摘要: 数组的内部实现和基础功能 因为数组是切片和映射的基础数据结构。理解了数组的工作原理,有助于理解切片和映射提供的优雅和强大的功能。 内部实现 在Go语言里,数组是一个长度固定的数据类型,用于存储一段具有相同的类型的元素的连续块。 下图中可以到数组的表示。 数组是一种非常有用的数据结构,因为其占用的内存 阅读全文
posted @ 2019-05-20 20:57 Tu9oh0st 阅读(466) 评论(0) 推荐(0) 编辑
摘要: Spring Cloud Bus 将分布式的节点用轻量的消息代理连接起来。它可以用于广播配置文件的更改或者服务之间的通讯,也可以用于监控。本文要讲述的是用Spring Cloud Bus实现通知微服务架构的配置文件的更改。 准备工作 本文还是基于上一篇文章来实现。按照官方文档,我们只需要在配置文件中 阅读全文
posted @ 2019-05-20 08:35 Tu9oh0st 阅读(213) 评论(0) 推荐(0) 编辑
摘要: 包 所有Go语言的程序都会组织成若干组文件,每组文件被称为一个包。这样每个包的代码都可以作为很小的复用单元,被其他项目引用。 包名惯例 给包命名的惯例是使用包所在目录的名字。并不需要所有包的名字都与别的包不同,因为导入包时是使用全路径的,所以可以区分同名的不同包。 main包 Go语言的编译程序会试 阅读全文
posted @ 2019-05-20 00:23 Tu9oh0st 阅读(1372) 评论(0) 推荐(0) 编辑
摘要: "上一篇文章" 讲述了一个服务如何从配置中心读取文件,配置中心如何从远程git读取配置文件,当服务实例很多时,都从配置中心读取文件,这时可以考虑将配置中心做成一个微服务,将其集群化,从而达到高可用 准备工作 创建一个eureka server工程,用作服务注册中心。 在其pom.xml文件引入Eur 阅读全文
posted @ 2019-05-19 21:27 Tu9oh0st 阅读(204) 评论(0) 推荐(0) 编辑
摘要: 在 "上一篇文章" 讲述zuul的时候,已经提到过,使用配置服务来保存各个服务的配置文件。它就是Spring Cloud Config。 简介 在分布式系统中,由于服务数量巨多,为了方便服务配置文件统一管理,实时更新,所以需要分布式配置中心组件。在Spring Cloud中,有分布式配置中心组件sp 阅读全文
posted @ 2019-05-18 23:13 Tu9oh0st 阅读(295) 评论(0) 推荐(0) 编辑
摘要: 在微服务架构中,需要几个基础的服务治理组件,包括服务注册与发现、服务消费、负载均衡、断路器、智能路由、配置管理等,由这几个基础组件相互协作,共同组建了一个简单的微服务系统。一个简单的微服务系统如下图: Cloud微服务系统中,一种常见的负载均衡方式是,客户端的请求首先经过负载均衡(zuul、Ngni 阅读全文
posted @ 2019-05-18 22:15 Tu9oh0st 阅读(355) 评论(0) 推荐(0) 编辑