自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

云水之路的专栏

专注互联网产品与技术

  • 博客(151)
  • 资源 (9)
  • 收藏
  • 关注

原创 Eureka源码分析-环境构建篇

      承接上一篇文章《什么是微服务》,我们已经对微服务有一定了解,并且以一个实现了注册中心、服务提供者及消费者的例子作为文章的结尾,而本篇文章,主要介绍Eureka源代码的环境构建及示例调试。  环境构建 调试方式 运行原理 示例调试   一、环境构建学习一门新技术的原理和根本,最好的方式就是研究它的源代码,搞懂它是如何诞生的,同时,也考虑下为什么这样去设...

2018-10-23 12:56:47 3073

原创 什么是微服务?

什么是微服务?       很高兴与各位读者朋友见面,本篇内容是微服务系列的首篇文章,也是本人后期撰写原创微服务架构文章的开始,希望自己的一些经验分享,能够助力于各位读者朋友在微服务架构之路上顺风顺水。作为首篇文章,我会以最为基础的概念为开始,介绍下什么是微服务及其与SOA服务架构的异同;然后,会以一个整体的微服务架构图及详解作为第二部分内容;最后,会搭建一个基础入门的注册中心(HA)...

2018-10-15 11:11:00 1766

原创 RPC远程协议之Thrift非阻塞多线程处理

RPC远程协议之Thrift非阻塞多线程处理 在上一篇文章《RPC远程协议之Thrift入门》中,我已经介绍了Thrift的基本使用,并举例验证了如何使用,当然这个例子是阻塞单线程的模式,实际客户端请求增多,单线程处理时间变长时,无可厚非就会卡顿延迟,所以需要实现非阻塞多线程的通信模式,而Thrift已经想到,并且为我们提供好了几种Server的实现方式,以供在实际业务需求下做出合适的选择。本篇文...

2018-03-06 17:25:37 4213 3

原创 RPC远程协议之Thrift入门

RPC远程协议之Thrift入门 在上一篇文章《RPC远程协议之原理分析》中,我介绍了RPC的工作原理及欲实现RPC框架功能应该做哪些事情,因为要做的事情太多,完全由开发人员研发实现,不是很现实,所以市面上出现了诸多RPC快捷框架,目前主流的有Facebook的Thrift、谷歌的gRPC,以及Dubbo,但就性能角度考虑,Thrift相对好些,并且是跨语言的,所以这里先以Thrift的介绍开始。...

2018-03-03 20:21:47 2807

原创 RPC远程协议之原理分析

RPC远程协议之原理分析 在近几年工作中发现,功能服务化或微服务化越来越流行,逐渐成为实现中大型分布式系统架构的主要方式,而在分布式系统中的不同节点应用间的通信中,RPC远程协议扮演关键作用。实际上,在日常工作中,我们也多多少少使用过RPC协议方案,对于初级的程序员来说,RPC显得很神秘,而经验丰富些的程序员虽可使用,但对其工作原理理解的并不是很深刻,往往会误用,这里就我理解来详细介绍下。  l ...

2018-03-02 17:07:33 2510

原创 Spring整合Hibernate实现Spring Data JPA

Spring整合Hibernate实现Spring Data JPA在上一篇文章《Spring整合Hibernate实现JPA持久化》中,我们已经介绍了怎样在Spring容器中合理地集成Hibernate来实现JPA的ORM机制。但是,细心的读者会发现,上一篇文章中使用了EntityManager来直接与数据库交互,存在这一定的耦合度,更重要的是每当新增或修改新的实体Entity的管理时,都需要重复的实现EntityManager在Dao层的逻辑,有些过于模版化,重复劳动的问题存在,所以这篇文章就来介绍

2017-11-24 15:11:15 6202

原创 Spring整合Hibernate实现JPA持久化

Spring整合Hibernate实现JPA持久化本篇文章主要介绍Spring如何集成JPA的功能,并实现基本的CURD操作。JPA,全称为Java Persistence API,诞生与EJB2实体Bean之上,是一种新的Java持久化标准,也是基于POJO的持久化机制,它的设计灵感来源于Hibernate和Java数据对象(JDO)。 Maven管理软包依赖 配置实体管理器工厂 用JPA方式实现CURD

2017-11-21 13:28:25 7506

原创 Spring整合JMS异步消息

