Eclipse进行远程调试linux 环境的tomcat配置 更新maven web项目

  categories:资料  author:

Eclipse进行远程调试linux 环境的tomcat配置 更新maven web项目

平常我们都是用windows开发,但是有时候需要将tomcat部署到linux下 去运行,比如执行shell脚本。这个时候我们就需要在linux环境下进行调试。我们可以利用myeclipse的远程调试功能,来进行操作。– 远程调试tomcat的配置,也可以是其他的web应用服务器,但是配置是不一样的。

情况分类:

1、tomcat在window下。

打开%CATALINE_HOME%/bin下的文件catalina.bat,加入下面这行: 
set CATALINA_OPTS=-server -Xdebug -Xnoagent -Djava.compiler=NONE -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=9999
其中address=8787是没被使用的端口号。连接方式有两种,为dt_shmem和dt_socket,分别表示本机调试和远程调试。 

2、tomcat在linxu下。

      在tomcat的catalina.sh文件的正文的第一行添加: 

declare -x CATALINA_OPTS="-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=9999" 

配置完成tomcat之后,启动tomcat(正常启动方式),可以查看监听端口是否已经监听。

[root@UC100C ~]# netstat -antp | grep 9999
tcp        0  

阅读全文

基于docker registry的私服安装简介

  categories:资料  author:

基于docker registry的私服安装简介

1. Docker 私服简介

官方提供了Docker Hub网站来作为一个公开的集中仓库。然而,本地访问Docker Hub速度往往很慢,并且很多时候我们需要一个本地的私有仓库只供网内使用。

Docker仓库实际上提供两方面的功能,一个是镜像管理,一个是认证。前者主要由docker-registry项目来实现,通过http服务来上传下载;后者可以通过docker-index(闭源)项目或者利用现成认证方案(如nginx)实现http请求管理。    

docker registry 就是管理 docker 镜像的服务, Docker 公司维护的 registry 就是 http://hub.docker.com ,它可以让我们方便的下载预先做好的镜像。

$ docker pull ubuntu 

上面的命令就是缺省的从这个Docker官方源下载。在国内为了加快访问,你也可以使用 docker.cn 的服务,他们同步了常用的镜像,使用也非常方便,如:

$ docker pull docker.cn/docker/ubuntu 

大部分公司在推广使用 docker 时,都会为了使用方便,在公司内部自己架设一个,不仅仅是为了安全、节省大量的带宽,而且也可以有效推动内部对docker的有效利用,如下图:

Docker公司的 docker registry也是开源的,我们可以很容易的架设自己的私有docker registry

docker-registry既然也是软件应用,自然最简单的方法就是使用官方提供的已经部署好的镜像registry。官方文档中也给出了建议,直接运行sudo docker run

阅读全文

用 Nginx 来做私有 docker registry 的安全控制

  categories:资料  author:

docker registry 就是管理 docker 镜像的服务, Docker 公司维护的 registry 就是 http://hub.docker.com ,它可以让我们方便的下载预先做好的镜像。这篇博客把作者做的一些实验分享给大家,让你也能在docker环境下起这些服务体会一下,再简单解释一下是如何用nginx来怎么这些问题。

AD:51CTO 网+ 第十二期沙龙:大话数据之美_如何用数据驱动用户体验

docker registry 介绍

docker registry 就是管理 docker 镜像的服务, Docker 公司维护的 registry 就是 http://hub.docker.com ,它可以让我们方便的下载预先做好的镜像。

  1. $ docker pull ubuntu

上面的命令就是缺省的从这个Docker官方源下载。在国内为了加快访问,你也可以使用docker.cn 的服务,他们同步了常用的镜像,使用也非常方便,如:

  1. $ docker pull docker.cn/docker/ubuntu

大部分公司在推广使用 docker

阅读全文

搭建docker内网私服

  categories:linux资料  author:

主要思路:
docker-registry-deploy

1. Docker Registry 说明

关于如何创建和使用本地仓库,其实已经有很多文章介绍了。因为docker技术正处于发展和完善阶段,所以有些文章要么内容已经过时,要么给出了错误的配置,导致无法正常创建仓库。本文记录的是个人完整的搭建过程,docker version为1.1.2。

官方提供了Docker Hub网站来作为一个公开的集中仓库。然而,本地访问Docker Hub速度往往很慢,并且很多时候我们需要一个本地的私有仓库只供网内使用。

Docker仓库实际上提供两方面的功能,一个是镜像管理,一个是认证。前者主要由docker-registry项目来实现,通过http服务来上传下载;后者可以通过docker-index(闭源)项目或者利用现成认证方案(如nginx)实现http请求管理。

