自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

we.think

优秀的代码是它自己最好的文档。当你考虑要添加一个注释时,问问自己,“如何能改进这段代码,以让它不需要注释?”

  • 博客(47)
  • 资源 (2)
  • 收藏
  • 关注

原创 linux shell

目录1. ps1.1 命令格式1.2 查看进程CMD2. 变量2.1 数组2.1.1 语法2.1.2 获取元素2.1.3 数组长度2.1.4 删除2.1.5 分片2.1.6 替换2.2 特殊变量2.3 `$*`和`$@`的区别2.3 shift3. if3.1 语法3.2 条件选项1. psps是一款显示系统进程状态的工具,类似于top,只不过top是实时的,而ps是静态的,也就是抓取系统进程的一个快照。1.1 命令格式ps -p [pid] -o [cloumn]选项:选项描述

2021-10-25 08:37:51 340

原创 linux shell之sed

目录1. 概述1.1 工作原理1.2 与vim的区别2. 基本语法2.1 选项2.2 示例2.2.1 多行删除2.2.2 正则匹配2.2.2 正则块匹配2.2.3 替换2.3 组合命令2.3.1 组合多条命令2.3.1 地址范围操作多条命令sed(Stream Editor)是一款强大流式、非交互式的编辑器,集合正则表达式,可以对标准输出或者其他输出进行处理并输出。sed的强项是替换文本中的特定字符,而写shell有个步骤就是从一段文本中截取一段字符进行处理,所以熟练掌握sed命令是写shell脚本的基

2021-10-24 23:02:36 942

原创 linux shell之awk

目录1. 基本介绍1.1. 工作原理1.2 代码块1.3 模式匹配1.4 变量1.4.1 常用内置变量1.4.2 自定义变量2. 输出3. 控制语句3.1 if语句3.2 while条件3.3 for循环3.4 break/continue4. 自定义函数5. 字符串函数awk是Linux Shell文本分析工具之一,功能非常强大。其中,在文本文件处理以及报表生成上,awk是无可替代的。1. 基本介绍文件解析依据,awk认为文本文件都是结构化的。何为结构化呢?也就是,定义每个输入行为一条记录,而行中每

2021-10-17 22:00:03 607

原创 布隆过滤器原理深度剖析

HBase布隆过滤器原理深度剖析1. 数据结构与原理1.1 初始化1.2 变量映射1.3 变量检索1.4 总结2. 过滤器特性2.1. 误判率2.2 判断特点3. 案列代码1970年,布隆提出布隆过滤器(BloomFilter),用于判断一个元素是否不在一个集合中,但是不能精确确定元素在集合中。通常情况下,要确定一个元素是否存在于某个业务场景的集合,一般是将元素保存到集合中,然后通过比较确定,例如采用链表、树、散列表(又叫哈希表,Hash Table)等数据结构。但是,随着集合中元素的增加,需要的存储空

2021-09-04 23:02:25 393

原创 大数据之Kappa架构

目录一、Kappa架构二、Kappa处理过程三、Kappa优缺点3.1 Kappa架构优缺点3.2 Lamda和Kappa架构优缺点Kappa架构是由LinkedIn的前首席工程师杰伊·克雷普斯(Jay Kreps)提出的一种架构思想。克雷普斯是几个著名开源项目(包括Apache Kafka和Apache Samza这样的流处理系统)的作者之一。Kreps 提出了一个改进 Lambda 架构的观点:通过改进Lambda架构中的Speed Layer,使它既能够进行实时数据处理,同时也有能力在业务逻辑

2021-03-14 10:43:56 2204 2

原创 大数据之Lamda架构

目录一、架构的重要特征Lambda架构是由Storm的作者Nathan Marz提出的一个实时大数据处理框架。Marz在Twitter工作期间开发了著名的实时大数据处理框架Storm,Lambda架构是其根据多年进行分布式大数据系统的经验总结提炼而成。Lambda架构的目标是设计出一个能满足实时大数据系统关键特性的架构,包括有高容错、低延时和可扩展等。Lambda架构整合离线计算和实时计算,融合不可变性(Immunability),读写分离和复杂性隔离等一系列架构原则,可集成Hadoop、Kafka、St

2021-03-07 23:26:56 717 2

原创 Flink难点解析:揭开Watermark的神秘面纱

