Windows 系统下Git安装图解

  categories:svn  author:

来源:互联网

简单来说Git是一个免费的、开源的版本控制软件,从功能上讲,跟我们比较熟悉的Subversion(SVN)这类版本控制软件没什么两样。由于工作的需求,需要在WinXP下安装git配合团队完成相应的工作,以前一直在别的系统下使用,今天经Drupal花园的龙马指点终于安装成功了,特意贴出来与有需要的童鞋一起分享。

获取Git软件:

大家可以通过两种方式获取Git的软件,一个是在官网上获取,另一个可以点击这里下载。只是有一点需要说明就是需要下载支持WinXp系统的版本。

Git在WinXP安装过程

在WinXP下安装Git详细步骤参考如下安装示意图:

wps_clip_image13158_thumb[1]

wps_clip_image638_thumb[1]

wps_clip_image32409_thumb[1]

wps_clip_image17364_thumb[1]

wps_clip_image9841_thumb[1]

wps_clip_image2781_thumb[1]

wps_clip_image3905_thumb[1]

wps_clip_image10701_thumb[1]

wps_clip_image27886_thumb[1]

点击上图的“Finish”后Git的安装就完成了,安装完成后需要在进行一下环境变量的设置,改变环境变量的具体步骤可以参考下图:

wps_clip_image3443_thumb[1]

wps_clip_image18332_thumb[1]

wps_clip_image31141_thumb[1]

wps_clip_image26347_thumb[1]

wps_clip_image26146_thumb[1]

生成ssh公钥

双击桌面上的git运行程序:

wps_clip_image24534_thumb[1]

启动git的运行程序:

wps_clip_image26468_thumb[1]

在程序中依次输入:

1、配置email,命令如下:

$git config –global user.name “your name”

$git config –global user.email “your@email.address”

其中”your name”换成你的名字,”your@email.address”换成你的邮箱地址。

2、生成公钥,用于身份认证:

ssh-keygen.exe -C “your@email.address” -t rsa

这样就可以在你的用户下取得需要的公钥匙,公钥位于你的电脑中“C:\Documents and Settings\Airen\.ssh”的“id_rsa.pub”文件下:

wps_clip_image8872_thumb[1]

你使用文本编辑器打开“id_rsa.pub”就可以看到公钥的内容:

ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAs1c3zL3IbjhMbSCwooZ7WHlkga7xq+5inQUCTqmZ7xqBclvEwofDd4BYts99X+xfNXgGSlil85wrOfXX9ZH27ZmPR3Z8KWp3pekFOvk7iLmt0b9lZqhgpUll76Q7D2KED8se9gV4FNxg05ZK6AUZm70cBj9sZqjV//weE7ufkibcqd3ngHsTKB+0Js8NcMwldHmxIxZEwufxgT/D4EGQCA6ijjuj9ILIydzzLwWzKoH1wuGDU5LAE1qptIpAt50uWxPNlsBPoqZnbJjHg+As9If6tRkG4YzkwzSBTP725bJDcWkArhWRRkJ2cwUgcJYRyCY+8jI2oxDawYjWQ+w9HQ== airenliao@gmail.com

此时只要把你的公钥放进你项目的服务中就可以进行git的相关操作。

关于git的命令更多操作,可以到官网查阅,或点击这里查看更多的命令操作。… 阅读全文

用virtualbox虚拟机在mac os下安装linux

  categories:资料  author:

近期由于个人原因更换了新的工作单位, 在新单位由于单位担心软件版权问题, 都要慢慢将操作系统过渡到有版权的系统中, 大部分采用linux系统,我分配了到了一个mac os的迷你版, 这个操作系统是购买时自带的, 因此是正版的。

本人多mac了解不多,更了解的是linux系统,因此有了mac上用虚拟机安装linux的考虑。

mac 上虚拟机本身不多, 还要考虑版权问题, vmware就淘汰出局了。

最后选择了virtualbox, 这个是免费的虚拟机软件,如下图

image_thumb[2]

https://www.macupdate.com/download/24801/VirtualBox-4.2.12-84980-OSX.dmg

