自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Dubbo3

Apache Dubbo 是一款分布式微服务开发框架,它提供了 **RPC通信** 与 **微服务治理** 两大关键能力。曾经基于各个微服务之间的接口,我们需要通过HTTP+restful或者WebService等调用方式来进行服务之间的通信进行数据交互,而Dubbo采用的是分布式SOA(服务规范体系)服务治理方案,通过RPC(远程网络通讯协议)远程服务调用。......

2022-06-05 23:47:48 1666 4

原创 SpringBoot杂货铺开源项目启动简介

最近越来越多的小伙伴开始找博主要免费的源码啦,看来博主的源码对大家还是很有帮助的😁。源码已经部署到公网上了,大家可以访问 https://www.hailin.pro 查看项目所对应的实际内容,我们主要关注功能点的实现,至于前端,此项目暂时没有做手机端的适配,请使用电脑查看。注册密码在后台已经加密,请放心注册哦!这个项目是还没有做完的,后续其他功能博主会持续更新,敬请期待~

2022-05-05 08:00:00 924 8

原创 算法基础之时间复杂度和空间复杂度

复杂度分析是为了获取到如何更快地处理和解决现实场景中我们所遇到的问题,因为我们需要对效率和资源消耗有一定的要求。

2022-05-04 09:00:00 547 6

原创 MYSQL之高性能索引

像JPA、MyBatis-Plus这些简单的ORM关系映射框架的都有现成的方法调用,在我们的实际工作业务场景这些框架的基础功能根本满足不了,需要自己写一些复杂的SQL或者维护原系统中前人写下的复杂SQL。

2022-04-21 00:07:58 1139 6

原创 MYSQL聚簇索引

首先我们要知道的,聚簇索引它并不是一种单纯的索引类型,而是一种数据存储方式。聚簇表示的意思是数据行和相邻的键值紧凑地存储在一起。不同的存储引擎所支持的索引是不同的,所以不是所有的存储引擎都支持聚簇索引。如果你已经对MYSQL使用的索引数据结构为B+树并且知道了B+数的存储形式的话,就会知道B+树的叶子节点存储了我们想要的数据,而非叶子节点是不存储数据的,仅用作索引。而针对这个问题可能你在面试的时候会经常被问到:MYSQL的索引为什么使用B+树而不使用B树。对于MYSQL而言,我们常用的数据存储引擎是IN

2022-01-16 19:23:30 1273 4

原创 HashMap和HashTable高频提问

HashMap通过 一行代码一行代码嚼烂之超详细注解手写HashMap 这篇博客我们详细地了解了HashMap的底层实现原理并且手动实现了一个HashMap。在JDK1.7中,HashMap单纯使用数组+链表的形式存储数据,通过容量和负载因子的限制在容量达到初始值的0.75倍时,执行扩容。通过计算hash值决定新进来的元素在HashMap中的数组中的哪一条链表上。当hash碰撞频繁,将导致一条链表足够的长,查找时间复杂度为O(n)。在JDK1.8中,对HashMap进行了优化,当hash碰撞严重时,写

2022-01-06 00:00:28 817 22

原创 synchronized 关键字和volatile关键字的作用和区别

