自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

大宇的博客,欢迎访问

知其然,知其所以然,方可造其所以然

原创 跟着大宇学SpringBoot目录贴

与君共勉 故不积跬步,无以至千里。不积小流,无以成江海。骐骥一跃不能十步,驽马十驾功在不舍。 谁都是从HelloWorld开始学习的,即使是架构师,也是一样。 纯干货,重实战,贵在积累。 从头开始学SpringBoot目录 第一节 SpringBoot项目基...

2019-11-07 15:25:49 221 0

原创 跟着大宇学RabbimtMQ目录贴

与君共勉 故不积跬步,无以至千里。不积小流,无以成江海。骐骥一跃不能十步,驽马十驾功在不舍。 谁都是从HelloWorld开始学习的,即使是架构师,也是一样。 从头开始学RabbimtMQ目录贴 第一节 RabbitMQ生产者消费者 第二节 Fanout路由交换机:订阅发...

2019-05-20 14:06:08 441 0

原创 跟着大宇学SpringCloud目录贴

与君共勉 故不积跬步,无以至千里。不积小流,无以成江海。骐骥一跃不能十步,驽马十驾功在不舍。 谁都是从HelloWorld开始学习的,即使是架构师,也是一样。 从头开始学SpringCloud目录 第一节:服务注册与服务发现 第二节:使用Ribbon作为服务消...

2019-04-28 10:19:36 2156 0

原创 跟着大宇学MySQL------目录帖

与君共勉 故不积跬步,无以至千里。不积小流,无以成江海。骐骥一跃不能十步,驽马十驾功在不舍。 谁都是从HelloWorld开始学习的,即使是架构师,也是一样。 MySQL学习目录 从头开始学MySQL--------表的基本操作 从头开始学MySQL---...

2019-04-28 10:04:56 1845 2

原创 跟着大宇学Shiro--------目录帖

一、我与Shiro 本系列Shiro已经重写,本次重写时间为2018年12月。博主已经在实际项目中接触快Shiro一年,也积累了不少使用心得。文章已经部分转移到了我的专栏里面:跟着大宇学Shiro博客专栏。 本系列教程源码:点击我下载源码 下面是本次重写的博客大纲,希望...

2018-01-31 15:23:31 7951 9

原创 第二十三节 spring.factories

有幸参与了公司新框架的开发,大佬们齐思广义,我很尴尬,啥都不会。老大问我有什么想法,我想最好的想法就是学习大佬们的想法吧。 META-INF/spring.factories文件 在把新框架打成Jar后,其他项目导入我们的Jar,姑且叫它【消费者项目】吧。如何把我们已经配置好的@Con...

2020-06-05 17:16:30 22 0

原创 第二十三节 SpringBoot使用AOP

一、引入依赖 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-sta...

2020-06-04 10:56:24 44 0

原创 IO多路复用学习

阻塞IO:请求的数据没有来,那么就一直等待,知道数据到来。期间什么事情都不做,干等,效率很差。 非阻塞IO:请求的数据没有来,那么频繁监测数据是否到来。 IO多路复用:同一个线程内同时处理多个IO请求,并且一旦IO有数据返回,就会通知客户端。 IO多路复用常见的...

2020-06-03 17:26:34 14 0

原创 Redis哨兵(Sentinel)

一、哨兵模式概述 哨兵模式想解决什么问题 在Redis集群部署的背景下,如果主服务器宕机,那么需要人工手动将从服务器切换成主服务器。这会导致一段时间内Redis服务器(的数据槽)不能用。 哨兵模式是一种特殊的模式,首先Redis提供了哨兵的命令,哨兵是一个独立的进程,作为...

2020-06-01 16:52:40 28 0

原创 Docker把容器打成镜像,并修改物理机端口

打成镜像 以tomcat容器为例。 基于同事点拨:通常方法是将运行的容器提交为镜像,然后再重新运行加端口映射一遍。 docker ps -a #得到想要打包的容器ID # docker commit 容器ID 镜像名称 docker commit ec08fccbdb...

2020-05-28 10:31:08 44 0

原创 Redis监听Key失效

之前我使用过使用Redisson这种Redis的框架实现过延时发送。今天突然好奇,在SpringBoot中,Redis能监听到Key失效事件吗?经过查资料,答案是肯定的,可以监听Key失效,但是有缺陷,监听事件里面只能拿到Key,不能拿到这个Key对应的Value。所以说,在生成这个Key的时候,...

2020-05-26 16:42:01 50 0

转载 Redis实现任务队列

实现任务队列之前,我们先了解一下使用任务队列有哪些好处: 1. 松耦合。生产者和消费者无需知道彼此的实现细节,只需要约定好任务的描述格式。这使得生产者和消费者可以由不同的团队使用不同的编程语言编写。 2. 易于扩展。消费者可以由多个,而且可以分布在不同的服务器中,借此可以轻易地降低单台服务...

2020-05-26 14:41:25 49 0

原创 Redis常见挑战汇总

