自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(53)
  • 资源 (1)
  • 收藏
  • 关注

原创 ConcurrentHashMap如何保证线程安全及源码解析

1. ConcurrentHashMap 和 HashMap 两者的异同相同之处:数组、链表结构几乎相同,所以底层对数据结构的操作思路是相同的(只是思路相同,底层实现不同);都实现了 Map 接口,继承了 AbstractMap 抽象类,所以大多数的方法也都是相同的,HashMap 有的方法,ConcurrentHashMap 几乎都有,所以当我们需要从 HashMap 切换到 ConcurrentHashMap 时,无需关心两者之间的兼容问题。不同之处:红黑树结构略有不同,HashMap

2021-04-14 15:04:16 523

原创 数据库锁的分类及乐观锁、悲观锁详解(CAS算法问题、和synchronized之间的选择、及锁升级过程)

文章目录数据库锁的分类乐观锁、悲观锁悲观锁乐观锁乐观锁常见的两种实现方式1. 版本号机制2. CAS算法乐观锁的缺点1 ABA 问题2 循环时间长开销大3 只能保证一个共享变量的原子操作CAS与synchronized的使用情景数据库锁的分类按锁的粒度划分,可分为表级锁、行级锁、页级锁按锁级别划分,可分为共享锁、排它锁按加锁方式划分,可分为自动锁、显示锁按操作划分,可分为DML锁、DDL锁按使用方式划分,可分为乐观锁、悲观锁乐观锁、悲观锁乐观锁对应于生活中乐观的人总是想着事情往好的方向发

2021-04-14 11:36:48 432

原创 IDEA如何导入完整的SpringBoot或Maven项目

前言:在项目开发过程中,无论是导入运行团队开发的项目,还是一些开源项目,还是其他的项目,想要在IDEA中完整的运行起来总有很多坑,今天就把我的经验总结一下,希望大家多多评论补充。一、打开本地的项目点击File -> Open选择要打开的项目二、配置maven相关等待项目加载该过程主要是在加载maven仓库,可能需要等待几分钟如果mavem加载过程中发生错误,请检查maven的配置打开settings(File -> settings),搜索maven或者Build -&g

2021-04-14 01:05:26 8023

原创 Springboot项目启动到一半卡住了,不报错,也没什么异常

记录一下遇到的坑,已解决最大可能:不小心在某个地方打了个断点,导致项目启动的时候遇到了这个断点,或者打到方法名上了解决:取消断点,点下面的按钮把所有的断点都取消了可能2:某个jar出了问题,重新import下pom.xml,重新部署jar包可能3:看下是不是数据库表被锁,把锁定的线程全部踢出就好了友情提示:90%以上可能都是不小心打了个断点导致的!...

2020-11-26 11:26:52 2722 4

原创 explain结果字段的含义介绍

idSELECT 识别符,这是SELECT的查询序列号,表示查询中执行select子句或操作表的顺序select_typeSELECT类型,可以为以下任何一种:SIMPLE:简单SELECT(不使用UNION或子查询)PRIMARY:最外面的SELECTUNION:UNION中的第二个或后面的SELECT语句DEPENDENT UNION:UNION中的第二个或后面的SELECT语句,取决于外面的查询UNION RESULT:UNION 的结果SUBQUERY:子查询中的第一个SELE.

2020-10-28 13:59:10 348

原创 如何将代码上传到gitHub的仓库上

如何将代码上传到gitHub的仓库上(超详细)使用git命令行将本地仓库代码上传到github或gitlab远程仓库第1步:建立本地 git 仓库第2步:将本地项目工作区的所有文件添加到暂存区第3步:将暂存区的文件提交到本地仓库第4步:在 github 或者 gitlab 上创建新的repository第5步:将本地代码仓库关联到 github 上第6步:将代码由本地仓库上传到 github 远程仓库,依次执行下列语句至此,操作成功!第二种方式:(超详细)使用git命令行将本地仓库代码上传到github或

2020-08-11 01:17:52 1944 1

原创 iview ui(非 template/render 模式)下标签替换整理及采坑总结

在非 template/render 模式下(例如使用 CDN 引用时)组件名要分隔DatePicker: date-pickerMenuItem: Menu-item以下组件,在非 template/render 模式下,需要加前缀 i-:Button: i-buttonCol: i-colTable:i-tableInput:i-inputForm: i-formMenu:i-menuSelect: i-selectOption:i-optionProgress: i-p