Spring整合JMS异步消息 在应用程序之间通信的消息,可分为同步消息和异步消息两种。前者就是当请求的程序端发出请求后,一直处于等待状态(阻塞),直到接收请求方反馈正确的结果后,请求方才能继续往下执行。而异步消息,则请求的程序端发出请求后,则可以继续向下执行,不需要阻塞当前流程,很多时候大大提高了用户的即时体验。当然,选择同步还是异步形式的通信,全凭应用的场景而做出合理的选择,比如:针对用户的即时操作要求较高的功能,则建议采用异步通信;而例如工作流或对即时性要求不高的功能实现,则可采用同步

2017-11-03 12:00:22 3022

原创 Nginx地址重定向使用

Nginx地址重定向使用在使用Nginx作为服务器时,经常遇到的需求就是对地址进行重定向(301重定向),而重定向可以解决很多服务器应用需求,而且Nginx实现这一切都比较简单。那么,我们常见的重定向有哪些?这里我就罗列几个常见的需求:http重定向到https、www自动补全、redirect对https的支持及动静访问分离。当然,也有很多人在使用rewrite重写地址实现重定向,但在这里并不推荐,因为它在不同的Nginx版本是有缺别的,而301是推荐使用的,因为它是http/https通信协议的标准,

2017-09-23 11:13:53 5317

原创 Nginx的CA证书使用总结

Nginx的CA证书使用总结今天给大家介绍下,在Nginx作为服务器时,网站的CA证书怎么添加?我们都知道,http方式通信是非常常见的,常用在对安全要求不高的站点的交互访问,那么对于有交易或存在敏感信息的网站,就需要我们使用http的另一变体https来替代,因为它基于http协议,并添加的ssl的安全处理,所以网站的交互数据是经过加密的,较安全,具体实现过程如下所示。

2017-09-08 14:38:17 15273

原创 网站优化篇

网站优化篇最近公司要大力推广官方网站,但是发现不论是PC网站还是手机网站的打开响应速度都比较卡顿,而每个人都知道官方网站,一般是企业对外用户打造品牌,进行宣传的第一道门,如果用户访问网站时遇到了卡顿,很多用户会选择拒绝入门,这是个大问题,所以就这个问题,我做了相关的调研和实践,已达到我们这期的要求效果。那么接下来就介绍下,优化网站的步骤及方法,供有需要的人参考。

2017-09-01 12:37:53 782 2

原创 分布式架构设计之Rest API版本管理

分布式架构设计之Rest API版本管理:随着互联网发展脚步的加快,产品项目的迭代也随之加快,所以就需要我们对产品的稳定提供一定的保障。而直接与用户接触的前端应用一般都是通过接口API与后台交互,一旦相关的API需求改版后,原来的API就不能使用,需要重新发布更新,如果前端产品是移动APP应用,比如:android/ios,那么就必须重新提交应用审核,等待若干天的审核发布是很不好的,严重影响用户的使用,所以建立API版本,使新改版的接口API不影响老版本的API使用,就显得很有必要了,那么接下来就介绍下。

2017-08-26 19:50:06 7663 5

原创 分布式架构设计之Rest API HAL

分布式架构设计之Rest API HAL在上一篇文章《分布式架构设计之Rest API》中,我对什么是Rest进行了详细的介绍,同时以书本的CRUD为例,实现了Rest API的基本操作。但是细心的读者可能会发现,所有接口返回的数据格式并不统一,没有一定的规范性,更重要的是接口通信的内容并未很明确地体现“资源”的概念,所以在这篇文章就来介绍下现在流行的HAL风格的数据格式,需要提及的是:HAL(Hypertext Application Language)是一种API数据格式风格,同时也能规范接口通信内

2017-08-15 16:06:18 4331

原创 分布式架构设计之Rest API

近几年,以资源为中心的表述性状态转移(Representational State Transfer,REST)越来越受欢迎,它完美地替代了传统的基于SOAP的Web服务方案,同时它关注的是数据的处理,而后者则关注于动作行为的处理。对于REST,常有人错误的将其视为“基于URL的Web服务”,也就将REST认为是另一种类型的远程调用(Remote Procedure Call,RPC)机制。实际上,REST与RPC几乎并没有任何关系,RPC是面向服务的,关注于行为和动作;而REST是面向资源的,关注在数据的

2017-08-05 14:07:47 4707

原创 分布式架构设计之基础软件系统架构

