首页 文章 精选 留言 我的

精选列表

搜索[笔记工具],共10000篇文章
优秀的个人博客,低调大师

HBase学习笔记——高表与宽表的选择

hbase中的宽表是指很多列较少行,即列多行少的表,一行中的数据量较大,行数少;高表是指很多行较少列,即行多列少,一行中的数据量较少,行数大。 hbase的row key是分布式的索引,也是分片的依据。hbase的row key + column family + column qualifier + timestamp + value 是HFile中数据排列依据。HFile据此,对数据的索引到data block级别,而不是行级别。所以这种key是HFile内部的粗粒度(data block粒度)本地索引的主键。 据此,在HBase中使用宽表、高表的优劣总结如下: 查询性能:高表更好,因为查询条件都在row key中, 是全局分布式索引的一部分。高表一行中的数据较少。所以查询缓存BlockCache能缓存更多的行,以行数为单位的吞吐量会更高。 分片能力:高表分片粒度更细,各个分片的大小更均衡。因为高表一行的数据较少,宽表一行的数据较多。HBase按行来分片。 元数据开销:高表元数据开销更大。高表行多,row key多,可能造成region数量也多,- root -、 .meta表数据量更大。过大的元数据开销,可能引起HBase集群的不稳定、master更大的负担(这方面后续再好好总结)。 事务能力:宽表事务性更好。HBase对一行的写入(Put)是有事务原子性的,一行的所有列要么全部写入成功,要么全部没有写入。但是多行的更新之间没有事务性保证。 数据压缩比:如果我们对一行内的数据进行压缩,宽表能获得更高的压缩比。因为宽表中,一行的数据量较大,往往存在更多相似的二进制字节,有利于提高压缩比。通过压缩,缓解了宽表一行数据量太大,并导致分片大小不均匀的问题。查询时,我们根据row key找到压缩后的数据,进行解压缩。而且解压缩可以通过协处理器(coproesssor)在HBase服务器上做,而不是在业务应用的服务器上做,以充分应用HBase集群的CPU能力。 设计表时,可以不绝对追求高表、宽表,而是在两者之间做好平衡。根据查询模式,需要分布式索引、分片、有很高选择度(即能据此查询条件迅速锁定很小范围的一些行)的查询用字段,应该放入row key;能够均匀地划分数据字节数的字段,也应该放入row key,作为分片的依据。选择度较低,并且不需要作为分片依据的查询用字段,放入column family和column qualifier,不放入row key。

优秀的个人博客,低调大师

《程序员必读之软件架构》读书笔记

网站作者 Simon Brown的书。编码的架构师,一直是我的职业模板。而当年我觉得RUP的基于4+1视图的机械架构文档模板不足以表达系统时,Simon Brown的模板给了很好的过渡范例。 架构师应该编码吗? 有些公司认为架构师太宝贵了,不该承担日常编码工作。 优秀的架构师的重要特征是抽象思维能力,也可以理解为不把时间耗在细节里。 一些大型项目通常意味着照看更大的“大局”,有可能你根本没时间写代码。 你不必放弃编码,也不要把大部分时间用于编码 你不应该因为“我是架构师”,就把自己排除在编码之外。但也必须有足够的时间扮演技术架构师的角色。 1. 参与编写代码 要避免成为PPT架构师, 最好是参与实现与交付的过程,确保架构的交付,接地气的了解设计在实现上的问题,演进架构而不是画完框图就交给实现团队从此不管。同时,缩短与团队的距离,分享自己软件开发的经验,帮助团队对架构的正确理解。 另外,作为开发团队的一份子,你不需要是开发代码最好的。 2. 构建原型、框架和基础 如果不能参与日常编码,至少尝试在设计时快速构建原型去验证你的概念。还有为团队编写框架和基础,这也是最磨练与体现编码与设计能力的时刻。 3. 进行代码评审 如果完全没有时间编码,至少参与代码评审,了解发生了什么。 4. 实验并与时俱进 如果完全没有时间在工作时间里编码,在工作之外你往往有更多空间来维持编码技能,从贡献开源项目,到不断尝试最新的语言、框架。 一般来说,一个写代码的软件架构师会更有成效也更快乐。 来源:51CTO

优秀的个人博客,低调大师

.Net 转战 Android 4.4 日常笔记(3)--目录结构分析

