- 博客(25)
- 资源 (3)
- 收藏
- 关注
原创 正确处理kafka多线程消费的姿势
最近项目开发过程使用kafka作为项目模块间负载转发器,实现实时接收不同产品线消息,分布式准实时消费产品线消息。通过kafka作为模块间的转换器,不仅有MQ的几大好处:异步、解耦、削峰等几大好处,而且开始考虑最大的好处,可以实现架构的水平扩展,下游系统出现性能瓶颈,容器平台伸缩增加一些实例消费能力很快就提上来了,整体系统架构上不用任何变动。理论上,我们项目数据量再大整体架构上高可用都没有问题。...
2019-08-03 14:21:12 21501 8
原创 Groovy脚本极限优化
前段时间开发的项目,项目需求要求支持业务人员频繁业务需求变更,业务要求每次策略变更第一时间线上生效。结合项目业务需要,我们选择进行业务领域抽象,把业务变更的需求提炼成为脚本操作,每次业务人员对业务的操作变成为业务域的逻辑操作,针对业务流程上的不同需求变更就变成一条条脚本规则的动态变更。 因为团队主要开发语言是java,我们调研了QL Express 和 Groovy等脚本,最终选...
2019-07-20 16:06:49 4363 1
原创 大数据准实时流式系统设计(一)——基于大数据框架设计
前段时间负责了公司一个新的项目,项目不属于直接面向用户的线上实时响应系统,要求做到尽快毫秒级或者秒级响应的准实时系统。结合以前学习的一些大数据理论方面和参与的准实时系统方面的经验,对准实时系统架构设计做个自我总结。对我理解的准实时系统做个定义,一种区别线上实时响应系统,也不同于离线跑批系统时效滞后性,通常实时数据量还偏大,要求最快毫秒级或者秒级响应的系统形式。 一般准实时系统还要求,支持水平伸...
2019-12-22 21:59:35 1970
原创 Java Web开发小锦集
1.SpringBoot 配置mybatis 打印sql日志application.yml# 调试mybatis日志使用logging: level: com.*.*.common.dao: DEBUG # dao指接口文件说在包。2.Kafka用户权限认证 (网上查了老半天,怎么配置带用户认证的spring-kafka配置)https://www.cloudk...
2019-11-20 19:26:08 222
原创 多线程并发访问之 Semaphore、CountDownLatch
今天业务需求开发需要开发一个洗数据的小功能,大致业务是有百万级别的数据需要清洗,需要开发一个小功能,循环遍历百万数据调用一个服务接口清晰数据。考虑到接口的并发量,访问量不能太大, 整了一两个小时做了一个并发控制的小程序。public static class CleanTask implements Runnable { private static Semaphore semaphor...
2018-06-07 16:41:31 451
原创 数据结构与算法-LeetCode练习二分查找应用
LeetCode 153. Find Minimum in Rotated Sorted Array 查找循环排序数组的最小元素(循环排序数组可以理解,一个环状数组(0,1,2,4,5,6,7),从其中一个元素断开后4,5,6,7,0,1,2)。查找一个数组的最小原始,我们知道最简单的方式就是循环遍历其中数字,时间复杂度O(n)肯定能找到这个元素。
2015-08-30 13:35:31 1221
原创 HTTP学习笔记(一)报文和连接管理
对TCP/IP协议簇有些了解的同学们应该都知道,TCP/IP协议通过精简ISO网络7层协议(其实了解历史渊源的话,TCP/IP协议本来目的并不是简化ISO的7层协议,只是因为ISO协议簇制定速度慢于互联网通信技术发展的速度,TCP/IP协议已经被各大厂商私下广泛商用化,ISO网络通信标准才制定完成,所以,鉴于已经广泛应用的TCP/IP协议已经成为各大通信商的实际默认标准,ISO只能作为理论研究标准来
2015-08-22 14:55:55 3239 2
原创 一步步完全解析AsyncTask
做个Android开发的同学们应该都用过AsyncTask,通过继承AsyncTask类实现异步操作,反馈当前异步执行的进度,最后执行的结果反馈给UI主线程。我们在开发中使用AsyncTask,因为它的主要优点使用简单方便、不用关系和主线程交互逻辑和执行过程可控,当然还可以支持取消。说完AsyncTask的优点,下面我们来数数AsyncTask的几宗罪。
2015-07-30 23:13:58 2549 3
原创 说说View的绘制流程(一)
在我们的Android项目开发过程中,相信大家肯定会涉及到对View流程绘制的相关开发(比如:自定义控件)。本文试着从源码(Android 10,我们之所以选择API 10源码,是为了尽量减少一些主题无关的复杂性,便于理解和阅读)角度,,试着总结下关于View的绘制流程。 说起View的绘制过程,本文从Activity的创建过程开始到View被触发绘制流程。我们知道,当用户启动一个Activity时(比如通过startActivity调用),AMS(Activity Manager Service)
2015-05-31 19:46:28 1645
原创 说说Android LRU缓存算法实现笔记(二)--LRU的应用
上一篇文章说说Android LRU缓存算法实现学习笔记(一) 中我们介绍了最常用的实现LRU缓存的数据结构LinkedHashMap,这一节我们会针对LinkedHashMap的数据结构的特性,来自己实现缓存结构和学习Android源码和项目中对缓存的完善。上一篇说到对于缓存实现,我们很重要的会考虑以下几点:1.访问速度;2.逐出旧的缓存策略;3.最好还能考虑到一定的并发度。
2015-02-26 23:30:34 2589
原创 说说Android LRU缓存算法实现学习笔记(一)
在我们的手机应用开发时候,我们经常会遇到大数据访问的时候,我们通常会考虑以下几个方面的情况。一、手机内存的限制还必须保证应用反应的流畅;二、尽量小的流量消耗,不然,你的应用流畅度再好体验再好,用户还是会毫不犹豫的卸载掉你的应用。大数据量访问的情况下,数据缓存是我们一定会考虑到的解决方案。而作为缓存,我们很重要的会考虑以下几点:1.访问速度;2.逐出旧的缓存策略;3.最好还能考虑到一定的并发度。这篇我们主要说说LRU策略的缓存算法实现,我们就用图片缓存为例来谈谈Android应用开发中的缓存实现。
2015-02-14 09:42:28 2653 2
原创 Android事件分发学习应用-图片轮播实现
前一篇写到Android事件分发机制学习笔记,下面我们通过一个实例的应用来实践理解下Android事件分发的机制。我们这里来实现一个图片的轮播功能,最后顺便实现下图片的自动轮播。我们的图片轮播是封装在一个ViewGroup里,当我们进行横向滑动的时候,我们需要阻止事件从ViewGroup往子控件分发,ViewGroup来消费我们当前的滑动图片何去何从。下面我们贴出我们的封装的ViewGroup的代码实现如下......
2015-02-11 19:52:37 1570
原创 Android事件分发机制学习笔记
关于Android的事件分发机制,一直想系统的整理下思路写下来。刚好最近在看github上封装的仿QQ的列表的滑动效果的项目(SwipeListView)源码,作者对嵌套的布局滑动事件进行处理来区别上下滑动和左右滑动针对不同控件的响应。对Android的事件分发机制的理解,我们结合View和ViewGroup的事件分发一起来了解,就能比较全面了解。首先,我们来学习事件从Activity......
2015-01-28 22:55:51 1271 1
原创 从求数组Top N个数开始说起的求数组的若干问题笔记
随便百度看到有博客关于求数组的最大N个数的问题的文章,想起好像在编程之美上有这么一道题,好多天没有练练数据结构的题目,就从求数组的最大K个数说起。关于这道题目编程之美提供了很多种算法,此处受插入排序的启发,提供一种改进的插入排序算法如下,最坏时间复杂度为O(n * m),空间复杂度为1.提供实现代码如下:
2015-01-12 21:29:34 1443
原创 Android 实现图片缓存异步加载框架学习笔记
最近想把Android异步加载实现原理的理解整理下,学习了郭林大神的关于内存缓存和硬盘缓存的系列博客,自己也想写写自己看完博客后的收获。先推荐郭大神的这篇博客Android照片墙完整版,完美结合LruCache和DiskLruCache,针对郭大神的这篇博客,我写了一个Demo做了些封装实现。首先将封装出一个异步加载的图片加载类ImageAsynLoadView,代码实习如下:
2015-01-11 17:50:01 1441
原创 求两个数组的交集和并集
晚上闲来无事,想起前两天查资料时候,看到别人一篇博客标题关于数组的交集和并集,晚上也随便写写,权当督促自己坚持经常练习练习写写小Demo。如下,先来一段求有序数组的交集的代码,代码如下:
2014-12-23 19:08:31 7868
原创 Java多线程学习笔记—线程停止
在我们平时实际开发中我们不可避免会使用到多线程,停止运行中的线程是不可避免的会在我们的项目中遇见过。关于线程的停止,我所知道的分两种情况来处理: 1. 一种停止处于运行态的多线程; 2.一种可停止处于阻塞状态的多线程停止。
2014-12-07 21:03:24 1195
原创 Java多线程学习笔记—从Map开始说说同步和并发
在Java的关于Map集合中,我们经常会比较Hashtable和HashMap的区别。其中一点是区别关于线程安全,我们知道Hashtable是线程安全的,HashMap是非线程安全的。本文从Hashtable开始讨论说起关于Map的线程安全。通过源码我们知道:
2014-12-06 16:58:19 5516 1
原创 Java多线程学习笔记--生产消费者模式
实际开发中,我们经常会接触到生产消费者模型,如:Android的Looper相应handler处理UI操作,Socket通信的响应过程、数据缓冲区在文件读写应用等。强大的模型框架,鉴于本人水平有限目前水平只能膜拜,本次只能算学习笔记,为了巩固自己对Java多线程常规知识点的理解,路过大神还望能指导指导。下面一段代码是最常规的生产者消费者的例子:
2014-12-06 01:35:00 1188
原创 Java多线程学习笔记——从Java JVM对多线程数据同步的一些理解
我们知道在多线程编程中,我们很大的一部分内容是为了解决线程间的资源同步问题和线程间共同协作解决问题。线程间的同步,通俗我们理解为僧多粥少,在粥有限情况下,我们怎么去防止大家有秩序的喝到粥,不至于哄抢都没得喝。线程讲协作,我们可以理解为我们在医院看病的时候,我们要先挂号,才能看病。现在医院有很多病人排队,怎么协调病人都有秩序的先挂号,后看病。本篇文章的重点不在此,也不是在此一下子能分析完,我们先从Java JVM的角度来理解多线程的一些方面。
2014-12-02 15:50:17 1434
原创 Java泛型学习笔记--Java泛型和C#泛型比较学习(一)
总结Java的泛型前,先简单的介绍下C#的泛型,通过对比,比较学习Java泛型的目的和设计意图。C#泛型是C#语言2.0和通用语言运行时(CLR)同时支持的一个特性(这一点是导致C#泛型和Java泛型区别的最大原因,后面会介绍)。C#泛型在.NET CLR支持为.NET框架引入参数化变量支持。C#泛型更类似C++模板,可以理解,C#泛型实际上可以理解为类的模板类。我们通过代码实例来看C# 2.0泛型解决的问题,首先,我们通过一个没有泛型的迭代器的代码示例说起,代码实现如下:
2014-12-02 15:50:15 929
原创 内部排序一
闲来无事,复习下数据结构的常用内部排序,利用下午的时间,随便写了选择、快速排序、内部排序的实现,虽然常用数据结构算法原理还是挺简单,可以完成写出来还是费了一些工夫。此处贴出代码,仅作自己的随手联系之用。 public class Program { public static void main(String[] args) { // TODO
2014-12-02 15:50:10 920
原创 对进度条的通用封装实现
一直想写点啥对最近的工作做个总结,由于项目比较忙,可能还有自己的各种理由推脱有点懈怠,零碎的总结过一些,都没有动笔写下来过。眼看2013都要过去了,该写点啥来总结下。先从自己对进度封装的一点学习经验写出来,供大家交流,欢迎园子里的朋友不吝啬的拍砖。 首先定义对进度表示的契约,定义进度行为(IProgressor)、进度信息(IStepProgress)和中断处理(ITrackC
2014-12-02 15:50:02 1163
原创 C# Finalize/Dispose资源清理模式
由于最近在准备找工作,也从图书馆借了一本.net 程序员面试的“宝典”,本人一直也是不信什么程序员秘技、宝典,但是也不偏激,一本书至少是别人的经验的,多少还是能收益的。我也就利用零碎的时间常常翻阅看看的,看到关于析构函数和资源清理的时候,发现自己对里面的机制和原理不是很明白的,查阅一些资料后,写下自己的理解的。 C#的析构函数 与c++的析构函数不同,C#的析构...
2014-12-02 15:49:59 973
原创 异步编程模式学习
最近,在学习C#多线程编程,也看了园子里的很多大牛的关于多线程的文章,梳理下自己的思路,也总结下异步编程模式的学习。 很喜欢Jimmy Zhang的文章风格,在刚刚学习委托和事件的时候,Jimmy的文章的由浅入深的写作对我对委托和事件的学习的帮助很大。我也学这个Jimmy的文风,和大家交流下。废话不多说的,通过一个抛12点的小游戏的例子进入正题。 没有异步模式的多线程实现
2014-12-02 15:49:53 984
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人