理解事务的4种隔离级别[转载+备注]
这是一篇关于数据库事务隔离级别的文章,通俗易懂,此文为我转载,我添加了一些个人理解。 数据库事务的隔离级别有4种,由低到高分别为 Read uncommitted →Read committed →Repeatable read →Serializable 在事务的并发操作中可能会出现脏读,不可重复读,幻读。 下面通过事例一一阐述它们的概念与联系。
这是一篇关于数据库事务隔离级别的文章,通俗易懂,此文为我转载,我添加了一些个人理解。 数据库事务的隔离级别有4种,由低到高分别为 Read uncommitted →Read committed →Repeatable read →Serializable 在事务的并发操作中可能会出现脏读,不可重复读,幻读。 下面通过事例一一阐述它们的概念与联系。
本文是堆JVM的一些拾遗!
左边是线程共享的部分:方法区和堆
右边是线程独有的部分:虚拟机栈,本地方法栈,线程计数器
为公司写的IM
利用的是WebSocket
来实现的,那么为什么要采取WebSocket
而不是HTTP
或者TCP
了?
Redis 中使用 lua 脚本编写的任务,可以将保证其执行任务的原子性,这里我整理了 3 个常用的lua
脚本。
kotlin
中有一个非常有意思的关键字lazy
,表示该变量会在被使用的时候,才会加载,我思考下了,这样可以代码如下几个好处。
Java8引入的CompletableFuture
是一个非常非常好用的类库,可以方便的通过它进行多个异步任务的各类花式组合。
关于这个部分,很多博客和文章都有讲到,这篇短文,主要是分别一点:get
和thenAccept
的区别。
通常项目中,都会有一些在某时某刻做某些事情的操作,比如
在集群环境下,上述的部分任务应该是互斥的,比如每天凌晨生成报表,只需要1个应用来做就可以了,其他的应用不需要同时做。针对这个需求,SpringBoot
内置的定时调度是无法完成的,需要自己实现或者引入第三方来完成。
一个企业级的项目,权限系统是必不可少的,Java中Spring Security
和Shiro
都是非常不错的选择,但是经过技术调研和需求调研,发现这2者都不能够100%的满足我们的需求,同时也没有想象中的轻量。
没有轮子或者轮子不好,那我们就来造一个轮子吧。
Websocket
的协议分为未加密版本ws
和加密版本wss
,线上的产品为了安全,建议使用wss
。
当前的IM
是第一版的单机部署
,并且流量都是通过SLB
转发的到某一台固定的服务器,同时该服务器上还部署了一个Nginx
来进行流量转发。
Client → SLB → Nginx → WB-Server
上一篇提到了,根据 Netty 来将 HTTP 升级为 WebSocket 协议,并且通过心跳机制来关闭因为各类操作导致的连接未关闭的问题 。
这一篇是核心内容,我们将通过WebSocket 进行聊天。
本篇内容的示例源码还是通过kotlin
编写,继续给大家安利 kotlin
Java8
对于Map
新增了 几个非常有用的API
,这里我着重强调下如下 2 个:
computeIfPresent
:当key 映射的value 不存在的时候,如何生成 valuecomputeIfAbsent
:当 key 映射的 value 存在的时候,如何处理 value分别对应的是 key 对应的 value 存在或者不存在时候的逻辑,用的好可以减少代码行数,逻辑表述更清晰。
最近因为公司业务扩张缘故,今天新增了一台服务器,购买ECS
的过程中,虽然一再小心,但是还是出现了一些问题,这里简单做一个记录,给自己加深印象,让自己下次不再犯错。
上结论:新手买阿里云的资源,全部统一在同一个的地域的,同一个区,采用其默认网络、默认交换机配置,这样最简单。
最近用 kotlin
写业务代码,福至心灵的又优化了一个写法,同时也再次加深了return
的一个小技巧。
再感慨一句:kotlin
真香...
本文通过简单总结了构造函数的通用用法,以及对应的最佳实践。