fenlan

Everything gonna be fine in the end, if it's not fine, it's not the end.

0%

持续更新中….

印象中Flink集群安装非常简单,很久没有操作了,现在用空再来了解Flink,发现参考网上的教程安装了半天都没成功,莫名其妙的报错。索性直接去Apache Flink官方文档看看怎么安装的,参考文档几分钟就安装呢成功了。
经历这个过程,非常想吐槽网上乱七八糟的安装教程,充满着复制粘贴,所以以后想要了解一些技术,先尝试看看官方文档,大部分官方文档写的非常清晰和完善。

直接从Apache Flink官方下载非常慢,推荐使用清华的开源库下载,速度还是很可观
清华大学开源软件镜像站

通过tar命令解压下载下来的压缩包

阅读全文 »

持续更新中….

核心概念

IOC: 控制反转,即将对象的创建工作交由Spring统一管理。

DI: 依赖注入,Spring中的对象并非独立存在的,往往是相互依赖的,比如对象A中使用了对象B,在Spring进行对象初始化时就需要将对象B注入到对象A中。

AOP: 面向切面编程,传统的面向对象编程(OOP)的代码逻辑通常是自上而下的,当我们要做一些针对不同代码逻辑的横向通用逻辑时,需要自己使用一些设计模式来实现,但Spring将这个工作已经做了这个工作,我们只需要编写业务逻辑和横向通用的逻辑,而不用关注横向通用逻辑如何跟业务逻辑结合工作的,达到横向逻辑与业务逻辑的解藕。

阅读全文 »

Zookeeper简介

Zookeeper 是Apache Hadoop开源项目中的子项目,提供了一个分布式的协调服务框架。Zookeeper暴露了一组简单的操作原语(Primitive)集合,分布式应用能够基于这些原语实现更加高层的服务,包括同步机制、配置管理、服务器集群管理和统一命名服务等。

作为一个分布式的服务框架,Zookeeper主要解决分布式集群中应用系统的一致性问题,它采用类似文件系统目录的节点树的结构作为数据存储模型,并对已存储数据的状态变化进行维护和监控,通过监控这些数据状态的变化实现基于数据的集群管理。

Zookeeper 采用服务器集群的方式提供基本服务,服务器集群成为组,组中的成员具有两种角色,即一个唯一的领导者和若干个成员服务器,组能够为多个客户端提供服务。

阅读全文 »

决策树简介

机器学习中,决策树是一个预测模型;他代表的是对象属性与对象值之间的一种映射关系。树中每个节点表示某个对象,而每个分叉路径则代表某个可能的属性值,而每个叶节点则对应从根节点到该叶节点所经历的路径所表示的对象的值。决策树仅有单一输出,若欲有复数输出,可以建立独立的决策树以处理不同输出。 数据挖掘中决策树是一种经常要用到的技术,可以用于分析数据,同样也可以用来作预测。

决策树学习也是数据挖掘中一个普通的方法。在这里,每个决策树都表述了一种树型结构,它由它的分支来对该类型的对象依靠属性进行分类。每个决策树可以依靠对源数据库的分割进行数据测试。这个过程可以递归式的对树进行修剪。 当不能再进行分割或一个单独的类可以被应用于某一分支时,递归过程就完成了。

在分类算法中,决策树每个非叶节点表示一个特征属性上的测试,每个分支代表这个特征属性在某个值域上的输出,而每个叶节点存放一个类别。使用决策树进行决策的过程就是从根节点开始,测试待分类项中相应的特征属性,并按照其值选择输出分支,直到到达叶子节点,将叶子节点存放的类别作为决策结果。

阅读全文 »

分类问题

维基百科定义:分类问题是机器学习非常重要的一个组成部分,它的目标是根据已知样本的某些特征,判断一个新的样本属于哪种已知的样本类。分类问题也被称为监督式学习(supervised learning),根据已知训练区提供的样本,通过计算选择特征参数,建立判别函数以对样本进行的分类。 与之相对的称为非监督式学习(unsupervised learning),也叫做聚类分析。

数学定义:已知集合C = {y1,y2,...ym}I = {x1,x2,...xn},确定映射规则y = f(x),使得任意xi ∈ I有且仅有一个yi ∈ C ,使得yi ∈ f(xi)成立。

在用户画像、NLP、预测、推荐等领域都需要研究分类问题。诸如NLP中情感分析,需要通过分类算法来分析文本的情感极性,这对于舆论监督有很好的帮助。

阅读全文 »

Java Volatile Keyword

Java volatitle关键字用来标记变量”被存储在主存里”,更精确的说,volatitle变量的每一次读取都需要从计算机的主存读取而不是CPU Cache,而每一次写入都是直接写入主存,而不是CPU Cache。从Java 5开始volatitle关键字不仅仅是保证写入主存和从主存读取。

变量可见性问题

Java volatitle保证了变量跨线程的可见性,这么说可能有点抽象,so let me elaborate。

在线程操作non-volatile变量的多线程应用中,由于性能原因每个线程会从主存中拷贝变量到CPU Cache(each thread may copy variables from main memory into a CPU cache while working on them)。如果你的计算机是多CPU的,每个线程可能跑在不同的CPU上,这意味着每个线程会拷贝变量到不同CPU的Cache中,就像这样:

阅读全文 »

Obejct简介

