GFW墙的没人性,只能费时费力搞个离线安装教程,一路遇到很多问题,稍微深入了解了一些ClouderaManager的内部实现,步骤概要:
IP配置>Host配置>关闭iptables防火墙>关闭SELinux>配置NTP时钟服务>SSH无密码登陆>安装JDK>
配置CM安装包>配置Parcel>配置MySQL>初始化SCM数据库>复制到Agent机器>
启动CM Server>配置Service>设置Server/Agent开机启动
Docker学习笔记
Tomcat服务器运维
正则表达式学习笔记
记录常用正则以及相关测试工具
关于正则表达式
正则表达式(Regular Expression,在代码中常简写为regex、regexp或RE),计算机科学的一个概念。正则表达式使用单个字符串来描述、匹配一系列符合某个句法规则的字符串。在很多文本编辑器里,正则表达式通常被用来检索、替换那些符合某个模式的文本。
许多程序设计语言都支持利用正则表达式进行字符串操作。例如,在Perl中就内建了一个功能强大的正则表达式引擎。正则表达式这个概念最初是由Unix中的工具软件(例如sed和grep)普及开的。正则表达式通常缩写成“regex”,单数有regexp、regex,复数有regexps、regexes、regexen。
SublimeText-Markdown书写利器
曾尝试寻找在线平台写博客
- segmentfault:专栏文章模块markdown编写可检测剪贴板图片,且需要审核;但是笔记模块不支持
- csdn:改版的markdown编辑器很好,但是不支持粘帖图片,且存在删文风险
几经周折,最终还是选择了自己搭建写作环境:sumblime配置markdown写作环境 + evernote笔记检索+hexo博客框架 + github.io发布
;
以sublimeText编辑器作为写作环境(markdown语法高亮/预览),以sublime-evernote发布到evernote,hexo搭建博客框架定期发布到github.io,
谨记编辑器够用就好,内容应始终放在第一位。
《数学之美》读书笔记
MySQL数据库使用笔记
Markdown常用语法
记录一些markdown的语法和使用示例
GATE中文自然语言处理学习笔记
GATE
GATE(文本工程通用框架)项目开始于 1995 年英国的谢菲尔德大学.经历了近 20 年的不断发展,GATE 已经被应用于广泛的研究和项目开发。
- GATE 框架采用了基于组件的软件开发方式和面向对象的灵活编程。
- GATE 框架是由纯 Java 语言开发的免费开源软件,遵循 GNU library license。
- GATE 使用的编码方式是Unicode,可以支持多种语言编码,并且针对各种斯拉夫语言、日尔曼语言、拉丁系语言和印度语做过系统测试。
- GATE 支持的文档类型包括 XML、RTF、Email、HTML、SGML以及纯文本文件。
- GATE 作为一个框架,规定其框架内所有的自然语言处理软件系统元素都可以有效的被细分成不同的几种组件,在 GATE 中它们被称为资源。在 GATE 框架下组件的集合被称为 CREOLE。CREOLE 组件是通过 Java Beans 的形式来实现的,CREOLE 在 GATE中分为三种形式:语言组件(LR),处理组件(PR)和可视化组件(VR)。
Maven使用笔记
SQLite数据库使用笔记
SQLite特点
SQLite只支持库级锁,同时只能允许一个写操作。但SQLite尽量延迟申请X锁,直到数据块真正写盘时才申请X锁,非常巧妙而有效。
- SQLite支持3种线程模式:单线程,多线程,串行
- 可使用WAL(Write-Ahead Logging)模式时,写操作是append到WAL文件,而不直接改动数据库文件,因此数据库文件可以被同时读取。当执行checkpoint操作时,WAL文件的内容会被写回数据库文件。当WAL文件达到SQLITE_DEFAULT_WAL_AUTOCHECKPOINT(默认值是1000)页(默认大小是1KB)时,会自动使用当前COMMIT的线程来执行checkpoint操作。也可以关闭自动checkpoint,改为手动定期
checkpoint。jdbc可通过setJournalMode(JournalMode.WAL)/setJounalSizeLimit实现 - 事务是和数据库连接相关的,每个数据库连接(使用pager来)维护自己的事务,且同时只能有一个事务(但是可以用SAVEPOINT来实现内嵌事务)。
NLP学习笔记
基于Solr的Hbase二级索引
关于Hbase二级索引
HBase 是一个列存数据库,每行数据只有一个主键RowKey,无法依据指定列的数据进行检索。查询时需要通过RowKey进行检索,然后查看指定列的数据是什么,效率低下。在实际应用中,我们经常需要根据指定列进行检索,或者几个列进行组合检索,这就提出了建立 HBase 二级索引的需求。
二级索引构建方式:表索引、列索引、全文索引
- 表索引是将索引数据单独存储为一张表,通过 HBase Coprocessor 生成并访问索引数据。
- 列索引是将索引数据与源数据存储在相同的 Region 里,索引数据定义为一个单独的列族,也是利用 Coprocessor 来生成并访问索引数据。对于表索引,源数据表与索引表的数据一致性很难保证,访问两张不同的表也会增加 IO 开销和远程调用的次数。对于列索引,单表的数据容量会急剧增加,对同一 Region 里的多个列族进行 Split 或 Merge 等操作时可能会造成数据丢失或不一致。
- 全文索引:以CDH5中的Lily HBase Indexer服务实现,其使用SolrCloud存储HBase的索引数据,Indexer索引和搜索不会影响HBase运行的稳定性和HBase数据写入的吞吐量,因为索引和搜索过程是完全分开并且异步的。Lily HBase Indexer在CDH5中运行必须依赖HBase、SolrCloud和Zookeeper服务。
一路见识的SQL/NOSQL数据库ORM
一路走来,关系数据库到非关系数据库,不觉已接触了不少的ORM框架也在这些ORM框架的基础上积累了一些通用的DAO,下面从 学习笔记(原理、优势、劣势) 和 个人总结(踩过的坑,注意事项) 两方面展开描述:
Hadoop生态圈
Hadoop集群部署
Hadoop版本区别
目前不收费的Hadoop版本主要有三个,分别是:
- Apache(最原始的版本,所有发行版均基于这个版本进行改进)
- Cloudera版本(Cloudera’s Distribution Including Apache Hadoop,简称CDH)
- Hortonworks版本(Hortonworks Data Platform,简称“HDP”),对于国内而言,绝大多数选择CDH版本,
CDH和Apache版本主要区别:
- CDH对Hadoop版本的划分非常清晰,目前维护的有两个系列的版本,分别是cdh4和cdh5
- 由于Cloudera做Hadoop开发的,其他厂商仅是做Hadoop集成或CDH集成,和Hadoop trunk能最快的同步,保证业务的前向兼容性;
- 安全 CDH支持Kerberos安全认证,apache hadoop则使用简陋的用户名匹配认证
- CDH文档清晰(包括中文文档),很多采用Apache版本的用户都会阅读CDH提供的文档,包括安装文档、升级文档等。
- CDH支持Yum/Apt包,Tar包,RPM包,CM安装,Cloudera Manager三种方式安装,Apache hadoop只支持Tar包安装。
Python安装升级教程
升级前安装依赖
yum groupinstall "Development tools"
Python 2.7.9 下载>解压>编译>安装
1 | wget https://www.python.org/ftp/python/2.7.9/Python-2.7.9.tgz |
- 关于altinstall
1
2Warning
make install can overwrite or masquerade the python binary. make altinstall is therefore recommended instead of make install since it only installs exec_prefix/bin/pythonversion.
修改系统默认Python
- 查看已有python版本
python -V
- 查看Python版本
/usr/local/python/bin/python2.7 -V
- 将系统默认Python改为新安装的Python
ln -fs /usr/local/python/bin/python2.7 /usr/bin/python
yum无法运行问题
进行更改后,yum会无法运行了。修改/usr/bin/yum文件,将第一行的#!/usr/bin/python
中的python改为系统原有的python版本,如下:#!/usr/bin/python2.6
IIS与Tomcat共享80端口
微信公众号有80端口要求,但是80端口已运行了一个项目,如何将后端J2EE实现的服务集成到80端口,即Tomcat集成进IIS。
调研了三种方案,Apache Tomcat Connector(isapi_redirect实现)、ARR(IIS中的反向代理)和 IIS2Tomcat(BonCode AJP实现),按照最轻量最简洁的部署要求,最终采用AJP实现。
backbone.marionette学习要点
Marionette(Backbone的牵线木偶)
提供rendering、template管理、UI对象
Model
rest数据,event事件
Collection:List
View
ItemView
- Backbone.View的扩展,用于渲染Backbone.Model
- 拥有modelEvents属性,可绑定View方法
CollectionView
- 用于渲染Backbone.Collection
- 可渲染List
- 拥有collectionEvents/childEvents属性,
- add/remove/reset/etc后自动更新视图
- 支持Filtering(filter方法)、Sorting(comparator属性)
- 支持Pagination
CompositeView
- renders a Collection within a template
- ItemView(model)和CollectionView(collection)的组合
- 用于detail/table/nested lists/treeview类型的场景
View Containers
Region
View容器,渲染至DOM,DOM和Backbone的桥梁
LayoutView
- 用于复杂嵌套布局,multi-view组成的widget
- Region容器
- render all in one call
Application
initialization初始化和 bootstrapping引导程序
Module
类似Application,多个Modules组成Application
可控制start/stop模块(及其子模块)
Controller
组件间的交互,用于复杂业务逻辑的业务场景
layouts/regions:动态create/display/dispose页面dom
event aggregrator
可bind/trigger事件
module/application级别的事件通道,其他所有模块都可监听,可用于如用户登陆成功的业务场景
Commands
多处触发,一处处理
Request/Response
用于提供Application Level Data,如购物车当前状态
提供全局状态,无需所有模块都做处理,但易被滥用,当全局可操作时难预测其影响
appRouter: