自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(108)
  • 收藏
  • 关注

原创 HashMap底层实现原理

HashMap中的put()和get()的实现原理:存储结构-字段从结构实现来讲,HashMap是数组+链表+红黑树(JDK1.8引入)实现的。如图所示:从源码可知,hashmap里面有一个非常重要的字段就是transient Node<K,V>[] table;即哈希桶数组,明显它是一个Node的数组。Node是HashMap的一个内部类,实现了Map.Entry接口;本质上就是映射(键值对)上图中数组下标为1的位置上有3个Node对象,下标为6位置上的44,76等都是N

2021-08-20 17:33:43 364

转载 事务传播行为

事务传播行为 什么叫事务传播行为?听起来挺高端的,其实很简单。 即然是传播,那么至少有两个东西,才可以发生传播。单体不存在传播这个行为。 事务传播行为(propagation behavior)指的就是当一个事务方法被另一个事务方法调用时,这个事务方法应该如何进行。 例如:m...

2021-08-20 11:29:43 2958

原创 MySQL日志管理

文章目录前言错误日志二进制日志二进制文件还原数据库的操作慢查询日志通用查询日志前言日志是mysql数据库的重要组成部分,日志文件中记录着MySQL数据库运行期间发生的变化。例如:数据库出现错误时可以通过查看日志文件找出原因。MySQL日志可以分为四种,分别是二进制日志,错误日志,慢查询日志和通用查询日志。这四种日志文件的作用分别是:二进制日志:以二进制文件的形式记录了数据库中的操作,但不会记录查询语句。错误日志:记录MySQL服务器的启动、关闭、运行等信息。慢查询日志:记录执行时间超过指定时

2021-08-17 23:35:13 330

原创 MySQL的优化

MySQL的优化实践中,MySQL的优化主要涉及SQL语句及索引的优化、数据表结构的优化、系统配 置的优化和硬件的优化四个方面,如下图所示:SQL语句的优化主要包括三个问题,即如何发现有问题的SQL、如何分析SQL的执行 计划以及如何优化SQL,下面将逐一解释。① 怎么发现有问题的SQL?(通过MySQL慢查询日志对有效率问题的SQL进行监控) MySQL的慢查询日志是MySQL提供的一种日志记录,它用来记录在MySQL中响应时间 超过阀值的语句,具体指运行时间超过long_query_ti

2021-08-17 19:50:53 113

原创 二分查找法

// 二分查找法; public static int binarySearch(int[] arr, int x){ int low = 0; int high = arr.length-1; while(low <= high){ int middle = (low + high)/2; if(x == arr[middle]){ return midd...

2021-08-17 18:56:30 67

原创 MyISAM和 InnoDB的区别:

MyISAM和 InnoDB的区别:现在最常用的存储引擎是 InnoDB,它从MySQL5.5.5版本开始成为了默认的存储引擎。对比项MyISAMInnoDB主外键不支持支持事务不支持支持行表锁表锁,即使操作一条记录也会锁住整个表,不适合高并发的操作行锁,操作时只锁住某一行,不对其他行有影响,适合高并发的操作缓存只缓存索引,不缓存真是数据不仅缓存索引,还要缓存真实数据,对内存要求高,而且,内存大小对性能有决定性的影响表空间小大关

2021-08-17 16:48:27 68

转载 MySQL中 where和having的区别

以前在学校里学习过SQLserver数据库,发现学习的都是皮毛,今天以正确的姿态谈一下MySQL中where和having的区别。 误区:不要错误的认为having和group by 必须配合使用。 下面以一个例子来具体的讲解: 1. where和having...

2021-08-17 10:00:46 163

转载 MySQL查询

两道sql题:1、用一条SQL语句查询出每门课都大于80分的学生姓名。2、删除除了自动编号不同,其他都相同的学生冗余信息。第一题数据如下:分析:每门课都大于80分,就是说学生最低分数要大于80分,我们直观看只有"王五"这个学生每门课分数都在80分以上。解决思路:这里需要用到聚合函数min(score),查询出最低分数大于80分的学生即可。使用了聚合函数,条件就需要使用having语句。第一步,查询姓名...

2021-08-16 18:55:17 716

原创 Spring基础知识

