自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

法海你懂不?

法海想了想,嗯,我不懂...

  • 博客(141)
  • 资源 (10)
  • 收藏
  • 关注

原创 LLM 大模型

https://my.oschina.net/oscpyaqxylk/blog/8727824

2023-06-13 23:43:31 344

原创 【Flex&Bison】简单样例

flex + bison 简单样例

2023-03-19 01:59:04 173

原创 Java 转 C++ 那些事

Java 与 C++ 语言直观体感

2022-09-27 16:46:23 3639

原创 Spring Boot属性加载顺序

Spring Boot属性加载顺序Spring Boot为了能够更合理的重写各属性的值,使用了下面这种较为特别的属性加载顺序命令行中传入的参数。SPRING_APPLICATION_JSON中的属性。SPRING_APPLICATION_JSON是以JSON格式配置在系统环境变量中的内容。java:comp/env中的JNDI属性。Java的系统属性,可以通过System.getPro...

2019-06-16 08:55:42 439

原创 CentOS 6.7 安装 Python2.7

安装开发包# 安装必要的开发包yum groupinstall "Development Tools"# 安装必要的支持包yum install zlib-devel openssl-devel readline-devel bzip2-devel sqlite-devel下载并安装 python2.7Python2.7cd Python-2.7.15./configurema...

2018-11-12 17:20:20 335

原创 Hive 基础

键Hive中并没有键的概念,但是用户可以对表建立索引。 Hive只有有限的索引功能,一张表的索引数据存储在另外一张表中。Hive没有主键或基于序列密钥生成的自增键的概念,如果可以的话,应避免对非标准化数据进行JOIN操作。复杂的数据类型,比如array,map和struct有助于实现在单行中存储一对多数据。CSV格式:值是用逗号分隔的 TSV格式:值是制表键分隔的命名空间...

2018-03-24 11:26:45 1420

原创 hive 基本架构

Hive基本架构如下图所示,从逻辑上来看,Hive包含了3大部分。Hive ClientsHive ServicesHive Storage and Computing用户操作Hive的接口主要有三个:CLI,Client 和 WUI。其中最常用的是CLI,Cli启动的时候,会同时启动一个Hive副本。Client是Hive的客户端,用户连接至Hive Server...

2018-03-22 21:19:41 6886 1

原创 HBase 数据倾斜和事务

行健设计HBase有两种基本键结构:行健(row key)和列键(column key)。两者都可以存储有意义的信息,这些信息可以分为两类,一种是键本身存储的内容,另一种是键的排列顺序。时间序列当处理流式事件时,最常见的数据就是按照时间序列组织的数据。由于HBase的数据组织方式,数据可能会被存储到一定的范围内,比如一个有特定起始键和停止键的region中。由于region只能由一...

2018-03-17 20:47:35 1207

原创 WAL (Write-Ahead Logging )

类似于MySQL的binary log,WAL存储了对数据的所有更改,这使得服务器崩溃的时候,可以有效地回放日志,是数据得以恢复到崩溃以前。这也就意味着如果将记录写入到WAL失败时,整个操作也可以认为是失败的。WAL就像日志中心一样,它被同一个region server中的所有region共享。当客户端启动一个操作来修改数据,该操作便会被封装成一个KeyValue对象实例中,并通过RP...

2018-03-13 22:15:23 4697 1

原创 HBase 架构 | 存储

目前主流的RDBMS和其他非关系型数据库底层数据库结构大都会使用B树或B+树,有时还会使用LSM树(Log-Structured Tree)。HBase与BitTable一样,是基于LSM树的系统。基本结构为了了解HBase存储层,下图给出了一个顶层结构图。从上图中可以看到HBase主要处理两种文件,预写日志(WAL),实际文件。这两种文件主要由HRegionServer管理。...

2018-03-11 20:53:38 1334

原创 HBase客户端

用户可以直接使用HBase客户端API,或者使用一些能够将请求转换成API调用的代理,这些代理将原生Java API包装成其他协议,这样客户端可以使用API提供的任意外部语言来编写程序。通常来说,外部API实现了专门基于Java的服务,而这种服务能够在内部使用HTable客户端提供的API。客户端与网关之间的协议是由当前可用选择以及远程客户端的需求决定的。HBase提供了REST、Thrift...

2018-03-07 22:41:25 5723

原创 列族

