自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(219)
  • 资源 (4)
  • 收藏
  • 关注

原创 8小时理解go - 基本语法

前言需求是:有一定的后端其他语言基础(C/C++、Java、Python、PHP等),想要快速了解Golang,可以看B站的这个视频8小时转职Golang工程师确实讲的很好,对有一定基础的入门golang有很大的帮助,需要代码可以gitee下载环境Winodws10Go SDK 1.16.2开发工具:GoLand2020在电脑安装好Go SDK、设置好系统环境变量cmd通过go env查看go环境GOPATH或者GOROOT文件夹下的src目录是放go源文件,我们写的代码都要在sr

2021-06-28 13:54:19 471 1

原创 k8s 安装启动碰到的问题

安装过程:https://www.jianshu.com/p/65ecef9016aekube-apiserver启动失败kube-apiserver.service - Kubernetes API Server Loaded: loaded (/usr/lib/systemd/system/kube-apiserver.service; enabled; vendor preset: disabled) Active: failed (Result: start-limit) since

2021-05-10 17:08:02 715

原创 zookeeper - windows下载及安装、IDEA查看

官网下载zookeeper 官网 :https://zookeeper.apache.org/releases.html随便选一个版本下载apache-zookeeper-3.6.1-bin.tar.gz解压打开配置属性在conf文件夹下复制zoo_sample.cfg,改名为zoo.cfg修改属性:把dataDir、dataLogDir改成自己的文件夹(前面解压的目录)# The number of milliseconds of each ticktickTime=20.

2021-03-30 15:43:53 539

原创 Java - 锁的四种状态及升级过程

JDK1.6的锁优化曾经遇到多线程加锁操作都是直接用synchronized,但在jdk1.6前,synchronized是重量级锁,随着jdk1.6对synchronized进行的各种优化后,synchronized并不会显得那么重如:偏向锁:偏向某一个线程的锁,这个线程将对象头markword的ThreadID改为自己的ID,之后再次访问这个对象的时候,只需要对比ID轻量级锁:不需要申请互斥量,只需要将markword中的指针指向线程的id,如果更新成功则表示已经成功的获取了锁,否则说.

2020-12-23 13:31:58 927

原创 乐观锁的实现 - CAS、ABA问题及Java中原子操作类解析

乐观锁与悲观锁乐观锁与悲观锁是一种思想:悲观锁:悲观的认为当前环境并发严重,所以需要将共享资源锁住,共享资源每次只给一个线程使用,其它线程阻塞,用完后再把资源转让给其它线程如synchronized的实现乐观锁:认为当前环境并发不严重,每次去拿数据的时候都认为别人不会修改,所以不上锁,共享资源所有线程都可以使用,但是在更新的时候会判断一下在此期间别人有没有去更新这个数据如版本号机制和CAS算法实现很明显,乐观锁适合多读场景,悲观锁适合多写场景CAS算法CAS:Compare And S

2020-12-22 16:39:22 399

原创 Java - 对象的内存布局(64位HotSpot)

因为JVM虚拟机为HotSpot,以下谈的都是在64位HotSpot虚拟机中对象内存布局对象的内存布局可以分为三块区域:对象头(Header)、实例数据(Instance Data)和对齐填充(Padding)注:数组对象中对象头部分多了数组长度Length,存储长度为4字节其内存结构:MarkWord:存储对象的hashCode、GC信息、锁信息三部分ClassPointer:指向对象对应的Class对象(类对象)的内存地址InstanceData:具体的数据大小,如对象含有一个.

2020-12-22 14:42:17 611

原创 详解数据库的事务隔离及InnoDB的事务隔离机制

示例我们先从一个简单示例开始:一个简单的test_t表开启两个命令行界面启动两个事务4. 现在在第一个命令行界面修改一个属性,第二个界面查询的数据会改变吗?很明显,因为第一个事务没提交,第二个事务是查看不到第一个事务内的数据5. 现在提交第一个事务,第二个事务看得到数据改变吗?提交后为什么也看不到数据改变?Mysql的事务隔离级别是Repeatable Read(可重复读)6. 怎样才能看到?只能是第一个事务提交完后,再开启第二个事务到这,对事务隔离有一定的理解了

