自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Nacos 2.x版本 配置中心和服务注册与发现 源码解析

然后NacosPropertySourceLocator是继承了PropertySourceLocator类,重写了locate方法,此方法是由bootstrap上下文的SpringApplication.prepareContext方法中的applyInitializers里的PropertySourceBootstrapConfiguration.initialize调用。如果nacos的本地配置为空,则需要向服务端发送请求,获取服务配置。上图中真正加载配置数据的方法是loadNacosData方法。

2023-06-30 16:39:19 1386

原创 CAS底层原理

1.主要是调用unsafe类中的方法。其中getAndAddInt中的参数为:this为当前对象,valueOffset为地址偏移量,1为要增加的数量。2.getAndAddInt 表示为获取并增加。其中var1为当前对象,var2为地址偏移量。var5是通过var1和var2找出主内存中真实的值。用该当前对象的值与var5进行比较,如果相同的话,就执行var5 + var4,如果为false就继续执行循环,类型自旋锁。...

2020-07-11 17:20:21 182

原创 SpringBoot项目--微信支付模块

1.生成微信二维码支付接口二:查询订单支付状态 接口三:添加支付记录和更新订单状态。

2020-07-09 23:18:51 376

原创 使用EasyExcel

1.表现层模块,因为上传的Excel,所以我们参数类型为MultipartFile2.业务层调用对应的EasyExcel的read方法进行调用。其中参数要传入输入流以及自定义的监听对象。3.自定义的监听对象来继承AnalysisEventListener这个类,重写invoke方法。其中包括判断导入的一级目录是否重复,以及二级目录是否重复,判断重复后,才能导入相关数据,存储到数据库中。...

2020-07-09 16:23:11 274

原创 SpringBoot分布式项目--生成微信登录二维码

1.首先访问微信提供的固定地址。固定地址中包含公司申请的appid和访问地址、以及访问项目名称。2.并且在对于访问地址,微信内部规定要其进行加密处理,采用URLEncode对地址进行加密。3.然后再重定向到具体的访问地址。...

2020-07-08 22:41:17 339

原创 SpringBoot分布式项目中--微信登录模块

通过微信扫描二维码后,通过接口读取扫描人的信息,添加数据接口中传入的参数有:code 又叫临时票据1.首先去访问一个微信登录的固定地址,后面添加自己公司申请的微信的appid和secret2.第二步采用httpclient的get方式去访问这个微信的固定地址,返回一个字符串token信息。3.第三步把这个字符串对象转换成Map对象,此处转成Map形式是为了后面方便获取对应的值。转换Map的方式是采用Gson将字符串转换成Map形式。这样通过Map格式就能方便获取到access_tok..

2020-07-07 15:53:51 288

原创 Springboot分布式项目中--注册模块短信发送流程(阿里云短信服务)

一:首先去阿里云注册阿里云的短信服务二:首先要申请两个部分,通过申请才能进行下一步操作,一个是签名管理和模板管理。因为后面的后台代码中会用到签名管理中的签名名称和模板管理中的模板CODE三:Controller层部分代码分析四:在业务层的实现类中,代码分析如下,基本上都是阿里云给的固定代码五:上面图片中还有两个参数没有给出来,这两个参数是要自己去阿里云申请的,是用户的信息管理。用来操作阿里云的API的秘钥。...

2020-07-07 12:22:16 220

原创 数据结构-快速排序代码思路

2020-07-03 20:31:49 100

原创 项目---微信支付的实现流程

微信支付实现流程1.如果说课程是免费的课程,则直接点击立即观看,如果不是免费的话则需要点立即购买。2.点击立即购买后,生成课程订单。3.在订单页面点击支付按钮,然后生成一个微信支付二维码4.使用微信扫描二维码进行支付。5.在扫描支付的过程中,每隔3秒去查询支付状态,看看是否已经支付成功,如果没有支付成功则继续等待,并且继续查询支付状态,如果支付成功后,然后去更新订单中的支付状态,让其变成已支付的状态,并且向支付记录表中添加支付成功的记录信息。...

2020-07-02 17:25:29 219

原创 登录注册中的各种逻辑总结

