自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Spring Boot 整合 Redis 正确的实现分布式锁

前言最近在做分块上传的业务,使用到了Redis来维护上传过程中的分块编号。每上传完成一个分块就获取一下文件的分块集合,加入新上传的编号,手动接口测试下是没有问题的,前端通过并发上传调用就出现问题了,并发的get再set,就会存在覆盖写现象,导致最后的分块数据不对,不能触发分块合并请求。遇到并发二话不说先上锁,针对执行代码块加了一个JVM锁之后问题就解决了。仔细一想还是不太对,项目是分布式部署的,做了负载均衡,一个节点的代码被锁住了,请求轮询到其他节点还是可以进行覆盖写,并没有解决到问题啊没办法,只

2020-06-28 21:52:01 3565 4

原创 JVM内存结构和Java内存模型别再傻傻分不清了

JVM内存结构和Java内存模型都是面试的热点问题,名字看感觉都差不多,网上有些博客也都把这两个概念混着用,实际上他们之间差别还是挺大的。通俗点说,JVM内存结构是与JVM的内部存储结构相关,而Java内存模型是与多线程编程相关,本文针对这两个总是被混用的概念展开讲解。文章目录JVM内存结构JVM构成JVM内存结构程序计数器虚拟机栈本地方法栈堆方法区GC垃圾回收机制1. 垃圾判别方法引用计数算法可达性分析算法2. 垃圾回收算法标记清除法标记整理法复制算法3. 分代垃圾回收机制4. 垃圾回收器5. 四种引

2020-05-23 16:55:16 50875

原创 高校学生“在家实践”计划 免费领取12个月阿里云ECS云服务器

阿里爸爸再次来给在家大学生送温暖了,只要符合资格的,千万别错过这波福利这不是广告!这不是广告!活动链接高校学生“在家实践”计划活动奖品完成认证和测试后,免费领取6个月2核4G的ECS云服务器,到期30天内完成进阶测试再次免费续费6个月!!!活动限制需要大学生认证如账户下已存在ECS云服务器或者正在参与云翼计划的必须要等过期释放了才能参加!!!活动规则领取流程点击...

2020-03-25 13:35:12 13733 10

原创 Spring Cloud Feign 请求添加headers

背景部门技术升级,HttpClient需要升级Feign调用,重构某一个资方时遇到请求需要添加上自定义签名headers,踩坑后记录了下来方案一:方法上的@RequestMapping注解添加headers信息@RequestMapping注解的属性中包含一个headers数组,所以尝试使用,在指定的方法上@RequestMapping注解中添加需要的headers,可以是写死的,也可以读取配置,测试是有效的同理@RequestMapping一组的@PostMapping,@GetMapping注解

2020-10-22 20:19:07 10352 2

原创 搞懂MySQL索引策略

索引常用的实现哈希实现哈希索引基于哈希表实现,只能用于精准匹配查询,不适用于范围查询和索引排序在MySQL中只有Memory引擎支持哈希索引,但是可以自定义创建哈希索引使用。思路:在B-Tree的基础上创建一个伪哈希索引,使用哈希值而不是键值进行索引查找,使用时需要手动的指定哈希函数进行哈希化例子:根据url查找idSELECT id FROM url WHERE url="http://www.mysql.com"如果用B-Tree存储url索引可能会非常大,且长度变化区间很大可以维护

2020-07-25 17:24:25 615

原创 Docker搭建MySQL的PXC方案集群

安装Docker环境搭建5个MySQL节点拉取镜像到本地docker pull percona/percona‐xtradb‐cluster镜像名称太长不方便使用,进行一下改名,改名后删除原来的镜像docker tag percona/percona‐xtradb‐cluster pxcdocker rmi percona/percona‐xtradb‐cluster创建内网网段net1创建网段:docker network create --subnet=172.18.0.

2020-06-21 17:34:46 924

原创 Docker搭建3主3从Redis Cluster集群

前言本文将采取两种方式来构建3主3从的RedisCluser集群第一种:利用已经配置好的镜像进行快速搭建第二种:使用官方Redis镜像手动搭建利用已经配置好的镜像进行快速搭建此处使用镜像由慕课网的神思者老师提供1. 拉取配置好的Redis镜像 docker pull yyyyttttwwww/redis2. 创建集群使用的网段redis_netdocker network create --subnet=172.19.0.0/16 redis_net3. 修改镜像的名称将镜

