开始事务支持
1 |
1 | @EnableTransactionManagement |
1 | #master |
默认已经安装好Docker
1 | docker run -d --name ch-server --ulimit nofile=262144:262144 -p 8123:8123 -p 9000:9000 -p 9009:9009 yandex/clickhouse-server |
1 | 1. jps 显示java进程,PS: Docker容器部署通过这个命令看是不准确的,最好可以通过启动日志查看服务状态。 |
配置最大堆内存大小,设置oom日志;
用了这么多年的开源软件,第一次回报开源《spring-boot-easy-connection-pool》。有些朋友可能觉得这个不是很有必要开源,
但是可以简化别人实现逻辑的开发成本,以一个优雅的方式解决问题,为什么不能开源呢?
1 | <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource" |
事务是什么?事务是一个独立的工作单元。
ACID-原子性(atomicity),一致性(consistency),隔离性(isolation),持久性(durability)。这些概念我是读《高性能MySQL》这本书的时候重温的,加深我对MySQL理解的还有个MVCC的概念。以及存储引擎和数据存储数据结构B+Tree等内容,了解数据库底层实现数据结构有助于理解SQL的一些特性。例如,索引的最左原则。
在常见的应用开发过程中手动操作线程的场景并不是很多,特别是框架满天飞的今天。虽然和常见的业务处理相比手动使用多线程的场景不多,虽然不多但总是有的。线程的开销主要花费在创建和销毁的过程,所以考虑到线程的复用问题。如果要基于这个目标,自定义一个线程池需要考虑哪些问题?拍脑袋的想法是维护一定数量的线程保持着不被回收,有任务需要处理的时候找个空闲的线程去执行,执行完成后不销毁继续保持空闲存活状态。基于这个想法先尝试着弄个简单的线程池玩一下:
今天梳理了下单点登录,这个很早之前有接触过。单点登录的方案有很多,不同的方案也有不同的用户体验,最终实现的是集中管理登录,登录状态在所有允许的系统中通用。
最简单的是所有系统都在同源<协议://域名{子域名}:端口>,直接通过cookie就可以解决。非同源的常见方案有用地址栏加token实现,有过通过域名转发映射解决的、也有通过部署多套系统解决的😂。
兴起之下想看下阿里巴巴他们SSO是怎么玩的。
常见的有懒汉式和饿汉式两种,这两种模式懒汉和饿汉指的是何时在堆内存中为实例开辟内存空间而不是说通过什么形式或数据结构来创建和声明对象。如果是
在声明对象的时候直接实例化分配内存空间了这种是饿汉式,无论是通过static{}静态代码块还是通过static静态属性,都是在类加载阶段中的准备阶段去创建的。
对应的懒汉式对象的实例化分配内存空间无论是通过静态内部类还是通过加锁双重验证还是通过静态内部类,都是在获取具体实例的时候进行内存空间分配。下面是实现:
HashMap是将key做hash算法,然后将hash值映射到内存地址,直接获取key所对应的数据。HashMap中数据存储的结构是数组+链表,链表是为了解决hash碰撞问题。HashMap为什么快?主要是以下三点:
负载因子又叫填充比,是一个介于0和1之间的浮点数,他决定了HashMap在扩容之前内部数组的填充度。默认HashMap初始大小16,负载因子0.75;
负载因子=元素个数/内部数组总数