自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(109)
  • 收藏
  • 关注

原创 Spark - RegexTokenizer和StopWordsRemover学习

Stop words是应当从输入中排除掉的词,一般因为他们经常出现,还没有什么意义。StopWordsRemover接受一个字符串序列,他们已经由Tokenizer或者RegexTokenizer做了标记。stop words的列表由参数stopWords指定。public class StopWordsRemoverDemo { public static void main(St...

2019-07-14 14:49:11 904

原创 Spark - 学习CountVectorizer

CountVectorizer和CountVectorizerModel用来把文本文档的集合转换成token数量的矢量。如果没有字典,CountVectorizer可以抽取vocabulary(词汇)生成CountVectorizerModel。该model为文档生成词汇的稀疏表示,然后可以传给其他算法,比如LDA。public class CountVectorizerDemo { ...

2019-07-14 11:03:57 549

原创 Spark - 笔记 3

不可变的分布式的对象集合:只包含对象引用,实际对象在集群的节点上。弹性、容错。Transformations:operations都是增加新的RDD,original增加后不再修改。默认地,RRD使用hash算法做分区。分区数依赖节点数和数据大小。RDD CreationParallelizing a collection: splits成分区,跨集群distributes...

2019-07-13 16:02:10 395

原创 Spark - 解决序列化问题

项目中,有个类序列化有问题:Caused by: java.io.NotSerializableException: entity.UnitSerialization stack: - object not serializable (class: entity.Unit, value: Unit(id=1, name=m2)) - writeObject data (class: jav...

2019-07-05 17:33:10 1014

原创 Spark - 使用yarn client模式

SparkConf如果这样写new SparkConf().setMaster("yarn-client")在idea内调试会报错:Exception in thread "main" java.lang.IllegalStateException: Library directory '....../data-platform-task/assembly/target/scala-2....

2019-06-27 13:05:08 4797

原创 Spark - yarn配置

Spark需要yarn(hadoop版本2.7.7),在ubuntu19上配置步骤如下。配置1、修改hadoop-env.shexport JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-amd642、修改yarn-env.shexport JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-amd643、修改co...

2019-06-26 17:19:40 461

原创 Spark 2 - 实现一个定时器

使用笨办法,实现了一个定时器。不管怎么样,效果很好,可以执行定时任务了。@Singletonpublic class BuildingImportTimer { private static Logger logger = LoggerFactory.getLogger(BuildingImportTimer.class); @Inject private Buil...

2019-06-26 14:07:16 879

原创 Spark - 模式

为了规划和执行分布式计算,使用job概念,使用Stages和Tasks,跨工作节点执行。Spark由driver组成,在一组工作节点上协调执行。它还负责跟踪所有工作节点,以及节点上执行的工作。Driver:包含应用程序和主程序。Executor:工作节点上运行的进程。Inside the executor, the individual tasks or computations are ...

2019-06-23 19:21:35 180

原创 Spark - 简介

简介跨不同的workloads和platforms,是统一的分布式计算引擎。它使用各种范式(paradigms,比如Spark streaming, Spark ML, Spark SQL, and Spark GraphX),可以连接不同的platforms,处理不同的数据workloads。fast in-memory data processing engine。由core和库组成。...

2019-06-23 11:03:02 156

原创 数据挖掘与数据话运营实战 - 笔记

异常值判断:对于类别型变量,如果某个出现频率太小,太稀有,就可能是异常值对于区间型变量,可以从小到大排,比如最大的前0.1%就是异常值。或者,超过n个标准差的是异常值数据转换对于区间型变量,如果分布不光滑(或有噪声),不对称分布目的:产生衍生变量改善变量分布特征(不对称)区间型变量的分箱转换针对区间型变量的标准化操作改善分布的措施取对数开平方根取倒数开平方取指数...

2019-06-22 16:59:48 312

原创 Spring 5 - 使用RestTemplate,访问HTTPS服务

Spring的RestTemplate,支持SimpleClientHttpRequestFactory、OkHttp3ClientHttpRequestFactory和HttpComponentsClientHttpRequestFactory。其中,SimpleClientHttpRequestFactory不支持定制client。如果要访问HTTPS网站,会抛异常:java.secur...

2019-06-12 13:00:09 1518

原创 Jmeter5 - Restful 测试

设置头信息其中,name是Content-Type,value是application/json;charset=UTF-8。增加线程组增加HTTP请求配置Body Data用户参数查看结果树

2019-06-04 09:42:03 410

原创 Spring5 - 集成Server-Sent Events功能

如果Controller返回SseEmitter,可以集成Server-Sent Events功能,向浏览器推送消息。 @GetMapping(path = "infoPush/{sms}", produces=TEXT_EVENT_STREAM_VALUE) public SseEmitter infoPush(@PathVariable("sms") String smsID)...

2019-05-31 15:16:01 1311 1

原创 Java读取OpenSSL生成的PEM公钥文件

JDK8的JCE是不支持读取PEM文件的。需要使用bouncycastle。项目需求,使用SHA1WithRSA算法,对接口数据做签名。代码如下:@Serviceclass SignService { private static Logger LOG = LoggerFactory.getLogger(SignService.class); @Autowired ...

2019-05-21 10:20:25 6833

原创 PCM编码的WAV文件,如何使用JAVA把两个单声道文件合并成一个双声道文件?

从大网可以拿到通话双方的录音文件,都是PCM编码的WAV文件。有客户的需求是只要一个通话录音文件,但是,要求文件包含双声道,每个声道对应通话一方。在原来WAV文件头解析的基础上,完成起来还是比较容易的。public class WavFileUtil { private static Logger LOG = LoggerFactory.getLogger(WavFileUtil.cl...

2019-05-15 14:56:03 2767 1

原创 使用LAME,把MP3格式的录音文件转换为PCM编码格式的WAV文件

如果不修改LameDecoder源码,是无法将MP3文件转换成PCM编码的文件的。幸好它还包含了Main类,简单修改一下,可以实现格式转换的要求。public class Mp3ToWav { private GetAudio gaud; private ID3Tag id3; private Lame lame; private GainAnalysis ...

2019-05-14 13:27:11 2344

翻译 Reactor 3 Reference Guide - 选译 (3)Testing

有专属的测试包:<dependency> <groupId>io.projectreactor</groupId> <artifactId>reactor-test</artifactId> <scope>test</scope></dependency>主要包括:S...

2019-05-13 17:04:57 373

翻译 Reactor 3 Reference Guide - 选译 (2)

Reactor Core FeaturesProgrammatically creating a sequence本节介绍如何程序化增加Flux和Mono,以及相关事件(onNext、onError和onComplete)。这些方法都触发了称为sink的事件。实际上是sink的变种。Synchronous generate程序化增加Flux的最简单办法是generate方法,接受一个gen...

2019-05-07 16:07:30 787

原创 使用LAME,把PCM编码格式的录音文件转换为MP3格式的文件

最近,项目需要把PCM编码的录音文件转为MP3格式。通过学习,发现可以使用de.sciss.jump3r项目: <dependency> <groupId>de.sciss</groupId> <artifactId>jump3r</artifactId> ...

2019-04-25 16:10:50 1954

翻译 Reactor 3 Reference Guide - 选译 (1)

About the Documentation本节简要概述了Reactor参考文档。不需要一行一行地阅读本指南,每一节都是独立的,尽管他们经常互相引用。Getting StartedIntroducing ReactorReactor是JVM上的完全非阻塞的响应式编程框架,支持有效的需求管理(通过背压的方式)。它直接与Java 8的函数式API集成,特别是CompletableFuture...

2019-04-24 15:33:43 943

原创 Spring WebFlux - 定制NettyReactiveWebServerFactory

Spring的版本迭代很快,去年还是5.0,今年已经升级到5.1了。别看只是小版本的升级,有些地方已经不兼容了。比如,5.0时代,可以这样定制ConfigurableReactiveWebServerFactory: @Bean ConfigurableReactiveWebServerFactory webServerFactory() { NettyReac...

2019-04-11 14:54:52 5218 2

原创 重构 改善既有代码的设计 第二版 - Building Tests

THE VALUE OF SELF-TESTING CODE程序员的大部分时间用于调试工作。Classes should contain their own tests.每工作一点就测试,才容易找到bug。当然,意味着要编写很多额外的代码。当需要增加一个功能的时候,我从编写测试开始。通过编写测试,我问自己需要做些什么。编写测试代码,也让我专注于接口而不是实现。我也有了一个明确的点-当...

2019-04-03 14:41:12 2575

原创 Spring WebFlux -自定义ReactiveTransactionTemplete实现事务

Mono里是不支持注解事务的。比如 @Transactional public Mono<CommonOutput> save(RecordFileSaveReq req) { return Mono.just(true) .filter(b -> saveLog(req)) .fi...

2019-03-28 17:29:50 3198

原创 Spring WebFlux - 使用@Valid校验

WebFlux的validation比以前的版本简单了很多。先看pom.xml: <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> ...

2019-03-27 08:34:21 2255

原创 Spring WebFlux - WebClient连接池简单测试和代码分析

Spring5.1开始,WebFlux的WebClient支持连接池功能了。默认情况下,WebClient使用global Reactor Netty资源,也可以不使用全局资源: @Bean ReactorResourceFactory resourceFactory() { ReactorResourceFactory factory = new Reactor...

2019-03-21 17:08:35 9634 3

原创 sofa-jraft试用 - counter

阿里开源了sofa-jraft。学习counter例子,使用Spring Boot整理了一下代码。首先,不喜欢Hessian,换成kryo。这部分代码,客户端和服务器端代码相同。CKryoPool类,提供pool提高性能:@Serviceclass CKryoPool { private KryoFactory factory = () -> { Kryo k...

2019-03-20 15:30:26 2216

原创 Java并发编程实践 - 读书笔记(1)

线程安全编写线程安全的代码,本质上就是管理对状态的访问,而且通常都是共享的、可变的状态。共享:一个对象可以被多个线程访问可变:变量的值在它的生命周期内可以改变通俗地说,一个对象的状态就是它的数据,存储在状态变量(state variable)中,比如实例成员或静态成员。无论何时,只要有多于一个的线程访问给定的状态变量,而且其中某个线程会写入该变量,就必须使用同步来协调线程对对象的访问...

2019-03-14 16:42:35 106

原创 领域驱动设计 读书笔记 (3)

上下文是最不容易引起注意的原则,实际上却是最根本的。无论大小,成功的模型必须在逻辑上一致,不能有互相矛盾或重叠的定义。有时,企业系统会集成各种不同来源的子系统,或包含诸多完全不同的应用程序,以至于无法从同一角度看待领域。要把这些部分中隐含的模型统一起来可能太难了,通过为每个模型显式定义一个BOUNDED CONTEXT,然后在必要的情况下定义它与其他上下文的关系,模型就不会变得掺杂不清。通过精炼...

2019-03-14 10:16:17 327

原创 设计模式 - 思维导图

2019-03-10 15:44:23 193

原创 领域驱动设计 读书笔记 (2)

与所有探索活动一样,建模本质上是非结构化的。对象分析的传统方法是先在需求文档中确定名词和动词,并将其作为系统的初始对象和方法。这种方法太过简单,只适合教导初学者如何建模。实际上,初始模型都是基于对领域的浅显认知而构建的。不够成熟、深入。比如一个运输系统,不应该是货轮和集装箱的模型。而是船只航次(货轮、火车等调度好的航程)。深层模型能穿过领域表象,清楚地表达领域专家的主要关注点和最相关的知识。...

2019-03-08 09:17:01 286

原创 领域驱动设计 读书笔记 (1)

模型由不同部分组成用于特定目的抽象的系统认知工具模型有几种表现方法(语言、代码、图解)一个系统包含若干模型通用语言是作为领域专家与软件专家之间的协作而演进的。好的面向对象设计单一职责原则:类只有一个职责开放封闭原则:类应该对修改关闭,但是对扩展开放。里氏替换原则:比如有个继承关系Person和Student。可以使用Person的时候,也可以使用...

2019-03-06 15:24:22 400

原创 深入理解Java虚拟机 - 内存 读书笔记

Java虚拟机管理的内存包括以下几个区域:程序计数器 Program Counter Register,比较小,可以认为是当前线程执行的字节码的行号指示器。在虚拟机的概念模型里,字节码解释器工作时就是通过改变这个计数器的值来选取需要执行的下一条指令,分支、循环、跳转、异常处理和线程恢复都依赖这个计数器完成。每个线程都有独立的程序计数器。如果正在执行native方法,该计数器为Undefined...

2019-03-05 13:27:14 97

原创 重构 改善既有代码的设计 第二版 - Bad Smells in Code

重构 改善既有代码的设计 第二版 - Bad Smells in Code神秘的名字Change Function DeclarationRename VariableRename Field重复的代码Extract Function代码类似但是不完全相同时Slide Statements如果重复代码位于公共父类的子类中Pull Up Method长函数Extr...

2019-03-04 17:09:33 5688

原创 现代操作系统 第四版 - 进程与线程

先附上思维导图,以后增加些读书笔记吧。

2019-03-03 17:10:31 428

原创 重构 改善既有代码的设计 第二版 - A First Example

重构 新版 - A First ExampleTHE STARTING POINTDECOMPOSING THE STATEMENT FUNCTIONRemoving the play VariableExtracting Volume CreditsRemoving the format VariableRemoving Total Volume CreditsSTATUS: LOTS OF N...

2019-02-27 15:20:17 3468

原创 Java优化 - 方法句柄

Java优化 - 方法句柄Java 7引入的invokedynamic,为确定调用侧(call site)执行哪个方法带来很大的灵活性-关键点是,到运行时才能确定。当解释器执行到调用侧的时候,一个特定的辅助方法BSM(bootstrap method)被调用。BSM返回一个对象,它代表调用侧应该调用的实际方法。这叫调用目标,它被加进调用侧。关键概念是方法句柄(Method Handles)-...

2019-01-23 15:20:05 649

原创 Java优化 - 避免 Finalization

Java优化 - 避免 Finalization忘记清理为什么不使用Finalization解决本问题try-with-resourcesJava的finalize()机制试图自动管理资源,像C++里的资源获取即初始化(RAII)。一个析构函数(Java里是finalize())在对象销毁的时候自动清除和释放资源。因此,基本用例很简单。当一个对象被增加的时候,它需要一些资源,在对象的生存期内占...

2019-01-18 16:13:56 626

原创 Java优化 - 领域对象

Java优化 - 领域对象Domain objects表达程序里的业务概念。比如电子商务系统里的Order、OrderItem和DeliverySchedule。这些类型之间有相关关系(Order可以包含多个OrderItem实例)。例如:public class Order { private final long id; private final List&lt;Orde...

2019-01-17 10:37:58 603

原创 Java优化 - 集合

Java - 优化集合列表ArrayListLinkedListArrayList 和 LinkedList 对比MapsHashMapLinkedHashMapTreeMap缺少MultiMapSets大多数编程语言库提供了最少两种通用容器:Sequential containers:数据保存在一定位置上,使用数字索引Associative containers:由对象自己决定,保存在集...

2019-01-16 16:41:11 577

原创 Java线程和并发 - Additional Thread Capabilities

Java线程和并发 - Additional Thread CapabilitiesThread GroupsThread-Local VariablesThread Groups如果看Thread类,可能会发现它的构造器、activeCount()方法等地方都引用了ThreadGroup类。JDK文档说,线程组代表线程的集合。而且,线程组可以包含其他线程组。线程组形成了一棵树。使用Thr...

2019-01-15 10:33:46 173

空空如也

空空如也

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

TA关注的人

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