自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

白夜行

冗长的黑暗中,你是我唯一的光。

  • 博客(74)
  • 资源 (25)
  • 收藏
  • 关注

原创 【Maven入门】Maven概述

1.定义Maven 作为 Apache 的一个开源项目,旨在给项目管理提供更多的支持,它最早的意图只是为了给 apache 组织的几个项目提供统一的开发、测试、打包和部署,能让开发者在多个项目中方便的切换。Maven 中最值得称赞的地方就是使用了标准的目录结构和部署。在多个开发团队环境的情况下,Maven可以设置在上班的路上在很短的时间内为标准。由于大部分的项目设置简单可重复使用,Maven的

2017-07-31 21:52:08 458 1

原创 【git入门】git常用命令

引入虽然说git命令有很多,但我们平时用的也就不到二十个命令,所以说git也不难掌握,下面我就来介绍下常用的命令。git命令1.git结构图注:Workspace:工作区,Index / Stage:暂存区,Repository:仓库区(或本地仓库),Remote:远程仓库2.安装后配置git(1)安装 Git 之后,首先需要配置你的名字和邮箱,因为每一次提交都需要这些信息,如下图(2)获取git配

2017-07-31 21:18:23 468

原创 【Java深入】创建对象的5种方式

1.java中创建对象的五种方式用new语句创建对象,这是最常见的创建对象的方法。运用反射手段,调用java.lang.Class或者java.lang.reflect.Constructor类的newInstance()实例方法。调用对象的clone()方法。通过I/O流(包括反序列化),注:前两种会调用构造函数,而后两种不会调用构造函数。2.使用new关键字最常见也是最简单的创建对象的

2017-07-31 17:42:44 475

原创 【MySQL基础】如何选择存储引擎

引入在介绍存储引擎之前,先来回顾一下索引的相关知识。索引是对数据库表中一个或多个列的值进行排序的结构,建立索引有助于更快地获取信息。 mysql 有四种不同的索引类型:主键索引 ( PRIMARY )唯一索引 ( UNIQUE )普通索引 ( INDEX )全文索引(FULLTEXT , MYISAM 及 mysql 5.6 以上的 Innodb )建立索引的目的是加快对表中记录的查找

2017-07-31 17:04:02 507

原创 【设计模式】适配器模式

1.定义Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以在一起工作。2.UML类图分析:模式中的角色目标接口(Target):客户所期待的接口。目标可以是具体的或抽象的类,也可以是接口。需要适配的类(Adaptee):需要适配的类或适配者类。适配器(Adapter):通过包装一个需要适配的对象,把原接口转换成目标接口。 3.实现方式(1)类的适配器模式(采用继承实现)//

2017-07-31 15:30:12 308

翻译 【设计模式】JDK源码中用到的设计模式

引入我是从Stack Overflow上看到的问题,感觉这个答案真心不错,所以翻译过来看看,由于本文水平有限,不喜勿喷,原文链接:Examples of GoF Design Patterns in Java’s core libraries 问题我正在学习GoF Java设计模式,我想看看他们的一些现实生活中的例子。Java核心库中的这些设计模式的一些很好的例子是什么?答案我选择了一个投票数最高

2017-07-31 13:34:11 7782

原创 【设计模式】单例设计模式

1.单例模式的定义单例模式确保某个类只有一个实例,而且自行实例化并向整个系统提供这个实例。2.单例模式的特点单例类只能有一个实例。单例类必须自己创建自己的唯一实例。单例类必须给所有其他对象提供这一实例。3.单例模式的应用在计算机系统中,线程池、缓存、日志对象、对话框、打印机、显卡的驱动程序对象常被设计成单例。这些应用都或多或少具有资源管理器的功能。每台计算机可以有若干个打印机,但只能有一

2017-07-31 12:52:25 6357 3

原创 【设计模式入门】设计模式概述

设计模式的定义设计模式(Design pattern)是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性。 毫无疑问,设计模式于己于他人于系统都是多赢的;设计模式使代码编制真正工程化;设计模式是软件工程的基石脉络,如同大厦的结构一样。为什么使用设计模式呢?主要是为了代码复用,增加可维护性。设计模式的六大原

2017-07-31 11:17:30 437

原创 【JVM】堆内存与栈内存详解

