加载中
编程思想 Java中对象的本质

Bruce Eckel 前辈写的《Java编程思想》把问题探讨得非常深入,非常建议同行都学习一下。学习 Java 语言时,老师告诉你 What,自己练习知道 How ,Bruce Eckel 告诉你Why 。 之前已经把后面的...

《2022问》4:MySQL InnoDB 在可重复读(RR)隔离级别下的加锁过程是如何进行的?

MySQL InnoDB 引擎在可重复读(RR)隔离级别下,会有行锁(key lock)和间隙锁(gap lock),他们合称 next-key lock,这也是RR级别下的加锁单位。也就是说,RR级别下,给数据加的锁通常(也...

《2022问》3:为什么 Spring Boot 能够自动加载并使用默认配置(或自定义配置)初始化 starter 组件?

号称几乎零配置的 Spring Boot 早已成为了N多开发者的必备工具了,以至于题目的问题有点像在问“为什么我的刀能砍柴”,那我肯定会毫不客气地回答你“我的刀不仅可以砍柴还能砍盔甲”!它就是...

Spring 的 定时任务 @Scheduled

实现定时任务,Java 提供的 ScheduledExecutorService 是较好的解决方案,它可以自行设置并行任务数量和每个任务的定时执行方式,具体本文不详述。Spring 提供了更简便的定时任务实现方式:注...

《2022问》2:MySQL InnoDB 行锁中的两阶段锁协议是什么样的?

我在《MySQL InnoDB 引擎的死锁、普通的锁冲突等相关问题》一文中说到“在 MySQL 的 InnoDB 中,行锁并不是必须显式声明才存在的”,但是没有细讲,这些基础的概念也是需要了解清楚才能完整看...

MySQL InnoDB 引擎的死锁、普通的锁冲突等相关问题

如果两个及以上的锁出现循环等待锁资源的情况,就会形成死锁。相比于死锁,另一个问题更加常见:普通的锁冲突。 假设线程1需要获取行a的排他锁,但是行a已经存在了一个排他锁,这时线程1是无...

《十个为什么》之六:为什么要有CAP理论?

正如我在《十个为什么》之二:为什么数据库的事务会有四大特性?中所表达的观点:隔离性是指通过牺牲一致性来提高并发性(性能)的行为。 不同的隔离级别会有不一样的一致性,除了最高级别的...

《十个为什么》之五:为什么要有分布式锁?

我在《十个为什么》之三:为什么要有同步线程锁?中讨论了同步线程锁:synchronized,它是多线程不安全的解决办法——简单说就是用它来保证某段代码的串行化执行,避免并发带来的诸多问题。但...

《十个为什么》之四:为什么要有线程池?

顾名思义,线程池就是放着一些线程的容器。Java 在 java.util.concurrent 包下提供了线程池的相关工具。 因为它是提前准备好线程在那放着的,所以当使用线程池来管理多线程时,能够快速使用现...

《十个为什么》之三:为什么要有同步线程锁?

可能有人会觉得,只要我写代码的时候不去开启其他线程,那么就不会有多线程的问题了。 然而事实并非如此,如果仅仅是一些简单的测试代码,确实代码都会顺序执行而不是并发执行,但是Java应用...

《十个为什么》之二:为什么数据库的事务会有四大特性?

众所周知,IT界的学习资料非常广泛,然而,“少则得,多则惑”,对于学习而言,并不是信息来源越多就越好。就比如说,我在很长时间里都把事务的四大特性尤其是其中的一致性理解错了,究其原因...

《十个为什么》之一:为什么要覆写equals方法与hashCode方法?

先不谈覆写 equals 方法、hashCode 方法的用意,你是否发现自己定义的类很少会覆写 equals 方法、hashCode 方法?——这样看来,这似乎是个冷门的无关紧要的知识,但这也是 Java 基础中不能缺...

POJO类中布尔类型的变量,加或不加is前缀的理由是什么?

在阿里的Java开发规范中,有一个不明所以的规定:要求POJO类中布尔类型的变量,都不要加is前缀。理由如下截图(侵删): 这里提到的 isDeleted() 方法,如果是由框架自动生成的,那么看起来像...

MySQL InnoDB 的索引原理概述与设计索引调优简述

MySQL的InnoDB引擎比较常用,了解它的索引原理,才能在设计索引的时候得心应手,轻松应对数据库表的优化。 1、聚集索引 也叫聚簇索引。 1.1、必然会有聚集索引 聚集索引 != 主键索引; 任何表...

基于DDD思想来架构项目

架构一个项目需要考虑的问题非常的多,诸如性能保证、规范的同时方便开发、服务器的成本考虑、部署方式等等,具体要如何选择框架去完成项目的架构,即使是经过了深思熟虑,也总会有未能考虑到...

在MySQL的InnoDB引擎下,悲观锁还能实现预期效果吗?

对悲观锁有所了解的都知道,这是一种先对数据加排他锁,再进行后续更新的操作。但是—— 在MySQL的InnoDB引擎下,读取数据时不会加共享锁,因为它是基于MVCC (Multi-Version Concurrency C...

Spring boot 整合 MyBatis 框架相关问题

1、整合准备 首先是构建自己的 Spring boot 项目,不做赘述,然后加上 MyBatis 的依赖,我用的是 maven 管理项目,所以依赖添加是这样的: org.mybatis.spring.boot...

如何尽可能简单的对接微信支付

如何尽可能简单的对接微信支付 作为一名长时间跟微信支付对接过的程序猿,可以说对微信支付是极为熟悉的了。 微信支付提供如下多种对接方式: 以上截图来自于微信支付对接文档,侵删。 如何选...

SpringBoot 优雅的整合 Shiro

Apache Shiro是一个功能强大且易于使用的Java安全框架,可执行身份验证,授权,加密和会话管理。借助Shiro易于理解的API,您可以快速轻松地保护任何应用程序 - 从最小的移动应用程序到最大的...

JDBC详解

一、相关概念 1.什么是JDBC   JDBC(Java Data Base Connectivity,java数据库连接)是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问,它由一组用Java语言编写的类和接...

没有更多内容

加载失败,请刷新页面

返回顶部
顶部