- 博客(45)
- 收藏
- 关注
原创 Redis和MySQL如何保持数据一致性
Redis和MySQL如何保持数据一致性?在高并发的场景下,大量的请求直接访问Mysql很容易造成性能问题。所以,我们都会用Redis来做数据的缓存,削减对数据库的请求。但是,Mysql和Redis是两种不同的数据库,如何保证不同数据库之间数据的一致性就非常关键了。1、导致数据不一致的原因**1、**在高并发的业务场景下,数据库大多数情况都是用户并发访问最薄弱的环节。**2、**所以,就需要使用redis做一个缓冲操作,让请求先访问到redis,而不是直接访问MySQL等数据库。**3、**读取缓
2022-03-14 19:48:25 22444 1
原创 SpringBoot自定义注解+异步来实现日志管理
这个实战在企业级必不可少的,每个项目搭建人不同,但是结果都是一样的,保存日志到数据,这样可以进行按钮的点击进行统计,分析那个功能是否经常使用,那些东西需要优化。只要是有数据的东西,分析一下总会有收获的!后面日志多了就行分库分表,ELK搭建。
2023-03-26 09:00:00 2898 2
原创 SpringBoot+Shiro+JWT+Mybatis-Plus搭建admin-shiro管理系统
从零开始搭建一个项目骨架,最好选择合适,熟悉的技术,并且在未来易拓展,适合微服务化体系等。所以一般以Springboot作为我们的框架基础,这是离不开的了。然后数据层,我们常用的是Mybatis,易上手,方便维护。但是单表操作比较困难,特别是添加字段或减少字段的时候,比较繁琐,所以这里我推荐使用Mybatis Plus,(为简化开发而生,只需简单配置,即可快速进行) CRUD 操作,从而节省大量时间。作为一个项目骨架,权限也是我们不能忽略的,Apache Shiro 是一款强大易用的 Java 安全框架
2022-12-30 17:36:48 13774 1
原创 Vue+Element-UI搭建admin-shiro-ui后台页面
后端接口返回的数据中 component 的值为String,我们需要将其转换为前端所需的对象并且我们需要将数据放入到路由的配置里。vue-router 提供的导航守卫主要用来通过跳转或取消的方式守卫导航。有多种机会植入路由导航过程中:全局的,单个路由独享的, 或者组件级的。注意:vuex分3.x版本和4.x版本,分别对应vue2.0与3.0,也就是说,vue2.0只能安装vuex3.x版本,最高3.6.2,它采用集中式存储管理应用的所有组件的状态,并以相应的规则保证状态以一种可预测的方式发生变化。
2022-12-30 17:18:02 7197
原创 Vue+Element-UI入门
1.2 Vue 3.0根据下面图片选择配置:空格是选择,回车是确认!!2 导入插件2.1 Element-UI 插件在main.js 里面引用element-ui 组件2.2 Axios2.2.1 简单创建utils文件在api里面封装自己需要 get post put delete请求2.2.2 封装创建utils文件夹 request.js创建api文件夹 login.jsdata为post请求的携带信息params是get请求携带的参数2.3 Vuex 状态管理模式
2022-12-05 00:18:24 5532
原创 利用Redis来实现分布式锁
SET 命令有个 NX 参数可以实现「key不存在才插入」,可以用它来实现分布式锁:- 如果 key 不存在,则显示插入成功,可以用来表示加锁成功;- 如果 key 存在,则会显示插入失败,可以用来表示加锁失败。
2022-11-27 01:15:44 673
原创 java实现线程安全的三种方式
一个程序在运行起来的时候会转换成进程,通常含有多个线程。通常情况下,一个进程中的比较耗时的操作(如长循环、文件上传下载、网络资源获取等),往往会采用多线程来解决。比如显示生活中,银行取钱问题、火车票多个售票窗口的问题,通常会涉及到并发的问题,从而需要多线程的技术。当进程中有多个并发线程进入一个重要数据的代码块时,在修改数据的过程中,很有可能引发线程安全问题,从而造成数据异常。例如,正常逻辑下,同一个编号的火车票只能售出一次,却由于线程安全问题而被多次售出,从而引起实际业务异常。
2022-11-22 00:24:44 2427 1
原创 EasyCode模板
EasyCode是基于IntelliJ IDEA开发的代码生成插件,支持自定义任意模板(Java,html,js,xml)。只要是与数据库相关的代码都可以通过自定义模板来生成。支持数据库类型与java类型映射关系配置。支持同时生成生成多张表的代码。每张表有独立的配置信息。完全的个性化定义,规则由你设置。...
2022-06-06 17:11:49 464
原创 Vue+EasyExcel来操作文件上传下载
在管理一个系统时,总会有许多的数据,为了方便浏览查看数据,系统总会提供「导出Excel」的功能;有导出就有导入,在要向数据库中插入大量的数据时,我们向程序提供准备好的 Excel,然后程序读取表格内容,并将数据添加到数据库中。实现这个「导入/导出 Excel」的功能也不复杂,我们使用第三方的类库即可实现。比如: Apache poi、Java Excel(JXL)和阿里巴巴开源的 Easyexcel 等。这么多类库该怎么选呢?在这里我给大家推荐阿里巴巴开源的「Easyexcel」。......
2022-06-06 17:00:21 2325
原创 SpringBoot + Vue 头像上传案例
后台系统一般会有用户个人信息的模块,为了增强用户的体验度,系统会开放自定义头像的功能,让用户可以上传自定义图片替代默认的系统头像。本文将通过SpringBoot+Vue来具体实现。
2022-06-06 16:41:41 815
原创 利用java代码一键生成数据库文档
1 screw(螺丝钉)介绍1.2 特点简洁、轻量、设计良好多数据库支持多种格式文档灵活扩展支持自定义模板1.2 文档生成支持htmlwordmarkdown1.3 文档截图1.3.1 html![](https://img-blog.csdnimg.cn/img_convert/23e95354d3b485482731a07c01744540.png#clientId=u2b59659d-0678-4&crop=0&crop=0&crop=1&am
2022-04-21 22:16:00 2283 2
原创 【图文详解】入职必备—3分钟学会SVN快速上手
前言正式进入公司后并不会像我们自学时自己一个人随心所欲地写代码,需要我们和同事进行协同开发,此时代码管理工具是必不可少的,目前常用的两款工具是:SVN 和 Git,今天我们就来学习一下SVN的使用!1 SVN简介SVN是什么代码版本管理工具它能记住你每一次的代码修改查看所有的修改记录恢复到任何历史版本恢复已经删除的文件SVN相比于Git的优势SVN使用简单,上手快目录级权限控制,企业安全必备子目录Checkout,减少不必要的文件检出主要应用场景开发人员用来做代码的版本
2022-03-30 00:17:15 1683
原创 微信小程序入门(保姆级)
一 注册微信小程序如果你没有微信公众平台的账号,请先进入微信公众平台首页,点击“立即注册”按钮进行注册。注册的账号类型可以是订阅号、服务号、小程序以及企业微信,我们选择“小程序”即可。选择注册,填写资料这里登录你的邮箱看看是否被激活,前往微信公众平台输入邮箱登录进去,填写个人信息,选择主体“个人类型”,并按要求登记主体信息,主体信息提交后不可更改了。手机扫码进行管理员身份验证提交信息现在你已经可以使用小程序进行开发了。进入小程序的管理平台了,填写小程序的基本信息,包括名称、图
2022-03-26 13:40:35 994
原创 在Vue中使用Echarts来实现(数据可视化)
一,Echarts一个基于 JavaScript 的开源可视化图表库Echarts官网 https://echarts.apache.org/zh/index.html1.1 获取ECharts(1)从 npm 获取(项目获取)npm install echarts --save(2)从 CDN 获取推荐从 jsDelivr 引用 echarts。(3)从 GitHub 获取apache/echarts 项目的 release 页面可以找到各个版本的链接。点击下载页面下方 Assets
2022-03-22 23:51:19 4432 2
原创 SpringBoot+Redis分布式锁,模拟(10W)抢单实战
1、内容介绍本篇内容主要讲解的是redis分布式锁,下面结合模拟抢单的场景来使用它;本篇涉及到的redis环境搭建,快速搭建个人测试环境,这里建议使用docker;本篇内容节点如下:1、 jedis的nx生成锁2、 如何删除锁3、 模拟抢单动作(10w个人开抢)2、jedis的nx生成锁对于java中想操作redis,好的方式是使用jedis,首先pom中引入依赖:<!-- spring data redis 依赖 --><dependency> <group
2022-03-20 23:20:54 495
原创 Java代码来实现-经典排序算法
Java基础算法这里只写了冒泡排序、选择排序、插入排序,后续还会更新。1、原理 冒泡排序: 每次比较从第个数据开始,数据两两比较,如果左边数据比右数据大,则交换左右数据。继续比较。一次比较结束出现一个最大值在最后一个位置。 选择排序: 表现最稳定的排序算法之一,首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置,然后,再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾。以此类推,直到所有元素均排序完毕。 插入排序: 通过构建有序序列,对于
2022-03-20 19:20:15 852
原创 Java8新特性-使用Stream流优化代码
1、前言Java8的新特性主要是Lambda表达式和流,当流和Lambda表达式结合起来一起使用时,因为流申明式处理数据集合的特点,可以让代码变得简洁易读。1.1、要求(一)如果有一个需求,需要对数据库查询到的菜肴进行一个处理:筛选出卡路里小于400的菜肴对筛选出的菜肴进行一个排序获取排序后菜肴的名字菜肴:Dish.javapublic class Dish { private String name; private boolean vegetarian; pr
2022-03-19 22:33:51 611
原创 SpringBoot利用ZXing工具来生成二维码(简单)
一、简单二维码生成1.1、依赖<!--二维码工具--><dependency> <groupId>com.google.zxing</groupId> <artifactId>core</artifactId> <version>3.4.1</version></dependency>1.2、二维码生成工具QRCodeUtilpackage com.example.demo.ut
2022-03-19 22:30:09 2764
原创 MySQL的主从如何配置
1. 数据库主从概念、优点、用途主从数据库是什么意思呢,主是主库的意思,从是从库的意思。数据库主库对外提供读写的操作,从库对外提供读的操作。数据库为什么需要主从架构呢?高可用,实时灾备,用于故障切换。比如主库挂了,可以切从库。读写分离,提供查询服务,减少主库压力,提升性能备份数据,避免影响业务。2. 数据库主从复制原理主从复制原理,简言之,分三步曲进行:主数据库有个bin log二进制文件,纪录了所有增删改SQL语句。(binlog线程)从数据库把主数据库的bin log文件的SQ
2022-03-18 18:46:18 859
原创 Spring自带工具类
一、断言SpringBoot 中提供了 Assert 断言工具类,通常用于数据合法性检查// 要求参数 object 必须为非空(Not Null),否则抛出异常,不予放行// 参数 message 参数用于定制异常信息。void notNull(Object object, String message)// 要求参数必须空(Null),否则抛出异常,不予『放行』。// 和 notNull() 方法断言规则相反void isNull(Object object, String message
2022-03-18 17:13:51 131
原创 SpringBoot实现QQ邮箱发送功能
SpringBoot实现QQ邮箱发送功能一. 前言1、互联网发展到现在,相必大家都知道发送邮件应该是网站的必备功能之一:用户注册发送邮箱验证、忘记密码、监控提醒以及发送营销信息等。Spring提供一个邮件框架: Spring Email2、Spring Email抽象的核心是MailSender接口,MailSender的实现能够把Email发送给邮件服务器,由邮件服务器实现邮件发送的功能。早期发送邮件是通过Java自带的JavaMail类来发送邮件的,不过需要自己封装消息体,后来Spring推
2022-03-15 12:53:40 11392 1
原创 SpringBoot参数校验
1、前言在控制器类的方法里自己写校验逻辑代码当然也可以,只是代码比较丑陋,有点“low”。业界有更好的处理方法,分别阐述如下。导入依赖<!--实体校验--><dependency> <groupId>org.hibernate</groupId> <artifactId>hibernate-validator</artifactId> <version>6.0.9.Final</version>&
2022-03-14 21:28:33 125
原创 Java8新特性-使用Stream流来实现递归遍历树形结构(案例)
Java8新特性-Stream流可能平常会遇到一些需求,比如构建菜单,构建树形结构,数据库一般就使用父id来表示,为了降低数据库的查询压力,我们可以使用Java8中的Stream流一次性把数据查出来,然后通过流式处理。我们一起来看看,代码实现为了实现简单,就模拟查看数据库所有数据到List里面。实体类:Menu.javapackage com.example.demo.model;import lombok.Builder;import lombok.Data;import java.ut
2022-03-14 00:20:07 2458
原创 SpringBoot支付宝支付-PC电脑支付
支付宝支付开发主要分为三个步骤:一、生成私钥公钥。二、建立应用。三、沙箱环境。四、接口开发1、生成私钥公钥1.1、下载支付宝开发者助手下载密钥生成工具1.2、生成普通密钥方式1、根据开发语言选择密钥格式和密钥长度。说明:新建应用请务必使用 RSA2 密钥长度 即 2048 位。详情请参见 开放平台证书升级指南。目前已使用 RSA 密钥长度即 1024 位密钥长度的应用仍然可以正常调用接口。[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-5xy7p55
2022-03-13 17:12:18 2141
原创 腾讯云服务器部署(保姆级)
腾讯云1、腾讯云官网上买一个服务器2、创建CentOS 8 系统第一步:登陆连接服务器进入腾讯云,并且登陆服务器后台,当然你也可以使用xshell或者putty之类的工具连接服务器;登录用户名:root密码:a1234567890.第二步、安装宝塔Linux面板复制粘贴以下脚本命令,回车Centos安装脚本(本教程所用):yum install -y wget && wget -O install.sh http://download.bt.cn/install/in
2022-03-10 01:42:34 8902 1
原创 阿里云服务器部署(保姆级)
一、前后端不分离SpringBoot项目部署1、配置阿里云服务器1.1、购买服务器阿里云官网 https://www.aliyun.com/注册阿里云账号(自行注册)阿里云购买教程 https://yq.aliyun.com/articles/699313公网IP 私网IP1.2、购买域名进入阿里云官网 https://www.aliyun.com/,点击 “域名”搜索你想要的域名进行购买;1.3、备案进入阿里云官网 https://www.aliyun.com/>进入“控
2022-03-08 22:01:42 31259 5
原创 订单编号生成
1.导入commons-lang3 依赖<dependency> <groupId>org.apache.commons</groupId> <artifactId>commons-lang3</artifactId> <version>3.8.1</version></dependency>2. 单个实例应用订单号去掉商户ID的传入(按同事的说法,传入商户ID也是为了防止重复订单的,事实
2021-09-29 15:40:03 1284
原创 通过Docker容器安装软件
安装虚拟机下载&安装 VirtualBox https://www.virtualbox.org/ 要开启 CPU 虚拟化下载& 安装 Vagranthttps://app.vagrantup.com/boxes/search Vagrant 官方镜像仓库https://www.vagrantup.com/downloads.html Vagrant下载检查是否安装vagrantvagrant -v打开 window cmd 窗口,运行 Vagrant init
2021-09-29 14:41:28 4479 1
原创 SpringBoot入门
第1节 SpringBoot是什么1.SpringBoot是一个可以快速创建可运行的、独立的、生产级的基于Spring的应用程序2.SpringBoot采用一种约定优于配置的设计理念,可以快速让用户创建出一个可运行的基于Spring的应用第2节 SpringBoot的优势1.快速构建项目2.对主流的开发框架无需配置集成,会自动的集成到一起(约定优于配置)3.项目可独立运行,不需要外部servlet容器(不需要额外配置tomcat或者jetty容器)4.提供运行时的应用监控(健康检查机制)5
2021-01-28 21:09:12 458
原创 SSM核心依赖坐标
<!--测试--> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.12</version> <scope>test</scope> </dependency> <!-- 引入MySQL数据库.
2021-01-14 14:06:45 239
原创 集成SSM+Shiro框架
1.导入依赖包<dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.12</version> <scope>test</scope> </dependency> <!-- 引入MySQL数据库依赖 -->
2021-01-13 20:00:56 213
原创 Java操作Excel导入导出(EasyExcel)
在管理一个系统时,总会有许多的数据,为了方便浏览查看数据,系统总会提供「导出Excel」的功能;有导出就有导入,在要向数据库中插入大量的数据时,我们向程序提供准备好的 Excel,然后程序读取表格内容,并将数据添加到数据库中。实现这个「导入/导出 Excel」的功能也不复杂,我们使用第三方的类库即可实现。1.技术选型能够实现「导入/导出 Excel」的第三方常用类库有 Apache poi、Java Excel(JXL)和阿里巴巴开源的 Easyexcel 等。这么多类库该怎么选呢?在这里我给大家推荐
2020-12-04 22:02:58 1020
原创 JDK+Tomcat+MySQL+Linux阿里云服务器部署网站项目
1. Linux基本命令(操作)命令说明参数示例sudo超级管理员权限cd切换当前目录# cd /ls查看文件与目录# lscp复制# cp /etc/abc/110 /etcmv移动(剪切)# mv /etc/abc/110 /etcfind查找Find [path] [param] [action]# find /root -mtime 0# find / -name abcrm删除文件-f-i 在删除
2020-11-30 12:05:02 533
原创 idea自动生成代码神器EasyCode
EasyCode是基于IntelliJ IDEA开发的代码生成插件,支持自定义任意模板(Java,html,js,xml)。只要是与数据库相关的代码都可以通过自定义模板来生成。支持数据库类型与java类型映射关系配置。支持同时生成生成多张表的代码。每张表有独立的配置信息。完全的个性化定义,规则由你设置。EasyCode能做什么?EasyCode是基于IntelliJ IDEA Ultimate版开发的一个代码生成插件,主要通过自定义模板(基于velocity)来生成各种你想要的代码。通常用于生成Enti
2020-11-24 00:26:22 1171
原创 SSM集成FreeMarker以及常用语法
文章目录一、前言二、FreeMarker简介三、SSM集成FreeMarker基本配置FTL指令常用标签及语法———————————- 基础语法 ———————————-1、字符输出2,日期输出3,数字输出(以数字20为例)4,申明变量5,比较运算算符6,算术运算符7,逻辑运算符8,FreeMarker中的运算符优先级如下(由高到低排列):9,if逻辑判断(注意:elseif不加空格)10、switch (条件可为数字,可为字符串)11、集合 & 循环12、Map对象13、FreeMarker支持如
2020-11-22 19:54:49 813
原创 用idea搭建SSM框架(Spring+Spring MVC+MyBatis)详解
Spring MVC + Spring + MyBatis集成将Spring和MyBatis进行整合,从而使用Spring依赖注入以减少代码的耦合,使用SpringMVC处理请求并作出响应。使用MyBatis更加简捷地完成数据库操作。1. SSM整合思路分析三层表现层业务层持久层框架SpringMVCSpringMyBatis包Spring freamworkspring-webmvc包mybatis核心包mysql驱动包连接池包 druidmybatis-s
2020-11-15 16:58:43 831 1
原创 用cookie做前端页面的记住密码
1.首先,写一个登陆的jsp页面,做一个form表单的post请求,地址链接到自己的servlet文件<form action="${pageContext.request.contextPath}/pictur"method="post"> <input type="tel" name="login_name" onkeyup = "value=value.replace(/[^\d]/g,'')" id="login_name" placeholder="手机/用户名" ma
2020-11-12 14:22:05 480 1
原创 有关cookie的用法介绍
Cookie用法本文主要内容:•1、什么是Cookie•2、Cookie带来的好处•3、Cookie的主要方法一、什么是Cookiecookie是一种WEB服务器通过浏览器在访问者的硬盘上存储信息的手段。Cookie的目的就是为用户带来方便,为网站带来增值。虽然有着许多误传,事实上Cookie并不会造成严重的安全威胁。Cookie永远不会以任何方式执行,因此也不会带来病毒或攻击你的系统。另外,由于浏览器一般只允许存放300个Cookie,每个站点最多存放20个Cookie,每个Cookie的大小
2020-11-12 14:20:06 297
原创 jQuery实现的全选、反选和不选功能
jQuery实现的全选、反选和不选功能HTML我们的页面上有一个歌曲列表,列出多行歌曲名称,并匹配复选框供用户选择,并且在列表下方有一排操作按钮<ul id="list"> <li><label><input type="checkbox" value="1"> 1.时间都去哪儿了</label></li> <li><label><input type="checkbox" val
2020-11-12 14:13:12 185
原创 idea 常用快捷键
Ctrl相关Ctrl + Z 撤销Ctrl + O 快速重写父类方法Ctrl + F 在当前文件进行文本查找Ctrl + Y 删除光标所在行或删除选中的行Ctrl + / 注释光标所在行代码,会根据当前不同文件类型使用不同的注释符号Ctrl + D 复制光标所在行或复制选择的内容,并把复制内容插入光标位置下面Ctrl + F1 在光标所在错误代码处显示错误信息Ctrl + F12 弹出当前文件结构层,可以在弹出的层上直接输入进行筛选Ctrl + P 方法参数提示Ctrl
2020-11-10 22:11:32 248
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人