自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

某先生的专栏

记录一些东西

  • 博客(100)
  • 资源 (4)
  • 收藏
  • 关注

原创 Spring Actuator源码分析

Spring Actuator源码分析Actuator EndpointActuator模块通过Endpoint暴露一些接口,可以是Rest方式,也可以是JMX等其他方式.如果使用Rest方式,通常SpringMVC是使用@RequestMapping,以及@Controller标注一个控制器方法,如果不使用SpringMVC,即没引入SpringMVC的包,那么Springboot就会出错.所以为

2015-12-03 21:13:59 4571

翻译 使用Elasticsearch,Kafka和Cassandra构建流式数据中心

在过去的一年里,我遇到了一些软件公司讨论如何处理应用程序的数据(通常以日志和metrics的形式)。在这些讨论中,我经常会听到挫折感,他们不得不用一组零碎的工具,随着时间的推移将这些数据汇总起来。这些工具,如: - 运维人员使用的,用于监控和告警的工具 - 开发人员用于跟踪性能和定位问题的工具 - 一个完整独立的系统,商业智能(BI)和业务依赖其分析用户行为虽然这些工具使用不同的视角,适用不同

2015-12-03 21:08:22 5791 2

翻译 使用Netflix Hystrix编写弹性可容错的应用程序

弹性指的是在复杂网络环境下,面对各种故障和挑战,仍能提供和维持一个可以接受的服务水平,并正常运作。 -来自Wikipedia自从长期服务和最近的微服务被大家熟知和使用,很多应用程序开发人员已经将整体式的API,转换成简单的、功能单一的微服务。然而,这样的转换,导致为了保证一致的响应时间和弹性,依赖关系变得不可用时,造成额外的损耗。例如,一个单体式的web应用程序,执行一次重试,在一定程度上是弹性的

2015-12-03 21:07:00 9524

原创 Spring Boot自动配置源码

Spring Boot自动配置源码SpringBoot初始化上下文环境SpringBoot会从META-INF/spring.factories文件中加载Initializers,Auto ConfigureInitializers用于加载配置(Environment) Auto Configure用于自动配置类如果是web类型的工程,SpringBoot会创建EmbeddedWebApplica

2015-11-27 12:00:19 8708

原创 关于GhostDriver的Cookie隔离问题

关于GhostDriver的Cookie隔离问题GhostDriver包括了Java驱动phantomjsdriver,PhantomJS WebDriver,详细的不再赘述。看上一片文章。Java用phantomjsdriver时,碰到需要Cookie隔离问题,同一个网页,多个RemoteWebDriver会共享同一个Cookie。比如想要并行登陆并执行操作,这样是不行的。PhantomJS We

2015-02-11 11:29:57 3148

原创 PhantomJS其他语言调用

PhantomJS其他语言调用我本身是使用Java语言的,所以会考虑phantomjs如何与java交互。目前考虑方案有如下两种:1. Java Process抓取逻辑还是用Javascript,封装成JS脚本,用Java Process去调用和管理每个Phantomjs的进程,但是多开进程,估计对机器性能要求比较高。而且Java只能通过phantomjs的标准输出,来判断脚本执行情况。2.Phan

2015-02-08 22:05:17 4744

原创 Phantomjs,Casperjs重要的概念:执行顺序

Phantomjs,Casperjs重要的概念:执行顺序Phantomjs和Javascript一样,是基于消息驱动的。代码的执行都是异步化的。 要理解phantomjs的代码执行是基于一个step栈。在执行脚本时,会将所有step压入栈。 wait,then,open,等这些都是一个step。 举几个例子:casper.wait(1000,function() { do1}do2

2015-02-08 17:23:23 4009 1

原创 Java在Linux下如何维持大量链接

修改用户进程可打开文件数限制在Linux平台上,无论编写客户端程序还是服务端程序,在进行高并发TCP连接处理时,最高的并发数量都要受到系统对用户单一进程同时可打开文件数量的限制(这是因为系统为每个TCP连接都要创建一个socket句柄,每个socket句柄同时也是一个文件句柄)。可使用ulimit命令查看系统允许当前用户进程打开的文件数限制:[speng@as4 ~]$ ulimit

2014-12-12 16:10:10 1968

原创 ServiceLoader服务提供者模式,实现动态插件加载,类责任链模式

EditServiceLoader服务提供者模式,实现动态插件加载,类责任链模式ServiceLoader的功能比ClassLoader简单,它可以帮我们获取所有实现了某接口或基类的类。当然前提是ClassLoader已经加载过的类。举个例子:定义一个接口:public interface IService { public String sayHello(

2014-12-04 14:21:24 4367 2

原创 Linux Shell的锁:flock

Linux Shell的锁:flock在写分布式系统的时候,需要同步进程之间的调用顺序。我的需求是,多个进程同时要在一个maven工程中编译打包接口。通过new一个Process去跑一个Shell脚本,Shell脚本会将接口源代码拷贝到Maven工程,运行打包命令并将打包好的Jar包移动到对应进程的Classpath下。当然也可以通过为每个进程拷贝一份maven打包工程,来绕过这个

2014-11-25 17:56:21 8746

原创 Java时间:GMT以及UTC

EditJava时间:GMT以及UTCGMT即格林威治标准时间,以英国伦敦郊区皇家格林威治天文台的标准时间。世界被分为24个时区。而北京在东八区UTC即世界协调时间,以格林威治时间为准,经过平均太阳时等修正后,以秒为单位的国际原子时所综合计算而成的时间。所以UTC比GMT更加精准。Java Date使用UTC时间,如Tue Nov 11 16:59:08 CST

2014-11-12 11:16:10 12132

原创 Java操作Mongo

Java操作Mongo// 创建连接MongoClient mongoClient = new MongoClient(Arrays.asList(new ServerAddress("localhost", 27017), new ServerAddress("localhost", 27018),

2014-11-12 11:08:38 4035

原创 MongoDB入门概念

MongoDB入门概念Mongo的一些概念:documents:类似json的数据结构,是最基础的存储单位,如:{ name : "mongo" }collection:每个collection下面可以有很多个不同的documentscursor:每个查询都会返回cursor,用于迭代获取每行结果数据#进入shellbin/mongo#查看当前数据库db#查看所有数

2014-11-12 11:07:45 995

原创 Java Metrics

Java MetricsJava Metrics是一个功能比较强大的java统计库,它的输出组件也很强大,帮我们做好了:输出到Ganglia输出到控制台输出到JMX输出Json详细见:dropwizard.github.io/metrics/依赖添加依赖,如gradle: compile "io.dropwizard.metrics:metrics

2014-10-24 10:33:52 8311 4

原创 Flume数据传输事务分析

Flume数据传输事务分析本文基于ThriftSource,MemoryChannel,HdfsSink三个组件,对Flume数据传输的事务进行分析,如果使用的是其他组件,Flume事务具体的处理方式将会不同。一般情况下,用MemoryChannel就好了,我们公司用的就是这个,FileChannel速度慢,虽然提供日志级别的数据恢复,但是一般情况下,不断电MemoryChannel是不会

2014-09-30 14:59:48 11277 2

原创 Actor生命周期理解

Actor生命周期理解镇图:Actor内功心法图Actor的生命周期可以用Hooks体现和控制,下面是默认的Actor Hooks的方法,我们可以选择性的进行重写:def preStart(): Unit = ()def postStop(): Unit = ()def preRestart(reason: Throwable, message: Option[Any]

2014-08-27 19:22:04 10328 1

原创 Akka相关概念理解

Akka相关概念理解Actor适用Actors可以替代:一个线程一个对象或者组件一个callback或者listener一个单例或者服务一个路由转发者,负载均衡器,池一个Java EE的session bean或者事件驱动bean创建很多的Actors:Actors不像线程一样重,可以把它们当做轻量级的对象来看为每个请求创建一个actor?没问题为处理一

2014-08-26 11:23:31 5268

原创 IDEA跑Tomcat异常

IDEA跑Tomcat异常具体异常如下Artifact :war exploded: Server is not connected. Deploy is not avail根据别人的回答,去掉tomcat/bin下的setenv.*文件即可。原因是该脚本里含有set JAVA_OPTS=-server -Xmx768m -XX:MaxPermSize=256M

2014-08-23 11:10:01 52571 31

原创 scala的类与类型

scala的类与类型类和类型List和List类型是不一样的,但是jvm运行时会采用泛型擦除。导致List和List都是Class.为了得到正确的类型,需要通过反射。泛型擦除Java中的泛型基本上都是在编译器这个层次来实现的。在生成的Java字节码中是不包含泛型中的类型信息的。使用泛型的时候加上的类型参数,会在编译器在编译的时候去掉。这个过程就称为类型擦除。泛型擦除

2014-08-08 15:35:48 14359 1

原创 Akka学习笔记(七):配置

Akka学习笔记(七):配置使用Akka可以不用任何配置,Akka提供了明智的默认配置。为了适应特别的运行环境,修改默认行为,你可能需要修改:log level and logger backendenable remoting消息系列化路由设置调度器调优Akka使用Typesafe Config Library,纯java实现的配置库。之前博客有介绍过here从哪

2014-08-07 16:42:49 15326 1

原创 Akka学习笔记(六):消息传递可靠性

Akka学习笔记(六):消息传递可靠性一般规则关于消息发送,有两条基本规则:最多一次,即不保证消息传递可靠性message ordering per sender–receiver pair消息传递机制最多一次,意味消息有可能丢失最少一次,保证消息传递可靠,但可能冗余保证只成功一次,性能最差,消息成功传递,不冗余为什么不保证传递可靠性问题是,

2014-08-07 16:42:13 6098

原创 Akka TestKit测试包的使用

Akka TestKit测试包的使用TestKit,测试类必须继承几个接口:class SendingActor01Test extends TestKit(ActorSystem("testsystem")) //TestKit创建testsystem用于测试 with WordSpecLike //可以用must,in等语句描述测试方法 with MustMatchers

2014-08-07 16:41:50 6419

原创 Akka学习过程的疑问

- actor要如何分解才合适,在一个JVM上随意为每个功能启动多个actor?那远程actor一般作为其中的一个功能还是服务?- actor和线程的关系actor数和线程数不是一一对应的。2.7 million actors占1GB内存. 而1GB内存只能运行4096个线程.奥秘在于Actor直接可以复用线程。Actor和线程是不同的抽象,他们的对应关系是由Dispa

2014-08-07 16:41:25 2456

原创 Akka学习笔记(五):Akka与Java的内存模型

Akka学习笔记(五):Akka与Java的内存模型Akka简化了编写并发软件的过程,本文主要讨论Akka如何在并发应用中访问共享内存。Java内存模型Java5之前的JMM是相当混乱的。多线程访问共享内存很有可能会得奇怪的结果,如:可见性问题,无法及时看到其他线程写入的值指令乱序,观测到其他线程不可能的行为从Java 5的JSR 133的实现,很多问题就解

2014-08-07 16:39:29 6341

原创 Hive与Hbase整合

Hive与Hbase整合我们这边开始使用hbase做实时查询,但是分析的任务还是得交给hive,hive计算的结果导入到hbase.hive提供了几个jar包,帮助我们实现:创建与hbase共享的表,数据(表两边都有,数据只在hbase)映射来自hbase的表到hivehive查询的结果直接导入hbase启动hive启动命令如下,主要是指定jar包,以及hbas

2014-08-07 16:20:16 1903

原创 Logistic Regression 分类算法

Logistic Regression 分类算法Logistic Regression包含三个部分:回归,线性回归,Logistic方程1) 回归Logistic regression是线性回归的一种,线性回归是一种回归。那么回归是虾米呢?回归其实就是对已知公式的未知参数进行估计。比如已知公式是y=a∗x+b,未知参数是a和b。我们现在有很多真实的(x,y)数据(训练样

2014-07-28 16:53:58 3128

原创 Akka学习笔记(三):什么是Actor

Akka学习笔记(三):什么是Actor上一节讲到actor是actor system最基本的单元。这一节详细的讲讲actor.更详细here。actor是一个拥有state,behavior,mailbox,children,supervisor strategy的容器.Akka保证所有actor都只运行在自己的轻量级线程,并一次处理一个消息,这样程序员就不用处理同步、竞态A

2014-07-28 16:53:48 4697

原创 Akka学习笔记(二):Actor Systems

Akka学习笔记(二):Actor Systems图中表示的是一个Actor System,它显示了在这个Actor System中最重要实体之间的关系。什么是actor,是一个封装了状态和行为的对象,每个actor都通过message交流,从自己的mailbox中读取别的actor发送的消息。注意:ActorSystem是重量级的对象,会创建1...N个线

2014-07-28 16:53:07 16985 2

原创 Akka学习笔记(四):监督和监控

Akka学习笔记(四):监督和监控Supervision是什么supervision表示actors之间的关系。监督者分配任务给下属,因此需要处理反馈的错误。根据不同的错误,监督者supervisor可以做如下操作:恢复下属,让下属继续运行,继续接收message。当且仅当下属还可以正常运行重启下属,清空status。一般是第一条情况中,child的异常导致无法正常运行。关

2014-07-28 16:51:51 7767

原创 Akka学习笔记(一):创建Hello World工程

Akka学习笔记(一):创建Hello World工程创建工程使用IDEA,创建SBT工程,在build.sbt中添加akka依赖:name := "My Project"version := "1.0"scalaVersion := "2.10.4"resolvers += "Typesafe Repository" at "http://repo.typesaf

2014-07-28 16:49:59 6513

原创 Coursera Scala 5-5 List:Reduction of Lists

Coursera Scala 5-5 List:Reduction of Lists另一个list常用的操作是:连结集合元素。例如sum(list)ReduceLeft使用ReduceLeft可以很方便的编写通用的连结方法def sum(xs: List[Int]) = (0 :: xs) reduceLeft ((x,y) => x+y)def product(xs

2014-07-11 16:52:45 878

原创 Coursera Scala 5-3:Implicit

Coursera Scala 5-3:Implicit归并排序上一节课的排序函数不够通用,类型只适用Int:object mergesort{ def msort(xs: List[Int]):List[Int] = { val n = xs.length/2 if(n==0) xs else{ d

2014-07-11 16:52:04 962

原创 Coursera Scala 5-2:Pairs和Tuple

Coursera Scala 5-2:Pairs和Tuplepair: (x,y)scala> val (label,value) = (1,"s")label: Int = 1value: String = sscala> (1,"s")res0: (Int, String) = (1,s)超过两个元素的就是tuple了(T1,....,Tn)是Scala.Tu

2014-07-11 16:50:55 1033

原创 Scala的foldLeft和foldRight

Scala的foldLeft和foldRightFoldLeft定义如下: override /*TraversableLike*/ def foldLeft[B](z: B)(f: (B, A) => B): B = { var acc = z var these = this while (!these.isEmpty) { acc

2014-07-11 16:50:16 13725 1

原创 Coursera Scala 5-4:List的高阶函数

Coursera Scala 5-4:List的高阶函数Recurring Patterns for Computations on Lists重复出现的Lists计算模式lists的很多函数有相似的结构,重复出现的模式有:用某个方法转换每个元素用某个条件提取元素用某种方法链接元素函数式编程语言,让程序员能写出更通用的计算模式,通过使用高阶函数。Ap

2014-07-11 16:49:39 1195

原创 Coursera Scala 4-3:子类型和泛型

Coursera Scala 4-3:子类型和泛型Type Boundsdef assertAllPos[S ](r: S): S = ...S S >: T表示S是T的父类也可以这么用:[S >: NonEmpty <: IntSet]协变covariant这个的意思是:如果List是convariant的,Scovariant带来

2014-07-11 16:49:17 2098

原创 Coursera Scala 2-5,6:类

Coursera Scala 2-5,6:类class Rational(n: Int, d: Int) { require(d != 0) private val g = gcd(n.abs, d.abs) //将构造器传入的参数,赋值成成员变量,外部才可以访问 val numer = n / g val denom = d / g def this(n: Int)

2014-07-11 16:47:53 816

原创 Coursera Scala 4-7:Lists

Coursera Scala 4-7:ListsListsval nums = List(1,3,4)val empty = List()val fruit = List("apples","oranges")val diag3 = List(List(1,0,0),List(0,1,0),List(0,0,1))immutableList是递归的,arrays则不是

2014-07-11 16:47:14 697

原创 Coursera Scala 4-6:模型匹配

Coursera Scala 4-6:模型匹配匹配值val times = 1times match { case 1 => "one" case 2 => "two" case _ => "some other number"} List(('a',1), ('b',2), ('a',1)) match { case Nil => printl

2014-07-11 16:46:55 871

原创 Coursera Scala 4-1:函数作为对象

Coursera Scala 4-1:函数作为对象Functions Types Relate to ClassesScala是纯粹的面向对象的语言,函数是拥有apply方法的对象。函数类型A=>B等价于:package scalatrait Function1[A,B]{ def apply(x:A):B}Functions Values Ralate

2014-07-11 16:45:50 905

android图片滤镜代码

非jni实现,效率会低,但是不影响,原理是对矩阵上的点做RPG数值处理(好像是这样哈)

2012-10-11

mars第四季代码

集合了最新的所有mars老师android教程第四集的代码,分享给大家学习用

2012-05-13

android照片滤镜代码

一个用jni实现的滤镜代码,效率非常高。用于编辑照片。

2012-04-26

android自定义拍照功能代码

android自己定制照相机的功能,可以用作例子,或者修改了自己用、

2012-04-26

空空如也

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

TA关注的人

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