分布式架构设计之软件系统架构一个好的系统架构需要从三方面进行设计:首先,我们必须明确系统的整体需求功能是什么,进而再对这些需求分模块以及构建模块间的交互设计,同时要明确相关技术的选型;然后,针对物理节点上的拓扑结构是必不可少的,比如:Web Server的负载分发、数据的集群等,这部分是属于架构的“硬实现”部分;最后,就是整体的软件系统的设计,这部分是整个系统架构的“软实现”,主要从系统内部软件系统角度实现设计,比如:基础通信服务、数据安全服务等。对于前两者的设计,读者可以参考上一篇文章《分布式架构设计之

2017-07-02 17:14:58 16531

原创 Spring框架总结之Profile使用

在实际开发中,有一个比较大的挑战就是将程序从一个环境迁移或切换到另一个环境。我们知道,测试或开发环境与正式或生产环境中的某些配置是不同的,如:数据库配置、加密算法等。所以传统的做法就是每次发布或测试时,都手动修改相关配置信息,十分繁琐和低效率,并且在发布时容易忽略修改的信息导致环境切换不正确。虽然,在早期时,我们可以在服务器存放配置信息,然后通过程序动态读取配置,但这样作的效率、灵活性及安全方面不是和好,所以鉴于这些问题,Spring在3.1版引入了Bean Profile的功能,它的产生可以完美的解决上面

2017-06-25 22:58:40 13151 4

原创 Tomcat多个Web Server配置

试想下,实际项目中,我们只有一台服务器,并且在上面只部署一个Web Server服务(这里是Tomcat),我们将多个Web项目同时部署在这个Web Server中,此时,这些项目运行一切正常。而当我们调整了某个项目时,需要重新打包发布,需要重启Tomcat服务时,问题出现了:因为多个项目部署在同一个Tomcat中,重启时这些Web项目都会停止服务,等待Tomcat重启成功,恢复正常状态。此刻正在使用其中某个项目产品时,就不能访问和操作了,这是不允许的。所以,我们需要建立多个Tomcat服务,把各个Web

2017-03-26 13:17:51 1827

原创 Spring框架总结之面向切面(一)

AOP(Aspect Oriented Programming),称之为“面向切面编程”,它是Spring框架的又一核心模块,与其支持的DI功能同样处于重要地位。相比于Java传统的继承体系(柱体体系结构),AOP则实现了横向切割程序生产线,产生若干切面体,而每个切面体含有特定的横切动作、目标对象及触发动作的契机点,触发之后,在横向实现了各种方式的非业务相关的动作,将业务和非业务模块分离,一般用来处理日志、缓存、事务及其它非业务通用部分功能。而AOP的实现机制,实际上是通过代理方式实现,那么接下来从AOP的

2017-02-28 11:38:47 2976 1

原创 Spring框架总结之依赖注入(一)

DI(Depandency Injection),也叫“依赖注入”,与人也称其为“控制反转(IOC)”,而我更喜欢把它称之为DI。传统的Java对象,对其本身及关联的对象(Bean),都是自主创建和管理的,这样就导致高度耦合和难以测试的问题。而Spring框架则意识到这个问题,其提供的DI功能,可以完美的解决Bean及其依赖的Bean的创建、装配及生命周期等管理工作,这个管理机制称为“Spring容器”,也是Spring框架的核心模块。这里我会从Spring的DI原理、Bean生命周期及Bean装配三方面介

2017-02-26 14:46:02 2165

原创 RabbitMQ服务之运行管理篇

RabbitMQ服务之运行管理篇在实际使用中,我们必须要对RabbitMQ服务器进行管理,也要对其上创建的用户进行基本的权限配置和管理,以及也经常会对Rabbit服务的使用进行统计分析,接下来我们会逐一介绍它们。另外,我们知道,RabbitMQ服务是由Erlang语言所编写,一个RabbitMQ服务器实例是由Erlang节点和运行在其上的Rabbit程序所构成,一个Erlang节点上可以同时运行多个RabbitMQ程序,它们彼此之间可以通信,不论它们是否在同一个服务器上,这也是Erlang程序的特点所在

2017-01-09 14:50:57 18579 1

原创 RabbitMQ服务之键值匹配篇

RabbitMQ服务之键值匹配篇在上一篇文章中,我们介绍了RabbitMQ服务的主题订阅转发机制,该机制使接收端可以设置过滤条件,接收满足条件的类型消息,它需要接收端设置的主题条件或规则需要模糊匹配,然后接收到符合正则主题的对应消息,不清楚的同学,可以参看文章《RabbitMQ服务之主题订阅篇》。而在这里,我们继续介绍一种不常使用的转发器机制,称之为“键值匹配”。对于它的原理,这里不做赘述,在最开始的第一篇文章就已经介绍,不清的读者可以参考文章《RabbitMQ服务之入门篇》。

