- 博客(53)
- 资源 (1)
- 收藏
- 关注
原创 docker新版的实践(一:docker-compose)
这几个月,工作闲时,看看技术贴,突然发现docker又火了,从去年上海运维架构师大会上docker布道师马全一谈述docker的发展未来,到今年个大公司的实践:tencent为代表的巨头和蘑菇街为代表的新企业以及doacloud为代表的技术派创业公司。重新看官网,docker又发布了很多新的工具。今天实践一下docker-compose. 成功的例子 : http://139.196.164.1
2015-11-22 16:12:54 768
原创 httpcore和httpclient的源码一点点(1)
因为需要重写自己github上以前的项目(“eat my dog food”),进行一次彻底的技术上的”寻根究底”. 项目中使用了爬虫获取数据,后台接入了多个爬虫的数据源,这前写这些爬虫的时候,有大量的逻辑是重复的,于是,第一件事情便是抽象出一个简单的java爬虫框架(后期可以使用go和python),采用spring类似的机制: 获取配置文件,扫描项目,获取注解,整个框架只需要用户处理respo
2015-11-01 08:32:03 2437
原创 基于scrapy的开发
还是暑假前工作的总结 : 因为要对搜狐页面进行可用性总结,所以得写一段代码。 毫无疑问,爬虫是首选。这里使用了scrapy 但是,scrapy并不能很好的解决我的问题,scrapy的爬取日志不符合我的需要,我需要对redirect行为进行记录,对404等异常进行处理,如果采用黑盒的方法进行基于scrapy的开发,显然不能符合我的需求,于是改代码。成果:使用了布隆过滤器过滤已经
2015-10-14 22:11:04 611
原创 关于chrome插件的开发
使用chrome插件开发做的什么做了哪些怎么做github地址使用chrome插件开发做的什么? 闲着无聊,自己用chrome做了一个插件开发,是用来阅读卫报的英文新闻的。做了哪些 阅读卫报英文文章,点击插件的按钮,自动跳转到纯文章的页面,鼠标扫描单词,可以得到单词的意思和发音怎么做 使用chrome的content_script获取页面数据,传递给background进行l
2015-10-14 21:32:49 564
原创 spring boot 框架下的redis缓存问题
最近负责公司的项目架构,需要使用缓存,最终使用redis,但是在 网上baidu、google了很久,始终没有找到redis缓存的比较好的解决方案,spring-io的网站框架sagan虽然也给了解决方案,但是总觉得和官方给的redis cachemanager不是很好的搭配(sagan自己设计了一个cachemanager),而网上的搭配并没有可以直接使用的东西,探索的结果最终如下:(可能随着sp
2015-10-13 15:36:14 3604
原创 to-do
暑假实习了三个月,收获很多了技术,也看了项目相关的技术栈:sentry、mako模版、kestrel、redis-py , 后两个的源代码阅读简要的写了一下,前两个mako是关于解释器、翻译器的,sentry是日志收集和报告框架,在senty中,组成很多:auth、 buffer、 cache、 config、 db、 filter、 interface、 locale本地化、 middlewa
2015-09-04 08:56:30 398
原创 kestrel源代码阅读
kestrel 是 twitter 用scala写的消息队列,代码简短精炼,对于scala的学习还是很有增益的,随便提升一下自己Scala功底,代码是开源的,在twitter的github上(ps : 顺便可以关注一下twitter的Scala技术栈 ) 学习前,先看一下特性呗: kestrel的三个连接协议(memcache、thrift、text),可配置的journal的持久化
2015-09-04 08:38:40 880
原创 关于redis的python客户端程序
redis也算是一个老东西了,2012就已经广泛使用了,目前公司实习的时候,整体的项目架构也使用redis存储hot news之类的,最近乘着放假,把源代码分析了一遍,大概的写一下。 阅读代码的时候,主要分成两个看: redis-py : python 写的客户端 hiredis : c语言实现的客户端 为了提升python的客户端运行速度,当然首先选择hired
2015-09-03 22:35:35 600
原创 Dubbo源码阅读体会(一)
Dubbo是阿里巴巴提供的开源的SOA服务化治理的技术框架,据说只是剖出来的一部分开源的,但一些基本的需求已经可以满足的,而且扩展性也非常好,通过spring bean的方式管理配置及实例,较容易上手且对应用无侵入 从服务模型的角度来看,Dubbo采用的是一种非常简单的模型,要么是提供方提供服务,要么是消费方消费服务,所以基于这一点可以抽象出服务提供方(Provider)和服务消费方(Co
2015-06-08 19:23:05 3511
原创 Kafka源码和文档阅读与体会(二)
今天讲 涉及到Kafka中的Metrics 性能度量 的设计Kafka 中的metrics 使用了 Yammer Metrics 在github上的内容 :https://github.com/dropwizard/metricshttps://github.com/codahale/metricsmaven中的位置http://repo1.maven.org/maven2/com/y
2015-06-06 15:12:31 756
原创 Kafka源码和文档阅读与体会(一)
新的一天,新的技术今天的技术,先讲解Kafka的内容,再结合源码细细品味带着问题去理解>Kafka是什么、做什么>Kafka的设计Kafka是什么、做什么 kafka是一个分布式、分区、副本提交的日志服务,它提供了一个消息系统的功能 , 但是有独特的设计 (官方 : Kafka is a distributed, partitioned, replicated commit log
2015-06-06 13:48:27 1207
原创 androidUI那些事(四)
今天分析了小红书的第二版的开源代码,现在写下来,省的忘了。第二版的动画中,引导界面有三个,第四个为登陆界面,引导界面布局整体一致,中央区域的动画变化。引导界面中,有图片区域的动画、文字区域的移动、指示圈的移动和一个跳过按钮。在实现源代码中,将引导界面和登陆界面做成了viewpager的两个fragment进行管理,在引导界面中,放置图片的viewpager、文字的viewpager、指示器的list
2015-06-01 12:35:38 505
原创 内存那些事(一)
开学的时候,就跟同学说,会跟他们讲讲内存的管理,可惜,一直忙着项目的转接手续和实习招聘,并没有得到机会认认真真的准备一个资料给他们,今天,就一个一个写过去吧。 [ps:这个是给自己看的] 先规划一个总体的内容: (一)概述 linux的内存管理 语言的内存管理(c/c++、java、python、go) 容器的内存管理(netty、nginx)linux的内
2015-05-31 11:42:56 510
原创 个人发展(职业规划)
实习招聘已经过去了,经历了重重考验,笔试、面试,回想一下,最让我值得思考的事情,应该就是个人的职业规划了。 所谓一名即将成为工程师的我,以后的路到底怎么走? 管理大师?技术大咖?得过且过的小职员? 恩,先走技术,在走管理吧,技术的路是走不完的,每天新技术不断涌现,像海水一样,乘着年轻,凭借着那股热情,好好在玩几年技术,毕竟从初三和计算机编程因缘而节,就从没有想过哪一天完
2015-05-31 10:03:25 1575
原创 androidUI那些事(三)
第一次转载,试着玩玩[置顶] Android中的canvas介绍 分类: Android开发 2013-05-17 15:25 6014人阅读 评论(0) 收藏 举报 目录(?)[-] 如何获得一个Canvas对象 canvas可以绘制的内容 Canvas的保存和回滚 一个画图需要四大基本要素: 1、一个用来保存像素的Bitmap; 2、一个Canvas画布,绘制Bitmap操作;
2015-05-31 09:42:09 473
原创 andoirdUI那些事(二)
今天讲讲androidUI中的toolbar和actionbar和drawerlayout的设计今天需要实现什么效果呢?侧边栏侧边栏的开源已经很多了,可以参考github上大量项目自己实现一个 使用actionbar+drawelayout,结果抽屉总是在actionbar在下面 使用toolbar+drawlayout,抽屉可以全屏了,随便还可以实现内容区域增加一个slidingmenu这里记
2015-05-28 13:00:14 469
原创 androidUI那些事(一)
这几天,闲来没事,突然想到android有许久没做了,于是,这几天就看看androidUI的设计细节吧,也算是提高。 —-前记第一天:底部菜单栏 打开微信、QQ、搜狐、新浪等android的手机a
2015-05-28 10:20:58 523
原创 关于如何将n(n<2的16次方)转变为2的幂
突然想到了这个问题,问了一下周围的人,竟然没有人回答出来,我这里就给一个官方的实现吧 private static int powerOfTwo(int res) { if (res <= 2) { return 2; } res--; res |= res >> 1
2015-04-28 19:05:36 818
原创 重读<java并发编程实践>
有些东西,不写下来了,时间长了,就忘了~—谨记逝去的那份技术记忆 这次是读第二遍了,相比第一遍,读起来熟练了很多,技术细节也能有点想法了,期待更进一步吧 除了《ava核心技术》和《Thinking in java》,java程序员更应该看看这本书,而且java并发编程的很多知识点和罗列的问题和我们学习过的“操作系统”是一致的,而且市面上凡是涉及到java和线程内容的,讲述的内容和这本书都很
2015-02-28 09:15:34 602
原创 Java线程机制
快开学了,作为大三的老油条,得赶紧写大二同志们的培训内容了,现在这里打点草稿吧。先看一下线程池的内容:线程池int count = ??? //自己定义一个吧//long startTime System.currentTimeMillis();final List<Integer> l = new LinkedList<Integer>();ThreadPoolExecutor tp =
2015-02-26 18:39:46 509
原创 读书摘要
年也过完了,树也看完了,这里列一下书单,以自勉: 软件集成策略 —董越 [电子工业出版社] 单元测试的艺术 —Roy Osherove [人民有点出版社] 这本书虽然讲的是C#,但是测试原理和准则是相通的,里面介绍了不少好的工具 自动化测试最佳实践 —
2015-02-26 09:06:54 626
原创 学习设计模式的书籍
终于把23中设计模式的blog写完了,这里把我学习设计模式的书籍列一下: * 《设计模式之禅》 * 《研读设计模式》 * 《大话设计模式》 * 《Head First 设计模式》 * 《设计模式 可复用面向对象软件的基础》 * 《深入分析java Web技术内幕》,讲解开源框架的时候,附带了一些设计模式 * 《深入剖析Tomcat》作为开源框架,其本身肯定少
2015-02-25 22:02:52 693
原创 几个工厂模式和门面模式
设计模式中最搞的就是简单工厂模式、抽象工厂模式、工厂方法·和门面模式 先看一下他们的定义吧: 简单工厂: 定义 : 提供一个创建对象实例的功能,而无需关心其具体实现。被创建实例的类型可以是接口、抽象类,也可以是具体的类。 结构与说明: Api:定义客户需要的功能接口
2015-02-25 21:27:41 1709
原创 访问者模式
定义 表示一个作用于某个对象结构的各元素的操作。他是你可以在不改变元素的类的前提下定义作用于这些元素的操作结构与说明 Visitor : 访问者接口,为所有的访问者申明一个visit的方法,用来代表为对象结构添加的功能 ConcreteVisitor : 具体的访问者实现对象,实现visit中的方法 Element : 抽象元素对象,即被访问的对象,通常会回调访问者的真实功能,
2015-02-25 20:20:06 410
原创 迭代器
定义 提供一种方法顺序访问一个聚合对象中的各个元素,而又不需要暴露该对象的内部表示结构与说明 Iterator : 迭代器接口 ConcreteIterator :具体的迭代器是西安对象 Aggregrate : 聚合对象,定义创建相应迭代器对象的接口 ConcreteAggregrate : 具体的聚合对象。实现创建相应的迭代器对象实现 由于迭代器的设计模式太常见
2015-02-25 19:41:25 416
原创 解释器模式
定义 给定一个语言,定义她的问法的一种文法表示,并定义一个解释器,这个解释器使用该标识来解释语言中的句子结构与说明 AbstractExpression : 定义解释器的接口 TerminalExpression : 终结符解释器,用来实现语法规则中和终结符相关的操作,相当于组合模式中的叶子节点 NonterminalExpression : 非终结符解释器,用来实现语法规则中
2015-02-25 19:30:13 355
原创 备忘录模式
定义 在不破坏封装行的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。这样以后就可以将对象恢复到原先保存的状态。结构与说明 Memento : 备忘录。用来存储源发器对象的内部状态 Originator : 源发器。使用备忘录保存某个时刻源发器自身的状态,也可以使用备忘录恢复内部状态 Caretaker : 备忘录管理者,负责存储备忘录对象,以及对备忘录对象的检查
2015-02-25 16:50:50 430
原创 享元模式
定义 运用共享技术有效的支持大量细粒度的对象结构与说明 Flyweight : 享元接口 ConcreteFlyweight : 具体的享元独享 UnSharedConcreteFlyweight : 非共享的享元实现对象 FlyweightFactory : 享元工厂,用来创建并管理共享的享元对象 Client : 客户端实现 具体的例子就不给了,再享元模式
2015-02-25 16:24:46 384
原创 生成器模式
定义 讲一个复杂对象的构建与它的表示相分离,使得同样的构建过程可以创建不同的表示。结构与说明 Builder: 生成器接口,定义创建一个Product对象所需要的各个部件的操作 ConcreteBuilder : 具体的生成器,用于实现各个部件的创建,并负责组装Product Director : 指导者,主要用于统一构建过程,管理Builder接口 Product :
2015-02-25 15:50:57 372
原创 桥梁模式
定义 将抽象部分与她的实现部分分离,使他们都可以独立的变化。结构与说明 Abstraction : 抽象化的角色。定义出该角色的行为,同时保存一个对实现化角色的引用 RefinedAbstraction : 修正抽象化角色。对抽象化角色的行为进行修正 Implementor:实现化角色,定义为接口或抽象,定义角色必须的行为和属性 ConcreteImplementor:具
2015-02-25 15:05:30 363
原创 组合模式
定义 将对象组合成树形结构以表示“整体-部分”的层次结构。组合模式使得用户对的单个对象和组合对象的使用具有一致性。结构与说明 Component : 抽象的属性组件 Leaf : 叶子节点对象 Composite : 组合对象节点 Client : 客户端,装配整个树实现//透明模式的组合模式public abstract Component{ public
2015-02-25 14:32:59 379
原创 中介者模式
定义 用一个中介对象来封装一系列的对象交互。中介者使的各个对象不需要显示地相互引用,从而时期耦合松散,而且可以独立的改变他们之间的交互。结构与说明 Mediator : 中介者接口 ConcreteMediator : 具体的中介者对象 Colleague : 同事类的定义,通常定义为抽象类,实现对象的公共功能(比如,对中介者的持有)实现//常规的实现方式,省略日志记录/*
2015-02-25 13:56:28 440
原创 责任链
定义 使多个对象都有机会处理请求,从而避免请求的发送者和接收者之间的耦合关系。将这些对象连成一条链,并沿着这条链传递该请求,知道有一个对象处理它为止。结构与说明 Handler : 定义职责的接口(定义处理请求的方法、后继链) ConcreteHandler :实现职责的类(处理请求和继续转发) Client : 指责链的客户端,将请求提交给链上的具体对象,由职责链处理。实现
2015-02-25 13:09:53 416
原创 命令设计模式
定义 将一个请求封装为一个对象,从而使你可用不同的请求对客户进行参数化,对请求排队或记录请求日志,以及支持可撤销的操作结构与说明 Command : 抽象的命令接口 ConcreteCommand : 具体的命令实现 Receiver : 命令的接受者,真正执行命令的对象 invoker : 调用者,持有命令和命令的触发者 Client : 组装命令对象和接受者
2015-02-25 10:37:04 309
原创 策略模式
定义 定义一系列的算法,把他们一个个封装起来,并且使他们可相互替代。结构与说明 Strategy : 策略接口 ConcreteStrategy : 具体的策略 Context : 上下文,与具体的策略进行交互实现 在spring中,抽象策略AopProxy,两种策略实现Cglib2AopProxy、jdkDynamicAopProxy,ProxyFactoryBean代
2015-02-25 10:19:58 353
原创 装饰器模式
定义 动态的给对象添加一些额外的职责,就增加功能来说,装饰器模式比生成子类更为灵活。结构与说明 Component : 组件对象的接口 ConcreteComponent : 具体的组件对象 Decorator : 所有装饰器的父类 ConcreteDecorator : 具体的装饰器 实现 个人比较喜欢奶茶组合计费的例子(见书<<大话设计模式>>),这里还是看ja
2015-02-25 09:51:19 349
原创 适配器模式
定义 将一个类的接口编程客户端所期待的另一种接口,从而使原本因接口不匹配而无法一起工作的两个类能够在一起工作结构与说明 Target : 目标接口 Adaptee : 源角色 Adapter : 适配器,实现目标接口实例这个不细讲适配器模式。在java I/O 库中,就有大量的实例,其中,InputStreamReader实现了Reader的接口,但是需要传入InputStr
2015-02-25 09:12:27 371
原创 原型模式
定义 用原型实例指定创建对象的种类,并通过拷贝这些原型创建新的对象结构与说明 Prototype : 申明一个克隆自身的接口 ConcretePrototype : 实现Prototype接口的类 Client : 使用原型的客户端实现 在java的世界中,有一个Cloneable的接口来实现原型,代码如下 : public class ConcretePrototyp
2015-02-25 08:53:20 361
原创 状态模式
定义 允许一个对象在其内部状态改变时改变他的行为,对象看起来似乎修改了它的类。结构和说明 State : 状态接口 ConcreteState : 具体状态接口 Context : 上下文,java实现 个人比较喜欢电梯的那个例子和模拟工作流的例子(这两个很经典),这个使用电梯的例子 : public abstract class LiftState{ pro
2015-02-24 22:54:49 328
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人