自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

转载 如何使用一条命令完成开源项目蘑菇博客的部署?

大家好,我是陌溪,欢迎点击下方的公众号名片,关注陌溪,让我们一起成长~ 陌溪教你学编程 三本院校出身,字节跳动后台开发工程师,开源项目蘑菇博客作者,分享一些我写开源项目的技术和心得,欢迎各位小伙伴跟着我一起学习

2021-05-17 11:56:33 664

原创 Nacos出现重大安全漏洞,开源项目险遭脱库

前言大家好,我是陌溪昨天陌溪在蘑菇博客交流群和群里的小伙伴进行了一场比较激烈的讨论,主要是关于Nacos中一个绕过安全认证直接获取微服务项目的配置文件的安全漏洞。截止到昨天为止,该issue已经有50条评论。下面是该issue的地址,感兴趣的小伙伴可以跳转进行查看。https://github.com/alibaba/nacos/issues/4593漏洞起源可能有些小伙伴还不太清楚Nacos是啥,它是SpringCloudAlibaba微服务架构...

2021-01-17 17:34:04 2152 2

原创 【JVM】Java虚拟机中的直接内存 Direct Memory

直接内存 Direct Memory不是虚拟机运行时数据区的一部分,也不是《Java虚拟机规范》中定义的内存区域。直接内存是在Java堆外的、直接向系统申请的内存区间。来源于NIO,通过存在堆中的DirectByteBuffer操作Native内存通常,访问直接内存的速度会优于Java堆。即读写性能高。因此出于性能考虑,读写频繁的场合可能会考虑使用直接内存。Java的NIO库允许Java程序使用直接内存,用于数据缓冲区使用下列代码,直接分配本地内存空间int BUFFER = 1024*

2020-09-12 10:53:28 572

原创 【JVM】Java虚拟机中的本地方法栈

本地方法栈Java虚拟机栈于管理Java方法的调用,而本地方法栈用于管理本地方法的调用。本地方法栈,也是线程私有的。允许被实现成固定或者是可动态扩展的内存大小。(在内存溢出方面是相同的)如果线程请求分配的栈容量超过本地方法栈允许的最大容量,Java虚拟机将会抛出一个stackoverflowError 异常。如果本地方法栈可以动态扩展,并且在尝试扩展的时候无法申请到足够的内存,或者在创建新的线程时没有足够的内存去创建对应的本地方法栈,那么Java虚拟机将会抛出一个outofMemoryError

2020-09-12 10:51:24 251

原创 【JVM】Java虚拟机中的堆

