`
文章列表
Maven 生命周期与插件   一、生命周期 Maven有三套独立的生命周期,分别为clean,default和site。clean生命周期的目的是清理之前的构建,default的目的是构建项目,site的目的是建立项目站点。   每个生命周期都包含一些阶段(build phase),这些阶段是有顺序的,并且后面的阶段依赖于前面的阶段。三套生命周期是完全独立的,我们可以仅调用clean生命周期的某个阶段,或者仅调用default生命周期的某个阶段。   执行生命周期:   mvn [options] [<goal(s)>] [<phase(s)>] ...
 MySQL 通信协议介绍   1、数据类型 了解MySQL协议包之前必需先知道其数据类型    1.1 Integer Types 整数类型 (1)定长整型 固定长度, 小端编码, 有下面几种(括号内的代表所占字节数): int<1> int<2> int<3> int<4> int<6> int<8>   (2)变长整型 可能长度为1, 3, 4, 9 个字节, 实际长度取决于数值的大小.记为 int<lenenc>   编码过程, 记数值为N: 1.若 N < ...
MySQL 分区   分区是指根据一定的规则,把一个表分解成多个更小更易管理的部分,逻辑上只有一个表或一个索引, 但是实际上该表可能由数个物理分区对象组成,每个分区都是一个独立的对象,每个分区可以独自处理,也可以作为表的一部分处理。分区对应用是完全透明的。   分区的优点体现在以下方面: 和单个磁盘或者文件系统相比,可以存储更多数据 优化查询,在Where子句中包含分区条件时,可以只扫描必要的一个或者多个分区来提高查询效率;像sum和count这类聚集函数的查询时,可以很容易地在每个分区上并行地处理,最终汇总所有分区的结果 对于已经过期的数据,可以通过删除与这些数据有关的分 ...
MySQL XA事务   MySQL从5.0.3开始支持分布式事务,当前的分布式事务只支持InnoDB存储引擎,在MySQL中,使用分布式事务的应用程序涉及一个或多个资源管理器和一个事务管理器。   资源管理器(Resource Manager):用于提供通向事务资源的途径,数据库服务器是一种资源管理器。该资源必须可以提交或回滚由RM管理的事务,例如,多态MySQL数据库作为多态资源管理器或者几台MySQL和几台Oracle作为资源管理器。 事务管理器(Transaction Manager):用于协调作为一个分布式事务的一部分的事务,TM与管理每个事务的RMs进行通信。在一个 ...
MySQL MyISAM与表锁   在数据库中,除了CPU、内存、IO等的争用外,数据也是一种供许多用户共享的资源,如何保证数据并发的一致性、有效性是所有数据库必须解决的问题,锁冲突也是影响数据库并发性能的一个重要因素。MySQL中不同的存储引擎之间的锁机制不一定相同,例如MyISAM和MEMORY采用的是表锁,BDB采用的是页面锁,但野支持表锁,InnoDB默认是行锁,但也支持表锁。   MySQL锁大体分三种: 表锁:开销小,加锁快;不会出现死锁;锁粒度大,发生锁冲突几率高,并发度最低 行锁:开销大,加锁慢;会出现死锁;锁粒度小,发生锁冲突几率小,并发度最高 页锁:开销和 ...
MySQL 日志 概述 MySQL日志记录了MySQL服务器的各种行为,MySQL中日志有如下几种: 类型 描述 Error Log 记录 MySQL启动,运行,停止过程 General Query Log  记录客户端的连接以及接受的SQL Binary Log  记录改变数据的语句(通常用于复制) Relay Log 记录 从Master上接受到的数据变更 Slow Query Log  记录慢查询  DDL Log  记录DDL   在Windows平台,默认情况下只有Error Log是开启的   1. 错误日志 ...
ZooKeepr 配置项详细说明     clientPort 必须,不支持-D参数,监听端口 dataDir 必须,不支持-D参数,用于指定ZooKeeper服务器存储快照文件的目录,默认情况下,如果dataLogDir没有配置,则事务日志也会存储到这个目录 下,考虑到事务日志的写性能直接影响ZooKeeper的整体性能,因此建议通过参数dataLogDir来配置事务日志存储目录 tickTime 可选,默认值3000,单位毫秒,不支持-D参数,表示时间单元 dataLogDir 可选,默认和dataDir一致,不支持-D参数,事务日志存储目录,尽量将事务日志存储在一个 ...
SnowFlake 分布式ID生成Java实现 SnowFlake不依赖第三方介质,不像基于ZK,Redis等,每次用完一个区间还得通过网络去获取下一个区间,效率较低,基于SnowFlake的分布式ID生成是目前我见过的最快的   SnowFlake生成的是一个64位的数字,其中42位时间戳,接下来10位是自定义的数,其作用就是区分集群中的所有机器,最后12位是毫秒内序列,集群内每个机器能够在1毫秒内生成2^12 - 1个ID     /** * 基于SnowFlake的序列号生成实现, 64位ID (42(毫秒)+5(机器ID)+5(业务编码)+12(重复累加)) */ s ...
Java NIO 反应堆模式简单模型 一般NIO里反应堆模式都是这样:一个Acceptor(当然多个也行,不过一般场景一个够了)负责accept事件,把接收到Socket CHannel注册到按某种算法从Reactor池中取出的一个Reactor上,注册的事件为读,写等,之后这个Socket Channel的所有IO事件都和Acceptor没关系,都由被注册到的那个Reactor来负责。   每个Acceptor和每个Reactor都各自持有一个Selector   当然每个Acceptor和Reactor都得是一个线程(起码在逻辑上得是线程)   简单实现,三个类NioAcce ...
输入一个链表,输出该链表中倒数第k个结点   题目:输入一个链表,输出该链表中倒数第k个结点   解法一:先递归到尾部,然后开始向前遍历,并计数,计数达到k时return /* public class ListNode { int val; ListNode next = null; ListNode(int val) { this.val = val; } }*/ public class Solution { ListNode targetNode; int currK; pub ...
跳台阶   一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法。   解法一: public class Solution { public int JumpFloor(int target) { // 递归 if (target == 1) { return 1; } if (target == 2) { return 2; } return JumpFloor(target - 1) + Ju ...
给定二叉树前序和中序序列重建二叉树 输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建二叉树并返回。  思路:前序序列第一个肯定为root,设值为N,则在中序序列中N所在位置左边的肯定是左子树的元素,右边的是右子树的元素,因此,递归找root即可 public class Solution { public TreeNode reConstructBinaryTree(int [] pre,int [ ...
MySQL replace into 的用法   语法: Sql代码  REPLACE [LOW_PRIORITY | DELAYED]       [INTO] tbl_name       [PARTITION (partition_name,...)]       [(col_name,...)]       {VALUES | VALUE} ({expr | DEFAULT},...),(
Redis 事务支持   Redis中事务相关的命令有MULTI、EXEC、DISCARD、WATCH和UNWATCH。   Redis事务保证原子性:要么所有命令都执行(都执行并不代表都成功执行),要么都不执行   事务以MULTI开始,以EXEC或DISCARD结束,示例: 原子性删除多个key:  (版本3.2.5)   Redis会将MULTI后面的多个命令入队列,等待EXEC时将队列的命令顺序执行,在执行事务内的命令时不会去处理其它客户端的请求。   有两种事务错误的情况:   命令无法入队列, 因此在执行EXEC之前我们就可以知道这种错误(正常入队列返 ...
Redis Protocol 数据类型 Redis协议种数据类型总共就5种,你拿到一坨字节后根据第一个字节来判断这一坨字节代表的是哪种数据类型,Redis协议实现起来比较简单,而且是human readable,可以说是文本协议。   1.Simple String 简单字符串类型,第一个字节是"+",后面跟着一个字符串,该字符串不能包含CR和LF,以CRLF("\r\n")结尾   比如"hello"编码为: "+hello\r\n"   "+hello\rworld\r\n" ...
Global site tag (gtag.js) - Google Analytics