文章目录面向切面编程Spring是什么?Spring的AOP理解Spring的IoC理解:面向切面编程AOP(Aspect Oriented Programming),即面向切面编程。OOP引入封装、继承、多态等概念来建立一种对象层次结构,用于模拟公共行为的一个集合。不过OOP允许开发者定义纵向的关系,但并不适合定义横向的关系,例如日志功能。日志代码往往横向地散布在所有对象层次中,而与它对应的对象的核心功能毫无关系对于其他类型的代码,如安全性、异常处理和透明的持续性也都是如此,这种散布在各处的无关的代码

2021-08-14 19:21:36 111

转载 shardingjdbc

Apache ShardingSphere概述官网:http://shardingsphere.apache.org/index_zh.html下载地址:https://shardingsphere.apache.org/document/current/cn/downloads/快速入门:https://shardingsphere.apache.org/document/current/cn/quick-start/shardingsphere-jdbc-quick-start/[外链图片转存

2021-08-13 21:57:59 118

原创 JVM之垃圾收集器(第四篇)

在介绍垃圾收集器之前,首先介绍以下这几个概念 1. Stop-the-world 它是指 JVM 由于要执行 GC 而停止了应用程序的执行,并且这种情形会在任何一种 GC 算法中发生。当 Stop-the-world 发生时,除了 GC 的线程以外,其他的线程均处于等待的状态,直到 GC 任务完成。 实际上,很多 GC 优化都是通过减少 Stop-the-world 的时间来提高程序的性能。 2. Safe-point 程序执行时并非在所有地方都能停顿下来开始 GC,只有在某些特定的位置才可以,这

2021-08-12 12:11:11 96

原创 HashMap,LindedHashMap,TreeMap的区别

Hashmap根据键的HashCode 值存储数据,根据键可以直接获取它的值,具有很快的访问速度,遍历时,取得数据的顺序是完全随机的。HashMap最多只允许一条记录的键为Null,不允许多条记录的值为 Null;HashMap不支持线程的同步。如果需要同步,可以用 Collections的synchronizedMap方法使HashMap具有同步的能力(Collections.synchronizedMap(originMap)),或者使用ConcurrentHashMap。LinkedHashM

2021-08-11 17:22:15 122

原创 布隆过滤器

概述什么是布隆过滤器        布隆过滤器(Bloom Filter)是1970年由布隆提出的,它实际上是由一个很长的二进制向量和一系列随意映射函数组成。        它是一种基于概率的数据结构,主要用来判断某个元素是否在集合内,它具有...

2020-06-24 10:12:05 355

原创 @Param注解的使用详解:

org.apache.ibatis.binding.BindingException: Parameter ‘xxx’ not found. Available parameters are [arg1, arg0, param1, param2]这个是参数绑定异常原因:在Mapper层没有加 @Param(“xxx”);加上注解后问题解决;==============================================@Param注解的使用详解:1,使用@Param注解当以下面的方

2020-06-14 11:36:17 1009

转载 Springboot处理CORS跨域请求的三种方法

前言Springboot跨域问题,是当前主流web开发人员都绕不开的难题。但我们首先要明确以下几点跨域只存在于浏览器端,不存在于安卓/ios/Node.js/python/ java等其它环境 跨域请求能发出去,服务端能收到请求并正常返回结果,只是结果被浏览器拦截了。 之所以会跨域,是因为受到...

2020-06-09 23:53:32 255

原创 在Linux下安装mongoDB数据库

本文的环境为centos7,装的MongoDB版本为3.6.131.下载并解压centos下直接使用wget下载:wget https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-3.6.13.tgz创建目录/usr/local/mongodb,将解压之后文件放入该文件夹:tar -zxvf mongodb-linux-x86_64-3.6.13.tgz 移动重命名:mv mongodb-linux-x86_64-3.6.13/ /us

2020-06-02 20:06:30 173

原创 在idea中运行Vue项目,省略npm run dev命令

2020-06-02 11:45:26 2259 1

原创 消息队列使用的四种场景

消息队列中间件是分布式系统中重要的组件,主要解决应用耦合,异步消息,流量削锋等问题实现高性能,高可用,可伸缩和最终一致性架构使用较多的消息队列有ActiveMQ,RabbitMQ,ZeroMQ,Kafka,MetaMQ,RocketMQ...

2020-06-01 23:56:30 136

原创 Docker启动提示:Cannot connect to the Docker daemon...