看了创建项目后,出现的文件夹很多确实有点晕,不过经过简单的了解还是跟我们asp.net的目录有点相识滴。 下面这张图,概括了主要的文件用途。其实也只需要了解这几个就差不多了,知道在那里设计界面,那里写代码就差不多了 我们在学习asp.net也没有刻意去了解bin下的dll吧 全局配置文件,视图,控制层都还是比较容易理解,同样有样式,图片,资源文件等等,但是Android把这些资源文件注册到R.java里面,所以我们要通过R.java来调用这些文件。不能像.net拉拽生成 其中MainActivity.java是程序的入口,等于我们MVC的路由设置 protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); if (savedInstanceState == null) { getSupportFragmentManager().beginTransaction() .add(R.id.container, new PlaceholderFragment()).commit(); } } setContentView 设置了启动的页面。也就是我们软件启动的第一屏R.layout也看出我们的组件是注册到R.java里面的 本文转自ymnets博客园博客,原文链接:http://www.cnblogs.com/ymnets/p/3713278.html,如需转载请自行联系原作者

优秀的个人博客,低调大师

第一行代码阅读笔记---基本知识

在res中,我们会看到很多目录,分别如下: drawable-hdpi drawable-ldpi drawable-mdpi drawable-xxhdpi layout menu values values-sw600dp values-sw720dp-land values-v11 values-v14 其实很简单,以上所有的目录中,drawable开头的文件夹是用来存放图片的,以value开头是用来存放字符串的,layout是用来存放布局文件的 menu文件夹是用来放菜单文件的。 很多情况下,美工提供的图片放在drawable-hdpi该文件夹,在ActivityMainfest.xml文件中,icon就是对应着应用程序的图标,我们可以在res的drawable目录下找到对应的图片,将其替换就可以换应用程序的图标啦。 活动的注册声明要放在<application>标签内,这里是通过<activity>标签来对活动进行注册的。 如下所示: <application> <activity android:name=".FirstActivity" //具体注册哪一个活动 android:label="This is FirstActivity" > //应用程序标题栏的名称 <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> </application>下面这个是为了阐述Toast功能而调用使用的案例,在第一行代码书上可找到。 Button button1 = (Button) findViewById(R.id.button_1); button1.setOnClickListener(new OnClickListener() { //通过setOnClickListener方法为按钮注册一个监听器,这样,点击按钮就会执行监听器中的on_click方法。 @Override public void onClick(View v) { //Toast功能 //通过makeText()创建一个Toast对象,然后调用show()将Toast显示出来。 //makeText有三个参数 //1、Context,也就是Toast要求的上下文,由于活动本身就是一个Context对象,因此传入FirstActivity.this就可以 //2、Toast显示的文本内容 //3、Toast显示的时间长度,有两个内置常量可以选择 Toast.LENGTH_SHORT和 Toast.LENGTH_LONG Toast.makeText(FirstActivity.this, "You clicked Button 1", Toast.LENGTH_SHORT).show(); } });

资源下载

更多资源
Nacos

Nacos

Nacos /nɑ:kəʊs/ 是 Dynamic Naming and Configuration Service 的首字母简称,一个易于构建 AI Agent 应用的动态服务发现、配置管理和AI智能体管理平台。Nacos 致力于帮助您发现、配置和管理微服务及AI智能体应用。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据、流量管理。Nacos 帮助您更敏捷和容易地构建、交付和管理微服务平台。

Spring

Spring

Spring框架(Spring Framework)是由Rod Johnson于2002年提出的开源Java企业级应用框架,旨在通过使用JavaBean替代传统EJB实现方式降低企业级编程开发的复杂性。该框架基于简单性、可测试性和松耦合性设计理念,提供核心容器、应用上下文、数据访问集成等模块,支持整合Hibernate、Struts等第三方框架,其适用范围不仅限于服务器端开发,绝大多数Java应用均可从中受益。

Rocky Linux

Rocky Linux

Rocky Linux(中文名:洛基)是由Gregory Kurtzer于2020年12月发起的企业级Linux发行版,作为CentOS稳定版停止维护后与RHEL(Red Hat Enterprise Linux)完全兼容的开源替代方案,由社区拥有并管理,支持x86_64、aarch64等架构。其通过重新编译RHEL源代码提供长期稳定性,采用模块化包装和SELinux安全架构,默认包含GNOME桌面环境及XFS文件系统,支持十年生命周期更新。

Sublime Text

Sublime Text

Sublime Text具有漂亮的用户界面和强大的功能,例如代码缩略图,Python的插件,代码段等。还可自定义键绑定,菜单和工具栏。Sublime Text 的主要功能包括:拼写检查,书签,完整的 Python API , Goto 功能,即时项目切换,多选择,多窗口等等。Sublime Text 是一个跨平台的编辑器,同时支持Windows、Linux、Mac OS X等操作系统。

用户登录
用户注册