HBase列式存储格式允许用户存储大量的信息到相同的表中,而在RDBMS模型中,大量信息则需要切分成多张表存储。通常的数据库范式化规则不适合HBase,因此HBase中表的数量相对较少。虽然理论上HBase表是由行和列组成的,但是从物理结构上看,表存储在不同分区,即不同的region。下图展示了数据存储逻辑与物理上的不同。每个region只在一个region服务器中提供服务,而region直接...

2018-03-07 21:41:27 5488

原创 HBase过滤器,计数器和协处理器

过滤器HBase过滤器(filter)提供了非常强大的特性来帮助用户提高其处理表中数据的效率。用户不仅可以使用HBase中预定义好的过滤器,而且可以实现自定义的过滤器。HBase中两种主要的数据读取函数是get()和scan(),它们都支持直接访问数据和通过指定的起始行健访问数据的功能。也可以添加额外的限制条件(比如列族、列、时间戳和版本号)来过滤数据。同时用户还可以通过继承Filter类...

2018-03-06 21:24:56 967

原创 HBase行锁和扫描

HBase的主要客户端接口是由org.apache.hadoop.hbase.client包中的HTable类提供的,通过这个类,用户可以完成向HBase存储和检索数据,以及删除无效数据之类的错做。所有修改数据的操作都保证了行级别的原子性,这会影响到这一行数据所有的并发读写操作,换句话说,其他客户端或线程对统一行读写操作都不会影响到改行数据的原子性:要么读到最新的修改,要么等待系统允许写入该行...

2018-03-05 22:55:35 658

原创 HBase的基本结构

HBase 的表、列和单元格基本单位是列(column),一列或多个列成行(row),一个行有唯一行健(rowkey)确定存储,每个列可能有多个版本,多个版本存储在单元格(cell)中,行序是按照字典顺序进行排序的,意思是从左到右一次对比每一个键。排列顺序可能跟预期的不一样,可以添加补键来获取正确的顺序,比如 row-1 永远小于 row-2,无论后面是什么,将始终按照这个顺序排列。...

2018-02-28 22:18:05 1829

原创 列式数据库

行式数据库是按照行存储的,行式数据库擅长随机读操作不适合用于大数据。像SQL server, Oracle, MySQL等传统的是属于行式数据库范畴。列式存储数据库以列为单位聚合数据,然后将列值顺序地存入磁盘。列式数据库从一开始就是面向大数据环境下数据仓库的数据分析而产生。简单来说: 行式数据库把一行中的数据值串在一起存储起来,然后再存储下一行的数据,以此类推。 列式数据库把一列...

2018-02-27 21:15:51 2005

原创 ArrayList的简单实现

ArrayList是List接口的一个可变大小的数组的实现 ArrayList的内部是使用一个Object对象数组来存储元素的 初始化ArrayList的时候,可以指定初始化容量的大小,如果不指定,就会使用默认大小,为10 当添加一个新元素的时候,首先会检查容量是否足够添加这个元素,如果够就直接添加,如果不够就进行扩容,扩容为原数组容量的1.5倍 当删除一个元素的时候...

2018-02-22 16:55:24 309

原创 线程安全与锁优化

当多个线程访问一个对象时,如果不用考虑这些线程在运行环境下的调度和交替执行,也不需要进行额外的同步,或者在调用方进行任何其他的协调操作,调用这个对象的行为都可以获得正确的结果,那么这个对象时线程安全的。 —— Brian GoetzJava语言中的线程安全按照线程安全的“安全程度”由强至弱来排序,我们可以将Java语言中各种操作共享的数据分为以下5类:不可变、绝对线程安全、相...

2018-02-21 17:54:30 193

原创 Java内存模型与线程

让计算机去同时处理几件事情可以充分利用计算机处理器,从另一个场景来看,一个服务器同时对多个客户端提供服务也是一个并发应用场景。衡量一个服务性能的高低好坏,每秒事务处理数(Transactions Per Second, TPS)是最重要的指标之一,它代表着一秒内服务器端平均能响应的请求总数,而TPS值与程序的并发能力又有非常密切的关系。 对于计算量相同的任务,程序线程并发协调得有条不紊,效率自然...

2018-02-21 16:13:46 179

原创 晚期(运行期)优化

