自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Spground

csdn广告太多,博客迁移至 https://www.cnblogs.com/Spground/

  • 博客(80)
  • 收藏
  • 关注

原创 Git commit --amend

Git commit –amend在使用git作为版本控制的时候,偶尔会出现这种情况:对当前的修改用git commit -m'xxx'做一次commit,并记录一些commit log。但是随即又因为某些原因对工程做了修改,而这次修改逻辑上属于上次的commit的内容,此时再提交一些commit显然不合适,这时候我们需要有一种命令能将本次修改的内容合并到上一次的commit中,这样本次的修改...

2018-08-26 21:01:47 1600

原创 HTTP轮询模型

HTTP轮询模型长短轮询http协议是一种client-server模型的应用层协议,这种c-s的模式虽然大多数情况都能满足需求,但是某些场景也需要服务端能够将一些信息实时的推送到客户端,即实现服务器向客户端推消息的功能。比如:配置管理中心服务端需要将更新的配置推送到client端消息推送服务器需要将一些消息推送到Android、iOS客户端利用Http协议实现服务器...

2018-08-26 12:08:25 5469

原创 Linux文件atime ctime mtime

Linux文件atime ctime mtimeLinux文件一般来说都具有三个重要的时间 - atime:access time - ctime: change time - mtime: modification timeatime很好理解,对文件的访问都会更改这个时间,ctime则是文件的内容或者属性更改的时间,而mtime是文件的内容被修改后,才会改变。举个例子:...

2018-08-25 12:11:33 955

原创 Java String 乱码

Java String 乱码问题今天在工作的时候,本地能正常work的的代码,推到预发环境却出现了部分数据乱码。一开始是怀疑提供这些数据后端服务用错了编码方式,但是本地能work直接否定了这种怀疑。问题出在预发和本地环境的系统编码方式不一致,本地系统默认是UTF-8,而预发默认是GBK编码,因此导致预发环境出现乱码。new String(byte[] bytes)如果不指定编码方式,则...

2018-08-25 00:54:55 3955

原创 HBase非原理性浅析

工作中我因为任务需要而接触到了大数据产品,已经不记得当时查看的表名叫什么名字了,但是该表的大小让我着实吃了一惊,多达数PB。虽然对于大数据的概念早已不陌生,但是对于什么是大数据,大数据到底有多大 还是没有很好的理解和体会。直到设身处地的观察到大数据在公司日常的运用,我才明白什么是大数据以及大数据是怎么被运用到公司业务中的。当时我脑海中有很多疑惑:这么多数据是怎么存储下来的?这些数据都是些什么数据?...

2018-07-29 21:21:50 299

原创 git cherry-pick

常用的git命令有很多,一些基本的命令比如git clone、git pull、git push等就没有必要作为记录了。而有些命令,只在某些情况下才需要使用到。比如最近在开发的过程中遇到这样一种情况:我从主分支master checkout出了一个新的开发分支dev_some,而由于某些原因,dev_some最终是不能合并回master分支的。但是在某一段时间t内我在dev_some提交的...

2018-07-21 22:59:28 990

原创 Java8特性:函数接口和集合操作

