自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

  • 博客(106)
  • 收藏
  • 关注

转载 GIT和SVN教程

各种版本控制工具的简单比较特性CVSSVNGIT并发修改支持支持支持并发提交不支持支持支持历史轨迹不支持更名支持更名支持更名分布式不支持不支持支持SVNSVN服务端安装下载地址:https://www.visualsvn.com/server/download/双击安装包,安装,选择好安装地址,选中这两...

2019-08-26 23:50:00 261

转载 SpringBoot整合Dubbo配合ZooKeeper注册中心

安装ZooKeeper我这里使用zookeeper作为服务注册中心,版本3.4.9,下载地址:http://mirrors.hust.edu.cn/apache/zookeeper/zookeeper-3.4.12/下载后,解压要先配置一下,否则没法启动,启动会报错,找不到 zoo.cfg 文件,其实这个配置文件是有的,在 conf文件夹里,只不过名字是 zoo_sample.c...

2019-08-22 11:25:00 230

转载 【转】MySql 三大知识点——索引、锁、事务

索引索引,类似书籍的目录,可以根据目录的某个页码立即找到对应的内容。索引的优点:1. 天生排序。2. 快速查找。索引的缺点:1. 占用空间。2. 降低更新表的速度。注意点:小表使用全表扫描更快,中大表才使用索引。超级大表索引基本无效。索引从实现上说,分成 2 种:聚集索引和辅助索引(也叫二级索引或者非聚集索引)从功能上说,分为 6 种:普通索引,唯一索引,主键索引,复合索引,...

2019-07-23 00:08:00 222

转载 Redis持久化背后的故事

Redis持久化Redis提供了不同的持久化选项:RDB持久化以指定的时间间隔保存那个时间点的数据快照。AOF持久化方法则会记录每一个服务器收到的写操作。在服务器启动时,这些记录的操作会逐条执行从而重建出原来的数据。写操作命令记录的格式跟Redis协议一致,以追加的方式进行保存。Redis的持久化时可以禁用的,就是说你可以让数据的生命周期只存在服务器的运行时间里。两种方式的持...

2019-07-23 00:00:00 144

转载 利用Docker搭建Redis集群

Redis集群搭建运行Redis镜像分别使用以下命令启动3个Redisdocker run --name redis-6379 -p 6379:6379 -d hub.c.163.com/library/redisdocker run --name redis-6380 -p 6380:6379 -d hub.c.163.com/library/redisdocker run...

2019-07-18 09:57:00 100

转载 synchronized的实现原理与应用

synchronized概述在多线程并发编程中synchronized一直是元老级角色,很多人都会称呼它为重量级锁。但是,随着Java SE 1.6对synchronized进行了各种优化之后,有些情况下它就并不那么重了。先来看下利用synchronized实现同步的基础:Java中的每一个对象都可以作为锁。具体表现为以下3种形式:对于普通同步方法,锁是当前实例对象。对于静态同...

2019-07-15 16:56:00 106

转载 ConcurrentHashMap

ConcurreentHashMap的实现原理与使用ConcurrentHashMap是线程安全且高效的HashMap。为什么要使用ConcurrentHashMap在并发编程中使用HashMap可能导致程序死循环。而使用线程安全的HashTable效率又非常低下,基于以上两个原因,便有了ConcurrentHashMap的登场机会。线程不安全的HashMap在多线程环境下,...

2019-07-12 10:06:00 149

转载 volatile的内存语义与应用

volatile的内存语义volatile的特性理解volatile特性的一个好方法是把对volatile变量的单个读/写,堪称是使用同一个锁对这些单个读/写操作做了同步。锁的happens-before规则保证释放锁和获取锁的两个线程之间的内存可见性,这意味着对一个volatile变量的读,总是能看到(任意线程)对这个volatile变量最后的写入。锁的语义决定了临界区代码的执...

2019-07-11 15:57:00 117

转载 AbstractQueuedSynchronizer

