![](https://img-blog.csdnimg.cn/20201014180756724.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
面试
文章平均质量分 54
前行中632
不想被淘汰的码农
展开
-
springBoot实现配置和实例的热更新,集成Apollo,方法通用
热更新会对两类Bean进行刷新,一种是使用了@ConfigurationProperties的对象,另一类是使用了@RefreshScope的对象 两者的更新机制也不同,前者通过rebind,所有的bean重新绑定来完成刷新;后者是通过RefreshScope的缓存和延迟加载机制,生成新对象监听Apollo配置中心,配置发生变化的动作通过注解标明监听的配置文件发布 Environm...原创 2018-11-02 15:40:52 · 19258 阅读 · 3 评论 -
论货币
完全是依一个菜鸟的视角看待这个问题,错误之处,欢迎指点货币的演变:以物易物 以物易物人们最初的交易方法,这种方法只可以在双重巧合下发生,所以这种交易方式很不方便贝壳,石头、黄金、白银 人们感觉到以物易物的麻烦,便有了金属货币之类的,它们的特性是不易磨损,数量少,价值高,元素稳定。于是人们便选择了具有这样特性的物品来作为货币,但是一个严重的问题是这样的货币太重了,知道为什么纸币...原创 2018-07-15 23:04:17 · 234 阅读 · 0 评论 -
linux磁盘空间
计算磁盘总空间 /dev/loop是像光盘这样的结合式存储设备,是要去除的 $(/bin/df -ml -x tmpfs | grep -v /dev/loop | sed '1d' | awk 'BEGIN {aval=0} {aval+=$2} END {printf("diskTotalSize=%d", aval/1024)}')这个命令只能计算出当前文件系统的总容量,计算的是已...原创 2018-06-28 16:12:22 · 219 阅读 · 0 评论 -
脚本开发收获(一)
1、解析Windows目录是,split(“\\”) 需要四个反斜杠,原因是:在java中 \ 相当于 \ 并且在regex中 \ 相当于 \ 所以要用 \\ 2、同步锁中锁对象的作用 3、nl命令列出内容,为文件添加行号等 Sed命令学习https://www.cnblogs.com/ggjucheng/archive/2013/01/13/2856901.html sed ‘s/...原创 2018-06-28 09:17:58 · 292 阅读 · 0 评论 -
Java程序猿想超神,我来回答这些问题(java基础补充篇)
1、epoll和select 这是两种处理IO并发的两种机制,在linux没有实现epoll实践驱动机制之前,我们一般选择使用select或者poll等IO多路复用的方法来实现并发服务程序,但是现在,大数据,高并发的时代里,主流已经变成了epoll 举一个简单的栗子解释他们两个的区别: 你和你女朋友在餐馆吃饭,你们点了一大桌菜,你女朋友饿坏了,总是催你去问问有没有做好的菜了,于是你就一会一去...原创 2018-07-09 08:48:04 · 275 阅读 · 0 评论 -
互联网时代的IP技术
IP技术是整个互联网中心的核心技术它能够如此盛行的两个原因简单整个IP技术都十分简单,让人容易理解,运用,即使不懂技术的人,也很容易明白它的原理分布式控制架构IP技术可分为三个平面:管理面,数据面,分发面IP技术作用于各个路由器上,最初由人为的去配置路由表,实现路由,但是这样很容易出问题,一旦其中一个环节坏了,那整个网络都不通了动态路由协议的出现,解决了这个...原创 2018-07-02 08:35:45 · 1960 阅读 · 0 评论 -
安装hadoop3.0版本踩坑
1、hdfs的web页面默认端口是9870 yarn的web页面端口是8088 2、配置文件中的slaves文件没了,变成了workers文件,在里面配置datanode节点 3、在进行namenode格式化是有几个Fail,不要因此怀疑自己,只要common.Storage: Storage directory /usr/local/hadoop-3.0.2/hdfs/name has b...原创 2018-06-29 17:26:08 · 16654 阅读 · 7 评论 -
Java程序猿想超神,我来回答这些问题(java基础)
1、实例方法和静态方法有什么不一样? 实例方法是对象方法,由对象调用,在使用使用时方法才会被加载进内存 静态方法是在类被加载是被加载进内存,由类名直接进行调用 所以在静态的方法中只可以调用静态的方法或成员,因为静态方法的加载时间早于对象创建,所以在静态方法加载时,非静态方法还不存在呢,所以不可以调用 参考:https://blog.csdn.net/biaobiaoqi/article/d...原创 2018-06-22 21:25:20 · 1158 阅读 · 0 评论 -
HBase的快速查询
快速查询和实时查询 快速查询: 一、分区存储 HBase将每个表划分为多个region,每个region用rowkey来华为,数据的查询也是通过rowkey来查询 查询过程:client向HBase依赖的zookeeper获取metaregion的位置,然后通过metaregion中的记录获取到所要查询的rowkey 对应的region,这样就确定到一个region范围 ...原创 2018-05-16 17:18:30 · 6878 阅读 · 0 评论 -
浅谈IO模型
IO是(input/output) 有内存IO、磁盘IO、和网络IO 两组关键词 同步/异步 :同步是当前工作线程主动的接受IO操作完成返回结果,异步是当前工作线程被动的 获取到IO操作结果,通过状态、通知、回调等方法 阻塞/非阻塞 :是指当前是否“持续”等待这IO操作结果的返回UNIX环境下有五种IO模型 同步阻塞IO、同步非阻塞IO、IO多路复用、信号驱动IO、异步非阻塞IO ...原创 2018-05-06 17:24:33 · 234 阅读 · 0 评论 -
C语言的普通数据类型所占字节(sizeof)
#include<stdio.h>int main(){ char* pp; char* p[5]; int* i; char numchar; double numdouble; float numfloat; printf("char* pp: %d\nchar* p[5]: %d\nint*: %d\nchar: ...原创 2018-05-10 21:30:51 · 426 阅读 · 0 评论 -
Linux的存储文件系统
HDFS中的块大小是128MB,将块设计如此之大的原因:是为最小化寻址时间, 使得磁盘传输时间远大于寻址时间,使得传输一个多个块的文件的时间取决于磁盘传输速率,一般寻址时间是磁盘传输时间的1%文件系统的最小操作单位都是block而不是sector,因为sector太小了索引文件系统中inode的存储方式: 每个inode节点的大小,一般是128字节或256字节。inode节点的总数,在...原创 2018-07-26 17:13:15 · 1511 阅读 · 0 评论 -
数据结构与算法基础
1、说一下几种常见的排序算法和分别的复杂度 O(n2) : 冒泡排序、选择排序、插入排序、希尔排序 O(nlogn) : 快速排序、归并排序、堆排序 O(n) : 桶排序 O(d(n+r)): 基数排序 快速排序的效率最高,但是复杂度的稳定性不高,如果初始值选的不好,会造成复杂度上升至O(n2),为避免这种情况可以使用堆排序,但是这俩种排序方式都是不稳定的,相同复杂度,稳定排序的是归...原创 2018-07-23 08:52:51 · 488 阅读 · 0 评论 -
分布式之redis复习精讲
转载至https://www.cnblogs.com/rjzheng/p/9096228.html 为什么写这篇文章?博主的《分布式之消息队列复习精讲》得到了大家的好评,内心诚惶诚恐,想着再出一篇关于复习精讲的文章。但是还是要说明一下,复习精讲的文章偏面试准备,真正在开发过程中,还是脚踏实地,一步一个脚印,不要投机取巧。考虑到绝大部分写业务的程序员,在实际开发中使用r...转载 2018-10-26 11:32:07 · 225 阅读 · 0 评论 -
Eureka的自我保护机制浅谈
1、 定义自我保护模式是一种针对网络异常波动的安全保护措施,使用自我保护模式能使Eureka集群更加的健壮、稳定的运行。2、 工作机制自我保护机制的工作机制是如果在15分钟内超过85%的客户端节点都没有正常的心跳,那么Eureka就认为客户端与注册中心出现了网络故障,Eureka Server自动进入自我保护机制,此时会出现以下几种情况: Eureka Server不再从注册列表中移除因...原创 2018-10-23 14:00:01 · 6989 阅读 · 2 评论 -
Oracle中的decode在mysql中实现
oracle中的decode函数转换成mysql中的语法题目:原本的数据格式转换成如下格式select grade, sum(decode(level,"好","1","0")) good, sum(decode(level,"中","1","0")) middle, sum(decode(level,"坏","1","原创 2018-10-08 16:53:28 · 7057 阅读 · 0 评论 -
final变量的作用
final这个关键字的作用final关键字提高了性能。JVM和java应用都会缓存final变量final变量可以安全的在多线程环境下进行共享,且不需要额外的同步开销使用final关键字,JVM会对方法、变量及类进行优化final关键字要注意的一些地方,final主要作用,他会保证安全性,并对代码进行一定的优化修饰的类不可再被继承修饰的方法不可在被重写修饰的成员变量必须在声明时...原创 2018-09-22 16:29:59 · 2183 阅读 · 1 评论 -
Spark-Streaming+kafka实现零丢失
kafka和sparkstreaming是两种适配很好的技术,两者都是分布式系统适用于处理大量数据,两者对于实现数据的零丢失并没有提供现成的解决方案,所以这篇文章就是希望可以帮助你完成这个目标注:使用Spark Streaming的Direct Stream方式连接kafka,并通过存储偏移量到zookeeper中,来实现数据零丢失,不要使用CheckPoints问题介绍:Spark Stre...翻译 2018-09-22 13:03:03 · 497 阅读 · 0 评论 -
操作系统的端口
网络中可以被命名和寻址的通信端口是操作系统的一种可分配资源。由网络OSI(开放系统互联参考模型,Open System Interconnection Reference Model)七层协议可知,传输层与网络层最大的区别是传输层提供进程通信能力, 网络通信的最终地址不仅包括主机地址,还包括可描述进程的某种标识。所以TCP/IP协议提出的协议端口,可以认为是网络通信进程的一种标识符。之...原创 2018-09-02 09:02:03 · 3825 阅读 · 0 评论 -
Spark Streaming的Batch Duration优化
Spark Streaming 是微批处理。 SparkConf sparkConf = new SparkConf().setAppName("SparkStreaming").setMaster("local[*]"); JavaStreamingContext javaStreamingContext = new JavaStreamingContext(sparkConf, Dur...原创 2018-09-01 14:02:58 · 7329 阅读 · 0 评论 -
网络协议和网络编程
TCP建立连接的过程。TCP(传输控制协议)和UDP(用户数据包协议) 都是运输层的协议,基于网络层的IP协议 TCP连接三次握手,具体是客户端发送连接请求,服务器接收并确认返回应答信息,客户端之后第三次发送请求确认,从而建立连接,开始树传输,原因是避免建立无用、错误的TCP长连接TCP断开连接的过程。第一次有客户端发出要关闭连接的请求;第二次,服务器端返回请求确认;第三次,服务...原创 2018-08-29 18:55:29 · 1422 阅读 · 0 评论 -
Float IP
一个常识性问题: 一个MAC地址可以绑定多少个IP地址 答案是:多少个都可以你的电脑绑定多个网段的IP,这样多个网段的主机你都可以访问 还有Float IP 也是利用了这一点例如一个集群中,一个HA的集群,一般是双机HA,这样两个相同的服务主机,两个IP,那咋办,让用户记住两个IP吗?这样也太不人性,解决方案是配置Float IP为其中一个服务主机网卡绑定float ...原创 2018-08-31 16:48:41 · 754 阅读 · 0 评论 -
spark消费kafka时自助管理offset方法
offset的保存位置 在Kafka0.9版本之前消费者保存的偏移量是在zookeeper中/consumers/GROUP.ID/offsets/TOPIC.NAME/PARTITION.ID。新版消费者不再保存偏移量到zookeeper中,而是保存在Kafka的一个内部主题中“__consumer_offsets”,该主题默认有50个分区,每个分区3个副本,分区数量有参数offset.to...原创 2018-07-28 12:02:03 · 4682 阅读 · 1 评论 -
livy读源码总结
1、spark任务提交 https://blog.csdn.net/qq_32635069/article/details/80055745 2、线程池问题 线程池:一个管理线程的工具 解决的问题:一款好的软件设计是不建议手动创建和销毁会线程。线程的创建和销毁是非常耗CPU和内存的,因为这需要JVM和操作系统的参与 64位 JVM 默认线程栈是大小1 MB。这就是为什么说在...原创 2018-04-25 20:42:27 · 1224 阅读 · 0 评论 -
livy源码阅读基础知识
1、解析json数据: interactiveSession使用的jackson来解析传入的request 在org.apache.livy.server.JsonServlet中 提供了三种不同的方法来处理JSON * 流式API - 读取并将JSON内容写入作为离散事件。 JsonParser读取数据,而JsonGenerator写入数据。它是三者中最有效的方法,是最低的开...原创 2018-04-23 20:40:55 · 805 阅读 · 1 评论 -
livy安装文档
1、下载Livy(可以自己下载源代码进行编译) http://livy.incubator.apache.org/download/ 源代码在git 上能够找到apache 版本和cloudera 两个版本 https://github.com/cloudera/livy 有比较详细的说明文档。2、将livy的压缩包放到Linux 主机...原创 2018-04-23 20:35:09 · 5202 阅读 · 2 评论 -
使用归并排序的思想寻找逆序对(O(NlogN))
/** * 使用归并排序的思想寻找逆序对(O(NlogN)) * @author Administrator * */public class Nixudui { public static int InversePairs(int[] data,int length){ if(data==null||length==1) return 0;原创 2018-04-03 11:13:00 · 597 阅读 · 0 评论 -
取第k大的数
public class MoreThanHalf { /** * 升序 * @param array * @param start * @param end * @return */ public static int partition(int[] array, int start, int end){ int num = array[start]; int...原创 2018-03-27 19:28:39 · 389 阅读 · 0 评论 -
TCP、UDP详解
可靠性保证、安全保证、时延保证、带宽保证 其中TCP提供可靠性保证 安全保证可以有应用层提供 当低层无法提供时延保证、带宽保证,运输层是无法保证的使用TCP的协议: FTP(文件传输协议) Telnet(远程登录协议) SMTP(简单邮件传输协议) POP3(和SMTP相对,用于接收邮件) HTTP协议等。SYN是同步标志 只在TCP三次握手时有效,提示服务端检查序列编号,在第三次原创 2018-03-27 11:11:50 · 508 阅读 · 0 评论 -
TCP/UDP套接字实践
整个流程是客户端想服务端发信息,服务端返回大写后的消息 从代码中可以看出UDP与TCP的差异: UDP是将数据丢进套接字之前,必须为分组指定目的地址 TCP是client向服务端申请连接,会有一个欢迎的套接字,即代码中的serverSocket,之后服务端会为客户创建一个专门的连接套接字,即connectionSocket,用于通信 其中clientSocket = socket(AF_I...原创 2018-03-26 21:01:05 · 561 阅读 · 0 评论 -
字典树小结
使用二维数组保存字典树,用于处理最长字符串等问题 字典树保存用了两类ID,一类是第一位的,依据插入的先后顺序计数 第二类ID是,每个节点上最多有26个子节点,因为英文字母只有26种,所以用插入字符的-‘a’作为第二类值字典树类模板class Trie{ private int fid=0; private int tid; private int ans = 0;原创 2018-03-22 09:55:42 · 151 阅读 · 0 评论 -
HBase详解
HBase的应用场景 海量数据,实现高效随机访问 高吞吐量 很好的性能伸缩能力 能够同时处理结构化和非结构化的数据 不适合事务性很高的场景 分布式要求高可靠性 Hbase适用于低时延,高吞吐量,精度或前缀的查询,不适用于模糊查询的数据库 HBase: 传统数据库: 分布式...原创 2018-03-30 20:55:05 · 247 阅读 · 0 评论 -
Yarn的原理以及配置不同的资源分配策略
1.YARN是什么,为什么会产生YARN,它解决了什么问题? Yarn是一个分布式的资源管理系统,它是hadoop集群的资源管理系统,它使得各种类型的应用可以运行在hadoop上面,并通过Yarn从系统层面进行统一管理,使得各种应用共享集群资源它诞生的原因是原来的MapReduce框架中的一些不足: (1) JobTracker单点故障隐患,一旦master出现故障,将导致整个集群不可用...原创 2018-03-18 16:38:53 · 3755 阅读 · 0 评论 -
Mapreduce的优化策略
(1)Combiner优化 在之前的shuffle过程中的map端生成最终溢写文件时,例如:aaa 1, aaa 1 这样的数据会被合并为{aaa [1,1]} ,而我们可以通过给每个map显示的设定combiner,来将这个节点的输出优化,即如前面的例如,如果他们是同一节点的数据,他们会合并为{aaa,2},combiner相当于小型的reduce,不过他们这要求reduce的输入数据格式和输...原创 2018-03-18 16:35:14 · 1425 阅读 · 0 评论 -
Mapreduce的shuffle过程
Shuffle描述着数据从map task 输出到reduce task输入的这段过程。 由于大部分map task和reduce task都是运行在不同的节点上的,shuffle的作用就是减小reduce task 跨节点去拉取map task运行结果的代价,减少不必要的消耗;另外磁盘IO无疑是十分影响效率的地方,所以尽可能的通过在内存中解决问题,所以我们对shuffle过程的期望是: ...原创 2018-03-18 16:33:34 · 311 阅读 · 0 评论 -
hdfs空间用完后,陷入安全模式,进行扩充
使用虚拟机搭建的hadoop框架 虚拟机空间用完了,hdfs陷入永久的安全模式下图是各个datanode的状况 其中第一个和第三个节点是已经扩容的,第二未扩容 首先要区分容量的定义 Capacity = used + Non DFS Used + remaining Non DFS Used 是指再分配给hdfs的空间中非hdfs数据所侵占的数据大小其中的ext4是cent...原创 2018-03-18 15:49:06 · 862 阅读 · 0 评论 -
zookeeper
作用: 1、做一个轻量级的存储 2、帮助上层组件选择主备leader选举使用原子广播通知其他节点zookeeper有多个znode znode分为永久节点和临时节点两种临时节点的作用就是就是帮助上层组件选择主备,如hadoop的namenode和yarn的resourceManager 临时节点只可以有一个客户端相连Master选举 Master选举可以说是ZooKeeper...原创 2018-04-11 20:33:56 · 275 阅读 · 0 评论 -
java实现线程同步的总结
要实现线程同步的原因: java允许多线程并发控制,当多个线程同时操作一个可共享的资源变量时, 会产生冲突,使得变量值不唯一,因此我们需要加入同步锁来避免在当前线程的操作未完成前,其它线程改变共享资源值的情况发生,从而保证变量的唯一 性和准确性方法synchronized synchronized可以修饰方法,但是由于同步本身就是一种高开销的操作,因此我们应该尽可能的减少同步...原创 2018-04-12 09:41:17 · 331 阅读 · 0 评论 -
spark任务提交产生的问题,以及livy解决问题
spark任务提交 spark目前提供python shell和scala shell两种交互式命令行运行Python Shell ./bin/pyspark 运行Scala Shell./bin/spark-shell 比如用户使用spark-shell或是pyspark脚本启动Spark应用程序,伴随应用程序启动的同时Spark会在当前终端启动REPL(Read–Eval–Print L...原创 2018-04-23 20:25:08 · 2736 阅读 · 0 评论 -
java继承与protected权限再理解
java会继承父类中default权限以上的成员父类的private成员不会被子类继承,子类不能访问。但是子类对象的确包含父类的私有成员。 父类的 包访问成员 继承为子类的包访问成员。就好像他们直接定义在子类中一样。 父类的 protected 成员继承为子类的protected 成员。就好像他们直接定义在子类中一样。 父类的 public 成员继承为子类的public 成员,就好像他们...原创 2018-04-06 21:28:47 · 12901 阅读 · 0 评论