自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(36)
  • 收藏
  • 关注

原创 分布式一致性协议

分布式一致性是保证主本与副本,以及副本之间的数据一致的问题。一致性协议:Paxos  如果主节点发生故障,那么备节点就会提议自己成为主节点。因为会存在网络分区的缘故,所以就会有多个备节点提议自己成为主节点并且提议的时间可能也是不相同的,会存在先后顺序。那么 Paxos 协议就用来保证,有多个提交协议的时候且顺序不同时,如何选举出唯一的主节点。只有一个提议者(1) 提议者发送请求给接受者,接...

2020-04-30 19:46:20 384

原创 select、poll、epoll

select(1)使用copy_from_user从用户空间拷贝fd_set到内核空间(2)注册回调函数__pollwait(3)遍历所有fd,调用其对应的poll方法(对于socket,这个poll方法是sock_poll,sock_poll根据情况会调用到tcp_poll,udp_poll或者datagram_poll)(4)以tcp_poll为例,其核心实现就是__pollwait...

2020-04-29 19:13:17 904

原创 HBase删除数据

  HBase不会定位到需要删除或更新的记录进行操作。由于HBase底层依赖HDFS,对于HBase删除操作来说,HBase无法在查询到之前的数据并进行修改,只能顺序读写,追加记录。为了更新或删除数据,HBase会插入一条一模一样的新的数据,但是key type会标记成Delete状态,以标记该记录被删除了。在读取的时候如果取到了是Delete,而且时间是最新的,那么这条记录肯定是被删掉了。HF...

2020-04-29 13:50:51 1867

原创 JDK1.8 新特性

jdk1.8新特性知识点:Lambda表达式函数式接口*方法引用和构造器调用Stream API接口中的默认方法和静态方法新时间日期API在jdk1.8中对HashMap等map集合的数据结构优化。HashMap数据结构的优化:原来的HashMap采用的数据结构是哈希表(数组+链表),在1.8之后,在数组+链表+红黑树来实现HashMap,1.8之后链表新进元素加到末尾,1.8之...

2020-04-29 10:41:42 262

原创 TSP

旅行商问题,即TSP问题(Traveling Salesman Problem)又译为旅行推销员问题、货郎担问题,是数学领域中著名问题之一。假设有一个旅行商人要拜访n个城市,他必须选择所要走的路径,路径的限制是每个城市只能拜访一次,而且最后要回到原来出发的城市。路径的选择目标是要求得的路径路程为所有路径之中的最小值。一般分2大类:完全图:两两城市间都有直达的路线,这条路线不需要经过中间其他节点...

2020-04-29 00:10:06 273

原创 Hive存储引擎

  为什么Hive会有多种存储格式?因为Hive是文本批处理系统,所以就存在一个往Hive中导入数据的问题,首先数据的存储格式有多种,比如数据源是二进制格式, 普通文本格式等等,而Hive强大之处不要求数据转换成特定的格式,而是利用Hadoop本身InputFormat API来从不同的数据源读取数据,同样地使用OutputFormat API将数据写成不同的格式。所以对于不同的数据源,或者写出不...

2020-04-27 22:21:26 1020

原创 Hive中order by、sort by、distribute by、cluster by的区别

order by  order by会对输入做全局排序,因此只有一个Reducer(多个Reducer无法保证全局有序),会导致当输入规模较大时,消耗较长的计算时间。sort by  sort by不是全局排序,其在数据进入reducer前完成排序,因此,如果用sort by进行排序,并且设置mapred.reduce.tasks>1,则sort by只会保证每个reducer的输出有...

2020-04-27 20:03:47 293

原创 数据库锁的分类

  锁是网络数据库中的一个非常重要的概念,当多个用户同时对数据库并发操作时,会带来数据不一致的问题,所以,锁主要用于多用户环境下保证数据库完整性和一致性。数据库锁出现的目的:处理并发问题并发控制的主要采用的技术手段:乐观锁、悲观锁和时间戳。InnoDB支持表、行(默认)级锁,而MyISAM支持表级锁。锁分类从数据库系统角度分为三种:排他锁、共享锁、更新锁。从程序员角度分为两种:一种是悲观锁,...

2020-04-27 00:53:07 919

原创 JVM OOM

JVM内存溢出分为两种情况:OutOfMemoryError和StackOverflowErrorOutOfMemoryError是在程序无法申请到足够的内存的时候抛出的异常StackOverflowError是线程申请的栈深度大于虚拟机所允许的深度所抛出的异常java.lang.OutOfMemoryError:Java heap space 堆内存溢出解决办法:设置堆内存大小,设置...

