自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Seina

https://github.com/gaoshengnan

  • 博客(59)
  • 资源 (2)
  • 收藏
  • 关注

原创 SpringCloud组件---Eureka Server详细启动过程及图解

EurekaServer作为注册中心,记录着所有应用的信息和状态,应用叫什么名字,在哪个服务器上, 以及目前是不是正常工作,注册中心按照服务名分类组织服务清单,同时还需要以心跳检测的方式去监测清单中的服务是否可用,若不可用需要从服务清单中剔除,以达到排除故障服务的效果。下面演示怎么启动 Springcloud-eureka-server首先创建项目,需要注意两点:1、需要在有网的环境...

2018-07-12 11:39:38 13270 5

原创 @JsonView的使用方法

用来过滤序列化对象的属性,可以有选择的序列化对象,首先定义一个 View 类,里面包含我们对要序列化的字段的定义,也可以将 View 类理解为一组标识。首先使用接口来声明试图,userSimpleView 和 userDetailView,然后在属性的 get 方法上面指定视图:public class User { public interface userSimpleVie...

2018-07-09 21:52:39 8689

原创 @Valid注解是什么

@Valid用于验证注解是否符合要求,直接加在变量user之前,在变量中添加验证信息的要求,当不符合要求时就会在方法中返回message 的错误提示信息。@RestController@RequestMapping("/user")public class UserController { @PostMapping public User create (@Valid...

2018-07-09 21:31:30 239273 24

原创 编译执行和解释执行有什么区别

什么是脚本:脚本是嵌入式代码,无需编译器就可以在环境中运行,起到解释作用动态程序一般有两种方式:1、二进制方式是将我们编写的程序进行编译,编程机器可以识别的指令代码,然后再执行,这种已编译好的程序让我们只能执行,使用,却看不他的程序内容2、脚本方式是一条条命令,在执行时,是由系统的解释器,将其一条条翻译成机器可识别的指令,例如shell脚本是由shell程序执行的,js是由浏览器解释执...

2018-01-18 16:23:52 15999

原创 Git是什么鬼,适合小白观看~

首先我是上来就开始用 Git,然后同事跑我这里一顿命令,窗口从哪里打开的都不知道,操作完问题解决就走了,what?我完全没看懂他在做什么,下一次无论我要克隆项目还是提交我还是不会,于是同事又过来一顿弄,最后还是没看懂 ~ 最后就想说学东西最好是系统的去学习,由浅到深,无论是别人说出表面的东西还是更深的东西,都需要自己首先对 Git 有些掌握才能听得懂,否则这一块那一块的最终还是不会懂 ...

2018-01-16 19:40:19 9591 3

原创 一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法。

解法1 暴力法代码如下:public int climbingStairs(int n) { return climb(0, n); } /** * 递归模拟爬楼梯在每层每次走一步或者两步的所有情况 * * @param i:当前台阶数 * @param n:总的台阶数 * @return 总共有...

2018-01-15 21:03:13 25669 3

原创 MySQL 必知必会读书笔记

周末晚上花了一点时间读了一下【MySQL 必知必会】 这本书,有一些小的知识点记录一下主键任意两行都不具有相同的主键值每个行都必须有一个主键值,不允许 NULL 值可以使用多个列组合作为主键,所有列值组合是唯一的(其中某个列可以不唯一)DISTINCT用在查询字段的时候去重SELECT DISTINCE user_id FROM userORDER BY排序关键字,除了单个字段排序,还可以多个字段排序和 WHERE 一起使用时,位于 WHERE 之后..

2021-12-12 23:55:17 3383

原创 关于为什么新生代使用复制算法需要两个 survior 区做一些自己的理解

首先讲一下复制算法复制算法将可用内存按容量划分为大小相等的两块,每次只使用其中的一块。当这一块的内存用完了,就将还存活着的对象复制到另外一块上面,然后再把已使用过的内存空间一次清理掉。(此时注意是先复制存活对象,然后在回收调 si 的对象,后面有用)然后讲一下如果没有 survior 区会怎么样?如果没有 Survivor,Eden 区每进行一次 Minor GC,存活的对象就会被送到老年代。老年代很快被填满,触发 Full GC。老年代的内存空间远大于新生代,进行一次Full GC 消耗的时间比

2021-03-31 17:05:59 4629

原创 关于中台的那些事情,你真的都知道吗?

中台的发展史2019 年截至目前,如果说 IT 圈有哪些能称之为热点,那中台一定会占据一席之地。今天我想就带你回到 10 年前,回到中台诞生的起点,我们随着时间的脚步一起重新走一遍中台的诞生和发展之路,来看看中台究竟从哪里来,又将走向何处? 业务数据双中台?那么什么是业务中台呢,可以理解成狭义的业务中台,通过将不同业务线相同问题域的解决方案进行...

2020-01-09 19:41:25 3542

原创 多线程编程的硬件基础与 Java 内存模型

一、硬件基础主内存执行一次读、写操作所需的时间可能足够处理器执行上百条的指令,为了弥补处理器与主内存处理能力之间的鸿沟,硬件设计者在主内存与处理器之间引入了高速缓存(Cache)1、高速缓存是一种存取速率远比主内存大,容量远比主内存小的存储部件,每个处理器都有其高速缓存。引入高速缓存之后,处理器在执行内存读、写操作的时候并不直接与主内存打交道,而是通过高速缓存进行。高速缓存相当于一个拉链...

2019-07-08 00:55:36 357

原创 leetcode25 - 合并两个有序链表

/** * * <p> * * 将两个有序链表合并为一个新的有序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。 * * 示例: * * 输入:1->2->4, 1->3->4 * 输出:1->1->2->3->4->4 * * </p> * * @author Seina ...

2019-06-15 13:39:55 239

原创 面试高频出现的 leetcode 算法题集(重中之重)

以下列出面试高频出现,以及一些非常经典重要的算法题: 表示已完成实战题目 - Array [11] 盛最多水的容器 [26] 删除排序数组中的重复项 [66] 加一 [70] 爬楼梯 [88] 合并两个有序数组 [189] 旋转数组 [283] 移动零实战题目 - Linked List [21] 合并两个有序链表 [24] 两...

2019-06-03 23:40:24 28991 2

原创 分治算法在海量数据处理中的应用

分治算法核心思想就是分而治之,将原问题划分成 n 个规模较小,并且结构与原问题相似的子问题,递归地解决这些子问题,然后再合并结果,就得到原问题的解。这个定义看起来有点类似递归。关于递归和分治的区别:分治算法是一种处理问题的思想,递归是一种编程技巧。实际上,分治算法一般都比较适合用递归来实现,分治算法的递归实现中,每一层递归都会涉及这样三个操作: 分解:将原问题分解成一系列子问题 ...

2019-05-29 15:16:37 1264

原创 贪心算法 + 霍夫曼编码

贪心、分治、回溯、动态规划这 4 个算法思想,原理解释起来都很简单,但是要真正掌握且灵活应用,并不是一件容易的事。贪心算法贪心算法有很多经典的应用,比如霍夫曼编码、Prim 和 Kruskal 最小生成树算法、还有 Dihkstra 单源最短路径算法。如何理解贪心算法?假设我们有一个可以容纳 100kg 物品的背包,可以装以下 5 种豆子,每种豆子的总量和总价值各不相同,为了使背包...

2019-05-28 17:32:19 1294

原创 Elasticsearch 分布式特性(集群、节点、分片)

一、es 分布式特性es 支持集群模式,是一个分布式系统,其好处有两个:增大系统容量,如内存、磁盘,使得 es 集群可以支持 PB 级的数据提高系统可用性,即使部分节点停止服务,整个集群依然可以正常运行es 集群由多个 es 实例组成不同集群通过集群名字来区分,可通过 cluster.name 进行修改,默认为 elasticsearch每个 es 实例本质是一个 JVM 进程,...

2019-05-27 16:00:57 3004

原创 Elasticsearch Search API - Request Body Search

如需了解URL Search,请点击上文 Elasticsearch Search API - URL Search二、Request Body Search将查询语句通过 http request body 发送到 es,主要包含如下参数:query: 符合 Query DSL 语法的查询语句from,size、timeout、sort 和 URI Search 类似Query D...

2019-05-24 17:22:39 662

原创 Elasticsearch Search API - URL Search

一、了解 Search API实现对 es 中存储的数据进行查询,endpoint 为 _search,如下所示://查询全部GET /_search //指定单个索引查询GET /my_index/_search //指定多个索引查询GET /my_index1,my_index2/_search //通配符查询GET /my_*/_search 查询主要由两种形式...

2019-05-23 18:08:57 1324 1

原创 ElasticSearch 倒排索引与分词详细说明

正排索引:文档 Id 到文档内容、单词的关联关系文档 ID文档内容1elasticsearch 是最流行的搜索引擎2php 是世界上最好的语言3搜索引擎是如何诞生的倒排索引:单词到文档 Id 的关联关系单词文档 ID 列表elasticsearch1流行1搜索引擎1、3php2世界2最好2...

2019-05-21 21:58:52 1475

原创 ElasticSearch 入门 - 文档和索引 API

一、索引相关基础操作1. 获取所有的索引GET /_cat/indices?v2. 创建一个名叫 customer 的索引PUT /customer?pretty3. 删除名 customer 的索引DELETE /customer?二、文档相关基础操作1. 向 customer 索引中加入一个文档 ( 指出 id )PUT /customer/_doc/1?pretty...

2019-05-21 18:27:08 511

原创 MySQL 全局锁和表锁是什么

数据库锁设计的初衷是处理并发问题,作为多用户共享的资源,当出现并发访问的时候,数据库要合理地控制资源的访问规则,而锁就是用来实现这些访问规则的重要数据结构。根据加锁的范围,MySQL 里面的锁大致可以分成全局锁、表级锁和行锁三类。全局锁全局锁就是对整个数据库实例加锁,MySQL 提供了一个加全局读锁的方法,命令是Flush tables with read lock(FTWRL)。当你...

2019-05-20 23:08:34 4460

原创 你所需要的的数据库事务及隔离级别

简单来说,事务就是要保证一组数据库操作,要么全部成功,要么全部失败,在 MySQL 中,事务支持是在引擎层实现的。一、事务的acid分别是什么原子性(Atomicity):事务是一个原子操作单元,其对数据的全部修改操作要么全都执行,要么全都不执行一致性(Consistent):在事务开始和完成时,数据都必须保持一致性状态,事务结束后所有的内部数据结构都必须是正确的隔离性(Isola...

2019-05-20 14:50:09 202

转载 MySQL 行锁、两阶段锁协议、死锁以及死锁检测

行锁MySQL的行锁都是在引擎层实现的,但是 MyISAM 不支持行锁,意味着并发控制只能使用表锁,同一张表任何时刻只能被一个更新在执行,影响到业务并发度。InnoDB 是支持行锁的,这也是 MyISAM 被 InnoDB 替换的重要原因之一。行锁就是针对数据库中表的行记录的锁,这很好理解,比如事务 A 更新了一行,而这时候,事务 B 也要更新一行,则必须等事务 A 的操作完成后才能更新。...

2019-05-16 20:46:24 6037 1

原创 MYSQL SQL 语句的 explain 解释器是什么 ?

一、explain 解释器 ( explain+sql 语句),explain 是什么,explain 能干什么?使用 explain 关键字可以模拟优化器执行 SQL 查询语句,从而知道 MySQL 是如何处理开发人员写的 SQL,分析 SQL 语句或是表结构的性能瓶颈可以知道 mysql 对表的读取顺序,数据读取操作的操作类型,以及哪些索引可以使用,哪些索引被实际使用,表之间的引用,每...

2019-05-15 16:40:27 1022

原创 MYSQL 存储引擎 InnoDB 和 MyISAM 有什么区别 ?

一、说一下 mysql 的逻辑架构MySQL 可以分为 Server 层和存储引擎层两部分。Server 层包括连接器、查询缓存、分析器、优化器、执行器等,涵盖 MySQL 的大多数核心服务功能,以及所有的内置函数(如日期、时间、数学和加密函数等),所有跨存储引擎的功能都在这一层实现,比如存储过程、触发器、视图等。而存储引擎层负责数据的存储和提取。其架构模式是插件式的,支持 ...

2019-05-15 16:37:27 622

原创 CentOS 7 下 yum 安装和配置 Mysql (亲测无坑)

注意:以下安装步骤请严格确认您的Linux distribution 是否是 CentOS 7 的版本,不是相同版本谨慎操作,所有操作亲测是对的,没有坑~~一、具体安装步骤:1、首先查看 Linux distribution 的版本号:[root@localhost /]# cat /etc/redhat-releaseCentOS Linux release 7.5.1...

2019-05-08 18:07:24 370

原创 CentOS 7 下 yum 安装和配置 Nginx (亲测无坑)

注意:以下安装步骤请严格确认您的Linux distribution 是否是 CentOS 7 的版本,不是相同版本谨慎操作,所有操作亲测是对的,没有坑~~一、什么是Nginx?个人理解:Apache 和 Nginx 是 HTTP server,而 Tomcat 是 Application server。Nginx 相比较 Apache 具有占用内存少,稳定性高等优势,是一...

2019-05-08 11:55:29 8212 2

原创 字符串匹配算法( BF 和 RK )

BF算法(Brute Force)- 暴力匹配算法先了解两个概念,主串和模式串,比如在字符串 A 中查找字符串 B,那么 A 就是主串,长度是 n,B 就是模式串,长度是 m。在匹配的过程中,假设 n = 10,m = 3,将主串拆分成【012、123、234、345、456、567、678、789】这些子串,然后将模式串分别和以上子串逐个对比,每次对比 3 个字符,一共对比 8 次(8个子串...

2019-05-07 22:57:02 257

原创 散列表是什么(散列函数、散列冲突、HashMap、LinkedHashMap)

一、什么是散列表 ?散列表用的是数组支持下标随机访问数据的特性,所以散列表其实就是数组的一种扩展,由数组演化而来。举个例子,我们将参赛选手设置一个编号,比如051167,表示 5 年级 11 班 67 号选手,然后在数组索引下标对应 67 的位置存储该选手,这就是典型的散列思想,我们将参赛选手的编号叫做键(key)或者关键字,用它来标识一个选手,把参赛编号转化为数组下标的映射方法就叫作散列函数...

2019-04-24 22:28:15 7996 6

原创 递归是什么,看完这篇文章保证你能理解递归!

一、递归对于我个人而言有人说,递归是一种优雅的问题解决办法,有人说,递归是一种算法或者一种编程技巧,其实无论别人怎么说,我相信大多数人初学 “递” “归” 的时候纠结去的过程叫“递”,回来的过程叫“归”,那么问题来了,去的时候做了什么,什么时候回来,回来的时候又做了什么?那我们带着问题继续阅读吧!二、正确姿势理解递归每个递归函数都有基线条件和递归条件两个部分:基线条件又可以理解成是终止条件,...

2019-04-18 00:45:34 4647 1

原创 队列是什么(顺序队列、链式队列、循环队列、阻塞队列、并发队列)

一、了解线程池我们知道,CPU资源是有限的,任务的处理速度与线程个数并不是线性正相关。相反,过多的线程反而会导致CPU频繁切换,处理性能下降。所以,线程池的大小一般都是综合考虑要处理任务的特点和硬件环境,来事先设置的。另外,当线程池没有空闲线程时,新的任务请求线程资源时,我们一般有两种处理策略,第一种是非阻塞的处理方式,直接拒绝任务请求;另一种是阻塞的处理方式,将请求排队,等到有空闲线程时...

2019-04-17 22:09:25 763

原创 栈是什么(支持动态扩容的顺序栈、链式栈)

栈是一种’操作受限’的线性表,只允许在一端插入和删除数据,并且满足后进先出,先进后出的特性。实际上,栈既可以用数组来实现,也可以用链表来实现,分别叫做顺序栈和链式栈。一、如何用数组来实现一个栈 ?/** 用数组实现一个栈,又称顺序栈*/public class ArrayStack { private String[] items;//数组 private int c...

2019-04-02 00:02:59 1243 1

原创 链表是什么(循环链表、双向链表)

链表链表不需要一块连续的内存空间,它通过指针将一组零散的内存块串联起来使用。其中每个内存块叫做链表的结点,记录下个结点地址的指针叫做后继指针。一 单链表链表的插入和删除是非常快速的,因为不需要做数据搬移,但是链表想要随机访问第k个元素就没有数组那么高效了,因为链表的数据不是连续的,没办法将首地址和下标带入寻址公式直接计算出对应的内存地址,而是需要根据指针一个结点一个结点的一次遍历,直到找到相...

2019-03-28 13:13:40 2702

原创 数组是什么(ArrayList)

数组是一种线性表数据结构,它用一组连续的内存空间,来存储一组具有相同类型的数据。一 访问数组适合查找操作,排好序的数组,用二分法查找,时间复杂度是O(logn)。数组支持随机访问,根据下标随机访问的时间复杂度是O(1)。二 插入如果在数组末尾插入,不需要移动数据,时间复杂度是O(1),如果在数组的开头插入元素,那么所有的数据都要一次往后移动一位,最坏时间复杂度是O(n)。如果数组中的数据...

2019-03-26 17:34:49 264

原创 ElasticSearcch6.4 — Reading and Writing documents 译

读写文档介绍ElasticSearch中的每个索引都分为多个主分片,每个主分片有多次复制,复制的这些版本被认作是副本群组,并且在添加和删除的时候必须保持一致,如果我们不这样做,那么从一个副本分片读取的内容可能就和从另一个副本分片读取的内容不一样了,保持主分片和副本分片同步, 保持从主分片和副本分片读取的内容一致称为数据复制模型。Elasticsearch的数据复制模型主要基于主备份模型...

2018-10-22 21:49:01 181

原创 ElasticSearch6.4 — Date math support in index names 译

在索引名称中支持日期数字索引名称中带日期数字使你可以搜索一系列时间段的索引,而不是搜索全部时间的索引,然后过滤结果或者维护别名。限制搜索的索引数可以减少集群的负载并且提高执行性能,例如,如果你想在日常的日志中搜索错误,你可以使用日期数字名称将索引限制为过去两天。几乎所有具有index参数的API都支持index参数值中的日期数学。日期数字名称索引采用以下格式:<stat...

2018-10-19 14:28:40 404

原创 ElasticSearch6.4 — Removal of mapping types 译

原文网址:https://www.elastic.co/guide/en/elasticsearch/reference/current/removal-of-types.html#removal-of-types删除映射类型在Elasticsearch 6.0.0 或者更高版本中创建的索引可能只包含单个映射类型,在5.x中创建的索引具有多种映射类型,这个功能将继续在6.x之前运...

2018-10-19 14:26:56 292

原创 ElasticSearch6.4 — Basic Concepts 译

接近实时 (NRT)Elasticsearch是一个接近实时的搜索平台,意思是从索引这个文档开始知道它变成饿了可搜索的文档只有轻微的延迟。集群一个集群是一个或者多个节点的集合,一起维护你全部的数据并且提供跨所有节点的联合索引和搜索功能,集群通常被唯一的名字标识,通常默认是“elasticsearch”,这个名字是很重要的,因为如果一个节点被设置加入集群需要通过名字才能成为集群的一...

2018-10-19 14:24:21 263

原创 SonarQube — 使用 SonarQube 扫描分析 Maven 译

目录 Features特征 Compatibility兼容性 Prerequisites先决条件 Initial Setup初始设置 Global Settings全局设置 Analyzing a Maven Project分析Maven项目 Configuring the SonarQube Anal...

2018-09-26 14:42:52 2702 1

原创 Part III.VI Spring Boot 官方译文 — Starters

13.2.3 使用Spring BootMaven插件Spring Boot包含一个Maven插件Maven plugin,它可以把项目打包成一个可执行的jar,如果你想使用,添加这个插件到你的<plugins>部分,像下面这个例子展示的一样:<build> <plugins> <plugi...

2018-09-16 23:00:53 299

原创 Part III.Spring boot 官网翻译 — 使用 Spring Boot

PartIII. 使用Spring boot这章节带你了解使用Spring Boot更多的细节,它覆盖的主题像构建系统,自动装配和如何运行你的应用程序,我们也覆盖了一些Spring Boot的最佳实践,虽然Spring Boot没有什么特别之处(它只是你可以使用的另一个库),这里有一些建议,如果遵循的话,会让您在开发过程中更容易一些。如果你刚开始使用Spring Boot,你或许应该进入...

2018-09-10 00:18:15 201

navicat压缩包

navicat是一个很方便的图形化工具,用来连接各种数据库

2018-07-19

钉钉聊天工具包

钉钉聊天开发工具包,可以下载钉钉,钉钉是用来聊天办公的工具。

2018-07-19

空空如也

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

TA关注的人

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