
web开发
文章平均质量分 57
秋楓_Lance
这个作者很懒,什么都没留下…
展开
-
缓存数据库双写不一致问题?
多线程出现不一致原因1.先更新数据库,再更新缓存22.先删缓存,再更新数据3.先更新数据,再删除缓存解决方案1.延时双删,时间不好控制,不推荐2.使用内存队列,将缓存操作存入队列,再顺序取出执行(耗性能)3.使用分布式读写锁延时双删场景解读...原创 2022-04-12 17:44:04 · 1951 阅读 · 0 评论 -
zookeeper Zab协议理解
转载:ZooKeeper 如何保证数据一致性?转载 2022-04-11 17:42:44 · 185 阅读 · 0 评论 -
Redis-缓存击穿、缓存穿透、缓存雪崩区别
一、缓存击穿1.什么是缓存击穿?在平常高并发的系统中,大量的请求同时查询同一个 key 时,此时这个key正好失效了,就会导致大量的请求都打到数据库上面去。这种现象我们称为缓存击穿,会造成某一时刻数据库请求量过大,压力剧增。2.解决方案加互斥锁设置热点数据永远不过期。定时更新:比如某个热点数据的过期时间是1h,那么每到59min时,通过定时任务去更新这个热点key,并重新设置其过期时间。二、缓存穿透1.什么是缓存穿透?是指缓存和数据库中都没有某个数据的情况下(数据库中不存在),而用户不原创 2020-10-07 15:44:13 · 772 阅读 · 0 评论 -
Mysql-MVCC原理理解
一、什么是MVCC Multi-Version Concurrency Control 多版本并发控制,MVCC 是一种并发控制的方法,一般在数据库管理系统中,实现对数据库的并发访问;在编程语言中实现事务内存。 大多数的MySQL事务型存储引擎,如InnoDB,Falcon以及PBXT都在使用一种简单的行锁机制。事实上,他们都和另外一种用来增加并发性的被称为“多版本并发控制(MVCC)”的机制来一起使用。MVCC不只使用在MySQL中,Oracle、PostgreSQL,以及其他一些数据库系原创 2020-10-07 15:19:04 · 300 阅读 · 1 评论 -
kafka集群模式下操作java api进行分区消费时消费端不消费问题
问题描述今天使用java kafka-client操作kafka集群时,遇到了问题:我前面进行了一系kafka api的操作后,又进行kafka消费者组均分消息场景测试:使用创建好的topic(3个分区,3个broker,3个副本),我在idea首先开了三个消费端(同属一个消费者组),生产者发送数据后结果却是只有一个消费端进行了消费日志打印。我这边排查了很久,又卸了kafka重新安装,但是任然是一样的结果,并且发现每个新装的kafka启动后,他们的分区日志文件中又出现了原先的一些数据记录,包括topic原创 2020-07-28 22:01:42 · 565 阅读 · 0 评论 -
MYSQL-去重并且取时间最新
题目:查询出每个学生的每门科目成绩,如果存在多条就取update_time最新的那条CREATE TABLE `tb_score` ( `id` int(11) NOT NULL, `user_id` varchar(20) NOT NULL, `user_name` varchar(50) NOT NULL, `menu_name` varchar(50) NOT NULL, `score` double(5,2) NOT NULL, `update_time` date原创 2020-07-02 14:36:36 · 4567 阅读 · 0 评论 -
spring声明式事务失效
aa原创 2020-06-26 11:49:50 · 732 阅读 · 0 评论 -
MYSQL存储引擎
存储引擎 存储引擎决定了数据如何存放,用什么格式文件存放,文件存放在哪里。mysql 支持多种存储引擎,常用的有innodb、myisam和memory。 memory相当于内存级数据库,把数据都放到内存中,性能很高,但是无法持久化,掉电易失。 innodb是最常用,也是默认使用的存储引擎。InnoDB与MyISAM差异 两者差异点很多,下面依次罗列:事务和外键InnoDB支持事务和外键;MyISAM都不支持。全文索引MyISAM支持全文索引;InnoDB从5.7开始才支持全文索原创 2020-06-24 10:46:57 · 167 阅读 · 0 评论 -
MYSQL实现行转列的三种方式
题目 给定 student_score 表,内容如下:select * from student_score;nane subject score-------------------------------张三 语文 78张三 数学 88张三 英语 98李四 语文 89李四 数学 76李四 英语 90王五 语文 99王五 数学 66王五 英语 91 要求用一条 sql 语句查出如下结果:姓名 语文 数学 英语张三原创 2020-06-23 10:01:08 · 10203 阅读 · 0 评论 -
delayQueue实现订单超时自动取消
目录说明实现1.编写Delayed实现类2.编写DelayQueue业务类3.编写订单业务逻辑总结说明说明商城系统的订单模块都应该有:订单未支付超时后自动取消订单的操作。我们在开发过程中实现该功能也有很多,例如 消息中间件、定时任务等,每种方法都有各自的优点。这里我使用java DelayQueue容器来实现,优点是本地存储,系统资源消耗低,缺点是单机模式。实现1.编写Delayed实现类@Data@Accessors(chain = true)@NoArgsConstructorpubli原创 2020-06-15 10:09:20 · 2581 阅读 · 8 评论 -
springboot整合Quartz
前言我们在开发系统时,可能会要使用到定时任务模块,目前常用的有:jdk 自带的Timer、ScheduledExecutorService线程池、spring定时任务、Quartz、elastic-job、 XXL-JOB这几个工具,其中后两个是基于Quartz进行开发的。这里我实用的是Quartz,结合springboot。开发1.导maven包 <dependency> <groupId>org.springframework.boot</groupId&g原创 2020-05-26 14:24:49 · 281 阅读 · 0 评论 -
商城系统-数据库设计
说明我这里只提供相关博客链接,个人觉得博主博客写的不错,所以搬上来。下面是我整理的相关模块链接内容1.电商系统——用户模块:https://segmentfault.com/a/11900000152948912.电商系统——购物车模块(补充):https://segmentfault.com/a/11900000153222003.电商系统——电商品模块 (上):https://segmentfault.com/a/11900000155655994.电商系统——电商品模块 (中):https原创 2020-05-14 15:09:25 · 6203 阅读 · 0 评论 -
springboot使用拦截器进行校验token(post和get获取token参数)
前言前面我做了一个简单的jwt校验token的demo案例,再后来的开发过程中我遇到一个问题:我们前台在调用后台接口时,用的最多的contentType是application/x-www-form-urlencoded、application/josn两种类型。当是application/x-www-form-urlencoded类型下,我们在拦截中可以直接使用request.getParam...原创 2020-05-08 15:07:03 · 5560 阅读 · 2 评论 -
电商商品列表应以SPU还是SKU展示商品?
我们先了解下,SPU和SKU的概念,方便大家跟上思路,如下:SPU(Standard Product Unit):标准化产品单元。是商品信息聚合的最小单位,是一组可复用、易检索的标准化信息的集合,该集合描述了一个产品的特性。通俗点讲,属性值、特性相同的商品就可以称为一个SPU。SKU(Stock Keeping Unit):库存量单位,即库存进出计量的单位, 可以是以件、盒、托盘等为单位。SK...转载 2020-04-27 14:52:00 · 4013 阅读 · 0 评论 -
微信小程序给底部tabBar图标添加角标
前言在一般的商城类app或者小程序,一般购物车菜单都会有右上角角标。今天我这里在微信小程序上进行实现。思路查看微信小程序官方文档:实现 let cartNum = ; //通过后台接口获取 if (cartNum.length != 0) { //设置角标 wx.setTabBarBadge({ index: 2, //tabBar序号,从0开始计数 ...原创 2020-04-24 11:11:57 · 4478 阅读 · 0 评论 -
springboot整合JWT案例
前言最近开发小程序后端是需要对接口进行安全性防护,第一步就是考虑使用token。jwt很好的规范了服务端token校验规则。如果对jwt不了解,请看:https://www.ruanyifeng.com/blog/2018/07/json_web_token-tutorial.html下面是我做的小程序springboot集成jwt的案例,只做了简单操作。1.导入依赖<depende...原创 2020-04-09 11:34:03 · 711 阅读 · 0 评论 -
Linux的五种IO模型
详情请看:https://www.jianshu.com/p/486b0965c296转载 2020-03-30 11:37:27 · 155 阅读 · 1 评论 -
MybatisPlus出现Error querying database. Cause: java.lang.IndexOutOfBoundsException: Index: 7, Size: 7
问题今天在项目中遇到一个问题:项目中使用了mybatisplus和lombok,在执行查询操作时,后台报错:2020-03-20 19:48:26.232 ERROR 11612 --- [nio-8000-exec-2] o.a.c.c.C.[.[.[/].[dispatcherServlet] : Servlet.service() for servlet [dispatcherSe...原创 2020-03-20 19:57:50 · 15679 阅读 · 9 评论 -
微信小程序 background-image的图片真机调试和体验版中无法加载
前言在我的微信小程序项目中,我一般在引用静态本地资源时用相对路径,然后我就碰到一个坑:我在给一个view添加背景图时,本地查看效果正常,但是使用真机调试或者体验版查看是加载不出来的。原先代码<view style="background-image:url("../../images/pics/bg_img.png')"></view>解决方案说明:注意不要以...原创 2020-03-07 10:09:41 · 1969 阅读 · 1 评论 -
微信小程序实现下滑到底部进行自动翻页功能
前言这段时间接了一个微信小程序项目,从此打开小程序的新世界大门。然后发现使用页码进行翻页已经不适用于手机app,我们日常中实用的手机app或者小程序进行翻页一般都是使用底部后下拉的方式。解决思路我发现微信小程序远程组件提供了一个scroll-view(可滚动视图区域),这个组件中有个属性,bindscrolltolower能够监听区域内滑到了最后一个位置。这就能用来解决和实现我们提出的问题。...原创 2020-03-06 11:04:36 · 4820 阅读 · 0 评论 -
消息队列-ActiveMQ 发布-订阅模式
说明前面介绍过ActiveMQ的p2p(点对点)模式,p2p模式只允许一条消息给一个消费者使用,能够保证消息不被重复消费(开启事务时需要特殊处理才能保证)。今天我再介绍一种发布订阅模式,即一条消息能够同时让多个消费者同时消费,只要消费者订阅了topic消息,那么只要有消息发送过来,所有订阅了topic的消费者能同时接收到,但是这个需要保证消费者实时在线。依赖<dependen...原创 2020-01-17 13:56:00 · 613 阅读 · 0 评论 -
消息队列-ActiveMQ配置使用mysql持久化
1.依赖包下载commons-dbcp、commons-pool、mysql-connector-java下载方法:https://blog.csdn.net/qq_34869990/article/details/897637682.进入activemq的lib目录,将jar包放入3.进入activemq的conf目录,编辑activemq.xml文件(1)在beans里面添...原创 2020-01-15 08:43:16 · 378 阅读 · 2 评论 -
在centos7上安装redis和配置开机自启
1.准备安装包方法一:官网下载,通过sftp传到centos方案二:安装wget,通过wget在线下载安装包 ,自己指定版本http://download.redis.io/releases/redis-xxx.tar.gz2.解压文件tar -xzvf redis-5.0.7.tar.gz3.编译安装1.cd redis-5.0.72. make3. make install ...原创 2020-01-11 16:46:09 · 186 阅读 · 0 评论 -
消息队列-ActiveMQ P2P模式
1.导依赖包<dependency> <groupId>org.apache.activemq</groupId> <artifactId>activemq-all</artifactId> <version>5.15.10</version></dependency>2.消息生...原创 2020-01-11 14:32:14 · 485 阅读 · 0 评论 -
如何从github上下载部分文件到本地
步骤1.在本地进入git bash2.初始化一个本地仓库用于存放github上的文件(代码)git init testdir # 新建本地仓库cd testdir # 进入本地仓库3.设置允许克隆子目录git config core.sparsecheckout true4.设置要克隆的仓库的子目录路径(注意:文件名中如果带空格不能省略)echo '文件路径...原创 2020-01-02 11:07:57 · 3141 阅读 · 0 评论 -
FastDFS+Nginx 单机环境搭建案例
一、准备1.下载安装包下载地址:https://github.com/downgoon/hello-world/wiki/FastDFS-Install-&-Upload-&-Download备注:此案例是将所有下载好的包放在centos的 /tmp/fdfs/目录下2.安装依赖组件系统依赖组件 gcc openssl-devel pcre-devel zlib-deve...原创 2019-12-28 22:55:42 · 353 阅读 · 0 评论 -
centos7 设置nginx开机自启(systemctl和init.d两种方案)
方案一(init.d)1.进入**/etc/init.d/**cd /etc/init.d/2.创建nginx文件touch nginx3.vim编辑nginx#!/bin/sh## nginx - this script starts and stops the nginx daemon## chkconfig: - 85 15 # description: Ng...原创 2019-12-27 10:31:58 · 5155 阅读 · 0 评论 -
dubbo2.7版本 dubbo-admin编译教程
准备1.maven安装和配置(自行百度)2.nodejs安装和配置(自行百度)3.github下载最新版dubbo admin,地址:https://github.com/apache/dubbo-admin步骤1.解压下载好的dubbo-admin,默认解压后文件名为dubbo-admin-develop2.进入XXX\dubbo-admin-develop\dubbo-admi...原创 2019-12-23 09:15:02 · 1739 阅读 · 0 评论 -
springboot使用druid对配置文件数据库密码进行加密(starter版)
前言最近一直在学习springboot和springcloud,自己把一些案例代码给上传到github上,这个时候发现一个问题:我配置文件中数据库相关配置信息(数据库用户名,主机和数据库密码)不就直接给暴露出去了吗,对于这个问题,如果真的在开发中肯定是不允许的。为此查阅了一些资料,目前是有两种解决方案:1.使用jasyp库这种方法我在测试的时候运到一个问题,找不到解决方案,具体问题:在项目启...原创 2019-12-10 22:40:11 · 2425 阅读 · 0 评论 -
使用idea配置Settings Repository时报错Commit on repo without HEAD currently not supported
结合github配置idea Settings Repository问题1问题2正常步骤流程问题1在更新了idea2019.3版本后找不到Export Settings和Import Settings选项解决方案1.进入Settings下面的plugins输入查询Setting相关已安装插件,禁用图中的两个插件2.重启idea后发现会出现Export Settings和Import S...原创 2019-12-05 10:01:44 · 3567 阅读 · 5 评论 -
springboot2.x+springsecurity使用ajax实现异步登录
前言前面介绍了springboot整合shiro的基本实现案例,这段时间有空又去研究了一下springsecurity,毕竟他是spring全家桶中的一员,我们用springboot开发项目自然springsecurity能够提供更好地集成。环境搭建1.新建springboot项目,maven导入springsecurity的包<dependency> <group...原创 2019-12-03 09:52:50 · 1845 阅读 · 1 评论 -
tk-mybatis使用selectByPrimaryKey无法根据主键查找获取结果
问题描述在使用springboot+tk-mybatis做案例时遇到了一个坑,在测试tk-mybatis的通用Mapper中的selectByPrimaryKey方法的时候发现不能按照主键进行获取得到结果。 一开始以为是数据库的问题,重建数据库后还是一样的问题,然后开启mybatis sql日志打印功能后发现,生成的sql是有问题的:sql日志:从日志中可以发现它并不是按照id号来查,...原创 2019-12-02 20:00:17 · 5100 阅读 · 0 评论 -
springboot2.x整合redis做缓存案例
前言我们在开发后台系统,在前台需要展示报表数据时一般是通过调用后台数据接口,数据接口就去按条件查询数据库并将结果返回给前台人员。通常在数据表数据较少时,查询效率是可以的,然而一般在高用户量系统中数据库数据量是十分庞大的,通过数据表建立索引虽然能够加快查询效率,但是速度还是会显得缓慢。这时我们就可以考虑使用集群、分布式和缓存等后端技术进行解决。下面我就介绍一种常用的缓存中间件Redis,我们项目结...原创 2019-11-28 22:16:46 · 952 阅读 · 0 评论 -
springboot2.x整合shiro案例
springboot+shiro进行系统权限管理前言准备过程整合shiro合理的创建标题,有助于目录的生成插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入前言以前在开发项目过程...原创 2019-11-06 21:03:05 · 564 阅读 · 0 评论 -
springbooot 数据校验@Validation及分组校验
三种校验包区分JSR303是一项标准,JSR-349是其的升级版本,添加了一些新特性,他们规定一些校验规范即校验注解,如@Null,@NotNull,@Pattern,他们位于javax.validation.constraints包下,只提供规范不提供实现。hibernate validation是对这个规范的实践(不要将hibernate和数据库orm框架联系在一起),他提供了相应的实现...原创 2019-10-23 16:06:25 · 927 阅读 · 0 评论 -
使用maven官方仓库直接下载项目需要的jar包方法
我们在java开发过程中基本上所有项目都会有项目依赖的jar包需要导入,当然最好的方法是将我们我项目加上maven支持,使用maven来管理我们项目依赖包,方便又简洁。然而当我们不使用maven时却很难去找到对应的包,上网百度又是很对需要下载卷,就像CSDN上面很多资源下载都是要下载币的,这将很麻烦。下面我教大家一种方法用maven在线仓库找到并下载我们需要的jar包。1.首...原创 2019-05-02 19:09:04 · 7638 阅读 · 2 评论 -
java 使用jdbc查询mysql数据库怎么也查不出,但是直接在mysql中能查的到
原因是连接数据库的地址(url)后没有设置字符编码集。url前缀: jdbc:mysql://xxx.xxx.xxx.xxx:3306/xxx解决方案:(mysql驱动5版本)在连接地址后加上 ?useUnicode=true&characterEncoding=UTF-8 (mysql驱动8版本)在连接地址后加上?useUnicode=true&cha...原创 2019-04-24 08:58:48 · 4310 阅读 · 0 评论 -
使用postman测试webservice接口
1.首先看一下webservice发布是否成功(注意在接下来的步骤中发布webservice的服务器不能关)2.打开postman软件,地址栏输入webservice url地址,选择post方式3. Headers中设置Content-Type4. 在Body中发送数据进行测试,其中xmlns:test="http://service.foxconn.com/"对...原创 2019-04-30 09:01:13 · 69436 阅读 · 5 评论 -
简单工厂模式和策略模式的区别与结合
原文链接:https://www.cnblogs.com/skychen1218/p/4770876.html前言: 简单工厂模式和策略模式是大部分程序员,在学习设计模式时接触得最早,或在工作实践中也是用得相对比较多的两个设计模式。 一个是创建型,另一个是行为型,然而两种不同类型的模式,在某些地方也有一丝的相似之处,同时在某种场景下结合使用,能起到特别好的效果。...转载 2019-05-16 10:40:33 · 292 阅读 · 0 评论 -
java静态代码块,非静态代码快,构造函数的执行顺序
我们直接通过实例进行测试,然后看测试结果。父类:Personpublic class Person { { System.out.println("父类非静态代码块"); } static { System.out.println("父类静态代码块"); } public Person() { System.out.println("父类构造函数");...原创 2019-06-11 09:06:39 · 478 阅读 · 0 评论