2017-01-06 12:24:51 2035

原创 RabbitMQ服务之主题订阅篇

RabbitMQ服务之主题订阅篇在上一篇文章中,我们介绍了RabbitMQ服务的路由转发机制,该机制使接收端可以设置过滤接收满足条件的类型消息,它需要接收端设置的路由条件或规则必须完全匹配,才能接收到对应消息,不清楚的同学,可以参看文章《RabbitMQ服务之路由篇》。而在这里,我们继续介绍一种更加灵活的转发器机制,称之为“主题订阅”。对于它的原理,这里不做赘述,在最开始的第一篇文章就已经介绍,不清的读者可以参考文章《RabbitMQ服务之入门篇》。

2017-01-05 11:49:10 1705

原创 RabbitMQ服务之路由篇

RabbitMQ服务之路由篇在上一篇文章中,我们介绍了RabbitMQ服务的发布订阅机制,也就是每个接收端都会接收到消息发送端发送的全部消息,不清楚的同学可以查看文章《RabbitMQ服务之发布/订阅》,这种方式不是很灵活,当然也要根据具体的业务需求来选择使用它。这里我们继续介绍另一种消息的转发机制,称之为“路由转发”,对应的转换器类型为“direct”,它可以让接收端可以有选择的接收自己喜欢的消息,具体的关于“direct”转发器的原理,请查看文章《RabbitMQ服务之入门篇》。

2017-01-04 12:23:35 767

原创 RabbitMQ服务之发布/订阅篇

RabbitMQ服务之发布/订阅篇在上一篇文章中,我们实现了RabbitMQ的应答、任务转发数及队列和消息的持久化操作,也就是一个消息只能发送给一个消费者,除非该消费者因意外被停掉后,才会转发给其它工作者,不清楚的同学可以回头看下《RabbitMQ服务之任务分发篇》;而在这里要介绍的是将消息发送给多个消费者,有点类似广播机制(观察者模式), 也就是在第一篇文章《RabbitMQ入门篇》中介绍的转发器,不清楚的读者可以去浏览。我们这里要说的是Fanout机制转发器,具体请往下俯看!

2017-01-03 16:24:51 1233

原创 Tomcat虚拟路径配置

Tomcat虚拟路径配置:实际项目中,我们经常需要上传下载文件,默认情况下,上传的文件是存放在Tomcat的webapps下,项目的根目录下;这样做没有问题,但是实际上,有时我们需要备份或者分割文件到其它地方时,最好将文件存放文职与Tomcat环境玻璃,所以Tomcat虚拟路径的配置很有必要了,具体操作比较简单,可以查看下面的步骤说明。

2016-12-29 13:27:33 460

原创 Zookeeper服务框架之介绍篇

Zookeeper是一种分布式服务框架,是apache hadoop的子项目,完全开源存在,它的诞生主要用来处理分布式环境中数据管理问题,比如:分布式应用程序配置、集群管理、状态同步服务及命名服务等。这里,我们以3.4.8版本为例展开介绍,其最新的版本下载可以从地址:http://hadoop.apache.org/zookeeper/ 中获取,并以java项目为例进行分析和使用Zookeeper,和以往文章一样,都是以安装配置开始!

2016-12-27 14:36:34 2774 1

原创 RabbitMQ之任务分发篇

在上一篇文章《消息队列研究之RabbitMQ入门篇》 中,介绍了关于RabbitMQ入门的第一个程序Hello World!,该程序演示了在RabbitMQ中,单个发送者和单个接收者的使用,而实际使用中,多线程环境是最为常见的,也就是同时有多个消息订阅者同时订阅,而发送者也可以同时有多个,而本篇文章就介绍下在多线程订阅时,该如何使用及注意的事项。

2016-12-17 13:49:00 2785

原创 RabbitMQ服务之入门篇

RabbitMQ是一种消息中间件,能够很好的处理来自客户端的异步消息发送及请求,将消息发送放入到服务端的队列池中,而接收端可以根据RabbitMQ配置的转发机制接收和过滤服务端转发来的消息。RabbitMQ可以根据指定的消息转发规则进行消息的转发、缓冲和持久化操作,这也是其根身立命的地方,但是其诞生的主要目的是为了均衡线程耗时操作的压力,前提是这些操作要满足没有要求即时反应,因为其不适合用在要求即时反应的需求,此时可以考虑使用缓存中间件Redis、Memcache等,另外,RabbitMQ主要用在多服务器间