堆堆的核心概念堆针对一个JVM进程来说是唯一的,也就是一个进程只有一个JVM,但是进程包含多个线程,他们是共享同一堆空间的。一个JVM实例只存在一个堆内存,堆也是Java内存管理的核心区域。Java堆区在JVM启动的时候即被创建,其空间大小也就确定了。是JVM管理的最大一块内存空间。堆内存的大小是可以调节的。《Java虚拟机规范》规定,堆可以处于物理上不连续的内存空间中,但在逻辑上它应该被视为连续的。所有的线程共享Java堆,在这里还可以划分线程私有的缓冲区(Thread Local A

2020-09-12 10:50:34 423

原创 【JVM】Java虚拟机中的方法区

方法区前言这次所讲述的是运行时数据区的最后一个部分从线程共享与否的角度来看ThreadLocal:如何保证多个线程在并发环境下的安全性?典型应用就是数据库连接管理,以及会话管理栈、堆、方法区的交互关系下面就涉及了对象的访问定位Person:存放在元空间,也可以说方法区person:存放在Java栈的局部变量表中new Person():存放在Java堆中方法区的理解《Java虚拟机规范》中明确说明:“尽管所有的方法区在逻辑上是属于堆的一部分,但一些简单的实现可能不会选择去进行

2020-09-12 10:49:53 285

原创 【JVM】Java虚拟机中的本地方法接口

本地方法接口什么是本地方法简单地讲,一个Native Methodt是一个Java调用非Java代码的接囗。一个Native Method是这样一个Java方法:该方法的实现由非Java语言实现,比如C。这个特征并非Java所特有,很多其它的编程语言都有这一机制,比如在C++中,你可以用extern “c” 告知c++编译器去调用一个c的函数。“A native method is a Java method whose implementation is provided by non-java c

2020-09-12 10:48:51 339

原创 【JVM】Java虚拟机中的虚拟机栈

虚拟机栈虚拟机栈概述由于跨平台性的设计,Java的指令都是根据栈来设计的。不同平台CPU架构不同,所以不能设计为基于寄存器的。优点是跨平台,指令集小,编译器容易实现,缺点是性能下降,实现同样的功能需要更多的指令。有不少Java开发人员一提到Java内存结构,就会非常粗粒度地将JVM中的内存区理解为仅有Java堆(heap)和Java战(stack)?为什么?首先栈是运行时的单位,而堆是存储的单位栈解决程序的运行问题,即程序如何执行,或者说如何处理数据。堆解决的是数据存储的问题,即数据怎么放,

2020-09-12 10:43:07 462

原创 【JVM】Java虚拟机中的程序计数器

程序计数器介绍JVM中的程序计数寄存器(Program Counter Register)中,Register的命名源于CPU的寄存器,寄存器存储指令相关的现场信息。CPU只有把数据装载到寄存器才能够运行。这里,并非是广义上所指的物理寄存器,或许将其翻译为PC计数器(或指令计数器)会更加贴切(也称为程序钩子),并且也不容易引起一些不必要的误会。JVM中的PC寄存器是对物理PC寄存器的一种抽象模拟。它是一块很小的内存空间,几乎可以忽略不记。也是运行速度最快的存储区域。在JVM规范中,每个线程都有它自

2020-09-12 10:34:55 844 2

原创 【JVM】运行时数据区概述及线程

运行时数据区概述及线程前言本节主要讲的是运行时数据区,也就是下图这部分,它是在类加载完成后的阶段当我们通过前面的:类的加载-> 验证 -> 准备 -> 解析 -> 初始化 这几个阶段完成后,就会用到执行引擎对我们的类进行使用,同时执行引擎将会使用到我们运行时数据区也就是大厨做饭,我们把大厨后面的东西(切好的菜,刀,调料),比作是运行时数据区。而厨师可以类比于执行引擎,将通过准备的东西进行制作成精美的菜品内存是非常重要的系统资源,是硬盘和CPU的中间仓库及桥梁,承载着操

2020-09-12 10:32:07 76

原创 【JVM】什么是JVM的类加载子系统?

类加载子系统概述完整图如下如果自己想手写一个Java虚拟机的话,主要考虑哪些结构呢?类加载器执行引擎类加载器子系统作用类加载器子系统负责从文件系统或者网络中加载Class文件,class文件在文件开头有特定的文件标识。ClassLoader只负责class文件的加载,至于它是否可以运行,则由Execution Engine决定。加载的类信息存放于一块称为方法区的内存空间。除了类的信息外,方法区中还会存放运行时常量池信息,可能还包括字符串字面量和数字常量(这部分常量信息是Class文

2020-09-12 10:27:02 127

原创 【JVM】JVM与Java体系结构

JVM与Java体系结构前言作为Java工程师的你曾被伤害过吗?你是否也遇到过这些问题?运行着的线上系统突然卡死,系统无法访问,甚至直接OOMM!想解决线上JVM GC问题,但却无从下手。新项目上线,对各种JVM参数设置一脸茫然,直接默认吧然后就JJ了每次面试之前都要重新背一遍JVM的一些原理概念性的东西,然而面试官却经常问你在实际项目中如何调优VM参数,如何解决GC、OOM等问题,一脸懵逼。大部分Java开发人员,除会在项目中使用到与Java平台相关的各种高精尖技术,对于Java技术的

2020-09-12 10:20:19 302

原创 字节跳动 2021届提前批 后端开发 123HR面经(已意向书)

前言双非渣硕,本以为简历都过不了…,还好字节能给一次机会。前阵子字节跳动的提前批开始了,看宣传是说有海量HC,机会多多,本着涨涨面经的心理,然后就投递了一下杭州那边的Data部门,首先在这里还要非常感谢内推我的小哥哥,非常热心的帮我跟踪进度,因为中间还出了一些小插曲(我投错部门了。。。),还是热心的小哥哥帮我联系HR,最后把我转到想要投递的部门了~面试项目大部分问题是围绕我的开源项目 蘑菇博客 展开的,还有就是我之前为了面试突击,记录的一些 学习笔记(大佬请轻喷…),感兴趣的小伙伴欢迎star支持一下~

2020-07-09 09:32:09 679

原创 Vue ElementUI中Upload组件如何实现文件批量上传

ElementUI中Upload组件如何批量上传前言最近一直使用Element提供的文件上传组件,但是使用后发现,其实当我们批量选中的时候,文件不是一次性都上传进去的,而是把它又拆分成一个个的文件进行上传。首先这容易造成的问题就是我们如果同时提交多个图片文件的时候,会重复的请求接口,造成接口并发访问的时可能出现的问题,下面是Element 的Github写的一个Issue地址:Element...

2020-04-16 12:02:35 7038 3

原创 Vue项目如何关闭Eslint校验

Vue项目如何关闭Eslint校验前言最近有老哥提出蘑菇博客每次在运行的时候,都会出现一堆的错误,其实这是因为开启了ESlint校验而引起的,但是因为校验过于严格,我们没办法按照自己的喜好随心所欲书写代码,所有下面采纳了老哥的意见,将Eslint校验关闭。关闭Eslint首先我们进入vue_mogu_web项目,然后我们找到build目录下的webpack.base.conf.js文件c...

2020-03-18 22:08:51 1508

原创 使用SpringBoot+Vue+Echarts制作一个文章贡献度表

使用SpringBoot+Vue+Echarts制作一个文章贡献度表前言最近想给博客做一个类似于码云代码提交记录的图表,就类似于下面这样的然后将每天的博客提交的博客生成对应的记录,下面先看最终的结果图有点不一样的地方是,这里使用圆圈的大小,来表示提交的次数制作博客贡献表这个博客贡献表是使用了ECharts中的 calendar-effectscatter 组件:点我传送首先附上...

2020-03-18 22:07:50 982

原创 Vue对Element中的el-tag添加@click事件无效

前言今天在做评论模块的时候,想着对el-tag元素添加点击事件,发现无法触发,代码如下所示<el-tag type="error" @click="onClick(scope.row.blog)">scope.row.blog.title}}</el-tag>我们在点击el-tag标签的时候,无法触发其点击事件解决方法通过查阅资料发现官方给定了解答也就是所,...