Object类是Java中所有类的基类,在编译时会自动导入,位于java.lang包中,而Object中具有的属性和行为,是Java语言设计背后的思维体现。Object类中的大部分方法都是native方法,用此关键字修饰的方法是Java中的本地方法,一般是用C/C++语言来实现。

native 关键字

native是与C++联合开发的时候用的!java自己开发不用的!使用native关键字说明这个方法是原生函数,也就是这个方法是用C/C++语言实现的,并且被编译成了DLL,由java去调用。 这些函数的实现体在DLL中,JDK的源代码中并不包含,你应该是看不到的。对于不同的平台它们也是不同的。这也是java的底层机制,实际上java就是在不同的平台上调用不同的native方法实现对操作系统的访问的。native 是用做java 和其他语言(如c++)进行协作时用的 也就是native 后的函数的实现不是用java写的。native的意思就是通知操作系统, 这个函数你必须给我实现,因为我要使用。 所以native关键字的函数都是操作系统实现的, java只能调用。java是跨平台的语言,既然是跨了平台,所付出的代价就是牺牲一些对底层的控制,而java要实现对底层的控制,就需要一些其他语言的帮助,这个就是native的作用了。

阅读全文 »

概念

桥接模式(Bridge)是用于把抽象化和实现化解耦,使得两者可以独立变化。这种类型的设计模式属于结构型模式,它通过提供抽象化和实现化的桥接结构来实现两者的解耦。

桥接意图 : 将抽象部分与实现部分分离,使它们都可以独立的变化
主要解决 : 在有多种可能会变化的情况下,用继承会造成类爆炸问题,扩展起来不灵活
何时使用 : 实现系统可能有多个角度分类,每一种角度都可能变化
如何解决 : 把这种多角度分类分离出来,让它们独立变化,减少它们之间耦合
主要代码 : 抽象类依赖实现类
桥接优点 : 1、抽象和实现的分离。 2、优秀的扩展能力。 3、实现细节对客户透明
桥接缺点 : 桥接模式的引入会增加系统的理解与设计难度,由于聚合关联关系建立在抽象层,要求开发者针对抽象进行设计与编程

例子一

我们需要画出一个红色的圆、绿色的圆、红色的正方形、绿色的正方形。在这个例子中,有两个变化的方面,一个是形状、一个是颜色。

普通的设计是这样的 : 有一个圆类和一个正方形类实现Shape类,而圆类下面有两个子类,红色圆和绿色圆;正方形类下面有两个子类,红色正方形、绿色正方形。但是这样的设计会出现的问题是,当我需要添加一个其他变化的颜色时,诸如蓝色,那么情况会非常糟糕。我们需要在每个形状的下面重新添加一个蓝色形状的实现。这就是桥接定义的变化。

阅读全文 »

在综合考虑下,决定复习一些Web方向的东西,以备不时之需。。。。

What is HTTP?

HTTP全称Hypertext Transfer Protocol(就是中文常说的超文本传输协议),这个协议是为了客户端和服务端能进行通信。HTTP是客户端和服务端进行请求响应过程的协议,客户端发送请求,服务端响应这个请求并返回信息。通常一个web浏览器作为一个客户端,而一台提供web服务的机器作为服务端。

Two HTTP Request Methods: GET and POST

两个非常常用的请求响应方法 : GET and POST。

  • GET- Requests data from a specified resource
  • POST- Submits data to be processed to a specified resource

The GET Method

GET请求方法会将请求信息放在URL中

1
/test/demo_form.php?name1=value1&name2=value2

GET其他特性:

  • GET请求能被缓存
  • GET请求会保留在浏览器的历史记录中
  • GET请求可以被标为书签
  • GET请求不应该用在处理敏感数据时候
  • GET请求有长度限制
  • GET只应该用在取回数据

总的来说,由于GET请求数据被放在URL中,以及它能缓存,便导致了上述的其他特性。诸如GET请求会保留在浏览器的历史记录中 GET请求可以被标为书签 GET请求不应该用在处理敏感数据时候这三条就是因为GET请求会被缓存,且请求数据在URL中,又因为浏览器或者说操作系统对URL的长度有要求,所以GET请求有长度限制。

阅读全文 »

索引

顺序索引

聚集索引: 如果包含记录的文件按照某个搜索码指定的顺序排序,那么该搜索码对应的索引称为聚集索引。
非聚集索引: 搜索码指定的顺序与文件中记录的物理顺序不同的索引称为非聚集索引。

诸如在大学教师记录文件中,用教师ID作为搜索码,记录按照该搜索码顺序存放。

稠密索引(dense index) : 在稠密索引中,文件中的每一个搜索码值都有一个索引项。在稠密聚集索引中,索引项包括搜索码值以及指向具有该搜索码的第一条数据记录的指针。具有相同搜索码值的其余记录顺序地存储在第一条数据记录之后,由于该索引是聚集索引,因此记录根据相同的搜索码值排序。而在稠密非聚集索引中,索引必须存储指向所有具有相同搜索码值的记录项的指针列表。

稠密聚集索引具有相同搜索码值的记录按照指定顺序存储;但是稠密非聚集索引必须存储指向一个指针列表,这个列表里面有具有相同搜索码值的记录指针。聚集索引只存储第一条记录的指针,其他的按照顺序查找,非聚集索引就要记录一个指针表。

Dense index

阅读全文 »