在部分的商用虚拟机(Sun HotSpot、IBM J9)中,Java 程序最初是通过解释器(Interpreter)进行解释执行的,当虚拟机发现某个方法或代码块的运行特别频繁时,就会把这些代码认定为“热点代码” (Hot Spot Code)。 为了提高热点代码的执行效率,在运行时,虚拟机将会把这些代码编译成与本地平台相关的机器码,并进行各种层次的优化,完成这个任务的编译器称为即时编译器(Ju...

2018-02-20 22:20:25 200

原创 早期(编译期)优化

Java语言的“编译期”是一段不确定的操作过程,可能是:前端编译器(编译器的前端)把Java文件转换为class文件。Sun 的 Javac、 Eclipse JDT 中的增量式编译器( ECJ)。后端编译器(JIT编译期 Just in time compiler)把字节码变成机器码。JIT 编译器: HotSpot VM 的 C1、 C2 编译器。静态编译器(AOT编译器 ahead...

2018-02-20 15:26:41 236

原创 虚拟机字节码执行引擎

字节码就像是汇编语言,是 JVM 的指令集。执行引擎是 Java 虚拟机最核心的组成部分之一。“虚拟机” 是一个相对于 “物理机” 的概念,这两种机器都有代码执行能力,其区别是物理机的执行引擎是直接建立在处理器、硬件、指令集和操作系统层面上的,而虚拟机的执行引擎则是由自己实现的,因此可以自行制定指令集与执行引擎的结构体系,并且能够执行哪些不被硬件直接支持的指令集格式。在 Java ...

2018-02-19 13:43:16 167

原创 类加载器

在类的整个生命周期一节中,在加载一节中提到 通过一个类的全限定名来获取定义此类的二进制字节流事实上,虚拟机设计团队把这部分的操作放置到Java虚拟机外部去实现,以便让应用程序自己决定如何去获取所需要的类,而实现这部分操作的代码称为类加载器。类加载器是 Java 语言的一个创新,也是 Java 语言流行的重要原因之一。它使得 Java 类可以被动态加载到 Java 虚拟机中并执行。...

2018-02-18 21:59:28 145

原创 类的整个生命周期

上一节介绍了Class文件的结构,但是最终Class文件中描述的信息最终要加载到虚拟机中之后才能使用。虚拟机把描述类的数据从Class文件加载到内存,并对数据进行校验、转换解析和初始化,最终形成可以被虚拟机使用的Java类型。在Java语言里面,类型的加载、连接和初始化过程都是在程序运行期间完成的,这种策略虽然会令加载时稍微增加一些性能开销,但是会为Java应用程序提供高度的灵活性,Java之...

2018-02-18 20:47:41 1275

原创 Class类文件的结构

class文件是一组以8位字节为基础的二进制流,各个数据项目严格按照顺序紧凑地排列在class文件中,中间没有任何分隔符,这点和png、jpg等图片文件格式类似。当遇到需要占用8位字节以上空间的数据项时,则会按照一定的字节顺序分隔为若干个8位字节进行存储。Java虚拟机规范规定class文件格式采用一种类似于C语言结构体的伪结构来存储数据,这种伪结构只有两种数据类型:无符号数和表。 ...

2018-02-18 14:18:43 452

原创 内存分配与回收策略

Java技术体系中所提倡的自动内存管理最终可以归结为自动化的解决了两个问题:给对象分配内存回收分配给对象的内存回收分配给对象的内存在前面几节中已经说明过了。对象的内存分配简单来说就是按照某种分配策略在堆上分配空间,而分配策略也并不是固定不变的,其细节取决于当前使用的是哪一种垃圾收集器组合,还有虚拟机中内存相关参数的位置。内存分配规则就目前而言,JVM分代是Java垃圾收集...

2018-02-17 16:46:15 163

原创 7种垃圾收集器

如果说收集算法是内存回收的方法论,那么垃圾收集器就是内存回收的具体实现。Java虚拟机规范中对垃圾收集器应该如何实现并没有任何规定,因此不同的厂商、版本的虚拟机所提供的垃圾收集器都可能会有很大差别,并且一般都会提供参数供用户根据自己的应用特点和要求组合出各个年代所使用的收集器。接下来讨论的收集器基于JDK1.7 Update 14 之后的HotSpot虚拟机(在此版本中正式提供了商用的G1收集...

2018-02-17 15:39:46 2925

原创 HotSpot 对算法的实现

前面垃圾收集器概述和垃圾收集算法两节从理论上介绍了对象存活判断算法和垃圾收集算法,本节则主要介绍HotSpot对上述算法的实现规则。枚举根节点可达性算法中从GC Roots节点找到引用链这个操作可能会因为巨大的方法区而导致大量时间的消耗,而且可达性分析会因为GC停顿的原因而导致执行时间的敏感。由于目前的主流java虚拟机使用的都是准确式GC,所以当执行系统停顿下来之后,并不需要一个不漏...

2018-02-16 23:24:20 315

原创 垃圾收集算法

在确定了哪些垃圾可以被回收后,垃圾收集器要做的事情就是开始进行垃圾回收,但是这里面涉及到一个问题是:如何高效地进行垃圾回收。由于Java虚拟机规范并没有对如何实现垃圾收集器做出明确的规定,因此各个厂商的虚拟机可以采用不同的方式来实现垃圾收集器,所以在此只讨论几种常见的垃圾收集算法的核心思想。标记-清除算法标记-清除算法(Mark-Sweep)这是最基础的垃圾回收算法,之所以说它是最基础的是...

2018-02-16 22:02:10 225

原创 垃圾收集器概述

垃圾收集器(Garbage Collection, GC)的历史可以追溯到1960年MIT的第一门真正使用内存动态分配和垃圾收集技术的语言——Lisp。人们当时就在思考GC需要完成的3件事: 哪些内存需要回收? 什么时候回收? 如何回收?经过半个世纪的发展,目前内存的动态分配与内存回收技术已经相当成熟。在Java这门语言中, 程序计数器、虚拟机栈、本地方法栈三个区...

2018-02-16 20:02:57 195

原创 Java 对象的访问定位

建立对象是为了使用对象,Java程序通过栈上的reference数据来操作堆上的具体对象。目前主流的访问方式有使用句柄和直接指针两种。使用句柄访问如果使用句柄访问方式,Java堆中将会划分出一块内存来作为句柄池,reference中存储的就是对象的句柄地址,而句柄中包含了对象实例数据和类型数据各自的具体地址信息如下图所示:使用直接指针访问如果使用直接指针访问方式,j...

2018-02-13 09:39:57 238

原创 Java 对象的内存布局

在HotSpot虚拟机中,对象在内存中存储的布局可以分为三块区域:对象头(Header)、 实例数据(Instance Data)、对齐填充(Padding)。对象头HotSpot虚拟机的对象头包括两部分信息,第一部分用于存储对象自身的运行时数据;第二部分用于存储类型指针。存储对象自身的运行时数据这部分数据有HashCode、GC分代年龄、锁状态标志、线程持有的锁、偏向线程ID、偏...

2018-02-13 09:21:48 1056 1

原创 Java 对象的创建的过程

Java是一门面向对象的语言,创建对象通常仅仅是一个new关键字而已,而在虚拟机中,对象的创建又是怎样的一个过程呢?Java对象创建过程虚拟机遇到一个new指令时,首先将去检查这个指令的参数是否能在常量池中定位到一个类的符号引用,并且检查这个符号引用代表的类是否已经被加载、解析和初始化过。如果没有那么必须先执行相应的类加载过程。在类加载检查通过后,接下来虚拟机将为新生对象分配内...

2018-02-12 12:14:01 286

原创 Java虚拟机内存区域划分

Java程序运行时的数据区域Java虚拟机在执行Java程序的过程中,会把它所管理的内存划分为若干个不同的数据区域,这些区域都有各自的用途,以及创建和销毁的时间,有的区域随着虚拟机进程的启动而存在,有些区域则依赖用户线程的启动和结束而建立和销毁。Java虚拟机所管理的内存主要包含下图所示的几个运行时数据区域。程序计数器(PC Registers)程序计数器是一块比较小的内存空间,它...

2018-02-12 11:15:02 229

原创 shell实现日志滚动

什么是日志滚动?在日常linux的操作中,经常会产生各种各样的日志文件,如果不加以处理,经常会导致单个日志文件体积过于臃肿,不利于后期排查。因此需要对日志文件定期操作,比如每天将日志文件打包备份,重新编排版本号等。linux发行版中也默认安装了logrotate这款上古神器来管理日志,它可以自动对日志进行截断(或轮循)、压缩以及删除旧的日志文件。但是这里并不想去过多介绍logrotate这

2018-01-26 14:51:29 4358

原创 为Ambari自定义Service添加配置项

Service 目录结构[root@manager SAMPLESRV]# pwd/var/lib/ambari-server/resources/stacks/FSDP/2.5/services/SAMPLESRV[root@manager SAMPLESRV]# tree.├── configuration│ └── scrapy-config.xml├── metai

2018-01-23 15:45:43 2592 1

原创 为Ambari自定义Service添加QuickLink

摘要Ambari为自定义Service添加QuickLink自定义的Service的目录结构[root@manager SAMPLESRV]# pwd/var/lib/ambari-server/resources/stacks/HDP/2.5/services/SAMPLESRV[root@manager SAMPLESRV]# tree.├── configurat

2018-01-23 15:03:09 2251 2

原创 为Ambari添加新的Service

Ambari是什么Ambari 跟 Hadoop 等开源软件一样,也是 Apache Software Foundation 中的一个项目,并且是顶级项目。目前最新的发布版本是 2.6.1。就 Ambari 的作用来说,就是创建、管理、监视 Hadoop 的集群,但是这里的 Hadoop 是广义,指的是 Hadoop 整个生态圈(例如 Hive,Hbase,Sqoop,Zookeeper 等)

2018-01-23 14:18:37 2986

原创 Java 程序执行顺序

Java程序执行顺序Java程序的执行顺序大概可以分成三个部分。 1.静态属性:静态方法声明,静态块。 2.动态属性:普通方法声明,构造块。 3.构造方法。而如果类与类之间存在继承关系的话,那么会先执行父类的静态属性,接着执行子类的静态属性;然后是父类的动态属性,父类的构造方法;接着执行子类的动态属性;子类的构造方法。至此,Java程序便执行完成。借用想知道Java代

2018-01-22 22:19:37 2458 1

原创 使用APACHE KNOX作为proxy访问web,同时开启SSO功能

使用APACHE KNOX作为proxy访问web,同时开启SSO功能

2017-10-31 19:31:25 5883 2

机器学习实战

机器学习是人工智能研究领域中一个极其重要的研究方向,在现今的大数据时代背景下,捕获数据并从中萃取有价值的信息或模式,成为各行业求生存、谋发展的决定性手段,这使得这一过去为分析师和数学家所专属的研究领域越来越为人们所瞩目。, 本书第一部分主要介绍机器学习基础,以及如何利用算法进行分类,并逐步介绍了多种经典的监督学习算法,如k近邻算法、朴素贝叶斯算法、Logistic回归算法、支持向量机、AdaBoost集成方法、基于树的回归算法和分类回归树(CART)算法等。第三部分则重点介绍无监督学习及其一些主要算法:k均值聚类算法、Apriori算法、FP-Growth算法。第四部分介绍了机器学习算法的一些附属工具。, 全书通过精心编排的实例,切入日常工作任务,摒弃学术化语言,利用高效的可复用Python代码来阐释如何处理统计数据,进行数据分析及可视化。通过各种实例,读者可从中学会机器学习的核心算法,并能将其运用于一些策略性任务中,如分类、预测、推荐。另外,还可用它们来实现一些更高级的功能,如汇总和简化等。

2017-10-22

SQL必知必会 第4版 epub

SQL必知必会 第4版 本书是麻省理工学院、伊利诺伊大学等众多大学的参考教材。除了作为教程之外,独特的编排方式还使本书成为方便的快速查询手册。

2017-10-22

Introduction.to.Algorithms(算法导论第三版原版)及课件和作业

《算法导论》原书名——《Introduction to Algorithms》,是一本十分经典的计算机算法书籍,与高德纳(Donald E.Knuth)的《计算机程序设计艺术》(《The Art Of Computer Programming》)相媲美。 《算法导论》由Thomas H.Cormen、Charles E.Leiserson、Ronald L.Rivest、Clifford Stein四人合作编著(其中Clifford Stein是第二版开始参与的合著者)。本书的最大特点就是将严谨性和全面性融入在了一起。 其中网易公开课上面有本书作者Charles Leiserson的视频,此次只上传他们的课件和作业题

2015-01-19

FlappyBird源代码

本项目仅限VS2012或更高版本编译。 非VS2012需要自行重新编译fancy2d。 本源码仅作学习交流之用,源代码可以任意引用,对于其中潜在的BUG本人概不负责。 本代码使用C++编辑

2014-04-27

基于高频RFID学生考勤管理系统

基于高频RFID学生考勤管理系统 ,RFID,高频

2014-04-27

latex排版学习笔记

latex是一款专业的排版软件,本文档对latex的每个工具进行了详细介绍,并用简单的例子进行了说明,达到了图文并茂的说明目的!

2014-02-04

ns-3-tutorial

ns-3的简介,安装,使用简单教程

2014-02-04

空空如也

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

TA关注的人

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