Jdk1.8新特性

引言 在这篇文章介绍一下JDK1.8的一些新特性。 开始 一、语言核心特性 Lambda 表达式 允许以简洁的方式实现函数式接口。 示例:(a, b) -> a + b 替代匿名内部类。 函数式接口(Fu

Redis-扩展

引言 在这篇文章讲解一下 redis 中 其他的知识。 什么是缓存穿透?怎么解决? 缓存穿透的就是指请求一个不存在的数据,缓存层和数据库层都没有这个数据,这种请求会穿透缓存直接到数据库中进行查询。可能会耗尽数据库连接资源造成性能问题。 常用的解决方法有 对请求增加校验机制 缓存空值 或者 特殊值 使

JUC(一)

引言 这篇文章是JUC分类的第一篇文章,我希望大家能够掌握这部分的知识,我们一起来学习吧! 1.学习前需要的知识 1.1 JUC是什么? JUC是java.util.concurrent包的简称,在Java5.0添加,目的就是为了更好的支持高并发任务。让开发者进行多线程编程时减少竞争条件和死锁的问题

ShardingJDBC5.3实现读写分离

引言 这篇文章是在我们配置完mysql的主从之后,才能进行的。关于mysql的主从配置请看我的mysql分类中的文章。 开始 首先我们先基于springboot构建一个项目,这里我就不演示了。就以我的服务douyu-live-user-provider为例子 首先我们在application.yml

Mysql主从不同步问题

引言 在我们的工作之中,可能会遇到一些棘手的问题,比如我这个,mysql主从不同步,让我们赶紧来解决一下吧! 开始 这是我在写自己的项目时遇到的问题,当我在主库添加一条数据时,从库却没有添加,我当时就很懵逼,这是为什么呢?

通用营销抽奖模块简介

引言 营销抽奖模块,是一个学习项目,此项目模块在架构设计上运用了模板模式、责任链模式、组合模式、工厂模式等,这样的设计模式对业务流程进行解耦和实现。 简介 在营销部,抽奖系统的设计会有很多诉求,我们可以把每一种诉求当成一个抽奖策略。 通用营销抽奖模块主要以支撑各类差异化抽奖流程,如;通用抽奖、黑名单

每日算法(四)

242.有效的字母异位词 给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的字母异位词。 示例 1: 输入: s = "anagram", t = "nagaram" 输出: true 示例 2: 输入: s = "rat", t = "car" 输出: false 说明: 你可以

手写MyBatis ORM框架(一)

引言 尝试手写一个MyBatis ORM框架。从中提升自己的编码能力,以及学习优秀的代码编写。 会什么会出现MyBatis这样的ORM框架? 大家都使用过JDBC吧 MyBatis 等 ORM 框架的出现是为了解决 JDBC 在开发效率和工程化层面的诸多痛点。 1. 样板代码冗余 JDBC 问题

手写MyBatis ORM框架(二)

引言 在上一篇里我们学会了如何创建一个接口类的代理对象,并且完成对接口方法的调用处理。这个文章我们先来丰富一下我们的SqlSession,同时对映射器的注册提供注册机处理,满足用户可以在使用的时候提供一个包的路径即可完成扫描和注册。 开始 在这篇文章中,我要创建一个MapperRegistry扫描指

手写MyBatis ORM框架(三)

引言 本篇文章主要是实现解析Mapper.xml文件中的sql语句,在调用执行DAO方法的时候,输出对应DAO配置到Mapper.xml中的SQL语句信息。 实现目标 我们使用了 MapperRegistry 对包路径进行扫描注册映射器,并在 DefaultSqlSession 中进行使用。那么在我

手写MyBatis ORM框架(四)

引言 在上一部分我们完成了解析XML配置的功能,这一部分呢就是把解析的SQL信息放到我们的JDBC中执行,也就是解析我们的数据源配置。这些数据源解析完成之后,就要创建我们的数据源的一个工厂,以及事务工厂进行一个处理。 开始 建立数据源连接池和 JDBC 事务工厂操作,并以 xml 配置数据源信息为入