2020-04-26 21:44:22 266

原创 工厂模式

工厂模式是用工厂方法代替new操作的一种模式。工厂模式方便创建同种产品类型的复杂参数对象。工厂模式重点就是适用于 构建同产品类型(同一个接口基类)的不同对象时,这些对象new很复杂,需要很多的参数,而这些参数中大部分都是固定的。简单(静态)工厂抽象一个面条基类,(接口也可以),这是产品的抽象类。public abstract class INoodles { /** * 描...

2020-04-26 17:41:30 191

原创 TCP/IP协议 | 四层模型

TCP/IP模型应用层、传输层、网络层、网络接口层。应用层:  向用户提供一组常用的应用程序,比如电子邮件、文件传输访问、远程登录等。远程登录TELNET使用TELNET协议提供在网络其它主机上注册的接口。TELNET会话提供了基于字符的虚拟终端。文件传输访问FTP使用FTP协议来提供网络内机器间的文件拷贝功能。传输层:  提供应用程序间的通信。其功能包括:一、格式化信息流;二、提供可靠...

2020-04-26 00:13:47 4521

原创 GC时间过长优化方法

  应用运行过程中是不希望出现长时间的GC停顿的,因为这会影响服务的可用性,导致用户体验变差,甚至会严重损害一些关键的应用程序。本文将会列出可能导致GC停顿时间长的一些原因和解决方案。对象创建的速度过高  如果应用创建对象的速度非常高,随之而来的就是GC频率也会变快,然后会导致GC的停顿时间变长。所以说,优化代码以降低对象的创建速率是降低GC停顿时间最有效的方法。可以使用JProfiler, ...

2020-04-25 15:38:36 7245

原创 Hive窗口函数/内部、外部表

在SQL处理中,窗口函数都是最后一步执行,而且仅位于Order by字句之前。聚合函数+over查询在2015年4月份购买过的顾客及总人数,使用窗口函数实现select name,count(*) over ()from t_windowwhere substring(orderdate,1,7) = '2015-04'partition by子句Over子句之后第一个提到的就是P...

2020-04-25 14:43:55 314

原创 HBase中不建议使用过多列族

HBase列族个数限制列族数对 Flush 的影响列族数对 Split 的影响列族数对 Compaction 的影响列族数对 HDFS 的影响列族数对 RegionServer 内存的影响列族数对 Flush 的影响  在 HBase 中,调用 API 往对应的表插入数据是会写到 MemStore 的,而 MemStore 是一种内存结构,每个列族对应一个 MemStore(和零个或多个 HF...

2020-04-24 19:42:22 1288

原创 Java疑难杂问③

public class MaxHeap<E extends Comparable<E>> { private Array<E> data;//维护一个自定义数组 public MaxHeap(int capacity) { data =new Array<>(capacity); } public MaxHeap() { data=...

2020-04-24 00:54:02 237

原创 Spark Streaming从Kafka中读数据的两种方式

   Spark Streaming流式处理kafka中的数据,首先是把数据接收过来,然后转换为Spark Streaming中的数据结构DStream。接收数据的方式有两种:利用Receiver接收数据 与 Direct。基于Receiver的方式流程:此方法使用Receiver接收数据。Receiver是使用Kafka高阶API接口实现的。与所有接收器一样,从Kafka通过Receiv...

2020-04-23 22:29:34 1085

原创 HBase如何快速查询

   HBase能提供实时计算服务主要原因是由其架构和底层的数据结构决定的,即由LSM-Tree(Log-Structured Merge-Tree) + region分区 + Cache决定——客户端可以直接定位到要查数据所在的HRegion server服务器,然后直接在服务器的一个region上查找要匹配的数据,并且这些数据部分是经过cache缓存的。   HBase会将数据保存到内存中,...

2020-04-23 20:31:23 2773

原创 Linux的进程调度

Cookie和Session的区别:Cookie中只能保存ASCII字符串,Session中可以保存任意类型的数据隐私策略不同。 Cookie存储在客户端,对客户端是可见的,可被客户端窥探、复制、修改,发生Cookie欺骗。而Session存储在服务器上,不存在敏感信息泄露的风险有效期不同。 Cookie的过期时间可以被设置很长。Session依赖于名为JSESSIONI的Cookie,其...

2020-04-22 17:15:46 391

原创 ==和equals

==和equals   对于== ,比较的两个对象的内存空间的地址,如果相等,则说明这两个引用实际是指向同一个对象地址的。值类型是存储在内存中的栈中,而引用类型的变量在栈中仅仅是存储引用类型变量的地址,而其本身则存储在堆中。   如果作用于基本数据类型的变量,则直接比较其存储的 “值”是否相等;如果作用于引用类型的变量,则比较的是所指向的对象的地址。   对于基本数据类型(byte,shor...

2020-04-22 09:59:02 193

原创 TCP/UDP

TCP: 一种面向连接的、可靠的、基于字节流的传输层通信协议。UDP:一种无连接的传输层协议,提供面向事务的简单不可靠信息传送服务。UDP具有较好的实时性 适用场景:短消息,多客户端,对信息可靠性要求不高,对效率要求高。每一条TCP是点对点的,UDP支持更广泛 一对一,多对一,多对多。TCP对资源要求较高,UDP对资源要求较少。TCP面向数据流, UDP面向数据报。TCP/IP 实现可靠...

2020-04-19 20:40:09 640

原创 数据库调优

数据库优化问题从以下几个层面入手:根据服务层面:配置mysql性能优化参数从系统层面增强mysql的性能:优化数据表结构、字段类型、字段索引、分表,分库、读写分离等等从数据库层面增强性能:优化SQL语句,合理使用字段索引从代码层面增强性能:使用缓存和NoSQL数据库方式存储,如MongoDB/Memcached/Redis来缓解高并发下数据库查询的压力减少数据库操作次数,尽量使用数据库...

2020-04-19 17:52:40 726

原创 引用传递与值传递

   值传递(pass by value)是指在调用函数时将实际参数复制一份传递到函数中,这样在函数中如果对参数进行修改,将不会影响到实际参数。   引用传递(pass by reference)是指在调用函数时将实际参数的地址直接传递到函数中,那么在函数中对参数所进行的修改,将影响到实际参数。   JAVA中只有值传递,没有引用传递。地址值也是值,传递地址值不一定就是引用传递。值传递和引用传...

2020-04-19 15:37:48 204

原创 http完整请求过程

浏览器输入URL全过程1 DNS域名解析2 与目的主机进行TCP连接(三次握手)3 发送HTTP请求4 服务器处理请求5 返回响应结果6 与目的主机断开TCP连接(四次挥手)7 浏览器解析渲染页面1.域名解析成IP地址访问目标地址有两种方式:①使用目标IP地址访问。由于IP地址是一堆数字不方便记忆,于是有了域名这种字符型标识。②使用域名访问。域名解析就是域名到IP地址的转换过...

2020-04-19 13:18:18 336

原创 死锁

死锁概念在Java中使用多线程,就会有可能导致死锁问题。死锁会让程序一直卡住,不再程序往下执行。只能通过中止并重启的方式来让程序重新执行。死锁成因当前线程拥有其他线程需要的资源当前线程等待其他线程已拥有的资源都不放弃自己拥有的资源死锁场景3.1锁顺序死锁线程是交错执行的,那么就很有可能出现以下的情况:线程A调用 MyThread ()方法,得到o1锁同时线程B调用 MyTh...

2020-04-19 00:59:43 483

原创 HTTPS/HTTP

HTTPS  HTTPS其实是有两部分组成:HTTP + SSL / TLS,即在HTTP上又加了一层处理加密信息的模块。服务端和客户端的信息传输都会通过TLS进行加密,所以传输的数据都是加密后的数据。客户端发起HTTPS请求用户在浏览器里输入一个https网址,然后连接到server的端口服务端的配置采用HTTPS协议的服务器必须要有一套数字证书,这套证书就是一对公钥和私钥。...

2020-04-18 21:44:56 2214

原创 List与Set

ListList继承了Collection,是有序的列表。可以允许重复的对象可以插入多个null元素是一个有序容器,保持了每个元素的插入顺序,输出的顺序就是插入的顺序常用的实现类有 ArrayList、LinkedList 和 Vector。①ArrayList是基于数组实现的,是一个数组队列。可以动态的增加容量②LinkedList是基于链表实现的,是一个双向循环列表。可以被当...

2020-04-17 23:15:13 185

原创 LeetCode—字符串处理

计算器224.基本计数器实现一个基本的计算器来计算一个简单的字符串表达式的值。字符串表达式可以包含左括号 ( ,右括号 ),加号 + ,减号 -,非负整数和空格 。class Solution { public int calculate(String s) { int res=0,sign=1; Stack<Integer> stack=...

2020-04-17 16:06:06 414

原创 java类的四大基本特性

面向对象的特性:抽象,封装,继承,多态。抽象  抽象类:包含抽象方法的类称之为抽象类,但不意味着抽象类中只能有抽象方法,它和普通类一样,可以拥有普通的成员变量、方法。抽象类不能被实例化。抽象类的子类必须给出抽象类中的抽象方法的具体实现,除非该子类也是抽象类抽象类中不一定包含抽象方法,但是有抽象方法的类必定是抽象类抽象类中的抽象方法只是声明,不包含方法体,就是不给出方法的具体实现也就是方...

2020-04-16 23:30:25 1913

原创 socket

建立Socket连接至少需要一对套接字,其中一个运行于客户端,称为ClientSocket ,另一个运行于服务器端,称为ServerSocket 。套接字之间的连接过程分为三个步骤:服务器监听,客户端请求,连接确认。服务器监听:服务器端套接字并不定位具体的客户端套接字,而是处于等待连接的状态,实时监控网络状态,等待客户端的连接请求客户端请求:指客户端的套接字提出连接请求,要连接的目标是服务器...

2020-04-16 22:30:50 382

原创 线程/进程通信方式

进程间的通信方式管道(pipe):管道是一种半双工的通信方式,数据只能单向流动,而且只能在具有血缘关系的进程间使用。进程的血缘关系通常指父子进程关系命名管道(named pipe):命名管道也是半双工的通信方式,但是它允许无亲缘关系进程间通信信号量(semophore):信号量是一个计数器,可以用来控制多个进程对共享资源的访问。它通常作为一种锁机制,防止某进程正在访问共享资源时,其他进程也...

2020-04-15 16:56:35 620

原创 递归/动态规划/迭代/贪心

基本概念递归:程序调用自身的编程技巧称为递归,是函数自己调用自己。一个函数在其定义中直接或间接调用自身的一种方法,它通常把一个大型的复杂的问题转化为一个与原问题相似的规模较小的问题来解决,可以极大的减少代码量.递归的能力在于用有限的语句来定义对象的无限集合.使用递归要注意的有两点:1)递归就是在过程或函数里面调用自身;2)在使用递归时,必须有一个明确的递归结束条件,称为递归出口.递归分...

2020-04-15 13:42:32 378

原创 HashMap疑难杂问

HashMap到底是插入链表头部还是尾部在jdk1.8之前是插入头部的,在jdk1.8中是插入尾部的。分析链表插入的位置,重点是分析HashMap的put方法。jdk1.6put方法的代码如下:public V put(K key, V value) { if (key == null) return putForNullKey(value); in...

2020-04-12 00:00:24 335

原创 Kafka与Flume

  Kafka和Flume都是日志系统。Kafka是分布式消息中间件,自带存储,提供push和pull存取数据功能。FlumeFlume 是管道流方式,分为agent(数据采集器),collector(数据简单处理和写入),storage(存储器)三部分,每一部分都是可以定制的。比如agent采用RPC(Thrift-RPC)、text(文件)等,storage指定用HDFS做。Kafka做日志缓...

2020-04-11 21:04:40 315

原创 十大经典排序算法

冒泡排序(Bubble Sort)  冒泡排序是一种简单的排序算法。它重复地走访过要排序的数列,一次比较两个元素,如果它们的顺序错误就把它们交换过来。走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。这个算法的名字由来是因为越小的元素会经由交换慢慢“浮”到数列的顶端。1.1 算法描述步骤1: 比较相邻的元素。如果第一个比第二个大,就交换它们两个;步骤2: 对每一对相...

2020-04-11 00:24:15 342

原创 PV、UV、IP

PV值  PV(page view)即页面浏览量或点击量,是衡量一个网站或网页用户访问量。PV值是所有访问者在0点到24点内看了某个网站多少个页面或某个网页多少次。PV是指页面刷新的次数,每一次页面刷新,就算做一次PV流量。  度量方法就是从浏览器发出一个对网络服务器的请求(Request),网络服务器接到这个请求后,会将该请求对应的一个网页(Page)发送给浏览器,从而产生了一个PV。那么在...

2020-04-09 20:44:42 179

原创 Scala隐式转换与柯里化

  Scala的implicit关键字,包括两个方面的内容:隐式参数和隐式转换。  隐式参数:把一些变量声明为隐式参数,把一些方法的参数声明为可以支持隐式参数的,当调用方法时,如果没有传递该参数,那么可以去使用隐式参数。  隐式转换:首先提供一些类型转换的能力(通过隐式类和隐式方法),然后在调用某些方法时,当某些对象的类型不匹配,可以使用对应的隐式转换去转换对象的类型。implicit使用的...

2020-04-09 11:48:44 264

空空如也

空空如也

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

TA关注的人

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