- 博客(67)
- 资源 (1)
- 收藏
- 关注
原创 Spark MLLib简介
Spark MLLib MLMachine Learning Data ScienceSteps in a Machine Learning ProgramRecommandation EngineFraud DetectionSpark MLlibSpark ML Data PipelinesML Pipeline ComponentsSpark MLLib & MLSpark机
2016-10-16 21:22:13 2120
原创 行为模式之命令模式
命令模式命令模式把一个请求或者操作封装到一个对象中。命令模式允许系统使用不同的请求把客户端参数化,对请求排队或者记录请求日志,可以提供命令的撤销和恢复功能。构成1、客户端(Client)角色:创建一个具体命令(ConcreteCommand)对象并确定其接收者。2、命令(Command)角色:声明了一个给所有具体命令类的抽象接口。3、具体命令(ConcreteCommand)角色:定义一个接收者和行
2016-10-16 20:45:20 438
原创 设计模式之六大原则
设计模式的六大原则。1 开闭原则一个软件实体如类、模块和函数应该对扩展开放,对修改关闭。在软件的生命周期内,因变化、升级和维护对原有代码进行修改,可能会引入错误。所以当软件需要变化时,通过扩展软件实体的行为来实现变化,而不是修改原有代码。2 里氏代换原则任何基类可以出现的地方,子类一定可以出现。里氏代换原则是继承复用的基石,只有当衍生类可以替换掉基类,软件单位的功能不受到影响时,基类才能真正
2016-10-13 22:22:31 367
原创 行为模式之策略模式
策略模式(Strategy)定义一系列的算法,把它们一个个封装起来,并且使它们可相互替换。本模式使得算法可独立于使用它的客户而变化。1.Strategy:策略接口,用来约束一系列具体的策略算法。Context使用这个接口来调用具体的策略,实现定义的策略。2.ConcreteStrategy:具体的策略实现,也就是具体的算法实现。3.Context:上下文,负责与具体的策略交互,通常上下文会持有一个真
2016-10-13 22:19:47 383
原创 行为模式之观察者模式
观察者模式(Observer)对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。构成1.抽象主题(Subject)角色:把所有对观察者对象的引用保存在一个集合中,每个抽象主题角色都可以有任意数量的观察者。抽象主题提供一个接口,可以增加和删除观察者角色。一般用一个抽象类和接口来实现。2.抽象观察者(Observer)角色:为所有具体的观察者定义一个接口
2016-10-13 22:18:20 364
原创 行为模式之模板方法模式
模板方法模式(Template Method)定义一个操作中算法的框架,而将一些步骤延迟到子类中,使得子类可以不改变算法的结构即可重定义该算法中的某些特定步骤。 让子类可以重写方法的一部分,而不是整个重写,你可以控制子类需要重写那些操作。模板方法模式是编程中经常用到的模式,其非常简单,AbstractClass叫抽象模板,其方法分为3类:1.抽象方法:父类中只声明但不加以实现,而是定义好规范,
2016-10-13 22:17:17 302
原创 结构型模式之适配器模式
适配器模式(Adapter Class/Object)是指将一个接口转换成客户端希望的另外一个接口,该模式使得原本不兼容的类可以一起工作。适配器有4种角色:1.目标抽象角色(Target):定义客户所期待的使用接口。(GVI接口)2.源角色(Adaptee):需要被适配的接口。(HDMI接口)3.适配器角色(Adapter):把源接口转换成符合要求的目标接口的设备。(HDMI-VGI转换器)4.客户
2016-10-13 22:16:04 283
原创 结构型模式之外观模式
外观模式(Facade)为子系统中的一组接口提供一个一致的界面,Facade模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。隐藏系统的复杂性,并向客户端提供了一个客户端可以访问系统的接口。降低访问复杂系统的内部子系统时的复杂度。在客户端和复杂系统之间再加一层,将调用顺序、依赖关系等处理好。举个例子:我们经常用的电脑,开机其实是个非常复杂的过程,而我们只需要按开机按钮就可以了。外观模式优点
2016-10-13 22:14:10 310
原创 结构型模式之装饰器模式
装饰器模式(Decorator)对客户透明的方式动态地给一个对象附加上更多的责任,同时又不改变其结构。装饰模式可以在不使用创造更多子类的情况下,将对象的功能加以扩展。 关键: 不创建子类,扩展对象功能1.抽象构件(Component)角色:给出一个抽象接口,以规范准备接收附加责任的对象。2.具体构件(ConcreteComponent)角色:定义一个将要接收附加责任的类。3.装饰(Decora
2016-10-13 22:12:28 376
原创 创建型模式之建造者模式
建造者模式(Builder)与抽象工厂的区别:在建造者模式里,有个指导者(Director),由指导者来管理建造者,用户是与指导者联系的,指导者联系建造者最后得到产品。即建造者模式可以强制实行一种分步骤进行的建造过程。建造者模式四要素:1.产品类Product:一般是一个较为复杂的对象,也就是说创建对象的过程比较复杂,一般会有比较多的代码量。2.抽象建造者类Builder: 将建造的具体过程交与它的
2016-10-13 22:05:14 240
原创 创建型模式之抽象工厂模式
抽象工厂模式(Abstract Factory)为创建一组相关或相互依赖的对象提供一个接口,而且无需指定他们的具体类。抽象工厂是工厂模式的升级版,他用来创建一组相关或者相互依赖的对象。来看下抽象工厂模式的类图:类的创建依赖工厂类,程序需要扩展时,我们必须创建新的工厂类。工厂类是用来生产产品的,那我们也可以把“工厂类当成我们要生产的产品”,所以抽象工厂就是“工厂的工厂”,即生产工厂的工厂。抽象工厂的优
2016-10-13 21:58:34 270
原创 创建型模式之工厂方法模式
工厂方法模式(Factory Method)定义一个用于创建对象的接口,让子类决定实例化哪一个类,工厂方法使一个类的实例化延迟到其子类。构成1.很多工厂都有一些相同的行为,比如汽车工厂。我们需要抽象这些相同的行为成接口,每个工厂都实现这个接口。2.生产相同的产品每个工厂所使用的方法可能不同,所以具体如何生产产品由具体工厂实现。工厂模式两要点:1.工厂接口是工厂方法模式的核心,与调用者直接交互用来提供
2016-10-13 21:56:50 271
原创 排序算法之桶排序
桶排序算法思想桶排序的思想是把[0,1)划分为n个大小相同的子区间,每一子区间是一个桶。然后将n个记录分配到各个桶中。因为关键字序列是均匀分布在[0,1)上的,所以一般不会有很多个记录落入同一个桶中。由于同一桶中的记录其关键字不尽相同,所以必须采用关键字比较的排序方法(通常用插入排序)对各个桶进行排序,然后依次将各非空桶中的记录连接(收集)起来即可。 最坏情况时间复杂度:当分布不均匀时,全部元素
2016-10-11 16:53:33 464
原创 排序算法之堆排序
堆排序算法思想n个关键字序列Kl,K2,…,Kn称为(Heap),当且仅当该序列满足如下性质(简称为堆性质):(1)ki<=k(2i)且ki<=k(2i+1)(1≤i≤ n/2)即父节点小于等于左孩子和右孩子,当然,这是小根堆,大根堆则换成>=号。 - k(i)相当于二叉树的非叶子结点,K(2i)则是左子节点,k(2i+1)是右子节点 - 若将此序列所存储的向量a[1..n]看做是一棵完全二叉树
2016-10-10 14:18:38 358
原创 Combined Approaches
Preparing dataText extraction is an early step in most NLP tasks. Here, we will quickly cover how text extraction can be performed for HTML, Word, and PDF documents. Although there are several APIs tha
2016-10-09 10:07:23 328
原创 Using Parser to Extract
Parsing Parsing is the process of creating a parse tree for a textual unitA parse tree is a hierarchical data structure that represents the syntactic structure of a sentence.Parsing is used for many
2016-10-09 10:06:12 561
原创 Classifying Texts and Documents
How Classification is usedClassifying text is used for a number of purposes:Spam detectionAuthorship attributionSentiment analysisAge and gender identificationDetermining the subject of a document
2016-10-09 10:04:38 356
原创 Detecting Part of Speech--POS
POSThe tagging processImportance Of POSPOS The context of the word is an important aspect of determining what type of word it is.The tagging processTagging is the process of assigning a descripti
2016-10-09 10:03:25 624
原创 Finding People and Things--NER
Named Entity RecognitionWhy NER is difficultTechniques for name recognitionRegular Expressions for NERNamed Entity RecognitionThe process of finding people and things is referred to as Named Entity
2016-10-09 10:02:26 390
原创 Finding sentences--SBD
Sentence Boundary DisambiguationSBDThe SBD ProcessWhat makes SBD difficultTraining a Sentence Detector Modelusing training modelevaluate modelSentence Boundary Disambiguation(SBD)The SBD ProcessT
2016-10-09 09:59:15 366
原创 Finding parts of Text--Tokenization
TokenizationUses of tokenizersSpecifying the delimiterUnderstanding normalizationTokenizationTokenization is the process of breaking text down into simpler unitsFor most text, we are concerned with
2016-10-09 09:28:53 278
原创 NLP with Java---Overview
Overview of text processing tasksUnderstanding NLP modelsPreparing DataOverview of text processing tasksFinding Parts of Text–>split/tokenizationFinding Sentences–>Sentence Boundary Disambiguation
2016-10-09 09:27:05 319
转载 JVM之内存中的对象模型
这里说HotSpot虚拟机中的对象转自这里:原文连接对象的创建一个简单的创建对象语句Clazz instance = new Clazz();包含的主要过程包括了类加载检查、对象分配内存、并发处理、内存空间初始化、对象设置、执行ini方法等。主要流程如下:java对象创建流程---1.加载---2.连接 | ---2.1验证 | --- 文件格式验证 --- 元数据
2016-09-22 01:01:07 352
原创 JVM之锁的优化
自旋锁Spinning锁消除锁粗化轻量级锁偏向锁对象内存布局JDK 1.5 到 JDK 1.6的一个重要改进,便是高效并发。此时实现了各种锁优化技术,为了高效地在线程之间共享数据,解决竞争问题,从而提高执行效率。适应性自旋锁(Adaptive Spinning)锁消除(Lock Elimination)锁粗化(Locking Coarsening)轻量级锁(Lightweight
2016-09-22 00:57:20 590
原创 JVM之线程安全、原子性实现
定义线程安全2 状态依赖线程的安全度1 不可变Immutable2 绝对线程安全3 相对线程安全4 线程兼容5 线程对立实现线程安全的方法1 同步11 阻塞同步互斥同步12 非阻塞同步Java原子操作的实现13 无同步方案1.定义线程安全 当多个线程访问一个对象时,如果不用考虑这些线程在运行时环境下的调度和交替执行,也不需要进行额外的同步,或者在调用方法进行任何其他的协
2016-09-22 00:50:59 1624
原创 JVM之线程实现
线程1 实现线程的方式11 使用内核线程实现12 使用用户线程实现13 用户线程加轻量级进程混合实现2 Java的线程实现并发不一定要依赖多线程,PHP中有多进程并发。但是,Java里面的并发是多线程的。1. 线程参考:Java多线程之基本概念线程是比进程更轻量级的调度执行单位。线程可以把一个进程的资源分配和执行调度分开。一个进程里可以启动多条线程,各个线程可共享该进程的资源(内存地址,文
2016-09-22 00:46:13 1784
原创 Spark MLlib之矩阵
Spark MLlib的底层组件BLAS/LAPACK层LAPACK是用Fortran编写的算法库,顾名思义,Linear Algebra Package是为了解决通用的线性代数问题。算法包BLAS(Basic Linear Algebra Subprograms),其实LAPACK底层使用了BLAS库Netlib-java对BLAS/LAPACK封装的Java接口层Breezescala编
2016-09-19 13:24:34 4323
原创 JVM之内存构成(二)--JAVA内存模型与并发
物理机中的并发硬件效率与一致性Java线程执行的内存模型工作内存主内存内存间交互long和double的非源自性协定Volatile类型变量的特殊规则和语义保证可见性禁止指令重排优化高效并发的原则可见性有序性和原子性先行发生Happens-Before这部分内容,跟并发有关我们知道,多任务处理,在现代操作系统几乎是必备功能。让计算机同时去做几件事情,不仅因为CPU运算能力太强大
2016-09-19 13:05:29 2699 1
原创 JVM之再谈类加载
类的生命周期加载Loading连接Linking验证Verification准备Preparation解析Resolution初始化Initialization类加载器类加载器类加载机制 总体上说,虚拟机把描述类的数据,从字节码文件加载到内存,然后进行数据校验、转换解析、初始化,最终形成可以被寻积极使用的Java类型,这就是虚拟机的类加载机制。与C/C++在编译时,需要连接不
2016-09-19 12:48:36 305
原创 JVM之执行引擎
运行时栈帧结构方法调用动态语言支持字节码解释执行引擎虚拟机是如何执行方法里面的字节码指令的基于栈的指令集和基于寄存器的指令集编译优化技术Javac编译过程分为哪些步骤即时编译器JIT热点代码优化技术类型代表性优化技术公共子表达式消除数组边界检查消除方法内联逃逸分析Java与CC编译器Execution Engine是虚拟机的核心组成之一虚拟机和物理机的区别是什么?这两
2016-09-19 12:16:15 5050 2
原创 JVM之类文件结构
Class类文件的结构魔数Magic Number与Class文件的版本Version常量池Constant Pool访问标志Access Flags类索引父类索引与接口索引集合This ClassSuper Class Interfaces字段表集合Fields方法表集合Methods属性表集合Attributes字节码指令加载和存储指令运算指令对象创建与访问指令操作数栈管
2016-09-17 11:42:51 338
原创 JVM之内存分配与回收策略
对象优先在 Eden 分配大对象直接进入老年代长期存活对象进入老年代动态对象年龄判定空间分配担保Java技术体系提倡的自动内存管理,最终,可以归结为自动化解决两个问题给对象分配内存回收分配给对象的内存给对象分配内存,大方向上,是在堆上分配,但也可能经过JIT编译后,被拆散为标量类型,并间接地栈上分配对象主要分配在新生代的Eden区域,如果启动了本地线程分配缓冲,将按线程,优先在Thr
2016-09-11 10:22:52 560 1
原创 JVM之GC收集器
垃圾收集器Serial收集器Serial Old收集器ParNew收集器Parallel Scanvenge收集器Parallel Old收集器CMSConcurrent Mark SweepG1收集器GC收集器的选择吞吐量优先的并行收集器响应时间优先的并发收集器垃圾收集器串行收集器 Serial开头的 SerialSerial Old(MSC)并行收集器 Paralle
2016-09-11 10:02:22 2124
原创 JVM之GC算法和种类
垃圾收集算法可达性分析算法强引用StringReference软引用SoftReference弱引用WeakReference虚引用PhantomReference引用计数算法Reference Counting标记-清除算法Mark-Sweep复制算法Copying标记-整理Mark-Compact分代收集算法Generational CollectionHotSpot的算法实
2016-09-11 10:00:21 2828
原创 JVM之对象引用
强引用StringReference创建对象,并把对象赋给一个引用变量,程序通过这个引用变量来操作对象,对象和数组都采用了强引用。一个对象被一个或以上引用变量引用,则处于可达状态,不会被GC软引用SoftReference要用java.lang.ref.SoftReference实现内存空间足够时,不会被GC;否则,可能会被GC常用于对内存敏感的程序中get()获取引用的对象弱引用W
2016-09-11 09:58:39 264
原创 JVM之常用JVM配置参数
Trace跟踪参数-verbose:gc-XX:+printGC打印GC简要信息[GC (Allocation Failure) 3344K->1296K(9728K), 0.0004129 secs][GC (Allocation Failure) 3344K->1296K(9728K), 0.0003914 secs][GC (Allocation Failure) 3344K->1
2016-09-11 09:49:07 632
原创 JVM之Java内存区域(一)
JVM构成JVM包括两个子系统和两个组件。两个子系统为: class loader(类装载)Execution engine(执行引擎)两个组件为: Runtime data area(运行时数据区)Native interface(本地接口)Class loader功能根据给定的全限定名类名(如:java.lang.Object)来装载class文件到Runtime data are
2016-09-11 09:48:34 305
原创 Java多线程之同步容器与并发容器
同步容器VectorHashtableCollections.synchronziedXX并发容器ConcurrentMap基於Hashtable,段Segement,最大16個把粒度分細,每個段有自己的鎖共享變量用volatile關鍵字,第一時間獲得修改數據。從主內存讀取,不從工作內存讀取CopyonWrite容器JDK有兩種COW容器CopyOnWriteArrayListCopyOnWri
2016-09-06 23:11:31 392
原创 消费者生产者队列BlockQueue
8月的笔记import java.util.LinkedList;import java.util.concurrent.atomic.AtomicInteger;public class MyBlockQueue { //裝載元素的集合 private final LinkedList<Object> list = new LinkedList<Object>(); //
2016-09-06 23:09:43 1919 1
原创 Java多线程之线程同步
线程同步线程安全问题线程安全当多个线程访问某一个类(对象或方法)时,这个对象始终都能表现出正确的行为,那么这个类(对象或方法)就是线程安全的。synchronized可以在任意对象及方法上加锁,而加锁的这段代码称为”互斥区”或”临界区”关键字synchronized取得的锁都是对象锁,而不是把一段代码(方法)当做锁, 所以代码中哪个线程先执行synchronized关键字的方法,哪个线程就持
2016-09-06 22:07:04 252
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人