目录一、Watermark作用二、原理2.1 如何计算Watermark的值?Apache Flink称为终极流式框架,不仅仅提供高吞吐、低延迟和Exactly-Once语义的实时计算能力,还提供了基于流式引擎处理批量数据的计算能力,真正意义上实现了批流统一,无疑是继Spark和Storm的后起之秀。但是入门Apache Flink,会接触到水印或水位线陌生的技术词汇,但到底什么是水位线,又给Apache Flink蒙上了一层神秘的面纱。这里就为大家揭开Watermark的神秘面纱。一、Waterma

2021-02-19 23:28:57 522 1

原创 大数据之MPP架构

目录一、对称多处理器架构二、非一致性存储访问架构三、海量并行处理架构3.1 NUMA与MPP的区别3.2 MPP DB从并行/平行计算系统内存架构来看,目前商用服务器大体可以分为三类,即对称多处理器架构(SMP:Symmetric Multi-Processor),非一致性存储访问架构(NUMA:Non-Uniform Memory Access),以及海量并行处理架构(MPP:Massive Parallel Processing)。一、对称多处理器架构对称多处理器(Symmetric Multi-

2021-01-31 14:10:25 4237 2

原创 Yarn DRF资源分配算法

DRF是一种通用的多资源最大最小公平分配策略(Max-Min Fairness Strategy),其核心思想是在多环境下一个用户的资源分配应该由用户的主导份额的资源决定。主导份额的资源是在所有已经分配给用户的多种资源中,占据最大份额的一种资源。简而言之,DRF试图最大化所有用户中最小的主导份额。一、DRF计算方式假设系统资源CPU和Memory分别为9 Core和18GB,应用A每个计算任务请求资源为<1 CPU,4GB>资源;应用B每个计算任务请求资源为<3 CPU,1GB>

2021-01-24 11:33:19 884 1

原创 Java之AccessController安全模型

目录一、JDK的安全模型1.1 JDK1.0 安全模型1.2 JDK1.1 安全模型1.3 JDK 1.2 安全模型1.4 最新安全模型二、AccessController2.1 方法摘要作为一种诞生于互联网兴起时代的语言,Java从一开始就带有安全上的考虑,如何保证通过互联网下载到本地的Java程序是安全的,如何对Java程序访问本地资源权限进行有限授权,这些安全角度的考虑一开始就影响到Java语言的设计与实现。可以说Java在这些方面的探索与经验,对后来的一些语言与产品都带来了积极影响。一、JDK的

2020-11-22 15:52:05 785 1

原创 Java之Unsafe技术揭秘

目录一、Unsafe对象创建二、对象操作1.1 对象内存分配Unsafe类是在sun.misc包下,不属于Java标准。但是很多Java的基础类库,包括一些被广泛使用的高性能开发库都是基于Unsafe类开发的,比如Netty、Hadoop、Kafka等。使用Unsafe可用来直接访问系统内存资源并进行自主管理,Unsafe类在提升Java运行效率,增强Java语言底层操作能力方面起了很大的作用。Unsafe可认为是Java中留下的后门,提供了一些低层次操作,如直接内存访问、线程调度等。官方并不建议使用Un

2020-11-05 00:26:07 928

原创 Java之SecurityManager安全管理器

目录一、 启停安全管理器1.1 启用1.2 关闭二、安全策略2.1 默认配置2.2 策略准则三、SecurityManager3.1 概要描述3.2 方法摘要3.3 使用SecurityManager是一个允许应用实现一种安全策略的类。应用在执行一个安全或敏感的操作之前,可以明确此操作是否在一个安全的上下文中被执行。一、 启停安全管理器1.1 启用系统启动开启JVM参数:-Djava.security.manager当运行一个程序,可以指定JVM命令-Djava.security.manage

2020-10-19 00:39:33 2683

原创 Java反射-类基本操作

目录一、Class对象1.1 类描述1.2 类方法1.3 特点二、获取类对象2.1 获取类对象方式Java反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法和属性;这种动态获取的信息以及动态调用对象的方法的功能称为Java语言的反射机制。实际上,我们创建的每一个类也都是对象,即类本身是java.lang.Class类的实例对象。这个实例对象称之为类对象,也就是Class对象。那么,Class对象又是什么对象呢?一、Class对象1.1

2020-10-18 20:05:23 282

原创 IntelliJ Idea优秀插件

工欲善其事,必先利其器

2020-10-11 17:29:42 2838 3

原创 大数据任务调度之Azkaban

目录一、适用场景二、架构2.1 元数据2.2 AzkabanWebServer2.3 AzkabanExecutorServer三、作业流执行过程四、Azkaban架构的三种运行模式五、使用5.1 创建项目5.2 上传项目5.3 工作流视图5.4 项目权限5.5 执行流程视图5.5.1 失败通知5.5.2 电子邮件覆盖*5.5.3 故障选项5.5.4 并发选项5.5.5 工作流选项5.6 执行5.7 执行页面6.8 历史页5.9 计划流程5.10 SLA5.11 任务页面5.12 任务编辑5.13 工作历史

2020-09-21 08:17:00 1698

原创 Java压缩算法

目录一、算法1.1 DEFLATE1.2 gzip1.3 bzip21.4 lzo1.5 lz41.6 Snappy二、压力测试三、总结游戏开发中,经常在玩家进入游戏的时候进行必要的信息初始化,往往这个初始化信息数据包是相对来说还是比较大的,一般在30-40kb左右,还是有必要进行压缩一下再发送消息,刚好前段时间看过,里面列举了一些常用的压缩算法,如下图所示:是否可切分表示是否可以搜索数据流的任意位置并进一步往下读取数据,这项功能在Hadoop的MapReduce中尤其适合。下面对这几种压缩格式进行

2020-09-19 12:04:11 1581 1

原创 Java基础之jdk8 ConcurrentHashMap源码解读

目录一、jdk1.8容器初始化1.1 源码分析1.2 sizeCtl含义解释一、jdk1.8容器初始化1.1 源码分析1.2 sizeCtl含义解释注意:以上这些构造方法中,都涉及到一个变量sizeCtl,这个变量非常重要。sizeCtl有非常丰富的值,并且含义也不一样。sizeCtl=0,代表数组未被初始化,默认初始容量为16;sizeCtl>0,如果数组未初始化,那么记录数组的初始容量。如果数组已初始化,那么其记录数组的扩容阈值(数组的初始容量 * 0.75);sizeCtl=-1

2020-09-19 11:22:57 1395 3

原创 Java基础之jdk8 HashMap源码解读

目录一、存储特点1.1 数据结构的演变1.2 特点二、类结构2.1 继承关系2.2 成员变量2.3 构造方法2.3.1 HashMap(int initialCapacity, float loadFactor)2.3.2 HashMap(Map<? extends K, ? extends V> m)2.4 成员方法2.4.1 添加节点元素2.4.2 内部添加节点元素2.4.3 将链表转换为红黑树2.4.4 扩容2.4.5 删除2.4.6 查找元素三、思考题3.1 jdk8为何需要引入红黑树?

2020-09-17 00:47:02 388

原创 Hive专题-distinct优化

目录一、问题描述二、分治优化一三、分治优化二一、问题描述在hive中count(distinct)很容易造成数据倾斜。但有时,“数据倾斜”又几乎是必然的。我们来举个栗子:假设表sdk_session_details中记录了访问网站客户端会话信息,即:如果用户打开App客户端,则会产生一条会话信息记录在该表中,该表的粒度为“一次”会话,其中每次会话都记录了用户的唯一标示uuid,uuid是一个很长的字符串,假定其长度为64位。现在的需求是:每天统计当月的活用用户数——“月活跃用户数”(当月访问过app就

2020-07-02 07:54:34 944 2

原创 Maven专题(六) - 插件maven-shade-plugin

目录一、filters和artifactSet二、资源转换2.1 ManifestResourceTransformer2.2 AppendingTransformer2.3 ServicesResourceTransformer三、原始构件与shade构件网上有一些maven-shade-plugin替代maven-assembly-plugin的文章,原因是代maven-assembly-plugin打出的jar包中要么是不能设置Main-Class,要么spring的META-INF/spring.

2020-06-20 07:50:41 1959 1

原创 Maven专题(五) - 插件maven-assembly-plugin

Assembly插件主要是聚合项目的输出,比如依赖,模块以及其他文件。通俗的来说,就是将项目内容按照一定规则及指定格式重新组合并输出。它支持的输出格式有多种:jar jar包war war包dir 文件目录zip zip压缩包tar tar压缩包tar.gztar.bz2tar.xz为什么需要Assembly插件呢?因为对于服务类型的后台程序,线上运行时一般通过脚本的方式启动和停止,而项目中的目录结构复杂且不够直观,且项目文件也需要合并和过滤,Assembly插件就可以帮助我们完成。

2020-06-20 07:42:52 954

原创 Maven专题(四) - 插件maven-resources-plugin

Resources插件负责处理项目资源文件并拷贝到输出目录。Maven将main resources和test resources分开,一般main resources关联main source code,而test resources关联test source code。Resources插件目标有三个:resources:resources:拷贝main resources到main output directory。它绑定了process-resources生命周期阶段,当执行compiler:

2020-06-20 07:24:36 467

原创 Maven专题(三) - 聚合与继承

目录在实际项目的使用中,常常会对项目进行模块划分,以降低耦合。如服务接口模块,各业务模块,web模块等。而模块间共享一些相同的依赖,彼此间也紧密联系。此时我们就可以通过maven的聚合和继承来管理模块。比如现在我们有以下模块:example-apiexample-serviceexample-web模块间的关系是example-web和example-service通过example-api相连接。example-web -> example-api <- example-se

2020-06-20 07:16:49 249

原创 Maven专题(二) - 仓库与私服

目录一、本地仓库和远程仓库二、私服三、镜像四、仓库搜索一、本地仓库和远程仓库maven仓库分为本地仓库和远程仓库,当maven根据坐标寻找构件时,首先会从本地仓库中查找,如果本地仓库中没有,则会去远程仓库中查找,然后下载到本地仓库中再使用。本地仓库的仓库目录默认为用户目录/.m2/repository,可以修改 .m2/setting.xml 文件(默认不存在,需要从maven安装目录下copy一份)的localRepository元素。<settings> <localRe

2020-06-20 00:55:26 341

原创 Maven专题(一) - Maven基础

目录一、坐标定义二、依赖配置一、坐标定义<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion

2020-06-20 00:48:46 299

原创 Spring IOC之后置处理器分析(四)

目录一、BeanPostProcessor二、InstantiationAwareBeanPostProcessor三、BeanFactoryPostProcessor四、BeanDefinitionRegistryPostProcessor一、BeanPostProcessorBean的后置处理器,主要在bean初始化前后工作。public interface BeanPostProcessor { // 在初始化方法(如:afterPropertiesSet 或 init-method)执行前触

2020-06-18 07:33:51 240

原创 Spring注解大纲

目录01、AnnotationConfigApplicationContext02、@Configuration三03、@Bean04、@Primary05、@PostConstruct06、@PreDestroy07、@Scope08、@ComponentScan8.1 注解类8.2 实现09、@Filter10、@Lazy11、@Conditional11.1 注解11.2 实现12、@Import12.1 注解12.2 实现13、@Component14、@Repository15、@Controll

2020-06-13 11:52:46 284

原创 Spring IOC之ApplicationContextAwareProcessor源码分析(三)

目录一、概述二、IOC容器注册ApplicationContextAwareProcessor源码解析2.1 IOC注册ApplicationContextAwareProcessor时序图2.2 刷新IOC容器2.3 注册IOC后置处理器和类加载器三、ApplicationContextAwareProcessor源码解析一、概述ApplicationContextAwareProcessor是一个Spring内部工具,它实现了接口BeanPostProcessor,用于向实现了如下某种Aware接口

2020-06-13 01:25:35 284

原创 Spring IOC之Singleton Bean创建以及BeanPostProcessor调用源码分析(二)

Spring IOC之BeanPostProcessor源码分析(二)一、IOC容器注册BeanPostProcessor1. IOC容器注册BeanPostProcessor的时序图二、IOC容器调用BeanPostProcessor1. IOC容器调用BeanPostProcessor时序图一、IOC容器注册BeanPostProcessor1. IOC容器注册BeanPostProcessor的时序图二、IOC容器调用BeanPostProcessor1. IOC容器调用BeanPost

2020-06-09 01:50:13 381

原创 Spring IOC之ClassPathXmlApplicationContext启动深入源码分析(一)

AnnotationConfigApplicationContext是Spring用来加载注解配置的ApplicationContext,它是如何加载所有的bean,与ClassPathXmlApplicationContext有什么区别,让我们接下来揭开它的神秘面纱。一、类图二、时序图三、源码剖析3.1 初始化IOC容器目标类:ClassPathXmlApplicationContext// new ClassPathXmlApplicationContext("applocationCo

2020-06-06 02:19:32 374

原创 Java基础知识

一、ThreadPoolExecutorpublic ThreadPoolExecutor(int corePoolSize, int maximumPoolSize, long keepAliveTime, TimeUnit unit, BlockingQueue<Runnable> w

2020-05-22 01:26:36 266

原创 测试指标

01. QPSQPS(Queries Per Second),即每秒查询率,表示一台服务器每秒能够响应的查询次数,是对一个特定的查询服务器(比如是读写分离的架构,就是读的服务器)在规定时间内所处理流量多少的衡量标准。关键点:如果是对一个页面请求一次,形成一个TPS,但一次页面请求,可能产生多次对服务器的请求(页面上有很多HTML资源,比如图片等),服务器对这些请求,就可计入“QPS”之中。...

2020-02-25 22:22:15 301

原创 梯度下降法的推导

Redis01. 什么是梯度梯度下降算法的公式非常简单,”沿着梯度的反方向(坡度最陡)“是我们日常经验得到的,其本质的原因到底是什么呢?为什么局部下降最快的方向就是梯度的负方向呢?也许很多朋友还不太清楚。没关系,接下来我将以通俗的语言来详细解释梯度下降算法公式的数学推导过程。01. 什么是梯度梯度的本意是一个向量(矢量),表示某一函数在该点处的方向导数沿着该方向取得最大值,即函数在该点处沿着...

2020-02-25 02:01:45 436

原创 Redis配置详情

Redis01. 安装1.1 软件安装1.2 服务配置02. 详细配置01. 安装1.1 软件安装wget http://download.redis.io/releases/redis-5.0.5.tar.gz|tar xzcd redis-5.0.5/makecd srcmake install PREFIX=/usr/local/rediscd /usr/local/re...

2019-10-02 08:06:24 344

原创 加密算法之AES

AES一、pom二、AES-128位-有向量-CBC/PKCS5Padding一、pom<dependency> <groupId>commons-codec</groupId> <artifactId>commons-codec</artifactId> <version>1.13</version>...

2019-09-03 17:29:20 1060

原创 Log4j日志决战

log4j一、 Log4j简介01. Loggers02. Appenders03. Layouts二、配置详解01. 配置根Logger02. 配置日志信息输出目的地(appender)03. 配置日志信息的输出格式(Layout)三、配置文件的位置01. 默认加载02. 自定义加载四、案例一、 Log4j简介Log4j有三个主要的组件:Loggers(记录器),Appenders (输出源...

2019-09-02 13:04:50 1561

原创 Spark原理与实战

spark原理-深入浅出1.0 spark原理架构1.1 driver1.2 cluster manager1.3 DAG2.0 spark summary2.1 架构图2.2 项目3.0 spark kafka1.0 spark原理架构1.1 driver1.2 cluster manager1.3 DAG2.0 spark summary2.1 架构图2.2 项目sp...

2019-06-30 19:37:47 636

原创 Git进阶大全

Git01. 克隆02. 分支管理2.1 分支查看2.2 分支切换2.3 删除分支01. 克隆git clone https://github.com/ioceye/big-data.git02. 分支管理2.1 分支查看git branch -a # 查看所有分支git branch [-v] # 查看项目所在分支git branch --merged # 查看哪些分支已被并...

2019-06-15 09:17:15 484

原创 Windows命令

Windows01. Dos1.1 资源管理01. Dos1.1 资源管理 端口占用netstat -ano | findstr “port” PID占用程序tasklist | findstr “940” 杀死程序taskkill /f /t /im svchost.exe 杀死进程taskkill /f /pid 940...

2019-06-15 07:33:07 332

原创 Java String深度探幽

Java String深度探幽01. 概述02. 内存分析2.1 常量赋值2.2 new对象2.3 字符串常量拼接操作(+)2.4 非常量字符串拼接(+)04. intern方法05. 总结01. 概述 类定义public final class String implements java.io.Serializable, Comparable<String>, Cha...

2019-06-02 10:32:10 351

阿里巴巴Java开发手册泰山版

《Java开发手册》是阿里巴巴集团技术团队的集体智慧结晶和经验总结,经历了多次大规模一线实战的检验及不断完善,公开到业界后,众多社区开发者踊跃参与,共同打磨完善,系统化地整理成册,当前的版本是泰山版。现代软件行业的高速发展对开发者的综合素质要求越来越高,因为不仅是编程知识点,其它维度的知识点也会影响到软件的最终交付质量。比如:数据库的表结构和索引设计缺陷可能带来软件上的架构缺陷或性能风险;工程结构混乱导致后续维护艰难;没有鉴权的漏洞代码易被黑客攻击等等。所以本手册以Java开发者为中心视角,划分为编程规约、异常日志、单元测试、安全规约、MySQL数据库、工程结构、设计规约七个维度,再根据内容特征,细分成若干二级子目录。另外,依据约束力强弱及故障敏感性,规约依次分为强制、推荐、参考三大类。在延伸信息中,“说明”对规约做了适当扩展和解释;“正例”提倡什么样的编码和实现方式;“反例”说明需要提防的雷区,以及真实的错误案例。

2020-06-13

Git版本控制工具入门到精通

Git版本控制工具从小白到大神,结合实践和原理的讲述,过渡到Github的使用,以及Eclipse的插件使用。

2020-05-25

空空如也

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

TA关注的人

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