2020-06-21 16:35:36 856

原创 Docker部署单节点的Spring Boot项目

文章目录Docker环境的安装Spring Boot项目 Jar包生成Dockerfile编写Spring Boot项目部署可能会用到的Docker指令汇总Docker环境的安装本文的操作均基于CentOS操作系统卸载本地可能存在的旧版本dockersudo yum remove docker \ docker-client \ docker-client-latest \ docker-

2020-06-21 16:24:59 492

原创 RocketMQ踩坑记录

启动Broker和namesrv时报错错误内容JRE version: (8.0_172-b11) (build )Java VM: Java HotSpot™ 64-Bit Server VM (25.172-b11 mixed mode linux-amd64 compressed oops)Java运行时环境的内存不足,无法继续,本机内存分配(mmap)未能映射8589934592字节,用于提交保留内存分析分配内存不足,默认是分配了8个g,服务器总共只有4个g,需要修改运行时JVM参数配置

2020-06-10 15:22:29 1359

原创 面试都说自己会Redis,看看这些问题都学废了吗?

本文问题总结:来自于,慕课网《Java架构师成长直通车》第八周第1-8节的汇总本文问题参考回答:来自博主自己的学习笔记和疯狂的Google现学的,由于学的不多了解有限,参考回答表述不正确的欢迎提出,共同进步。文章目录1. 什么是Redis?2. Redis的全称是什么3. Redis的数据类型?4. 使用Redis有哪些好处?5. Redis相比Memcache有哪些好处?6. Memcache和Redis的区别都有哪些?7. Redis是单进程单线程的吗?为什么那么快那么高效?8. 一个字符串类型的

2020-06-03 14:35:00 2423

原创 【2020】超100篇牛客网Java面经高频知识点汇总

总觉得自己好像什么都会点,但是面试就被问得很懵逼,自己很菜就不再吐槽了最近疯狂的在牛客刷面经,但是过目就忘了!!!所以分门别类的记录了一下高频的考点。何为高频的考点?快速扫描了七八十篇面经后,再看的面经绝大部分都在我笔记覆盖了!所以看完了100多篇就没怎么看了,还是整理整理开始狂补基础知识吧!本文内容来自陌陌、美团、阿里、链家、快手、京东、瓜子、滴滴、百度、爱奇艺、vivo等十多个公司最近三年的100多篇面经中比较高频的总结,有的是校招的有的是实习的,不过不影响学习。学习嘛,反正都得学。一

2020-05-27 19:34:13 1666 1

原创 HBase的读写流程

HBase的写流程Client访问zookeeper获取指定的RegionServer的地址(缓存meta表)Client向RegionServer发起写请求,RegionServer接收数据写入内存当MemStore大小达到一定值时会将数据flush到StoreFile文件并且存储在HDFS上RegionServer管理着多个Region,每个Region对应着一个HLog实例...

2020-05-08 17:16:37 1312

原创 逐步掌握HBase的Java API常用操作

文章目录引入依赖连接工具类基础工具类基础工具类测试HBase过滤器使用综合案例引入依赖首先需要引入HBase相关依赖 <dependency> <groupId>org.apache.hbase</groupId> <artifactId>hbase-client</artifactId&...

2020-05-08 17:10:54 1988

原创 Spring Boot + JWT + Mybatis Plus搭建通用快速开发模板

本文将从如何创建Spring Boot项目开始讲解如何搭建一个较为通用的快速开发模板,方便在以后的开发中可以快速的应用,做一个高效的cv工程师,避免每次写都要去以前的项目里翻工具类和通用配置。做高效cv工程师,从搭建自己的常用通用开发模板开始吧,本文的项目源码都放在我的github上了,有用就给上一个Star吧文章目录创建一个Spring Boot项目基础配置编写日志配置接口文档Swagge...

2020-05-04 14:58:45 2921 1

原创 @RequestBody部分属性为null的问题

