jvm-基础知识一 类的加载1、类的生命周期总共有7个,分别是:加载:找到class文件,查找并加载类的二进制数据。校验:验证格式、依赖,确保被加载类的正确性。准备:静态字段、方法表,为类的静态变量分配内存,并初始化他们。解析:符号解析为引用,将常量池的符号引用转为直接引用。初始化:构造器、静态代码块、静态你变量赋初值。使用卸载2、类加载要完成的功能通过类的全限定名来获取该类的二进制字节流把二进制字节流转换为方法区的运行时数据结构。在堆上创建java.lang.C
java-二叉树(code) 二叉树的通用接口public interface ITree<E> { public int size();// public boolean isEmpty(); public void clear(); public void add(E element); public void remove(E element); public...
spring cloud-Eureka 服务发现 Cap理论介绍CAP原则又称CAP定理,指的是在分布式系统的设计中,没有一种设计可以同时满足 Consistency(一致性)、 Availability(可用性)、Partition tolerance(分区容错性)3个特性,这三者不可得兼。分布式系统的cap理论一致性(C):在分布式系统中的所有数据备份,在同一时刻是否同样的值。(等同于所有节点访问同一份最新的数据副本)可用性(A):在...
sql-基础三 数据库调优1、选择合适的dbms2、优化表的设计(1) 表结构要尽量遵循第三范式的原则(关于第三范式,我在后面章节会讲)。这样可以让数据结构更加清 晰规范,减少冗余字段,同时也减少了在更新,插入和删除数据时等异常情况的发生。 (2)如果分析查询应用比较多,尤其是需要进行多表联查的时候,可以采用反范式进行优化。反范式采用空 间换时间的方式,通过增加冗余字段提高查询的效率。 (3)表字段的数据类...
sql-基础二 sql92标准表的连接笛卡尔积:笛卡尔乘积是一个数学运算。假设我有两个集合X和Y,那么X和Y的笛卡尔积就是X和Y的所有可能组合,也 就是第一个对象来自于X,第二个对象来自于Y的所有可能。SELECT * FROM player, team笛卡尔积也称为交叉连接,英文是CROSS JOIN,它的作用就是可以把任意表进行连接,即使这两张表不相 关。但我们通常进行连接还是需要筛选的,因此需要...
sql-基础一 DDL中文是数据定义语言,它定义了数据库的结构和数据表的结构,在ddl中我们常用的功能就是增删改查,分别对应的命令create、alter、drop,需要注意的是在ddl中不需要commit。1、对数据库进行定义create database nba;//创建一个数据库drop database nba;//删除一个数据库2、对数据表进行定义create table table_nam...
spring设计模式-单例模式 单例模式:是指确保一个类在任何情况下都绝对只有一个实例,并提供一个全局访问点。单例模式是创建型模式懒汉式单例模式:在类加载的时候就立即初始化,并且创建为单例对象,它绝对线程安全,线程还没出现的时候就实例化了不可能存在访问安全问题。优点:没有加任何锁,执行效率比较高,用户体验比懒汉式单例模式更好缺点:类加载的时候就初始化,不管用不用都占着空间,浪费了内存。饿汉式:public cl...
mysql-索引(续) 查询过程:执行查询的语句是 select id from T where k=5。这个查询语句在索引树上查找的过程,先是通过 B+ 树从树根开始,按层搜索到叶子节点,也就是图中右下角的这个数据页,然后可以认为数据页内部通过二分法来定位记录。对于普通索引来说,查找到满足条件的第一个记录 (5,500) 后,需要查找下一个记录,直到碰到第一个不满足 k=5 条件的记录。对于唯一索引来说,由于...
mysql-事务隔离 在mysql里有两个视图的概念一个是view,他是一个用查询语句定义的虚拟表,在调用的时候,执行查询语句并生成结果,创建视图的语法是create view。。,查询方法和表一样。另一个是Innodb在实现mvcc时用到的一致性视图,即 consistent read view,用于支持 RC(Read Committed,读提交)和 RR(Repeatable Read,可重复读)隔离级别...
mysql-锁 锁mysql的锁根据锁的范围来划分分为全局锁、表锁、行锁。全局锁顾名思义:就是对整个数据库的实例加锁,mysql提供了一个全局加锁的功能,命令是FLUSH TABLES WITH RED LOCK(ftwrl),当你使用整个库使用只读的时候,可以加这个锁,之后其他线程的以下语句会被阻塞:数据更新语句(数据的增删改)、数据定义语句(包括建表、修改表结构等)和更新类事务的提交语句。使用场景:做...
mysql-索引 索引目的:为了提高数据库的查询速度,就像书的目录一样。索引的常见模型:哈希表:哈希表是一种以键 - 值(key-value)存储数据的结构,我们只要输入待查找的值即 key,就可以找到其对应的值即 Value。哈希的思路很简单,把值放在数组里,用一个哈希函数把 key 换算成一个确定的位置,然后把 value 放在数组的这个位置。解决哈希冲突的办法:链表法适用场景:哈希表这种结构适用于只...
mysql-事务 事务简单来说,事务就是保证一组数据库的操作要么全部成功,要么全部失败,在mysql中事务是引擎层实现的。事务的四大特性隔离性当数据库中多个事务同时提交的时候,可能会出现不可重复读、脏读、幻读等问题。隔离级别:当隔离的越严实,效率就越低,因此需要找一个平衡点。sql标准事务的隔离级别:读未提交、读提交、可重复读、串行。读未提交:一个事务还没提交的时候,它的变更可能被别的事务看到。...
mysql-基础架构 一、基础架构mysql:分为存储层和server层server层包括连接器,查询缓存、分析器、优化器、执行器等,覆盖了大多数mysql的功能,以及所有的内置函数,所有跨存储引擎的功能都在这一层实现,比如存储过程、触发器、存储函数等。存储层:负责数据的存储和提取,其架构模式是插件式的,支持 InnoDB、MyISAM、Memory 等多个存储引擎。mysql5.6以后默认存储引擎是InnoDB...
spring 常用的设计模式-工厂模式 简单工厂模式是指由一个工厂对象决定创建哪一种产品类的实例。简单工厂模式适用于工厂类负责创建对象较少的场景,客户端只需要传入工厂类的参数,对于如何创建对象不需要关心。public interface ICourse { void recourd();}public class JavaCourse implements ICourse { public JavaCourse(...
Redis-数据结构 Redis数据结构redis的数据结构有5种,分别为string(字符串)、set(集合)、zset(有序集合)、hash(哈希)、list(列表)。1.string 字符串字符串string是redis最简单的数据结构,redis的数据结构都是以唯一的key作为字符串名称,然后通过唯一的key获取不同的value值,不同类型的数据结构的差异就在于value的结构不一样。字符串的用途非常广泛...
算法与数据结构-排序(2) 归并排序如果要排序一个数组,我们先把数组从中间分成前后两部分,然后对前后两部分分别排序,再将排好序的两部分合并在一起,这样整个数组就都有序了。public static void merger(int[] a,int left,int mid,int right) { int[] temp=new int[a.length]; int p1=left,p2=mid+1,k=left;...
算法与数据结构-排序(1) 有序度有序度是数组中具有有序关系的元素对的个数。有序元素对用数学表达式表示就是这样:有序元素对:a[i] <= a[j], 如果 i < j。满有序度对于一个完全有序的数组,比如 1,2,3,4,5,6,有序度就是n*(n-1)/2逆有序度逆序度 = 满有序度 - 有序度。我们排序的过程就是一种增加有序度,减少逆序度的过程,最后达到满有序度,就说明排序完成了。冒泡时间复杂...
算法与数据结构-递归 题目走n个台阶,每次可以走一步或者两步,有多少钟走法递归公式f(1) = 1;f(2) = 2;f(n) = f(n-1)+f(n-2)代码实现int f(int n){if(n1) return 1;if(n2) return 2;return f(n-1)+f(n-2);}满足递归的三个条件一个问题的解可以分解为几个子问题的解这个问题与分解之后的子问题,除了数据规...
算法与数据结构-链表 链表底层存储结构数组需要一块连续的内存空间来存储,对内存的要求比较高。如果我们申请一个 100MB 大小的数组,当内存中没有连续的、足够大的存储空间时,即便内存的剩余总可用空间大于 100MB,仍然会申请失败。而链表恰恰相反,它并不需要一块连续的内存空间,它通过“指针”将一组零散的内存块串联起来使用。单链表我们把内存块称为链表的“结点”。为了将所有的结点串起来,每个链表的结点除了存储数据...
算法与数据结构-队列 队列特点先进先出入队 enqueue(),放一个数据到队列尾部;出队 dequeue(),从队列头部取一个元素。用数组实现的队列叫作顺序队列,用链表实现的队列,叫作链式队列。Demo注意:这个Demo里边的Array是数组篇中的Array引用。package com.wanda.array;import com.wanda.interfaces.Queue;public cl...