- 博客(12)
- 资源 (5)
- 收藏
- 关注
原创 单机部署TiDB测试集群
初始化环境最小化安装操作系统,官方建议版本为 CentOS 7.3 及以上,这里的版本为:[root@localhost ~]# cat /etc/redhat-release CentOS Linux release 7.8.2003 (Core)[root@localhost ~]# uname -r3.10.0-1127.el7.x86_64内存至少为4G,否认有可能会出现集群启动失败的情况。使用以下脚本初始化环境:[root@localhost ~]# vi tidb-init.
2021-02-18 11:51:27
520
原创 Oracle等待事件之buffer busy waits
产生原因官方定义:This wait happens when a session wants to access a database block in the buffer cache but it cannot as the buffer is “busy”. The two main cases where this can occur are:Another session is reading the block into the bufferAnother session hold
2021-02-10 11:50:37
252
2
原创 表连接方法
Oracle表连接方法有四种:排序合并连接(Sort Merge Join)嵌套循环连接(Nested Loops Join)哈希连接(Hash Join)笛卡尔积(Cartesian Product)排序合并连接(Sort Merge Join)排序合并连接是将连接的两个表使用连接列排序后,对排序后的结果集进行合并后再得到匹配记录。如果连接列上面有索引,可以避免排序,那么优化器就有可能会选择排序合并连接。可以用于=,>,>=,<,<=连接条件,不适用
2021-02-09 10:22:57
583
原创 分析函数
概念官方定义:Analytic functions compute an aggregate value based on a group of rows. They differ from aggregate functions in that they return multiple rows for each group. The group of rows is called a window and is defined by the analytic_clause. For each ro
2021-02-08 10:05:40
288
原创 外键与死锁
要分析外键无索引可能会导致死锁问题,需要先了解Oracle的几种表锁,参考官方文档:A table lock, also called a TM lock, is acquired by a transaction when a table is modified by an INSERT, UPDATE, DELETE, MERGE, SELECT with the FOR UPDATE clause, or LOCK TABLE statement. DML operations require
2021-02-07 22:30:22
554
原创 链表
链表由结点组成,每个结点除了保存自身的数据,还需要有指向其他结点的指针。与数组相比,链表在物理存储上是不连续的,不能通过下标进行随机访问来获取元素。但是链表可以很容易的通过调整指针的指向实现增加和删除结点。按指针的指向,链表分为:单向链表双向链表单向链表单向链表的结点只有一个指向下一个结点的指针。先创建一个结点对象,包含一个指针属性next:public class Node { private int data; private Node next; publ
2021-02-05 13:46:51
89
原创 稀疏数组
对于一个数组,如果大部分元素都是0或者其他相同的值,只有少数不同的值时,就可以将这个数组转换稀疏数组来存储,从而缩小数组的规模,实现类似于压缩的功能。转换为稀疏数组以常见的二维数组转换为稀疏数组来举例,具体步骤如下:遍历源数组,获取有效数据的个数,保存到变量sum中。创建稀疏数组,行数为sum+1,列数为3列,第一行的三个元素分别为源数组行数,列数以及sum,后面每一行分别为有效数据在源数组中的位置以及值。public static int[][] arrayToSparseArray(int
2021-02-01 14:40:52
57
原创 Edition-Based Redefinition
Oracle在11g引入了Edition-Based Redefinition(EBR),主要是为了解决在更新数据库对象,比如PL/SQL程序,视图等,如果该对象被锁住了,会导致更新必须等待,如果要使更新立即完成,则需要停止应用的问题。实现方式就是通过创建版本,新的代码在子版本实现,通过指定版本来对新旧版本代码进行切换。这个功能主要用在有大量PL/SQL程序的数据库,例如Oracle EBS数据库。EBR通过版本化的方式可实现以下目标:代码的改变,包括PL/SQL,表定义等,安装在子(新)版本中
2021-01-29 11:43:42
487
原创 数组
Java 语言中提供的数组是用来存储固定大小的同类型元素 。可以通过下标对数组元素进行随机访问。由于数组大小固定,故增加和删除元素时需要创建一个新的数组,移动原数组到新数组,时间复杂度为O(n)。初始化动态初始化:int[] arr = new int[3];arr[0] = 10;arr[1] = 20;arr[2] = 30;静态初始化:int[] arr = new int[] {1,2,3,4,5};长度由于数组长度是固定的,直接使用length获取数组长度:public
2021-01-27 10:06:47
80
原创 设计模式三:建造者模式
什么是建造者模式官方的定义: 将一个复杂对象的构建与其表示分离,使得同样的构建过程可以创建不同的表示 。在实际工作中,用得较多的情况是初始化一个有很多属性的对象,而这些属性有的是必须的,有的是可选的。如果不使用建造者模式,要么需要创建较多的构造方法,要么调用多个setter方法。实现方式Product:具体的产品对象。Builder: 建造者的抽象基类(有时会使用接口代替)。其定义了构建Product的抽象步骤,其实体类需要实现这些步骤。其会包含一个用来返回最终产品的方法Product ge
2021-01-26 10:13:17
59
原创 设计模式二:工厂模式
什么是工厂模式大家在开发中应该都使用过或者看到过SqlSessionFactory或者BeanFactory,这就是使用工厂模式来生产对象。工厂模式用于封装和管理对象的创建,分离对象的创建者和调用者,实现与对象解耦的目的。工厂模式可以分为:简单工厂工厂方法抽象工厂实现方式简单工厂简单工厂通过接收的参数的不同来返回不同的对象实例,涉及到的角色有:抽象产品具体产品具体工厂调用者代码如下:// 抽象产品public interface Car { void run()
2021-01-22 17:31:33
293
原创 设计模式一:单例模式
什么是单例模式单例模式是指系统中的某个类只能有一个对象实例。为了保证类只能有一个对象实例,那么就不能在外部使用new关键字来进行实例化,这样就必须将这个类的构造方法私有化。单例模式的写法有多种:饿汉式懒汉式(线程不安全)懒汉式(线程安全)双重检查静态内部类枚举其中懒汉式和双重检查由于效率问题,很少使用。实现方式饿汉式实际工作中使用最多的就是饿汉式,代码如下:public class SingletonHunger { // 定义一个静态变量来存储创
2021-01-21 16:26:34
140
2
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人