自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(53)
  • 资源 (24)
  • 收藏
  • 关注

原创 面试必备系列JUC(8)-- hashmap和concurrenthashmap详解

文章目录前言一、HashMapjava7 HashMapjava8 HashMap为什么HashMap是线程不安全的?ConcurrentHashMapJava7 ConcurrentHashMapJava8 ConcurrentHashMap面试总结前言宁中则乃是华山派掌门人君子剑岳不群的妻子,而君子剑岳不群却又历来以“伪君子”而著称,这可以说是最大的讽刺了。但是华山女侠宁中则,倒是实实在在的能担得起“女侠”二字。 一、HashMap令狐冲:师娘,最近我去猪猪厂面试了,面试官在一面考察基.

2021-10-09 15:09:01 468

原创 面试必备系列JUC(7)-- AQS和reentrantlock详解

文章目录前言一、AQS的江湖地位1.1 什么是AQS?1.2 AQS基本原理二、ReentrantLock2.1 概述2.2 核心数据结构和思想2.3 可重入锁的理解常考问题前言冲虚道长是武当派的掌门,武功高强,精通武当太极剑法,无人能敌。在任我行最佩服的三个半人中,冲虚道长属那半个。任我行武功高强,性情高傲,能得到他的认可也是不容易的事,把冲虚道长列为半个,可见任我行对冲虚道长也有不服,但是却又不得不认可他。一、AQS的江湖地位1.1 什么是AQS?令狐冲:道长,今日我前来是为了相求AQS.

2021-09-14 17:44:49 410

原创 不可不知的KeepAlive科普

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录前言一、什么是keepAlive?二、TCP之KeepAlive详解2.1 为什么需要KeepAlive?2.2 如何开启KeepAlive?2.3 keepAlive的局限性HTTP之Keep-Alive详解3.1 http为什么需要Keep-Alive?前言近日,我的朋友广叔来和我讨论keepalive的相关知识,由于他最近项目上要用,但是他呀又不太了解,所以我就给他讲解了一番,keepalive其实用的也挺多的,在此记录

2021-09-09 16:34:15 1516

原创 面试必备系列JUC(6)--八锁详解

文章目录前言一、锁总述1.1. 乐观锁 VS 悲观锁2.读入数据总结前言最近有读者在后台私信,让我讲讲java里常见的锁,第一次被读者提要求,还是很高兴的,查阅了一些资料,尽量将常见的锁的概念讲的清清楚楚,希望读者读后,能对8锁有个清晰的认知!今天给大家介绍我一个很有趣的好友,秃头,干瘦,可能喜欢女生的广叔!!长相略微显老(认识五年了,颜值一直在40岁上下)提示:以下是本篇文章正文内容,下面案例可供参考一、锁总述广叔:令狐兄,你知道java中常见的锁吗?令狐冲:当然知道,话说当年java

2021-09-06 20:23:37 600

原创 面试必备系列JUC(5)--锁升级锁优化

文章目录前言一、什么是java锁优化升级?二、锁如何升级2.1 锁的四种状态2.2 synchronized在java对象头中的存储2.3 Monitor2.4 锁的升级过程2.4.1 偏向锁2.4.2 轻量级锁(自旋锁)2.4.3 重量级锁面试必问前言在金庸先生的笑傲江湖里,风清扬也好,令狐冲也罢,其实是传统武侠世界谢幕的挽歌,是信仰自由与个性的武侠精神熄灭前残留的一点火星,它在昏沉压抑的江湖中看起来是那么显眼,不是因为它真的明亮,而是这个世界实在已经太黑暗了。 一、什么是java锁优

2021-08-29 14:02:00 373

原创 面试必备系列JUC(4) -- synchronized超详解

文章目录前言一、pandas是什么?二、使用步骤1.引入库2.读入数据总结前言提示:这里可以添加本文要记录的大概内容:例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容。提示:以下是本篇文章正文内容,下面案例可供参考一、pandas是什么?示例:pandas 是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的。二、使用步骤1.引入库代码如下(示例):import numpy as npimport