2020-03-18 22:06:17 8941 3

原创 Vuex学习指南-实现一个计数器

VueX学习使用vue-cli创建vue项目# 全局安装脚手架npm install -g @vue/cli-init# 初始化项目vue init webpack-simple my-project# 安装vuex依赖npm install vuex修改main.js我们需要引入vueximport Vuex from 'vuex'// 让Vuex生效Vue.use(...

2020-03-18 22:04:09 643

原创 使用Axios拦截器携带token以及跳转错误页面

使用Axios拦截器携带token以及跳转错误页面前言Axios 是一个基于 promise 的 HTTP 库,可以用在浏览器和 node.js 中,在使用Axios时候,一般我们会进行一定的封装,Axios拦截器分为请求拦截器 和 相应拦截器,请求拦截器主要的作用是在请求后端接口前,携带Token信息,而响应拦截器的主要作用是对后端的状态码进行校验,跳转到对应的页面创建Axios对象这里...

2020-03-18 22:01:07 735

原创 【JUC】什么是Java中的自旋锁

Java锁之自旋锁自旋锁:spinlock,是指尝试获取锁的线程不会立即阻塞,而是采用循环的方式去尝试获取锁,这样的好处是减少线程上下文切换的消耗,缺点是循环会消耗CPU原来提到的比较并交换,底层使用的就是自旋,自旋就是多次尝试,多次访问,不会阻塞的状态就是自旋。优缺点优点:循环比较获取直到成功为止,没有类似于wait的阻塞缺点:当不断自旋的线程越来越多的时候,会因为执行while循环...

2020-03-18 21:57:48 162

