自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 字节面经(实习ing)

一轮问了问项目volatile synchronized原理秒杀怎么设计1g的每一行都是数组,内存不够,要求分块实现排序编程题:二叉树右视图 二叉树从右边看过去是什么样子二叉树右视图 1 2 34 5 6 137136static class TreeNode{ public int val=0; public TreeNode left; pu

2020-12-31 17:26:04 2607 7

原创 JDK源码学习01-HashMap源码学习

HashMap源码的put函数详解/** * Implements Map.put and related methods. * * @param hash hash for key * @param key the key * @param value the value to put * @param onlyIfAbsent if true, don't change existing value * @param evict i

2020-11-06 15:17:47 309

原创 Golang常用结构源码01-Map

哈希表是编程语言中必备的常见数据结构,也叫做映射、map、散列表。map实际上是一个非常简单的数据结构,其核心为hash函数、数组、拉链(或类似拉链)。map使用数组存储元素,但是不像列表一样顺序存储,而是使用hash函数获得存储key的hash值,通常经过取模运算获得最终数组index然后存储数据,这样从map中查询元素时即可通过key计算数组index,快速定位已经存储的元素。

2023-01-06 21:13:28 750

原创 Docker-compose搭建常用软件

Docker-compose搭建常用软件常用命令docker-compose ps# 查看服务日志docker-compose logs -f [service name]docker-compose down# 启动或者更新服务 -d可以后台运行docker-compose up -ddocker-compose -f filename up -d# 进入容器docker exec -it [容器id|容器名] bashdocker-compose exec [service

2021-11-25 18:30:34 232

原创 Nginx安装和部署项目域名

Nginx安装官网下载http://nginx.org/en/download.html使用FTP命令上传# 连接远程服务器sftp [email protected]# 查看当前服务器路径lpwd# 查看远程服务器路径[默认用户家目录]pwd# 上传文件put 当前路径 远程连接# 下载文件get 远程路径 当前路径下载依赖(比如ssl/gcc)yum -y install make zlib zlib-devel gcc-c++ libtool open

2021-11-18 18:13:22 1045

原创 Docker复习及安装常用软件

Docker安装常用软件0. 安装软件先去docker仓库搜索中意的版本 https://registry.hub.docker.com/_/mysqldocker psdocker exec -i 69d1 /bin/bash0.1 安装mysql安装mysql,建议安装最新的或者5.7docker pull mysql:tag (tag不加默认最新版本)docker pull mysql:5.7运行mysqldocker run -d -p 3306:3306 -e

2021-11-05 13:34:03 568 4

原创 阿里云CentOS部署Java项目全流程

阿里云CentOS部署Java项目全流程服务器需要具备的东西:安全组开放相应的端口关闭防火墙Mysql数据库jdk1.8springboot项目的jar包1. 服务器安装jdk1.8yum list java*yum install java-1.8.0-openjdk.x86_64java -version2. 安装Mysql2.1 下载Mysql进入mysql官网,由于是centos8,所以选择第一个,点击Download跳转之后,直接点击【No thanks, just s

2021-11-04 13:56:01 854

原创 MySQL复习之读书笔记

深入了解InnoDB-技术内幕InnoDBmysql复习两本书:技术内幕innodb,mysql王者晋级之路,逐步更新复习顺序:一直复习算法复习mysql、redis、计网、JVM、多线程、Nginx、Spring、设计模式、操作系统学习MQ1. 核心重点列举mysql通过mvcc多版本并发控制提升并发性,默认隔离级别可重复读,通过next-key解决幻读现象,InnoDB引擎提供了插入缓冲(直接在缓存里修改最后落盘,合并写操作),二次写double write(内存2M硬盘2M,落盘的

2021-10-30 12:47:34 131

原创 GoLang之接口的对象方法和指针方法实现区别

GoLang大坑之接口的对象方法和指针方法现在大多数语言都是面向对象语言,使用Java之后,尽管非常冗余,但是和c++一样逻辑清晰,没有什么大坑可以踩。但是GoLang注重简洁清晰,经常有莫名大坑出现,比如闭包等。今天在公司写业务需求的时候,被这个bug坑了老久,呜呜呜~GoLang接口的几种实现方式–自定义1. 对象方法GoLang中类方法分为对象方法和指针方法,分属于不同的方法集,指针可以调用所有方法,而对象只能调用对象方法下面我们看一个栗子type People inte

2021-06-09 14:26:11 923

原创 MarkDown提取文本作为文章简介

MarkDown提取文本作为文章简介这几乎是所有使用md的博客项目需要使用到的技术,但是提取文本不是万能的,所以文章头部最好放一些简介或者md的纯文本内容之内的,不建议放代码块/链接/奇怪符号。效果图(如不不实用本文的提取方法,通常开头就是几个#### 看着很丑陋)实现原理首先使用依赖将md转为html,然后通过正则表达式去掉标签导入依赖 <!--markdown转html--> <dependency> &l

2021-05-18 22:14:05 1744

原创 JDK源码学习06-CurrentHashMap简析

JDK源码学习06-CurrentHashMap简析CurrentHashMap原理十分复杂,只能记录下看懂了的部分。众所周知CurrentHashMap的线程安全实现原理Synchronized+CAS,现在我们看看。静态常量其他常量类似与HashMap就不看了,这里主要看核心字段。如果元素正在扩容迁移,则桶首节点的hash值为MOVED如果元素是树 则桶首节点的hash值为TREEBINHASH_BITS为32位的int,只有第一位为0,其他二进制位都为1,可以把hash值只取尾部31位

2021-04-19 16:30:59 582

原创 笔记:Java并发编程的艺术

笔记:Java并发编程的艺术happens-before和as-if-serial《JSR-133:Java Memory Model and Thread Specification》对happens-before关系的定义如下。1)如果一个操作happens-before另一个操作,那么第一个操作的执行结果将对第二个操作可见,而且第一个操作的执行顺序排在第二个操作之前。2)两个操作之间存在happens-before关系,并不意味着Java平台的具体实现必须要按照happens-before

2021-04-12 16:33:29 192 3

原创 JDK源码学习05-简单理解AQS和FairSync源码

JDK源码学习05-简单理解AQS和FairSync源码1. 简介1.1 说明ReentrantLock的实现依托于大名鼎鼎AQS实现,AQS的注释上说了,建议使用内部工具类的方式实现AQS抽象类,作为同步工具。所以ReentrantLock内部主要有NonfairSync(非公平锁)和FairSync(公平锁)两种实现方式。1.2 ReentrantLock源码简读我们可以看到ReentrantLock只不过是实现了Lock接口罢了,所以ReentrantLock必然不因为Lock接口,那是为什

2021-04-10 21:12:57 139

原创 JDK源码学习04-手撸一个简易线程池

JDK源码学习05-手撸一个简易线程池简介本文实现的线程池非常简陋,只要稍有并发基础即可看懂(只要会生产者消费者即可),实现线程池非常类似于wait和notify实现的单生产者多消费者案例,基本上是一模一样。本文会给简陋的线程池依次添加一些功能函数,这才是比较值得重点阅读的。除此之外,在Woker中的run方法也非常值得学习,即类似下面这个框架结构,在JUC中也是频繁使用来实现同步,即在死循环中根据先cas尝试,尝试失败则进入阻塞,如果被唤醒,就会再次cas尝试,直到成功后执行处理逻辑。# 使用syn

2021-04-04 20:13:14 199

原创 JDK源码学习04-寄生虫LinkedHashMap

活久见的LinkedHashMap随便聊聊笔者大三,在2021.1.18入职字节实习生,干了四十天就休假跑路回去上课了,预计5.11接着去实习。最近一大段时间过的非常松懈,现在报复性疯狂发布博客,哈哈。还是决定阅读JDK源码,从集合开始,希望能够读完核心的集合、AQS、线程池在等部分,最近对Java并发比较感兴趣也比较有体会,鬼知道能不能坚持到那个时候。笔者的文章可能不够详细,但会记录下来个人觉得比较核心的内容。联系方式:qq 754647431LinkedHashMap简介核心原理:Link

2021-04-02 17:18:25 364

原创 JDK源码学习03-ThreadLocal源码简析

ThreadLocal源码简析ThreadLocal其实原理很简单,主要就是在Thread类中本来就拥有属性 ThreadLocal.ThreadLocalMap threadLocals = null;然后以ThreadLocal作为key,将数据存储进入每个线程中,这样就不存在进程关系。比如:十个人竞争一个共享单车,这是线程不安全的。但是ThreadLocal实现了给每个人都配一辆自行车,这样每个人用自己的自行车就行了。...

2021-04-02 13:02:48 162

原创 redis分布式锁--Jmeter测试

Jmeter测试redis秒杀安装jmeter由于截图较多,见底部秒杀测试demo01# 测试条件 设置票数count为100 这里直接单机运行,使用jmeter测试 jmeter访问四次 每次发送400个请求---# 测试结果 一共卖出16件商品,并且卖出的商品都多次重复卖出 此时同一商品多次卖出 qps无参考价值 @RequestMapping("/") public String hello(){ int count = In

2021-03-08 21:37:25 382

原创 工具使用:MybatisPlus生成代码

MybatisPlus 生成代码代码地址:项目gitee地址MybatisPlus 官网mybatis代码生成器官方文档1.导入依赖新建一个springboot工具项目,专门负责指定database和表名来生成代码。导入以下依赖<dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-boot-starter</artifactId>

2021-03-06 11:45:19 139

原创 Redis笔记

Redis笔记安装虚拟机建议安装1804版本的centos7的minimal而不是2009版的更新eth0中的onboot为yes然后wq即可配置网络# 查看防火墙状态systemctl status network.service# 临时关闭防火墙systemctl stop network.service# 永久关闭防火墙systemctl disable network.service安装redis下载redis,上传到虚拟机scp /Users/admin/Desk

2021-03-01 10:29:27 75 1

原创 后台接收不到axios的post传参

后台接收不带axios的post传参数据和post请求的代码如下formData: { username: '', password: '' }axios.post("http://localhost:8084/login", this.formData ).then((res) => { console.log(res.data)

2020-12-24 00:40:10 241

原创 JDK源码学习02-ArrayList源码和简单实现

ArrayList源码学习ArrayList是常用的集合,ArrayList查询效率高,增删效率低复制数组的重要工具类# 最常用最重要 特别是原数组与目标数组为同一个数组的时候System.arraycopy(原数组, 原数组开始索引, 目标数组,目标数组开始索引, 复制长度);# 拷贝原数组前newLength个元素生成一个新数组 public static T[] copyOf(T[] original, int newLength)#

2020-12-19 12:26:24 145 1

原创 Spring源码入门笔记

四种定义bean的方式bean标签@Bean@Component使用BeanDefinitionAbstractBeanDefinition beanDefinition = BeanDefinitionBuilder.genericBeanDefinition().getBeanDefinition();beanDefinition.setBeanClass(User.class);applicationCOntext.registerBeanDefinition("user",bean

2020-12-12 23:01:24 157

原创 Mybatis巩固

Mybatis巩固Mybatis官网中文文档:https://mybatis.org/mybatis-3/zh/index.htmlMybatis常用小功能获得自增主键使用useGeneratedKeys=“true” keyProperty=“id”,可以获得自增的主键,自增的主键会自动填写进入insert中传入的参数当中 <insert id="save" useGeneratedKeys="true" keyProperty="id" parameterType="Article

2020-12-09 23:05:24 86

原创 Vue3使用ui创建项目

VUE3.0和ui创建项目并导入插件1. 使用命令行打开 vue uiC:\Users\MX的电脑\WebstormProjects\vueblog01>vue ui2. 进入http://localhost:8000点击左上角 然后点vue项目管理器 然后点击创建项目3. 创建项目详情给定项目名预设第一次使用时,手动配置 后面可以给配置好的设置为模板 以后创建从此处勾选曾经的模板就行了配置直接确定就行了插件集成项目启动npm run ser

2020-11-20 16:12:03 1041

原创 博客园线条随鼠标动画

博客园线条随鼠标动画博客园线条随鼠标动画直接将一下代码加入html的最下面即可<script> !function(){ function n(n,e,t){ return n.getAttribute(e)||t } function e(n){ return document.getElementsByTagName(n) } function t(

2020-11-14 22:22:19 270

原创 看板娘的使用

JS看板娘使用的是cdn的js 可以直接复制进入空html就可以访问<!DOCTYPE html><html lang="zh"><head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>看板娘</title></head&

2020-11-14 22:03:13 641

原创 Nginx设置springboot项目的域名

Nginx设置springboot项目的域名1. 去域名解析配置解析配置@即minxu.xyz配置指向自己的服务器地址配置www即www.minxu.xyz配置指向自己的服务器地址2. 在服务器安装Nginx这里使用宝塔面板一键安装3. 配置Nginx的配置文件在server中配置以下配置即可server{ listen 80; server_name minxu.xyz; location /{ #root html #index index.html proxy_p

2020-11-09 15:20:32 821

转载 Spring-AOP原理

Spring-AOP原理引用于 Spring AOP源码分析1. AOP原理关于 AOP 的原理,想必大家都知道了。无非是通过代理模式为目标对象生产代理对象,并将横切逻辑插入到目标方法执行的前后。这样一说,本章确实没什么好说的了,毕竟原理就是这么简单。不过原理归原理,在具体的实现上,很多事情并没想象的那么简单。比如,我们需要确定是否应该为某个 bean 生成代理,如果应该的话,还要进一步确定将横切逻辑插入到哪些方法上。说到横切逻辑,这里简单介绍一下。横切逻辑其实就是通知(Advice),Spring

2020-10-25 22:08:10 91

原创 JDK动态代理

JDK动态代理Spring-Aop两种代理方式:1、JDK动态代理:用于目标类实现了接口;2、Cglib动态代理:用于目标类没有实现接口;本篇博客用于讲解JDK动态代理。为什么要使用代理呢,因为我们常常需要对既有的代码增强,又不希望改变现在的代码,所以就出现了AOP(面向界面编程),JDK动态代理就是AOP的实现方式之一。首先由于JDK动态代理用于目标类实现了接口,所以首先需要创建接口,实现类public interface UserDao { public int add(int

2020-10-25 20:52:14 70

原创 RabbitMQ安装

RabbitMQrabiitmq的安装rabbitmq是有erlang语言编写,所以需要erlang的环境下载yum的仓库(先下载才能安装erlang 否则404)curl -s https://packagecloud.io/install/repositories/rabbitmq/erlang/script.rpm.sh | sudo bash安装erlangyum install erlang-22.3.3-1.el7.x86_64测试是否安装成功erlrabb

2020-10-14 16:22:18 105

原创 thymeleaf取值作为js函数的参数

字符串作为js函数的参数在正常的js函数中,将int类型的变量直接传递给js函数的参数时候,是不需要转义的,但是将字符串类型的作为参数传递的时候,有以下几种解决的方法:1、代码:传递数值//前台 <a title="删除" th:onclick="'javascript:role_dele(this,'+${role.roleid}+')'">但是如果前台的页面中的连接中用到的是字符串类型的就出错,整个页面加载报500错误。2、传递字符串<a title="删除" hre

2020-10-03 17:27:31 2766 2

原创 七牛云集成于springboot

七牛云集成于springboot导入依赖 <!--七牛--> <dependency> <groupId>com.qiniu</groupId> <artifactId>qiniu-java-sdk</artifactId> <version>7.2.7</version> </de

2020-10-01 21:53:59 210

原创 springboot项目部署

springboot项目部署打包项目2.服务器的宝塔上务必设置数据库所有人访问3. 上传jar包到服务器运行命令nohup java -jar XXX.jar > Log.log 2>&1 & 或者nohup java -jar XXX.jar >> Log.log 2>&1 & 或者nohup java -jar XXX.jar > /dev/null 2>&1 & # 查看情况

2020-09-30 19:33:51 124

原创 springcloud学习笔记

springcloud学习笔记springcloud项目创建springcloud有种创建方式,父子依赖可以实现spring-cloud-dependencies共用,但此处在空项目中直接创建全新的同级项目,故每次都需要复制以下依赖,以下依赖放置的位置与dependencies同级,不可放入其中创建一个空项目file->new module创建一个springboot的模块(勾选web依赖)导入spring-cloud-dependency注意的是版本问题,这里使用springcl

2020-09-24 16:54:19 145

转载 SpringBoot整合log4j的步骤

SpringBoot整合log4j的步骤:第一步:引入log4j依赖<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-log4j</artifactId> <version>1.3.8.RELEASE</version>&

2020-09-17 16:49:13 239

原创 git学习笔记

git学习笔记1.首先要写好自己的本地文件xxx2.将目标repo克隆到本地git clone [url]3.加入要上传的文件4.将已添加自己文件的项目再push到目标repogit add .git commit -m "message"git pull origin master git push https://gitee.com/kuangmx/mx master # 上传详细步骤:1.进入本地文件xxxx所在目录下,右键点击Git Bash Here

2020-09-17 14:06:46 58

原创 springboot整合redis

springboot整合redisSpring Boot Data(数据) Redis中提供了" RedisTempla和StringRedisTemplate"“,其中StringRedisTemplate是 RedisTemplate的子类,两个方法基本-致,不同之处主要体现在操作的数据类型不同,RedisTemplate中的两个泛 型都是0bject,意味着存储的key和value都可以是一个对象, 而StringRedisTemplate的两 个泛型都是String,意味着StringRedisT

2020-09-16 23:32:10 93

原创 docker学习

docker命令学习tips:镜像运行产生容器基础操作docker启动命令systemctl start dockertips:dockerhub是类似maven repository的 可以查看docker能下载的镜像docker是cs架构 我们配置的都是客户端 服务端理应一直开启 此命令可以查看docker info查看有哪些镜像systemctl images 列出运行的镜像的信息 systemctl images -q 只列出运行的镜像的

2020-09-16 22:29:43 119 3

原创 文件上传springboot

文件上传springboot前端<!DOCTYPE html><html lang="en" xmlns:th="http://www.thymeleaf.org"><head> <meta charset="UTF-8"> <title>Title</title></head><body><form th:action="@{/test1}" method="post" en

2020-09-15 21:32:05 79

原创 druid集成于springboot

druid集成于springboot导入依赖 <!--druid--> <dependency> <groupId>com.alibaba</groupId> <artifactId>druid-spring-boot-starter</artifactId> <version>1.1.21</version>

2020-09-15 20:51:10 101

空空如也

空空如也

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

TA关注的人

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