堆和栈的定义java把内存分成栈内存和堆内存。(1)栈内存在函数中定义的一些基本类型的变量和对象的引用变量都是在函数的栈内存中分配。当在一段代码块中定义一个变量时,java就在栈中为这个变量分配内存空间,当超过变量的作用域后,java会自动释放掉为该变量分配的内存空间,该内存空间可以立刻被另作他用。(2)堆内存堆内存用于存放由new创建的对象和数组。在堆中分配的内存,由java虚拟机自动垃圾

2017-07-31 10:12:46 1035 5

原创 【Redis深入】aof与reaof源码剖析

引入如果你对Redis的 aof 和 reaof 机制还不太了解,请点击Redis持久化机制的介绍我们先来简单的回顾一下aof持久化,它是通过保存redis服务器所执行的写命令来记录数据库状态的。通过配置选项来设置刷新(写入同步)到磁盘上aof文件的间隔(默认是每秒)。reaof是因为AOF文件的内容会越来越多,为了解决AOF文件体积膨胀的问题,重写AOF机制出现了,其实AOF重写并不需要对现

2017-07-31 06:57:16 889

原创 【Linux深入】Linux开机过程详解

引入对于我们平时经常用的Linux系统,你有没有思考过它到底是怎样启动的呢,它的开机过程经历了哪些步骤呢,接下来我就来详细剖析一下开机步骤。为了更清晰、更全面的理解,我先来贴张图,让你有个大致的认识。开机过称图解开机步骤1POST开机自检linux开机加电后,系统开始开机自 检,该过程主要对计算机各种硬件设备进行检测,如CPU、内存、主板、硬盘、CMOS芯片等,如果出现致命故障则停机,并且由

2017-07-30 18:50:41 691

原创 【Linux深入】epoll源码的函数调用流程分析(图)

引入我在上一篇博文中讲了epoll源码的剖析,你是不是看的有点懵呢,反正我是有点,接下来我就以流程图的形式梳理一下epoll源码的结构。当然,这篇博文是建立在上一篇博文的基础上,若你还没看过epoll源码,那么我建议你最好还是看一下,请点击【Linux深入】epoll源码剖析 接下来我就以流程图的形式介绍一下函数的调用过程。整体的数据结构图注:图中黄色和绿色方框表示链表关系,而粉色代表等待队列

2017-07-30 08:01:24 5638 3

原创 【Linux深入】Kqueue、IOCP与pselect的介绍

