- 博客(50)
- 收藏
- 关注

原创 《菜狗商城》Springboot+Vue电商项目
一款Springboot+Vue前后端分离架构的网络电商平台购物系统,包括用户登录,商品推荐,商品搜索,用户评价,购物车,添加订单,收货地址及微信支付等功能。
2022-09-01 17:19:43
2617
1

原创 RabbitMQ—消息队列
一、RabbitMQ介绍RabbitMQ是一个在AMQP( 一个提供统一消息服务的应用层标准高级消息队列协议)基础上完成的,可复用的企业消息系统。他遵循Mozilla Public License开源协议。主要特性:保证可靠性:使用一些机制来保证可靠性,如持久化、传输确认、发布确认灵活的路由功能可伸缩性:支持消息集群,多台RabbitMQ服务器可以组成一个集群高可用性:RabbitMQ集群中的某个节点出现问题时队列任然可用支持多种协议支持多语言客户端提供良好的管理界面提供跟踪机制:
2022-01-26 18:57:20
2928

原创 SpringCloud Netflix—微服务架构
一、SpringCloud简介Spring Cloud 是⼀个基于SpringBoot实现的微服务架构应用开发框架,它为我们进行微服务架构应用开发提供了服务注册与发现、熔断器、网关路由、配置管理、负载均衡、消息总线、数据监控等⼀系列工具。Spring Cloud比较成熟的两个体系:Spring Cloud NetflixSpring Cloud AlibabaSpring Cloud核心组件Spring Cloud NetflixEureka 服务注册与发现中心,用于服务治理F
2022-01-20 18:33:12
790
原创 Stream流处理
Map>,其最终返回的数据类型为:Map>二级分类汇总 类似SQL group by sellerId,buyerId。一级分类汇总 类似SQL group by sellerId。
2023-03-31 14:42:08
374
原创 Vue笔记
vue控制台消除两个小提示1.安装vue开发者工具 即可消除2.提示我们正在使用一个开发者的vue版本 开发者版本比较大(有报错提示功能) 在生成环境中最好替换为生产版本添加 Vue.config.productionTip = false 即可消除事件绑定@click传参问题默认会传event事件参数 @click="showInfo"和@click="showInfo(event)"相等的可以直接传参@click=“showInfo(66)” 同时也可以带上事件参数@click=“
2022-05-19 17:01:57
2807
原创 HashMap的实现原理及红黑树
在JDK1.7及之前hashMap采用 数组+链表 形式 链表的插入采用的是头插法在JDK1.8的时候,hashMap采用 数组+链表(红黑树) 链表改成了尾插法,并且引入了红黑树。能说下HashMap的实现原理吗其实就是有个Entry 数组,Entry保存了key和value。当你要塞入一个键值对的时候,会根据一个hash算法计算key 的hash值,然后通过数组大小n-1 & hash值之后,得到一个数组的下标,然后往那个位置塞入这个Entry。然后我们知道,hash算法是可能产.
2022-03-08 12:41:03
2309
原创 Hutool-crypto加密工具
加密分为三种:对称加密(symmetric),例如:AES、DES等 SecureUtil.aes SecureUtil.des非对称加密(asymmetric),例如:RSA、DSA等 SecureUtil.rsa SecureUtil.dsa摘要加密(digest),例如:MD5、SHA-1、SHA-256、HMAC等 SecureUtil.md5添加依赖即可使用<dependency> <groupId>cn.hutool</groupId&g.
2022-02-22 14:26:37
8394
原创 自定义模板的MyBatisPlus
Gitee地址:https://gitee.com/xujiulong/my-batis-plus.git1. 添加依赖swagger2lombokMyBatisPlus里面集成了MyBatis 所以不用再加MyBatis依赖 否则容易报错<!-- swagger2 --> <dependency> <groupId>io.springfox</groupId> <artifactId>springfox-swagg.
2022-02-20 11:15:00
1824
原创 判断字符串是否为空方法
一、字符串状态String字符串的4种状态声明了并别引用值为 null分配了内存空间赋值为 “”分配了内存空间没赋值 String A=new String();只声明了没引用 String c;有值String空字符串的2种状态null“”二、比较字符串为空4种方法if(s == null || s.isEmpty())Java SE 6.0 后开始提供的方法if(s == null || s.length() <= 0)比较字符串长度
2022-02-19 14:08:59
17791
原创 Spring 里多种 CORS 配置方式
参考:https://cloud.tencent.com/developer/article/1703212https://cloud.tencent.com/developer/article/1513473一、CORS 介绍CORS全称是Cross-Origin Resource Sharing,直译过来就是跨域资源共享。从站点 A 请求站点 B 的资源的时候,由于浏览器的同源策略的影响,这样的跨域请求将被禁止发送;为了让跨域请求能够正常发送,我们需要一套机制在不破坏同源策略的安全性的情.
2022-02-14 18:40:16
2386
1
原创 MyBatisPlus
官网:https://mp.baomidou.com/一、MyBatisPlus介绍MyBatis Plus,简化 MyBatis !为简化开发而生二、MyBatisPlus使用2.1 添加依赖swagger2lombokMyBatisPlus里面集成了MyBatis 所以不用再加MyBatis依赖 否则容易报错<!-- mybatis-plus --> <dependency> <groupId>com.baomidou</gr.
2022-02-14 11:15:00
662
原创 在github上下载单个文件夹
想单独下载 jwt-shiro 这一文件夹新建一个文件夹或在一个没有.git的文件内操作(若果有.git可以删除再操作)初始化.git仓库git init连接远端仓库(后面加地址 .git 结尾)git remote add -f origin https://gitee.com/xujiulong/address.git启用Sparse Checkout模式git config core.sparsecheckout true选择某个文件夹(jwt-demo).
2022-02-13 17:55:34
519
原创 Zipkin—服务链路追踪
ZipKin是⼀个开放源代码的分布式跟踪系统,由Twitter公司开源,它致力于收集服务的定时数据,以解决微服务架构中的延迟问题,包括数据的收集、存储、查找和展现。每个服务向 ZipKin 报告计时数据,ZipKin 会根据调用关系通过 ZipKin UI 生成依赖关系图,显示了多少跟踪请求通过每个服务,该系统让开发者可通过⼀个 Web 前端轻松的收集和分析数据,例如⽤户每次请求服务的处理时间等,可方便的监测系统中存在的瓶颈。一、搭建zipkin服务器添加依赖(springboot版本必须本2..
2022-01-22 20:52:18
436
原创 Gateway—网关服务
⼀、网关介绍使⽤服务网关作为接⼝服务的统⼀代理,前端通过网关完成服务的统⼀调用网关可以干什么?路由:接口服务的统⼀代理,实现前端对接⼝服务的统⼀访问过滤:对用户请求进行拦截、过滤(用户鉴权)、监控限流:限制用户的访问流量常用的网关NginxSpring Cloud Netflix zuulSpring Cloud GatewayNginx通常被用作应用服务器网关(Tomcat集群,Redis集群,前端浏览器网关),zuul或者gateway通常被用作服务网关(springc
2022-01-22 20:36:17
1924
原创 ElasticSearch—搜索引擎
一、ElasticSearch简介1.1 ElasticSearch vs Lucene的关系ElasticSearch vs Lucene的关系,简单⼀句话就是,成品与半成品的关系。(1)Lucene专注于搜索底层的建设,而ElasticSearch专注于企业应用。(2)Luncene是单节点的API,ElasticSearch是分布式的—为集群而⽣。(3)Luncene需要⼆次开发,才能使用。不能像百度或谷歌⼀样,它只是提供⼀个接⼝需要被实现才能使用, ElasticSearch直接拿来用。
2022-01-15 19:58:23
1067
原创 Lucene—全文检索工具包
一、Lucene简介Lucene是Apache Jakarta家族中的⼀个开源项目,是⼀个开放源代码的全文检索引擎工具包,但它不是⼀个完整的 全文检索引擎,而是⼀个全文检索引擎的架构,提供了完整的查询引擎、索引引擎和部分文本分析引擎。Lucene提供了⼀个简单却强大的应用程式接口,能够做全文索引和搜寻。在Java开发环境⾥Lucene是⼀个成熟的免费开源工具,是⽬前最为流行的基于 Java 开源全文检索工具包。数据总体分为两种:结构化数据:指具有固定格式或有限长度的数据,如数据库、元数据等
2022-01-15 11:12:40
1247
原创 Redisson—分布式锁框架
一、 Redisson介绍Redisson在基于NIO的Netty框架上,充分的利用了Redis键值数据库提供的⼀系列优势,为使用者提供了⼀系列具有分布式特性的常用⼯具类。一款基于Redis+看门狗机制的分布式锁框架二、 Redisson工作原理看门狗机制三、 Redisson使用添加依赖<dependency> <groupId>org.redisson</groupId> <artifactId>redisson<
2022-01-07 09:45:00
826
原创 Redis—淘汰策略
Redis是基于内存结构进⾏数据缓存的,当内存资源消耗完毕,想要有新的数据缓存进来,必然要从Redis的内存结构中释放⼀些数据。如何进⾏数据的释放呢?----Redis的淘汰策略Redis提供的8中淘汰策略—修改redis.conf配置文件即可# volatile-lru -> 从设置了过期时间的数据中淘汰最久未使⽤的数据.# allkeys-lru -> 从所有数据中淘汰最久未使⽤的数据.# volatile-lfu -> 从设置了过期时间的数据中淘汰使⽤最少的数据..
2022-01-06 09:45:00
130
原创 Redis—集群配置
一、简介高可用:保证redis⼀直处于可用状态,即时出现了故障也有备用⽅案保证可用性高并发:⼀个redis实例已经可以支持多达11w并发读操作或者8.1w并发写操作;但是如果对于有更高并发需求的应用来说,我们可以通过 读写分离 、 集群配置 来解决高并发问题二、特点Redis集群中每个节点是对等的,无中心结构数据按照slots分布式存储在不同的redis节点上,节点中的数据可共享,可以动态调整数据的分布可扩展性强,可以动态增删节点,最多可扩展⾄1000+节点集群每个节点通过主备(哨兵模
2022-01-05 09:00:00
478
原创 Redis—哨兵模式
通过设置几个哨兵用于监听主库,当确认主库宕机之后,从备库(从库)中选举⼀个转备为主来实现Redis的高可用性(建立在主从配置上)哨兵模式配置主从配置:https://blog.youkuaiyun.com/qq_45246098/article/details/122286747##⾸先实现三个redis实例之间的主从配置(如上)## 创建并启动三个哨兵## 拷⻉sentinel.conf⽂件三份:sentinel-26380.conf sentinel-26382.conf sentinel-.
2022-01-04 11:15:00
159
原创 Redis—主从配置
在多个redis实例建⽴起主从关系,当 主redis 中的数据发⽣变化, 从redis 中的数据也会同步变化。通过主从配置可以实现redis数据的备份( 从redis 就是对 主redis 的备份),保证数据的安全性;通过主从配置可以实现redis的读写分离主从配置示例## 在redis-5.0.5⽬录下创建 msconf ⽂件夹[root@theo redis-5.0.5]# mkdir msconf## 拷⻉geredis.conf⽂件 到 msconf⽂件夹 ---> re.
2022-01-03 13:58:44
990
原创 Linux常用操作指令
一、Linux文件系统Linux系统不同于windows,在Linux系统中没有盘符,根路径⽤"/"表示[root@theo ~]# cd /[root@theo /]# lsbin boot dev etc home lib lib64 media mnt opt proc root run sbin srv sys tmp usr var二、Linux指令2.1 Linux系统指令语法示例: tar -zcvf b.tar otp_src_20.1 //解压压缩包指令
2022-01-02 12:00:00
150
原创 Redis数据存储常用指令
一、Redis存储的数据结构Redis是以键值对形式进⾏数据存储的,但是value⽀持多种数据类型二、string常用指令## 设置值/修改值 (如果key存在则进⾏修改)set key value## 取值get key## 批量添加mset k1 v1 [k2 v2 k3 v3 ...]## 批量取值mget k1 [k2 k3...]## ⾃增和⾃减incr key ## 在key对应的value上⾃增 +1decr key ## 在key对应的value上⾃减
2022-01-01 09:15:00
1756
原创 JDK,Tomcat,MySQL,Nginx Linux 及Windows安装
一、JDK安装(离线安装)1. 下载JDK(Linux版)官网/云盘 (jdk.tar.gz)https://www.oracle.com/java/technologies/downloads/2. 使用xftp将下载的安装包上传到linux的/usr/local目录3. 解压JDK安装包4. 配置环境变量进⼊到/etc⽬录,找到profile⽂件编辑profile⽂件 : vim profile在profile⽂件最后配置以下内容export JAVA_HOME=/u
2021-12-31 20:55:27
1596
原创 Redis介绍,安装及配置
一、Redis介绍1. 产生背景2008年 萨尔瓦多——开发⼀个进⾏⽹站实时统计软件项目(LLOOGG),项⽬的实时统计功能需要频繁的进⾏数据库的读写(对数据库的读写要求很⾼—数千次/s),MySQL满⾜不了项目的需求,萨尔瓦多就使用C语⾔自定义了⼀个数据存储系统—Redis。后来萨尔瓦多不满足仅仅在LLOOGG这个项⽬中使用redis,就对redis进行产品化 并进行开源,以便让更多的人能够使用。2. 定义Redis就是⼀个用C语⾔开发的、基于内存结构进行键值对数据存储的、高性能的、非关系型
2021-12-30 18:05:19
742
原创 quartz定时任务框架使用
一 使用场景订单超时取消,指的是当⽤户成功提交订单之后在规定时间内没有完成⽀付,则将订单关闭还原库存。实现订单的超时取消业务通常有两种解决⽅案:定时任务(quartz)延时队列(MQ)实现流程二 框架使用1. 添加依赖<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-quartz</arti
2021-12-30 04:30:00
249
原创 微信支付—Java实现
通过微信平台为商家提供代收款服务一 基础准备1.微信支付业务—商户注册微信支付业务网址 https://pay.weixin.qq.com注册后会获得商户编号:1497984412**商户账号AppID:wx632c8f211f8122c6**商户Key:sbNCm1JnevqI36LrEaxFwcaT0hkGxFnC**2.申请支付订单—商户向支付平台申请支付链接⽀付订单,并不是⽤户提交的商品订单,⽽是商户向微信⽀付平台申请的支付链接url2.1 导入微信支付的依赖wx.
2021-12-29 10:58:50
1720
原创 webSocket—消息推送
webSocket可以实现后端主动向前端发送响应例如 二维码支付功能中 客户支付完成后 后端主动向前端响应支付完成原理 前端通过key在webSocket这个代理服务器中建立key-session的长链接 后端通过key访问到对应session并向前端反馈信息Gitee地址https://gitee.com/xujiulong/web-socket-module.git一 实现流程二 添加依赖<.
2021-12-22 09:00:00
961
原创 JS二维码生成—qrcode.js
Git地址需求工具qrcode.jsjquery.js代码<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial
2021-12-21 14:15:49
757
原创 VUE列表渲染 FOR-IN和FOR-OF的区别
一 总结V-for循环遍历数组时推荐使用of,语法格式为(item,index) (java代码中多用----直接取值)item:迭代时不同的数组元素的值index:当前元素的索引V-for循环遍历对象时推荐使用in,语法格式为(item,name,index) (v-for多用)item:迭代时对象的键名键值name:迭代时对象的键名index:当前元素的索引二 比较V-FOR遍历数组DATA: list:[ {name:'1'},
2021-12-19 16:12:20
679
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人