2021-08-24 20:38:08 165

原创 面试必备系列JUC(3) -- CAS超详解

面试必备系列JUC(3) -- CAS超详解 文章目录前言一、什么是CAS?二、如何使用CAS1.原子包atomic2.CAS缺点3.常考的面试题前言在JDK 早期版本中,Java是靠synchronized关键字保证线程间数据同步的,同样也带来了一系列问题:(1)在多线程竞争下,加锁、释放锁会产生上下文切换和调度耗时。(2)当一个线程持有锁事,其它所有需要此锁的线程必须挂起等待。(3)优先级高的线程和优先级低的线程无法区分。虽然,volatile是一个潜在的解决方案,但是volat..

2021-08-20 01:28:52 233

原创 面试必备系列JUC(2) -- java内存模型(JMM)超详解

带你了解最详细的JMM内存模型,让你面试无忧,咱们一起加油!

2021-08-18 19:37:12 397 1

原创 面试必备系列JUC(1)--volitale 超详解

田伯光:令狐兄,近日我翻阅JUC书籍的时候,对于volitale关键字颇有些心得,不知今日可否探讨一二?令狐冲:田兄太客气了,那今日我们便在此处比划比划。田兄先说下你对volitale的理解吧。田伯光:volatile是Java juc(java.util.concurrent)提供的一种轻量级的同步机制。相比于synchronized(synchronized通常称为重量级锁,之后的文章会有讲述),volatile更轻量级,因为它不会引起线程上下文的切换和调度。并且使用volitale关键字,可以保证

2021-08-17 01:24:22 483 2

原创 C++使用过程中容易忽略的小细节

说明:此篇文献是读者在阅读《c++primer plus》中抓取的容易忽略的小知识点,如有不当之处,敬请指正。 1、运算符sizeof 可对类型名和变量名使用sizeof运算符。对类型名如(如int)使用sizeof运算符时,应将名称放到括号中;但是对于变量名(int a;中的a)使用该运算符时,括号时可选的(可有,亦可无)。 2.如果知道变量的初始值应该是什么,则应该对它进行初始化,将变量

2021-01-21 20:02:54 131

原创 hadoop源码编译的编译脚本文件

编译脚本如下:#!/bin/bashmvn package -Pdist,native,nexus -DskipTests=true -Dmaven.javadoc.skip=true -Dtar -Dcontainer-executor.conf.dir=/etc/hadoop/ -Drequire.snappy -Dbundle.snappy -Dsnappy.lib=/opt/develop/snappy/lib -Dsnappy.prefix=/opt/develop/snappy -Dre

2020-11-05 11:37:07 216

原创 hadoop使用LinuxContainerExecutor后使用root用户提交任务报错--源码修改