登录模块:SSO单点登录:单点登录一般常用的有三种情况第一种方式:session广播机制第二种方式:采用cookie + redis 来实现思路:采用redis来生成一个随机值的 key,value则存放用户信息数据,然后将redis生成的key放入到cookie中,在当前项目访问其他模块的时候,发送的请求里面带着cookie,在接受端的模块中获取请求中的cookie值,找到对应的key值,然后再去redis中查询,是否存在数据,如果存在则表明已经登录。第三种方式:采用token方式

2020-07-02 17:13:53 696

原创 数据结构--KMP算法

对于KMP算法首先要去创建部分匹配表此处以str2 = 'ABCDABD' 去匹配 str1 = ’BBC ABCDAB ABCDABCDABDE‘匹配方式:如果是暴力匹配的话,当空格和D 不匹配的时候,下面的字符串会 向后移一位,如果是采用kmp算法的话,会直接移动4位。这个地方是采用一个KMP算法的移动公式:移动位数 = 匹配的字符数 - 对应的部分匹配值如上面的的例子,只有的空格和D 不匹配,前面ABCDAB是匹配的,匹配的长度为6,通过查表,ABCDAB的...

2020-05-31 13:04:29 143

原创 数据结构-二叉排序树--平衡二叉树的两次旋转图解

一:判断是左旋转还是右旋转的条件1.左子树的高度 > 右子树的高数 ===========> 进行右旋转2.右子树的高度 > 左子树的高度 ============>进行左旋转做旋转和右旋转的核心代码如下,图解可以参考下面的两次旋转,原理都是一样。//左旋转 public void leftRotate() { //创建新的节点,值等于当前根节点的值 Node3 newNode = new Node3(value); //把新节点的左子树设置当...

2020-05-25 16:42:25 592

原创 数据结构-哈夫曼树的创建

总体流程如下:1.获取一个无需的数组2.将数组放入一个容器中3.然后将容器排序成一个有序的数组4.然后再从有序的数组中取出 第一个 和 第二个 元素分别为左节点和右结点 进行相加的操作得到父节点5.然后父节点将左节点和右结点进行关联6.再从数组中删除第一个元素和 第二个元素,同时将计算得到的父节点放入数组中7.将得到的数组进行再一次的排序,得到一个新的有序数组代码如下:package com.mute.tree;import java.util.ArrayLi...

2020-05-22 11:43:51 183

原创 数据结构--希尔排序(移动法)

上面是第二轮排序,第一轮看不出效果。实际上这种方式的排序,理论上是分了2组来排序[3,1,0,9,9]和[5,6,8,4,2],实际上还是通过对一组数据进行遍历。当j=0的时候 就要和第3个元素进行比较,也就是3 和 1 进行比较,显然3 比1 大,然后就进行换位置。当j=1 的情况也是一样进行比较。重点是j=2的时候,也就是3 和0 进行比较,符合条件,进行交换。此...

2020-05-07 11:09:28 238

原创 数据结构-约瑟夫问题

一:添加小孩节点第一种情况:只有一个孩子之前预先定义好了一个结点对象Boy boy,first和curBoy是两个辅助变量对于一个孩子的情况,代码如下first = boy; //让first辅助指针指向boy结点first.setNext(first);//让first指针指向自己curBoy = first;//让curBoy也指向第一个结点第二中情况,添加孩子...

2020-05-02 10:32:22 219

原创 数据结构--合并两个链表并且有序

