王文伟
王文伟
schema定义了表、每个表的字段,还有表和字段之间的关系。 catalog是由一个数据库实例的元数据组成的,包括基本表,同义词,索引,用户等等。 information_schema数据库是MySQL自带的,它提供了访问数据库元数据的方式。什么是元数据呢?元数据是关于数据的数据,如数据库名或表名,列的数据类型,或访问权限等。有些时候用于表述该信息的其他术语包括“数据词典”和“系统目录”。 在 MySQL中,把 information_schema 看作是一个数据库,确切说是信息数据库。其中保存着关于MySQL服务器所维护的所有其他数据库的信息。如数据库名,数据库的表,表栏的数据类型与访问权限等。在INFORMATION_SCHEMA中,有数个只读表。它们实际上是视图,而不是基本表,因此,你将无法看到与之相关的任何文件。 information_schema数据库表说明: SCHEMATA表:提供了当前mysql实例中所有数据库的信息。是show databases的结果取之此表。 TABLES表:提供了关于数据库中的表的信息(包括视图)。详细表述了某个表属于哪个schema,表类型,表引擎,创建时间等信息。是show tables from schemaname的结果取之此表。 COLUMNS表:提供了表中的列信息。详细表述了某张表的所有列以及每个列的信息。是show columns from schemaname.tablename的结果取之此表。 STATISTICS表:提供了关于表索引的信息。是show index from schemaname.tablename的结果取之此表。 USER_PRIVILEGES(用户权限)表:给出了关于全程权限的信息。该信息源自mysql.user授权表。是非标准表。 SCHEMA_PRIVILEGES(方案权限)表:给出了关于方案(数据库)权限的信息。该信息来自mysql.db授权表。是非标准表。 TABLE_PRIVILEGES(表权限)表:给出了关于表权限的信息。该信息源自mysql.tables_priv授权表。是非标准表。 COLUMN_PRIVILEGES(列权限)表:给出了关于列权限的信息。该信息源自mysql.columns_priv授权表。是非标准表。 CHARACTER_SETS(字符集)表:提供了mysql实例可用字符集的信息。是SHOW CHARACTER SET结果集取之此表。 COLLATIONS表:提供了关于各字符集的对照信息。...
# Optional 创建Optional实例(以下都是静态方法): - Optional.of(T) 创建指定引用的Optional实例,若引用为null则快速失败 - Optional.absent() 创建引用缺失的Optional实例 - Optional.fromNullable(T) 创建指定引用的Optional实例,若引用为null则表示缺失 用Optional实例查询引用(以下都是非静态方法): - boolean isPresent() 如果Optional包含非null的引用(引用存在),返回true - T get() 返回Optional所包含的引用,若引用缺失,则抛出java.lang.IllegalStateException - T or(T) 返回Optional所包含的引用,若引用缺失,返回指定的值 - T orNull() 返回Optional所包含的引用,若引用缺失,返回null -...
想刷的清单: 1,2,10,13,15,17,20,23,25,26,28,33,38,43,44,49,50,56,57,67,68,69,71,75,76 78,79,80,85,88,90,91,98,102,117,121,125,127,128,133,139,146,157,158,161 168,173,200,206,208,209,210,211,215,218,221,234,235,236,238,252,253,257 261,265,269,273,274,275,277,278,282,283,285,286,297,301,311,314,325,334 341,377,380,398,404,410,461,477,494,523,525,534,535,543,554 1. Two Sum > 地址:https://leetcode.com/problems/two-sum/description/ > 问题:Given an array of integers, return indices of the two numbers such that they add up to a...
TreeNode类似一颗红黑树 看下普通treeMap https://juejin.im/post/5a0658f76fb9a04523415a8d 基本结构: ``` static final class TreeNode extends LinkedHashMap.Entry { //父节点 TreeNode parent; // red-black tree links //左右 TreeNode left; TreeNode right; TreeNode prev; // needed to unlink...
- HashMap的底层主要是基于数组和链表来实现的,它之所以有相当快的查询速度主要是因为它是通过计算散列码来决定存储的位置。HashMap中主要是通过key的hashCode来计算hash值的,只要hashCode相同,计算出来的hash值就一样。如果存储的对象对多了,就有可能不同的对象所算出来的hash值是相同的,这就出现了所谓的hash冲突。学过数据结构的同学都知道,解决hash冲突的方法有很多,HashMap底层是通过链表来解决hash冲突的。 - JDK1.6中HashMap采用的是位桶+链表的方式,即我们常说的散列链表的方式,而JDK1.8中采用的是位桶+链表/红黑树的方式,也是非线程安全的。当某个位桶的链表的长度达到某个阀值的时候,这个链表就将转换成红黑树。也就是说原来如果hash不理想,所有都落入同一个桶就变成的单链表,现在只要大于8个在同一个桶里面,就会转化为红黑树,提升效率。 - 原来jdk1.7中resize是通过链表头插入的,jdk1.8是通过链表尾插入。可能有人会觉得1.7这样会更快,但是这样容易产生hash碰撞。如果它知道我们用的是哈希算法,它可能会发送大量的请求,导致产生严重的哈希碰撞。然后不停的访问这些 key就能显著的影响服务器的性能,这样就形成了一次拒绝服务攻击(DoS)  ``` public class HashMap extends AbstractMap implements Map, Cloneable, Serializable{ //默认初始化容量,HashMap容量必须是2的幂次方 static final int DEFAULT_INITIAL_CAPACITY = 1 >> 2; n |= n...
# netty3.x **入门** ``` java public void run() { // Configure the server. ServerBootstrap bootstrap = new ServerBootstrap( new NioServerSocketChannelFactory( Executors.newCachedThreadPool(), Executors.newCachedThreadPool())); // Set up the pipeline factory. bootstrap.setPipelineFactory(new ChannelPipelineFactory()...
 解析阶段并不是一定的:Java的运行时绑定(动态绑定)。 初始化: 1.new、getstatic、putstatic、invokestatic这四条字节码指令(new实例化对象、读取或者设置一个静态字段、调用一个类的静态方法) 2. java.lang.reflect反射 3.初始化一个类,父类也初始化。但是一个接口初始化时,并不要求父类接口全部完成初始化,真正使用父接口才会初始化 4.虚拟机启动的时候,主类 5.java.lang.invoke.MethodHandle实例最后解析结果REF_getStatic、REF_putStatic、REF_invokeStatic方法句柄 ``` public class SuperClass { static{ System.out.println("SuperClass init!"); } public static int value = 100; } public class SubClass extends SuperClass{...
**CAP** > CAP由Eric Brewer在2000年PODC会议上提出[1][2],是Eric Brewer在Inktomi[3]期间研发搜索引擎、分布式web缓存时得出的关于数据一致性(consistency)、服务可用性(availability)、分区容错性(partition-tolerance)的猜想: - 数据一致性(consistency):如果系统对一个写操作返回成功,那么之后的读请求都必须读到这个新数据;如果返回失败,那么所有读操作都不能读到这个数据,对调用者而言数据具有强一致性(strong consistency) (又叫原子性 atomic、线性一致性 linearizable consistency)[5] - 服务可用性(availability):所有读写请求在一定时间内得到响应,可终止、不会一直等待 - 分区容错性(partition-tolerance):在网络分区的情况下,被分隔的节点仍能正常对外服务 在某时刻如果满足AP,分隔的节点同时对外服务但不能相互通信,将导致状态不一致,即不能满足C;如果满足CP,网络分区的情况下为达成C,请求只能一直等待,即不满足A;如果要满足CA,在一定时间内要达到节点状态一致,要求不能出现网络分区,则不能满足P。 C、A、P三者最多只能满足其中两个,和FLP定理一样,CAP定理也指示了一个不可达的结果(impossibility result)。 在满足分区容错的前提下,没有算法能同时满足数据一致性和服务可用性[11]: P 是必选项,那3选2的选择题不就变成数据一致性(consistency)、服务可用性(availability) 2选1?工程实践中一致性有不同程度,可用性也有不同等级,在保证分区容错性的前提下,放宽约束后可以兼顾一致性和可用性,两者不是非此即彼[12]。 - 序列一致性(sequential consistency)[13]:不要求时序一致,A操作先于B操作,在B操作后如果所有调用端读操作得到A操作的结果,满足序列一致性 - 最终一致性(eventual consistency)[14]:放宽对时间的要求,在被调完成操作响应后的某个时间点,被调多个节点的数据最终达成一致 可用性在CAP定理里指所有读写操作必须要能终止,实际应用中从主调、被调两个不同的视角,可用性具有不同的含义。当P(网络分区)出现时,主调可以只支持读操作,通过牺牲部分可用性达成数据一致。...
编译jdk hg clone http://hg.openjdk.java.net/jdk8u/jdk8u/ cd jdk8u chmod 755 get_source.sh ./get_source.sh brew install llvm brew freetype -XX:+UseCompressedOops 普通对象指针压缩 (默认由虚拟机的Ergonomics机制自动开启) -XX:+HeapDumpOnOutOfMemoryError 虚拟机出现内存溢出异常时Dump当前内存堆转储快照 -XX:HeapDumpPath=java.hprof -XX:+UseSerialGC Serial收集器.新生代收集器。 -XX:+ UseSerialOldGC SerialOld是Serial收集器的老年代收集器版本,它同样是一个单线程收集器 -XX:+UseParNewGC ParNew其实就是Serial收集器的多线程版本.新生代收集器。 -XX:+UseParallelGC 并行垃圾回收器ParallelScavenge.新生代收集器。使用Parallel收集器+...
使用动态代理的五大步骤 1.通过实现InvocationHandler接口来自定义自己的InvocationHandler; 2.通过Proxy.getProxyClass获得动态代理类 3.通过反射机制获得代理类的构造方法,方法签名为getConstructor(InvocationHandler.class) 4.通过构造函数获得代理对象并将自定义的InvocationHandler实例对象传为参数传入 5.通过代理对象调用目标方法 ``` public interface HelloWorld { void sayHello(String name); } public class HelloWorldImpl implements HelloWorld { @Override public void sayHello(String name) { System.out.println("Hello " +...