2016-12-14 14:55:40 3790

原创 Maven自动热部署到Tomcat服务器

Maven自动热部署到Tomcat服务器

2016-11-06 11:35:58 7903 1

原创 Java容器研究及优化篇(一)

Java容器研究及优化篇(一)在Java环境中,一切都是以对象角色而存在,我们需要一种机制来集中管理这些对象,并对其中每个对象进行方便的插入、检索、修改及删除操作,这种机制称之为集合,也叫做容器。而我们最为常用的容器包括:List、Set、Map、Stack及Queue,它们都有各自的特性和擅长,也有不同的继承接口,内部的数据存储算法或格式也有所不同。本篇为集合研究的第一部分,主要以满足使用为前提,对常用集合的使用进行介绍;而第二部分则为深入的研究下这些集合,并在最后给出个封装的工具供参考使用。

2016-10-19 17:11:05 3311

原创 分布式架构设计之电商平台

何为软件架构?不同人的答案会有所不同,而我认为一个好的软件架构除了要具备业务功能外,还应该具备一定的高性能、高可用、高伸缩性及可拓展等非功能需求。而软件架构是由业务架构和技术架构两部分组成,因为有了业务结构才会催生出软件架构,进而来满足业务上的需求,所以,在做软件架构设计时,需要分为业务架构设计和技术软件架构设计,二者不可分离哦!那么,接下来就以本人实际工作中的电商平台为例,进行说明电商平台架构设计,因为不同行业产品系统不同业务不同,而催生的系统软件的实现要求及架构设计就不同了!

2016-10-15 16:23:43 23883 4

原创 Spring框架研究总结之SpEL

在Spring3以后,引入了强大的表达式语言-Spring Expression Language,即SpEL语言。SpEL能够在运行时构建复杂的表达式,存取对象属性,对象方法及正则表达式匹配等功能,并且其都支持XML和注解两种实现方式,其语法格式为#{SpEL Expression},并需要spring-expression这个jar包。

2016-10-09 11:32:10 4441

原创 Spring框架研究总结之AOP(二)

Spring是一个开源的企业应用框架,是一个分层架构,由7个定义稳定的模块所组成,而所有的模块都是在核心容器基础上搭建;其体系本身提供了强大的IOC(控制反转)、AOP(面向切面)以及DI(依赖注入)等较显著的功能,那么下面就来详细介绍下Spring框架的模块组成及相关特点。 AspectJ使用 AOP的例子

2016-10-06 18:26:33 956

原创 MongoDB研究总结之索引部分

MongoDB研究总结之索引部分MongoDB是由C++语言所编写的一种面向文档的非关系型数据库(是一种NoSql数据库实现),也是介于关系型数据库和非关系型数据库之间的数据存储产品,其提供了高性能、高可用、高可拓展及基于分布式存储的数据库,是非关系型数据库中功能最丰富,最类似关系型数据库的一种集合、文档格式的数据库。 覆盖查询 高级索引 全文检索

2016-10-04 16:53:40 602

原创 Spring框架研究总结之AOP(一)

AOP(Aspect-Oriented Programming),即为面向切面或方面编程,被认为是OOP(Object-Oriented Programming),面向对象编程的拓展和完善。OOP引入了继承、封装及多态等特性来搭建一种对象层次结构,是垂直方向上的层级结构;而当我们要为分散的对象引入公共行为时,OOP则显得力不从心,也就是说OOP允许你定义从上到下的逻辑关系,却不适合定义从左到右的逻辑关系,比如:异常处理,它散布在所有对象结构中,这种散布在各处的无关代码片段被称之为横切代码片段,在OOP中导致

2016-10-04 11:27:21 744

原创 MongoDB高级部分及实现(二)

MongoDB是由C++语言所编写的一种面向文档的非关系型数据库(是一种NoSql数据库实现),也是介于关系型数据库和非关系型数据库之间的数据存储产品,其提供了高性能、高可用、高可拓展及基于分布式存储的数据库,是非关系型数据库中功能最丰富,最类似关系型数据库的一种集合、文档格式的数据库。 正则使用 管理工具 固定集合 自动赠长

2016-10-03 11:58:17 1313

原创 MongoDB高级部分及实现(一)

MongoDB是由C++语言所编写的一种面向文档的非关系型数据库(是一种NoSql数据库实现),也是介于关系型数据库和非关系型数据库之间的数据存储产品,其提供了高性能、高可用、高可拓展及基于分布式存储的数据库,是非关系型数据库中功能最丰富,最类似关系型数据库的一种集合、文档格式的数据库。 文档关系 原子操作 ObjectID Map Reduce GridFS