下面是相关介绍:

VirtualBoxis a family of powerful x86 virtualization products for enterprise as well as home use. Not only is VirtualBox an extremely feature rich, high … 阅读全文

wordpress数据库结构分析

  categories:wordpress  author:

来源:互联网

最近研究了下wordpress的数据库结构,经典的wordpress必然有其经典的设计。下面是所有的表如下:

wordpress 数据库表wordpress database

以下表结构所列出的字段并不完全,只是一些关键的和比较特殊的

数据库结构-wp_posts 涉及到文章,菜单,媒体文件,操作记录等功能

字段描述
ID编号
Post_author发布者,用户ID
Post_date发布日期
Post_content内容,上传文件的描述
Post_title标题
Post_excerpt上传文件的说明
Post_status发布状态
Post_password访问密码
Post_name发布名称,媒体文件名称
Post_modified修改日期
Post_parent继承自,ID
Guid访问的url,媒体文件路径
Menu_order菜单排序
Post_type发布方式
Post_type文件格式

 … 阅读全文

MSM Memcached Session Manager介绍及使用

  categories:资料  tags:  author:

对于一些大型的web2.0的网站,在正式部署时一般是部署在不同故障域的多台应用服务器上,以j2ee应用为例,一般我们都会部署在 tomcat下,假如我们部署了10台tomcat服务器,那这10台tomcat可能是部署在不同的机器上,然后将应用程序copy到这10台 tomcat下,然后启动所有tomcat,一般来说这样做的目的是为了达到负载均衡以及避免单点故障,另外也考虑到国内网络环境的原因,避免跨网络运营 商访问而导致访问速度低下的问题,当然不要忘了坐镇这10台tomcat前端的还有我们的反向代理服务器,比如nginx,这个就是另一个话题了,我今天 主要讲的是,对于这种分布式tomcat环境,我们如何保证session 的唯一性(我假定你知道session是什么)。这也是在日期公司的一个项目中负责解决的一个问题,当然实际上这并不是什么新的议题,之前就有很多解决方案,但是一般来说的大体的解决方案是自己通过编写一段代码或者通过配置tomcat的filter,将产生的session放到同一个内存数据库中,事实 上这确实可行的,只不过我比较懒,我总是觉得这种问题应该有更省事更成熟的解决方案,那确实是有的,也就是我马上介绍的 Memcached_Session_Manager,简称msm,这就是一个用于解决分布式tomcat环境下session共享的问题的开源解决 方案。

一 简介