public static SingleLinkedList mergeLinked(HeroNode head1, HeroNode head2) { HeroNode temp1 = head1.next; HeroNode temp2 = head2.next; HeroNode next1 = null; HeroNode next2 = null; H...

2020-05-01 18:07:57 209

原创 数据结构--链表

一:添加节点基本思路就是和C语言中的指针的一样,定义一个辅助变量指向头结点Node temp = head然后通过循环遍历找到最后一个元素,最后一个元素的关键条件就是:temp.next == null找到最后一个结点后,将新结点(newNode)赋值最后一个节点的next域,这里temp已经指向了最后一个结点,所以temp.next = newNode二:删除链表...

2020-05-01 11:04:16 170

原创 数据结构--循环队列

front 初始值为0 rear初始值为0front指向第一个元素rear指向最后一个元素的下一个结点此处预留了一个空,方便做判断(rear+1%maxSize=front如图,上面这种情况就可以判断为队满(7+1)%8=0 =front元素的个数:(7+8-0)%8=7所以图中元素有7个...

2020-04-30 23:51:48 129

原创 Git常用操作

项目级别/仓库级别git config user.name tom_progit config user.email xxx@qq.com系统用户级别:登录当前操作系统的用户范围git config --globaltom_progit config--global user.email xxx@qq.com状态查看操作git status添加操作gi...

2020-04-22 21:00:25 165

原创 yml语法格式

对象形式方式一:friends: name: zhangsan age: 20方式二:friends:{name:zhangsan,age:18}数组形式(List.Set)方式一:pets: - cat - dog - pig 方式二:pets: [cat,dog,pig]...

2020-04-09 10:55:26 264

原创 Java中值比较的底层代码学习

一:String对象的equals方法s1 == s2 比较的是引用地址是否一致,如果不同则为false,显然s1 == s2 是两个不同的对象,所以底层的引用地址不一致。s1.equals(s2)是通过String对象的equals方法(String对象重写了Object的equals方法),虽然s1 和 s2 引用地址不一致,但是s1和s2都是String类型,并且字符串“张三”...

2020-04-06 15:24:55 369

原创 HashMap底层学习笔记

1.hashmap是实现了map接口,继承了AbtractMap类2.在创建对象的时候会调用map的实现类HashMap3.存放数据是以键值对的形式存放。4.存放数据是通过put方法5.put方法底层是通过putVal方法来实现的,其中参数包括key value的值,以及通过key计算出来的hash值6.HashMap底层实际上是以数据的方式来存储的。当数据传入的...

2020-04-04 10:12:55 105

原创 mysql数据库优化学习--day01

一:数据设计规范1.所有数据库对象名称禁止使用MySQL保留关键字select id,username,from,age from tb_user 属性中有from--表示来源,但是数据库中不会识别,此处应该采用加双引号----'from'2.数据库对象的命名要见名知意,最好不要超过32个字符。3.临时表必须以tmp为前缀并且以日期为后缀。4.备份库,备份表必须以ba...

2020-03-26 23:12:22 127

原创 关于idea无法使用插件问题--最后的办法

如果你网上基本上所有的方法都试过后,还没有解决,那你就采用最笨的方法---直接去官网下载插件。我也是被折磨了好几个小时,一直无法连接插件,说什么致命错误,握手失败的错误提示。首页要注意几点:先去查看自己的idea版本信息1.help->about 就可以看到你当前的版本信息2.然后去官网收缩插件--JetBrains Plugins Repository3.重点:为...

2020-03-25 12:14:30 2520

原创 SpringMVC工作流程的原理图--自嗨

首先客户(委派杀人并拿到某件物品)发送给SpringMVC一个请求,作为大哥,他是不会做任何事情的,只是负责将任务交给小弟来做。老大哥会去想到底交给来做呢?小弟太多了,不可能一一记得小弟的名字,然后他就会交给他的狗头军师(HandlerMapper),问自己要做的这件事情哪个小弟做会比较合适呢?军师知道后,脑子里想到一个合适的人员后,给老大哥就一张纸条,你去找去找这个人(Handler)...

2020-03-23 20:18:58 104

原创 SpringBoot---day11--定时任务

一:Scheduled定时任务器Scheduled定时任务器:是Spring3.0以后自带的一个定时器1.在pom文件中添加坐标<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="h...

2020-03-22 14:34:49 97

原创 SpringBoot---day10--整合缓存技术

一:SpringBoot整合Ehcache1.修改pom文件<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 ht...

2020-03-22 12:19:06 104

原创 SpringBoot---dady09--Spring Data JPA配置一对多和多对多

一:关联映射操作1.一对多的关联映射需求:角色与用户的一对多的关联关系。角色:一方用户:多方1.1User和Roles类的配置@Entity @Table(name="t_users")public class Users { @Id @GeneratedValue(strategy=GenerationType.IDENTITY) @Column(name="...

2020-03-21 23:03:32 140

原创 SpringBoot---day08--整合Spring Data JPA

一:SpringBoot整合Ehcache1.修改pom文件<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 ht...

2020-03-21 13:09:08 83

原创 SpringBoot---day07--SpringLoader热部署和DevTools

一:SpringBoot的热部署方式分为两种:SpringLoader插件和DevTools工具1.修改pom文件<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://ma...

2020-03-21 11:42:52 95

原创 SpringBoot---day06--异常处理和单元测试

一:SpringBoot中异常处理方式1.SpringBoot对于异常处理提供了五种方式1.1自定义错误页面SpringBoot默认处理异常的机制:SpringBoot默认的已经提供了一套处理异常的机制,一旦程序中出现了异常SpringBoot会向/error的URL发送请求。在SpringBoot提供了叫BasicExceptionController来处理请求。然后跳转到默认显示异...

2020-03-20 23:24:34 111

原创 SpringBoot--day05--服务端表单校验

一:实现用户添加功能1.pom文件修改<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.a...

2020-03-20 21:56:53 100

原创 SpringBoot---day04整合mybatis和SpringMVC

需求分析:通过使用SpringBoot+SpringMVC+Mybatis整合实现对一个数据库中的users表的CRUD的操作一:创建项目1.修改pom文件 <!-- 修改jdc版本 --> <properties> <java.version>1.7</java.version> <thymeleaf.version&...

2020-03-20 20:12:59 104

原创 SpringBoot---day03---整合freemarker和Thymeleaf

一:SpringBoot整合freemarker通过刷新eclipse下的项目 就可以看到在Hbuilder中创建的静态页面了启动类 和 Controller pojo 和 整合JSP 的内容一样 直接粘贴。二:Springboot整合Thymeleaf1.创建Thymeleaf的入门项目2.Thymeleaf基本使用thymeleaf是通过特定语法...

2020-03-19 16:05:00 234

原创 SpringBoot---day02--整合Listener、访问静态资源、文件上传、JSP

一:整合Listener1.通过注解扫描完成Listener组件的注册2.通过方法完成Listener组件注册二:访问静态资源1.SpringBoot从classpath/static的目录(根目录名称必须是static)2.ServletContext根目录下(在src/main/webapp 目录名称必须要webapp)...

2020-03-18 21:29:49 100

原创 SpringBoot---day01---整合Servlet和Filter

一:项目初步搭建修改pom.xml 修改jdk的版本为1.7二:编写一个controller的HelloWord三:启动SpringBoot此处一定要注意启动类的包要包括controller的包,不然会报错,找不到页面,并且包也不能同级。如果将App.class发那个在controller包下也可以。三:整合Servlet1.通...

2020-03-17 22:14:03 73

原创 淘淘商城--订单模块设计

一:功能分析 在购物车页面点击“去结算”按钮跳转到订单确认页面。 展示购买的商品列表 配送地址列表 选择支付方式 展示订单确认页面之前,应该确认用户身份。 使用拦截器实现。 Cookie中取token 取不到token跳转到登录页面 取到token,根据token查询用户信息。 如果没有用户信息,跳转到登录页面...

2020-03-17 17:49:43 590

原创 淘淘商城---购物车模块

一:模仿JD,在用户不登录的情况下,可以实现添加商品到购物车内。---将商品存放到cookie中此处是商品详情页面-----点击加入购物车按钮的连接:端口:8090 参数:商品id 、 商品数量在购物车模块的controller层代码@pathVariable 注解可以获取URL 路径中的参数----(参数的名字要与 URL的参数一致)@RequestParam 注...

2020-03-16 20:11:31 332

原创 淘淘商城---单点登录SSO系统

什么是sso系统SSO英文全称Single Sign On,单点登录。SSO是在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统。它包括可以将这次主要的登录映射到其他应用中用于同一个用户的登录的机制。它是目前比较流行的企业业务整合的解决方案之一。在集群环境下不同的tomcat之间是无法进行session共享的如果配置tomcatSession复制的话。节点数不要超...

2020-03-14 17:17:18 240

原创 Nginx的配置

一:相同的端口访问不同的网站在nginx的配置文件中添加两个server 虚拟主机进行如下设置server_name 设置访问的地址,原本是localhost 现在该为www.baidu.com ,通过浏览器输入www.baidu.com之后就会去C:\Windows\System32\drivers\etc\hosts的文件夹下面去查看(采用管理员身份打开)修改成如下配置...

2020-03-14 12:23:03 395

空空如也

空空如也

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

TA关注的人

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