执行docker image导入时,提示“Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?”执行docker ps时,提示CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS没有任何进程。此时已确定Docker本身已经安装正常。问题原因是因为d

2020-06-01 23:13:23 53795 2

原创 Zookeeper

在zk的bin目录下:./zkServer.sh start查看端口:netstat -apn | grep 2181

2020-06-01 18:26:19 144

原创 分布式锁的应用场景对比实现

应用场景当多个机器(多个进程)会对同一条数据进行修改时,并且要求这个修改是原子性的。这里有两个限定:(1)多个进程之间的竞争,意味着JDK自带的锁失效;(2)原子性修改,意味着数据是有状态的,修改前后有依赖。基于Redis的实践锁的实现锁的key为目标数据的唯一键,value为锁的期望超时时间点;首先进行一次setnx命令,尝试获取锁,如果获取成功,则设置锁的最终超时时间(以防在当前进程获取锁后奔溃导致锁无法释放);如果获取锁失败,则检查当前的锁是否超时,如果发现没有超时,则获取锁失败;如果发现锁

2020-06-01 18:22:35 569

原创 分布式事务的解决方案

博客:https://www.cnblogs.com/bluemiaomiao/p/11216380.html5.3部署tx-manager协调者5.3.1 部署Eureka服务因为tx-manager协调者需要向注册中心注册服务。这里的注册中心不配置用户名和密码5.3.2 官网下载tx-managerhttps://github.com/codingapi/tx-lcn/releaseshttps://github.com/codingapi/tx-lcn/archive/v4.1.0.z

2020-06-01 13:41:23 154

原创 七:日志集成

使用starters启动器时,Spring Boot将使用Logback作为默认日志框架。spring-boot-starter启动器包含spring-boot-starter-logging启动器并集成了slf4j日志抽象及Logback日志框架。既然默认自带了Logback框架,Logback也是最优秀的日志框架,往资源目录下创建一个logback-spring.xml即可,下面是一个参考配置文件。自己改下value="G:/logs/pmp"这个值,如果你相关依赖弄好的话,直接复制粘贴即用输出的

2020-06-01 10:22:00 163

原创 vue-router

npm install vue-router --save-devnpm i element-ui -S

2020-05-31 16:52:18 99

原创 webpack

安装:npm install webpack -gnpm install webpack-cli -g测试安装成功:webpack -vwebpack-cli -v

2020-05-30 22:43:05 118

原创 Vue-cli

全局安装vue-cli,在cmd中输入命令:npm install --global vue-cli安装完成之后输入 vue -V(注意这里是大写的“V”),如下图,如果出现相应的版本号,则说明安装成功。打开C:\Users\Andminster\AppData\Roaming\npm目录下可以看到:打开node_modules也可以看到:2.用vue-cli来构建项目① 我首先在D盘新建一个文件夹(dxl_vue)作为项目存放地,然后使用命令行cd进入到项目目录输入:baoge是自定

2020-05-30 22:09:58 104

原创 Node.js

Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行环境。 Node.js 使用了一个事件驱动、非阻塞式 I/O 的模型。 [1]Node 是一个让 JavaScript 运行在服务端的开发平台,它让 JavaScript 成为与PHP、Python、Perl、Ruby 等服务端语言平起平坐的脚本语言。 [2] 发布于2009年5月,由Ryan Dahl开发,实质是对Chrome V8引擎进行了封装。Node对一些特殊用例进行优化,提供替代的API,使得V8在非浏览器环境

2020-05-28 11:03:34 181

原创 redis配置文件中常用配置详解

此次安装的版本为: 5.0.3[root@localhost local]# redis-server --versionRedis server v=5.0.3 sha=00000000:0 malloc=jemalloc-5.1.0 bits=64 build=afabdecde61000c3打开redis.cof################################### NETWORK ############################################

2020-05-27 23:31:55 317

原创 Redis的三种特殊数据类型

Geospatial 地理位置朋友的定位,附近的人,打车距离计算?Redis 的 Geo 在Redis3.2 版本就推出了! 这个功能可以推算地理位置的信息,两地之间的距离,方圆几里的人!可以查询一些测试数据:http://www.jsons.cn/lngcodeinfo/0706D99C19A781A3/只有 六个命令:GEOADD GEODIST GEOHASH GEOPOS GEORADIUS GEORADIUSBYMEMBER# getadd 添加地理位置# 规则:两级无法直接添加,