Java8特性:函数接口和集合操作Function简单函数Function类似于数学中的函数: y=f(x)y=f(x)y = f(x) 输入时x,输出是y,函数关系是f。Java8中的函数的写法类似于lambda表达式:Function<Integer, Integer> f = x -> x + 5;int y = f.apply(7...

2018-07-19 23:12:12 290

原创 SLF4J和Log4j,Logback等的关系

slf4j的全称是Simple Logging Facade for Java,是各种日志系统实现(例如log4j, logback和java.util.logging)的抽象层或者外观层。因此不难看出,slf4j类似于各种日志框架的api层,这样如果我们在我们需要使用日志的地方,采用slf4j的api而不是采用特定的日志框架的api去产生日志,在可扩展性和可维护性上得到了提高。对于一些项...

2018-07-16 23:49:22 1013

原创 开源产品基础组件

计算FlinkSparkHadoopStorm存储HDFSHBaseCassandraCeph消息队列RocketMQSwift虚拟化OpenStack数据库MySQL缓存Redis日志Flume搜索引擎LucenceElasticSearchSolar框架Spring...

2018-06-25 23:34:38 324

原创 MySQL的Binlog

BinlogMySQL的Binlog是一些记录了MySQL服务器数据变动的日志,类似于数据库的changelog。虽然bin log开启会带来性能上的一些损失,但是对于数据复制和数据恢复是十分关键的。bin log用于在主从复制的时候,master将bin log发送给slave,slave将其存为relay log,在合适的时间进行replication.bin log用户增量备...

2018-06-25 23:21:47 276

原创 第17章TCP协议

TCP协议TCP提供一种面向连接的、可靠的字节流服务。三个关键字:面向连接、可靠的(有超时重传、流量控制、拥塞控制等机制)、字节流(TCP对字节流的内容不做任何解释)。具体来讲可靠性的保证由以下机制保证:应用数据被TCP分割为最适合发送的数据块(主要是为了避免IP分片)(TCP数据段或者段segment),和UDP完全不同,应用程序产生的数据报长度将保持不变。TCP发出一个段后,启动一...

2018-05-10 09:30:19 188

原创 第18章TCP连接的建立和终止

连接的建立三次握手连接的终止四次挥手最大报文长度MSS Max Segment Size为了避免IP分片的发生,所以在三次握手阶段会协商最大报文长度。TCP的半关闭与半打开TCP提供了连接的一端在结束它的发送后还能接收来自另一端数据的能力,这就是所谓的半关闭。当主动关闭端发送了FIN后,还能继续接收来自被动关闭方的数据。如果一方已经关闭或异常终止连接而另一方却还不知...

2018-05-10 09:21:15 211

原创 shell内建命令和外部命令

shell内建命令和外部命令今天在使用Java的Runtime.exe()执行一个Linux命令的时候,出现了错误,通过问题的解决学习到了shell的内建命令和外部命令的差别。问题:使用如下Java代码执行一个命令的时候,报错提示说:不能运行source命令,原因是不存在该文件或目录。String cmd = "source activate tensorflow";Proce...

2018-04-24 17:31:35 1474

原创 线段树

线段树 线段树(英语:Segment tree)是一种二叉树形数据结构,1977年由Jon Louis Bentley发明[1],用以储存区间或线段,并且允许快速查询结构内包含某一点的所有区间。线段树常常用对区间数据的更新和查询,主要的作用就是体现在对区间的处理。最常见就是这样一个问题:现在有一个长度为nnn的数组a[i]a[i]a_{[i]},给定一个区间iii~jjj,返...

2018-04-14 10:49:44 576

原创 数组的区间和

数组的区间和输入一个无序的数组nums,然后可以在O(1)的时间复杂度给出区间iii到jjj之间的元素和。例如:数组nums = [1,2,3,4,2,3,1],查询区间下标为1到3之间的元素的和,则返回sum = 2+3+4 = 9。如果排序的话,原来的下标之间的相对关系就变了,维护这个相对关系也是十分复杂的,因此排序是不能排序了。看到O(1)时间复杂度,想到的应该是类似Ha...

2018-04-12 11:20:43 5289

原创 几种负载均衡算法

几种负载均衡算法负载均衡在大规模Web系统中是常采用的技术,以实现高可用和高并发等目标。负载均衡可以从硬件和软件层次来实现,硬件层次实现的负载均衡性能高,配置少,但是相比于软件实现的来说灵活性不够高,另外价格经济成本也很高,软件层次实现的负载均衡性能比硬件层次低,配置较多,但是使用很灵活。软件层次的负载均衡常见的就是:HaproxyNginxLVS其中Nginx是7层负...

2018-04-10 17:40:43 1461

原创 一致性哈希算法

一致性哈希算法一致性哈希算法(Consistent Hasing,以下简称CH)是一种特殊的哈希算法,使用CH的哈希表扩容的时候,平均只有K/nK/nK/n个关键字需要被重新映射(或者移动),这里的KKK是关键字的数量,nnn指的是哈希表的槽位(slot)。而传统的哈希表在扩容的时候,几乎所有的关键字需要被重新映射(或移动)。传统的哈希表的工作流程如下: 设一个哈希表有nnn个slo...

2018-04-10 16:28:17 405

原创 Java位移运算符

Java位移运算符Java位移运算符分为两大类:左移右移x = x << n左移运算是将二进制位串向左移动n位,低位补0,而左移运算符号没有带符号和不带符号的概念。右移运算是将二进制位串向右移动n位,右移运算符有带符号和不带符号的概念:带符号右移:>> ,保留最高位(符号位),其余的高位补0,带符号右移保留被右移的数的正负符号,例如-1对应的...

2018-04-08 11:17:49 387

原创 完全背包问题

完全背包问题完全背包是背包问题的基础问题之一,和前面介绍的01背包类似,唯一的不同的是每件物品不再是只有一件,而是无限件。01背包前面已经做了简单的总结。https://blog.csdn.net/u014532901/article/details/79835712完全背包问题的描述如下:给定nnn件物品,对于第iii件物品,其价值为viviv_i,重量为wiwiw_i,与此同时...

2018-04-07 20:42:13 201

原创 01背包问题

01背包问题背包问题背包问题主要包含以下3种基本的问题:01背包完全背包多重背包其中对于每一种xx背包问题还存在一个特殊的情形,即要求背包恰好被装满,这种特殊问题的求解主要是在动态规划的状态数组的初始化做一下特殊的处理。除此之外,有时候我们不仅仅要求背包能装下的最大物品的价值,我们还希望得到具体的装包方案,这里就会涉及到状态数组的回溯(Track),下面会举例说明。...

2018-04-06 18:43:59 329

原创 装饰器模式

装饰器模式 装饰器模式:动态的为一个实例增加额外的功能,装饰器为通过继承来进行功能扩展提供了另一种途径。当通过继承父类来实现功能的扩展不太现实的时候,装饰器模式是一种很好的方式。装饰器模式有两个显著的优点:优点优点1:相比静态的继承父类来达到扩展功能,装饰器模式提供更加灵活的方式来增加额外的功能,装饰器模式能够在运行时动态的增加或者减少功能(一次或者多次);优点2:避...

2018-04-03 16:43:37 152

原创 Linux目录

Linux目录不同的Linux系统对应的目录名称和目录结构大致相同,这是因为关于目录结构有一个标准,被称为FHS FileSystem Hierarchy Standard。一般来说,FHS将目录按照可变性和可共享分为四类:不变的 可共享的 :例如 /user、/opt不变的 不可共享的:例如 /etc、/boot可变的 可共享的 :例如 /var/mail /var/spool...

2018-04-03 15:25:28 101

原创 计算机的启动过程

计算机的启动过程按下电源键到计算机启动完毕,是一个复杂的过程。大致来讲,按下电源键到计算机启动完毕会经历四个阶段:第一阶段:BIOS阶段第二阶段:确定激活分区第三阶段:确定操作系统的位置第四阶段:加载操作系统内核到内存中以上四个阶段都是围绕着如何将操作系统内核加载到内存中这一目标进行的,因此也可以看出主要是围绕着:定位操作系统内核存储的位置、加载操作系统内核来进行的。...

2018-04-03 10:32:12 3258

原创 Linux scp、ssh命令

Linux scp、ssh命令Linux用于远程主机管理的命令常见有:scp 用于本地、远程主机文件互相拷贝ssh 用户本地登录到远程主机scp全称 Secure Copy,令用于Linux之间复制文件和目录。scp是基于ssh登录进行安全的远程文件拷贝命令。语法:scp [参数] file_source file_dest常见的参数有:-1 强制scp...

2018-04-02 10:28:34 423

原创 Linux ps、top、free、uname命令

Linux ps、top、free、uname命令Linux有很多查看系统运行时状态的命令,例如查看进程信息的ps和top,以及查看内存信息的free命令和操作系统信息的uname命令等。ps全称process status,主要是查看当前运行的进程状态。语法:ps [options] 常见的基本参数有:-A 列出所有的进程-e 同 -A-au 显示较详细的信息;...

2018-03-31 09:56:44 909

原创 适配器模式

适配器模式适配器模式属于结构模式中的一种。适配器模式将一个类扥接口转化为客户希望的接口。适配器让接口彼此不兼容的类能互相协同工作。适配器模式也经常被称为wrapper模式。适配器模式主要含有几个实体:Client : Target : 客户端需要的类型接口;Adapter : 将需要适配的类(Adaptee)转化为客户需要的目标类型(Target);Adaptee : ...

2018-03-30 17:11:08 120

原创 Linux head、tail、less 、more命令

Linux head、tail 与 less 、more命令head 、 tail 命令head命令、head命令用于显示文件的开头的内容。在默认情况下,head命令显示文件的头10行内容。参数说明:-n N 指定显示头N行的内容 -n -N 文件倒数N行不显示,其他所有文件内容显示;-n +N 同 -n N-c N 指定显示头N个字符-v 总是显示文件头...

2018-03-30 11:20:58 770

原创 模板方法模式

模板方法模式模板方法模式(Template Method Pattern)是很重要的一种设计模式,它具体属于行为模式中的一种。模板方法模式在一个操作中定义了一个算法流程的大致骨架,而这些算法流程骨架中包含的一些步骤被推迟到子类去实现。这样就可以在保证算法既定流程步骤不变的情况下,给与了子类重定义算法表现的机会。模板方法模式符合面向对象设计的对扩展开放,对修改关闭的原则。模板方法实际...

2018-03-29 17:03:31 213

原创 Linux命令中的管道和重定向

Linux命令中的管道和重定向在Linux中有很多标准的命令例如find、sort、du等,可以满足我们完成文档管理、系统管理等诸多需求,但是大多时候一些复杂的需求都需要多个命令搭配起来使用,对于Linux来说一个命令对应于一个进程,因此多个命令协同工作,就涉及到多个进程的通信,Linux提供一种管道的方式来完成进程间通信。Linux很多命令都需要输入、输出以及错误信息,默认的输入输出以及...

2018-03-29 14:26:55 6690

原创 Linux du、sort、wc命令

Linux du、sort、wc命令du、sort、wc命令是常见的文件管理相关的命令。找到某个文件夹下的最大的文件统计某个文件中查找指定的pattern的个数(比如在Java的日志中统计Exception的个数)将文件夹下的文件按照大小排序dudu 全名:disk usage,du命令用于显示目录或文件的大小,du会显示指定的目录或文件所占用的磁盘空间。常用的语法...

2018-03-29 11:49:46 1122

原创 UML基础概念

UML简介UML是面向对象分析与设计的专业语言,是软件开发过程中相关人员沟通交流的语言,因此它在表达和理解抽象的软件上起着重要的作用。UML图分为两大类:静态图:用来描述系统的静态结构 类图、对象图、组件图、部署图等;动态图:用来描述系统行为的各个方面 时序图、用例图、状态图、协作图等;查阅UML官方文档,会发现关于UML的标准规范已经是十分的完善,但是由于UML想要表达太多的语义...

2018-03-28 20:48:48 3353

原创 代理模式

模式简介代理模式是设计模式中的一种结构型模式(Structure Pattern),主要应用于:提供一个代理对象(Proxy)控制对一个对象(被代理对象)的访问。UML图类图运行时的对象图如下:组成部分Proxy 持有一个Subject实例的引用,以便在Client访问Subject实例的时候,将请求转发给Subject实例;对客户端提供和Subj...

2018-03-28 17:16:54 163

原创 网易2019实习生招聘编程第3题——牛牛找工作

为了找到自己满意的工作,牛牛收集了每种工作的难度和报酬。牛牛选工作的标准是在难度不超过自身能力值的情况下,牛牛选择报酬最高的工作。在牛牛选定了自己的工作后,牛牛的小伙伴们来找牛牛帮忙选工作,牛牛依然使用自己的标准来帮助小伙伴们。牛牛的小伙伴太多了,于是他只好把这个任务交给了你。 输入描述: 每个输入包含一个测试用例。 每个测试用例的第一行包含两个正整数,分别表示工作的数量...

2018-03-28 14:04:20 515

原创 Linux find、locate、whereis、which命令

Linux中用户查找文件的命令有很多,常见的有findlocatewhereiswhichfind Linux find命令用来在指定目录下查找文件。任何位于参数之前的字符串都将被视为欲查找的目录名。如果使用该命令时,不设置任何参数,则find命令将在当前目录下查找子目录与文件。并且将查找到的子目录和文件全部进行显示。常见的语法为find path -o...

2018-03-28 10:20:31 339

原创 Linux 常用命令

Linux 常用命令分为如下6大类:文件和目录操作系统管理程序设计工具 如编辑器和编译器文档处理过滤器其他文件和目录操作ls list ls -l每行列出一个文件的详细信息,例如文件的权限信息、大小、创建日期、文件名等ls -h h是human的缩写,以人类可读的方式显示信息,例如文件大小是按照K M G显示的,而不是默认的Byte显示。mkdir mkdir ...

2018-03-27 18:25:17 108

原创 Java线程池

1. Java线程与线程池1.1 线程相比于“繁重”的进程,线程可以算是一种轻量级的进程,大多数操作系统都是支持以线程作为调度执行单元以提高系统的并发性。毫不例外,Java也支持多线程。多个线程交替甚至并行的执行,特别在多处理器时代,可以极大的提高资源的利用率。通常我们使用多线程来并发的执行多个具有明显边界的任务,例如Web服务器使用多线程来同时处理来自多个用户的请求,每一个请求便

2018-01-27 15:37:42 345

原创 Morris 遍历

1. 二叉树遍历树是最重要的数据结构之一,而树的遍历是树最基本的操作。二叉树的遍历一般来说有三种遍历次序:前序遍历 中序遍历后序遍历而这三种遍历次序都可以采用递归和非递归的方式来完成。就时间、空间的复杂度来讲,因为非递归需要借助额外的Stack来完成操作,所以递归和非递归的时间复杂度都是O(n),O(logn)。那么有没有另外的不同的二叉树遍历方法,在时间或空间

2018-01-27 15:35:37 4154

原创 数据库索引(一)

1.概述大量的结构化数据通常被存储在数据库中,通过简单的SQL语句,我们可以方便的查询、修改、插入、删除这些数据。例如当我们执行:SELECT * FROM USER WHERE userName = 'A';DBMS会将表中所有用户名等于A的用户的记录返回给我们,但随着表中的记录越来越多,比如说从10000增加到1000万,这时候我们往往会发现查询的速度会变慢很多。这时候,通常的

2018-01-11 08:50:47 577

原创 MySQL数据库事务隔离级别

1.数据库事务 事务是用户定义的一个数据库操作系列,这些操作要么全做要么全不做,是一个不可分割的工作单位。事务是数据库中重要的概念,通常以BEGIN TRANSACTION开始,以COMMIT或者ROLLBACK结束。数据库事务具有四个著名的特性:ACID。Automatic原子性:即事务中的操作要么都做,要么都不做。Consistency一致性:事务的执行的结果必须

2018-01-05 10:16:47 1782

原创 HashMap工作原理和扩容机制

HashMap工作原理HashMap扩容1 HashMap的扩容时机2 HashMap的扩容过程补充1 容量必须是2的幂2 rehashReferences1. HashMap工作原理HashMap作为优秀的Java集合框架中的一个重要的成员,在很多编程场景下为我们所用。HashMap作为数据结构散列表的一种实现,就其工作原理来讲单独列出一篇博客来讲都是不过分的。由于本文主要是简单总

2017-12-30 10:23:30 51203 13

空空如也

空空如也

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

TA关注的人

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