引入我在上一篇博文中讲了select、poll、epoll的区别,接下来我再介绍几个比较“冷门”的IO复用函数。1.select与pseletct的区别(1)函数int select(int n, fd_set *readfds, fd_set *writefds, fd_set *exceptfds, struct timeval *timeout);int pselect(int n,fd_se

2017-07-30 07:32:37 1608

原创 【Linux深入】epoll源码剖析

引入之前讲了select、poll、epoll的区别,由于许多应用中都用到了epoll,例如Netty、Redis等等,所以就来深入学习一下,现在我们就来剖析一下epoll的源码我先来剖析理解epoll源码的基础:主要的数据结构,然后再来解析epoll主要的三个方法:epoll_create()、epoll_ctl()、epoll_wait()。主要的数据结构1.eventpoll// epo

2017-07-29 20:16:04 12113 5

原创 【Redis深入】缓存雪崩与热点key的重建

缓存穿透1.定义缓存穿透是指查询一个根本不存在的数据,缓存层和存储层都不会命中,缓存穿透将导致不存在的数据每次请求都要到存储层去查询,失去了缓存保护后端存储的意义。2.造成缓存穿透的原因业务自身代码或者数据出现问题一些恶意攻击、爬虫等造成大量空命中3.解决方法缓存空对象空值做缓存,即缓存层中存了更多的键,这就需要更多的内存空间 ,可以对其设置一个较短的过期时间,让其自动清除。优点是实

2017-07-29 14:39:28 5422 1

转载 【HDFS基础】NameNode重启优化

一、背景在Hadoop集群整个生命周期里,由于调整参数、Patch、升级等多种场景需要频繁操作NameNode重启,不论采用何种架构,重启期间集群整体存在可用性和可靠性的风险,所以优化NameNode重启非常关键。本文基于Hadoop-2.x和HA with QJM社区架构和系统设计(如图1所示),通过梳理NameNode重启流程,并在此基础上,阐述对NameNode重启优化实践。图1 HDFS H

2017-07-28 19:07:46 681

原创 【HDFS基础】NameNode内存详解

定义NameNode管理着整个HDFS文件系统的元数据。从架构设计上看,元数据大致分成两个层次:Namespace管理层:负责管理文件系统中的树状目录结构以及文件与数据块的映射关系;块管理层:负责管理文件系统中文件的物理块与实际存储位置的映射关系BlocksMap。Namespace管理的元数据除内存常驻外,也会周期Flush到持久化设备上FsImage文件;BlocksMap元数据只在内存

2017-07-28 18:00:07 6914 5

原创 【HDFS基础】HDFS文件目录详解

HDFS的文件目录图分析:从上图可以看出,HDFS的文件目录主要由NameNode、SecondaryNameNode和DataNode组成,而NameNode和DataNode之间由心跳机制通信。注:HDFS(Hadoop Distributed File System)默认的存储单位是128M的数据块。 可以执行命令vim /home/qingaolei/hadoop/hadoop-2.8.

2017-07-28 16:09:26 37135 1

原创 【HDFS基础】常用JavaAPI

在实际应用中,我们少不了要用Java开发HDFS,怎样操作呢?直接贴代码public class HdfsOperation { //1.上传本地文件 public void uploadFile() throws IOException { Configuration conf = new Configuration(); FileSystem hdf

2017-07-28 14:38:59 356

原创 【HDFS基础】常用命令与读写数据过程

HDFS常用命令 命令 功能 start-dfs.sh 启动HDFS start-balancer.sh 执行负载均衡 hadoop fs –put example.txt /suger 将本地文件复制到HDFS中 hadoop fs -copyFromLocal /home/time.txt /suger 将本地文件复制到HDFS中 hadoop fs –

2017-07-28 14:08:42 2344

原创 【Hadoop入门】Hadoop2.8的安装步骤

声明1.本篇博文介绍的Hadoop(单节点)安装步骤基于以下环境进行Hadoop 2.8.0虚拟机:VMware Workstation 12.1.0镜像文件:ubuntu16.10sun JDK82.Hadoop的安装步骤一共分为5大步,接下来我会一一介绍1.关闭防火墙安装UFW防火墙:sudo apt-get install ufw查看防火墙状态:sudo ufw status关

2017-07-28 13:01:09 533

原创 【HDFS入门】HDFS概述

1.概念HDFS(Hadoop Distributed File System)是Hadoop项目的核心子项目,是分布式计算中数据存储管理的基础,是基于流数据模式访问和处理超大文件的需求而开发的,可以运行于廉价的商用服务器上。HDFS是一个主/从(Mater/Slave)体系结构,从最终用户的角度来看,它就像传统的文件系统一样,可以通过目录路径对文件执行CRUD(Create、Read、Upda

2017-07-28 10:40:45 615

原创 【Hadoop入门】Hadoop的架构介绍

Hadoop的概念Apache Hadoop是一款支持数据密集型分布式应用并以Apache 2.0许可协议发布的开源软件框架。它支持在商品硬件构建的大型集群上运行的应用程序。Hadoop是根据Google公司发表的MapReduce和Google档案系统的论文自行实作而成。Hadoop是一套开源的软件平台,利用服务器集群,根据用户的自定义业务逻辑,对海量数据进行分布式处理。诞生于2006年。H

2017-07-28 09:55:05 37643 2

原创 【Redis深入】Jedis的使用

1.Jedis的基本使用基本使用很简单,就是Redis的基本命令,首先需要导入jar包 public void firstConnection() { //连接redis的IP和端口号 Jedis jedis = new Jedis("127.0.0.1",6379); //输入密码 jedis.auth("dream");

2017-07-26 08:27:45 453

原创 【Redis源码】rehash源码剖析

如果你对rehash还不是很了解,请参考:图解rehash1.rehash的分类Redis为了兼顾性能的考虑,分为lazy和active的两种rehash操作,同时进行,直到rehash完成。lazy rehashing:在每次对dict进行操作的时候执行一个slot的rehashactive rehashing:每100ms里面使用1ms时间进行rehash。(serverCron函数)2.

2017-07-25 19:40:10 1146

原创 【Redis深入】字典rehash图解

引入在讲rehash之前,我们先回顾一下字典的结构1.字典dict.h/dict的源码/* * 字典 */typedef struct dict { // 类型特定函数 dictType *type; // 私有数据 void *privdata; // 哈希表 dictht ht[2]; // rehash 索引 // 当 rehash

2017-07-25 17:33:04 4044 2

原创 【Redis深入】配置文件详解

Redis3.0的配置文件redis.conf文件如下#redis.conf# Redis configuration file example.# ./redis-server /path/to/redis.conf################################## INCLUDES ####################################这在你有标准配置模

2017-07-25 15:48:58 513

原创 【Redis基础】发布与订阅

发布与订阅1.定义Redis的发布与订阅是由publish、subscribe、psubscribe等命令组成的2.频道的订阅与退订(1)订阅当一个客户端执行subscribe命令订阅某个频道,该客户端就与被订阅频道之间构成了一种订阅关系。所有频道的订阅关系保存在服务器状态的pubsub_channel字典里,该字典的键是某个被订阅的频道,值是一个链表,记录了所有订阅这个链表的客户端。 图解

2017-07-25 15:23:44 429

原创 【Redis基础】集群

1.定义Redis集群是Redis提供的分布式数据库方案,集群通过分片来进行数据共享,并提供复制和故障转移功能。3.0版本之前的redis是不支持集群的,Redis3.0之后支持集群。一个Redis集群通常由多个节点组成,通过握手(cluster meet命令)添加节点2.槽指派Redis集群通过分片的方式保存数据库中的键值对,集群中的整个数据库被分为16384个槽(slot),每个节点可

2017-07-25 14:05:17 396

原创 【Redis基础】启动过程

1.初始化服务器状态结构初始server变量由redis.c/initServerConfig函数完成,源码如下void initServerConfig() { int j; // 服务器状态 // 设置服务器的运行 ID getRandomHexChars(server.runid,REDIS_RUN_ID_SIZE); // 设置默认配置文件路径 s

2017-07-25 11:39:37 959

原创 【Redis基础】主从复制

1.定义通过执行slaveof命令或设置slaveof选项,让一个服务器去复制另一个服务器。允许多个slave server拥有和mater server相同的数据库副本2.旧版复制功能旧版(Redis2.8之前)复制功能包括两个操作:同步和命令传播(1)同步:将从服务器的数据库状态更新至主服务器的当前状态实例:(2)命令传播:当主服务器的状态被修改,让主从服务器的数据库重新回到一致状态。若主

2017-07-25 11:27:01 365

原创 【Redis基础】服务器源码解析

1.定义Redis服务器负责与多个客户端建立网络连接,处理客户端发送的请求,在数据库中保存客户端执行命令所产生的数据,并通过资源管理来维持服务器自身的运转。2.命令请求从发送到完成的步骤(1)客户端将命令请求发送给服务器(2)服务器读取命令请求,并分析命令参数当连接套接字因客户端的写入变得可读时,服务器会调用命令请求器执行以下请求读取套接字的命令请求,保存到客户端的输入缓冲区中对输入缓冲区的命令

2017-07-25 09:46:46 602

原创 【Redis基础】客户端源码解析

1.定义Redis客户端与服务器之间通过TCP协议进行通信。TCP协议是一种流式协议,数据以字节流的形式进行传递,没有固有的”报文”或”报文边界”的概念,如果需要设置边界,需要应用层自行处理。2.源码客户端redis.h/redisClient源码如下:/* With multiplexing we need to take per-client state. * Clients are take

2017-07-25 08:31:57 1182

原创 【Redis基础】事务与事件

事务1.定义:一组命令的集合。一个事务中的命令要么都执行,要么都不执行。2.事务的实现事务开始命令入队事务执行例:Multi //通知redis进入事务sadd “user:1:following”2sadd “user:2:followers”1exec //结束事务3.错误处理(1) 语法错误(入队错误):命令不存在或者命令参数的个数不对(不会执行语法正确的指令)(2) 运行错

2017-07-25 07:36:21 1519

原创 【Redis基础】持久化机制

1.RDB(1) 定义RBD:snapshotting(快照)是默认方式,将内存中数据以快照的方式写入到二进制文件中,默认文件名为dump.rdb(2)触发rdbSave过程的方式save命令:阻塞Redis服务器进程,直到RDB文件创建完毕为止。bgsave命令:派生出一个子进程,然后由子进程负责创建RDB文件,父进程继续处理命令请求。master接收到slave发来的sync命令定时sa

2017-07-24 20:47:26 670

原创 【Redis基础】常用命令

1.键(key)的常用命令 命令 功能 keys * 查询当前所有键 exists key 判断某个key是否存在 move key db 移动键到另一个数据库,当前库就没有了,被移除了 expire key 为给定的key设置过期时间(秒) persist key 取消键的过期时间 ttl key 查看还有多少秒过期,-1表示没有设置过期时间或

2017-07-24 19:52:03 539

原创 【Redis基础】五种数据类型

Redis的键值有5种数据类型,分别为字符串,散列表,列表,集合,有序集合,接下来我详细介绍引入1.redisObjectRedis中的每个对象都由一个redisObject结构表示Redis对象redis.h/redisObject源码如下:/* The actual Redis Object *//* * Redis 对象 */#define REDIS_LRU_BITS 24#

2017-07-24 18:35:51 548

原创 【Redis入门】内部数据结构源码剖析

SDS1.定义SDS(simple dynamic string)即简单动态字符串,在Redis中并没有直接使用C语言传统的字符串表示(以空字符结尾的字符数组),而使用自己构造的SDS。2.源码(1)结构体sds.h/sdshdr的源码如下:/* * 保存字符串对象的结构 */struct sdshdr { // buf 中已占用空间的长度 int len; // buf

2017-07-24 13:46:13 779

原创 【Redis入门】Redis概述

Redis的定义Redis是Remote Dictionary Server(远程字典服务器)的缩写,它以字典结构存储数据,并允许其他应用通过TCP协议读写字典中的内容,用C语言编写的。Redis是开源免费的,支持多语言的API(C/C++/C#/Java/Javascript/Lua/PHP/Python/Ruby/Go),具有原子性,可持久化的KV数据库Redis遵守BSD协议,是一个高性

2017-07-24 09:42:24 460

原创 【数据结构】hash冲突的解决方法

hash表的定义散列技术是在记录的存储位置和它的关键字之间建立一个确定的对应关系f,使得每个关键字key 对应一个存储位置f (key),对应关系f 称为散列函数, 又称为哈希( Hash) 函数采用散列技术将记录存储在一块连续的存储空间中,这块连续存储空间称为散列表或哈希表(hash table)散列函数的构造方法1.直接定址法取关键字的某个线性函数值为散列地址 f ( key ) =a

2017-07-21 15:01:36 1584

《剑指Offer》题目及代码(修订版4).pdf

《剑指offer》的Java版代码实现(修订版4),有题目和解题思路,对部分代码重新排版,解决了部分代码消失的问题。

2019-06-16

《剑指Offer》题目及代码(修订版2).pdf

《剑指offer》的Java版代码实现(修订版2),有题目和解题思路,修改了部分题目的代码和解题思路。

2019-06-16

《剑指Offer》题目及Java版代码(带目录)

最全的《剑指offer》Java版代码实现,带目录高清完整版,保证正确性,全都在OJ上测试AC了。

2019-03-03

《剑指offer》Java版代码

最全的《剑指offer》Java版代码实现,保证正确性,全都在OJ上测试AC了。

2017-11-02

技术之瞳 阿里巴巴技术笔试心得.pdf

2017-04-11

高性能Linux服务器构建实战:运维监控、性能调优与集群应用.pdf

2017-04-11

数据库面试必备.docx

数据库面试题1用两种方式根据部门号从高到低工资从低到高列出每个员工的信息。。220xxx公司的sql面试221注册Jdbc驱动程序的三种方式222用JDBC如何调用存储过程223JDBC中的Prepa

2017-04-11

MySQL面试题.pdf

2017-04-11

mysql 驱动 .jar

2017-04-11

netty jar包

netty jar包

2017-04-11

struts2.jar

2017-04-11

MySQL 5.1 参考手册

2017-04-11

linux 2 参考手册

2017-04-11

java 8 API 英文原版

2017-04-11

dom4j参考手册

2017-04-11

HTML参考手册-日常使用

HTML参考手册-日常使用

2017-04-11

java开发手册

介绍了Java的命名规约!

2017-04-11

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除