2020-05-27 17:07:23 166

原创 统计字符串中各种字符出现的次数

package com.example;import java.util.Scanner;/** * @author zhanghong * @date 2020/5/21 11:01 * @Description: 统计字符串中各种字符出现的次数 */public class DemoStringCount { public static void main(String[] args) { Scanner scanner = new Scanner(System

2020-05-21 11:17:01 254

原创 mongoDB

启动mongodb:mongod -dbpath=e:\mongoDatadb.mongo.find();

2020-05-17 19:03:05 141

原创 JS实现省市县三级联动

这里写自定义目录标题项目结构代码功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入项目结构代码index.html...

2020-05-07 18:51:31 1364

原创 Session、Cookie、Token

Cookie 和 SessionHTTP 协议...

2020-05-01 09:43:21 169

原创 JVM之GC(垃圾收集器)(第四篇)

3.1 概念GC 垃圾回收器是 JVM 中自动内存管理机制的具体实现,在 HotSpot 虚拟机中 GC 的工作主要划分为两大类,分别是内存动态分配和垃圾回收,在内存执行分配之前,GC 首先会对内存空间进行划分,考虑到 JVM中存活对象的生命周期会具有两极化,应该采取不同的垃圾收集策略,分代收集可以实现这个目标,目前几乎所有的GC 都是采用分代收集算法执行垃圾回收一般来说当内存空间中的内...

2020-04-10 14:33:33 150

原创 SpringMVC实现原理及详解

SpringMVC工作原理图用户发送给请求到前端控制器DispatcherServlet。DispatcherServlet收到请求调用HandlerMapping处理器映射器处理器映射器找到具体的处理器(注解或者xml配置),生成处理器对象以及处理器拦截器(若有),返回给DispatcherServletDispatcherServlet调用HandlerAdapter处理器适配器...

2020-04-09 22:41:32 292

原创 == 和equals的区别

== 和equals的区别==既可以比较基本数据类型,也可以比较引用数据类型,当比较基本数据类型是比较的是值是否相等,当比较引用数据类型时,比较的是地址是否相等;记住:new出来的东西,==比较永false;equals是Object类的方法;不是String类的方法equals比较的是引用数据类型要看equals有欸有被重写,如果没有重写比较的是地址是否相等;如果被重写了,具体问题具体...

2020-04-09 11:49:11 264

原创 Alibaba之Seata(第三篇)

官网地址:http://seata.io/zh-cn/2019 年 1 月份蚂蚁金服和阿里巴巴共同开源的一个分布式事务解决方案Simple Extensible Autonomous Transaction Architecture ,简单刻拓展自治事务框架Seata 是什么?Seata 是一款开源的分布式事务解决方案,致力于在微服务架构下提供高性能和简单易用的分布式事务服务。在 Seat...

2020-03-31 23:59:13 1238 1

原创 CAS

CAS (中央认证服务)CAS是Central Authentication Service的缩写,中央认证服务,一种独立开放指令协议。CAS 是 Yale 大学发起的一个开源项目,旨在为 Web 应用系统提供一种可靠的单点登录方法,CAS 在 2004 年 12 月正式成为 JA-SIG 的一个项目。特点1、开源的企业级单点登录解决方案。2、CAS Server 为需要独立部署的 Web...

2020-03-31 23:27:31 289

原创 Alibaba之Nacos

Nacos Server在使用 Nacos 之前,需要先下载 Nacos 并启动 Nacos Server。Nacos Server 有两种运行模式:standalone 单机模式cluster 集群模式不论哪种方式吧,都需要先去 https://github.com/alibaba/nacos/releases 下载最新的 release 包,然后解压,以 nacos-serv...

2020-03-31 23:25:36 145

原创 RabbitMQ

RabbitMQMQ是什么 MQ:Message Queue消息队列MQ是用来干嘛的呢?消息队列:队列 先进先出消息:传输的消息向队列中存放传输的消息消息队列有点类似于生活中的 物流 你只需要将物品放到这个物流的平台上 物流就会给你进行运输到指定的目的地使用MQ到底有什么作用呢?1:可以将并行的请求串行化 -------- 消流 流量的消峰2:模块之间的...

2020-03-29 16:36:31 177

空空如也

空空如也

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

TA关注的人

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