maven迁移至gradle kotlin1——Quarkus篇
这里以Quarkus
的GET STARTED
项目为例,主要此项目使用到了quarkus-universe-bom
依赖管理及特殊的编译插件。
准备
先下载项目
1 | mvn io.quarkus:quarkus-maven-plugin:1.13.0.Final:create \ |
迁移
Gradle中配置SpringBoot环境配置参数
目标
在gradle
中配置Springboot
环境参数,使之能根据参数打包目标环境。
方案
maven
对应配置参考
1 | <profiles> |
这里有2个目标:
- 是
springboot
能获取目前activeProfile
- 根据目标环境变量
package.environment
过滤目标配置资源文件
SpringBoot集成使用Akka
背景
需要做一个异步数据处理的任务,输入速度大于输出(推送形式)速度。脑子里面第一个想到的就是mq
,mq
香啊,rabbitmq
、kafka
、rocketmq
、pulsar
。无奈资源有限,不能选择独立部署的中间件,排除掉独立部署的中间件之后,首先就可以想到一些其他处理技术:ForJoinPool
,RxJava
当然还有就是今天的主角akka
。首先,我以前简单用过akka,但是其实没有系统的了解过,这时候就强烈强烈强烈推荐看看官方网站。
设定
假定我们的业务是一个数据采集回推的任务
1 | graph |
其中子采集任是比较耗时的任务,也是整个流程中相对的瓶颈点。
gralde依赖中的scope定义
对于只使用IntelliJ IDEA
开发Java的同学,接触gradle的机会可能不是太多,或者说只借助于原生的Gralde-plugin可能都是模模糊糊的,只能大概的对应与maven的scope来边猜边用,对于使用android studio
的同学可能借助于Android Plugin for Gradle
,能够更直观的理解一些。但是可能不清楚对应的改变和原理。
在gradle < 4.0.1
或android studio 2.x
之前,支持的依赖方式如下:
Compile: 默认的依赖方式,任何情况下都会依赖
Provided: 只提供编译时依赖,打包时不会添加进去
Apk:只在打包Apk包时依赖(使用较少)
TestCompile:只在测试时依赖
DebugCompile:只在Debug构建时依赖
ReleaseCompile:只在Release构建时依赖
在gradle >= 4.0.1
或android studio >= 3.0
,支持的依赖方式如下:
compile: 弃用,被implementation替代
implementation: 实现依赖,同时会打入compileClasspath和runtimeClasspath
compileOnly: 编译时依赖,只会打入compileClasspath
annotationProcessor: 在编译中用于注解处理,以下会以Lombok举例
testAnnotationProcessor: 在测试编译中用于注解处理,以下会以Lombok举例
runtimeOnly:运行时依赖,只打包至runtimeClassPath
testImplementation:编译时只为测试构建相关依赖
testCompileOnly:测试编译时所使用的依赖,不打入运行时
testRuntimeOnly:测试运行时所使用的依赖
源代码依赖配置关系图
测试代码依赖配置关系图
Hadoop单点部署
准备
硬件环境
CPU: Intel(R) Core(TM) i5-3210M CPU @ 2.50GHz 双核四线程
MEM: 8G
系统环境
CentOS Linux release 7.3.1611 (Core)
软件环境
hadoop-3.0.0-beta1
jdk8在linux环境下推荐使用axel下载工具
安装依赖
1 | yum install openssh |
解压安装
1 | tar xvf hadoop-3.0.0-beta1.tar.gz -C /usr/local/ |
接下来验证安装
1 | ./bin/hadoop |
如果安装成功,那么可以看到hadoop的使用说明文档
React工程初始化配置
官方提供的create-react-app
来初始化整个工程,具体参考官方说明, 但是这样我们就不知道如何从无到有合理的搭建起react的开发环境。
我们今天主要来讲讲第二种。这样可以学习到Babel、webpack来配合react工程的构建。
一个现代化的前端工程编译系统通常由以下部分构成:
- 包管理器 比如
Yarn
或npm
。 - 打包器, 比如
webpack
或Browserify
。 它可以让你编写模块化代码并将其打包成一个小文件,以便优化加载时间。 - 编译器 比如
Babel
。它让你可以编写更新的javascript代码能够运行在老版本的浏览器上。
初始化工程
1 | mkdir reactdemo |
使用npm安装React
1 | npm install --save react react-dom |
官方建议使用配合Babel来使用React,这样可以在javascript代码中使用ES6与JSX。
1 | npm install --save-dev babel-cli babel-loader babel-preset-es2015 babel-polyfill babel-preset-env |
安装webpack
1 | npm install --save-dev webpack webpack-dev-server |
接下来创建两个模板文件:build/index.html
与app/index.js
。
修改index.html内容为如下
1 | <!DOCTYPE html> |
在app/index.js
中编写一些基本的es6代码
1 | const message = "Hello, world!"; |
创建webpack.config.js
并编辑其内容为:
1 | module.exports = { |
编辑package.json中的scripts,添加build与start
1 | { |
同样在package.json中添加babel配置(也可以在.babelrc中配置)
1 | "babel": { |
执行以下命令
1 | npm run build |
打开浏览器http://localhost:3000
,打开console,可以看到输出
添加React
安装依赖
1 | npm install --save-dev react react-dom babel-preset-react |
编辑babel配置
1 | "babel": { |
编辑index.html
1 | <body> |
然后在index.js中编辑入标准的ReactHelloWorld
1 | import React from 'react'; |
最终的工程目录结构为
1 | {project root} |
扩展阅读
参考
记录一次elasticsearch中文搜索配置
WebMagicInAction1
最近做了一个爬虫项目,经过了 从无框架的httpclient+jsoup,到使用webmagic,再到改造webmagic做定制化使用的三个阶段。接下来,我讲介绍一下我们在这个过程中获得的经验和夸过的一些坑。