2020-12-10 20:27:29 279

原创 JDK8的新特性总结

JDK8新版任你发,我用Java8身为使用最多的版本,我们还是需要好好了解JDK8的改动JDK的常用新特性总结:Lambda 表达式:Lambda 允许把函数作为一个方法的参数(函数作为参数传递到方法中)函数式接口方法引用和构造器调用:方法引用提供了非常有用的语法,可以直接引用已有Java类或对象(实例)的方法或构造器。与lambda联合使用,方法引用可以使语言的构造更紧凑简洁,减少冗余代码。接口支持静态方法和默认方法Stream API:新添加的Stream API

2020-11-14 14:49:36 3647

原创 Window10 打开ftp服务

Windows10 设置FTP打开网络发现打开IIS控制面板 -》程序 -》Windows功能然后需要重启电脑才能找到IIS打开防火墙点击更改设置,找到FTP,右边专用公用也点上打开IISWindows+R,输入inetmgr,就可以打开IIS添加FTP站点右键点击网站,添加FTP站点,物理地址就是本地文件放置地址输入自己的ip网址访问ftpftp://ip我这里的文件就是刚才物理地址下的文件不用输入用户名,密码即可登录,但很多时候需

2020-11-13 11:10:06 495

原创 Springboot - 解析四大核心机制

Springboot也没有什么新技术,只是为了简化开发四大核心机制自动配置(AutoConfiguration):针对很多Spring应用程序和常见的应用功能,Springboot能自动提供相关配置(如JdbcTemplate的Bean)。由Springboot考虑程序的配置(当然程序员可以修改)起步依赖(Starter):告诉Spring boot需要什么功能,它就能引入需要的依赖库Actuator:让你能够深入运行中的Spring Boot应用程序,一探Spring boot程序的内部信息.

2020-11-12 17:12:16 621

原创 《Effective Java》 - 优化:创建与销毁对象

最近在看《Effective Java》这本书,感觉到了许多平时没注意到的地方,在这写下一些收获用静态工厂方法替代构造器平常获得对象都是通过构造器(默认无参)来创建对象这里提供了一种新思路:静态工厂方法,有优势也有不足静态工厂方法:用书上的例子:获得Boolean封装类的方法不仅是构造器,还可以是静态工厂 // 构造器 public Boolean(boolean value) { this.value = value; } // 静态工厂方法 .

2020-11-11 19:55:16 284

原创 Spring Data Jpa 基本使用及解析

Jpa/Hiberante/Spring Data Jpa的关系JPA是ORM规范Hibernate是Jpa规范的具体实现Spring Data Jpa封装了Hibernate,添加另一层抽象(Repository层的实现),极大地简化持久层开发及ORM框架切换的成本。JPA依赖

2020-10-22 10:47:23 1037

原创 测试API框架 - Swagger介绍及Springboot集成

痛点前后端编写接口文档的痛苦编写及维护接口文档耗费不少精力,来不及更新接口文档描述不正确Swagger的作用Swagger:https://swagger.io/在前后台分离的开发模式中,减小接口定义沟通成本,方便开发过程中测试,自动生成接口文档Springboot集成Swaggermaven依赖:pom.xml作为Java服务端的大一统框架Spring,将Swagger规范纳入自身的标准,建立了Spring-swagger项目,后面改成了现在的Springfox

2020-10-21 15:51:45 244

原创 vue - axios的相关使用

axios简介axios的npm文档:npm-axios当然也有axios爱好者共建的中文网:http://www.axios-js.com/zh-cn/docs/axios本质上也是对原生XHR的封装,只不过它是Promise的实现版本,符合最新的ES规范,会用ajax很容易上手axiosvue axios入门npm安装,就不复述了npm install axios --save引用因为axios是一个库,不是vue中的第三方插件,不能直接通过Vue.use()安装插件一般

