Bruce Eckel 前辈写的《Java编程思想》把问题探讨得非常深入,非常建议同行都学习一下。学习 Java 语言时,老师告诉你 What,自己练习知道 How ,Bruce Eckel 告诉你Why 。 之前已经把后面的...
号称几乎零配置的 Spring Boot 早已成为了N多开发者的必备工具了,以至于题目的问题有点像在问“为什么我的刀能砍柴”,那我肯定会毫不客气地回答你“我的刀不仅可以砍柴还能砍盔甲”!它就是...
实现定时任务,Java 提供的 ScheduledExecutorService 是较好的解决方案,它可以自行设置并行任务数量和每个任务的定时执行方式,具体本文不详述。Spring 提供了更简便的定时任务实现方式:注...
我在《MySQL InnoDB 引擎的死锁、普通的锁冲突等相关问题》一文中说到“在 MySQL 的 InnoDB 中,行锁并不是必须显式声明才存在的”,但是没有细讲,这些基础的概念也是需要了解清楚才能完整看...
如果两个及以上的锁出现循环等待锁资源的情况,就会形成死锁。相比于死锁,另一个问题更加常见:普通的锁冲突。 假设线程1需要获取行a的排他锁,但是行a已经存在了一个排他锁,这时线程1是无...
正如我在《十个为什么》之二:为什么数据库的事务会有四大特性?中所表达的观点:隔离性是指通过牺牲一致性来提高并发性(性能)的行为。 不同的隔离级别会有不一样的一致性,除了最高级别的...
我在《十个为什么》之三:为什么要有同步线程锁?中讨论了同步线程锁:synchronized,它是多线程不安全的解决办法——简单说就是用它来保证某段代码的串行化执行,避免并发带来的诸多问题。但...
顾名思义,线程池就是放着一些线程的容器。Java 在 java.util.concurrent 包下提供了线程池的相关工具。 因为它是提前准备好线程在那放着的,所以当使用线程池来管理多线程时,能够快速使用现...
可能有人会觉得,只要我写代码的时候不去开启其他线程,那么就不会有多线程的问题了。 然而事实并非如此,如果仅仅是一些简单的测试代码,确实代码都会顺序执行而不是并发执行,但是Java应用...
先不谈覆写 equals 方法、hashCode 方法的用意,你是否发现自己定义的类很少会覆写 equals 方法、hashCode 方法?——这样看来,这似乎是个冷门的无关紧要的知识,但这也是 Java 基础中不能缺...
在阿里的Java开发规范中,有一个不明所以的规定:要求POJO类中布尔类型的变量,都不要加is前缀。理由如下截图(侵删): 这里提到的 isDeleted() 方法,如果是由框架自动生成的,那么看起来像...
架构一个项目需要考虑的问题非常的多,诸如性能保证、规范的同时方便开发、服务器的成本考虑、部署方式等等,具体要如何选择框架去完成项目的架构,即使是经过了深思熟虑,也总会有未能考虑到...
对悲观锁有所了解的都知道,这是一种先对数据加排他锁,再进行后续更新的操作。但是—— 在MySQL的InnoDB引擎下,读取数据时不会加共享锁,因为它是基于MVCC (Multi-Version Concurrency C...
1、整合准备 首先是构建自己的 Spring boot 项目,不做赘述,然后加上 MyBatis 的依赖,我用的是 maven 管理项目,所以依赖添加是这样的: org.mybatis.spring.boot...
如何尽可能简单的对接微信支付 作为一名长时间跟微信支付对接过的程序猿,可以说对微信支付是极为熟悉的了。 微信支付提供如下多种对接方式: 以上截图来自于微信支付对接文档,侵删。 如何选...
Apache Shiro是一个功能强大且易于使用的Java安全框架,可执行身份验证,授权,加密和会话管理。借助Shiro易于理解的API,您可以快速轻松地保护任何应用程序 - 从最小的移动应用程序到最大的...
没有更多内容
加载失败,请刷新页面
文章删除后无法恢复,确定删除此文章吗?
动弹删除后,数据将无法恢复
评论删除后,数据将无法恢复