2020-08-07 13:49:02 1226

原创 redis分布式锁的原理及代码实现

分布式锁redis分布式锁获取锁:基于setnx命令,此命令是一个原子性操作,并发请求锁时,因为redis是单线程的,并发的请求会串行执行,只有第一个set值成功的线程才能获取到锁,其他线程获取锁失败SET resourde_name random_value NX PX 30000resource_name(key):资源名称,可根据不同的业务区分不同的锁random value(value):随机值,每个线程的随机值都不同,用于释放锁时的校验(防止并发时顺序混乱,防止线程释放了不属于自己的锁

2020-08-04 00:21:49 840

原创 MySQL数据库索引的最左匹配原则((a),(a,b),(a,b,c)都能用到索引,(a,c)呢?)

MySQL数据库索引的最左匹配原则一. 联合索引说明二. 那ac是否能用到索引呢?三. 思考四. 最左匹配原则的成因一. 联合索引说明建立三个字段的联合索引联合索引(a,b,c)相当于建立了索引:(a),(a,b),(a,b,c)二. 那ac是否能用到索引呢?先给出结论:a可以命中联合索引(a,b,c),c无法命中,所以ac组合无法命中联合索引。1.建立abc联合索引(province,city,district)ac索引查询SELECT * FROM user_address W

2020-07-23 00:34:26 9043 5

原创 linux查看内存使用情况

linux查看内存使用情况1. top2. free3. cat /proc/meminfo1. top用于实时显示 process 的动态PID:进程的IDVIRT:进程占用的虚拟内存RES:进程占用的物理内存USER:进程所属的用户PR:进程的优先级别,越小优先级越高SHR:进程使用的共享内存S:进程的状态,S表示休眠,R表示正在运行,Z表示僵死状态,N表示该进程优先值为负%CPU:进程占用CPU的使用%MEM:进程使用的物理内存和总内存的百分比TIME+:该进程启动后

2020-07-19 10:37:37 502

原创 linux 从一台机器复制文件到另一台linux机器上去

linux 从一台机器复制文件到另一台linux机器上去1. 功能说明scp就是security copy,用于将文件或者目录从一个Linux系统拷贝到另一个Linux系统下。scp传输数据用的是SSH协议,保证了数据传输的安全,其格式如下:scp 远程用户名@IP地址:文件的绝对路径 本地Linux系统路径scp 本地Linux系统文件路径 远程用户名@IP地址:远程系统文件绝对路径名scp使用第一种格式是将远程Linux系统上的某个文件或者目录拷贝到本地Linux系统上来

2020-07-18 19:00:45 4809

原创 CentOS7 安装JDK(亲测有效!)

CentOS7 安装JDK1. 写在前面2. 概述3. 检查是否有默认安装的JDK4. 卸载自带JDK5. 安装JDK1. 写在前面CentOS7下安装jdk,云服务器和本地虚拟机都有效,本人亲测如果需要下载历史版本的JDK,可以使用下面的账号从Oracle官网下载:下载地址:点击 JDK下载 或复制:https://www.oracle.com/java/technologies/javase-downloads.html账号: [email protected]密码: Ora

2020-07-18 18:45:58 4825 1

原创 Redis基本数据类型、持久化机制、集群模式、淘汰策略、缓存穿透、击穿、雪崩、常见面试题大集合!

redis发布(pub)订阅模式(sub)模式订阅up主,更新后接到通知,和MQ机制类似发布:PUBLISH [channal名称] [Massage消息]订阅:SUBSCRIBE [channal名称] 批量订阅:PSUBSCRIBE [channal前缀*] (使用前缀加通配符的方式)作用只能起到基本的发布订阅作用,不能保证消息的容错性和可靠性,如果项目中发布的消息比较重要,不建议使用redis做消息处理,推荐使用MQ。Redis的持久化机制 - RDBRDB(默认): Re

2020-06-22 00:37:23 638

原创 告别996之Stream学习总结

      Stream是Java8最大的亮点,它是对集合对象功能的增强,专注于对集合对象进行各种高效的数据处理,Stream API借助于lambda表达式极大的提高了编程效率及程序的可读性,同时Stream提供串行和并行两种模式进行汇聚操作,并行模式可以充分利用多核处理器的优势。结合lambda表达式及Stream API可以很方便的编写高性能并发程序。      在操作数据库时,S

2020-06-17 17:36:19 1608

原创 Lambda 表达式原来是这样用的

文章目录一、 概述二、 常见用法2.1 无参函数的简写2.2 单参函数的简写2.3 多参函数的简写三、方法引用3.1 引用静态方法3.2 引用对象的方法3.3 引用类的方法3.4 引用构造方法四、自定义函数接口五、实现原理5.1 匿名内部类的实现5.2 Lambda 表达式的实现六、优缺点本文将介绍 Java 8 新增的 Lambda 表达式,包括 Lambda 表达式的常见用法以及方法引用的用法,并对 Lambda 表达式的原理进行分析,最后对 Lambda 表达式的优缺点进行一个总结。一、 概述J

2020-05-28 23:48:29 144

原创 String、Long 源码解析和面试题

引导语String 和 Long 大家都很熟悉,本小节主要结合实际的工作场景,来一起看下 String 和 Long 的底层源码实现,看看平时我们使用时,有无需要注意的点,总结一下这些 API 都适用于哪些场景。1 String1.1 不变性我们常常听人说,HashMap 的 key 建议使用不可变类,比如说 String 这种不可变类。这里说的不可变指的是类值一旦被初始化,就不能再被改变了,如果被修改,将会是新的类,我们写个 demo 来演示一下。String s ="hello";s ="w

2020-05-28 22:57:53 335

原创 String常用方法及部分源码分析

1.int length();语法:字符串变量名.length();返回值为 int 类型。得到一个字符串的字符个数(中、英、空格、转义字符皆为字符,计入长度)/** The String is used char value[] **/public int length() { return value.length; } /** The value is used for character storage. */private final char value

2020-05-28 20:45:06 204

原创 ConcurrentHashMap源码解析(每行都有完整解析)

为什么HashMap和ConcurrentHashMap的链表数目>=8才转换成红黑树?为什么<=6才从树转换成链表?当hashCode离散性很好的时候,树型转化用到的概率非常小,因为数据均匀分布在每个桶中,几乎不会有桶中链表长度会达到阈值。但是在随机hashCode下,离散性可能会变差,然而JDK又不能阻止用户实现这种不好的hash算法,因此就可能导致不均匀的数据分布。不过理想...

2020-05-14 18:25:19 136

原创 Linux常用命令

Linux常用命令cdcd /root/Docements # 切换到目录/root/Docementscd ./path # 切换到当前目录下的path目录中,“.”表示当前目录cd …/path # 切换到上层目录中的path目录中,“…”表示上一层目录ls-l :列出长数据串,包含文件的属性与权限数据等-a :列出全部的文件,连同隐藏文件(开头为.的文件)一起列出来(常用...

2020-04-26 14:22:51 83

原创 Docker学习笔记

Docker学习目标:掌握Docker基础知识,能够理解Docker镜像与容器的概念完成Docker安装与启动掌握Docker镜像与容器相关命令掌握Tomcat Nginx 等软件的常用应用的安装掌握docker迁移与备份相关命令能够运用Dockerfile编写创建容器的脚本能够搭建与使用docker私有仓库1 Docker简介1.1 什么是虚拟...

2020-04-20 23:18:09 148

原创 与(&)、或(|)、异或(^)运算

1.与运算(&)参加运算的两个数据,按二进制位进行“与”运算。运算规则:0&0=0; 0&1=0; 1&0=0; 1&1=1;即:两位同时为“1”,结果才为“1”,否则为0例如:3&5 即 0000 0011 & 0000 0101 = 0000 0001 ...

2020-04-13 22:20:03 505

原创 @Transactional 注解原理,事务失效场景详解(什么是事务?事务传播特性?)

@Transactional 注解失效场景@Transactional 注解相信大家并不陌生,平时开发中很常用的一个注解,它能保证方法内多个数据库操作要么同时成功、要么同时失败。使用@Transactional注解时需要注意许多的细节,不然你会发现@Transactional总是莫名其妙的就失效了。一、事务事务管理在系统开发中是不可缺少的一部分,Spring提供了很好事务管理机制,主要分为编...

2020-04-01 22:56:21 713 1

原创 Map集合常用方法及常用遍历方式

一:在for循环中使用entries实现Map的遍历(在键值对都需要使用)/*** 最常见也是大多数情况下用的最多的,一般在键值对都需要使用 */Map <String,String>map = new HashMap<String,String>();map.put("k1", "v1");map.put("k2", "v2");for(Map.Entry&...

2020-03-21 19:32:29 294

原创 Docker安装Redis,两行命令搞定

本次安装的是redis的5.0.8版本(其他版本类似)1.拉取docker镜像docker pull redis:5.0.82.运行redis镜像-d:后台运行容器,并返回容器ID;-p:指定端口映射,格式为:主机(宿主)端口:容器端口docker run -d -p 6379:6379 redis:5.0.83.查看正在运行的docker容器镜像docker ps4.关闭...

2020-03-20 01:17:33 101 1

原创 Spring中事务的传播特性

1.REQUIRED当前存在事务,加入事务;当前不存在事务,就创建新事务2.SUPPORT当前存在事务,加入事务;当前不存在事务,就以非事务的方式运行3.MANDATORY当前存在事务,加入事务;当前不存在事务,就抛出异常4.REQUIRE_NEW不管当前有没有事务,都重新创建一个新事务5.NOT_SUPPORT以非事务的方式运行,如果当前存在事务,暂停当前事务6.NEVER...

2020-03-11 23:51:14 100

原创 校招经验总结(不断更新)

1.前言好多同学不知道如何去找一份自己满意的工作(不知道自己想要干什么?)不知道如何进入自己喜欢的公司非常时期,不知道如何下手2.秋招、春招、社招三者的区别**秋招:**招聘最多,公司最多,机会最多,进大公司的几率更大**春招:**招聘相对较少,机会较少,大公司实习的几率更大(下届应届生—现大三)**社招:**招聘量大,但是对实习经历/项目经验有一定的要求3.校招和社招的区别**...

2020-03-11 21:31:30 983

原创 如何看出一个网站是否是前后端分离的?

主要就是看这个网站的数据是通过前端渲染的,还是后端渲染后生成的打开网站,按F12,然后点击Network,然后再点XHR然后在name栏中随便点击一个如果有这样的json数据,说明就是前后端分离的如果不是这种json数据,而是整个html,就不是前后端分离架构...

2020-03-08 13:33:37 10030 3

原创 本地计算机上的MySQL服务启动后停止……(数据库服务错误解决方案,超详细)

有一天重启完电脑后,打开Navicat,突然发现数据库连接不上。我去?怎么回事?昨天还好好的!然后查看windows服务中,mysql的服务没有了哇,难受,win10系统真的坑!排查问题,是更新系统导致这个服务丢失!(话说这个破更新服务还关不掉!经常死灰复燃)看了网上教程说:管理员权限启动小黑窗 然后cd到mysql的bin目录下,运行mysqld.exe instal...

2020-03-07 20:46:11 6693 12

原创 MySQL如何创建索引

名称SQL查看索引show index from 数据库表名主键索引ALTER TABLE 数据库 ADD INDEX 索引名称(数据库字段名称) PRIMARY KEY唯一索引ALTER TABLE table_name ADD PRIMARY KEY ( column ) UNIQUE普通索引ALTER TABLE table_name ADD U...

2020-01-06 16:51:23 1247

原创 OSI七层协议和四层协议(详细)

1.OSI七层协议概念模型物理层在OSI参考模型中,物理层(Physical Layer)是参考模型的最低层,也是OSI模型的第一层。物理层的主要功能是:利用传输介质为数据链路层提供物理连接,实现比特流的透明传输。物理层的作用是实现相邻计算机节点之间比特流的透明传送,尽可能屏蔽掉具体传输介质和物理设备的差异。使其上面的数据链路层不必考虑网络的具体传输介质是什么。“透明传送比特流”表示...

2020-01-02 23:08:36 12340

原创 idea代码补全常用操作

IDEA 有个很牛逼的功能,那就是后缀补全(不是自动补全),很多人竟然不知道这个操作,emmmmm。这个功能可以使用代码补全来模板式地补全语句,如遍历循环语句(for、foreach)、使用 String.format() 包裹一个字符串、使用类型转化包裹一个表达式、根据判(非)空或者其它判别语句生成 if 语句、用 instanceOf 生成分支判断语句等。使用的方式也很简单,就是在一个表达...

2020-01-02 10:30:05 1423

原创 数据库事务的四大特征和隔离级别

事务的四大特征:原子性:是不可分割的最小操作单位,要么同时成功,要么同时失败持久性:当事务提交或回滚后,数据库会持久化的保存数据隔离性:多个事务之间,相互独立一致性:事务操作前后,数据总量不变事务的隔离级别概念:多个事务之间隔离的,相互独立的。但是如果多个事务操作同一批数据,则会引发一些问题,设置不同的隔离级别就可以解决这些问题。存在问题:脏读:一个事务,...

2019-12-26 17:45:33 466

原创 int和integer之间的比较(笔试题)

int和integer之间的比较(笔试题)1. int与integer之间的比较int和integer之间的比较就是数值之间的比较,只要数字相等比较结果就为true(依赖于自动装箱与拆箱的机制)2.integer之间的比较Integer i2;Integer.valueOf(int i);:这个方法赋值分两种情况,当i的区间在 [-127,127] 之间时,时在常量池中直接获取数...

2019-12-20 15:32:20 548 1

原创 JVM笔记(对象的结构、内存模型、垃圾回收算法、垃圾回收器)

JVM内存区域1. 程序计数器线程私有的,可以看作是当前线程说执行的字节码的行号指示器, 保存的是程序当前执行的指令的地址(也可以说保存下一条指令的所在存储单元的地址) ,保证每个线程都在线程切换后能够恢复在切换之前的程序执行位置 。在JVM规范中规定,如果线程执行的是非native方法,则程序计数器中保存的是当前需要执行的指令的地址;如果线程执行的是native方法,则程序计数器中的值...

2019-12-17 09:42:33 297

原创 mybatis-generator的使用方式(详细)

下载mysql的连接驱动jar包下载地址:https://mvnrepository.com/artifact/mysql/mysql-connector-java注意:请务必根据自己所使用的mysql版本去下载对应的jar引入maven依赖<plugin> <groupId>org.mybatis.generator</groupId&gt...

2019-12-13 14:09:40 327

原创 Java中各种锁机制的介绍

本文内容在读很多并发文章中,会提及各种各样锁如公平锁,乐观锁等等,这篇文章介绍各种锁的分类。介绍的内容如下:1.公平锁 / 非公平锁2.可重入锁 / 不可重入锁3.独享锁 / 共享锁4.互斥锁 / 读写锁5.乐观锁 / 悲观锁6.分段锁7.偏向锁 / 轻量级锁 / 重量级锁8.自旋锁上面是很多锁的名词,这些分类并不是全是指锁的状态,有的指锁的特性,有的指锁的设计,下面总结的内容...

2019-12-13 09:48:35 244

原创 MySQL数据库中的索引(各种索引的区别、索引索引失效原因、索引优化、面试中常问的问题详解)

索引模块1.为什么要使用索引?当查询数据量较小的表时(如只有几十行数据的表),全表扫面的速度依旧很快,当访问数据库较大的表时全表扫面的效率会十分低下,所以要使用索引的方式。避免全表扫描,快速查询数据:设计思想类似于字典2.什么样的信息能成为索引?主键、唯一键、普通键等(具有较好的区分度的字段都可以)3.索引的数据结构二叉查找树特点:左子树小于右子树查找方式:二分查找时间复...

2019-12-12 16:21:25 513

原创 线程池原理及常用线程池介绍

线程池概述:就是把一堆线程创建好了放在一个容器中(池子里),需要用的时候就直接拿出来用,用完之后再放回池子里。线程池的好处:降低资源消耗,降低了频繁创建线程和销毁线程的开销提高响应速度提高线程的可管理性,可以对线程进行一些操作,方便管理线程线程池的图解:线程池的运行过程:线程池家族线程池的最上层接口是Executor,这个接口定义了一个核心方法execute(Runn...

2019-12-12 16:12:54 1098 2

原创 Information:java: javacTask: 源发行版 8 需要目标发行版 1.8

今天创建原始Maven项目出现一个器官的问题:Information:java: javacTask: 源发行版 8 需要目标发行版 1.8Information:java: Errors occurred while compiling module 'threadcode'Information:javac 1.8.0_201 was used to compile java sourc...

2019-12-12 10:38:41 419

原创 Java中String和Byte[]互转

string转化为byte[]数组String str = "abcd";byte[] bs = str.getBytes();byte[]数组转化为string字符串/*String str1 = "abcd";byte[] bs1 = str1.getBytes();*///通过String的构造方法直接可以转byte[] bs1 = {97,98,100};String s...

2019-11-09 17:41:01 175

基于ZigBee的无线定位防溺水设计报告

基于ZigBee的无线定位防溺水设计报告,用于防溺水检测

2019-01-04

空空如也

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

TA关注的人

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