Spring Boot项目中使用@RequestBody接收请求数据,前端通过json格式传递数据,发现获取不到所发送的部分数据实体类@ApiModel(value = "码表分类")@Datapublic class ClassVo { @ApiModelProperty(value = "码表分类编号", required = true) private Strin...

2020-05-03 17:22:03 9299 7

原创 Spring Boot项目配置阿里云ssl证书

最近参与了一个微信小程序的项目,API要求服务器域名是Https的,所以研究了一下ssl证书在Spring Boot中的配置首先,到云服务提供商申请一套SSL证书,这里就不提供具体的申请流程了申请到证书之后下载证书现在Tomcat的进行下载,下载解压后有两个文件分别是.pfx后缀和.txt后缀的打开我们的项目(这里就不演示如何构建自己的基于Spring Boot的项目了)将.pfx...

2020-04-29 13:11:46 2511 3

原创 彻底搞懂死锁的前世今生

关于死锁,你知道多少?本文就什么是死锁?怎么找到死锁?怎么解决死锁?怎么避免死锁等问题展开分析,通过大量的代码和案例演示向大家描述死锁的前世今生。快速到达看这里死锁是什么,有什么危害?写一个死锁的例子案例一:必然发生死锁案例二:两个账户转账案例三:多人多次转账发生死锁必须满足哪些条件如何定位死锁有哪些解决死锁问题的策略?线上发生死锁怎么办常见修复策略哲学家就餐问题问题描述代码演示多种解决方案改...

2020-04-27 14:39:32 4302 1

原创 Java高效编程类库-Guava入门与实践

文章目录Guava简介对null处理 :Optional类不可变集合 :Immutable*类新的集合类型 Multiset接口常用工具集 :Sets、Lists类IO操作: Files类最后Guava的类特别多,就将常用的进行展开记录,以后需要用到了再补充Guava简介Guava工程包含了若干个被Google的Java项目广泛依赖的核心库,例如:集合、缓存、原生类型支持、并发库、通用注解、...

2020-04-21 21:10:11 458

原创 Java自动化资源关闭利器 - try-with-resource使用实践

在JDK 7中,引入了try-with-resource用于替代在try-catch-finally中手动的资源关闭通常需要我们手动释放的资源包括:文件/流资源socket资源数据库连接资源这些资源不能自动的被回收,长时间无效占用,当超过最大限制后,将会无资源可用,最终导致系统无法正常运行以文件拷贝为例演示JDK 7之前和引入try-with-resource后的差异使用try...

2020-04-21 15:36:23 425

原创 Java数据处理利器-Stream流编程入门

文章目录什么是流怎么使用流编程中间操作终端操作构建流什么是流Java 8 API添加了一个新的抽象称为流Stream,其可以以一种声明式的方式处理数据。它将基础操作链接起来,能完成复杂的数据处理流水线,并提供了透明的并行处理机制。Stream流的组成数据源中间操作终端操作一图胜千言,从整体上了解下相关的内容流与集合的区别:流相对于是时间上的集合,得到的是某一时刻的数据(面...

2020-04-21 13:59:36 627

原创 面试必刷的算法题 - 剑指offer题集Java实现

本文的题目均来自LeetCode的剑指offer题库文章目录基础知识数据结构面试题03.数组中重复的数字面试题04.二维数组中的查找面试题05.替换空格面试题06.从尾到头打印链表面试题07.重建二叉树面试题09.用两个栈实现队列算法与数据操作面试题10-I.斐波那契数列面试题11.旋转数组的最小数字面试题12.矩阵中的路径面试题13.机器人的运动范围[面试题14-I. 剪绳子](https:/...

2020-04-12 22:14:20 2291 1

原创 leetcode高频题笔记之动态规划

一直畏惧的动态规划终于开始强化型啃了文章目录70.爬楼梯62.不同路径63.不同路径II1143.最长公共子序列120.三角形最小路径和70.爬楼梯dp方程:dp[i] = dp[i-1] + dp[i-2]自底向上迭代class Solution { public int climbStairs(int n) { if (n == 0) return 1;...

2020-04-10 17:39:49 672

原创 MyBatis必知必会

文章目录什么是MyBatisMyBatis与Hibernate的区别MyBatis的核心组件有哪些?MyBatis的动态SQL有了解吗?MyBatis的Mapper中的常见标签有哪些?DAO接口中的方法可以重载吗(重点)不同的映射文件xml中的id值可以重复吗?MyBatis中 # 和 $ 的区别是什么?(高频考点)Mybatis的缓存机制MyBatis的接口绑定以及实现方式什么是MyBatis...

2020-04-06 16:10:09 425

原创 JavaWeb基础必知必会

文章目录servlet的生命周期转发forward和重定向redirect的区别Jsp九大内置对象Get和Post的区别Jsp的四个域对象MVC设计思想Session和Cookie的区别servlet的生命周期Web容器加载Servlet类并实例化(默认延迟加载)(1次)运行init方法进行初始化(1次)用户请求该Servlet,请求到达服务器后运行其service方法(每次)serv...

2020-04-05 22:20:15 345

原创 Spring必知必会

文章目录说一说Spring的控制反转(IOC)说一说Spring的AOP面向切面编程说一说Spring的控制反转(IOC)控制反转是将对象间的依赖关系交给Spring容器去管理,使用配置文件来创建所依赖的对象,将主动创建改为被动创建,实现解耦合依赖对象可以通过注解@Autowired和@Resource来注入@Autowired按类型装配,可以直接使用@Resource按名字装配,需...

2020-04-05 17:48:23 394

原创 面试中经常手撕的多线程代码

看了好多的面经,手撕代码中除了算法题最常出现多线程的问题了,以下几个问题是总结了下出现比较多的,做一下记录,方便多看看写一个生产者消费者模式写一个单例模式写一个必然死锁的情况写一个银行转账场景写一个两个线程交替打印0-100奇偶数写一个哲学家就餐问题文章目录两个线程交替打印0-100奇偶数单例模式必然死锁生产者消费者模式银行转账死锁哲学家就餐问题两个线程交替打印0-100奇偶数...

2020-04-03 13:43:45 1388

原创 深克隆和浅克隆相关问题

文章目录深克隆和浅克隆有什么区别?java.lang.Object 中对 clone() 方法的约定有哪些?Arrays.copyOf()是实现深克隆还是浅克隆深克隆实现方式有哪些?深克隆和浅克隆有什么区别?浅克隆把原型对象中成员变量为值的属性复制给克隆对象把原型对象中成员变量为引用的引用地址复制给克隆对象深克隆把原型对象中的所有类型(无论是值还是引用类型)都复制一份给克隆...

2020-04-02 14:34:29 407

原创 CentOS下安装伪分布式HBase

文章目录本文使用安装包的版本JDK安装SSH免密登录配置Hadoop安装HBase安装配置自己的zookeeper配置phoenix本文针对没有JDK和Hadoop的情况下的安装,如果已经配置好了JDK环境和Hadoop环境的可以跳过对应的章节进行观看本文使用安装包的版本JDK:1.8Hadoop:hadoop-2.6.0-cdh5.7.0HBase:hbase-1.2.6zooke...

2020-04-01 16:45:55 847

原创 leetcode高频题笔记之位运算

文章目录位运算常见问题191.位1的个数231.2的幂342.4的幂190.颠倒二进制位338.比特位计数461.汉明距离136.只出现一次的数字260.只出现一次的数字III268.缺失数字面试题16.01.交换数字693.交替位二进制数476.数字的补数371.两整数之和318.最大单词长度乘积位运算常见问题191.位1的个数解法一:利用x&1返回最低位是否为1,不断的左...

2020-03-30 22:25:10 530

原创 leetcode高频题笔记之二分查找

文章目录[69 x 的平方根](https://leetcode-cn.com/problems/sqrtx/)367.有效的完全平方数33.搜索旋转排序数组74.搜索二维矩阵153.寻找旋转排序数组中的最小值744.寻找比目标字母大的最小字母540.有序数组中的单一元素278.第一个错误的版本34.在排序数组中查找元素的第一个和最后一个位置69 x 的平方根去除x0和x1的情况,然后从1到...

2020-03-30 15:03:22 366

原创 一文搞懂Java并发容器相关面试题

ConcurrentHashMap是面试的必考点,只是简单的知道是线程安全的是完全不够的,所以,让我们一起从面试问题和源码来认识下ConcurrentHashMap吧文章目录为什么需要ConcurrentHashMap?ConcurrentHashMap 和 HashMap 两者的异同concurrentHashMap的常见问题ConcurrentHashMap的构造方法有哪些Concurren...

2020-03-28 17:00:16 886

原创 leetcode高频题笔记之二叉树的递归

文章目录普通二叉树104.二叉树的最大深度111.二叉树的最小深度110.平衡二叉树543.二叉树的直径(两节点最大路径)687.最长同值路径226.翻转二叉树101.对称二叉树617.合并二叉树112.路径总和437.路径总和III572.另一个树的子树404.左叶子之和337.打家劫舍III671.二叉树中第二小的节点BST669.修剪二叉搜索树230.二叉搜索树中第K小的元素538.把二叉搜...

2020-03-27 21:32:24 371

原创 leetcode高频题笔记之贪心算法

文章目录860.柠檬水找零455.分发饼干121.买卖股票的最佳时机122.买卖股票的最佳时机II55.跳跃游戏[45.跳跃游戏 II](https://leetcode-cn.com/problems/jump-game-ii/)435.无重叠区间452.用最少数量的箭引爆气球406.根据身高重建队列605.种花问题392.判断子序列665.非递减数列53.最大子序和763.划分字母区间860...

2020-03-25 22:24:55 1113

原创 leetcode高频题笔记之双指针专题

在许多数组和链表的题中,都需要用到双指针的思想来优化,本文总结归纳了几种常见的双指针和对应的应用案例,通过针对的性的刷题希望能熟练的掌握双指针的运用文章目录167.两数之和II-输入有序数组(头尾指针)633.平方数之和(头尾指针)345.反转字符串中的元音字母(头尾指针)680.验证回文字符串Ⅱ(头尾指针)88.合并两个有序数组(异步指针)21.合并两个有序链表(异步指针)141.环形链表(快...

2020-03-25 11:52:49 717

原创 算法面试题《精选题目+题解分类汇总》

从去年年底开始想准备找实习,于是就开始懒散的复习。大二学过数据结构,对基本的算法理论和数据结构有过了解,但是感觉又基本都交还给老师了于是开始零散的复习,在leetcode上按照通过率由高到低开始刷,发现自己连通过率最高的几个题都吃力,几乎每个题都要去看题解然后慢慢消化刷了十多个题就放弃了,这种盲目的玩法真的太伤自信心于是就去看书,先复习下基础,当然就盲目看书还是没学到什么东西之后又买了慕...

2020-03-24 12:35:16 2591

原创 leetcode高频题笔记之DFS和BFS

文章目录代码模板BFS模板DFS模板递归玩法非递归玩法二叉树的层次遍历括号生成在每个树行中找最大值岛屿数量岛屿的最大面积被围绕的区域单词接龙代码模板BFS模板def BFS(graph, start, end): visited = set() queue = [] queue.append([start]) while queue: node = queue.po...

2020-03-23 17:27:45 2193

原创 leetcode高频题笔记之分治与回溯

文章目录Pow(x,n)子集Pow(x,n)分治法采用分治的思想,求x的n次方,可以先求x的n/2次方如果n为偶数x^n = x^(n/2)* x^(n/2)如果n为奇数x^n = x^(n/2)* x^(n/2) *xpublic class Main { public double myPow(double x, int n) { if (x == 1...

2020-03-22 19:20:31 786

原创 摩尔投票法的应用

关于摩尔投票法:候选人(cand_num)初始化为nums[0],票数count初始化为1。当遇到与cand_num相同的数,则票数count = count + 1,否则票数count = count - 1。当票数count为0时,更换候选人,并将票数count重置为1。遍历完数组后,cand_num即为最终答案。为何这行得通呢?投票法是遇到相同的则票数 + 1,遇到不同的...

2020-03-22 16:29:09 518 1

原创 leetcode高频题笔记之递归

文章目录括号生成验证二叉搜索树二叉树的最大高度二叉树的最小深度翻转二叉树二叉搜索树的最近公共祖先二叉树的最近公共祖先从前序与中序遍历序列构造二叉树括号生成dfs深度搜索public class Main { List<String>res; public List<String> generateParenthesis(int n) { ...

2020-03-21 22:16:01 421

原创 leetcode高频题笔记之树的遍历

概要:采用递归,状态标记迭代,普通迭代三种方法实现了二叉树的前中后序遍历状态标记法的思路来源于题解颜色标记法其中,递归和颜色标记法的前中后序遍历都非常相似,只需要记忆一个就可以了!文章目录二叉树的中序遍历(3种实现)递归实现状态标记法迭代实现普通迭代实现二叉树的前序遍历(3种实现)递归实现状态标记法迭代实现普通迭代实现二叉树的后序遍历(3种实现)递归实现状态标记法迭代实现普通迭代实现二叉...

2020-03-18 16:20:32 452

cv-template.zip

可以离线进行修改的动态简历模板,修改后可以挂到github上去。 包括了简历常有的所有模块,而且可以动态的从页面添加修改模块。

2020-02-25

空空如也

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

TA关注的人

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