转载请标明出处: http://blog.csdn.net/lmj623565791/article/details/47396187: 本文出自:[张鸿洋的博客] 一.概述 中间拖了蛮长时间了,在上一篇我们介绍了ViewDragHelper,详情:ViewDragHelper完全解析,当然了,上一篇都是小示例的形式去演示代码功能,并不能给人一种实用的感觉.那么,本篇博客就准备实用ViewDragHelper来实现一个DrawerLayout的效果,当然了,大家也可以选择直接去看Drawerla…
前情回顾 前文我们完成了日志采集系统的日志文件监控,配置文件热更新,协程异常检测和保活机制. 本节目标 本节加入kafka消息队列,kafka前文也介绍过了,可以对消息进行排队,解耦合和流量控制的作用,为什么一定要用kafka呢?主要原因就是在日志高并发读取后,如果直接将消息发给前端或者写入数据库,会造成崩溃或者卡死.kafka可以对消息进行排队和减轻压力,这样无论以后将这些消息录入数据库也好,传给前端分析也好,都能保证系统稳定性.代码我们也写过和测试了,只需要将之前写好的kafka读写消息代码…
前情回顾 前文我们完成了如下功能1 根据配置文件启动多个协程监控日志,并启动协程监听配置文件.2 根据配置文件热更新,动态协调日志监控.3 编写测试代码,向文件中不断写入日志并备份日志,验证系统健壮性. 本节目标 我们旨在编写一个健壮性较强的日志监控系统,不得不考虑这样一个问题,当某个日志监控协程崩溃或者异常退出,该如何处理?我的想法是当监控日志文件的协程异常退出时,在主协程复活这个异常退出的协程,使其继续工作,这样极大的增强了系统的稳定性. 借尸还魂,增加异常处理 我们在tailf.go的Wa…
前情回顾 前文我们完成了如下目标1 项目架构整体编写2 使框架支持热更新 本节目标 在前文的框架基础上,我们1 将之前实现的日志监控功能整合到框架中.2 一个日志对应一个监控协程,当配置热更新后根据新配置动态关闭和启动协程.3 编写测试代码,模拟向文件中不断写入日志,并备份日志,观察监控功能是否健壮. 增加协程监控日志文件 我们将之前实现的日志监控功能整合到现有框架,文件结构如下logdir为存储日志的文件夹,模拟不同系统记录的日志.实际生产中不同系统会自己记录日志并保存在指定文件夹中,logd…
前文中已经完成了文件的监控,kafka信息读写,今天主要完成配置文件的读写以及热更新.并且规划一下系统的整体结构,然后将之前的功能串起来形成一套完整的日志采集系统. 前情提要 上一节我们完成了如下目标1 完成kafka消息读写2 借助tailf实现文件监控,并模拟测试实时写文件以及文件备份时功能无误. 本节目标 1 编写系统结构,在主函数中加载配置2 管理配置文件,实现热更新 实现文件管理,支持热更新 golang中vipper库提供了配置文件的读取和监控功能,我们可以监控配置文件从而实现热更新…
日志统计系统的整体思路就是监控各个文件夹下的日志,实时获取日志写入内容并写入kafka队列,写入kafka队列可以在高并发时排队,而且达到了逻辑解耦合的目的.然后从kafka队列中读出数据,根据实际需求显示网页上或者控制台等. 前情提要 上一节我们完成了如下目标1 配置kafka,并启动消息队列.2 编写代码向kafka录入消息,并且从kafka读取消息. 本节目标 1 写代码从kafka中读取消息,保证kafka消息读写功能无误.2 借助tailf实现文件监控,并模拟测试事实写文件以及文件备份…
项目结构 本系列文章意在记录如何搭建一个高可用的日志采集系统,实际项目中会有多个日志文件分布在服务器各个文件夹,这些日志记录了不同的功能.随着业务的增多,日志文件也再增多,企业中常常需要实现一个独立的日志采集系统,实时采集各个日志信息,并记录和输出到控制台或网页上,方便监控和查询.本文日志采集系统架构如下 日志采集系统监控各个日志文件,当日志文件有日志录入时,日志采集系统实时获取日志内容并下入kafka队列中,之后可以实现Web端从kafaka取出信息,并前端显示.也可以将kafka的信息控制台…
来源:http://blog.csdn.net/harvic880925/article/details/50995268 一.自定义控件三部曲之动画篇 1.<自定义控件三部曲之动画篇(一)——alpha.scale.translate.rotate.set的xml属性及用法>2.<自定义控件三部曲之动画篇(二)——Interpolator插值器>3.<自定义控件三部曲之动画篇(三)—— 代码生成alpha.scale.translate.rotate.set及插值器动画&g…
作者: AigeStudio  http://blog.csdn.net/aigestudio 说明:文中的1/12表示12篇中的第1篇, 1/6=2/12表示12篇中的第2篇,其它类似. 自定义控件其实很简单1-初识自定义控件 你只管在里面做你想做的事情就可,至于Android本身内部是如何实现的,你压根不用去管!Just do you things! 初学者不懂如何去自定义View并非是不懂其原理,而是不懂这些类似“档位”的方法! 自定义控件其实很简单2-Paint全解(1) 颜色过滤器Co…
概述 2013年谷歌i/o大会上介绍了两个新的layout: SlidingPaneLayout和DrawerLayout,现在这俩个类被广泛的运用.我们知道在我们实际的开发中往往会涉及到很多的拖动效果,而ViewDragHelper解决了android中手势处理过于复杂的问题. 其实ViewDragHelper并不是第一个用于分析手势处理的类,gesturedetector也是,但是在和拖动相关的手势分析方面gesturedetector只能说是勉为其难,其拓展性并不好. 为了方便大家的理解,…