原创 【JUC】 什么是可重入锁和递归锁

可重入锁和递归锁ReentrantLock概念可重入锁就是递归锁指的是同一线程外层函数获得锁之后,内层递归函数仍然能获取到该锁的代码,在同一线程在外层方法获取锁的时候,在进入内层方法会自动获取锁也就是说:线程可以进入任何一个它已经拥有的锁所同步的代码块ReentrantLock / Synchronized 就是一个典型的可重入锁代码可重入锁就是,在一个method1方法中加入一把锁...

2020-03-18 21:55:53 196

原创 【JUC】什么是Java中的读写锁

独占锁(写锁) / 共享锁(读锁) / 互斥锁概念独占锁:指该锁一次只能被一个线程所持有。对ReentrantLock和Synchronized而言都是独占锁共享锁:指该锁可以被多个线程锁持有对ReentrantReadWriteLock其读锁是共享,其写锁是独占写的时候只能一个人写,但是读的时候,可以多个人同时读为什么会有写锁和读锁原来我们使用ReentrantLock创建锁的时候...

2020-03-18 21:53:25 192

原创 【JUC】什么是公平锁和非公平锁

Java锁之公平锁和非公平锁概念公平锁是指多个线程按照申请锁的顺序来获取锁,类似于排队买饭,先来后到,先来先服务,就是公平的,也就是队列非公平锁是指多个线程获取锁的顺序,并不是按照申请锁的顺序,有可能申请的线程比先申请的线程优先获取锁,在高并发环境下,有可能造成优先级翻转,或者饥饿的线程(也就是某个线程一直得不到锁)如何创建并发包中ReentrantLock的创建可以指定析构函数的b...

2020-03-18 21:52:55 130

原创 使用Zipkin给项目搭建链路追踪功能

使用Zipkin搭建蘑菇博客链路追踪前言Zipkin是一个开源的分布式的链路追踪系统,每个微服务都会向zipkin报告计时数据,聚合各业务系统调用延迟数据,达到链路调用监控跟踪。如图,在复杂的调用链路中假设存在一条调用链路响应缓慢,如何定位其中延迟高的服务呢?日志: 通过分析调用链路上的每个服务日志得到结果zipkin:使用zipkin的web UI可以一眼看出延迟高的服务如图...

2020-03-18 21:49:11 852

原创 Ubuntu18.04美化成Mac桌面

前言这阵子没什么事情,就在折腾之前安装的ubuntu系统,个人觉得Ubuntu的初始页面并不好看,想着能不能美化一下,后面发现,可以把主题都换成mac风格的,下面记录下实现过程,首先来张最终完成的效果图。下载工具1、安装优化工具sudo apt-get updatesudo apt-get install gnome-tweak-tool安装完成后,在工具栏能够看到这个...

2019-08-23 12:30:57 3133

原创 哪些是Ubuntu上不可不装的软件?

前言相比Windows来说,Ubuntu的软件生态还不是特别强,所以很多娱乐软件都还没有完全适配Ubuntu,下面介绍一下,在Ubuntu系统下不可或缺的软件1、QQQQ可能是程序员必不可少的一款聊天工具,但是很遗憾QQ没有适配Ubuntu,但是还是有办法可以做到的,就是通过wine,类似于在ubuntu上跑exe文件具体安装过程可以见:https://www.lulinux.co...

2019-08-23 11:27:16 452

原创 RabbitMQ启动时候出现,发生系统错误2的解决方案

前言今天在启动RabbitMq的时候,发现出现下面的问题,发生系统错误,找不到指定文件,因为当时是非常确定RabbitMQ安装时不存在问题的,因为之前安装成功后,就去访问测试了,没问题才通过的。解决方法具体造成这个问题的原因也没找到,但是通过查询资料,发现通过下列的方法,是能够很好的解决上述问题的1、进入rabbitmq的sbin目录# 启动rabbitmq_manage...

2019-08-23 11:25:48 7241 8

原创 Ubuntu18.04版本下,STS的安装和配置

