【MySQL实战45讲】日志系统

在 之前系统的了解了一个查询语句的执行流程,并介绍了执行过程中涉及的处理模块。一条 SQL 语句的执行过程一般是经过 连接器分析器优化器执行器 等功能模块,最后到达存储引擎。

这篇文章主要介绍一条更新语句的执行流程。


【MySQL实战45讲】索引部分整理

为什么要有索引?索引的作用是什么?

索引的出现其实就是为了提高数据查询的效率,就像书的目录一样。一本书我们可以通过目录中快速的定位其中的某一个知识点;对于数据库而言索引其实就是它的目录,可以通过索引快速的定位都某一条或多条记录。


为什么StringBuilder是线程不安全的?StringBuffer是线程安全的?

面试中经常问到的一个问题:StringBuilderStringBuffer的区别是什么?
我们非常自信的说出:StringBuilder是线程不安全的,StirngBuffer是线程安全的
面试官:StringBuilder不安全的点在哪儿?
这时候估计就哑巴了。。。


当执行一条查询语句时,MySQL内部经历了什么?

假如说我们有一张表 T ,表里只有一个字段 ID,当我们执行下边这条SQL语句时:

1
mysql> select * fron T where ID=10;


Java实践-远程调用Shell脚本并获取输出信息

1、添加依赖

1
2
3
4
5
6
7
8
9
10
<dependency>
<groupId>ch.ethz.ganymed</groupId>
<artifactId>ganymed-ssh2</artifactId>
<version>262</version>
</dependency>
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
<version>2.6</version>
</dependency>

浅谈关于SQL优化的思路

零、为什么要优化

  • 系统的吞吐量瓶颈往往出现在数据库的访问速度上
  • 随着应用程序的运行,数据库的中的数据会越来越多,处理时间会相应变慢
  • 数据是存放在磁盘上的,读写速度无法和内存相比

Docker搭建Zookeeper&Kafka集群

前排提示:最新的docker-compole.yml请去github获取,README有相应的操作步骤。
Github地址:https://github.com/JacianLiu/docker-compose

最近在学习Kafka,准备测试集群状态的时候感觉无论是开三台虚拟机或者在一台虚拟机开辟三个不同的端口号都太麻烦了(嗯。。主要是懒)。


链表

开篇问题

问题:如何用链表来实现 LRU 缓存淘汰策略呢?

链表的作用

链表一个经典的应用场景就是LRU缓存淘汰算法;

缓存是一种提高数据读取性能的技术,在开发中有着非常广泛的应用,由于缓存的大小有限,当缓存被占满时,哪些数据应该被清理,哪些数据应该被保留?这就需要淘汰策略来决定,常见的淘汰策略有三种:先进先出策略FIFO(First In, First Out)、最少使用策略LFU(Least Frequently Used)、最近最少使用策略LRU(Least Recently Used)。

打个比方:假如说你买了很多书籍,但有一天发现书太多了,太占空间,你要做个大扫除。那么这个时候你会选择扔掉哪些书籍?对应一下,其实就是我们上边说的三种策略;


记录一次由于线程使用不当引发的血案

背景

最近给第三方做了一个接口,接口的作用是接收数据对数据进行验证之后通过kafka推送到模型进行数据处理,最终通过kafka接收模型的数据,开始只做了一个异步的接口,由于对方业务原因需要一个同步的接口传输数据,但是每当运行一段时间之后程序就会进入假死状态,接口无法正常调用;


数组

问题:为什么数组下标是从0开始,而不是从1开始;

什么是数组?

数组是一种线性表数据结构,它用一组连续的内存空间来存储一组相同类型的数据


Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×