2020-10-19 14:56:16 245 2

原创 element ui - 表单验证规则

官网element ui 官网有表单相关的内容:https://element.eleme.io/#/zh-CN/component/form

2020-10-19 10:03:24 1855

原创 Springboot - 包扫描原理解析

Spring中的包扫描在Spring中bean的注入有两种方式:自定义bean:xml或配置类注解,设置自动扫描Spring中xml配置文件:**配置类:**在类上加注解@Configuration,将类设置为配置类代替xml配置文件由程序员手动设置bean是比较繁琐的,Spring又提供了偷懒的方法注解、自动扫描:在springmvc.xml中<context:component-scan base-package="com.learn.controller"/>,即可

2020-09-07 17:30:31 3693

原创 经典算法 - 回溯法解决骑士周游问题及贪心算法优化

骑士周游问题(马踏棋盘)这是一个很经典的游戏,4399小游戏:马踏棋盘马只能走日字,棋盘每个格子只能走一次,现在要求马跳遍整个棋盘,最终回到最初的位置如果靠人来想挺难的,但是我们有计算机通常采用回溯法或启发式搜索类算法求解回溯法分析:棋盘可以看做一个二维数组chessboard,可以用Point对象代表一个位置一个马最多可以走8个方向,分别标号(这里标号的顺序不同会造成结果不同,都是问题的解)即可以写一个方法判断当前位置curPoint的下一步哪些位置可走(8个for循环)创

2020-09-02 11:55:17 2270

原创 经典算法 - 最短路径问题与Dijkstra、Floyd算法

图的最短路径问题前面介绍了图的基本知识:数据结构 - 图与深度优先、广度优先遍历现有一个图:有7个顶点{'A','B','C','D','E','F','G'},顶点间长度为权值假设起点为G,现要求G点到各顶点的最短路径迪杰斯特拉算法(Dijkstra)Dijkstra算法以起始点为中心向外层层扩展(广度优先遍历),采用贪心算法的策略,每次遍历到始点距离最近且未访问过的顶点的邻接节点,直到扩展到终点为止百度百科:核心思路:设置3个数组:alreadyArr记录以访问的顶点;preVi

2020-09-01 19:00:41 351

原创 经典算法 - 图解图的最小生成树问题与prim、kruskal算法

图的最小生成树前面介绍了图:数据结构 - 图与深度优先、广度优先遍历生成树:无向图G的生成子图是连通且不含回路的无向图,称为G的生成树现有一个图:有7个顶点{'A','B','C','D','E','F','G'},顶点间长度为权值现要保证所有顶点连通且长度最短这个问题就是求最小生成树,有两种经典的算法:prim、kruskal算法普利姆算法(prim)prim算法的核心思想:从起点开始,每次都找到该起点的权值最小的边将该边的另一个顶点加入集合visited,然后找visited集

2020-08-31 18:19:59 1106

原创 经典算法 - 贪心算法及集合覆盖问题

贪心算法贪心算法:在对问题求解时,总是做出在当前看来是最好的选择是由局部到整体,算法得到的是在某种意义上的局部最优解,对整体是近似最优解贪心算法一般按如下步骤进行:建立数学模型来描述问题把求解的问题分成若干个子问题对每个子问题求解,得到子问题的局部最优解把子问题的解局部最优解合成原来解问题的一个解(近似于最优解,也可能是最优解)贪心算法特点是一步一步地进行,以当前情况为基础根据作当前的最优选择,通过每一步贪心选择,可得到问题的一个最优解集合覆盖问题一个广播覆盖问题:存在以下广播,

2020-08-29 11:52:41 2949 4

原创 经典算法 - 图解KMP算法与字符串匹配问题

