HBASE 概述
HBase是什么
HBase是一种构建在HDFS之上的分布式、面向列的存储系统。在需要实时读写、随机访问超大规模数据集时,可以使用HBase。
HBase通过线性方式从下之上增加节点进行扩展。HBase不是关系型数据库,也不支持SQL,但是它有自己的特长,这是RDBMS不能处理的,HBase巧妙地将大而稀疏的表放在商用的服务器集群上。
HBase是Google Bigtable的开源实现,与Google Bigtable利用GFS作为其文件存储系统类似,HBase利用HDFS作为其文件存储系统;Google运行MapRedue来处理Bigtable中的海量数据,HBase同样利用Hadoop MapReduce来处理HBase中的海量数据;Google Bigtable利用Chubby作为协同服务,HBase利用Zookeeper作为对应。
HBase和RDBMS
HBase
RDBMS
HBase无模式,它不具有固定模式的概念;仅定义列簇。
RDBMS有模式,它的模式是用于描述表的整体结构的约束。
它专门创建为宽表。HBase是横向扩展。
这些都是细而专的小表。很难形成规模
没有任何事物存在于HBase
RDBMS是事务性的。
它反规范化数据
它具有规范化的数据
它用于半结构以及结构化数据
用于结构化数据。
HBase的特点
大 :一个表可以有数十亿行和上百万列 面向列 :面向列表(簇)的存储和权限控制,列簇独立检索。 稀疏 :对于为空的列,并不是占用存储空间,因此表可以设计的非常稀疏。 无模式 :每一行都有一个可以排序的主键和任意多的列,列可以根据需要动态增加,同一张表中不同的行可以有截然不同的列。 数据多版本 :每个单元中的数据可以有多个版本,默认情况下,版本号自动分配,版本号就是单元格插入时的时间戳。 数据类型单一 :HBase中的数据都是字符串,没有类型。
HBase的高并发和实时处理数据
Hadoop是一个高容错,高延时的分布式文件系统和高并发的皮处理系统,不适用于提供实时计算;HBase是一个可以提供实时计算的分布式数据库,数据被保存在hdfs分布式文件系统中,有hdfs保证高容错性,但是在生产环境中,HBase是如何基于Hadoop提供实时性呢?HBase上的数据是以StroeFile(HFile)二进制文件,也就是说,HBase的存储数据对于hdfs文件系统是透明的。下面是HBase文件在HDFS上的存储示意图。
HBase HRegion servers集群中的所有的region的数据在服务器启动时都是被打开的,并且在内存初始化一些memstore,相应的这就在一定程度上加快系统相应;而Hadoop中的block中的数据文件默认是关闭的,只有在需要的时候才打开,处理完数据后就 关闭,这在一定程度上就增加了响应时间。
从根本上说,HBase能提供实时计算服务主要原因是由其架构和底层的数据结构决定的,即由LSM-Tree + HTable(region分区) + Chche决定。客户端可以直接 定位到要查数据所在的HRegion server服务器,然后直接在服务器的一个region上查找要匹配的数据,并且这些数据部分是经过cache缓存的。具体查询 流程如下图所示:
具体数据访问流程如下:
Client会通过内部缓存的相关的ROOT中的信息和.META中的信息直接与请求数据匹配的HRegion server;
然后直接定位到该服务器上与客户端请求对应 的Region,客户端请求首先会查询该Region在内存中的缓存,即Memstore(Memstore是一个按key排序的树形结构的缓冲区);
如果在Memostore中查到结果则直接将结果返回给Client;
在Memstore中没有查到匹配的数据,接下来会读已持久化的StoreFile文件中的数据(storeFile也是按key排序的树形结构的文件,并且是特别为范围查询或block查询优化过的 ;另外HBase读取磁盘 文件是按其基本I/O单元读数据的)。
如果在BlockCache中能查到要找的数据则将结果返回,否则就去相应的StoreFile文件中读取一个block的数据,如果还没有读到要查的数据,就将该数据block放到HRegion Server的blockcache中,然后接着读下一个block的数据,一直循环block数据直到找到要请求的数据并返回结果;如果该Region中的数据都没有查到要找的数据,最后返回null,表示没有匹配的数据。
HBase数据模型
HBase以表的形式存储数据。表由行和列组成。列划分为若干个列族(row family),如下图所示。
HBase的逻辑数据模型如下:
HBase是一个面向列的数据库,在表中它由行排序。表模式只能定义列簇,也就是键值对。一个表有多个列簇以及每个列簇可以有任意数量的列 。后续列的值连续存储在磁盘上。总之:
表是行的集合
行是列簇的集合
列簇是列的集合
列是键值对的集合
ROW Key
与NoSQL数据库一样,Row Key是用来检索记录的主键。访问HBase table中的行,只有三种方式:
通过单个Row Key访问。
通过Row Key的range全表扫描。
Row Key可以使任意字符串 (最大长度是64kb,实际应用中长度一般是10~100bytes),在HBase内部,Row Key保存为字节数组。
在存储时,数据按照Row Key的字典序(byte order)排序存储。设计key时,要充分排序存储这个特性,将经常一起读取的行存储在一起(位置相关性).
行的一次读写是原子操作(不论一次读写多少列)。这个设计决策能够使用户很容易理解在第同一行进行并发更新操作时的行为。
列簇(Column family)
HBase表中的每个列都是归属于某个列簇。列簇是表的Schema的一部分,必须在使用表之前定义。类名都是以列簇作为前缀,例如 courses:history,courses:math都是属于courses这个列簇。
访问控制、磁盘和内存的使用统计都是在列簇层进行的。在实际应用中,列簇上的控制权限能帮助我们管理不同类型的应用,例如,允许一些应用可以添加新的基本数据、一些应用可以 读取基本数据并创建继承的列簇、一些应用则只允许浏览数据(甚至可能因为隐私的原因不能浏览所有数据)。
时间戳
HBase中通过Row和Columns确定的一个存储单元称为Cell。每个Cell都保存着同一份数据的多个版本。版本通过时间戳类索引,时间戳 的类型是64位整型。时间戳 可以由HBase(在数据写入时自动)赋值,此时时间戳是精确到毫秒的当前系统时间。时间戳也可以由客户显示 赋值。如果应用程序要避免数据版本冲突,就必须 自己生成具有唯一性的时间戳。每个Cell中,不同版本的数据按照时间倒序排序,即最新的数据排在最前面。
为了避免数据存储在过多版本造成的管理(包括存储和索引)负担,HBase提供了两种数据版本回收方式。一是保存的最后n个版本,二是保存最近一段时间内的版本。用户可以针对每个列簇进行设置。
Cell
Cell是由{row key, column(= + ),version}唯一确定的单元。Cell中的数据是没有类型的,全部是字节码形式存储。
HBase物理存储
Table在行的方向上分割为多个HRegion,每个HRegion分散在不同的RegionServer中。
每个HRegion由多个Store构成,每个Store由一个memStore和0或者多个StoreFile组成,每个Store保存一个Columns Family.
参考博文
http://blog.csdn.net/u010270403/article/details/51648462
你可能感兴趣的:(HBASE 概述)
006-TMS320F28335 DSP外设详解:ePWM的配置与应用
Seraphina_Lily
单片机 嵌入式硬件 dsp开发
TMS320F28335(简称28335)作为一款高性能DSP,其ePWM(增强型脉宽调制模块)是其核心外设之一,广泛用于电机控制和电源管理等领域。本文将深入讲解ePWM的功能、配置方法及应用实例,助力开发者快速上手。一、ePWM功能概述ePWM模块具备以下关键特性:高精度输出:支持150ps的高分辨率脉冲输出,适用于对控制精度要求极高的应用场景。多通道独立控制:支持多达6个独立的ePWM通道,可
【向上教育】结构化面试概述.pdf
㏕追忆似水年华あ
word
目录第一章面试须知—面试形式..........................................................................................................1一、结构化面试........................................................................
Spring高级特性详解:解锁企业级开发的进阶能力
一切皆有迹可循
Java开发 spring java 后端
前言Spring框架不仅提供基础的依赖管理与事务控制,其高级特性更是为企业级应用开发注入强大动能。本文将深入解析Spring的核心高级特性,结合实战代码示例,助你掌握这些提升开发效率与系统性能的关键技术。一、条件化配置(@Conditional)1.1特性概述@Conditional注解允许开发者根据特定条件决定是否创建Bean,实现环境敏感型配置。Spring提供多个内置条件注解,如@Condi
计算机网络的基础知识
Mike_Wuzy
网络
以下是一些关于计算机网络基础知识的概述:1.网络定义网络是一种通信基础设施,通过它可以让多个设备进行数据交换和资源共享。2.计算机网络的基本要素客户端(Client):请求服务或资源的一方。服务器(Server):提供服务或资源的一方。协议(Protocol):规定通信规则,确保双方能够正确理解信息的内容和格式。介质(Medium):数据传输的物理路径,如电线、光缆等。3.网络分类根据覆盖范围的不
Android 13 接入 MediaSession 指南
Code_onepage
android
Android13接入MediaSession指南一、MediaSession概述传统音乐播放应用架构需优先保障音频后台播放,传统方案依赖独立Service异步加载资源并处理播放控制,通过Binder或广播实现界面通信。扩展通知栏控制需额外构建广播接收器,锁屏交互则依赖AIDL等跨进程技术,多终端协同更导致架构复杂化。MediaSession框架通过C/S架构解耦界面与服务层,核心组件包含Medi
树莓派(Raspberry Pi)常见的各种引脚介绍
qq_39717490
单片机 嵌入式硬件
树莓派(RaspberryPi)常见的各种引脚介绍_树莓派引脚-CSDN博客以下为全部文章内容的复制本文将为您详细讲解树莓派(RaspberryPi)常见的各种引脚,以及它们的特点、区别和优势。树莓派是一款非常受欢迎的单板计算机,它拥有多个GPIO(通用输入输出)引脚,这些引脚可以用于各种电子项目和交互式应用。1.树莓派引脚概述树莓派有多种型号,包括RaspberryPi1、2、3和4。每种型号都
60 python asyncio模块(异步IO)
爬呀爬的水滴
python零基础到入门 python 开发语言 前端 asyncio 异步io
一、asyncio概述asyncio是Python标准库中用于编写异步I/O操作的强大模块,特别适用于处理I/O密集型任务。在传统同步编程中,当程序遇到网络请求、文件读写等I/O操作时会阻塞等待,导致资源浪费。而asyncio通过异步编程模型,让程序在等待I/O操作时能同时处理其他任务,极大提升了单线程程序的并发效率。二、asyncio核心概念2.1协程(Coroutine)协程是asyncio的
死磕solidity之编写可升级合约
mindcarver
blockchain ethereum cosmos btc solidity 智能合约
为什么要编写可升级合约默认情况下,以太坊中的智能合约是不可变的。但是一旦项目方提前发现合约漏洞或者想升级功能,是需要合约可以变动的,因此一开始编写可升级的合约是重要的。因此我们需要使用可升级的合约来增强可维护性。升级合约概述升级合约通常是采用代理模式来实现,这种模式的工作原理存在两个合约,一个是代理合约,一个是实现合约,代理合约负责管理合约状态数据,而实现合约只是负责执行合约逻辑,不存储任何状态数
gem5-gpu教程 DSENT (Design Space Exploration of Networks Tool) 配合gem5
事橙1999
gem5-gpu 硬件架构
概述DSENT是一种建模工具,旨在快速探索电子和新兴的片上光电网络(NoC)的设计空间。它为各种网络组件提供分析和参数化模型,并可在一系列技术假设下移植。给定架构级参数,DSENT从电气和光学构建块分层构建指定的模型,并输出详细的功率和面积估计。版本当前:0.91(2012年6月26日)最新版本或其他信息可在以下网址找到https://sites.google.com/site/mitdsent系
Solidity学习 - 代理模式中的初始化漏洞
本郡主是喵
# Solidity 学习 区块链 Solidity
文章目录前言一、原理剖析(一)代理模式基础(二)初始化流程概述(三)初始化漏洞成因二、案例分析(一)某DeFi借贷平台攻击事件(二)某NFT市场平台漏洞事件三、解决办法(一)严格权限控制(二)防止重入机制前言在Solidity智能合约开发中,代理模式因其强大的可升级性与灵活性,成为了众多项目的首选架构方案。通过将合约的逻辑实现与存储分离,开发者能够在不改变合约地址(从而不影响用户交互)的前提下,对
SqlServer基础学习笔记
@半夏微凉科技
技术拓展 #sqlserver sqlserver 数据库 学习 笔记 sqlServer学习笔记
SqlServer基础学习笔记介绍了SQLServer数据库管理系统的基础知识,包括数据库的创建、表的设计、SQL查询语句、数据类型、索引、以及常见的管理任务等内容,适合初学者入门学习。第一章:SQLServer简介1.1SQLServer概述SQLServer是由Microsoft公司开发的关系型数据库管理系统,用于存储和管理大量数据。它提供了可靠性、安全性和高性能的数据库解决方案,广泛应用于企
DeepSeek R1 Android本地化部署
Dawson_Jiang
大模型 deepseek ollama AI 大模型 手机部署deepseek
1.概述android手机端部署deepseek一般需要安装termux,ollama,deepseek三个大的步骤原因分析:deepseek等大模型需要类似ollama的工具去运行。ollama有macwindow和linux版本,无Android版本;termux是一个模拟linux环境的Androidapp,在此环境中即可安装运行ollamalinux版本,然后再ollama上面部署运行de
Android 跨进程通信(IPC)深度技术总结
JT-Blink
Android android
1.概述Android系统基于Linux内核,采用多进程架构设计。每个Android应用默认运行在独立的进程中,拥有独立的虚拟机实例和内存空间。进程间的内存隔离机制保证了系统的稳定性和安全性,但同时也带来了进程间通信的挑战。1.1为什么需要跨进程通信系统架构需求:Android系统服务(如ActivityManagerService、WindowManagerService)运行在system_s
MocapApi 中文文档 和github下载地址 NeuronDataReader(以下简称 NDR)的下一代编程接口
zhangfeng1133
github 信号处理
以下是MocapApi技术文档githubhttps://github.com/pnmocap/MocapApi?tab=readme-ov-file国内可以查找getcode英文文档https://mocap-api.noitom.com/mocap_api_en.html概述MocapApi是NeuronDataReader(以下简称NDR)的下一代编程接口,设计目标为:跨平台兼容(Win/M
生成树协议(STP)技术详解:原理、演进与配置实践
生成树协议(SpanningTreeProtocol,简称STP)是局域网交换网络中的“防堵大师”,旨在解决环路问题,确保数据传输稳定无阻。从经典的IEEE802.1DSTP,到思科的PVST(每VLAN生成树)、快速的RSTP(IEEE802.1w),再到高效的MSTP(IEEE802.1s),STP家族历经演进,满足了现代网络的多样化需求。一、STP概述:局域网的防环基石1.1STP的定义与背
Pydub音频处理库核心API详解
滕娴殉
Pydub音频处理库核心API详解pydubManipulateaudiowithasimpleandeasyhighlevelinterface项目地址:https://gitcode.com/gh_mirrors/py/pydub概述Pydub是一个功能强大的Python音频处理库,它提供了简洁直观的API来处理各种音频操作。本文将深入解析Pydub的核心功能,帮助开发者快速掌握音频处理的关键
快速排序(快排)实现及原理
hixiaoyang
排序算法 算法 java
一、算法概述快速排序(QuickSort)是由TonyHoare在1960年提出的一种分治算法,平均时间复杂度为O(nlogn),最坏情况下为O(n²)。它是目前实践中最高效的通用排序算法之一。核心思想:通过一趟排序将待排记录分隔成独立的两部分,其中一部分记录的关键字均比另一部分的关键字小,然后递归地对这两部分记录继续进行排序。二、算法原理1.基本步骤选择基准(pivot):从数组中选择一个元素作
嵌入式故障码管理系统设计实现
比特冬哥
嵌入式领域开发 嵌入式 故障码管理
文章目录前言一、故障码管理系统概述二、核心数据结构设计2.1故障严重等级定义2.2模块ID定义2.3故障代码结构2.4故障记录结构三、故障管理核心功能实现3.1初始化功能3.2故障记录功能3.3记录查询与清除功能3.4系统自检功能四、故障存储实现4.1Flash存储实现4.2RAM存储实现五、测试案例六、源码6.1fault_manager.c6.2fault_manager.h6.3fault_
直播分享|TinyVue 组件库主题适配原理与实战
OpenTiny社区
Vue.js 前端 开源 OpenTiny Vue
在前端开发过程中,不同的项目可能需要不同的设计风格。而了解组件库的主题适配功能,也可以帮助开发者轻松定制独特的主题风格,从而满足各种设计需求。因此6月27日晚19点,体验技术团队TinyVue项目成员岑灌铭老师将为大家带来以《TinyVue组件库主题适配原理与实战》为主题的分享,届时将与大家共同探讨主题适配的内容概述及方案详解。直播详情直播主题TinyVue组件库主题适配原理与实战直播亮点一、主题
Qt的概述和安装、信号与槽、元对象系统、动态属性、字符串QString、容器、窗口部件与布局管理器、顺序容器、UI界面设计、数值输入输出、时间和日期、界面UI组件、模型视图、关联与集合容器、对话框
zhxup606
C++ qt ui 开发语言
涵盖Qt的概述和安装、信号与槽、元对象系统、动态属性、字符串QString、容器、窗口部件与布局管理器、顺序容器、UI界面设计、数值输入输出、时间和日期、界面UI组件、模型视图、关联与集合容器、对话框、多窗口开发、绘图、QGraphicsView绘图框架、文件处理、文件读写与事件、补充知识、INI配置文件、JSON文件操作、XML文件读写、和网络编程。每章将包含详细讲解、代码示例(demo),并确
鸿蒙开发之埋点方案:高效追踪用户行为
niu某某
移动开发 鸿蒙开发 HarmonyOS harmonyos 鸿蒙开发 移动开发 组件化 模块化 ArkUI
往期推文全新看点(文中附带最新·鸿蒙全栈学习笔记)✒️鸿蒙应用开发与鸿蒙系统开发哪个更有前景?✒️嵌入式开发适不适合做鸿蒙南向开发?看完这篇你就了解了~✒️对于大前端开发来说,转鸿蒙开发究竟是福还是祸?✒️鸿蒙岗位需求突增!移动端、PC端、IoT到底该怎么选?✒️记录一场鸿蒙开发岗位面试经历~✒️持续更新中……概述埋点是指将信息采集程序和原本的功能代码结合起来,针对特定用户行为收集、处理和发送一些
Python爬虫技术实战:高效市场趋势分析与数据采集
Python爬虫项目
2025年爬虫实战项目 python 爬虫 开发语言 easyui 汽车
摘要本文将深入探讨如何利用最新的Python爬虫技术进行市场趋势分析,涵盖异步IO、无头浏览器、智能解析等前沿技术,并提供完整可运行的代码示例。文章将系统介绍从基础爬虫到高级反反爬策略的全套解决方案,帮助读者掌握市场数据采集的核心技能。1.市场趋势分析与爬虫技术概述市场趋势分析已成为现代商业决策的核心环节,而数据采集则是分析的基石。根据2024年最新统计,全球83%的企业已将网络爬虫技术纳入其数据
基于UC3845B的72V转12V DC-DC电源模块设计资料包
本文还有配套的精品资源,点击获取简介:本资料包详细介绍了使用UC3845B芯片实现从72V到12V的DC-DC电源转换的设计过程,涵盖了电源转换技术、UC3845B芯片的应用、电路设计原则,并提供了Altiu1.UC3845B芯片应用概述1.1UC3845B芯片简介UC3845B是一款经典的脉宽调制(PWM)控制器,广泛应用于开关电源的设计中,特别是在反激式和正激式转换器中。它集成了多种保护功能,
使用Guava Cache做缓存
randy.lou
guava 缓存 spring
文章目录1.概述1.1适用场景1.2Helloworld2.数据加载使用2.1CacheLoader.load(Kkey)2.2CacheLoader.loadAll(keys)批量加载2.3Callable.call2.4手工写入3.缓存清除3.1基于maximumSize的清除3.2基于maximumWeight的清除3.3基于时间的清除3.4使用WeakReferenct、SoftRefer
国产化芯片ZCC3790--同步升降压控制器的全新选择, 替代LT3790
2501_92222359
嵌入式硬件
ZCC3790:同步升降压控制器的全新选择,替代LT3790在电源管理领域,高效、可靠的电压调节器至关重要。ZCC3790,一款同步4开关升降压电压/电流调节器控制器,凭借卓越性能,成为LT3790的理想替代品。一、产品概述ZCC3790能在输入电压高于、低于或等于输出电压时,精准调节输出电压、输出电流或输入电流。其恒定频率、电流模式架构,可使工作频率在200kHz至700kHz间调整或同步,无需
ZCC5050是一款高性能的高侧 OR-ing FET 控制器替代LM5050
2501_92222359
嵌入式硬件
一产品概述ZCC5050-1是一款高性能的高侧OR-ingFET控制器,适用于冗余电源系统。它通过外部N沟道MOSFET实现理想的二极管整流功能,可显著降低传统二极管整流器带来的功率损耗和电压降。ZCC5050-1提供了快速的电流反转响应能力,能够在50ns内关闭MOSFET,确保系统的稳定性和可靠性。ZCC5050-1isahigh-performancehighsideORingFETcont
ZCC5050是一款高性能的高侧 OR-ing FET 控制器替代LM5050
2501_92222359
嵌入式硬件
一产品概述ZCC5050-1是一款高性能的高侧OR-ingFET控制器,适用于冗余电源系统。它通过外部N沟道MOSFET实现理想的二极管整流功能,可显著降低传统二极管整流器带来的功率损耗和电压降。ZCC5050-1提供了快速的电流反转响应能力,能够在50ns内关闭MOSFET,确保系统的稳定性和可靠性。ZCC5050-1isahigh-performancehighsideORingFETcont
Tair向量数据库:阿里云原生内存数据库服务的高性能向量检索解决方案
mmlihaio
数据库 云原生 python
Tair向量数据库:阿里云原生内存数据库服务的高性能向量检索解决方案1.引言在当今的人工智能和大数据时代,高效的向量检索已成为许多应用场景的关键需求。Tair作为阿里云开发的云原生内存数据库服务,不仅提供了丰富的数据模型和企业级能力,还引入了基于非易失性内存(NVM)存储介质的持久内存优化实例。本文将深入探讨如何利用Tair向量数据库功能,实现高性能的向量存储和检索。2.Tair向量数据库概述Ta
第06章_java常用类
假装不痛
java java jvm 开发语言
6.java常用类6.1String类publicclassMain{/*1.概述1.1String:字符串,使用一对""引起来表示1.2String是声明为final的,不可被继承1.3String实现了Serializable接口:表示字符串是支持序列化的实现了Comparable接口:表示String可以比较大小1.4String内部定义了finalchar[]value用于存储字符串数据(
java项目打包_Java项目打包方式分析
weixin_39727402
java项目打包
概述在项目实践过程中,有个需求需要做一个引擎能执行指定jar包的指定main方法。起初我们以一个简单的spring-boot项目进行测试,使用spring-boot-maven-plugin进行打包,使用java-cpdemo.jar.执行,结果报错找不到对应的类。我分析了spring-boot-maven-plugin打包的结构,又回头复习了java原生jar命令打包的结果,以及其他Maven打
Hadoop(一)
朱辉辉33
hadoop linux
今天在诺基亚第一天开始培训大数据,因为之前没接触过Linux,所以这次一起学了,任务量还是蛮大的。
首先下载安装了Xshell软件,然后公司给了账号密码连接上了河南郑州那边的服务器,接下来开始按照给的资料学习,全英文的,头也不讲解,说锻炼我们的学习能力,然后就开始跌跌撞撞的自学。这里写部分已经运行成功的代码吧.
在hdfs下,运行hadoop fs -mkdir /u
maven An error occurred while filtering resources
blackproof
maven 报错
转:http://stackoverflow.com/questions/18145774/eclipse-an-error-occurred-while-filtering-resources
maven报错:
maven An error occurred while filtering resources
Maven -> Update Proje
jdk常用故障排查命令
daysinsun
jvm
linux下常见定位命令:
1、jps 输出Java进程
-q 只输出进程ID的名称,省略主类的名称;
-m 输出进程启动时传递给main函数的参数;
&nb
java 位移运算与乘法运算
周凡杨
java 位移 运算 乘法
对于 JAVA 编程中,适当的采用位移运算,会减少代码的运行时间,提高项目的运行效率。这个可以从一道面试题说起:
问题:
用最有效率的方法算出2 乘以8 等於几?”
答案:2 << 3
由此就引发了我的思考,为什么位移运算会比乘法运算更快呢?其实简单的想想,计算机的内存是用由 0 和 1 组成的二
java中的枚举(enmu)
g21121
java
从jdk1.5开始,java增加了enum(枚举)这个类型,但是大家在平时运用中还是比较少用到枚举的,而且很多人和我一样对枚举一知半解,下面就跟大家一起学习下enmu枚举。先看一个最简单的枚举类型,一个返回类型的枚举:
public enum ResultType {
/**
* 成功
*/
SUCCESS,
/**
* 失败
*/
FAIL,
MQ初级学习
510888780
activemq
1.下载ActiveMQ
去官方网站下载:http://activemq.apache.org/
2.运行ActiveMQ
解压缩apache-activemq-5.9.0-bin.zip到C盘,然后双击apache-activemq-5.9.0-\bin\activemq-admin.bat运行ActiveMQ程序。
启动ActiveMQ以后,登陆:http://localhos
Spring_Transactional_Propagation
布衣凌宇
spring transactional
//事务传播属性
@Transactional(propagation=Propagation.REQUIRED)//如果有事务,那么加入事务,没有的话新创建一个
@Transactional(propagation=Propagation.NOT_SUPPORTED)//这个方法不开启事务
@Transactional(propagation=Propagation.REQUIREDS_N
我的spring学习笔记12-idref与ref的区别
aijuans
spring
idref用来将容器内其他bean的id传给<constructor-arg>/<property>元素,同时提供错误验证功能。例如:
<bean id ="theTargetBean" class="..." />
<bean id ="theClientBean" class=&quo
Jqplot之折线图
antlove
js jquery Web timeseries jqplot
timeseriesChart.html
<script type="text/javascript" src="jslib/jquery.min.js"></script>
<script type="text/javascript" src="jslib/excanvas.min.js&
JDBC中事务处理应用
百合不是茶
java JDBC编程 事务控制语句
解释事务的概念; 事务控制是sql语句中的核心之一;事务控制的作用就是保证数据的正常执行与异常之后可以恢复
事务常用命令:
Commit提交
[转]ConcurrentHashMap Collections.synchronizedMap和Hashtable讨论
bijian1013
java 多线程 线程安全 HashMap
在Java类库中出现的第一个关联的集合类是Hashtable,它是JDK1.0的一部分。 Hashtable提供了一种易于使用的、线程安全的、关联的map功能,这当然也是方便的。然而,线程安全性是凭代价换来的――Hashtable的所有方法都是同步的。此时,无竞争的同步会导致可观的性能代价。Hashtable的后继者HashMap是作为JDK1.2中的集合框架的一部分出现的,它通过提供一个不同步的
ng-if与ng-show、ng-hide指令的区别和注意事项
bijian1013
JavaScript AngularJS
angularJS中的ng-show、ng-hide、ng-if指令都可以用来控制dom元素的显示或隐藏。ng-show和ng-hide根据所给表达式的值来显示或隐藏HTML元素。当赋值给ng-show指令的值为false时元素会被隐藏,值为true时元素会显示。ng-hide功能类似,使用方式相反。元素的显示或
【持久化框架MyBatis3七】MyBatis3定义typeHandler
bit1129
TypeHandler
什么是typeHandler?
typeHandler用于将某个类型的数据映射到表的某一列上,以完成MyBatis列跟某个属性的映射
内置typeHandler
MyBatis内置了很多typeHandler,这写typeHandler通过org.apache.ibatis.type.TypeHandlerRegistry进行注册,比如对于日期型数据的typeHandler,
上传下载文件rz,sz命令
bitcarter
linux命令rz
刚开始使用rz上传和sz下载命令:
因为我们是通过secureCRT终端工具进行使用的所以会有上传下载这样的需求:
我遇到的问题:
sz下载A文件10M左右,没有问题
但是将这个文件A再传到另一天服务器上时就出现传不上去,甚至出现乱码,死掉现象,具体问题
解决方法:
上传命令改为;rz -ybe
下载命令改为:sz -be filename
如果还是有问题:
那就是文
通过ngx-lua来统计nginx上的虚拟主机性能数据
ronin47
ngx-lua 统计 解禁ip
介绍
以前我们为nginx做统计,都是通过对日志的分析来完成.比较麻烦,现在基于ngx_lua插件,开发了实时统计站点状态的脚本,解放生产力.项目主页: https://github.com/skyeydemon/ngx-lua-stats 功能
支持分不同虚拟主机统计, 同一个虚拟主机下可以分不同的location统计.
可以统计与query-times request-time
java-68-把数组排成最小的数。一个正整数数组,将它们连接起来排成一个数,输出能排出的所有数字中最小的。例如输入数组{32, 321},则输出32132
bylijinnan
java
import java.util.Arrays;
import java.util.Comparator;
public class MinNumFromIntArray {
/**
* Q68输入一个正整数数组,将它们连接起来排成一个数,输出能排出的所有数字中最小的一个。
* 例如输入数组{32, 321},则输出这两个能排成的最小数字32132。请给出解决问题
Oracle基本操作
ccii
Oracle SQL总结 Oracle SQL语法 Oracle基本操作 Oracle SQL
一、表操作
1. 常用数据类型
NUMBER(p,s):可变长度的数字。p表示整数加小数的最大位数,s为最大小数位数。支持最大精度为38位
NVARCHAR2(size):变长字符串,最大长度为4000字节(以字符数为单位)
VARCHAR2(size):变长字符串,最大长度为4000字节(以字节数为单位)
CHAR(size):定长字符串,最大长度为2000字节,最小为1字节,默认
[强人工智能]实现强人工智能的路线图
comsci
人工智能
1:创建一个用于记录拓扑网络连接的矩阵数据表
2:自动构造或者人工复制一个包含10万个连接(1000*1000)的流程图
3:将这个流程图导入到矩阵数据表中
4:在矩阵的每个有意义的节点中嵌入一段简单的
给Tomcat,Apache配置gzip压缩(HTTP压缩)功能
cwqcwqmax9
apache
背景:
HTTP 压缩可以大大提高浏览网站的速度,它的原理是,在客户端请求网页后,从服务器端将网页文件压缩,再下载到客户端,由客户端的浏览器负责解压缩并浏览。相对于普通的浏览过程HTML ,CSS,Javascript , Text ,它可以节省40%左右的流量。更为重要的是,它可以对动态生成的,包括CGI、PHP , JSP , ASP , Servlet,SHTML等输出的网页也能进行压缩,
SpringMVC and Struts2
dashuaifu
struts2 springMVC
SpringMVC VS Struts2
1:
spring3开发效率高于struts
2:
spring3 mvc可以认为已经100%零配置
3:
struts2是类级别的拦截, 一个类对应一个request上下文,
springmvc是方法级别的拦截,一个方法对应一个request上下文,而方法同时又跟一个url对应
所以说从架构本身上 spring3 mvc就容易实现r
windows常用命令行命令
dcj3sjt126com
windows cmd command
在windows系统中,点击开始-运行,可以直接输入命令行,快速打开一些原本需要多次点击图标才能打开的界面,如常用的输入cmd打开dos命令行,输入taskmgr打开任务管理器。此处列出了网上搜集到的一些常用命令。winver 检查windows版本 wmimgmt.msc 打开windows管理体系结构(wmi) wupdmgr windows更新程序 wscrip
再看知名应用背后的第三方开源项目
dcj3sjt126com
ios
知名应用程序的设计和技术一直都是开发者需要学习的,同样这些应用所使用的开源框架也是不可忽视的一部分。此前《
iOS第三方开源库的吐槽和备忘》中作者ibireme列举了国内多款知名应用所使用的开源框架,并对其中一些框架进行了分析,同样国外开发者
@iOSCowboy也在博客中给我们列出了国外多款知名应用使用的开源框架。另外txx's blog中详细介绍了
Facebook Paper使用的第三
Objective-c单例模式的正确写法
jsntghf
单例 ios iPhone
一般情况下,可能我们写的单例模式是这样的:
#import <Foundation/Foundation.h>
@interface Downloader : NSObject
+ (instancetype)sharedDownloader;
@end
#import "Downloader.h"
@implementation
jquery easyui datagrid 加载成功,选中某一行
hae
jquery easyui datagrid 数据加载
1.首先你需要设置datagrid的onLoadSuccess
$(
'#dg'
).datagrid({onLoadSuccess :
function
(data){
$(
'#dg'
).datagrid(
'selectRow'
,3);
}});
2.onL
jQuery用户数字打分评价效果
ini
JavaScript html jquery Web css
效果体验:http://hovertree.com/texiao/jquery/5.htmHTML文件代码:
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>jQuery用户数字打分评分代码 - HoverTree</
mybatis的paramType
kerryg
DAO sql
MyBatis传多个参数:
1、采用#{0},#{1}获得参数:
Dao层函数方法:
public User selectUser(String name,String area);
对应的Mapper.xml
<select id="selectUser" result
centos 7安装mysql5.5
MrLee23
centos
首先centos7 已经不支持mysql,因为收费了你懂得,所以内部集成了mariadb,而安装mysql的话会和mariadb的文件冲突,所以需要先卸载掉mariadb,以下为卸载mariadb,安装mysql的步骤。
#列出所有被安装的rpm package rpm -qa | grep mariadb
#卸载
rpm -e mariadb-libs-5.
利用thrift来实现消息群发
qifeifei
thrift
Thrift项目一般用来做内部项目接偶用的,还有能跨不同语言的功能,非常方便,一般前端系统和后台server线上都是3个节点,然后前端通过获取client来访问后台server,那么如果是多太server,就是有一个负载均衡的方法,然后最后访问其中一个节点。那么换个思路,能不能发送给所有节点的server呢,如果能就
实现一个sizeof获取Java对象大小
teasp
java HotSpot 内存 对象大小 sizeof
由于Java的设计者不想让程序员管理和了解内存的使用,我们想要知道一个对象在内存中的大小变得比较困难了。本文提供了可以获取对象的大小的方法,但是由于各个虚拟机在内存使用上可能存在不同,因此该方法不能在各虚拟机上都适用,而是仅在hotspot 32位虚拟机上,或者其它内存管理方式与hotspot 32位虚拟机相同的虚拟机上 适用。
SVN错误及处理
xiangqian0505
SVN提交文件时服务器强行关闭
在SVN服务控制台打开资源库“SVN无法读取current” ---摘自网络 写道 SVN无法读取current修复方法 Can't read file : End of file found
文件:repository/db/txn_current、repository/db/current
其中current记录当前最新版本号,txn_current记录版本库中版本