MyBatis持久层框架详细解读:配置文件实现增删改查操作实战训练
我们为什么使用 MyBatis 开发呢?不难理解,MyBatis 作为一款优秀的持久层框架,支持自定义 sql,存储过程以及高级映射,它几乎免除了所有的 JBDC 代码以及设置参数和获取结果集的工作。解决了使用 JBDC 基础性的代码操作数据库时面临的 Java 代码的硬编码和操作繁琐的问题。
rabbitmq简介以及使用场景
订单系统:用户下单后,订单系统完成持久化处理,将消息写入消息队列,返回用户订单下单成功库存系统:订阅下单的消息,采用拉/推的方式,获取下单信息,库存系统根据下单信息,进行库存操作假如:在下单时库存系统不能正常使用。这个短暂的高峰期积压是没问题的,因为高峰期过了之后,每秒就只有50个请求进入MQ了,但是系统还是按照每秒2000个请求的速度在处理,所以说,只要高峰期一过,系统就会快速将积压的消息消费掉。引入了MQ之后,虽然ABCD系统没出错,但MQ挂了以后,整个系统也会崩溃。以上三个任务完成后,返回给客户端。
高并发下缓存失效的三个问题-穿透、雪崩、击穿
客户端发起一个查询请求的时候,首先去缓存中查询,如果数据在缓存中存在,则直接将缓存中的数据返回给客户端;如果数据在缓存中不存在,则继续查询数据库,如果数据在数据库中存在,则将该数据放入缓存中,并返回给客户端,如果数据在数据库中也不存在,则直接返回null给客户端。
分布式锁-Redisson
Redisson是一个在Redis的基础上实现的Java驻内存数据网格(In-Memory Data Grid)。它不仅提供了一系列的分布式的Java常用对象,还提供了许多分布式服务。
缓存-SpringCache
举个例子:在我们程序中,很多配置数据(例如一个商品信息、一个白名单、一个第三方客户的回调接口),这些数据存在我们的DB上,数据量比较少,但是程序访问很频繁,这种情况下,将数据放一份到我们的内存缓存中将大大提升我们系统的访问效率,因为减少了数据库访问,有可能减少了数据库建连时间、网络数据传输时间、数据库磁盘寻址时间……@Cacheble注解表示这个方法的结果可以被缓存,调用该方法前,会先检查对应的缓存key在缓存中是否已经有值,如果有就直接返回,不调用方法,如果没有,就会调用方法,同时把结果缓存起来。
阿里巴巴sentinel限流
想象一下这样的场景,在某一秒有大量的请求到来,而接下来的几秒则处于空闲状态,我们希望系统能够在接下来的空闲期间逐渐处理这些请求,而不是在第一秒直接拒绝多余的请求。Sentinel 通过限制资源并发线程的数量,来减少不稳定资源对其它资源的影响,当某个资源出现不稳定的情况下,例如响应时间变长,对资源的直接影响就是会造成线程数的逐步堆积。即如果系统在此之前长期处于空闲的状态,我们希望处理请求的数量是缓步的增多,经过预期的时间以后,到达系统处理请求个数的最大值。该字段的值有以下三种选项,分别对应不同的场景。
JAVA 线程实现/创建方式
有返回值的任务必须实现 Callable 接口,类似的,无返回值的任务必须 Runnable 接口。执行 Callable 任务后,可以获取一个 Future 的对象,在该对象上调用 get 就可以获取到 Callable 任务 返回的 Object 了,再结合线程池接口 ExecutorService 就可以实现传说中有返回结果的多线程了。如果自己的类已经 extends 另一个类,就无法直接 extends Thread,此时,可以实现一个 Runnable 接口。
SpringIOC和AOP
2.Spring可以解决企业应用开发的复杂性3.Spring有两个核心部分:IOC、AOP (1)IOC:控制反转,把创建好的对象给Spring进行管理 (2)AOP:面向切面编程,不修改源代码的情况下进行功能增加。
MyBatis 持久层框架详细解读:Mapper代理开发
使用 MyBatis 原生方式开发,部分过程依赖于字符串常量值,存在硬编码的问题,同时使用命令空间和 sql 唯一标识作为执行 sql 的参数,在编写代码时比较麻烦。使用 Mapper 代理的方式具有更多的优势,首先他不依赖于字符串的字面值,会更加的方便和安全。其次,如果你的 IDE 有代码自动补全的功能,那么它可以帮你快速的是选择映射文件的 sql 语句,而不依赖于对应的 id。
MyBatis持久层框架详细解读:MyBatis快速入门篇
JavaEE 企业级 Java 项目中的经典三层架构为表现层,业务层和持久层,使用Java 代码操作数据库属于持久层内容,而 MyBatis 对 JDBC 代码进行了封装,作为一款优秀的持久层框架,专门用于简化JDBC开发。
MySQL基本操作(CRUD)详解
关于SQL的常用操作:CRUD,增加(create),查询(retrieve),更新(update) 以及删除(delete) 已经做了一个硬核的整理,为深入学习sql做了充分的准备。从今天开始,你也是一个会sql的人了!
一文带你吃透数据库的约束,不做CRUD程序员
在SQL标准中,一共规定了6种不同的约束,包括非空约束,唯一约束和检查约束等,而在MySQL中是不支持检查约束的,所以这篇文章先对其余5种约束做一个详解和练习。
【Java编程进阶】常量变量及作用域
变量的概念显然是十分重要的,假定没有变量的概念,要操作数据时,就要使用内存地址,这时显然是效率低的。局部变量和成员变量不同的是,局部变量没有默认值,所以局部变量被声明后,必须经过初始化,才可以使用。
【Java编程进阶】运算符与表达式
计算机诞生的初衷是为了进行数学的运算,Java 作为一门计算机编程语言,同样也提供了用于操纵变量的`运算符`来进行数学运算。我们把用于数据的运算,赋值,比较等的一系列符号称之为运算符。
MySQL单表查询进阶
查询是数据操作至关重要的一部分,比如说在所有商品中查找出价格在规定范围内的所有商品,要想把数据库中的数据在客户端中展示给用户,一般都进行了查询的操作。在实际开发中,我们要根据不同的需求,并且考虑查询的效率来决定怎样进行查询。
今日推荐
周排行