字符串匹配问题字符串匹配问题:有一个字符串str1 = "BBC ABCDAB ABCDABCDABDE";和一个子串str2 = "ABCDABD";现在判断str1是否含有str2,存在返回匹配的第一次位置,不存在返回-1暴力匹配法思路首先想到的就是暴力匹配法:设计两个指针i,j,分别指向两个字符串,i向右移与str2[j]比较一直比较到值相同的位置,i、j后移比较str1[i]与str2[j]的值最终比较str1[10]与str2[6]不同,不匹配再重新

2020-08-28 18:47:24 225

原创 经典算法 - 动态规划算法及背包问题(01背包与完全背包)

动态规划动态规划算法通常用于求解具有某种最优解的问题基本思想也是将待求解问题分解成若干个子问题,先求解子问题,然后从这些子问题的解得到原问题的解。与分治法不同的是,动态规划分解得到的子问题往往不是互相独立的,即上一个子问题解可能为下一个子问题的条件(通常可以将结果填入表格)背包问题有一个背包容量为4kg,现在有以下物品物体重量价格吉他11500音响43000电脑32000现要求装入背包的物体价值最大,且不能超重其中:01背包问题:物品有

2020-08-27 16:55:39 3221

原创 经典算法 - 图解分治算法及汉诺塔问题

分治算法分治算法的思想在于“分”和“治” - 分而治之“分”是将大问题分成独立的子问题,最后子问题可以简单的直接求解“治”是将子问题解决,然后合成大问题,大问题的解是子问题解的合并分治算法是很多问题的基本思想:如归并排序、快速排序、二分查找等归并排序:汉诺塔游戏汉诺塔游戏有3个塔,要求将塔1的圆盘放到塔3,条件:一次只能移动一个盘且大盘不能在小盘上,求移动的步骤及次数当1个盘:第一次:...

2020-08-24 18:00:44 675

原创 数据结构 - 图与深度优先、广度优先遍历

为了解决问题,从线性结构 -> 树形结构 -> 图形结构1. 线性结构:只有前驱、后继结点,元素是线性关系2. 树形结构:元素有层次关系,每一层上的结点只能和上一层中的至多一个结点相关,但可能和下一层的多个结点相关3. 图形结构:元素之间具有任意关系,任意两个元素都可能相关

2020-08-23 16:27:23 390

原创 数据结构 - 图文解析AVL树

什么是平衡二叉树平衡树(Balance Tree,BT) 指的是,任意节点的子树的高度差都小于等于1第二个树根节点左子树高度为3,右子树高度1,高度差为2,不平衡二叉平衡搜索树(AVL树):自平衡的二叉排序树...

2020-08-19 17:04:49 293

原创 Redis - 高可用性:Redis Cluster实现

官网Redis是有中文官网的:Redis - cluster,但是有些东西没写清楚这里自己根据步骤完成并补充了一些知识点版本:Redis 5 ,在Centos下运行至少要Redis3.0(包括3.0)以上版本,且Redis3、4还要装Ruby,建议Redis5起步主从复制-》哨兵模式-》Redis Cluster可用性(Availability):非故障的节点在合理的时间内返回合理的响应(不是错误和超时的响应)Redis模式:单机模式:只有一个redis服务器,宕机后整个系统就失效了

2020-08-16 11:22:10 254

原创 Redis - 高可用性:主从复制、哨兵模式及应用

高可用性可用性(Availability):非故障的节点在合理的时间内返回合理的响应(不是错误和超时的响应)99.9999%,一年仅停机31.5秒,根本感觉不到,而如果是99%,停机3.65天,如支付宝等应用会造成很大损失单机服务在简单系统使用Redis单机服务,实际情况会面临一些问题机器故障:单个Redis负责所有请求,压力较大,容错低,一旦出现故障整个系统缓存就瘫痪容量:Redis是内存服务器,受机器内存容量限制,单台redis服务器最大使用内存不应该超过20g单机Redis可用

2020-08-11 10:31:02 134

原创 Redis - CAP原则 => 缓存与数据库的一致性