2016-09-29 17:54:36 2768

原创 Spring框架研究总结之IOC

Spring是一个开源的企业应用框架,是一个分层架构,由7个定义稳定的模块所组成,而所有的模块都是在核心容器基础上搭建;其体系本身提供了强大的IOC(控制反转)、AOP(面向切面)以及DI(依赖注入)等较显著的功能,那么下面就来详细介绍下Spring框架的模块组成及相关特点。 框架结构 依赖注入 控制反转

2016-09-27 15:45:16 848

原创 MongoDB基础部分及实现(二)

MongoDB是由C++语言所编写的一种面向文档的非关系型数据库(是一种NoSql数据库实现),也是介于关系型数据库和非关系型数据库之间的数据存储产品,其提供了高性能、高可用、高可拓展及基于分布式存储的数据库,是非关系型数据库中功能最丰富,最类似关系型数据库的一种集合、文档格式的数据库。 索引 分析 聚合 监控

2016-09-23 11:22:14 990

原创 MongoDB基础部分及实现(一)

MongoDB是由C++语言所编写的一种面向文档的非关系型数据库(是一种NoSql数据库实现),也是介于关系型数据库和非关系型数据库之间的数据存储产品,其提供了高性能、高可用、高可拓展及基于分布式存储的数据库,是非关系型数据库中功能最丰富,最类似关系型数据库的一种集合、文档格式的数据库。 优点区别 数据模型 数据操作 语言拓展

2016-09-20 19:20:39 2960

restapi-version

该demo项目为采用SpringMVC方式,支持rest api的版本管理雏形

2017-11-17

软件依赖包(Spring AOP+Hibernate Transaction)

该软件依赖包,为实例spring aop实现Hinernate事务操作软件包

2016-10-06

模版方法模式在android中使用

模版方法模式是类的行为模式。提供一个抽象类,把一部分的逻辑以具体方法或构造子形式实现,然后声明一些抽象方法,迫使子类实现剩余的逻辑代码。不同的子类可以以不同的方式实现这些抽象方法,所以子类实现的剩余逻辑是不同的。另外,模版方法模式是基于继承机制代码复用的技术,它的结构和用法也是面向对象设计的核心。

2015-05-04

观察者模式在android中使用

观察者模式是对象的行为模式,又被叫做为模型-视图模式。这种模式定义了一种一对多的依赖关系,使多个观察者对象同时监听某个角色对象。一旦这个角色对象的状态发生了变化,就会通知所有观察者对象,使它们能够自动更新自己本身。

2015-05-03

适配器模式在android中使用

适配器模式是一种行为模式,它可以把一个类的接口转换成为另一个所期待的另一种接口,这样可以使原本因接口无法在一起工作的两个类能够在一起工作了。适配器模式有类的适配器和对象的适配器两种形式,这里只介绍对象的适配器模式(与类适配器模式类似)

2015-05-01

代理模式在android中使用

代理设计模式是对象的结构模式,原理就是给某个对象提供一个代理对象,并由代理对象来控制对愿对象的引用。在有些情况下,一方不能或不想直接引用一个对象,而代理对象可以在双方之间起到中介的作用,这样可以大大降低彼此的耦合关系,提高彼此的灵活性。

2015-04-29

策略模式在android中使用

策略模式是对象的行为模式。它的用意是针对一组算法,将每一个算法封装到具有共同接口的独立类中,从而使得它们可以相互替换。策略模式使得算法可以在不修改或影响到调用端的情况下发生变化。

2015-04-25

android中使用jni对字符串加解密实现分析demo

鉴于完全使用C/C++代码进行字符串的加解密,我们需要考虑不同系统平台上数据类型的差异问题,这里推荐另一种易于实现的方法,即使用Java中的AES加解密逻辑,而将AES加解密所需要的核心秘钥放入到C中,通过调用jni来从静态类库中读取需要的秘钥

2014-10-14

CameraAlbumSample

在手机应用程序中,使用自带的相机拍照以及相册选择喜欢的图片是最常见不过的用户需求,那么怎么合理使用相机和相册来选择照片是重要的,下面就以项目中实际需求为例进行说明,这里实现的功能如下: 1 使用相机和相册选择图片,并裁剪较小图片(常用于剪裁小图) 2 使用相机和相册选择图片,并裁剪较大图片(常用于裁剪大图)

2014-10-03

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除