docker-registry既然也是软件应用,自然最简单的方法就是使用官方提供的已经部署好的镜像registry。官方文档中也给出了建议,直接运行sudo docker run -p 5000:5000 registry命令。这样确实能启动一个registry服务器,但是所有上传的镜像其实都是由docker容器管理,放在了/var/lib/docker/….某个目录下。而且一旦删除容器,镜像也会被删除。因此,我们需要想办法告诉docker容器镜像应该存放在哪里。registry镜像中启动后镜像默认位置是/tmp/registry,因此直接映射这个位置即可,比如到本机的/opt/data/registry目录下。

 

2. 在CentOS上搭建docker私服

2.1 安装docker-registry

方法有多种,直接运行下面的命令:

1
# docker run -d -e SETTINGS_FLAVOR=dev -e
阅读全文

色彩与视觉机能

  categories:儿童画教程  author:

完整的色彩感觉过程

 

 

眼睛结构分解示意图

 

 

视网膜中的感色细胞有两种:

一种是感觉光线明暗的柱状细胞, 一种是感觉色彩的椎状细胞。

 

上方排列整齐的即是柱状细胞,当它对光感应时会有膨胀的状况;这是电子显微镜放大的照片。

 

常见与光有关的视觉现象有三种:

1. 明暗适应。

2. 色彩的心理恆常性。

3. 后像与补色。

我们忽然从亮处进入暗处时,椎状细胞失去足够的光 线无法感色,由柱状细胞来作用,眼睛会暂时看不见 ,然后渐渐看的清楚,这种现象称為 「暗适应」。

• 而从暗处进入亮处,也会產生类似的情况,然后才渐渐恢復正常称為 「明适应」。

感觉色彩不只靠眼睛而已,同时受到记忆和经验等心理因素影响,產生视觉的调整作用,这种现象称為 「色彩的心理恆常性」。

      (a)            (b)

比较正常光线下的(a)图和照射绿光之后的(b)图,我们仍可分辨出哪些部分是红 色的,但有些色彩就不太明显。

 

我们凝视一件物体,当眼睛闭上时,能短暂继续看到物体的影像,这种视觉持续的现象称為 阅读全文

色彩三要素

  categories:儿童画教程  author:

 • 色彩可以区分為两大类:

一是无彩色 ,為黑、白及各 种灰色等。

二是有彩色 ,為红、橙、黄、绿、蓝、紫 等各种色彩。

认识和运用色彩时,首先必须有系统地去了解色彩的 性质;不论任何色彩,皆具有三个基本的性质,一般 称為 「色彩三要素」 (或称 「色彩三属性」 ),即是

1. 色相 (Hue)

2. 明度 (Value)

3. 彩度 (Chroma)

