- 博客(139)
- 资源 (6)
- 问答 (1)
- 收藏
- 关注
原创 curl 工具用法指南
curl是一种命令行工具,作用是发出网络请求,然后得到和提取数据,显示在"标准输出"(stdout)上面。一、查看网页源码直接在curl命令后加上网址,就可以看到网页源码。我们以网址www.sina.com为例(选择该网址,主要因为它的网页代码较短):$ curl www.sina.com <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN"> <html><head> <title>301 M
2022-01-07 14:41:01
2045
1
原创 csdn编辑器markdown常用语法
@[toc]文章目录功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表功能快捷键撤销:<kbd>Ctrl</kbd> + <kbd>Z</kbd>撤销:Ctrl + Z重做:Ctrl + Y加粗:Ctrl + B斜体:Ctrl + I标题:Ctrl + Shift + H无序列表:Ctrl + Shi
2022-01-07 13:51:01
256
原创 myql Explain 详解与索引最佳实践
文章目录一、Explain概述二、准备工作三、Explain类型四、explain 中的列1. id列1)简单子查询2)from 子句中的子查询3)union查询2. select_type列3. table列==4. type列==5. possible_keys列==6. key列==7. key_len列8. ref列==9. rows列====10. Extra列==五、索引最佳实践使用的表最佳实践1. 全值匹配2.最佳左前缀法则3.不在索引列上做任何操作(计算、函数、(自动or手动)类型转换),会
2021-07-14 16:27:07
302
原创 mysql 索引底层数据结构和原理
1. 索引是什么?索引是帮助MySQL高效获取数据的排好序的数据结构2. 磁盘存取原理?寻道时间(速度慢,费时)旋转时间(速度较快)表中每一行记录在磁盘上不一定是连续的!因为往同一张表中插入数据是存在时间间隔的,这样在间隔期磁盘上会有其他数据写入。磁盘组成部分:多个盘片(逆时针旋转) + 磁柱 + 磁头(左右移动)数据存储在磁道中间的扇区一次磁盘IO = (磁头)寻道时间 + (盘片)旋转时间3. 为什么要用 BTREE 作为索引数据结构?二叉树红黑树
2021-07-14 11:32:42
179
原创 mysql 日志系统:一条SQL更新语句是如何执行的?
目录重要的日志模块:redo log重要的日志模块:binlog两阶段提交小结前面我们系统了解了一个查询语句的执行流程,并介绍了执行过程中涉及的处理模块。相信你还记得,一条查询语句的执行过程一般是经过连接器、分析器、优化器、执行器等功能模块,最后到达存储引擎。那么,一条更新语句的执行流程又是怎样的呢?之前你可能经常听 DBA 同事说,MySQL 可以恢复到半个月内任意一秒的状态,惊叹的同时,你是不是心中也会不免会好奇,这是怎样做到的呢?我们还是从一个表的一条更新语句说起,下面
2021-07-13 20:23:58
127
原创 mysql 基础架构:一条SQL查询语句是如何执行的?
目录连接器查询缓存分析器优化器执行器下面我给出的是 MySQL 的基本架构示意图,从中你可以清楚地看到 SQL 语句在 MySQL 的各个功能模块中的执行过程。大体来说,MySQL 可以分为 Server 层和存储引擎层两部分。Server 层包括连接器、查询缓存、分析器、优化器、执行器等,涵盖 MySQL 的大多数核心服务功能,以及所有的内置函数(如日期、时间、数学和加密函数等),所有跨存储引擎的功能都在这一层实现,比如存储过程、触发器、视图等。而存储引擎层负责数.
2021-07-13 16:31:00
111
原创 Spark入门系列(二)
Spark基础使用下载Spark使用 Spark 的第一步是下载和解压缩。我们先从下载预编译版本的 Spark 开始。访问 http://spark.apache.org/downloads.html, 选 择 包 类 型 为“Pre-built for Hadoop 2.4 and later”( 为Hadoop 2.4 及更新版本预编译的版本),然后选择“Direct Download”直接下载。这样我们就可以得到一个压缩的 TAR 文件,文件名为 spark-1.2.0-bin-hadoop2.4
2021-04-12 22:53:57
182
原创 Spark入门系列(一)
1. Spark 简介Spark 项目包含多个紧密集成的组件。Spark 的核心是一个对由很多计算任务组成的、运行在多个工作机器或者是一个计算集群上的应用进行调度、分发以及监控的计算引擎。由于Spark 的核心引擎有着速度快和通用的特点,因此 Spark 还支持为各种不同应用场景专门设计的高级组件,比如 SQL 和机器学习等。这些组件关系密切并且可以相互调用,这样你就可以像在平常软件项目中使用程序库那样,组合使用这些的组件。...
2021-04-11 22:30:28
597
原创 垃圾收集器与内存分配策略系列(五)
实战:内存分配策略1. 对象优先在Eden分配2. 大对象直接进入老年代3. 长期存活的对象将进入老年代1. 对象优先在Eden分配大多数情况下,对象在新生代Eden区中分配。当Eden区没有足够空间进行分配时,虚拟机将发起 一次Minor GC。HotSpot虚拟机提供了-XX:+PrintGCDetails这个收集器日志参数,告诉虚拟机在发生垃圾收集行为时打印内存回收日志,并且在进程退出的时候输出当前的内存各区域分配情况。在实际的问题排查 中,收集器日志常会打印到文件后通过工具进行分析。在下列代
2021-04-07 23:09:20
128
原创 垃圾收集器与内存分配策略系列(四)
虚拟机及垃圾收集器日志阅读分析虚拟机和垃圾收集器的日志是处理Java虚拟机内存问题必备的基础技能,垃圾收集器日 志是一系列人为设定的规则,多少有点随开发者编码时的心情而定,没有任何的“业界标准”可言,换 句话说,每个收集器的日志格式都可能不一样。除此以外还有一个麻烦,在JDK 9以前,HotSpot并没 有提供统一的日志处理框架,虚拟机各个功能模块的日志开关分布在不同的参数上,日志级别、循环日志大小、输出格式、重定向等设置在不同功能上都要单独解决。直到JDK 9,这种混乱不堪的局面 才终于消失,HotSp
2021-04-06 22:48:22
124
原创 idea中svn的使用
public final void await() throws InterruptedException { if (Thread.interrupted()) throw new InterruptedException(); // Node node = addConditionWaiter(); int savedState = fullyRelease(node); int interruptMode = 0; while (!is
2021-04-06 18:02:20
288
原创 垃圾收集器与内存分配策略系列(三)
经典垃圾收集器1. Serial收集器2. ParNew收集器3. Parallel Scavenge收集器4. Serial Old收集器5. Parallel Old收集器6. CMS收集器7. Garbage First(G1)收集器1. Serial收集器Serial收集器是最基础、历史最悠久的收集器。这个收集器是一个单线程工作的收集器,但它的“单线 程”的意义并不仅仅是说明它只会使用一个处理器或一条收集线程去完成垃圾收集工作,更重要的是强调在它进行垃圾收集时,必须暂停其他所有工作线程,直到它
2021-04-05 22:54:22
143
原创 垃圾收集器与内存分配策略系列(二)
垃圾收集器与内存分配策略系列(二)1. 垃圾收集算法1.1. 分代收集理论1.2. 标记-清除算法1.3. 标记-复制算法1.4. 标记-整理算法1. 垃圾收集算法从如何判定对象消亡的角度出发,垃圾收集算法可以划分为“引用计数式垃圾收集”(Reference Counting GC)和“追踪式垃圾收集”(Tracing GC)两大类,这两类也常被称作“直接垃圾收集”和“间接 垃圾收集”。由于引用计数式垃圾收集算法在主流Java虚拟机中均未涉及,所以以下讨论的所有垃圾回收算法均属于追踪式垃圾收集的范畴。
2021-04-05 12:32:27
135
原创 垃圾收集器与内存分配策略系列(一)
1. GC概述经过半个世纪的发展,今天的内存动态分配与内存回收技术已经相当成熟,一切看起来都进入了“自动化”时代,那为什么我们还要去了解垃圾收集和内存分配?答案很简单:当需要排查各种内存 溢出、内存泄漏问题时,当垃圾收集成为系统达到更高并发量的瓶颈时,我们就必须对这些“自动化”的技术实施必要的监控和调节Java内存运行时区域的各个部分,其中程序计数器、虚拟机栈、本地方法栈3个区域随线程而生,随线程而灭,栈中的栈帧随着方法的进入和退出而有条不紊地执行着出栈和入栈操作。每一个栈帧中分配多少内存基本上是在
2021-04-05 09:36:26
75
原创 maven工程修改JDK版本
1. 全局配置(所有项目有效)maven的settings.xml文件中的<profile>标签中加入如下配置:<profile> <id>jdk-1.8</id> <activation> <activeByDefault>true</activeByDefault> <jdk>1.8</jdk> </activation&g...
2021-03-29 16:31:15
350
原创 线程安全与锁优化
1. 线程安全1.1. 什么是线程安全线程安全的代码必须都具备一个特征:代码本身封装了所有必要的正确性保障手段(如互斥同步等),令调用者无须关心多线程的问题,更无须自己实现任何措施来保证多线程的正确调用。1.2. 线程安全的实现方法...
2021-03-09 16:18:29
205
原创 Java 内存模型与线程
1. 概述并发处理的广泛应用是使得Amdahl定律代替摩尔定律成为计算机性能发展源动力的根本原因,也是人类压榨计算机运算能力最有力的武器。Amdahl定律通过系统中并行化与串行化的比重来描述多处理器系统能获得的运算加速能力,摩尔定律则 用于描述处理器晶体管数量与运行效率之间的发展关系。这两个定律的更替代表了近年来硬件发展从追求 处理器频率到追求多核心并行处理的发展过程。2.硬件的效率与一致性物理机遇到的并发问题与虚拟机中的情况有不少相似之处,物理机对并发的处理方案对虚拟机的实现也有相当.
2021-03-06 23:31:21
153
原创 java 泛型详解
1. 一个栗子一个被举了无数次的例子:List arrayList = new ArrayList();arrayList.add("aaaa");arrayList.add(100);for(int i = 0; i< arrayList.size();i++){ String item = (String)arrayList.get(i); Log.d(...
2019-11-30 21:35:19
186
原创 redis 高可用集群之水平扩展
Redis3.0以后的版本虽然有了集群功能,提供了比之前版本的哨兵模式更高的性能与可用性,但是集群的水平扩展却比较麻烦,今天就来带大家看看redis高可用集群如何做水平扩展,原始集群(见下图)由6个节点组成,6个节点分布在三台机器上,采用三主三从的模式1、启动集群# 启动整个集群cd /usr/local/redis-clusterbin/redis-server 9001/r...
2019-11-13 17:49:41
876
原创 Redis 5.0.0 安装(集群)
一、Redis集群方案比较哨兵模式在redis3.0以前的版本要实现集群一般是借助哨兵sentinel工具来监控master节点的状态,如果master节点异常,则会做主从切换,将某一台slave作为master,哨兵的配置略微复杂,并且性能和高可用性等各方面表现一般,特别是在主从切换的瞬间存在访问瞬断的情况,而且哨兵模式只有一个主节点对外提供服务,没法支持很高的并发,且单个主节点内存...
2019-11-13 11:02:44
605
转载 Apollo(阿波罗)架构深度剖析
通过学习 Apollo 的架构,带你深入理解微服务架构的基本原理一、介绍Apollo(阿波罗)[参考附录] 是携程框架部研发并开源的一款生产级的配置中心产品,它能够集中管理应用在不同环境、不同集群的配置,配置修改后能够实时推送到应用端,并且具备规范的权限、流程治理等特性,适用于微服务配置管理场景。Apollo 目前在国内开发者社区比较热,在 Github 上有超过 5k 颗星,在国内众多互联...
2019-10-23 09:29:51
20249
1
转载 Spring Boot整合Swagger2构建RESTful API
Swagger是一款可以快速生成符合RESTful风格API并进行在线调试的插件。本文将介绍如何在Spring Boot中整合Swagger。在此之前,我们先聊聊什么是REST。REST实际上为RepresentationalStateTransfer的缩写,翻译为“表现层状态转化” 。如果一个架构符合REST 原则,就称它为RESTful架构。实际上,“表现层状态转化”省略了主语,完...
2019-09-17 13:50:27
216
转载 自定义Spring Boot 内容协商
内容协商机制是指客户端和服务器端就响应的资源内容进行交涉,然后提供给客户端最为适合的资源。内容协商会以响应资源的语言、字符集、编码方式等作为判断的基准。HTTP请求头中Content-Type,Accept等内容就是内容协商判断的标准。在Spring Boot中,一个完整的内容协商过程如下图所示:这个过程的核心组件:组件 名称 说明 ContentNegotiat...
2019-09-15 17:22:43
942
转载 Spring Boot整合Dubbo&Zookeeper
Dubbo是一款由阿里巴巴开发的远程服务调用框架(RPC),其可以透明化的调用远程服务,就像调用本地服务一样简单。截至目前,Dubbo发布了基于Spring Boot构建的版本,版本号为0.2.0,这使得其与Spring Boot项目整合变得更为简单方便。而Zookeeper在这里充当的是服务注册中心的角色,我们将各个微服务提供的服务通过Dubbo注册到Zookeeper中,然后服务消费者通过Du...
2019-09-15 15:58:16
728
1
转载 深入学习Spring Boot中的SpringApplication
在Spring Boot的入口类中,我们通常是通过调用SpringApplication的run方法来启动Spring Boot项目。这节我们来深入学习下SpringApplication的一些细节。自定义SpringApplication默认的我们都是直接通过SpringApplication的run方法来直接启动Spring Boot,其实我们可以通过一些API来调整某些行为。通过...
2019-09-15 11:54:40
1856
转载 Spring Boot整合Kafka
Kafka是一个分布式的、可分区的、可复制的消息系统,下面是Kafka的几个基本术语: Kafka将消息以topic为单位进行归纳; 将向Kafka topic发布消息的程序成为producers; 将预订topics并消费消息的程序成为consumer; Kafka以集群的方式运行,可以由一个或多个服务组成,每个服务叫做一个broker。 producer...
2019-09-15 10:47:37
1663
转载 Spring Boot 中的异步调用
通常我们开发的程序都是同步调用的,即程序按照代码的顺序一行一行的逐步往下执行,每一行代码都必须等待上一行代码执行完毕才能开始执行。而异步编程则没有这个限制,代码的调用不再是阻塞的。所以在一些情景下,通过异步编程可以提高效率,提升接口的吞吐量。这节将介绍如何在Spring Boot中进行异步编程。开启异步新建一个Spring Boot项目,版本为2.1.0.RELEASE,并引入spring...
2019-09-15 10:23:50
199
转载 Spring Boot 中处理跨域
HTML 5中新增的跨域资源访问(Cross-Origin Resource Sharing)特性可以让我们在开发后端系统的时候决定资源是否允许被跨域访问。所谓跨域指的是域名不同或者端口不同或者协议不同,比如当从mrbrid.cc网站访问mrbird.cc:8080网站资源就会存在跨域问题。Spring从4.2版本开始就提供了跨域的支持,开箱即用。这里介绍如何在Spring Boot开发中解决跨域...
2019-09-15 09:33:03
656
原创 深入学习Spring Boot自动装配
模式注解Stereotype Annotation俗称为模式注解,Spring中常见的模式注解有@Service,@Repository,@Controller等,它们都“派生”自@Component注解。我们都知道,凡是被@Component标注的类都会被Spring扫描并纳入到IOC容器中,那么由@Component派生的注解所标注的类也会被扫描到IOC容器中。下面我们主要来通过自定义模式...
2019-09-15 09:19:52
214
转载 深入学习Spring Bean生命周期
所谓Spring Bean的生命周期指的是Bean从创建到初始化再到销毁的过程,这个过程由IOC容器管理。一个完整的Bean生命周期可以参考Spring Bean生命周期。这里我们主要记录一些和Bean生命周期相关的细节。Bean的初始化和销毁在整个生命周期过程中,我们可以自定义Bean的初始化和销毁钩子函数,当Bean的生命周期到达相应的阶段的时候,Spring会调用我们自定义的Bean...
2019-09-14 21:36:34
204
转载 深入学习 Spring 组件注册
接触过Spring的同学肯定都听过IOC。在传统的Java编程中,当需要用到某个对象的时候,我们都是主动地显示创建一个对象实例(new)。使用Spring后就不需要这样做了,因为Spring会帮我们在需要用到某些对象的地方自动注入该对象,而无须我们自己去创建。这种模式俗称控制反转,即IOC(Inversion of Control)。那么Spring是从什么地方获取到我们所需要的对象呢?其实Spr...
2019-09-14 21:19:26
324
原创 idea 中 “XXX has broken path” 错误解决
今天在idea中导一个包时(mybaits-plus-generator,位于maven子模块中),看右边 Maven Projects 中已经加到 Dependencies 里,但是在项目目录结构下面 External Libraries(整个项目依赖的包都在这里) 里一直看不到导入进来。刚开始想着一般是因为maven导入包时有问题,所以依次采取了以下排查步骤:1. 把maven 本地仓...
2019-09-10 17:47:43
22487
9
转载 (转)史上最简单的SpringCloud教程 | 第七篇: 高可用的分布式配置中心(Spring Cloud Config)
最新Finchley版本请访问:https://www.fangzhipeng.com/springcloud/2018/08/07/sc-f7-config.html或者http://blog.youkuaiyun.com/forezp/article/details/81041045上一篇文章讲述了一个服务如何从配置中心读取文件,配置中心如何从远程git读取配置文件,当服务实例很多时,都从配置中心...
2019-09-06 17:03:30
119
转载 (转)史上最简单的SpringCloud教程 | 第六篇: 分布式配置中心(Spring Cloud Config)
最新Finchley版本:https://www.fangzhipeng.com/springcloud/2018/08/06/sc-f6-config.html或者http://blog.youkuaiyun.com/forezp/article/details/81041028在上一篇文章讲述zuul的时候,已经提到过,使用配置服务来保存各个服务的配置文件。它就是Spring Cloud Conf...
2019-09-06 16:23:15
327
转载 (转)史上最简单的SpringCloud教程 | 第五篇: 路由网关(zuul)(Finchley版本)
在微服务架构中,需要几个基础的服务治理组件,包括服务注册与发现、服务消费、负载均衡、断路器、智能路由、配置管理等,由这几个基础组件相互协作,共同组建了一个简单的微服务系统。一个简单的微服务系统如下图:注意:A服务和B服务是可以相互调用的,作图的时候忘记了。并且配置服务也是注册到服务注册中心的。在Spring Cloud微服务系统中,一种常见的负载均衡方式是,客户端的请求首先经过负载均衡...
2019-09-04 15:04:28
117
转载 (转)史上最简单的SpringCloud教程 | 第四篇:断路器(Hystrix)(Finchley版本)
在微服务架构中,根据业务来拆分成一个个的服务,服务与服务之间可以相互调用(RPC),在Spring Cloud可以用RestTemplate+Ribbon和Feign来调用。为了保证其高可用,单个服务通常会集群部署。由于网络原因或者自身的原因,服务并不能保证100%可用,如果单个服务出现问题,调用这个服务就会出现线程阻塞,此时若有大量的请求涌入,Servlet容器的线程资源会被消耗完毕,导致服务瘫...
2019-09-04 14:46:32
133
转载 (转)史上最简单的SpringCloud教程 | 第三篇: 服务消费者(Feign)(Finchley版本)
上一篇文章,讲述了如何通过RestTemplate+Ribbon去消费服务,这篇文章主要讲述如何通过Feign去消费服务。一、Feign简介Feign是一个声明式的伪Http客户端,它使得写Http客户端变得更简单。使用Feign,只需要创建一个接口并注解。它具有可插拔的注解特性,可使用Feign 注解和JAX-RS注解。Feign支持可插拔的编码器和解码器。Feign默认集成了Ribbo...
2019-09-04 14:28:52
125
转载 (转)史上最简单的SpringCloud教程 | 第二篇: 服务消费者(rest+ribbon)(Finchley版本)
在上一篇文章,讲了服务的注册和发现。在微服务架构中,业务都会被拆分成一个个独立的服务,服务与服务的通讯是基于http restful的。Spring cloud有两种服务调用方式,一种是ribbon+restTemplate,另一种是feign。在这一篇文章首先讲解下基于ribbon+rest。一、ribbon简介Ribbon is a client side load balancer...
2019-09-04 14:18:42
129
转载 (转)史上最简单的 SpringCloud 教程 | 第一篇: 服务的注册与发现Eureka(Finchley版本)
一、spring cloud 简介鉴于《史上最简单的Spring Cloud教程》很受读者欢迎,再次我特意升级了一下版本,目前支持的版本为Spring Boot版本2.0.3.RELEASE, Spring Cloud版本为Finchley.RELEASE。Finchley版本的官方文档如下:https://cloud.spring.io/spring-cloud-static/Fi...
2019-09-04 14:05:14
157
原创 axios使用及配置明细小记
Axios 是一个基于 promise 的 HTTP 库,可以用在浏览器和 node.js 中。1. Features从浏览器中创建XMLHttpRequests 从 node.js 创建http请求 支持PromiseAPI 拦截请求和响应 转换请求数据和响应数据 取消请求 自动转换 JSON 数据 客户端支持防御XSRF2. 安装使用 npm:$ ...
2019-08-07 10:19:48
8706
1
Java并发编程的艺术 (Java核心技术系列).pdf
2018-05-01
j2ee轻量级企业开发第三版.pdf
2018-05-01
Maven实战.pdf
2018-05-01
类的初始化过程不懂,求大神解释
2015-07-13
TA创建的收藏夹 TA关注的收藏夹
TA关注的人