#
Godown:
就是个JAVABEAN,是被执行者,即被各种线程执行。
在此系统中只有一个。存储了一个仓库的当前量和最大量。
加同步关键字后表明,当被多个线程执行时,只有最早进入的线程能执行,其他的纯种处于等待状态。
生产者和消费者就是线程,去触发同一个JAVABEAN的代码。
Thread是指线程,一个进程里面可以有多个线程在运行,会产生线程的管理问题,如让某些线程暂停,暂停后要恢复,
这些控制代码是放在共享的JAVABEAN中的,不是放在Thread的代码中,如wait()/notify()/notifyall(),这个会通知当前调用此JAVABEAN
的线程执行停止/恢复动作。
https://github.com/zhang-xzhi/simplehbase/ https://github.com/zhang-xzhi/simplehbase/wiki## simplehbase简介
simplehbase是java和hbase之间的轻量级中间件。
主要包含以下功能。
* 数据类型映射:java类型和hbase的bytes之间的数据转换。
* 简单操作封装:封装了hbase的put,get,scan等操作为简单的java操作方式。
* hbase query封装:封装了hbase的filter,可以使用sql-like的方式操作hbase。
* 动态query封装:类似于myibatis,可以使用xml配置动态语句查询hbase。
* insert,update支持: 建立在hbase的checkAndPut之上。
* hbase多版本支持:提供接口可以对hbase多版本数据进行查询,映射。
* hbase原生接口支持。
### v0.9
新增
支持HTable如下使用方式,对HTable可以定时flush。
主要场景:
批量写入,但是flush可以配置为指定时间间隔进行。
不降低批操作的吞吐,同时,有一定的实时性保证。
支持用户自定义htablePoolService。
多个HTable可以使用同一个线程池。
intelligentScanSize功能,可以根据limit的值设定scan的cachingsize大小。
### v0.8
批量操作接口新增
public <T> void putObjectList(List<PutRequest<T>> putRequestList);
public void deleteObjectList(List<RowKey> rowKeyList, Class<?> type);
public <T> void putObjectListMV(List<PutRequest<T>> putRequests,long timestamp)
public <T> void putObjectListMV(List<PutRequest<T>> putRequests,Date timestamp)
public <T> void putObjectListMV(List<PutRequest<T>> putRequestList)
public void deleteObjectMV(RowKey rowKey, Class<?> type, long timeStamp)
public void deleteObjectMV(RowKey rowKey, Class<?> type, Date timeStamp)
public void deleteObjectListMV(List<RowKey> rowKeyList, Class<?> type,long timeStamp)
public void deleteObjectListMV(List<RowKey> rowKeyList, Class<?> type,Date timeStamp)
public void deleteObjectListMV(List<DeleteRequest> deleteRequestList,Class<?> type);
Util新增(前缀查询使用)
public static RowKey getEndRowKeyOfPrefix(RowKey prefixRowKey)
性能改进
把get的实现从scan调回get。
### v0.7新增功能:
支持查询时主记录和关联的RowKey同时返回。
查询磁盘空间的方法:
df -H
本文主要介绍Linux系统磁盘使用空间不足时,如何查找大文件并进行清理的方法。
下午使用df-h检查一台服务器磁盘使用空间,发现磁盘已经使用了100%,其中/dev/mapper/vg_iavp-lv_root是逻辑卷。
可以通过下面的方法进行清理:
使用如下命令查找大于100M的大文件,发现有几个日志文件及临时文件比较大,使用rm –rf删除即可。
find / -size +100M -exec ls -lh {} \;
PMD jenkins plugin is only displaying the PMD check results. You need to run PMD using Maven as part of your build triggered by Jenkins. For example this could look like that in your pom.xml
<reporting>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-pmd-plugin</artifactId>
<version>2.7.1</version>
<configuration>
<linkXRef>false</linkXRef>
<targetJdk>1.6</targetJdk>
<rulesets>
<ruleset>/rulesets/basic.xml</ruleset>
</rulesets>
</configuration>
</plugin>
</plugins>
</reporting>
Then PMD-jenkins will know where to pick up the results and publish them for you.
To get the results you will need to add this code to your pom.xml and execute the according target in Jenkins, yes.
Note that this is not related to PMD-plugin in Eclipse. The Eclipse PMD plugin just shows the result of the local analysis, not related to Jenkins.
/Library/Java/JavaVirtualMachines/jdk1.7.0_55.jdk/Contents/Home
一、准备工作
1. 下载jenkins.war,也可以使用特定环境的安装包。将其拷贝到c:\Dev\Jenkins目录
2. SVN, Maven
二、启动Jenkins
在命令行启动Jenkins
java -jar jenkins.war --httpPort=8080, --httpPort 用来指定端口号。
在地址栏输入http://localhost:8080, 看到Jenkins主界面,就说明安装成功了。
三、Jenkins插件
确保SVN和Maven插件都已经安装好了,可以到Jenkins配置里面去查看,如果没有可以装上。
Manage Jenkins->Manage Plugins->Installed
默认情况下,SVN和Maven插件都是安装好的,如果你需要安装其他的插件可以在Available中查找。
四、配置Jenkins
新安装的Jenkins需要配置一些环境,例如JAVA_HOME,MAVEN_HOME等
Manage Jenkins->Configure System
# of executors 用来指定同一时间最多能跑的job数量。
SCM checkout retry count 如果从版本库签出代码失败,jenkins会按照这个次数重试。
JDK 配置Java环境, Maven 配置Maven环境。
五、创建Maven任务
New Job-> 新建任务
Job name->home-ci,ci指代commit阶段,说明这个job是用来不断集成我们的代码的。
Build a maven2/3 project->我们的项目是用maven来管理的,所以我们选择maven job
1. 首先我们配置SVN,选择Subversion,填上项目的Repository URL,然后可以指定从这个地址签出的代码保存的位置。其他默认选择。
2. Build Trigger
该选项是用来配置自动构建的,比如我们想让项目每天中午一点和晚上一点自动构建,只需要在Build periodically中写出0 13,1 * * *.在这里我们使用Poll SCM,"Poll SCM"用来定期检查版本库是否有更新,如果有更新,触发构建。我们就让它每分钟检查一次,输入* * * * *。
3. 配置Maven
pom.xml文件,jenkins会去寻找需要执行的maven pom文件,需要给定。
我们需要运行maven 的 clean install 命令,在Goals and options中指定。
4. 生成打包文件
Post-build Actions 这里我们可以使用一些分析工具,比如checkstyle, 代码测试覆盖率等等。
这里我们只指定需要生产的最终文件War或者Jar,在Archive the artifacts 中输入你想要的打包方式。
/trunk/home/home-ci/*.war;/trunk/home/test-report/*.html
六、运行构建
点击左侧的Build Now按钮,点击Build History中的数字就可以看到本次构建的详细。
每次构建可以点击Changes查看是否有更改, Console output可以看到本次构建的详细输出。
Jenkins是一个可扩展的持续集成引擎,Jenkins非常易于安装和配置,简单易用,下面看看我们是如何几分钟就快速搭建一个持续集成环境吧。
假设我们目前已经有2个maven项目:entities(JAVA类库),web(Web应用,依赖entities)。
一、安装Jenkins
地址http://mirrors.jenkins-ci.org/下载适合的Jenkins版本。
Windows最新稳定版的Jenkins地址为:http://mirrors.jenkins-ci.org/windows-stable/jenkins-1.409.1.zip
https://wiki.jenkins-ci.org/display/JENKINS/Installing+Jenkins+as+a+Windows+service
把Jenkins 1.409.1版解压,把得到的war包直接扔到tomcat下,启动tomcat,Jenkins就安装完毕,是不是很简单啊。
redhat系统下安装流程:https://wiki.jenkins-ci.org/display/JENKINS/Installing+Jenkins+on+Red+Hat+distributions
二、配置Jenkins
1、打开http://10.3.15.78:8080/jenkins/,第一次进入里面没有数据,我们需要创建job,我们这有2个项目,需要创建2个job。http://10.3.34.163:9890/jenkins/
2、点击左上角的new job,在new job页面需要选择job的类型,Jenkins支持几种类型,我们选择“构建一个maven2/3项目”,Job名为:guan_caijing,如图所示:
3、点击OK按钮后,进会进入详细配置界面,详细配置界面的配置项很多,不过不用怕,大部分使用默认配置就可以了,下面就说说我们需要修改的几个地方:
3.1)Source Code Management
因为我们使用SVN管理源码,所以这里选择Subversion,并在Repository URL中输入我们的SVN地址:
http://10.3.34.163:9880/guan_caijing/trunk/
输入SVN库的URL地址后,Jenkins会自动验证地址,并给予提示。
点击红色字体部分的enter credential链接,进入如下页面:
设置好访问SVN库的用户名和密码后,点击OK按钮,显示:
说明设置成功。点击Close按钮,返回之前的Source Code Management页面。此时不再有红色警告信息了。
3.2)配置自动构建的计划,假设我们想让项目中每天12点和晚上8点自动构建一次,只需要在Build Triggers中选择Build periodically,并在Schedule中输入 0 12,20 * * *。
我配置的是每晚8点自动构建
注:Schedule的配置规则是有5个空格隔开的字符组成,从左到右分别代表:分 时 天 月 年。*代表所有,0 12,20 * * * 表示“在任何年任何月任何天的12和20点0分”进行构建。
3.3)配置到这里,可能有人发现在Build配置节点,有红色错误信息,提示
Jenkins needs to know where your Maven2 is installed.
Please do so from the system configuration.
如图所示:
这是因为Jenkins找不到maven的原因,点击"system configuration",是system configuration的maven配置中添加maven目录就OK,如下图:
我设置了JRE 6和MAVEN 3的安装目录。
点击左下角的SAVE按钮,保存设置。
3.4)保存好所有配置后,我们第1个job就算是完成了。
3.5)创建第2个job,配置和上面的配置相同。只需把svn地址改成:http://localhost/svn/Web
三、手动构建
在经过上面的配置后,回到Jenkins首页,在首页可以看到刚才添加的2个job,如下图:
点击某1个job后后面的"Schedule a build"图片手动构建,点击完后,会在左边的Build Queue或者Build Executor Status 显示正在构建的任务,在自动构建完后,刷新页面,就可以看到构建结果了,如何某个项目构建失败,点击项目后面的构建数字(从1开始递增)进入项目的"Console Output "可以查看项目构建失败的原因。当然我们也可以配置把构建失败的结果发到邮箱。
到目前为止,1个简单的自动构建环境就搭建好了,很简单吧。
四、自动部署
看完上面发现Jenkins配置真的很简单,几分钟就搭建好自动构建环境,但环境搭建好后发现1个问题,现在是能自动构建了,但是构建好的web.war都还是在Jenkins目录下,并没有发布到tomcat中,还需要手动copy过去?
这是个问题,不过别急,要达到自动部署的目的,需要安装1个Jenkins的部署插件。选择“系统管理”菜单的“管理插件”:
选择“可选插件”,找到Deploy Plugin 1.8插件,选择它。
注:Deploy Plugin 1.8插件支持Tomcat 4.x/5.x/6.x/7.x ,JBoss 3.x/4.x ,Glassfish 2.x/3.x
点击底部的“安装”按钮,显示:
耐心等待:
直到Deploy Plugin完成,显示Success:
选择框打钩,Jenkins会自动重启:
此时,在插件管理的“已安装”Tab页,可以看到部署插件已安装完毕。
重新进入web的configure 配置界面,在最下面会发现多处1个配置项,我们配置如下:
注:war file使用的是Jenkinsworkspace的相对目录,hudon默认的目录在:
C:\Documents and Settings\用户名\.Jenkins\
workspace目录:C:\Documents and Settings\用户名\.Jenkins\ jobs\web\workspace\
最终产生的war在:C:\Documents and Settings\用户名\.Jenkins\ jobs\web\workspace\Web\target\web.war
保存配置再重新构建一次,打开tomcat的webapps目录,发现web.war终于过来了,大功告成。
摘要: 当我们构建AngularJS应用时,通过浏览器(如Chrome,Firefox和IE)的JavaScript控制台访问应用中隐藏的数据和服务总会有些困难。下面是一些简单的技巧可以帮助我们通过Javascript控制台来查看或者控制正在运行的Angular应用,使得应用可以比较容易进行测试,修改,甚至实时的修改我们的Angular应用:1: 访问作用域通过一行简单的JS程序访问页面中任何作用域(甚至...
阅读全文