这里的数据库是指Mysql等存放在磁盘的数据库,缓存是指Redis等在内存的数据库实时同步实时同步:缓存或DB修改,另一方同步修改强一致性要求比较高,可采用实时同步:查询时先查询缓存,查询不到再查询数据库,并保持到缓存;更新缓存时先更新数据库,再将缓存设置为过期,更新数据(建议不要更新缓存内容,而是设置缓存过期)非实时同步非实时同步:缓存或数据库修改,另一方不需要同步修改非实时同步:定时任务:设置一定时间间隔更新数据异步队列:并发程度高,可以采用异步队列,可此案有kafka等消息中.

2020-08-07 18:11:55 1761

原创 Redis - 持久化机制

Redis持久化数据的存放方式:如Redis存放在内存:内存读写高效但断电会丢失数据如Mysql存放在磁盘:读写速度慢,但不会丢失数据Redis是在内存中运行的,为了防止服务器宕机造成数据丢失,需要将内存中的数据存入磁盘(持久化)Redis提供了两种持久化策略:RDB(默认):一定时间存储数据AOF:默认每秒存储历史命令Redis是支持持久化的内存数据库,需要经常将内存的数据同步到磁盘RDBRDB : Redis DataBase,一定间隔时间持久化一次,功能核心是rdbSave

2020-08-07 09:42:37 122

原创 Redis - 事务及Springboot应用

Redis事务Redis每一个命令都是原子性的事务可以一次执行多个命令(顺序的串行执行)Redis会将一个事务中所有命令序列化,顺序执行,不会被其他命令插入,不许出现加塞现象Redis没有在事务上增加任何维持原子性的机制,所以Redis事务的执行并不是原子性的Redis事务不支持回滚命令multi标记开始一个事务块exec执行事务块的命令discard 取消事务,放弃执行事务块命令watch key[key...]监视一个或多个key,在事务执行前该key被其他命令改

2020-08-06 19:23:43 332

原创 Redis - 多数据库、多数据源及Springboot实现

Redis客户端一个Redis连接有16个数据库:0~15,每个数据库都是独立的切换数据库:select num从数据库3切换到6移动数据:move key num将user从数据库2移动到3清空数据库:flushdb在该数据库命令行flushdb,清空该数据库清空当前连接的所有数据库:flushall...

2020-08-06 11:30:45 803

原创 Redis - 发布与订阅及Springboot实现

Redis客户端的发布订阅Redis提供了发布订阅(pub/sub)的消息通信模式:发送者(pub)发送消息,订阅者(sub)接收消息发布订阅是客户端进行的,与数据库无关,一个客户端可以订阅多个频道(channel),一个频道可以被多个客户端订阅订阅:subscribe channel[channel...]订阅一个或多个频道psubscribe pattern[pattern...]订阅一个或多个符合给定模式的频道,每个模式以 * 作为匹配符,比如 it* 匹配所有名字以it开头的频道订阅

2020-08-05 18:20:42 285

原创 Redis - 什么是缓存穿透、击穿、雪崩?如何解决

缓存与后端系统通常后端会采用Mysql等磁盘数据库,可以持久化但是访问慢,高并发时性能差,需要设置Nosql缓存:Redis等

2020-08-05 11:13:39 776 5

原创 Redis - 8种数据类型、常用命令及应用

版本 redis 5.0.8,Redis可视化工具为Redis Desktop Manager8种数据类型Redis5中提供了8种数据类型:string:最基本的数据类型,二进制安全的字符串(也就是string可以包含任何数据:图片、序列化对象等),最大512M,我们最常用的key-value键值对就是使用string类型list:按照插入顺序的字符串列表,类似于链表LinkedListset:无序的字符串集合,不存在重复的元素。sorted set(Zset):对set的补充,是排序的字.

2020-07-31 19:23:59 275

原创 SpringBoot - 整合Redis:解析Lettuce与RedisTemplate封装

Lettuce与JedisRedis和Mysql一样是数据库,Mysql有对应的JDBC连接,Redis也有对应的Java客户端开发包,集成了Redis的一些命令操作,封装了Redis的java客户端,类似与redis-cli前面:SpringBoot - 整合Redis:使用Jedis客户端通过Jedis、JedisPool使SpringBoot连接RedisSpringBoot1.x的版本时默认使用的Jedis客户端,在SpringBoot2.x后,默认使用LettuceLettuce与Jedi

2020-07-11 17:10:59 4277

原创 SpringBoot - 整合Redis:使用Jedis客户端

JedisRedis与Mysql都是数据库,Redis是非关系型数据库,Mysql是关系型数据库对于关系型数据库存在Java的数据库连接:JDBCJedis就类似于JDBC,是Redis官方首选的Java客户端开发包,Jedis就是集成了redis的一些命令操作,封装了redis的java客户端我们可以写一个简单的Jedis命令:需要导入Jedis的jar包 <!--Jedis依赖--> <dependency>

2020-07-10 15:48:50 5521

原创 Redis - 关于配置文件redis.conf

版本 redis 5.0.8redis.conf在哪?我们下载的redis-5.0.8.tar.gz,解压为redis-5.0.8这3个文件:redis-5.0.8.tar.gz是压缩包,redis-5.0.8是源代码(c)目录,需要进行make编译,redis是经过编译后设置的可运行命令目录配置文件就在redis-5.0.8目录下,redis目录是没有的将它复制到这,随便放哪redis.conf配置属性这个配置文件有1372行,里面有很多属性这里介绍常用的属性:daemo.

2020-07-08 18:59:54 3837

原创 Docker - 详解Dockerfile

什么是DockerfileDockerfile: 用于描述镜像的生成规则,是用于构建Docker镜像的构建文件,是一系列命令和参数构成的脚本Dockerfile中的每一条命令,都在Docker镜像中以一个独立镜像层的形式存在,就类似与Linux的shell脚本,只不过Dockerfile是用来构建镜像的在上一篇docker - 关于容器数据存储使用了Dockerfile创建了数据卷

2020-07-07 14:56:11 196

原创 Docker - 关于容器数据存储

你知道Docker容器-镜像结构吗?Docker容器结构如何持久化、共享数据?为什么要设置数据卷?如何传递共享?这篇告诉你

2020-07-05 17:04:02 907

原创 数据结构 - 图文解析二叉查找树

二叉查找树二叉排序树(Binary Sort Tree),又称二叉查找树(Binary Search Tree),亦称二叉搜索树二叉树查找树是一棵空树,或者是具有下列性质的二叉树:若左子树不空,则左子树上所有结点的值均小于它的根结点的值;若右子树不空,则右子树上所有结点的值均大于它的根结点的值;左、右子树也分别为二叉排序树;没有键值相等的结点现实中可以有键值相等的结点,需要自定义规则相等的结点应该放左子树还是右子树,尽量避免键值相等一棵二叉查找树:二叉查找树的创建遍历如何创建

2020-07-04 16:38:22 234

springboottest.zip

一个适合初学者基于SSM(spring boot)+Thymeleaf的查询用户功能 地址:https://blog.csdn.net/key_768/article/details/104145903 学习自取

2020-02-02

基于Maven的SSM整合-初学者学习

学习基于Maven的SSM整合完成的项目 详情见:https://blog.csdn.net/key_768/article/details/104004768和 https://blog.csdn.net/key_768/article/details/104040076 学习用,自取

2020-01-19

LearnSpring.zip

自学Spring时一个案例一个案例写的 博客地址:https://blog.csdn.net/key_768/article/details/103916225 及之后的几个 需要自取

2020-01-15

hibernate-validator-5.1.0.zip

自学SpringMVC数据校验用到的包 文章地址:https://blog.csdn.net/key_768/article/details/103979920 学习用自取,版本较低

2020-01-15

空空如也

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

TA关注的人

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