synchronizedsynchronized 关键字是解决并发问题常用解决方案,有以下三种使用方式:①同步普通方法,锁的是当前对象。②同步静态方法,锁的是当前 Class 对象。③同步块,锁的是 () 中的对象。实现原理:JVM 是通过进入、退出对象监视器( Monitor )来实现对方法、同步块的同步的。具体实现是在编译之后在同步方法调用前加入一个 monitor.enter 指令,在退出方法和异常处插入 monitor.exit 的指令。其本质就是对一个对象监视器( Monitor

2021-12-26 18:51:53 541

原创 消息队列之RabbitMQ

什么是MQ?MQ是message queue的缩写,本质上是个队列,FIFO先入先出原则,队列中存放的是message,是一种跨进程的通信机制,用于上下游传递信息。在互联网程序架构中,MQ是一种非常常见的上下游“逻辑解耦+物理解耦”的消息通信服务。使用了MQ以后,消息发送只需要依赖MQ,不用依赖于其他服务。为什么要用MQ?一、流量消锋如果我们的订单系统最多能够处理掉一万次订单,这个处理能力应付正常时段的下单是搓搓有余了,但是如果在高峰期,比如淘宝的双11活动,有超过一万次的下单操作,系统则是处理不了

2021-12-19 20:32:34 3013 36

原创 风靡IT圈的史诗级漏洞log4j2的产生原理及复现

文章目录前言环境准备攻击代码准备一、攻击服务准备二、攻击代码准备三、修改本地项目业务代码攻击效果展示项目日志打印结语前言注:本文仅供参考学习,不构成任何犯罪引导相信就在最近两天,不少IT圈的都在因为Log4j2,忙前忙后排查项目吧?写JAVA的都知道,Log4j是用来记录日志的,它的覆盖率之广以至于此次受影响的范围可以说是核弹级别的影响了。这个漏洞其实是取决于Log4j的一种Lookup机制,就是当我们做日志输出,出现占位符的时候,通过一些特殊的命令符号,可以执行一些程序代码。接下来我们就来复

2021-12-12 15:56:07 8710 59

原创 SpringBoot项目实战杂货铺——Thymeleaf模板引擎在项目中的实际应用(八)

文章目录一、Thymeleaf简介二、引用三、后台数据准备四、前端引用四、效果图五、结语一、Thymeleaf简介在SpringBoot项目中是推荐使用Thymeleaf模板引擎的,它为我们的前后端的分离奠定了基础,使用起来不仅方便而且简单。在SpringBoot的火爆程度下,掌握使用Thymeleaf也是我们学习中不可或缺的一个环节。本次更新中更新了个人中心,可支持个人信息修改以及用户头像的修改,接下来我们就来看看Thymeleaf在实战项目杂货铺的个人中心里具体是怎么使用的。二、引用在pom

2021-11-29 20:40:40 1591 32

原创 Redis五种数据结构及常用操作指令、Redis在JAVA中如何封装使用

Redis有五种基础数据结构,分别为:1、string(字符串)2、list(列表)3、hash(字典)4、set(集合)5、zset(有序集合)数据结构有八种分类,分别为:1、数组2、栈3、队列4、链表5、树6、散列表7、堆8、图Java有八种基本数据类型(没什么关系但是顺带一提????),分别为:1、byte(位)2、short(短整数)3、int(整数)4、long(长整数)5、float(单精度)6、double(双精度)7、char(字符)8、bool

2021-11-21 21:15:49 8165 44

原创 SpringBoot项目实战杂货铺——登录注册界面怎么写好看?SpringSecurity怎么玩?(七)

那么本次实战项目杂货铺的更新,博主不仅更新了前端界面,还将SpringSecurity加入了项目中,针对请求和静态资源的过滤、拦截、登录界面中的记住我、以及密码加密验证等等。下面将我们就来看看前端界面的制作以及SpringSecurity究竟怎么玩。源码已分享至GitHub,需要源码的同学可以私聊博主免费获取。咱们先来看看前端界面有没有GET到你的喜欢????????????关于前端这个不用多说了,一点一滴慢慢调,就可以达到上面的效果啦。建议大家多多练习,写熟练了以后就能游刃有余,随心所欲,直

2021-11-18 18:38:07 2375 43

原创 SpringBoot项目实战杂货铺之登录访问量可视化条形图(六)

前言在我们的杂货铺实战项目中,用到了如图所示的统计图,那么鉴于有同学问到了这个是怎么制作的,那这里就针对我们的平台访问量的条形图以及后台的逻辑实现,做一个简单的介绍。平台访问量逻辑那么针对平台访问量的后台处理逻辑就是,当有人访问我们的杂货铺的时候,就针对数据库中的访问量做一个+1的操作。那么如果是当天第一个访问平台的,我们就做一个判断,数据库中是否存在今天的访问数据,如果存在,做+1操作,如果不存在,我们就创建一条当天访问量为1的数据。以下是次统计图的主要代码: /** * 访

2021-11-14 20:10:30 2583 30

原创 SpringBoot实战项目杂货铺登陆注册邮箱验证整合Redis(五)

在我们写程序时,特别是自己搭建一个程序时,除了要考虑到基本的功能实现,还要考虑到程序的高效性,高可用性能,以及一系列的保证程序运行健康的考虑,为未来我们工作打下坚实的基础。今天博主在程序中的更新也就反映出了在某些高并发的情况下,如何将一些简单的业务场景更加地高效性,减少占用系统整体性能,为主业务保驾护航的一种表现下。当然这个操作也很简单,但这个思想很重要。在开始本文前,建议同学们结合SpringBoot项目实战杂货铺登录注册功能附邮箱验证以及头像绑定(三)中我们对登录注册功能的实现,以及对于此前验证码功

2021-11-10 14:26:04 6583 21

原创 微服务开发框架——SpringCloud组件简介

SpringCloud是在SpringBoot的基础上构建的,用于快速构建分布式系统的通用模式的工具集。SpringCloud优点1、约定优于配置。去繁从简,延续SpringBoot的优点。解决分布式系统的冗余问题。2、开箱即用,快速启动。3、组件丰富,功能齐全。SpringCloud为微服务架构提供了非常完整的支持。例如配置管理、服务发现、断路器、微服务网关等等。4、灵活。它的组成部分是解耦的,我们可以灵活的选取我们想要使用的技术。…(更多优点等待你的挖掘)SpringCloud缺点我们要

2021-11-06 22:53:14 3683 4

原创 SpringBoot实战项目杂货铺主页统计图表(折线图、饼状图、条形图)(四)

今天博主更新了杂货铺实战项目中的主页图表统计功能,由折线图、饼状图、条形图组成,一起来看看吧。统计图表的制作我们用到了Echarts。我们通过http://localhost:8080/store/homepage进入到主页后的页面即展示统计图表。图中的账户名、账号、以及头像是博主登录以后显示出来的,页面效果如图所示:接下来我们来看看每个统计图的鼠标移动效果图,其实这些效果都是Echarts渲染好了的,我们直接使用即可。最近七天访问量条形图:这里我们选择的是条形图,当我们的鼠标移动到十月二十三号

2021-10-24 21:08:53 2754 6

原创 SpringBoot项目实战杂货铺登录注册功能附邮箱验证以及头像绑定(三)

在常规情况下的网商项目中,会用到Spring Cloud微服务,这里将在下一期中对Spring Cloud微服务的五大组件进行一个介绍。在上一期中,SpringBoot项目实战杂货铺登录功能(二)杂货铺更新了登录功能,今天带来注册功能页面,在注册界面中加入了邮箱绑定,以及头像的设置。我们由登录界面点击去注册,切换到注册模块的div:账号根据数据库中的账号一次递增,默认加载出来,显示在账号输入框,且为不可编辑状态。邮箱验证输入邮箱,点击发送验证码后,所填写的邮箱就会收到一个随机六位数的验证码,同

2021-10-17 22:49:27 1457 9

原创 SpringBoot项目实战杂货铺登录功能(二)

还在为毕业设计犯愁?这里有现成的系统开源免费提供给你。今天带来的是整个系统中的登录功能。(至于前端,emm…等后端写完了再把前端改好看点吧????)系统相应的架构以及技术栈组成在SpringBoot项目实战——杂货铺(源码已开源上传GitHub,会持续更新)一文中提及。数据库用户表这里知识为了实现登录功能而设计的具有基本信息的表格,后面在这张表中肯定会关联存在一个头像文件的字段等等一切有实际应用场景的字段随着后续需求慢慢加嘛,毕竟这些基础功能设计完还要考虑一些类似于防攻击之类的保证数据库健康之类的

2021-10-10 19:38:29 2659 14

原创 SpringBoot项目实战杂货铺(源码已开源上传GitHub,会持续更新)(一)

今天博主为大家带来一个SpringBoot实战项目——Yours杂货铺,与各位有需要的同学共同交流学习。源码已上传至GitHub,完全开源免费,拉取即用,有需要的同学可以自行下载,这是一个从零开始搭建的网页平台,所以会持续更新优化,由于前端到后台都是博主一个人写的,有较大的局限性,所以欢迎各位同学提出建议优化,你的建议尤为重要!整体框架设计· JDK1.8· SpringBoot· jQuery· MyBatis· 前端采用Layui进行页面设计· 权限控制后续选择Shiro…整体技术栈

2021-10-03 00:46:31 1514 25

原创 JAVA进阶篇——一行代码一行代码嚼烂之超详细注解手写HashMap(二)

HashMap用得顺手吧?不知道让你手写一个HashMap你能不能写出来呢,今天为大家带来的是手写HashMap,一行代码一行代码地嚼一下,看完这个再去看HashMap的源码,帮助你深度理解HashMap的原理。????这里还是很推荐大家去看一下HashMap的源码的,因为所涉及的知识面很广泛,可谓是受益匪浅。话不多说,咱们开始看????。再次之前,推荐大家先去看完这一篇博客JAVA进阶篇——HashMap底层实现解析(一),这篇博客是基于手动写HashMap代码的底层理论,会更加帮助你加深理解。在JD

2021-09-27 22:29:11 526 10

原创 数据结构极其拓展篇(三)——树及JAVA创建二叉树

终于抽出空了,又是一年一度的中秋节。????明月伴你我,祝大家事事皆圆满。????那么今天为大家带来一篇JAVA数据结构的树,树在JAVA中的存在极其重要,也是面试中的高频点。一些树的基本名词,以及更为基础的理论,可在这一篇博客中查看数据结构及其拓展篇(二)。那么今天我给大家带来的是:????二叉树????????二叉查找树????????红黑树????二叉树一、首先我们得知道什么是二叉树:①即每个节点至多有两颗树,即每个节点的度不大于二②二叉树的子树有左右之分,其顺序是不能颠倒的二叉树作

2021-09-21 20:55:08 603 17

原创 JAVA进阶篇——线程+实例演示(附商品销售实例源码)

何为线程?简单来说,打开你电脑的任务管理器,在进程选项卡中,可以看到你电脑上一个一个正在运行的程序,我们可以把这里的每一个程序理解为一个进程,而进程是受系统管理的基本单元。那么啥是线程呢?我们可以理解为一个进程里面包含了很多个线程。而一个线程可以当作这个进程的一个子任务。就比如说你的微信,在你刷朋友圈的同时,也可以接收消息,这就是两个线程在运行。我们为什么要用线程呢?我们来看看下面这张图。那么我们用了线程以后呢?由图可知,任务二并不需要按照我们平常所写地Java代码从上到下执行,需要等待10S,

2021-09-17 23:30:19 578 17

原创 JAVA进阶篇——HashMap底层实现解析(一)

倘若有一天你去面试的时候,面试官问起了你HashMap的底层实现原理,你怎么办?是一脸懵逼支支吾吾吗?再让你自己通过代码实现你自己的HashMap的时候,难道完全破防?读完这篇文章,让我们对这个情况say no!首先我们来通过下面的图看看JDK1.7时代的HashMap是如何通过数组+链表的形式进行值储存的。由图中的描述可以清楚地看出来,当数组第一次被定义并且第一次被赋值的时候,这个时候的操作很简单,就是将这个值赋值到我们的table数组上面去。这个操作完成以后,然后我们进行二次put:如图左下

2021-09-12 20:38:05 1318 29

原创 JAVA面试篇之SpringBoot

什么是SpringBoot?为什么要用SpringBoot?它是用来简化spring应用的初始搭建以及开发过程,并且使用特定的方式来进行配置(properties或yml文件),创建独立的spring应用程序,由@SpringBootApplication注解下的main方法运行,嵌入Tomcat无需部署war文件,简化Maven的配置,自动配置spring添加对应功能的starter自动化配置。SpringBoot用来简化spring应用开发,约定大于配置,去繁从简,just run就可以创建一个独立的

2021-09-11 20:22:07 436

原创 ❤【爆肝万字】手把手教你SpringBoot+MyBatis+jQuery+HTML5从0开始写网页一学就会!(内附源码)❤

今天带给大家的是SpringBoot+MyBatis+jQuery+HTML5+CSS简单实现前后端交互,保证干货满满,看完你就可以动手写你自己的程序!首先得需要你创建一个SpringBoot项目,具体怎么创建这里久不多说啦。其次,你的创建一张这样一张表用于连接测试功能,很简单的一张表,当然只是用于功能测试,实际业务中可没有这么简单的表哟。创建完成以后你pom.xm文件中的中应该有如下引入依赖: <!--springWeb--> <dependenc

2021-09-07 23:50:17 1371 6

原创 数据结构及其拓展篇(二)

常用的数据结构分别有数组、堆栈、队列、链表、树、图、字典树、哈希表。上一期的数据结构及其拓展篇数据结构及其拓展篇(一)中,我们讲过了数组(Array)、栈(Stack)、队列,那么今天我们就来讲讲链表和树。一、链表链表也是线性结构的,看起来和数组相似,但是他们的内存的分配方式、内部的结构以及插入和删除的方式都不一样。相信大家都知道,数组的查找比较方便,可以直接通过下标查找,但是删除或者插入某些元素就比较麻烦了。链表却与之相反,删除和插入很快,但是查找元素却很慢。那么为了综合这两种的好处,就产生了树,

2021-09-04 20:20:12 349 5

原创 数据结构及其拓展篇(一)

所有技术的应用都离不开它的底层实现,今天博主给大家带来一期数据结构的分享,因内容量较大,本篇分享涉及数组极其拓展ArrayList、栈极其拓展撤回、队列及其拓展消息队列。余下的数据结构及拓展分享写在下一期里,话不多说,说干就干!常用的数据结构分别有数组、堆栈、队列、链表、树、图、字典树、哈希表,那么接下来我们来详细地一个一个地看看他们的应用以及拓展。一、数组Array——集合ArrayList数组(Array) 不得不说是大家在学习之初就已经接触过再平凡不过的了吧,像栈和队列都是由数组衍生出来的。下

2021-08-29 21:53:53 629

原创 答应我,下次再被问到垃圾回收器,别再支支吾吾了!

首先,JVM全称:Java Virtual Machine,也就是我们常说的Java虚拟机,通过在实际的计算机上仿真模拟各种计算机功能来实现的,简单来说,JVM就是用来解析和运行Java程序的。简单地介绍完JVM以后,接下来我们来看看JVM的内存结构模型:以上就是JVM的内存结构模型了,那么图中的区块又是什么意思呢?方法区: 用于存储虚拟机加载的类信息,常量,静态变量等数据。堆: 存放对象的实例,所有的对象和数组都要在堆上分配,是JVM锁管理的内存中最大的一块区域!栈: Java方法锁执行的内存

2021-08-22 20:22:38 614 10

原创 手把手教你从0开始搭建花一个小时学会使用mybatis

今天博主分享一篇从0开始的maven项目,让你一个小时学会使用mybatis!首先创建一个Maven项目。为你的Macen项目命名并选择好路径,点击Next选择你的Maven库。创建完成以后,你的项目是这样的。接下来需要我们在src目录下创建对应的包。创建完成后,项目中各个包的分布如图所示。在java包下创建这次我们要使用的user包,在resources包下创建mybatis-config.xml文件。接下来就要开始配置mybatis了,打开项目中的pom.xml文件,引入依赖

2021-08-17 18:36:07 229

原创 你必须要知道的【雪崩、穿透、预热、更新、降级】

以前总觉得,写得一手好Java代码,走遍天下都不怕,后来随着时间得推移,才意识到程序的高效性流畅性才是最重要最重要的。 所有的技术都是前人不断实践突破革新留下的产物,它们的存在以及运用一定有它的道理。 于是博主最近将重心向程序的高效性和流畅性的基础学习上偏移了一下,而今天为大家分享的就是Redis在面对小数据量下的大量数据请求的时候,所可能遇到的一些问题。首先我们要知道什么是Redis,Redis能干嘛?Redis全程:Remote Dictionary Server,它的字面意思是远程+字典+服务,本

2021-08-14 13:24:05 1314 4

原创 Java发送邮件一行代码解决

今天博主带来一期超详细的邮件发送实操内容,希望能get到您的点赞!话不多说,直接进入正题。在实践开始前,这里需要提到Hutool,Hutool是一个小而全的Java工具类库,通过静态方法封装,降低相关API的学习成本,提高工作效率的工具类。那么现在正式进入实战!首先创建一个Maven项目,创建成功以后,在pom.xml文件中引入相应的依赖。引入依赖成功以后,你将会在Libraries中看到如下的jar包就证明引入成功了。接下来我们就可以开始着手写代码啦!在正式开始前,我们还需要在src/main/r

2021-08-12 13:53:57 1072 9

原创 MYSQL进阶之事务

首先我们要知道事务是什么,它是数据库操作的最小工作单元,是作为单个逻辑工作单元执行的一系列操作;由一步或几步数据库操作序列组成逻辑执行单元一起向系统提交,要么全部都执行、要么都不执行;事务是一组不可再分割的操作集合。其次我们要知道事务的四大特性:①原子性:事务是数据库的逻辑工作单位,事务中包含的各操作要么都做,要么都不做。②一致性:事务执行的结果必须是使数据库从一个一致性状态变到另一个一致性状态。③隔离性:一个事务的执行不能被其它事务干扰。即一个事务内部的操作及使用的数据对其它并发事务是隔离的,并发

2021-08-11 14:48:10 1425 14

原创 MYSQL的一级缓存二级缓存

MYSQL面试篇一之mysql的一级缓存和二级缓存一级缓存:一级缓存也称本地缓存,session级别的缓存,一级缓存是默认开启的,与数据库同一次的会话期间查询到的数据会放在本地缓存中,如果有需要获取相同的数据,则直接从缓存中取,就不会再次查询数据库。在日常的开发中,经常会有相同的sql执行多次的情况,mybatis就提供了一级缓存来优化这些查询,避免多次请求数据库,重点是它的作用域为一次sqlSession会话。二级缓存:二级缓存是全局缓存,是一个基于namespace级别的缓存,作用域更为广泛,不

2021-08-11 00:34:57 5050

空空如也

空空如也

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

TA关注的人

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