(以下内容由个人根据msm官网大意翻译,原文地址:http://code.google.com/p/memcached-session-manager/

引言

MSM–memcached session manager是一个高可用的Tomcat session共享解决方案,除了可以从本机内存快速读取Session信息(仅针对黏性Session)外,同时可使用memcached存取Session,以实现高可用。

对于非黏性Session,memcached直接存储session。

除memcached外,还可以其他缓存组件如memcachedb, membase等。

特性

支持Tomcat6、Tomcat7

支持黏性、非黏性Session

无单一故障点

可处理tomcat故障转移

可处理memcached故障转移

插件式session序列化

允许异步保存session,以提升响应速度

只有当session有修改时,才会将session写回memcached

JMX管理&监控

MSM解决的问题

假设你有一个Tomcat集群,使用黏性session,如何应对单点故障问题?为了应对更多的并发量和可用性,你可以不断的增加Tomcat节点,但是单点故障仍旧会是个问题:如果使用黏性Session,一个Tomcat故障时,其他Tomcat并不能接管故障Tomcat节点的Session。

解决此问题的思路就是将黏性Session同时保存在Memcached中,如果单个Tomcat发生故障,集群中的其他Tomcat可以从Memcached中得到Session信息。

【注】对于非黏性Session,MSM  … 阅读全文

对java:comp/env的研究

  categories:资料  author:

来源:互联网

这两天研究了一下 context.lookup(“java:comp/env/XXX”)和直接context.lookup(“XXX”)的区别

网上关于这两个的文章也很多,但是都说得很难理解,比如什么ENC环境啊什么的,各种概念。

其实说得简单点:context.lookup(“java:comp/env/XXX”)只能用在J2EE环境,即是如果你自己写一个main 函数,想通过context.lookup(“java:comp/env/XXX”)这样的方式来访问JNDI服务,这是不可能的。
因为:java:comp/env/是一个J2EE环境的定义,说白了就是代表当前J2EE应用的环境,比如你自己项目的Web环境或者是EJB 环境,那是不是只要是个Web项目,就能用context.lookup(“java:comp/env/XXX”)这种方式访问JNDI服务了呢?也不 是!!!
使用这样的方式必须做一次 当前应用环境 到 资源名 的映射。
在web.xml文件中有这样的标签:
<resource-env-ref></resource-env-ref>
<resource-ref></resource-ref>
<ejb-local-ref></ejb-local-ref>
<ejb-ref></ejb-ref>
这些标签就是用来建立当前应用环境到服务器资源的映射的。
有了这样的映射之后,就能采用context.lookup(“java:comp/env/XXX”)的方式来访问JNDI资源了。

注意:context.lookup(“XXX”)在任何时候都是有效的,只要XXX确实是一个存在的JNDI名。

举个例子:
用weblogic10的控制台定了了一个oracle数据源,这个数据源的JNDI名称是:adsl,那么只要正确连接上了 weblogic(当然需传递URL,用户名和密码还有weblogic的JNDI工厂对象,这不属于该文的讨论范围)在任何地方都能用 context.lookup(“xxx”)得到这个数据源了,但是想通过context.lookup(“java:comp/env/jdbc /adsl”)访问到这个数据源,就不行了。如果想这样写的话需要做两件事情:
1、确保你的调用程序是一个web项目或者EJB项目,并部署到weblogic上。(例子使用web项目)
2、在web项目的web.xml里面加上如下配置:
<resource-ref>
<res-ref-name>jdbc/adsl</res-ref-name>
<res-auth>Container</res-auth>
<mapped-name>adsl</mapped-name> <!– 这个必须和你的全局JNDI数据源名称一样 –>
</resource-ref>
那么你就能在你的web程序里通过context.lookup(“java:comp/env/jdbc/adsl”)访问到这个数据源了。

关于EJB的访问也类似这样,可以直接访问全局EJB的JNDI名,和可以映射之后从java:comp/env/下进行访问。

以上的讲解有错。。。。。… 阅读全文

数据库索引结构

  categories:资料  author:

来源:http://www.springload.cn/springload/detail/401

对数据库索引的关注从未淡出我的们的讨论,那么数据库索引是什么样的?聚集索引与非聚集索引有什么不同?希望本文对各位同仁有一定的帮助。有不少存疑的地方,诚心希望各位不吝赐教指正,共同进步。

B-Tree

我们常见的数据库系统,其索引使用的数据结构多是B-Tree或者B+Tree。例如,MsSql使用的是B+Tree,Oracle及Sysbase使用的是B-Tree。所以在最开始,简单地介绍一下B-Tree。

B-Tree不同于BinaryTree(二叉树,最多有两个子树),一棵M阶的B-Tree满足以下条件:

  • 每个结点至多有M个孩子;
  • 除根结点和叶结点外,其它每个结点至少有M/2个孩子;
  • 根结点至少有两个孩子(除非该树仅包含一个结点);
  • 所有叶结点在同一层,叶结点不包含任何关键字信息;
  • 有K个关键字的非叶结点恰好包含K+1个孩子;

另外,对于一个结点,其内部的关键字是从小到大排序的。以下是B-Tree(M=4)的样例:

对于每个结点,主要包含一个关键字数组Key[],一个指针数组(指向儿子)Son[]。在B-Tree内,查找的流程是:使用顺序查找(数组长度较短 时)或折半查找方法查找Key[]数组,若找到关键字K,则返回该结点的地址及K在Key[]中的位置;否则,可确定K在某个Key[i]和 Key[i+1]之间,则从Son[i]所指的子结点继续查找,直到在某结点中查找成功;或直至找到叶结点且叶结点中的查找仍不成功时,查找过程失败。

接着,我们使用以下图片演示如何生成B-Tree(M=4,依次插入1~6):

从图可见,当我们插入关键字4时,由于原结点已经满了,故进行分裂,基本按一半的原则进行分裂,然后取出中间的关键字2,升级(这里是成为根结点)。其它的依类推,就是这样一个大概的过程。

数据库索引

在数据库中,索引的含义与日常意义上的“索引”一词并无多大区别(想想小时候查字典),它是用于提高数据库表数据访问速度的数据库对象。

  • 索引可以避免全表扫描。多数查询可以仅扫描少量索引页及数据页,而不是遍历所有数据页。
  • 对于非聚集索引,有些查询甚至可以不访问数据页。
  • 聚集索引可以避免数据插入操作集中于表的最后一个数据页。
  • 一些情况下,索引还可用于避免排序操作。

当然,众所周知,虽然索引可以提高查询速度,但是它们也会导致数据库系统更新数据的性能下降,因为大部分数据更新需要同时更新索引

一条索引记录中包含的基本信息包括:键值(即你定义索引时指定的所有字段的值)+逻辑指针(指向数据页或者另一索引页)。

当你为一张空表创建索引时,数据库系统将为你分配一个索引页,该索引页在你插入数据前一直是空的。此页此时既是根结点,也是叶结点。每当你往表中插入一行数据,数据库系统即向此根结点中插入一行索引记录。当根结点满时,数据库系统大抵按以下步骤进行分裂:

  • 创建两个儿子结点
  • 将原根结点中的数据近似地拆成两半,分别写入新的两个儿子结点
  • 根结点中加上指向两个儿子结点的指针

通常状况下,由于索引记录仅包含索引字段值(以及4-9字节的指针),索引实体比真实的数据行要小许多,索引页相较数据页来说要密集许多。一个索引页可以 存储数量更多的索引记录,这意味着在索引中查找时在I/O上占很大的优势,理解这一点有助于从本质上了解使用索引的优势。

索引的类型分为以下两个:

  • 聚集索引,表数据按照索引的顺序来存储的。对于聚集索引,叶子结点即存储了真实的数据行,不再有另外单独的数据页。
  • 非聚集索引,表数据存储顺序与索引顺序无关。对于非聚集索引,叶结点包含索引字段值及指向数据页数据行的逻辑指针,该层紧邻数据页,其行数量与数据表行数据量一致。

在一张表上只能创建一个聚集索引,因为真实数据的物理顺序只可能是一种。如果一张表没有聚集索引,那么它被称为“堆集”(Heap)。这样的表中的数据行没有特定的顺序,所有的新行将被添加的表的末尾位置。

聚集索引

在聚集索引中,叶结点也即数据结点,所有数据行的存储顺序与索引的存储顺序一致。

阅读全文

十个免费的 Web 压力测试工具

  categories:资料  tags:  author:

来源:互联网

本文列举了是十个免费工具,可以用来进行Web的负载/压力测试的。这样你就可以知道你的服务器以及你的WEB应用能够扛得住多少的并发量,以及网站性能。

0. Grinder –  Grinder是一个开源的JVM负载测试框架,它通过很多负载注射器来为分布式测试提供了便利。 支持用于执行测试脚本的Jython脚本引擎HTTP测试可通过HTTP代理进行管理。根据项目网站的说法,Grinder的 主要目标用户是“理解他们所测代码的人——Grinder不仅仅是带有一组相关响应时间的‘黑盒’测试。由于测试过程可以进行编码——而不是简单地脚本 化,所以程序员能测试应用中内部的各个层次,而不仅仅是通过用户界面测试响应时间。

The Grinder

1. Pylot -Pylot 是一款开源的测试web service性能和扩展性的工具,它运行HTTP 负载测试,这对容量计划,确定基准点,分析以及系统调优都很有用处。Pylot产生并发负载(HTTP Requests),检验服务器响应,以及产生带有metrics的报表。通过GUI或者shell/console来执行和监视test suites。

Pylot Main Logo

 

2. Web Capacity Analysis Tool (WCAT) – 这是一种轻量级负载生成实用工具,不仅能够重现对 Web 服务器(或负载平衡服务器场)的脚本 HTTP 请求,同时还可以收集性能统计数据供日后分析之用。WCAT 是多线程应用程序,并且支持从单个源控制多个负载测试客户端,因此您可以模拟数千个并发用户。该实用工具利用您的旧机器作为测试客户端,其中每个测试客户 端又可以产生多个虚拟客户端(最大数量取决于客户端机器的网络适配器和其他硬件)。您可以选择使用 HTTP 1.0 还是 HTTP 1.1 请求,以及是否使用 … 阅读全文

Solr 配置和SolrJ使用

  categories:搜索资料  tags:,   author:

Solr是一个独立的企业级搜索应用服务器,它对外提供类似于Web-service的API接口。用户可以通过http请求,向搜索引擎服务器提交一定格式的XML文件,生成索引;也可以通过Http Get操作提出查找请求,并得到XML格式的返回结果。
Solr是一个高性能,采用Java5开发,基于Lucene的全文搜索服务器。同时对其进行了扩展,提供了比Lucene更为丰富的查询语言,同时实现了可配置、可扩展并对查询性能进行了优化,并且提供了一个完善的功能管理界面,是一款非常优秀的全文搜索引擎。

  1. Solr基本安装和配置

1,从官网镜像服务器下载最新版本apache-solr-1.4.1。下载地址:

http://mirror.bjtu.edu.cn/apache//lucene/solr/,并解压缩

2,在D盘建立一个SolrHome文件夹来存放solr的配置文件等,例如:在DWORK目录下穿件一个SolrHome文件夹: D:\WORK\SolrHome,

3,在刚解压的apache-solr-1.4.1,找到apache-solr-1.4.1\example下找到solr文件夹,复制到SolrHome.阅读全文

log4j简易入门

  categories:资料  author:
来源:互联网
package test.log4j;

import org.apache.log4j.Logger;

public class HelloLog4j {
    private static final Logger logger = Logger.getLogger(HelloLog4j.class);
    public static void main(String[] args) {
        logger.debug("This is debug message");
        logger.info("This is info message");
        
阅读全文

solr 分布式(复制)配置

  categories:搜索资料  tags:,   author:

solr 分布式其实是分发,这概念像Mysql的复制。所有的索引的改变都在主服务器里,所有的查询都在从服务里。从服务器不断地(定时)从主服务器拉内容,以保持数据一致。

先描述下我的环境:
solr-master(192.168.1.181), solr-slave(192.168.1.155), jdke1.6.0_06, tomcat-5.5.26, solr-1.2
tomcat_home在 /home/chenlb/tomcat-5.5.26
solr_home在 /home/chenlb/solr-home
solr解压后的目录 /home/chenlb/solr-1.2.0
最好两机可以ssh无密码交互,ssh无密码登录请看:http://www.blogjava.net/chenlb/archive/2008/07/03/212293.html

solr的分发是用rsync的。
快照与分发过程:

1.snapshooter 命令在主服务器产生快照。一般在commit和optimize之后被solr调用。

2.snappuller 命令在从服务器运行,所做的事是从主服务器拉最新的快照。 用rsync的daemon模式来运行可以获得更好的性能与更底的CPU利用率。

3.snapinstaller 命令在从服务器运行,当从服务器从主服务器拉完快照后才执行。它会通知本地Solr服务器打开一个新的index reader,然后预热这个新index reader的缓存,此时有请求,原来的index reader继续为这此请求服务。一但预热完成,Solr 启用新的index reader,旧的被消亡。

Solr 的Distribution(分发) 在Scripts文件里记录。在solr_home/conf/scripts.conf文件里。

我现在这样配置:
user=chenlb
solr_hostname=localhost
solr_port=8080
rsyncd_port=18080
data_dir=/home/chenlb/solr-home/data
webapp_name=solr
master_host=192.168.1.181… 阅读全文



快乐成长 每天进步一点点