Redis在同一时刻出现大量缓存过期(缓存击穿挑战) 大量缓存在同一时刻过期,并且有大量的请求直接发送到数据库上,其本质上就是缓存击穿。 很多缓存数据都是由定时任务刷出来的,所有它们的失效时间都很集中。如果正好在失效的时候出现大量的请求,这些请求就直接打在数据库上了,数据库可能会压力骤...

2020-05-26 09:56:22 48 0

原创 Saas盈利模式的一点感悟

公司大部分产品都是基于Saas化部署,也就是拥有自己的服务器,其它学校通过向我们公司定制服务,并支付佣金,公司借以此获利。公司本身不出售任何代码,盈利均为租金。 作为公司的Java程序员,我们的系统需要兼容多所高校,同时对多所学校服务。听老一辈讲,公司早起的时候,一家学校维护一个Git分...

2020-05-25 17:33:24 137 0

原创 Redis在同一时刻出现大量缓存过期

现象 很多缓存数据都是由定时任务刷出来的,所有它们的失效时间都很集中。如果正好在失效的时候出现大量的请求,这些请求就直接打在数据库上了,数据库可能会压力骤增而宕机。解决办法有两个,在批量加入缓存数据的时候,为失效时间加入一个随机值。另外就是RateLimiter等组件来限流,防止短时间出...

2020-05-20 17:41:44 90 0

原创 ThreadLocal在多线程复杂业务的中使用

需求 现在共查询到10个不同的学院数据,因此在估量无内存溢出风险后,决定开启10个线程。首要问题是,每个线程中处理的学院都是不同的,如何在某个线程的执行过程中,任何一个地方都能明确的知道自己正在处理的是哪个学院。 实现 本次实现可作为以后的参考。 (1)引入线程池...

2020-05-19 13:46:34 62 0

原创 300万成绩数据处理成汇总结果数据小计

开启10个线程 被测试小姐姐夸了程序执行效率高,哈哈。多亏了线程池ThreadPoolExecutor框架。 300万的原始数据,经过10个线程同时执行,约30秒后处理出16万条成绩汇总数据。 刚问了我们的测试环境是多少钱买的,果然是高价,甩了我2毛钱一天的服务器十万...

2020-05-15 16:08:27 31 0

原创 Redis实现分布式锁

一、Redis是如何实现分布式锁的 在分布式项目中,做过定时任务的同学都会知道,多个节点也就是多个JVM进程,在同一时刻相同的定时任务会同时执行。其实我们只希望某个节点的定时任务执行。 主流的实现思路就是 (1)执行定时任务之前,向Redis中插入一组键值对。这个键就是分...

2020-05-15 14:59:26 44 0

原创 Redis持久化之AOF

一、定义 AOF是将所有的Redis的写命令记录到文件中,这个文件叫做AOF文件。 二、开启 ############################## APPEND ONLY MODE ############################### appendonly ye...

2020-05-14 17:18:55 35 0

原创 Redis持久化之RDB

一、RDB是什么 Redis一旦断电或者宕机,那么内存数据库中的数据将会全部丢失。   为了解决这个缺点,Redis提供了将内存数据持久化到硬盘,以及用持久化文件来恢复数据库数据的功能。Redis 支持两种形式的持久化,一种是RDB快照(snapshotting),另外一种是AOF。 ...

2020-05-12 17:57:32 43 0

原创 Docker 安装tomcat

docker search tomact docker pull tomcat:8 docker run –d -p 8080:8080 tomca:8 docker ps 找到tomcat容器的ID docker exec -it dd6657d9b796 /bin/bash 我这...

2020-05-09 09:22:50 59 0

原创 通用版本如何处理

思路 同一份代码,多个使用者的版本控制? 随着我们的系统越来越大,使用我们系统的学校客户越来越多。例如,现在有两个客户,A学校与B学校。A学校现在的生产库是V1.0版本。B学校的生产库是V1.1版本。 下次在升级A学校的版本的时候,需要提供一次增量的升级脚本。因此就要...

2020-04-28 18:13:22 38 0

原创 MyBatis Plus Service CRUD接口测试

Service如何集成MP public interface RoleMapper extends BaseMapper<RoleDO> { } public interface RoleService extends IService<RoleDO>{ } @...

2020-04-24 15:04:35 110 0

原创 从头开始学EasyUI--------导航栏

布局 一般布局是需要全屏的,为了适配各种浏览器,所以在body标签上使用了 easyui-layout。 <body class="easyui-layout"> <div data-options="region:'...

2020-04-21 14:08:03 61 0

原创 MyBatis Plus Mapper CRUD接口测试

插入 插入一条记录 int insert(T entity); 删除 根据主键ID删除,主键ID支持String、Number类型 int deleteById(Serializable id); 根据主键ID批量删除 int deleteBatchId...

2020-04-17 17:19:23 40 0

原创 Oracle行转列

with temp as( select '四川省' nation ,'成都市' city,'第一' ranking from dual union all select '四川省' nation ,'绵阳市...

2020-04-16 09:27:16 59 3

原创 独立部署项目遇到的核心技术难点

部署: http://tyzhou.cn:8083/study/springboot/ui/login http://tyzhou.cn:8084/study/springboot/ui/login 两个应用之间共享Session。密码jay 123456。登录后能够访...

2020-04-15 16:39:34 55 0

原创 如何做到通用设计

通用组织机构设计。学院,专业。 同一张表。 通用下拉框。 通用数据权限。如何实现通用JAR,授权体系,角色可管理学院,权限细化,可以具体到按钮,给上parentId 通用数据字典 通用导入导出,合并拆分。 预留抽象类,预留接口 主从表设计,不要像m_user那样设计,实施太麻烦了,而且...

2020-04-14 19:31:29 52 0

原创 MyBatis--------格式化性别等字段

通用写法 SELECT id, username, age, (CASE WHEN SEX = 1 THEN '男' WHEN SEX = 2 THEN '女' ELSE �...

2020-04-08 14:17:27 90 0

原创 从头开始学Redisson--------分布式远程服务(Remote Service)

一、Redisson使用远程服务 当前有两台服务器连接的是同一个Redisson中间件,这两台服务器叫它们A节点与B节点吧。A节点可以发布一些API接口,也实现了它们,并向Redisson服务中心注册。B节点向Redisson注册中心订阅这些API接口,因此它可以向Redisson服务器...

2020-04-07 17:52:38 98 0

原创 MyBaits操作经验目录贴

MyBatis-------批量插入 MyBatis--------生成主键

2020-04-07 14:34:45 92 0

原创 MyBatis--------查询参数携带集合

一、携带参数 Java的查询参数里携带了一个集合。 @Data public class TeacherParam { private List<Long> teacherIds; } 这个参数作为查询Mapper的参数。 @Repository @...

2020-04-07 13:55:05 35 0

原创 从头开始学Redisson--------分布式集合之多值映射(MultiMap)

一、多值映射 基于Redis的Redisson的分布式RMultimapJava对象允许Map中的一个字段值包含多个元素。什么意思呢?多值映射就是说某个多值映射(MultiMap),它的一个Key,能够存放多个值。说白了,RMutiMap<String,String>这样的泛...

2020-04-02 17:56:40 202 0

原创 从头开始学Redisson--------分布式集合之映射缓存(MapCache)

一、缓存映射(MapCache) Redisson的分布式的RMapCacheJava对象在基于RMap的前提下实现了针对单个元素的淘汰机制。同时仍然保留了元素的插入顺序。映射缓存(MapCache)它能够保留插入元素的顺序,并且可以指明每个元素的过期时间(专业一点叫元素淘汰机制)。另外...

2020-04-01 11:11:37 237 0

原创 从头开始学Redisson--------分布式集合之本地缓存映射(RLocalCachedMap)

一、RLocalCachedMap本地缓存映射 都说存在就是合理,上一节的分布式集合映射(RMap)已经实现了分布式情况下类似于Redis的hash功能。那为什么现在又冒出来一个本地缓存映射(RLocalCacheMap)呢?从代码的角度来看,本地缓存映射RLocalCacheMap继承...

2020-03-25 17:02:39 364 0

原创 从头开始学Redisson--------分布式集合之映射(RMap)

一、分布式集合Map 这里的分布式RMap类型,主要功能就是(1)实现了JavaSE的Map接口,方便操作(2)具有Redis的Map类型的缓存记忆功能。 与RBucket对象桶的区别,RMap可以把多个对象存放到Map中,而RBucket只能存放一个对象。 与RLi...

2020-03-24 20:00:52 341 0

原创 从头开始学Redisson--------分布式集合之列表(RList)

一、分布式集合List 基于Redis的Redisson分布式列表(List)结构的RListJava对象实现了java.util.List接口。简直太方便了。遥想当初为了用Redis的List类型,得做如下的代码 StringRedisTemplate.opsForList()得到操作L...

2020-03-20 17:19:46 123 0

原创 从头开始学Redisson--------分布式锁

一、立即获取锁 Redisson提供了一种非常便捷的分布式锁,个人认为堪称分布式锁中好用之最。 //获取锁 RLock lock = redisson.getLock("anyLock"); // 最常见的使用方法 lock.lock(); //释放锁 lock....

2020-03-16 18:04:09 88 0

原创 从头开始学Redisson--------限流器

一、限流器作用 基于Redis的分布式限流器RateLimiter可以用来在分布式环境下现在请求方的调用频率。既适用于不同Redisson实例下的多线程限流,也适用于相同Redisson实例下的多线程限流。 RateLimter主要作用就是可以限制调用接口的次数。主要原理就是调用...

2020-03-15 20:28:01 486 0

原创 从头开始学Redisson--------布隆过滤器

一、布隆过滤器 Redisson利用Redis实现了Java分布式的布隆过滤器。因此,在多个JVM节点上或者是其他进程里面,Redisson可以通过同一个KEY获取到布隆过滤器。布隆过滤器的主要功能就是判断某个元素在不在容器里面。因此,布隆过滤器非常适合缓存穿透的场景,就是查询一个肯定不存...

2020-03-13 20:41:26 525 0

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