- 博客(50)
- 收藏
- 关注
原创 AngularJS 学习笔记-第二章:与后端服务器通信
AngularJS能够通过XMLHttpRequest(XHR)和JSONP请求与各种后端交流,拥有通用的$http服务以进行XHR和JSONP调用,以及专门面向Restful后端接口的$resource服务 在本章中,将研究与后端通信的API与技术,特别是一下内容:使用$http服务进行基本的XHR调用,已经进行相应的测试利用$q服务提供的promise API进行有效的异...
2017-04-19 13:52:39
163
原创 Http报头Accept与Content-Type的区别
1.Accept属于请求头, Content-Type属于实体头。 Http报头分为通用报头,请求报头,响应报头和实体报头。 请求方的http报头结构:通用报头|请求报头|实体报头 响应方的http报头结构:通用报头|响应报头|实体报头 2.Accept代表发送端(客户端)希望接受的数据类型。 比如:Accept:text/...
2017-04-07 09:50:46
182
原创 “推倒重来”的讲究
上个月,有个以前的同事问我:“你在的时候,为什么不把原来的系统都重做了,我们明明有实力啊”。我说:“我们也做了很多事情嘛,系统稳定性、安全性、增加冗余、理清各模块职责、API通讯机制的建立、内部分层的整理。”他说:“对,但我还是想知道,你为什么不把系统重做了呢?”于是我问:“我离职之后,后来似乎多投了不少人重做系统?结果怎么样呢?”他说:“结果,结果就是做业务要同时操作三四套系...
2017-04-05 07:02:37
563
原创 微服务系统中的认证策略
软件安全本身就是个很复杂的问题,由于微服务系统中的每个服务都要处理安全问题,所以在微服务场景下会更复杂。David Borsos在最近的伦敦微服务大会上作了相关内容的演讲,并评估了四种面向微服务系统的身份验证方案。 在传统的单体架构中,单个服务保存所有的用户数据,可以校验用户,并在认证成功后创建HTTP会话。在微服务架构中,用户是在和服务集合交互,每个服务都有可能需要知道请求的用户是谁...
2017-04-05 07:02:24
147
原创 微服务架构的设计模式与使用到的基础框架
微服务架构的设计模式 前不久,Java Code Geeks发表了一篇文章,分析单体应用与微服务的优缺点。近日,该网站又发表了一篇文章,提供了六种微服务架构的设计模式。 聚合器微服务设计模式 这是一种最常用也最简单的设计模式,如下图所示: 聚合器调用多个服务实现应用程序所需的功能。它可以是一个简单的Web页面,将检索到的数据进行处理展示。它也可以是一个...
2017-04-05 06:58:16
199
原创 基于微服务的软件架构模式
微服务(micro services)这个概念不是新概念,很多公司已经在实践了,例如亚马逊、Google、FaceBook,Alibaba。微服务架构模式(Microservices Architecture Pattern)的目的是将大型的、复杂的、长期运行的应用程序构建为一组相互配合的服务,每个服务都可以很容易得局部改良。 Micro这个词意味着每个服务都应该足够小,但是,这里的小不能用代码...
2017-04-04 20:57:04
236
原创 微服务实践(七):从单体式架构迁移到微服务架构
这是用微服务开发应用系列博客的第七篇也是最后一篇。第一篇中介绍了微服务架构模式,并且讨论了微服架构的优缺点;接续文章讨论了微服务架构不同方面:使用API网关,进程间通信,服务发现,事件驱动数据管理以及部署微服务。本篇,我们将探讨将应用从单体式架构迁移到微服务架构需要考虑的策略。 希望读者通过本系列文章对微服务优缺点有一个比较好的理解,以及何时使用这种架构。也许微服务架构比较适合你的应用。...
2017-04-04 20:42:58
168
原创 微服务实战(六):选择微服务部署策略
【编者的话】这篇博客是用微服务建应用的第六篇,第一篇介绍了微服务架构模板,并且讨论了使用微服务的优缺点。随后的文章讨论了微服务不同方面:使用API网关,进程间通讯,服务发现和事件驱动数据管理。这篇文章,我们将讨论部署微服务的策略。 本系列文章:微服务实战(一):微服务架构的优势与不足微服务实战(二):使用API Gateway微服务实战(三):深入微服务架构的进程间通信...
2017-04-04 20:24:28
144
原创 微服务实践(五):微服务的事件驱动数据管理
【编者的话】本文是使用微服务创建应用系列的第五篇文章。第一篇文章介绍了微服务架构模式,并且讨论了使用微服务的优缺点;第二和第三篇描述了微服务架构模块间通讯的不同方面;第四篇研究了服务发现中的问题。本篇中,我们从另外一个角度研究一下微服务架构带来的分布式数据管理问题。 1.1 微服务和分布式数据管理问题 单体式应用一般都会有一个关系型数据库,由此带来的好处是应用可以使用 ACID ...
2017-04-04 20:14:16
94
原创 微服务实战(四):服务发现的可行方案以及实践案例
这是关于使用微服务架构创建应用系列的第四篇文章。第一篇介绍了微服务架构的模式,讨论了使用微服务架构的优缺点。第二和第三篇描述了微服务架构内部的通讯机制。这篇文章中,我们将会探讨服务发现相关问题。 为什么要使用服务发现? 设想一下,我们正在写代码使用了提供REST API或者Thrift API的服务,为了完成一次服务请求,代码需要知道服务实例的网络位置(IP地址和端口)。传统应用...
2017-04-04 19:53:32
84
原创 REST和认证
我们在设计REST(Representational State Transfer)风格的Web service API,有一个问题经常要考虑,就是如何设计用户认证的体系(Authentication). 比较传统的做法是首先有一个登陆的API,然后服务器返回一个session ID,后续的操作客户端都必须带上这个session ID,但是这样的,服务就变成了有状态了,不符合REST风格...
2017-04-01 22:24:25
126
原创 微服务实战(三):深入微服务架构的进程间通信
【编者的话】这是采用微服务架构创建自己应用系列第三篇文章。第一篇介绍了微服务架构模式,和单体式模式进行了比较,并且讨论了使用微服务架构的优缺点。第二篇描述了采用微服务架构应用客户端之间如何采用API Gateway方式进行通信。在这篇文章中,我们将讨论系统服务之间如何通信。 简介 在单体式应用中,各个模块之间的调用是通过编程语言级别的方法或者函数来实现的。但是一个基于微服务的分...
2017-04-01 16:19:30
112
原创 微服务实战(二):使用API Gateway
【编者的话】本系列的第一篇介绍了微服务架构模式。它讨论了采用微服务的优点和缺点,除了一些复杂的微服务,这种模式还是复杂应用的理想选择。 当你决定将应用作为一组微服务时,需要决定应用客户端如何与微服务交互。在单体式程序中,通常只有一组冗余的或者负载均衡的服务提供点。在微服务架构中,每一个微服务暴露一组细粒度的服务提供点。在本篇文章中,我们来看它如何影响客户端到服务端通信,同时提出一种AP...
2017-04-01 14:13:02
135
原创 微服务实战(一):微服务架构的优势与不足
【编者的话】本文来自Nginx官方博客,是微服务系列文章的第一篇,主要探讨了传统的单体式应用的不足,以及微服务架构的优势与挑战。正如作者所说,微服务架构更适合用于构建复杂的应用,尽管它也有自己的不足。 这篇文章作者是Chris Richardson,他是早期基于Java的Amazonite EC2 PaaS平台CloudFoundry.com的创始人。现在他为企业提供如何开发和部署应用...
2017-04-01 12:06:55
82
原创 spring框架及spring cloud框架主要组件
spring 顶级项目:Spring IO platform:用于系统部署,是可集成的,构建现代化应用的版本平台,具体来说当你使用maven dependency引入spring jar包时它就在工作了。Spring Boot:旨在简化创建产品级的 Spring 应用和服务,简化了配置文件,使用嵌入式web服务器,含有诸多开箱即用微服务功能,可以和spring cloud联合部署。S...
2017-03-28 10:30:14
565
原创 RESTful API 设计指南
一、协议 API与用户的通信协议,总是使用HTTPs协议。二、域名 应该尽量将API部署在专用域名之下。 https://api.example.com 如果确定API很简单,不会有进一步扩展,可以考虑放在主域名下。 https://example.org/api/三...
2017-03-26 14:27:12
89
原创 css3滤镜
经常看到一些网站的底部有一些灰色的图标,鼠标移入的时候会变亮,开始以为是js操作src或者bg呢,搜索了一下,发现了一个更好的方法:通过css3的滤镜方法。html代码:css代码:.icon{-webkit-filter: grayscale(100%);-moz-filter: grayscale(100%);-ms-filter: grayscale(100%);...
2015-07-18 01:48:41
97
原创 keytool工具使用总结
Keytool 是一个Java 数据证书的管理工具 ,Keytool 将密钥(key)和证书(certificates)存在一个称为keystore的文件中 在keystore里,包含两种数据: 密钥实体(Key entity)——密钥(secret key)又或者是私钥和配对公钥(采用非对称加密) 可信任的证书实体(trusted certificate entries)——只包含公钥 ...
2014-04-24 14:16:05
180
原创 深入掌握JMS(十):JMSCorrelationID与Selector
本文转自:[url]http://blog.csdn.net/iamfafa/article/details/6265357[/url]前面讲过JMSCorrelationID主要是用来关联多个Message,例如需要回复一个消息的时候,通常把回复的消息的JMSCorrelationID设置为原来消息的ID。 在下面这个例子中,创建了三个消息生产者A,B,C和三个消息消...
2014-04-02 11:53:44
93
原创 深入掌握JMS(十一):TemporaryQueue和TemporaryTopic
本文转自:[url]http://blog.csdn.net/iamfafa/article/details/6265369[/url]TemporaryQueue和TemporaryTopic,从字面上就可以看出它们是“临时”的目的地。可以通过Session来创建,例如: TemporaryQueue replyQueue = session.createTemporaryQ...
2014-04-02 11:53:35
107
原创 深入掌握JMS(九):Selector
本文转自:[url]http://blog.csdn.net/iamfafa/article/details/6265290[/url]前面的例子中创建一个消息消费者使用的是: sesssion.createConsumer(destination) 另外,还提供了另一种方式: sesssion.createConsumer(destination, selector)...
2014-04-01 09:06:14
86
原创 深入掌握JMS(八):JMSReplyTo
本文转自:[url]http://blog.csdn.net/iamfafa/article/details/6265279[/url]在下面的例子中,首先创建两个Queue,发送者给一个Queue发送,接收者接收到消息之后给另一个Queue回复一个Message,然后再创建一个消费者来接受所回复的消息。[code="java"]import javax.jms.Connectio...
2014-04-01 09:06:02
85
原创 深入掌握JMS(七):DeliveryMode例子
本文转自:[url]http://blog.csdn.net/iamfafa/article/details/6265164[/url]在下面的例子中,分别发送一个Persistent和nonpersistent的消息,然后关闭退出JMS。[code="java"]import javax.jms.Connection;import javax.jms.DeliveryMode...
2014-04-01 09:05:54
106
原创 深入掌握JMS(六):消息头
本文转自:[url]http://blog.csdn.net/iamfafa/article/details/6264992[/url]一个消息对象分为三部分:消息头(Headers),属性(Properties)和消息体(Payload)。 对于StreamMessage和MapMessage,消息本身就有特定的结构,而对于TextMessage,ObjectMess...
2014-04-01 09:05:46
75
原创 消息中间件的技术选型心得-RabbitMQ、ActiveMQ和ZeroMQ
RabbitMQ、ActiveMQ和ZeroMQ都是极好的消息中间件,但是我们在项目中该选择哪个更适合呢?很多开发者面临这个烦恼。下面我会对这三个消息中间件做一个比较,看了后你们就心中有数了。RabbitMQ是AMQP协议领先的一个实现,它实现了代理(Broker)架构,意味着消息在发送到客户端之前可以在中央节点上排队。此特性使得RabbitMQ易于使用和部署,适宜于很多场景如路由、负载均...
2014-04-01 08:57:11
90
原创 MD4加密源码
[code="java"]public class MD4 { private int A, B, C, D; private int X[] = new int[16]; public MD4() { } public String getMD4ofStr(String s) { byte[] buffer = new byte[str.length() *...
2014-03-27 13:47:46
566
1
原创 MD5加密源码
[code="java"]public class MD5 { static final int S11 = 7; static final int S12 = 12; static final int S13 = 17; static final int S14 = 22; static final int S21 = 5; static final int S22 = ...
2014-03-27 13:45:58
112
原创 JDBC连接oracle RAC数据库配置
RAC的配置如下: node1:ip地址192.168.60.132,实例名:rac1,主机名:rac1 node2:ip地址192.168.60.144,实例名:rac2,主机名:rac2 RAC服务名为oratest 我的应用服务器为apache+tomcat配置过程如下 1、搜索了一下,发...
2014-03-27 13:41:50
274
原创 深入掌握JMS(五):实战Topic
本文转自:[url]http://blog.csdn.net/iamfafa/article/details/6264698[/url]与Queue不同的是,Topic实现的是发布/订阅模型,在下面的例子中,启动2个消费者共同监听一个Topic,然后循环给这个Topic中发送多个消息。 [code="java"]import javax.jms.Connection; impo...
2014-01-22 11:42:37
96
原创 深入掌握JMS(四):实战Queue
本文转自:[url]http://blog.csdn.net/iamfafa/article/details/6264587[/url]Queue实现的是点到点模型,在下面的例子中,启动2个消费者共同监听一个Queue,然后循环给这个Queue中发送多个消息,我们依然采用ActiveMQ。[code="java"]import javax.jms.Connection; imp...
2014-01-22 11:41:21
72
原创 深入掌握JMS(三):MessageListener
本文转自:[url]http://blog.csdn.net/iamfafa/article/details/6264535[/url]消息的消费者接收消息可以采用两种方式: 1、consumer.receive() 或 consumer.receive(int timeout); 2、注册一个MessageListener。 采用第一种方式,消息的接收者会一直等待...
2014-01-22 11:39:51
133
原创 深入掌握JMS(二):一个JMS例子
本文转自:[url]http://blog.csdn.net/iamfafa/article/details/6264446[/url] 首先需要做的是选择一个JMS提供者,如果在JavaEE环境中可以不用考虑这些.我们选择ActiveMQ,官方地址: http://activemq.apache.org/.网上有很多介绍ActiveMQ的文档,所以在这里就不介绍了. ...
2014-01-22 11:37:29
115
原创 深入掌握JMS(一):JSM基础
本文转自:[url]http://blog.csdn.net/iamfafa/article/details/6264359[/url]1.JMS基本概念 JMS(Java Message Service) 即Java消息服务。它提供标准的产生、发送、接收消息的接口简化企业应用的开发。它支持两种消息通信模型:点到点(point-to-point)(P2P)模型和发布/订阅(Pub/...
2014-01-22 11:32:09
114
原创 ActiveMQ配置
转自:[url]http://www.cnblogs.com/CopyPaster/archive/2012/04/27/2473179.html[/url]目前常用的消息队列组建无非就是MSMQ和ActiveMQ,至于他们的异同,这里不想做过多的比较。简单来说,MSMQ内置于微软操作系统之中,在部署上包含一个隐性条件:Server需要是微软操作系统。(对于这点我并去调研过MSMQ是否可以...
2013-11-22 11:39:42
125
原创 tabbedpanel用法
声名:转自:http://jiake.iteye.com/blog/2712701.多个tab 如何选中某一个: function selectTab(id) { var tabContainer = dojo.widget.byId("tabContainer"); tabContainer.selectTab(id); } ...
2012-12-11 11:32:27
319
原创 <%@ include file="" %>与<jsp:include page="" />区别
[b]转自:http://www.iteye.com/topic/312500[/b]我们都知道在jsp中include有两种形式,分别是Include指令:和include动作: 前者是指令元素、后者是行为元素。具体它们将在何处用?如何用及它们有什么区别?这应该是很多人看到它都会想到的问题。下面一起来看看吧。 通常当应用程序中所有的页面的某些部分(例如标题、页脚和...
2012-12-11 10:09:49
107
原创 Struts 2.1 Tags
[b]转自:http://www.iteye.com/topic/655025[/b]Struts 2.1 Tags 一、控制标签 #、if /elseif/ else @用于逻辑判断 你是何方妖怪? 未成年人不能进入! ...
2012-12-11 10:03:04
134
原创 java.awt.headless
对于一个Java服务器来说经常要处理一些图形元素,例如地图的创建或者图形和图表等。这些API基本上总是需要运行一个X-server以便能使用AWT(Abstract Window Toolkit,抽象窗口工具集)。然而,运行一个不必要的X-server并不是一种好的网络管理方式。这个解决方案依赖于你的Java版本。如果你运行在JDK1.4上,那么你将有机会运行headless服务器。...
2012-11-28 10:50:49
267
原创 SQL中获取日期为当前的第几周
最近做报表需要取某天是当年的第几周,用到了两个取周的函数。WW: 每年的1月1日作为当年的第一周的第一天(不管当年的1月1日是星期几); 比如:2011/01/01 是周六, 在Oracle中被定义为2011年的第一周的第一天; SELECT to_char(TO_DATE('20110101','YYYYMMDD') ,'yyyyww') as week...
2012-08-14 15:53:31
7832
原创 转:从ubuntu中文论坛转载的一片超好的文章,慢慢学习中(转)
从ubuntu中文论坛转载的一片超好的文章,慢慢学习中(转) Posted on 2011-01-07 02:05 leekiang 阅读(866) 评论(0) 编辑 收藏 所属分类: LINUX,UNIX About Shell ----------- Q1.用户登录到Linux机器,系统会启动login子程序处理用户登录请求,如何自动设置用户环境变量? 比如 PATH,...
2012-04-10 17:43:53
164
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人