队列同步器概述队列同步器AbstractQueuedSynchronizer(以下简称同步器),是用来构建锁或者其他同步组件的基础框架,它使用了一个int成员变量表示同步状态,通过内置的FIFO队列来完成资源获取线程的排队工作,并发包的作者(Doug Lea)期望它能够成为实现大部分同步需求的基础。同步器是实现锁(也可以是任意同步组件)的关键,在锁的实现中聚合同步器,利用同步器实现锁...

2019-07-11 15:05:00 213

转载 深入理解Java内存模型JMM与volatile关键字

深入理解Java内存模型JMM与volatile关键字多核并发缓存架构Java内存模型Java线程内存模型跟CPU缓存模型类似,是基于CPU缓存模型来建立的,Java线程内存模型是标准化的,屏蔽掉了底层不同计算机的区别。例子编写代码来分析public class VolatileVisibilityTest { private static boolean ini...

2019-07-10 19:06:00 142

转载 深入剖析Java虚拟机内存结构

深入剖析Java虚拟机内存模型JVM整体架构JVM整体架构如下:通过编写代码来分析整个内存区域public class Math { public static final Integer CONSTANT = 666; public int compute(){ int a = 1; int b = 2; i...

2019-07-09 20:00:00 168

转载 SpringBoot整合Redis及Redis工具类

前言想做一个秒杀项目,问了几个大佬要了项目视频,结果,自己本地实践的时候,发现不太一样,所以写下这篇,为以后做准备。环境配置IDE:IDEA环境:Windows数据库:RedisMaven配置习惯用SpringBoot的小伙伴都知道,需要配置Maven,添加几个dependency。<dependency> <groupId>org.spr...

2019-06-30 15:05:00 115

转载 再谈JVM中类加载

前言由于本人参加面试,但是JVM这块回答的十分不好,问了面试官,面试官说我基础不行!我真的不行,所以看过的不一定能理解,感觉之前就是糊弄任务,然后这次等实训结束,啥都干完了,我就记录下,深入了解下面试中不会的题。类加载过程1、加载:这个很简单,程序运行之前jvm会把编译完成的.class二进制文件加载到内存,供程序使用,用到的就是类加载器classLoader ,这里也可以看出ja...

2019-06-27 16:57:00 164

转载 JVM复习总结

运行时数据区域图中深色区域为,由所有线程共享的数据区域,其他为线程隔离的数据区。程序计数器程序计数器可以看作是当前线程执行的字节码的行号指示器。虚拟机栈虚拟机栈描述的是Java方法执行的内存模型;每个方法在执行的同时都会创建一个栈帧(Stack Frame)用于存储局部变量表、操作数栈、动态链接、方法出口等信息。本地方法栈与虚拟机栈类似,JVM调用Native方法时都会创...

2019-06-27 16:52:00 110

转载 JDK源码分析(1)ArrayList

JDK版本ArrayListArrayList简介ArrayList 是一个数组队列,相当于 动态数组。与Java中的数组相比,它的容量能动态增长。它继承于AbstractList,实现了List, RandomAccess, Cloneable, java.io.Serializable这些接口。ArrayList 继承了AbstractList,实现了List。它是一个数组...

2019-06-17 11:15:00 104

转载 关于【缓存穿透、缓存击穿、缓存雪崩、热点数据失效】问题的解决方案

前言在我们的平常的项目中多多少少都会使用到缓存,因为一些数据我们没有必要每次查询的时候都去查询到数据库。特别是高 QPS 的系统,每次都去查询数据库,对于你的数据库来说将是灾难。今天我们不牵涉多级缓存的知识,就把系统使用到的缓存方案,不管是一级还是多级的都统称为缓存,主要是为了讲述使用缓存的时候可能会遇到的一些问题以及一些解决办法。我们使用缓存时,我们的业务系统大概的调用流程如下...

2019-06-09 16:33:00 91

转载 深入Redis 主从复制原理

复制过程复制的过程步骤如下:从节点执行 slaveof 命令从节点只是保存了 slaveof 命令中主节点的信息,并没有立即发起复制从节点内部的定时任务发现有主节点的信息,开始使用 socket 连接主节点连接建立成功后,发送 ping 命令,希望得到 pong 命令响应,否则会进行重连如果主节点设置了权限,那么就需要进行权限验证;如果验证失败,复制终止。权限验证通过后,...

2019-06-09 10:28:00 96

转载 深入理解Spring IoC

深入理解IoC在一开始学习 Spring 的时候,我们就接触 IoC 了,作为 Spring 第一个最核心的概念,我们在解读它源码之前一定需要对其有深入的认识。IoC理论IoC 全称为InversionofControl,翻译为 “控制反转”,它还有一个别名为 DI(DependencyInjection),即依赖注入。如何理解“控制反转”好呢?理解好它的关键在于我们需要回答如下...

2019-06-08 22:51:00 92

转载 代理模式

代理模式代理模式的定义代理模式(Proxy Pattern)是一个使用率非常高的模式,其定义如下:Provide a surrogate or placeholder for another object to control access to it.(为其他对象提供一种代理以控制对象的访问)。代理模式也叫做委托模式,它是一项基本设计技巧。许多其他的模式,如状态模式、策略模式、...

2019-06-06 23:09:00 74

转载 Golang中string和[]byte的对比

golang string和[]byte的对比为啥string和[]byte类型转换需要一定的代价?为啥内置函数copy会有一种特殊情况copy(dst []byte, src string) int?string和[]byte,底层都是数组,但为什么[]byte比string灵活,拼接性能也更高(动态字符串拼接性能对比)?今天看了源码探究了一下。何为string?什么是字符...

2019-06-03 17:51:00 158

转载 MVC框架

MVC框架的实现在开始设计MVC框架前,首先要对MVC框架做一个简单的介绍。MVC(Model View Controller)的中文名称叫做模型视图控制器模型,就是因为它的英文名字太流行了,中文名字反而被忽略了。它诞生于20世纪80年代,原本是为桌面应用程序建立起来的一个框架,现在反而在Web应用中大放异彩(其实也可以把B/S认为是C/S的瘦化结构),MVC框架的目的是通过控制器C将...

2019-05-31 20:46:00 167

转载 OOP理念

面向过程让计算机有步骤地顺次做一件事情,是一种过程化地叙事思维。但是在大型软件开发过程中,发现用面向过程语言开发,软件维护、软件复用存在着巨大困难,代码开发变成了记流水账,久而久之就称为“面条”代码,模块之间互相耦合,流程互相穿插,往往牵一发而动全身。面向对象提出一种计算机世界里解决复杂软件工厂的方法论,拆解问题复杂度,从人类思维角度提出解决问题的步骤和方案。比如“开门”这个动作,面向...

2019-05-31 16:03:00 743

转载 两数之和 II - 输入有序数组

题目描述给定一个已按照升序排列 的有序数组,找到两个数使得它们相加之和等于目标数。函数应该返回这两个下标值 index1 和 index2,其中 index1 必须小于 index2。说明:返回的下标值(index1 和 index2)不是从零开始的。你可以假设每个输入只对应唯一的答案,而且你不可以重复使用相同的元素。示例:输入: numbers = [2, 7, 11...

2019-05-31 11:46:00 73

转载 工厂模式

工厂方法模式的定义工厂方法模式使用的频率非常高,在我们日常的开发中总能见到它的身影。其定义为:Define an interface for creating an object,but let subclasses decide which class to instantiate.Factory Method lets a class defer instantiation to...

2019-05-30 19:59:00 60

转载 单例模式

单例模式的定义单例模式(Singleton Pattern)是一个比较简单的模式,其定义如下:Ensure a class has only one instance, and provide a global point of access to it.(确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例。)单例模式的通用类图如下:Singleton类称为单例类...

2019-05-30 16:20:00 72

转载 Web工作方式

我们平时浏览网页的时候,会打开浏览器,输入网址后按下回车键,然后就会显示出你想要浏览的内容。在这个看似简单的用户行为背后,到底隐藏了些什么呢?对于普通的上网过程,系统其实是这样做的:浏览器本身是一个客户端,当你输入URL的时候,首先浏览器会去请求DNS服务器,通过DNS获取相应的域名对应的IP,然后通过IP地址找到IP对应的服务器后,要求建立TCP连接,等浏览器发送完HTTP Requ...

2019-05-26 18:04:00 144

转载 Go语言中切片的内部实现和基础功能

切片是一种数据结构,这种数据结构便于使用和管理数据集合。切片是围绕动态数组的概念构建的,可以按需自动增长和缩小。切片的动态增长是通过内置函数append来实现的。这个函数可以快速且高效的增长切片。还可以通过对切片再次切片来缩小切片的大小。因为切片的底层内存也是在连续块中分配的,所以切片还能获得索引、迭代以及垃圾回收优化的好处。内部实现切片是一个很小的对象,对底层数组进行了抽象,并提供...

2019-05-25 15:32:00 131

转载 Spring源码分析(1)容器的基本实现——核心类介绍

bean是Spring中最核心的东西,因为Spring就像是个大水桶,而bean就像是容器中的水,水桶脱离了水便也没什么用处了,那么我们先看看bean的定义。public class MyTestBean{ private String testStr = "testStr"; public String getTestStr(){ return tes...

2019-05-22 17:00:00 89

转载 Go语言中方法和函数的区别

今天看《Go语言实战》发现方法和函数不太一样,写的格式不一样,用法也不一样。所以记一次笔记。在Go语言中,函数和方法不太一样,有明确的概念区分。其他语言中,比如Java,一般来说,函数就是方法,方法就是函数,但是在Go语言中,函数是指不属于任何结构体、类型的方法,也就是说,函数是没有接收者的;而方法是有接收者的,我们说的方法要么是属于一个结构体的,要么属于一个新定义的类型的。函数函...

2019-05-21 21:45:00 1154

转载 Go语言中数组的内部实现和基础功能

数组的内部实现和基础功能因为数组是切片和映射的基础数据结构。理解了数组的工作原理,有助于理解切片和映射提供的优雅和强大的功能。内部实现在Go语言里,数组是一个长度固定的数据类型,用于存储一段具有相同的类型的元素的连续块。下图中可以到数组的表示。数组是一种非常有用的数据结构,因为其占用的内存是连续分配的。由于内存连续,CPU能把正在使用的数据缓存更久的时间。而且内存连续很容易计...

2019-05-20 20:57:00 266

转载 SpringCloud学习(八)消息总线(Spring Cloud Bus)(Finchley版本)

Spring Cloud Bus 将分布式的节点用轻量的消息代理连接起来。它可以用于广播配置文件的更改或者服务之间的通讯,也可以用于监控。本文要讲述的是用Spring Cloud Bus实现通知微服务架构的配置文件的更改。准备工作本文还是基于上一篇文章来实现。按照官方文档,我们只需要在配置文件中配置 spring-cloud-starter-bus-amqp ;这就是说我们需要装ra...

2019-05-20 08:35:00 86

转载 Go语言中的打包和工具链

包所有Go语言的程序都会组织成若干组文件,每组文件被称为一个包。这样每个包的代码都可以作为很小的复用单元,被其他项目引用。包名惯例给包命名的惯例是使用包所在目录的名字。并不需要所有包的名字都与别的包不同,因为导入包时是使用全路径的,所以可以区分同名的不同包。main包Go语言的编译程序会试图把这种名字的包编译为二进制可执行文件。所有用Go语言编译的可执行程序都必须有一个名为ma...

2019-05-20 00:23:00 198

转载 SpringCloud学习(七)高可用的分布式配置中心(Spring Cloud Config)(Finchley版本)

上一篇文章讲述了一个服务如何从配置中心读取文件,配置中心如何从远程git读取配置文件,当服务实例很多时,都从配置中心读取文件,这时可以考虑将配置中心做成一个微服务,将其集群化,从而达到高可用准备工作创建一个eureka-server工程,用作服务注册中心。在其pom.xml文件引入Eureka的起步依赖spring-cloud-starter-netflix- eureka-ser...

2019-05-19 21:27:00 75

转载 SpringCloud学习(六)分布式配置中心(Spring Cloud Config)(Finchley版本)

在上一篇文章讲述zuul的时候,已经提到过,使用配置服务来保存各个服务的配置文件。它就是Spring Cloud Config。简介在分布式系统中,由于服务数量巨多,为了方便服务配置文件统一管理,实时更新,所以需要分布式配置中心组件。在Spring Cloud中,有分布式配置中心组件spring cloud config ,它支持配置服务放在配置服务的内存中(即本地),也支持放在远程...

2019-05-18 23:13:00 59

转载 SpringCloud学习(五)路由网关(zuul)(Finchley版本)

在微服务架构中,需要几个基础的服务治理组件,包括服务注册与发现、服务消费、负载均衡、断路器、智能路由、配置管理等,由这几个基础组件相互协作,共同组建了一个简单的微服务系统。一个简单的微服务系统如下图:Cloud微服务系统中,一种常见的负载均衡方式是,客户端的请求首先经过负载均衡(zuul、Ngnix),再到达服务网关(zuul集群),然后再到具体的服。,服务统一注册到高可用的服务注册...

2019-05-18 22:15:00 71

转载 Golang语言细节小结

前段时间,看了菜鸟入门,较浅的认识一下golang的语法习惯和规则,然后跟别人做了个爬虫项目,但是对于golang语言的语法结构还不是很懂。又看了遍《go实战》第二章。构建程序在构建可执行文件时,需要找到这个已经声明的main函数,把它作为程序的入口。关键字import就是导入一段代码,让用户可以访问其中的标识符,如类型、函数、常量和接口。所有处于同一个文件夹里的代码文件,必须使用...

2019-05-18 20:28:00 124

转载 SpringCloud学习(四)断路器(Hystrix)(Finchley版本)

在微服务架构中,根据业务来拆分成一个个的服务,服务与服务之间可以相互调用(RPC),在Spring Cloud可以用RestTemplate+Ribbon和Feign来调用。为了保证其高可用,单个服务通常会集群部署。由于网络原因或者自身的原因,服务并不能保证100%可用,如果单个服务出现问题,调用这个服务就会出现线程阻塞,此时若有大量的请求涌入,Servlet容器的线程资源会被消耗完毕,...

2019-05-16 23:58:00 73

转载 SpringCloud学习(三)服务消费者(Feign)(Finchley版本)

上一篇文章,讲述了如何通过RestTemplate+Ribbon去消费服务,这篇文章主要讲述如何通过Feign去消费服务。Feign简介Feign是一个声明式的伪Http客户端,它使得写Http客户端变得更简单。使用Feign,只需要创建一个接口并注解。它具有可插拔的注解特性,可使用Feign 注解和JAX-RS注解。Feign支持可插拔的编码器和解码器。Feign默认集成了Ribb...

2019-05-16 00:30:00 97

转载 go爬虫系列

一、go语言爬取豆瓣电影top250package mainimport ( "net/http" "io/ioutil" "os" "fmt" "strconv" "regexp" "time")//定义新的数据类型type Spider struct { url string header m...

2019-05-15 22:47:00 232

转载 SpringCloud学习(二)服务消费者(rest+ribbon)(Finchley版本)

在微服务架构中,业务都会被拆分成一个独立的服务,服务与服务的通讯是基于http restful的。Spring cloud有两种服务调用方式,一种是ribbon+restTemplate,另一种是feign。ribbon简介Ribbon is a client-side load balancer that gives you a lot of control over the be...

2019-05-14 21:42:00 95

空空如也

空空如也

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

TA关注的人

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