01 2018 档案

摘要:参考链接:https://www.w3cschool.cn/junit/ 什么是 JUnit? JUnit 是一个 Java 编程语言的单元测试框架。JUnit 在测试驱动的开发方面有很重要的发展,是起源于 JUnit 的一个统称为 xUnit 的单元测试框架之一。 JUnit 促进了“先测试后编码 阅读全文
posted @ 2018-01-31 21:39 heapStark 阅读(306) 评论(0) 推荐(0)
摘要:参考:http://blog.csdn.net/garfielder007/article/details/54295577 聚集索引和辅助索引 聚集索引(主键索引) —innodb存储引擎是索引组织表,即表中的数据按照主键顺序存放。而聚集索引就是按照每张表的主键构造一颗B+树,同时叶子节点中存放的 阅读全文
posted @ 2018-01-30 20:00 heapStark 阅读(584) 评论(0) 推荐(0)
摘要:参考:https://www.cnblogs.com/dreamworlds/p/5398535.html 多列索引的生成:跟一个字段是一样,只是比较方法变了,不理解成字段,理解成一个是一个元素的struct,一个是两个元素的struct,只是比较方法不一样而已,类似带有通配符形式时的索引查询。 例 阅读全文
posted @ 2018-01-30 09:46 heapStark 阅读(475) 评论(0) 推荐(0)
摘要:参考:预编译语句(Prepared Statements)介绍,以MySQL为例 1. 背景 本文重点讲述MySQL中的预编译语句并从MySQL的Connector/J源码出发讲述其在Java语言中相关使用。注意:文中的描述与结论基于MySQL 5.7.16以及Connect/J 5.1.42版本。 阅读全文
posted @ 2018-01-26 16:27 heapStark 阅读(1527) 评论(0) 推荐(0)
摘要:show index from tblname 阅读全文
posted @ 2018-01-26 16:14 heapStark 阅读(113) 评论(0) 推荐(0)
摘要:参考链接:https://docs.spring.io/spring/docs/4.3.13.RELEASE/spring-framework-reference/htmlsingle/#aop http://blog.csdn.net/javazejian/article/details/5626 阅读全文
posted @ 2018-01-26 10:01 heapStark 阅读(495) 评论(0) 推荐(0)
摘要:参考链接:http://blog.csdn.net/wireless_com/article/details/79153643 CAP是什么? CAP理论,被戏称为[帽子理论]。CAP理论由Eric Brewer在ACM研讨会上提出,而后CAP被奉为分布式领域的重要理论[1] 。 分布式系统的CAP 阅读全文
posted @ 2018-01-25 16:24 heapStark 阅读(10374) 评论(0) 推荐(0)
摘要:参考:http://www.cnblogs.com/mikevictor07/p/4458736.html 一、简介 关于一致性哈希算法介绍有许多类似文章,需要把一些理论转为为自己的知识,所以有了这篇文章,本文部分实现也参照了原有的一些方法。该算法在分布缓存的主机选择中很常用,详见http://en 阅读全文
posted @ 2018-01-25 16:04 heapStark 阅读(616) 评论(0) 推荐(0)
摘要:参考:http://www.cnblogs.com/xrq730/p/5100442.html 细说数据库三范式 2.1 第一范式(1NF)无重复的列,保证每列的原子性,即每一列的各个属性值之间不能有相同部分,比如地址可以进一步拆分为 国家 省份 城市三列,可以理解为列不可拆分 第一范式(1NF)中 阅读全文
posted @ 2018-01-23 17:35 heapStark 阅读(855) 评论(0) 推荐(0)
摘要:聚集索引和非聚集索引结构参考:http://blog.csdn.net/cangchen/article/details/44818623 前两天有位朋友邀请我回答个问题,为什么 MongoDB (索引)使用B-树而 Mysql 使用 B+树?我觉得这个问题非常好,从实际应用的角度来学习数据结构,没 阅读全文
posted @ 2018-01-23 16:40 heapStark 阅读(401) 评论(0) 推荐(0)
摘要:为什么要给表加上主键? 为什么加索引后会使查询变快? 为什么加索引后会使写入、修改、删除变慢? 什么情况下要同时在两个字段上建索引? 为什么要给表加上主键? 为什么加索引后会使查询变快? 为什么加索引后会使写入、修改、删除变慢? 什么情况下要同时在两个字段上建索引? 接下来就讲解一下上面提出的几个问 阅读全文
posted @ 2018-01-23 16:31 heapStark 阅读(596) 评论(0) 推荐(0)
摘要:在数据库操作中,我们常常会听说这两个词语:水平分割和垂直分割。那么到底什么是数据库的水平分割,什么是数据库的垂直分割呢?本文我们就来介绍一下这部分内容。 1、水平分割: 按记录进分分割,不同的记录可以分开保存,每个子表的列数相同。 水平分割通常在下面的情况下使用: A 表很大,分割后可以降低在查询时 阅读全文
posted @ 2018-01-22 17:59 heapStark 阅读(1059) 评论(0) 推荐(0)
摘要:Java中调度线程池ScheduledThreadPoolExecutor原理探究 一、 前言 前面讲解过Java中线程池ThreadPoolExecutor原理探究,ThreadPoolExecutor是Executors中一部分功能,下面来介绍另外一部分功能也就是ScheduledThreadP 阅读全文
posted @ 2018-01-22 16:54 heapStark 阅读(335) 评论(0) 推荐(0)
摘要:线程池参数: corePoolSize:线程池核心线程个数 workQueue:用于保存等待执行的任务的阻塞队列。比如基于数组的有界ArrayBlockingQueue、,基于链表的无界LinkedBlockingQueue,最多只有一个元素的同步队列SynchronousQueue,优先级队列Pr 阅读全文
posted @ 2018-01-22 16:48 heapStark 阅读(137) 评论(0) 推荐(0)
摘要:mybatis的一级缓存: MyBatis会在表示会话的SqlSession对象中建立一个简单的缓存,将每次查询到的结果结果缓存起来,当下次查询的时候,如果判断先前有个完全一样的查询,会直接从缓存中直接将结果取出,返回给用户,不需要再进行一次数据库查询了。 MyBatis会在一次会话的表示 一个Sq 阅读全文
posted @ 2018-01-22 09:44 heapStark 阅读(168) 评论(0) 推荐(0)
摘要:Kafka是由LinkedIn开发的一个分布式的消息系统,使用Scala编写,它以可水平扩展和高吞吐率而被广泛使用。目前越来越多的开源分布式处理系统如Cloudera、Apache Storm、Spark都支持与Kafka集成。 背景介绍 Kafka创建背景 Kafka是一个消息系统,原本开发自Li 阅读全文
posted @ 2018-01-21 14:39 heapStark 阅读(221) 评论(0) 推荐(0)
摘要:一.HTTP之请求消息Request 客户端发送一个HTTP请求到服务器的请求消息包括以下格式: Http请求消息结构.png Http请求消息结构.png 请求行以一个方法符号开头,以空格分开,后面跟着请求的URI和协议的版本。 GET说明请求类型为GET,[/562f25980001b1b106 阅读全文
posted @ 2018-01-21 14:39 heapStark 阅读(1056) 评论(0) 推荐(0)
摘要:多线程模式下使用 多线程模式下使用 多线程同时访问httpclient,例如同时从一个站点上下载多个文件。对于同一个HttpConnection同一个时间只能有一个线程访问,为了保证多线程工作环境下不产生冲突,httpclient使用了一个多线程连接管理器的类:MultiThreadedHttpCo 阅读全文
posted @ 2018-01-20 14:06 heapStark 阅读(200) 评论(0) 推荐(0)
摘要:一.spring事务管理的实现原理,基于AOP 1) REQUIRED ,这个是默认的属性 Support a current transaction, create a new one if none exists. 如果存在一个事务,则支持当前事务。如果没有事务则开启一个新的事务。 被设置成这个 阅读全文
posted @ 2018-01-16 10:47 heapStark 阅读(227) 评论(0) 推荐(0)
摘要:最近公司项目需要根据bean生成对应的yaml配置文件,需要用到反射和文件操作,API总结如下: 文件读写: 反射: 阅读全文
posted @ 2018-01-09 20:06 heapStark 阅读(132) 评论(0) 推荐(0)
摘要:在并发读写数据库时,读操作可能会不一致的数据(脏读)。为了避免这种情况,需要实现数据库的并发访问控制,最简单的方式就是加锁访问。由于,加锁会将读写操作串行化,所以不会出现不一致的状态。但是,读操作会被写操作阻塞,大幅降低读性能。在java concurrent包中,有copyonwrite系列的类, 阅读全文
posted @ 2018-01-08 15:31 heapStark 阅读(2489) 评论(1) 推荐(2)
摘要:一,ACID 数据库事务争取执行的四大要素::原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)、持久性(Durability)。一个支持事务(Transaction)的数据库,必须要具有这四种特性。 二,事务隔离级别 JDBC定义了五种事务隔离级别: TR 阅读全文
posted @ 2018-01-08 10:25 heapStark 阅读(182) 评论(0) 推荐(0)
摘要:一.什么是JDBC JDBC(Java Data Base Connectivity,java数据库连接)是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问,它由一组用Java语言编写的类和接口组成。JDBC提供了一种基准,据此可以构建更高级的工具和接口,使数据库开发人员能 阅读全文
posted @ 2018-01-08 09:59 heapStark 阅读(5174) 评论(0) 推荐(2)
摘要:桥梁模式是对象的结构模式。又称为柄体(Handle and Body)模式或接口(Interface)模式。桥梁模式的用意是“将抽象化(Abstraction)与实现化(Implementation)脱耦,使得二者可以独立地变化”。 桥梁模式的用意 桥梁模式虽然不是一个使用频率很高的模式,但是熟悉这 阅读全文
posted @ 2018-01-07 11:16 heapStark 阅读(342) 评论(0) 推荐(0)
摘要:Arrays.sort()分析 阅读全文
posted @ 2018-01-06 16:28 heapStark 阅读(151) 评论(0) 推荐(0)
摘要:spring通过@PathVariable注解来获得请求url中的动态参数的,并且支持动态url访问,可以从url中直接提取参数而不需要采用?q=q&d=d的形式 代码示例如下: 同时变量url中的PathVariable还支持正则表达式校验,上面最后一个方法只能字母加后缀三个数字的方式访问 阅读全文
posted @ 2018-01-06 14:24 heapStark 阅读(7802) 评论(0) 推荐(0)
摘要:Jedis总共支持八种调用方式:普通同步方式 ,事务方式(Transactions) ,管道(Pipelining) ,管道中调用事务 ,分布式直连同步调用 ,分布式直连异步调用 ,分布式连接池同步调用,分布式连接池异步调用 事务中某个操作失败,并不会回滚其他操作。 基于数据库的分布式锁: Redi 阅读全文
posted @ 2018-01-04 09:34 heapStark 阅读(211) 评论(0) 推荐(0)
摘要:集合类的另外一种重要实现为Map接口,Map接口提供的方法如下: Map接口一个不常见实现为HashTable,HashTable对所有有并发访问问题的方法通过 synchronized 关键字进行并发操作控制。 HashTable的Key和Value都不能为空,否则抛出NullPointerExc 阅读全文
posted @ 2018-01-03 10:20 heapStark 阅读(350) 评论(0) 推荐(0)
摘要:Collection接口的另外一种实现为Set集合,主要有两种实现方式一种为HashSet另一种为TreeSet,两种实现都依赖与对应的Map实现类。 代码如下: 阅读全文
posted @ 2018-01-02 21:38 heapStark 阅读(151) 评论(0) 推荐(0)
摘要:LinkedList 是另外一种重要的数据结构形式, 底层是使用了双向链表数据结构, 特点: 查询速度慢,增删快。 继承关系如下: 可以发现,LinkedList同时实现了Quene和Deque接口。 静态内部类Node的实现: 对应的初始化方法即add()添加方法: 阅读全文
posted @ 2018-01-02 21:29 heapStark 阅读(201) 评论(0) 推荐(0)
摘要:1. 什么是Fork/Join框架 Fork/Join框架是Java7提供了的一个用于并行执行任务的框架, 是一个把大任务分割成若干个小任务,最终汇总每个小任务结果后得到大任务结果的框架。 我们再通过Fork和Join这两个单词来理解下Fork/Join框架,Fork就是把一个大任务切分为若干子任务 阅读全文
posted @ 2018-01-02 20:15 heapStark 阅读(646) 评论(0) 推荐(0)
摘要:选择器提供选择执行已经就绪的任务的能力,这使得多元 I/O 成为可能。就像在第一章中描述的那样,就绪选择和多元执行使得单线程能够有效率地同时管理多个 I/O 通道(Channels)。C/C++代码的工具箱中,许多年前就已经有 select()和 poll()这两个POSIX(可移植性操作系统接口) 阅读全文
posted @ 2018-01-02 17:50 heapStark 阅读(526) 评论(0) 推荐(1)
摘要:ServerSocketChannel: ServerSocketChannel是一个基于通道的socket监听器。它同我们所熟悉的java.net.ServerSocket执行相同的基本任务,不过它增加了通道语义,因此能够在非阻塞模式下运行。用静态的open( )工厂方法创建一个新的ServerS 阅读全文
posted @ 2018-01-02 15:59 heapStark 阅读(344) 评论(0) 推荐(0)
摘要:阻塞非阻塞: NIO中的Channel主要分为两大类:一类是FileChannel,另一类是SocketChannel。NIO提供的核心非阻塞特性主要针对SocketChannel类,全部socket通道类(DatagramChannel、SocketChannel和ServerSocketChan 阅读全文
posted @ 2018-01-02 11:49 heapStark 阅读(314) 评论(0) 推荐(0)
摘要:通道提供了一种被称为Scatter/Gather的重要新功能(有时也被称为矢量I/O)。Scatter/Gather是一个简单却强大的概念,它是指在多个缓冲区上实现一个简单的I/O操作。对于一个write操作而言,数据是从几个缓冲区按顺序抽取(称为gather)并沿着通道发送的。缓冲区本身并不需要具 阅读全文
posted @ 2018-01-02 10:24 heapStark 阅读(220) 评论(0) 推荐(0)
摘要:数组: 存储同一种数据类型的集合容器.数组的特点:1. 只能存储同一种数据类型的数据。2. 一旦初始化,长度固定。 3. 数组中的元素与元素之间的内存地址是连续的。 : Object类型的数组可以存储任意类型的数据。 集合:集合是存储对象数据的集合容器。集合比数组的优势:1. 集合可以存储任意类型的 阅读全文
posted @ 2018-01-01 20:10 heapStark 阅读(222) 评论(0) 推荐(0)
摘要:1.抽象 抽象——就是忽略一个主题中与当前目标无关的那些方面,以便更充分地注意与当前目标有关的方面。抽象并不打算了解全部问题,而只是选择其中的一部分,暂时不用部分细节。 2.继承: 继承是一种联结类的层次模型,并且允许和鼓励类的重用,它提供了一种明确表述共性的方法。对象的一个新类可以从现有的类中派生 阅读全文
posted @ 2018-01-01 18:37 heapStark 阅读(394) 评论(0) 推荐(0)
摘要:java interrupt()方法只是设置线程的中断标记,当对处于阻塞状态的线程调用interrupt方法时(处于阻塞状态的线程是调用sleep, wait, join 的线程),会抛出InterruptException异常,而这个异常会清除中断标记。并且异常如果被捕获且没有重新抛出后续代码将继 阅读全文
posted @ 2018-01-01 16:06 heapStark 阅读(391) 评论(0) 推荐(0)