前言这几天在Ubuntu环境下,饱受IDEA的折磨,苦不堪言,刚好看到sts官网也有linux版本的sts,所以就打算下载下来试试。下载sts官网:https://spring.io/tools下载完成后,是一个压缩包,我们使用命令进行解压缩# 解压tar -zxvf spring-tool-suite-4-4.3.0.RELEASE-e4.12.0-linux.gtk.x...

2019-08-23 11:23:36 697

原创 关于Mysql5.7版本,密码不能设置过于简单的解决方法

前言昨天使用ubuntu在安装mysql的时候,想给mysql设置密码,用的是 root ,发现不能设置,无奈只能设置更复杂的密码,这两天发现其实可以修改mysql的策略达到可以使用简单密码的目的,下面方法记录一下,方便以后查询的时候使用到。正文# 进入数据库mysql -u root -p# 验证密码混合情况计数set global validate_password_m...

2019-08-23 11:20:36 854

原创 Mybatis-plus版本提升到3.1.2版本,excludeColumns方法被移除的解决方案

前言前阵子因为有朋友私信和我说,蘑菇博客在IDEA上无法正常启动,后面经过排查,是因为Mybatis-plus没有升级而引起的BUG,需要升级Mybatis-plus版本即可解决这个问题,后面我就将版本提升到了最新的版本3.1.2版本,然后发现该版本很多方法都被移除了。解决方案通过查看官方文档,发现该方法已经在3.0.5版本就已经移除了,感觉这个方法挺好的,怎么能突然就没了呢。。。...

2019-08-23 11:17:25 2145

原创 如何使用TortoiseGit,将项目同时提交到Github和Gitee中

前言之前写过一篇博客,是关于将码云上的项目迁移到Github中 :如何将码云中的项目迁移到github? ,但是后面发现按照上面这个方法还是有不足之处,就是还是使用命令行的方式,因为我在平时开发都是使用TortoiseGit进行项目的管理的,也非常的方便,下面我就介绍一下如何使用TortoiseGit将项目同时提交到Gitee和Github上。解决方案1)首先在github上得...

2019-08-23 11:15:13 1164

原创 如何将码云中的项目迁移到github?

前言今天突发奇想,想把之前在码云上的搬砖记录,同步到github中。因为之前嫌弃github经常间接性抽风,所以就一直用gitee来托管自己写过的一些Demo,今天通过查阅资料,发现可以直接将代码同步到github中,好了,话不多说,下面开始干活。具体步骤首先先到github页面,创建一个仓库创建成功后,到我们本地项目目录下,然后打开 git bash 加上刚刚g...

2019-08-23 11:08:46 1378

原创 使用n模块提升nodejs的版本

前言今天想在阿里云服务器上安装nodejs,因为系统是centos,所以就直接使用yum方式安装的yum install nodejs安装完成后,发现安装的版本太低了后面发现,可以通过使用n模块来进行更新。node有一个模块叫n,是专门用来管理node.js的版本的,具体使用方法如下# 安装n模块sudo npm install -g n# 开始升级sudo n...

2019-08-23 10:57:30 1012

原创 CKEditor配置数学公式编辑器

前言最近因为在看一些数学方面的书籍,想着写一些日记用于分享,无奈发现好像博客里面好不能插入公式,只能截图的方式来在展示公式,后面发现CKEditor是可以集成公式编辑器的,下面说说我在做的时候遇到的问题。公式编辑器的分类1、KaTeX2、JMEditor:一个国人开发的公式编辑器3、Tex:(尝试了很久,编辑器能够正常显示,但是在页面需要显示的时候,经常会显示不出来)4、e...

2019-08-23 10:50:47 5344 2

原创 如何使用百度云加速提升网站访问速度

今天偶然的情况,看到了百度云加速能进行网站访问速度提升,因为现在我是用学生价买的阿里云服务器,1核2G 1M带宽的,所以第一次加载资源的时候,是非常慢的,所以就打算尝试一下。1)下面进入正题,打开百度云加速的官网https://su.baidu.com/2)选择免费开启,在这里可能会提示用户无效操作,或者什么的,这是因为没有实名认证,那么我们就需要登录后,进行实名认证才能使...

2019-03-07 10:56:20 765

空空如也

空空如也

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

TA关注的人

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