问题描述在hadoop3.2.1的版本中,配置cgroup对yarn的cpu资源进行隔离之后,发现,使用root用户在yarn上提交任务时,无法提交成功,并会报错:Runing as root is not allowed!最后将这些错误在源码中搜索发现以下内容:/** * Is the user a real user account? * Checks: * 1. Not root * 2. UID is above the minimum configured. * 3

2020-09-03 16:09:49 804 1

原创 大数据平台中kudu的地位和价值(为什么会有kudu)

kudu是什么kudu和Hbase类似也是一个分布式数据库,据官方给它的定位是提供”fast analytics on fast data”(在更新更及时的数据上做更快的分析)。据说Cloudera曾经想直接通过修改HBase来支持kudu现在的功能,但是Kudu的数据模型和磁盘存储都与Hbase不同,改造会非常大,所以Cloudera决定干脆开发一个全新的存储系统。kudu 为什么重要随着现在大数据平台的不断创新和发展,无论是在企业内部还是开源网站上,新的组件产品的发布都让人应接不暇,大家对此都

2020-08-24 16:41:10 3404

原创 Hadoop 链接数过高导致的问题

Hadoop 链接数过高导致的问题运行时候报异常could only be replicated to 0 nodes instead of minReplication (=1). There are 1 datanode(s) running and no node(s) are excluded in this operation.根据报错的意思来看,有1个datanode正在运行,而且...

2020-03-30 15:43:05 1575

翻译 HDFS常见的问题和处理方法积累

Hadoop常见问题与解决办法问题1:reduce预处理阶段shuffle时获取已完成的map的输出失败次数超过上限问题描述:问题剖析:解决方案:问题2:Too many fetch-failures问题描述:问题剖析:解决方案:问题3:处理MR速度特别的慢问题描述:问题剖析:解决方案:问题4:能够启动datanode,但无法访问,也无法结束问题描述:问题剖析:解决方案:问题5:节点断联问题描述:...

2019-08-14 14:57:58 6632

原创 HDFS客户端写操作与输出流详解

客户端在执行文件写操作前,首先需要调用DistributedFileSystem.create()创建一个空的HDFS文件,然后create()方法会调用DFSClient.create()方法创建DFSOutputStream对象,并将这个对象包装成HDFSDataOutputStreams输出流,这样客户端就可以在输出流HDFSDataOutputStream对象上调用write方法执行写操作...

2018-03-17 11:47:56 1799

原创 HDFS客户端读操作的详细过程

在HDFS客户端实现中,最重要也是最复杂的一部分就是文件的读写操作。打开文件 当客户端读取一个HDFS文件时,首先会调用DistributedFileSystem.open()方法打开这个文件,open方法首先会调用DFSCklient.open()方法创建HDFS文件对应的DFSInputStream输入流对象,然后构建一个HDFSDataInputSream对象包装DFSInputStr...

2018-03-17 10:22:13 1580

原创 DataXceiver写数据的过程详解

在上篇文章中,已经介绍了DataXceiver读取数据的详细过程。这篇文章就讲解一下流式接口向数据节点写数据的操作,DataTransferProtocol.write()方法给出了写操作的接口定义,操作码是80,DataXceiver.writeblock()则真正实现了DataTransferProtocol.writeblock()方法。 我们知道,HDFS使用数据流管道来写数据,DFSC...

2018-03-15 22:09:10 909

原创 详解DataXceiver读数据的流程和零拷贝数据传输

我们知道DataXceiverServer主要用于监听并接收流式接口请求,然后建立并启动DataXceiver对象。DataXceiver是Receiver的子类,DataTransferProtocol真正的响应操作都是在DataXceiver类中实现的。 流式接口中最重要的一个部分就是客户端从数据节点上读取数据块,DataTransferProtocol.readBlock()给出了读取操作...

2018-03-15 16:29:42 845

原创 HDFS1.X架构和HDFS2.X架构

HDFS1.X的架构从逻辑空间上可以分为两层。 Namespace 和 Block Storage Service;   其中,Namespace 层面包含目录、文件以及块的信息,支持对Namespace相关文件系统的操作,如增加、删除、修改以及文件和目录的展示;   而Block Storage Service层面又包含两个部分:   ①Block Management(块管理)维护集群...

2018-03-13 20:16:59 1455

原创 HDFS高可用(HA)之ZKFC详解

对于NameNode的高可用可以简单分为共享editLog机制和ZKFC对NameNode状态的控制。有关共享editlog机制已经在上篇文章做了详述,感兴趣的朋友可以去看看。 这篇文章的重点放在ZKFC对于Namenode的控制上。部署示意图 FC是要和NN一一对应的,两个NN就要部署两个FC。它负责监控NN的状态,并及时的把状态信息写入ZK。它通过一个独立线程周期性的调用NN上...

2018-03-13 15:40:58 18801 2

原创 HDFS的高可用机制详解

在Hadoop2.X之前,Namenode是HDFS集群中可能发生单点故障的节点,每个HDFS集群只有一个namenode,一旦这个节点不可用,则整个HDFS集群将处于不可用状态。 HDFS高可用(HA)方案就是为了解决上述问题而产生的,在HA HDFS集群中会同时运行两个Namenode,一个作为活动的Namenode(Active),一个作为备份的Namenode(Standby)。备份的N...

2018-03-13 11:14:32 12917 6

原创 对于Zookeeper中提及的排它锁、共享锁和悲观锁、乐观锁的理解

排它锁(简称X锁),又称为写锁或独占锁,是一种基本的锁类型。如果事务T1对数据对象O1加上了排它锁,那么在整个加锁期间,只允许事务T1对O1进行读取和更新操作,其它任何事务都帮你再对这个数据对象进行任何类型的操作,——直到T1释放了排它锁。从上边讲解的排它锁的基本概念中,我们可以看到,排它锁的核心是如何保证当前有且仅有一个事务获得锁,并且锁被释放后,所有等待获取锁的事务都能被通知到。

2018-01-10 14:31:22 2060

原创 关于堆和栈的区别

在进行C/C++编程时,需要程序员对内存的了解比较精准。经常需要操作的内存可以分为以下几个类: 栈区:由编译器自动分配和释放,存放函数的参考值、局部变量的值等。 其操作方式有些类似于数据结构中的栈。 堆区:一般由程序员分配和释放,若程序员不释放,程序结束时可由操作系统回收。注意它与数据结构中的堆是两码事,分配方式倒是类似于链表。 全局区(静态区)(static):全局变量和静态变量的存储是放

2017-09-24 16:16:08 180

原创 输入两个字符串,比如abdbcc和abc,输出第二个字符串在第一个字符串中的连接次序

解析:本题算法是先找到第二个字符串中各个字符分别出现的位置,利用其位置构造多叉树(构造规则为子节点必须比父节点大)。遍历构造完成的多叉树即相应的组合。 例子中搜索得到a, b, c在源字符串中出现的位置序列分别为{1}、{2,4}、{5,6}. 1 2 4 5

2017-09-19 16:43:21 2033

原创 详解sizeof和strlen之间的区别

首先,由以下几个例子说明sizeof和strlen之间的区别第一个例子:char* ss="0123456789";sizeof(ss)的结果为4,ss是指向字符串常量的字符指针。//求得是指针的大小 sizeof(*ss)的结果为1,*ss是第一个字符。第二个例子:char ss[]="0123456789";sizeof(ss)的结果为11,ss是数组,计算到“\0”的位置,因此是(10+1)

2017-09-18 16:21:07 558

翻译 详解序列式容器之vector

所谓的序列式容器,其中的元素都可序,但未必有序。C++语言本身提供了一个序列式容器array,STL另外再提供vector,list,deque,stack,queue,priority-queue等等序列式容器。其中stack和queue由于只是将deque改头换面而成,技术上被归类为一种配接器。vector概述 vector与array的不同之处 vector的数据安排以及操作方式,与a

2017-09-16 15:49:50 431 1

原创 前置++后置++等操作符的源码剖析

很多时候,我们面对编程呢个语言中的前置++ 后置++ 搞不清楚,今天我就从STL源码的角度,给大家解析一下。希望这篇博客能对你有所帮助。 在很多情况下我们会说前置比后置效率高 , 是因为后置需要构造临时对象并返回,在这个例子中,效率差异并不是很明显,因为该处构造的临时对象虽然是类对象,但是结构较简单,当构造的类对象比较复杂时候,差异就会很明显。另外一点,后置的优先级要高于前置的优先级。

2017-09-13 17:02:05 350 1

原创 临时对象的产生与运用

所谓的临时对象,就是一种无名对象。它的出现如果不在程序员的预期之下(例如,任何 pass by value操作都会引发copy操作,于是就形成了一个临时对象),这往往会造成效率上的负担,但是在有些情况下,我们会刻意制造一些临时对象,却又会使程序干净清爽。 刻意制造临时对象的方法是,在型别名称之后直接加上一对小括号,并可指定初值,例如Shape(3,5)或int(8),其意义相当于调用相应的co

2017-09-13 16:25:25 630

原创 STL__set让你彻底搞清楚set的特性

setset的特性是,所有元素都会根据元素的键值自动被排序,set的元素不像map那样可以同时拥有实值(value)和键值(key),set元素的键值就是实值,实值就是键值。set不允许两个元素有相同的键值。 我们可以通过set的迭代器改变set的元素吗?不行的,因为set元素值就是其键值,关系到set元素的排列规则。如果任意改变set元素值,会严重破坏set组织。稍后你会在set源代码之中看

2017-09-04 20:41:27 1611

原创 C++栈解退

假设try块没有直接调用引发异常的函数,而是调用了对引发异常的函数进行调用的函数,则程序流程将从引发异常的函数跳到包含try块和处理程序的函数。这涉及到栈解退,下面将进行介绍。 首先来看看c++筒仓啊是如何处理函数调用和返回的。c++通常将信息放在栈中来处理函数调用。具体地说,程序将调用函数的指令的地址(返回地址)放在栈中。当被调用的函数执行完毕后,程序将使用该地址来确定从哪里开始继续执行。另外,

2017-08-20 10:12:17 2547 2

原创 C++友元函数、友元类、友元成员函数

众所周知,C++控制对类对象私有部分的访问。通常,公有类方法提供唯一的访问途径,但是有时候这种限制太严格,以至于不适合特定的编程问题。在这种情况下,C++提供了另外一种形式的访问权限:友元,友元有3种: 友元函数、友元类、友元成员函数。 通过让函数成为类的友元(即:友元函数),可以赋予该函数与类的成员函数相同的访问权限。在介绍如何成为友元前,先介绍为何需要友元。在为类重载二元运算符时(带有两个参

2017-08-18 16:08:06 692

原创 C++使用过程中容易忽略的小细节

说明:此篇文献是读者在阅读《c++primer plus》中抓取的容易忽略的小知识点,如有不当之处,敬请指正。 1、运算符sizeof 可对类型名和变量名使用sizeof运算符。对类型名如(如int)使用sizeof运算符时,应将名称放到括号中;但是对于变量名(int a;中的a)使用该运算符时,括号时可选的(可有,亦可无)。 2.如果知道变量的初始值应该是什么,则应该对它进行初始化,将变量声

2017-08-17 22:20:22 249

转载 深入理解C++函数重载const

书上和网上在很多地方都对const 的重载做了一些解释,但感觉都不是很详细。还有很多同学在不同的地方发问关于const 重载的问题,这里我又重新看了一下,做了一个简单的分析也可能有不对的地方,欢迎讨论。所谓重载,是指允许存在多个同名函数,而这些函数的参数表不同,即函数名相同但函数的签名不同。重载并不是面向对象编程的特有属性,这是因为重载是在编译阶段实现的,编译器根据函数不同的参数表,对同名函数

2017-08-17 22:12:26 4157 2

转载 C++函数重载

函数重载函数重载的定义是:在相同的作用域中,如果函数具有相同名字而仅仅是形参表不同,此时成为函数重载。注意函数重载不能基于不同的返回值类型进行重载。注意函数重载中的“形参表”不同,是指本质不同,不要被一些表象迷惑。main函数不能被重载。下面三组定义本质是相同的,不是重载:1)int sum (int &a); 和 int sum (int &);2)  i

2017-08-17 21:26:22 140

原创 const与#define的比较

c++语言可以用const来定义常量,也可以用#define来定义常量。但是前者比后者有更多的优点: (1)const常量有数据类型,而宏常量没有数据类型。编译器可以对前者进行静态类型安全检查;而对后者只能进行字符替换,没有类型安全检查,并且在字符替换时可能会产生意料不到的错误(边缘效应)。 (2)有些集成化的调试工具可以对const常量进行调试,但是不能对宏常量进行调试。所以在C++程序中,应

2017-08-13 15:30:53 236

原创 c++/c常量

1.字面常量字面常量是在程序中使用的最多的常量,例如,直接出现的各种进制的数字、字符(‘’括住的单个字符)或字符串(“”括住的一系列字符)等。实际上,只存在基本数据类型的字面常量。下边是一些字面常量的例子由于字面常量只能引用,不能修改,所以语言实现一般把它保存在程序的符号表里,而不是一般的数据区。符号表是“只读”的,其实它是一种访问保护机制,千万不要理解为只读存储器(ROM)。除了字符串外,你无法读

2017-08-13 15:10:24 264

原创 mysql中文乱码原因分析

第一层因素: mysql的自身的设置 mysql有六处使用了字符集,分别为:client 、connection、database、results、server 、system。 mysql> show variables like ‘character%’; +————————–+—————————-+ | Variable_name | V

2017-08-12 14:55:53 250

原创 基于mysql的一个小案例分析

– 用root用户登录系统,执行脚本– 创建数据库 create database mydb61 character set utf8 ; – 选择数据库 use mydb61;– 增加 dbuser1 用户 – 创建用户‘dbuser61’密码为 ‘dbuser61’拥有操作数据库mydb61的所有权限 GRANT ALL ON mydb61.* TO dbuser61 IDEN

2017-08-12 14:51:37 373 1

原创 mysql数据库初步(1)

SQL structed query language连接MYSQL服务器:mysql -uroot -prootmysql -uroot -p --default_character_set=gbk; (影响数据的输入和输出)show variables like 'character%';数据库的操作:创建,查看,修改,删除 *创建: 创建一个名称为mydb1的数

2017-08-12 14:50:50 466

华为的维护宝典.pdf

作为运维的查阅资料,方便排除解决现场问题。hadoop、habse、hive、kafka等都有帮助。常见的用法都有,可以借鉴,感谢大佬的提供,华为牛逼

2020-02-22

InSAR 数据处理中的若干技术

关于雷达干涉的讲解,详细介绍的类带我去数据处理的技术等

2018-11-05

mysql基本操作.ppt

mysql基本操作.ppt

2017-08-12

多线程编程.pdf

多线程编程.pdf

2017-08-11

POSIX多线程程序设计中文版.pdf

POSIX

2017-08-11

c与指针.pdf

c与指针

2017-08-11

计算机网络Tanenbaum(第四版)

计算机网络Tanenbaum(第四版)

2017-08-11

[图解TCPIP(第5版).乌尼日其其格.扫描版(ED2000.COM)

[图解TCPIP(第5版).乌尼日其其格.扫描版(ED2000.COM)

2017-08-11

MySQL核心技术手册(第二版)].(美)戴尔.扫描版.pdf

MySQL核心技术手册(第二版)].(美)戴尔.扫描版.pdf

2017-08-11

梦断代码.pdf

梦断代码.pdf

2017-08-10

编码的奥秘.pdf

编码的奥秘.pdf

2017-08-10

[像程序员一样思考].V.Anton.Spraul.扫描版(ED2000.COM).pdf

[像程序员一样思考].V.Anton.Spraul.扫描版(ED2000.COM).pdf

2017-08-10

Vim用户手册中文版73.pdf

Vim用户手册中文版73.pdf

2017-08-10

GNU.Linux.编程指南.(第二版)

GNU.Linux.编程指南.(第二版)

2017-08-10

Effective STL中文.pdf

Effective STL

2017-08-10

C++高级参考手册.rar

C++高级参考手册.rar

2017-08-10

MySQL_5.1_zh

MySQL_5.1_zh

2017-08-10

OracleProc编程

OracleProc编程

2017-08-10

Oracle9I ProCC++编程指南

Oracle9I ProCC++编程指南

2017-08-10

Oracle超详细学习笔记

Oracle超详细学习笔记

2017-08-10

linux _Oracle命令大全

linux _Oracle命令大全

2017-08-10

Oracle学习笔记大全

Oracle学习笔记大全

2017-08-10

oracle命令大全

oracle命令大全

2017-08-10

空空如也

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

TA关注的人

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