一、 色相( Hue ,简写為 H

色相是用来区分色彩的名称,即是依不同波长色彩的 相貌所称呼的「名字」,如红、橙、黄、绿、蓝、紫 等。当我们描述色彩时,最常用「色相」来沟通,產 生共识。 阅读全文

从敏捷开发到敏捷运维DevOps将带来革命

  categories:java资料, linux资料  author:

你听说过DevOps一词,或者听说过敏捷运维这个运动么?人们越来越意识到传统意义上的开发行为和运维行为存在脱节现象,从而导致冲突和低效,因此DevOps应运而生。传统的工作流程中,开发和运维之间存在很多的沟通错位而造成部署上的问题,由此,DevOps理念应运而生。

【51CTO精选译文】如果你对IT管理感兴趣,尤其是对Web运维感兴趣,那么最近一定会注意到“DevOps”这一热词的出现。现在#DevOps标签频繁出现在微博客Twitter上,同时DevOps相关的技术交流聚会也在慢慢增多。

在许多方面,DevOps是一个集合性概念,指的是能够理顺开发和运维之间相互配合关系的任何事物(51CTO编辑注:在英文中,Developer指开发者,Operations指运维,所以DevOps一词本身含有开发+运维的意思)。但是DevOps背后的理念要比上述说法更深远。

什么是DevOps?

人们越来越意识到传统意义上的开发行为和运维行为存在脱节现象,从而导致冲突和低效,因此DevOps应运而生。

正如李·汤普森(Lee Thompson)和安德鲁·谢福尔(Andrew Shafer)所言,在开发和运维之间存在一面“混乱之墙”。相互冲突的动机、流程和工具导致了这面“墙”的存在。

相互冲突的动机、流程和工具导致了这面“墙”的存在
开发与运维之间的“混乱之墙”

以开发为中心的人通常认为,变化会带来回报。企业依靠他们来应对不断变化的需求。因此他们被鼓励尽可能进行变革。

而运维人员则往往视变化为敌人。企业依靠他们维持正常业务运维和实施让企业赚钱的服务。由于变化会影响稳定性和可靠性,运维业务有理由对它说不。我们已经多次听到过如下统计数字:在所有宕机事件中有80%情况是源于自杀式的改变(根据51CTO之前进行的调查,很多时候,仅仅是给系统应用补丁就会造成生产服务器无法正常重启)。

开发人员和运维人员认识世界的方法,以及各自所处的角色,存在根本性的差别。他们都认为自己的做法是正确的。的确,孤立的来看他们都是正确的。

更糟糕的是,开发和运维团队通常处于公司组织架构的不同部分,通常具有不同管理者的和竞争关系,而且通常工作在不同的地点。

开发和运维团队通常处于公司组织架构的不同部分
开发与运维通常工作在不同的地点

让混乱之墙更坚固的还包括开发和运维工具之间的错位。看一下开发者要求和日常使用的常见工具,再看一下系统管理员,你会发现两者存在很大不同,开发人员没有兴趣使用运维人员的工具,反之亦然;而且两部分工具之间也不存在重要的集成。即使在某些工具类型上有一些重叠之处,使用方式也完全不同。

开发者要求和日常使用的常见工具
开发与运维常用工具的不集成

当应用程序变动需要从开发团队推向运维团队时,混乱之墙的存在则将变得更加明显。有人将其称为一个“版本发布(Release)”,有人则称其为一次“部署(deployment)”,但有一件事情是公认的,问题可能会随之而来。下图虽然是一个抽象化场景,但是如果你经历过这一过程,一定会感觉到它的真实性。

版本发布与部署
应用程序变动从开发到运维

开发人员把一个软件版本“扔”给墙对面的运维人员。后者拿到该版本产品后开始准备将其部署。运维人员手动修改由开发者提供的部署脚本或创建自己的脚本。他们还需要修改配置文件来适应与开发环境大不相同的真实生产环境。最完美的情况是,他们重复在此前环境中已完成的工作;而糟糕的情况是,他们将引入或发现新的漏洞。

运维人员然后开始进行他们自认为正确的部署过程。由于开发和运维之间的脚本、配置、过程和环境存在差别,这一部署过程实际上也是首次被执行。当然,期间如果发生一个问题,开发人员会被要求来帮助进行排障。运维人员会说开发团队给的产品存在问题。而开发人员则会回应称该产品在他们的环境下运行良好,因此一定是运维人员在部署的过程中做错了什么。由于配置、文件存储位置和过程的不同,开发人员诊断问题也并非一件易事。

没有一个可靠的方式来把环境回滚到此前已知的正常状态。本来应该一帆风顺的部署过程最后变成一场救火行动,经过反复测试之后才让生产环境恢复到正常状态。

本来应该一帆风顺的部署过程最后变成一场救火行动
本来应该一帆风顺的部署过程最后变成一场救火行动

部署阶段已经非常明显的需要DevOps理念来解决问题,但需要DevOps的绝不仅仅是这一阶段。正如约翰·阿尔斯帕瓦(John Allspaw)所指出的那样,开发和运维之间的协作需求在部署之前就已存在,同时也会在部署之后的长时间之内继续存在。

DevOps所带来的好处

DevOps是一个非常强大的概念,因为它可以在众多不同层面上产生共鸣。

从开发或运维的一线人员的观点来看,DevOps可以让他们从众多烦恼中解脱出来。它虽然不是具有魔力的万灵药,但是如果你能够让DevOps奏效,则会节省大量时间,而且不至于打击自己的士气。显而易见,投入精力将DevOps落到实处,我们应该会更加高效、更加敏捷和减少挫败感。有些人可能会反驳称DevOps是一个遥不可及的目标,但这并非说我们不应该去尝试实现它。

DevOps会节省大量的时间
DevOps会节省大量的时间

对于企业来说,DevOps直接有助于实现两个强大战略性企业品质,“业务敏捷性”和“IT融合”。它们可能不是IT人士所担忧的事情,但是却应该获得掌握财政大权的管理者的注意。

IT融合的一个简单定义是,“企业渴望达到的一个状态,能够高效的使用信息技术来达到企业目标——通常是提高公司业绩或市场竞争力。”

通过从共同企业目标角度出发来校准开发和运维的职责和流程,DevOps有助于实现IT融合。开发和运维人员需要明白,它们仅仅是一个统一业务流程中的一部分。DevOps思想确保个体决策和行为应力求支持和改进这个统一的业务流程,无论你是来自哪一个组织架构。

DevOps有助于实现IT融合
DevOps有助于实现IT融合

业务敏捷性的一个简单定义是,“一个机构以高效、经济的方式迅速适应市场和环境变化的能力。”

当然对于开发人员来说,“敏捷”有专门的含义(参考51CTO开发频道的专题:初探敏捷开发),但目标是非常类似的。敏捷开发方法旨在保持软件开发工作与客户/公司的目标同步,尽管需求不断变化,也可以产生高品质软件。对于多数机构来说,迭代项目管理方法Scrum是敏捷的代名词。

Scrum
Scrum

业务敏捷性承诺,在企业权益集团作出决策和开发者进行响应之间能够紧密互动和快速反馈。看一下一家运转良好的敏捷开发团体的产品,你会看到一个与业务需求保持一致的稳定持续改进。

但是,当你从企业角度回顾一下整个开发-运维周期,敏捷方法的相关优势通常会变得非常模糊。混乱之墙导致了应用程序生命周期的分裂。开发和运维分别按照不同的节奏进行。实际上,产品部署之间的长期间隔使得一个团体的敏捷工作变成了它一直试图避免的瀑布生命周期。当存在混乱之墙时,无论开发团体有多么敏捷,改变企业缓慢和迟钝的特点是极其困难的。

敏捷开发与企业结构的不同步
敏捷的开发与瀑布式企业结构的步调不同

DevOps使得敏捷开发的优势可以体现在机构层面上。通过考虑到快速、反应灵敏但稳定的业务运维,使其能够与开发过程的创新保持同步,DevOps可以做到这一点。

如果你希望在自己的组织内建立一个DevOps项目,务必牢记“IT融合”

阅读全文

Apache Shiro介绍

  categories:资料  author:

一、什么是Shiro

Apache Shiro是一个强大易用的Java安全框架,提供了认证、授权、加密和会话管理等功能:

认证 – 用户身份识别,常被称为用户“登录”;

授权 – 访问控制;

密码加密 – 保护或隐藏数据防止被偷窥;

会话管理 – 每用户相关的时间敏感的状态。

对于任何一个应用程序,Shiro都可以提供全面的安全管理服务。并且相对于其他安全框架,Shiro要简单的多。

二、Shiro的架构介绍

首先,来了解一下Shiro的三个核心组件:Subject, SecurityManager 和 Realms. 如下图:

Subject:即“当前操作用户”。但是,在Shiro中,Subject这一概念并不仅仅指人,也可以是第三方进程、后台帐户(Daemon Account)或其他类似事物。它仅仅意味着“当前跟软件交互的东西”。但考虑到大多数目的和用途,你可以把它认为是Shiro的“用户”概念。

Subject代表了当前用户的安全操作,SecurityManager则管理所有用户的安全操作。

SecurityManager:它是Shiro框架的核心,典型的Facade模式,Shiro通过SecurityManager来管理内部组件实例,并通过它来提供安全管理的各种服务。

Realm: Realm充当了Shiro与应用安全数据间的“桥梁”或者“连接器”。也就是说,当对用户执行认证(登录)和授权(访问控制)验证时,Shiro会从应用配置的Realm中查找用户及其权限信息。

从这个意义上讲,Realm实质上是一个安全相关的DAO:它封装了数据源的连接细节,并在需要时将相关数据提供给Shiro。当配置Shiro时,你必须至少指定一个Realm,用于认证和(或)授权。配置多个Realm是可以的,但是至少需要一个。

Shiro内置了可以连接大量安全数据源(又名目录)的Realm,如LDAP、关系数据库(JDBC)、类似INI的文本配置资源以及属性文件等。如果缺省的Realm不能满足需求,你还可以插入代表自定义数据源的自己的Realm实现。

Shiro完整架构图:

除前文所讲Subject、SecurityManager 、Realm三个核心组件外,Shiro主要组件还包括:

Authenticator :认证就是核实用户身份的过程。这个过程的常见例子是大家都熟悉的“用户/密码”组合。多数用户在登录软件系统时,通常提供自己的用户名(当事人)和支持他们的密码(证书)。如果存储在系统中的密码(或密码表示)与用户提供的匹配,他们就被认为通过认证。

Authorizer :授权实质上就是访问控制 – 控制用户能够访问应用中的哪些内容,比如资源、Web页面等等。

SessionManager … 阅读全文

JAVA规则引擎总结

  categories:资料  author:
第一章 规则引擎初步了解

1 为什么会有规则引擎?

背景:复杂企业级项目的开发以及其中随外部条件不断变化的业务规则(business logic),迫切需要分离商业决策者的商业决策逻辑和应用开发者的技术决策,并把这些商业决策放在中心数据库或其他统一的地方,让它们能在运行时(即商务时间)可以动态地管理和修改从而提供软件系统的柔性和适应性。规则引擎正是应用于上述动态环境中的一种解决方法。

企业管理者对企业级IT系统的开发有着如下的要求:

为提高效率,管理流程必须自动化,即使现代商业规则异常复杂;

市场要求业务规则经常变化,IT系统必须依据业务规则的变化快速、低成本的更新;

为了快速、低成本的更新,业务人员应能直接管理IT系统中的规则,不需要程序开发人员参与。

2 什么是规则引擎?

也许这又是一种“先有蛋还是先有鸡”哲学争论,在JSR-94种也几乎没有定义,规则引擎这个术语是非常不明确的,因为任何以任意形式使用能够应用于数据生成结果的规则的系统都可以称为规则引擎。包括像表单验证和动态表达式引擎这样的简单系统都可以称之为规则引擎。可以这样理解规则引擎由推理引擎发展而来,是一种嵌入在应用程序中的组件,实现了将业务决策从应用程序代码中分离出来,并使用预定义的语义模块编写业务决策。接受数据输入,解释业务规则,并根据规则做出业务决策。

3 为何要使用规则引擎?

3.1 声明式编程

规则引擎允许你描述做什么而不是如何去做。

这里的主要优点是使用规则更加容易对复杂的问题进行表述,并得到验证。 (规则比编码更容易阅读).

规则系统能够解决非常非常困难的问题,并提供了方案怎样达到和在解决问题的方向上所作的每一个决定的原因(这对于类似神经网络这样的AI系统来说不容易达到)

3.2逻辑与数据分离

数据保存在系统对象中,逻辑保存在规则中。这根本性的打破了面向对象系统中将数据和逻辑耦合起来的局面,这点是有利的也是不利的,在于你的观察角度。这样做的结果是,将来逻辑发生改变时更容易被维护,因为逻辑保存在规则中。这点在逻辑是跨领域或多领域中使用时尤其有用。通过将逻辑集中在一个或数个清晰的规则文件中,取代了之前分散在代码中的局面。

3.3 速度及可测量性

Rete算法、Leaps算法,以及由此衍生出来的Drools的Rete、Leaps算法,提供了对系统数据对象非常有效率的匹配。这些都是高效率尤其当你的数据是不完全的改变(规则引擎能够记得之前的匹配)。这些算法经过了大量实际考验的证明。

3.4 知识集中化

通过使用规则,将建立一个可执行的规则库。这意味着规则库代表着现实中的业务策略的唯一对应,理想情况下可读性高的规则还可以被当作文档使用。

3.5 工具集成

例如Eclipse(将来可能在基于Web的界面上)这样的工具为规则的修改与管理、即时获得反馈、内容验证与修补提供了办法。审查与调试工具同样也可用了。

3.6 解释机制

通过将规则引擎的决断与决断的原因一起记录下来,规则系统提供了很好的“解释机制”。

3.7易懂的规则

通过建立对象模型以及DSL(域定义语言),你可以用接近自然语言的方式来编写规则。这让非技术人员与领域专家可以用他们自己的逻辑来理解规则(因为程序的迷宫已经被隐藏起来了) 。

4 何时应当使用规则引擎?

阅读全文

hessian-demo和hessian与spring整合demo

  categories:资料  author:

  Hessian是一个轻量级的remoting on http工具,使用简单的方法提供了RMI(Remote Method Invocation,远程方法调用)的功能。采用的是二进制RPC(Remote Procedure Call Protocol,远程过程调用协议)协议,因为采用的是二进制协议,所以它很适合于发送二进制数据。

  在进行基于Hessian的项目开发时,应当注意以下几点:

  ▲JAVA服务器端必须具备以下几点:

  ·包含Hessian的jar包。

  ·设计一个接口,用来给客户端调用。

  ·实现该接口的功能。

  ·配置web.xml,配好相应的servlet。

  ·对象必须实现Serializable 接口。

  ·对于复杂对像可以使用Map的方法传递。

  ▲客户端必须具备以下几点:

  ·java客户端包含Hessian.jar的包。

  ·具有和服务器端结构一样的接口。

·利用HessianProxyFactory调用远程接口。

下面是一个hessian的简单例子。

Java服务器端:

环境:j2sdk1.4.2、Tomcat6.0

依赖的包:hessian-3.1.6.jar

新建一个名为HessianServer的web project。将hessian-3.1.6.jar放入WEB-INF/lib文件夹中。

创建接口:

package server.demo;

public interface DemoApi {

public void setName(String name);

public String 阅读全文



快乐成长 每天进步一点点