- 博客(35)
- 资源 (4)
- 收藏
- 关注
原创 深入kafka设计原理-为什么选择kafka
kafka基础概念kafka应用场景kafka是LinkedIn最初设计并开源出来的分布式事件流平台, 它主要支持发布和订阅消息、持久存储消息以及追溯事件流等. kafka生态非常的成熟, 一般kafka可以有以下场景:消息系统kafka作为一种分布式发布订阅消息系统, 支持水平伸缩扩展且具备高吞吐量和高可用性. kafka具备传统消息系统的作用如应用解藕、流量削峰、异步消息等, 同时kafka还提供消息顺序性以及消息回溯等功能.流式处理平台kafka因为其可靠性可以作为流式处理系统的可
2021-08-08 11:11:41 392
原创 微服务生产实战-基于Prometheus的监控体系
Spring Cloud下基于Prometheus的监控体系当线上部署了大量的微服务后, 就会有越来越多的以下问题:1、如何快速知道某些服务实例下线?2、如何快速知道某些服务内存、CPU等异常?3、如何知道各个服务的请求量等信息?4、如何排查对应的服务异常?5、如何自定义监控元素和面板?完整的监控体系是一套生产线部署的微服务所必须组成的部分我们基于Prometheus+Grafana搭建线上的监控告警体系, Prometheus作为比较新的监控组件, 在Spring Cloud微服务
2021-07-31 22:26:10 1225
原创 微服务生产实战-Spring Cloud自定义API版本
很多大型的平台涉及到对外开放API接口或者内部终端Restful接口, 接口涉及到升级和更新后, 一般会考虑保留原有API接口, 将升级版本的API接口通过更高的版本号进行标记, 这样已有用户的客户度程序可以保持正常工作的同时, 选择某个时机升级到新版本接口.一般接口的版本设计路径大致如下:/v1/api/user/info升级后的接口如下:/v2/api/user/info如何在Spring Cloud体系中做到更加优雅的API版本管理是我们本文所要描述的重点, 一般情况我们希望通过配置...
2021-07-28 22:16:06 910
原创 微服务生产实战-Spring Cloud灰度发布和无损发布
Spring Cloud灰度发布和无损发布随着服务越来越多, 我们在实际的工作中我们会经常遇到如下问题: 1、几十上百的服务如何更好的在线上进行灰度发布, 使得部分用户能够使用最新的功能? 2、多人同环境开发或者共享部分服务的情况, 如果针对同一个服务分别进行不同逻辑的调试和验证? 3、服务在启动后突然收到大量请求会导致延时很大且业务大量失败, 如何做到服务级别的无损发布?通过灰度发布, 我们希望做到任意链路的服务都能通过灰度规则请求到, 如下图所示:灰度发布实现简述spring..
2021-07-17 10:25:19 1371 2
原创 微服务生产实战-Spring Cloud全链路上下文
实现代码详见github:https://github.com/einarzhang/spring-cloud-chaincontext经历过大量服务划分之后, 每个服务主要承担自己独立的业务模型和功能, 如何将请求串联等全链路的应用问题越来越多, 常见的场景问题如下:假如网关保存了用户的session和用户信息, 如何让后端无状态的服务知道是哪一个用户操作? 如何通过网关...
2018-11-26 22:22:42 1735 1
原创 Mybatis源码分析(二)- SqlSessionFactory和SqlSession详解
本系列以Mybatis 3.3.X分支源码作为分析源,mybatis源码Git地址:https://github.com/mybatis/mybatis-3.git。 SqlSessionFactory 作为Mybatis的应用入口,主要提供了各种获取SqlSession实例的方法。SqlSessionFactory在大部分情况下,建议在系统中生成唯一实例(读写分离、多库连接等除外)。
2016-11-15 13:19:16 3727
原创 Mybatis源码分析(一)- Configuration配置文件详解
本系列以Mybatis 3.3.X分支源码作为分析源,mybatis源码git地址:https://github.com/mybatis/mybatis-3.git。mybatis的所有配置信息都存储到org.apache.ibatis.session.Configuration类中,可通过xml配置或者手动实例化获取到Configuration信息。Configuration类中属性定义主要
2016-11-10 16:23:15 3157
原创 Android开发实例-健康食谱应用(二)
本系列文章主要介绍如何利用Android开发一个简单的健康食谱软件。用到的相关技术如下所示:提供GridView和ListView的基本使用利用universal-image-loader异步加载网络图片通过HttpClient获取网络http请求数据滑动分页加载数据软件所用的所有数据均来源于http://doc.yi18.net/cookwendang提供的食谱接口,感谢他们!
2015-04-01 15:31:27 5948 14
原创 Android开发实例-健康食谱应用(一)
本系列文章主要介绍如何利用Android开发一个简单的健康食谱软件。用到的相关技术如下所示:提供GridView和ListView的基本使用利用universal-image-loader异步加载网络图片通过HttpClient获取网络http请求数据滑动分页加载数据
2015-03-31 11:22:50 7181 15
原创 Android开发实例-高校录取分数线应用(三)
本系列文章提供简单Android应用开发实例方法,文章步骤如下所示:1 获取应用所需的数据源数据源一般来源于互联网、个人搜集或者其他方式2 应用UI设计每个应用软件都需要有一个简单的UI设计草图,便于开发者更好的实现编码3 应用实现实现完整的Android应用特此说明:本系列文章的数据源均采用互联网方式获取,仅作为示例演示 应
2015-03-25 16:23:28 1614
原创 Android开发实例-高校录取分数线应用(二)
本系列文章提供简单Android应用开发实例方法,文章步骤如下所示:1 获取应用所需的数据源数据源一般来源于互联网、个人搜集或者其他方式2 应用UI设计每个应用软件都需要有一个简单的UI设计草图,便于开发者更好的实现编码3 应用实现实现完整的Android应用特此说明:本系列文章的数据源均采用互联网方式获取,仅作为示例演示
2015-03-24 16:56:45 1292
原创 Android开发实例-高校录取分数线应用(一)
本系列文章提供一般Android应用开发实例方法,文章步骤如下所示:1 获取应用所需的数据源数据源一般来源于互联网、个人搜集或者其他方式2 应用UI设计每个应用软件都需要有一个简单的UI设计草图,便于开发者更好的实现编码3 应用实现实现完整的Android应用特此说明:本系列文章的数据源均采用互联网方式获取,仅作为示例演示
2015-03-23 11:14:04 1351
原创 js获取TextArea每一行字符串(包括自动换行符)的解决方案
js获取TextArea自动换行符是一个比较头疼的问题,本文给出了一个完美的解决方案,实现时需要注意文章中描述的几个小细节。
2013-11-20 17:39:42 42486 3
原创 amoeba源码分析(二)-amoeba模块以及源码结构分析
本系列以Amoeba 997版本分支源码(目前最新版本分支)作为分析源,amoeba源码SVN地址:http://amoeba.googlecode.com/svn/trunk。在分析源码前,需要将源码导入到Eclipse工程里面。amoeba共分为amoeba、amoeba-mysql、amoeba-memcached、amoeba-aladdin、amoeba-mongodb、amoeba-m
2013-04-08 14:00:22 3121 2
原创 amoeba源码分析(一)-AmoebaProxyServer入口类分析
本系列以Amoeba 997版本分支源码(目前最新版本分支)作为分析源,amoeba源码SVN地址:http://amoeba.googlecode.com/svn/trunk。在分析源码前,需要将源码导入到Eclipse工程里面。amoeba共分为amoeba、amoeba-mysql、amoeba-memcached、amoeba-aladdin、amoeba-mongodb、amoeba-m
2013-04-08 09:42:18 2330
原创 Android NDK编译ffmpeg
本次编译采用android-ndk-r8-linux-x86.tar.bz2和ffmepg0.11.1.tar.bxz进行编译环境:ubuntu,在其他环境类似参考链接: http://yarin.blog.51cto.com/1130898/870908 http://ericchan2012.iteye.com/blog/16250841 建
2012-08-28 10:41:43 1684
转载 完美获取Android状态栏高度
来自: http://www.cnblogs.com/LuoYer/archive/2011/11/06/2238167.html闲暇写了个单本小说阅读的应用。中间碰到了需要获取状态栏高度的问题。就像android后期版本,无法直接退出一样。找了一些方法来获取状态栏高度,结果都是为0.还好,牛人是很多的,当时,找到一段代码,能够有效的获取状态栏的高度。特此记录,备忘,以及供大家参考。
2012-08-11 15:05:42 24027 4
原创 java 对象之间属性值复制
java对象之间属性值复制在许多开源框架中也有实现,在这里介绍下自己的实现、apache commons-beanutils、Spring三种方式实现。1 自己实现。采用反射,通过源对象getter 方法获取属性值,并通过目标对象的setter方法设置到目标对象中去。没有考虑太多性能,如果需要批量或者经常性执行该操作,建议不采用此种实现。下面给出源码:/** * 利用反射实现对象之间属
2012-07-28 13:12:28 40282 1
原创 土豆开放API客户端SDK(Java版)-非官方
由于土豆SDK一直建设中,最近几天抽空写了一套java的SDK。SDK中包含所有的请求协议实现,对于oAuth认证仅提供oAuth.net的简单示例,并未在框架中实现,如有需要者请自己修改。由于个人开发,并未做太多测试,仅在example中测试了几个基本功能,如发现BUG,烦请留言,我会尽快更新解决。利用该SDK开发出的网站示例“厘米视频”www.limivideo.com。 下
2012-07-14 15:55:11 3276 1
原创 android的taskAffinity和allowTaskReparenting的用途
taskAffinity用于指定当前Activity(activity1)所关联的Task,allowTaskReparenting用于配置是否允许该activity可以更换从属task,通常情况二者连在一起使用,用于实现把一个应用程序的Activity移到另一个应用程序的Task中。 allowTaskReparenting用来标记Activity能否从启动的Task移动到ta
2011-11-15 10:08:18 14709 1
原创 Android wifi开发
这里给出一篇基本的wifi开发流程,希望对涉及到利用wifi进行网络传输的应用有一定帮助1 AndroidManifest.xml中配置 2 获取wifi服务,并开启wifiif (wifiManager == null) wifiMa
2011-11-12 17:36:07 6712 2
原创 Android 蓝牙开发详述
在AndroidSDK sample中给出了一个蓝牙聊天的示例代码,本文只是略作修改变成一个简单的服务器和客户端模式的应用,以适应在游戏开发中一对一关联的数据传输。由于游戏中的蓝牙设置在新线程中发生,所以采用Handler的方式将蓝牙的状态以及读取信息传输给显示Activity。1 开启蓝牙,包括xml中的配置: //获取蓝牙适配器BluetoothAdapter
2011-11-07 16:47:30 6262
原创 jquery zTree拖曳限制
jquery zTree 在实现拖曳时考虑了三种情况,在目标节点上、中、下。由于有些系统在使用tree的时候不需要这么复杂的功能,可以通过改jquery zTree源码进行控制。从这里可以看到区分不同拖曳的事件生成,我们可以把这三种拖曳的事件均堪称inner操作,将三句都改为mo
2011-07-27 17:05:37 5444 1
原创 设计模式之观察者模式
Observer(观察者)模式从名称也可以看出该设计模式的使用意义。当用户想让某一事物或者行为在改变时能够主动修改其他某些事物或者行为时,就需要观察者模式。观察者模式分为两种对象:观察对象和依赖观察者,当观察对象改变时,其依赖观察者也会做相应的改变。观察者设计
2011-07-04 20:37:15 756
原创 设计模式之装饰模式
<br /><br />Decorator(装饰)模式在java中有着相当广泛的应用,主要体现在I/O操作中,经常可以发现以下操作:<br />BufferedInputSteam bis = new BufferedInputStream(newFileInputStream(…));<br />装饰模式主要指通过多层封装修饰将原始类或接口的功能进行扩展,避免了许多实现类,减少了具体接口或父类的实现类数量。<br />假设:我们要完成要去打一场足球比赛,安排人员预先定好了场地和时间,后来相关负责人说需
2011-06-01 20:41:00 626
原创 设计模式之模板模式
<br /><br />模板模式即在实现之前定义一个可以作为模板的类。每个实现只需要在这个模板中填写自己特殊的实现即可。举个生活中的实例来说:每个人去餐馆吃饭要经过以下过;定位餐馆->点菜->就餐->付钱。这一系列的操作可以放置在一个模板中,然后选择具体的餐馆,点什么菜等就可以有其不同的具体实施方式。这里给出java的模板设计<br />public abstract class Eating {<br /> publicvoid process() {<br />
2011-06-01 19:31:00 603
原创 cxf 调用webservice的方式
<br />方式一:通过ClientProxyFactoryBean 调用<br />public static <T> T getService(String url, Class<T> cls) {<br /> ClientProxyFactoryBean factory = new ClientProxyFactoryBean();<br /> factory.setServiceClass(cls);<br /> factory.setAddress(url);<br /> T servic
2011-03-05 19:37:00 11846 1
原创 Hql max以及cast简单示例
<br />hql max基本语法如下:<br />String hql = "select max(p.id) from Player p";<br />Integer maxId = (Integer) playerDao.getSession().createQuery(hql).uniqueResult();<br /> <br />将某一字段转换为数字型再进行比较处理语法如下:<br />String hql = "select max(CAST(p.globalId as integer)) f
2011-02-15 18:03:00 9576
原创 外部启动OSGI以及调用OSGI插件里面的类
《OSGI原理与最佳实践》一书中已经给出了基本的方式,这里在林昊的基础上增添几行代码完成一个可用的例子: 1 首先建立几个插件工程,并导出成插件包,这里将导出的插件包统一放置到G://osgi_prj//system_bundle目录下 2 建立java project,并写一个带main方法的类,用于启动OSGI以及先前的插件 源码: public class StartOsgi { private static BundleContext context = null; /**
2011-02-14 14:56:00 5629 4
原创 cxf客户端所需最少jar包
<br />经过http://opensourceforce.org/forum/viewthread.php?tid=2626的帖子讨论,最终经过多次尝试,总结出cxf2.3.1调用ws客户端所需最少包列举如下:<br />commons-logging-1.1.1.jar<br />cxf-2.3.1.jar<br />geronimo-activation_1.1_spec-1.1.jar<br />geronimo-annotation_1.0_spec-1.1.1.jar<br />geronim
2011-02-13 16:38:00 8577 2
原创 jackson基本使用库
项目中需要用到json与java List之间的转换,在此写出来自己的方法,这里采用的是jackson。请先下载jackson相关包和apache cxf下的jettison-1.2.jar 由于没有过多的研究jackson,自己写的只是一个可行的方式。 1 新建测试pojo类 public class TestPojo { private String na
2011-02-13 15:02:00 11454 3
原创 cxf 发布webservice报 You have more than one version of 'org.apache.commons.logging.Log' visible
项目中采用cxf发布webservice,在同一osgi环境下写测试类发现能够正常运行,但经过发布成webservice后,用工程调用报如下异常: org.apache.commons.logging.LogConfigurationException: org.apache.commons.logging.LogConfigurationException: org.apache.commons.logging.LogConfigurationException: Invalid class lo
2011-02-13 12:38:00 4487 1
原创 cxf-dosgi 发布webservice
<br /> OSGI原理与最佳实践中给出了cxf-dosgi的范例,但是由于release版本发布方式有所改变。发布webservice的配置代码改为如下方式:<br /> props.put("service.exported.interfaces","*");props.put("service.exported.intents","SOAP");props.put("service.exported.configs","org.apache.cxf.ws");props.put("or
2011-02-12 12:38:00 3165 3
原创 Tuscany SCA与OSGI的结合方式
Tuscany与OSGI的结合有多种方式,这里将分一篇文章一个方式进行描述,每一种方式的示例均已Helloworld演示。大部分结构尽量与官网的sample一样。注明:请先下载Tuscany-sca-2.0-M5,并配置好JDK。我采用的是Myeclipse8.5 进行插件开发,没有打上Tuscany的开发插件。 通过在插件服务里面设置Tuscany相关配置,然后通过Tuscany运行发布服务 1 在Myeclipse8.5中新建“标准的OSGI”插件工程。 2 导入Tuscany开发包,右键单击工程,选
2010-12-23 16:28:00 2697
原创 Java Memcache基本应用
<br />Memcache的介绍有很多,这里给出如何在Java中应用Memcache的基本方法<br /><br /> 1 安装Memcache服务器(windows)<br />下载windows版Memcache安装包,如memcached-1.2.6-win32-bin.zip,解压到指定位置,比如(D://memcache),打开dos命令行,输入以下两个命令即可启动Memcache服务。<br />D:/memcache/memcached.exe -d install <br />D:/m
2010-12-08 21:54:00 14242 1
土豆SDK(Java版)-非官方
2012-07-14
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人