官方文档防坑批注|开始使用 Jenkins-Jenkins官方文档-用户文档中心

官方文档好入门,也是自带坑的,所以对官方文档进行了防坑标注!

标黄的是批注的,无特殊说明,都是jenkins官方文档!


本导读将向您介绍使用 Jenkins、Jenkins 的主要特性和 Jenkins Pipeline 的基本知识。本导读使用“独立”的 Jenkins 发行版,它可以在您自己本地的机器上运行。

准备工作

第一次使用 Jenkins,您需要:

  • 机器要求:
    • 256 MB 内存,建议大于 512 MB
    • 10 GB 的硬盘空间(用于 Jenkins 和 Docker 镜像)
  • 需要安装以下软件:
    • Java 8 ( JRE 或者 JDK 都可以)
    • Docker (导航到网站顶部的Get Docker链接以访问适合您平台的Docker下载)

下载并运行 Jenkins

  1. 下载 Jenkins.
    http://mirrors.jenkins.io/war-stable/latest/jenkins.war
  2. 打开终端进入到下载目录.
  3. 运行命令 java -jar jenkins.war --httpPort=8080.【这可能是一个坑,真实的使用,应该跑在后台,让jenkins一直跑着】
  4. 打开浏览器进入链接 http://localhost:8080.
  5. 按照说明完成安装.

安装完成后,您可以开始使用 Jenkins!

文章来源:https://jenkins.io/zh/doc/pipeline/tour/getting-started/

进行防坑批注一

启动一个大坑,应该要长期跑在后台的!你可能需要更符合使用需求的

nohup java -jar /data/jenkins.war --httpPort=8080 &

如果你将jenkins与站点跑在一个服务器上,可能需要以下启动命令

nohup java -Dhudson.util.ProcessTree.disable=true -jar jenkins.war  --httpPort=8080 &

进行防坑批注二

war包跑起来,进到jenkins安装向导,报错

无法连接到Jenkins​

​解决方案:需要连接国外网络

好了,今天的防坑批注就到这里了!

关注公众号,看防坑批注

JBlog自动构建环境搭建 实战练习jenkins+sh+spring+java+github webhook 自动构建博客系统

今天实战练习了一下jblog的全自动构建环境配置,演练了一下jenkins安装配置,github webhook配置,sh脚本调整,一点点把jblog的全自动构建环境配置好!之所以搭建一个全自动构建环境,这是CI/CD系统学习之路的开端,终点是要消化一套支持java,ios,android.net的全能自动构建系统,有兴趣的可以关注公众号,坐等分享。

使用到的参考文章:

快速组建Java项目持续集成环境

https://github.com/guohai163/jblog

https://github.com/Lancker/jblog

服务器

https://jblog.joke.dog/

https://www.vultr.com/?ref=8078200   (大概30元一个月,就可以拥有一个自主实验环境,各种操作系统任性安装与更换)

相关脚本

安装jdk (免费的openjdk)yum install java-1.8.0-openjdk* -yjava -version导入环境变量vim /etc/profile---修改在尾部追加export JAVA_HOME=/usr/lib/jvm/javaexport CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JAVA_HOME/jre/lib/rt.jarexport PATH=$PATH:$JAVA_HOME/bin安装maven (jenkins也可自动安装,可以跳过)yum -y install wget (如果没有wget可以安装一下)wget http://mirrors.cnnic.cn/apache/maven/maven-3/3.5.4/binaries/apache-maven-3.5.4-bin.tar.gztar -zxvf apache-maven-3.5.4-bin.tar.gzvi /etc/profileexport MAVEN_HOME=/data/apache-maven-3.5.4export PATH=$MAVEN_HOME/bin:$PATHsource /etc/profilemvn -version

操作步骤

一、安装jenkins

wget http://mirrors.jenkins.io/war-stable/latest/jenkins.war

后台启动

nohup java -Dhudson.util.ProcessTree.disable=true -jar jenkins.war  --httpPort=8080 &

划重点:nohup一直执行,末尾的&是后台执行,java后带的参数指的是构建退出不要把相关的进程杀掉。

PS:这种情况出现在,构建机器与生产机器合用的情况,如果是远程到另一台机器,就不会有这个问题!可以使用另一种启动脚本

nohup java -jar /data/jenkins.war --httpPort=8080 &

依据提示登陆到jenkins安装界面,启动安装报错

无法连接到Jenkins 想不到需要连接国外网络!连上国外网络后,正常安装。

二、配置构建

2.1 jenkins job配置

采用Pipeline script form SCM,脚本直接在git配置中的Jenkinsfile文件中。

2.2 解读Jenkinsfile

pipeline {  agent any  environment {    //目标服务器IP以及登陆名    TAG_SERVER = '[email protected]'    //目标服务器程序部署路径    TAG_PATH = '/data/jblog.guohai.org'    //目标服务器启动停止springboot脚本路径    TAG_SCRIPT = '/data/spring-boot.sh'  }  stages {    //构建块    stage ('build') {      steps {         script{            //获得maven程序路径            def mvnHome = tool 'maven 3.6.0'            //打包            sh "${mvnHome}/bin/mvn clean package"            echo "build over"         }      }    }    //联署块    stage ('deploy') {        steps {            //计算本地文件MD5            sh "md5sum ${WORKSPACE}/target/*.jar"            //因为我们要使用私钥来操作远程服务器内容,下面的代码块需要使用withCredentials括起来,其中credentialsId为在Jenkins里配置的证书。keyFileVariable为代码块中可以使用的变量名            // withCredentials([sshUserPrivateKey(credentialsId: 'guohai.org', keyFileVariable: 'guohai_org_key', passphraseVariable: '', usernameVariable: '')]) {                //拷贝本地JAR文件到服务器上               // sh "scp -i ${guohai_org_key} ${WORKSPACE}/target/*.jar ${TAG_SERVER}:${TAG_PATH}/${JOB_BASE_NAME}.jar"                //计算拷贝到服务器上的文件 MD5,确保与本地一致。避免因传输产生的错误。              //  sh "ssh -i ${guohai_org_key} ${TAG_SERVER} md5sum ${TAG_PATH}/${JOB_BASE_NAME}.jar"                //使用脚本重启spring boot              //  sh "ssh -i ${guohai_org_key} ${TAG_SERVER} ${TAG_SCRIPT} restart ${TAG_PATH}/${JOB_BASE_NAME}.jar"             //  }              sh "${TAG_SCRIPT} stop ${TAG_PATH}/${JOB_BASE_NAME}.jar"              sh "cp ${WORKSPACE}/target/*.jar ${TAG_PATH}/${JOB_BASE_NAME}.jar"              sh "md5sum ${TAG_PATH}/${JOB_BASE_NAME}.jar"              sh "${TAG_SCRIPT} restart ${TAG_PATH}/${JOB_BASE_NAME}.jar --spring.config.location=/data/config/application.yml"         }    }  }}

因为是同一台机器上进行自动构建与发布,所以对Jenkinsfile进行了适当调整,注释掉了跨服务器拷贝jar包的操作,新写了cp在当前服务器进行操作的sh脚本。真实的环境,应该是将构建服务器与生产服务器分开,所以这里仅注释掉,想在生产环境尝试的小伙伴,可以试试。具体可以参考快速组建Java项目持续集成环境 。

2.3 站点重启bash脚本

Jenkinsfile仅完成jar传输,真正对站点进行重启操作还靠sh脚本完成。这个过程尝试了好多次,寻找了好久的问题。对原始的spring-boot.sh进行了调整,让其支持指定启动配置文件。

#!/bin/bashSpringBoot=$2startConfig=$3echo $startConfigif [ "$1" = "" ];then    echo -e "\033[0;31m 未输入操作名 \033[0m  \033[0;34m {start|stop|restart|status} \033[0m"    exit 1fiif [ "$SpringBoot" = "" ];then    echo -e "\033[0;31m 未输入应用名 \033[0m"    exit 1fifunction start(){    count=`ps -ef |grep java|grep $SpringBoot|grep -v grep|wc -l`    if [ $count != 0 ];then        echo "$SpringBoot is running..."    else        echo "Start $SpringBoot success..."        BUILD_ID=dontKillMe nohup java -jar -Dlogging.path=/data/logs  $SpringBoot $startConfig  > /data/logs/nohup.out 2>&1 &    fi}function stop(){    echo "Stop $SpringBoot"    boot_id=`ps -ef |grep java|grep $SpringBoot|grep -v grep|awk '{print $2}'`    count=`ps -ef |grep java|grep $SpringBoot|grep -v grep|wc -l`    if [ $count != 0 ];then        kill $boot_id        count=`ps -ef |grep java|grep $SpringBoot|grep -v grep|wc -l`        boot_id=`ps -ef |grep java|grep $SpringBoot|grep -v grep|awk '{print $2}'`        kill -9 $boot_id    fi}function restart(){    stop    sleep 2    start}function status(){    count=`ps -ef |grep java|grep $SpringBoot|grep -v grep|wc -l`    if [ $count != 0 ];then        echo "$SpringBoot is running..."    else        echo "$SpringBoot is not running..."    fi}case $1 in    start)    start;;    stop)    stop;;    restart)    restart;;    status)    status;;    *)    echo -e "\033[0;31m Usage: \033[0m  \033[0;34m sh  $0  {start|stop|restart|status}  {SpringBootJarName} \033[0m\033[0;31m Example: \033[0m\033[0;33m sh  $0  start esmart-test.jar \033[0m"esac

其中startConfig是新增加,为了方便查看启动日志,调整了启动脚本。

一个是将输出定位到/data/logs/nohup.out,另一个则是开启了spring log.

BUILD_ID=dontKillMe nohup java -jar -Dlogging.path=/data/logs  $SpringBoot $startConfig  > /data/logs/nohup.out 2>&1 &

三,Github远程激活构建

提交代码后,让构建自动执行,省去人肉点。github提供了webhook功能。

3.1 找到jenkins的git webhook 配置

管理Jenkins->系统配置->git 高级,选择”为 Github 指定另外一个 Hook URL

3.2 在github的仓库里找到项目的webhook配置,将刚才找到的url填写进去
收尾
今天的实验遇到的问题有几个,别人1小时能搞定的时候,花了一天啦!看看都有哪些坑?1,就是站点部署脚本跑完后,站点自动关掉了。这个是因为站点与构建环境在一台服务器上,jenkins部署脚本跑完后,启动的服务被关掉了。找到一串启动参数搞定。2.部署启动脚本,不支持指定配置文件,经过改造后支持了。
预告
这是持续集成系列的开端,到java,ios,android.net的全能自动构建系统,到云打包平台!关注公众号,坐等最新​分享!
部署完成效果
在 github中提交代码后,会自动完成构建部署,可以看到最底下的版本号发生变化了!​

开源博客JBlog安装实战 CentOS+openJDK+mySQL+maven+git=jblog.joke.dog

不忘初心,回归朴实​!JBlog相对于wordpress而言,极简​!做为一个新生代开源项目,拥有最最简单的功能组合,满足基本的博客发布​!回想使用 wordpress,也是最基本的博客发布功能,记录一些工作生活点滴,wordpress默认安装的风险还是比较大,基本上很容易被黑掉,而且国外“暴徒”很喜欢大面积发布垃圾言论​。因为这个原因,博客评论一直都没有开放,后台一堆垃圾评论!

JBlog简简单单的,还可以在此基础上添加一些自主的功能​!今天分享一下,本次jblog安装实战的过程与脚本。

​服务环境:

CentOS  (国外) 大概30元一个月,就可以拥有一个自主玩耍的环境!

https://www.vultr.com/?ref=8078200

安装的时候直接可以使用Git 于是只需要安装jdk,maven,mysql

安装jdk (免费的openjdk)yum install java-1.8.0-openjdk* -yjava -version导入环境变量vim /etc/profile---修改在尾部追加export JAVA_HOME=/usr/lib/jvm/javaexport CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JAVA_HOME/jre/lib/rt.jarexport PATH=$PATH:$JAVA_HOME/bin安装mavenyum -y install wget (如果没有wget可以安装一下)wget http://mirrors.cnnic.cn/apache/maven/maven-3/3.5.4/binaries/apache-maven-3.5.4-bin.tar.gztar -zxvf apache-maven-3.5.4-bin.tar.gzvi /etc/profileexport MAVEN_HOME=/data/apache-maven-3.5.4export PATH=$MAVEN_HOME/bin:$PATHsource /etc/profilemvn -version

mysql采用面板安装,本次不做介绍,感兴趣的同学可以回复mysql获取进一步的了解。

安装好基础环境,就可以依据jblog官方的安装步骤进行操作了:

编译jblog jar包git clone https://github.com/guohai163/jblog.gitcd jblogmvn clean package修改配置文件cp src/main/resources/application.yml /{workspaces}/config/vim /{workspaces}/config/application.ymlmysql -u jblog -p jblog < init.sqlcp target/jblog-[version].jar /{workspaces}/jblog.jarnohup java -jar jblog.jar --spring.config.location=/{workspaces}/config/application.yml &

小插曲

jblog采用了对数据库密码进行了加密,文档里有没有提到怎么进行加密处理。找到jblog发起人,解决了问题,可以暂时关掉加密​。只需要去掉默认的2​行配置。

server:  port: 8002  tomcat:    uri-encoding: UTF-8spring:  datasource:    type: com.alibaba.druid.pool.DruidDataSource    druid:      url: jdbc:mysql://blog.db:3306/jblog?useUnicode=true&characterEncoding=UTF-8&allowMultiQueries=true      username: blog      password: 写明文密码      filters: config //删除      connection-properties: config.decrypt=true;config.decrypt.key=MFwwDQYJKoZIhvcNAQEBBQADSwAwSAJBAIBPhQVdNkfef9JUWlDYkL1DMhlfEzOiYEMyLO8gIY1gqOtL4+sUk06679uu7wT4WfDMRvVX5hA330/nr2e5vm8CAwEAAQ==//删除  freemarker:    template-loader-path: classpath:/web/    cache: false    charset: UTF-8    content-type: text/html    suffix: .ftl    check-template-location: true    expose-request-attributes: true    expose-session-attributes: true    request-context-attribute: requestmybatis:  configuration:    map-underscore-to-camel-case: truelogging:  level:    jblog.guohai.org.dao: debugmy-data:  #blog名称  blog-name: 海眼看世界  #blog作者  blog-author: H!Guo  #twitter账号  blog-twitter: freeguo  #blog二维码  blog-qrcode: https://guohai.org/assets/wechat.jpg

Jblog相关的问题都可以直接关注jblog发起人的公众号进行咨询,非常适合.net转java或新手进行练习!大神领队,各种问题都可以咨询!

巧妙拆分bolt提升Storm集群吞吐量

技术岛公众号
技术岛公众号

一个状态机的实现之路 没写过状态机还没看过状态机飞?带资深小白围观状态机的实现过程

 

通常来讲,状态机的实现有别人家的状态机,还有自己家的状态机!今天要分享的是同事家的状态机!状态机可以理解为维护对象行为,流转对象状态的代码组织方式!状态机能做的事情,普通的代码写法也能达到,使用状态机,更多考虑后期的可维护性!真的是好维护么?好维护的前提是理解状态机的实现​!状态机的实现是有很多种,这里仅介绍工作中同事实现的一个结果,与自己的理解​。采用大话状态机的​形式展开!

在荒岛上,有只企鹅(后续简称为QE),这只QE有三种状态,开心状态、休眠状态、满血状态,要达到开心状态,则要打豆豆,要达到休眠状态,则要睡觉,要达到满血状态,则要​吃饭。开心状态的时候,可以通过睡觉,转化为休眠状态。满血状态的时候,即可以通过睡觉,转化为休眠状态,也可以​通过打豆豆,转化为开心状态。

从状态机的角度来看这只QE的生活状态,就是吃饭、睡觉​、打豆豆。不同的行为会让这只QE进入不同的状态。

这只QE深信开心的时候不能吃饭,不然会被咽死,所以开心状态不能通过吃饭这个动作转化为满血状态​。睡觉的时候,不能吃饭、不能打豆豆,所以有了上面这个调整后的状态机​图示。图示解密了状态机的以下特征:

  1. 进入某个状态,是要执行相应的个动作。目前来看,一个抵达特定状态,要执行一个特定的动作。
  2. 状态之间可以存在转化关系​。有单向、多向的转化存在,视QE的信仰​而定。
  3. 单一​职责。每个状态处理器,包括了状态变化的所有动作,但是,其中一个动作是对应转化为当前状态所需做的​动作。比如QE的开心状态处理器,打豆豆是转化为开心状态所需做的动作。吃饭虽然也在开心状态处理器中,但是QE不会这么干!标黑,意味着,开心状态下不会去做吃饭这个动作,纵使QE有这个动作​。睡觉也在QE开心状态处理器,但是开心状态处理器,只管开心相关的动作,遇到睡觉,则将动作转到​休眠状态处理器。

采用状态机的方式来看QE的生活,用状态机代码模拟EQ生活的时候,可以很好的应对QE文化的变迁。状态之间的转化调整也很好实现。比如QE突然发现,开心时吃饭并不会被咽死,于是,QE生活状态机​发生了小小的变化。

开心状态处理器只需要将吃饭这个动作转交给满血状态处理器,执行吃饭,即可满足一次文化大变迁。如果QE有新的状态新的动作出现,比如说清醒状态,相应的动作为起床,那么,所有的状态处理器,都需要补上缺失的起床动作。

状态之间的变化在于QE生活的习惯,QE的世界没有睡懒觉的习惯,所以清醒状态下,不能又​接着睡觉。但是清醒状态下,可以吃饭、可以打豆豆。

故事讲到这里,大概了解到了QE生活状态机的​来龙去脉了。采用状态机描述QE状态变化,能较好的适应变化​。每个状态处理器遵循了单一职责,易于​维护与扩展。如何采用Java代码实现这样一个状态机​呢?关注公众号,且​听下回分解!

技术岛公众号
技术岛公众号

 

云打包平台一种快速实现方案 base on CI系统 利用开源现成产品组装一个云打包服务平台 让小白也能拥有自己的个性App

今天花时间看了看CI系统搭建教程,感觉在CI系统的基础上构建一个云打包服务平台,比CI本身的意义更为重大。很多中小企业,微型企业,没有自己的技术团队,个性APP可望而不可及。今天聊到的云打包平台就是在这样一个背景下,希望让每一个中小企业个人都拥有自己的品牌app,如同微信公众号打出的口号,再小的个体也有自己的品牌。

CI系统

持续集成关注于将单一的JavaWeb、.net Web、android apk,iOS等项目,通过代码拉取、质量检测(sonarqube)、单元测试、自动化测试、构建、部署一系列步骤完成集成工作。

云打包

云打包关注为客户提供个性定制程序包,可以是站点、APP程序等。云打包所使用到的开源产品与CI系统所使用到的开源产品同属于一个技术栈,是一样的。只是云打包的输入输出有所不同。

CI系统如何变身为云打包

云打包所使用到的JavaWeb、.net Web、android apk,iOS等项目的构建环境是一样的,不同之处在于,CI系统直接拉取源代码进行构建,而云打包,需要增加Setting服务、程序模板库,通过Setting+程序模板库生成客户定制好的源代码,接下来就是使用生成好的源代码进行构建,完成云打包。

云打包平台搭建教程

在CI系统搭建教程的基础上,增加云打包面板、软件模板仓库(SoftTpl)、客户产品仓库 (SoftPrd),其中云打包面板提供Setting服务,收集用户对软件的个性定制信息,比如logo、包名、提示语、欢迎页等等,SoftTpl仓库存放软件模板,SoftPrd存放整合了用户定制信息的软件源代码仓库,是以SoftTpl为基础,加入了用户定制信息的​源代码仓库。

云打包与CI基础设施共享

从本文封面以及安装部署教程上简易的推导就能得到一个合理的结论,云打包可以完全重用CI系统的基础设施,只是需要一个云打包管理后台,利用CI所提供的打包构建环境进行个性化打包操作。当然如果云打包面向全网提供打包服务,打包服务器的数量要求上会有很大的不同。没有太大的服务压力的话,与CI共享基础设施是​不错的选择。

​看到这里,你应该可以:

  1. 为全中国大大小小旅行社构建个性化APP
  2. 为各行各业建立一个自助APP平台
  3. 为每个酒店Build个性化APP

4.为xxx打包个性化APP

今天就写到这里,先小睡一会儿~

未完,待续,关注技术岛公众号,带你一步一步搭建云打包平台!

技术岛公众号
技术岛公众号

JBlog 15年技术大神带小白玩开源项目 梦想从这里启航 一代技术人带新人见证技术变迁

个人参与JBlog预期收获

  1. 从0学会玩开源
  2. 从.net转java绝佳的练习,15年技术大神带队
  3. 学会Git
  4. 学会自动构建
  5. 学会服务器管理
  6. 学会博客系统架构
  7. 免费的科学上网指导,技术资料不再有国界

企业参与收获

将公司团队打造成一支敏捷开发团队,构建全自动的CI系统,理顺研发流程,持续的产品研发交付能力​!​

正文

每个开源项目的背后,都有一群为梦想执着的人!从asp+access到.net+mssql到php+mysql到java+mysql,见证技术变迁!用过wordpress,用过blogengine,用过phpcms,用过dedecms,各式各样的建站系统!随着版本的迭代,很多产品越来越成熟,也离梦想越来越远!很多时候,功能越多,并不意味着适合自己。

对于写博客来说, WordPress是很流行,我也是一名wordpress用户,但是一直磨灭不了自己要写一个自己的博客小系统,感觉自己写的,才能真正满足使用需求,而不是被别人所牵引。

相信很多人都有这么一个小小梦想,就是拥有一个自己的小系统,亲手打造,能被众多“信徒”所喜爱。很多人没有亲眼见证过一个系统从无到有,从无人使用到广受欢迎的历练过程。或许JBlog是一个小白成长的不错选择。

JBlog发起人是一位技术大佬,拥有15年工作经验,从大佬的博客上所见,在大数据搜索、游戏开发、自动构建、技术管理、CMS系统架构、网络管理等领域都有深入的研究。

JBlog将从无到有,从一个简单的小博客逐渐壮大起来!这个过程是漫长的,值得期待了,更是小白的一次历练机会!学会从无到有,从0基础到掌握系统研发、架构、管理!

关注大佬的公众号,参与JBlog开源项目!

如何参与?

JBlog是托管在Github.com上面,对于Github的使用,大佬的公众号都有讲,就不废话了,关注公众号去看吧!

JBlog部署

JBlog的文档在大佬的公众号里都有提到,不再赘述!

代码贡献

JBlog采用Github管理,代码贡献要通过大佬审核,大胆的fork,push吧!

关注大佬的公众号:海哥聊技术

适合程序员码农IT人士的简易理财方式 无需盯盘 无需购买资讯信息 无高额门槛 在线实时开户 享受全球资产配置服务 宜信在线开户篇

理财的方式是多种多样的,储蓄也算是一种理财,股票、基金、黄金、白银网货也不例外。对于理财来讲,都存在一定的风险!从收益与风险的平衡来讲,个人比较倾向于网货产品。即能获得稳定的收益,风险也在可控范围内。目前宜信推出的新人专享加注册红包,折算出来的预期年化率可达30%,新人体验福利首选!

一、为啥排除股票、基金、黄金、白银

搞IT,基本上等同于加班族!盯盘,宏观经济分析,业务趋势研究,这些经济方面的东西,并不是所擅长的。何况,故事有1挣2平7亏的“魔咒”,即只有10%的人能挣到钱,余下的都是炮灰。风险还是比较大的。

二、网贷

网贷产品,选择一个靠谱的平台,还是比较省心的。预期的收益也比较稳定,也用研究这研究那的。当然,选择平台也是一门学问。选择网贷创始平台,选择三证齐全的平台,算是给自己的血汗钱找个安心稳定的家。

网贷行业是一个发展迅猛又有争议的行业,经历了快速发展,行业洗牌!行业的乱想也引来了各种监管措施,从资金存管到等级保护,从存量控制到良性清退!每当一个新型的行业出现,都会引来一波跟风的,洗牌再所难免!我的选择是网货创始平台宜信,其他平台都是跟风的。

网货平台资质

资金存管帐户增值电信业务经营许可证信息安全等级保护备案三级这个是网贷行业基础标配,没有资金存管帐户的,不要碰,没有增值电信业务经营许可证的不要碰,没有等保三级的不要碰,这是基本的底线!

开户流程

今天介绍的宜信网贷开户流程!目前宜信提供的不仅仅是网贷,涵盖了全球资产配置、海外游学、投资置业、全球移民、家族信托等服务!

通过扫码(长按二维码),注册开通好宜信财富管理帐号。接下来带领大家完成一笔网贷理财。一共七步,选择产品、实名认证、绑定银行卡、风险测评、开通存管帐户并授权、确认订单并支付、查看我的财富!有图有步骤,一步一步完成第一笔网贷出借!

一、选择出借产品

新客户注册时会送292元红包,首次出借时,可以选择新手专享产品!

二、完成实名认证

首次出借时,点击产品页的“确认出借”后,APP会提示您进行实名认证。

三、绑定银行卡

实名认证通过后,APP会提示您绑定银行卡

四、风险测评

绑定银行卡后,APP会提示您进行风险测评

五、开通存管账户并授权

六、确认订单并支付

七、查看我的财富

宜信不仅提供网贷服务,还有更多全球资产配置服务!涵盖了移动、资产配置、家族信托等等。

离岸家族信托

离岸信托流程

今天码农财富篇就要告一段落了!赶紧插播一条赞助商广告,完成今天最后的任务!

图书云公众号二维码
图书云公众号二维码

图书云 共享图书

用Elasticsearch打造自主站点内搜索引擎 用开源技术成就个性化搜索 带小白玩转es开源搜索 No Code Talk

提到实现搜索功能,很快就想到sql的like模糊查找 ,很快就想到Lucene、Elasticsearch、solr,这些都是要实现搜索功能的关键术语。今天将分享的是采用Elasticsearch打造自主站内搜索引擎的实战经验分享。本文不是讲原理,不是分析es源代码,也不是讲es故事的,仅从应用角度,带小白运用es打造一个简易的搜索引擎。

一、为什么要使用elasticsearch

选elasticsearch,冲着开源免费,内置Lucene分词,在主自搜索引擎这块,es还是很有名气的。相比较于关系型数据库,elasticsearch倒排索引,能有更加高效的搜索性能。对于一般企业来讲,重复造轮子的成本太大,使用es算是一个不错的选择。

二、自主搜索引擎的基本组成

自主搜索引擎主要由elaticsearch安装、数据同步服务与Elastic Search High level API三大块组成。下面分别介绍这三大块。

2.0 安装elasticsearch

安装教程之前有专门写了一个小白序列,可以参考。

Storm Topology : Elasticsearch & Redis 构建实时性低延时数据统计分析 呈现大数据分析效果

2.1 数据同步服务 建立es索引

数据同步服务,即将需要用于搜索展示的数据组装好,同步到es,这个过程是利用es建立索引的过程。服务一般以后台服务的形式定时执行。我们的做法是,针对需要查询的数据,写操作日志,包括增、删、改操作,同步服务定时检查日志,将数据同步到es上。一般是多个表组合好的业务数据,对应es上的一个索引类型。若是同步服务写得好,应该可以将同步服务做成透明的,通过配置,直接将数据对接到es,显然,我们没有造这种“面包机”,我们在mysql里有建立操作日志,专门用于es同步。同步服务会记录操作日志进度,不断同步业务数据到es.基本上,写完这个服务,基本上就完成很大一块工作了,成功的希望就在眼前。

关注ChinaHadoop公众号,回复”Elasticsearch”可获取一份《创建index和type.txt》

2.2 使用elasticsearch High Level API查询数据

准备好了同步服务,有了索引数据,接下来就是使用数据了。在这里推荐使用的是elasticsearch High Level API,为什么不推荐其他api或映射框架?因为我就会这一种方式啊!算是抛砖引玉,想了解更的方式,可以关注公众号,期待下一个回合。

你可能会见到的包引用,以java为例

POM包

<!-- elasticsearch.client -->      <dependency>        <groupId>org.elasticsearch.client</groupId>        <artifactId>elasticsearch-rest-high-level-client</artifactId>        <version>6.7.2</version>      </dependency>
import org.elasticsearch.action.DocWriteResponse;import org.elasticsearch.action.delete.DeleteRequest;import org.elasticsearch.action.delete.DeleteResponse;import org.elasticsearch.action.index.IndexRequest;import org.elasticsearch.action.index.IndexResponse;import org.elasticsearch.action.search.SearchRequest;import org.elasticsearch.action.search.SearchResponse;import org.elasticsearch.action.update.UpdateRequest;import org.elasticsearch.action.update.UpdateResponse;import org.elasticsearch.client.RequestOptions;import org.elasticsearch.client.RestHighLevelClient;import org.elasticsearch.common.unit.TimeValue;import org.elasticsearch.common.xcontent.XContentType;import org.elasticsearch.index.query.BoolQueryBuilder;import org.elasticsearch.index.query.QueryBuilders;import org.elasticsearch.search.SearchHit;import org.elasticsearch.search.builder.SearchSourceBuilder;import org.elasticsearch.search.sort.FieldSortBuilder;import org.elasticsearch.search.sort.SortOrder;

其他语言的就不帖了,可以到官方站点寻找。感觉官方还是有所保留就是。使用Elasticsearch High Level写查询,相比较于sql,会有一种强烈的不适感,应该有现成的工具可以将sql脚本转化为elasticsearch High level对应的查询代码吧,在这里简单晒一下查询代码的一点神态。

BoolQueryBuilder boolBuilder = QueryBuilders.boolQuery();boolBuilder.must(QueryBuilders.termsQuery("title", “ChinaHadoop”));boolBuilder.must(QueryBuilders.termsQuery("content","公众号"))

不要太惊讶,就是这么晦涩与不爽的节奏!写习惯的sql,再来写这种“奇葩”的查询代码,是不是有种“生无可恋”的感受?不用太担心,关注ChinaHadoop公众号,回复”Elasticsearch”可获取一份小白 demo,初始化High Level API Client,定位index,type,多种查询条件代码,覆盖常见查询场景,完全不用烧脑,享受ChinaHadoop干货经验,快速打造自己的搜索引擎!

本文从应用的角度介绍了如何运用Elaticsearch搭建自主的搜索引擎解决方案,从环境安装、索引建立、同步索引数据,到使用Elastic High Level API进行数据查询,覆盖了一个简易自主搜索引擎的全生命周期,小白可参考本文实现一个自主搜索引擎,遇到问题可回复ChinaHadoop,得到指导与帮助。

关注ChinaHadoop 走进大数据实战

技术岛公众号
技术岛公众号

赞助商广告

 

 

ChinaHadoop携手宜信星火金服 送出292元IT理财增值礼包 新手标预期年化达30% 宜信新手标 体验小白线上财富管理

活动介绍

本次ChinaHadoop携手宜信星火金服,为粉丝开启在线财富管理,享受宜信专业金融科技企业服务!

活动礼包:292元活动红包

活动亮点:新人抢月标,折合预期年化近30%!

领取地址领取礼包

宜信介绍

宜信创建于2006 年,总部位于北京。宜信是一家从事普惠金融和财富管理事业的金融科技企业,在支付、网贷、众筹、机器人投顾、智能保险、区块链等前沿领域积极布局,通过业务孵化和产业投资参与全球金融科技创新。成立十一年以来,始终坚持以理念创新、模式创新和技术创新服务中国高成长性人群、大众富裕阶层和高净值人士,真正的让金融更美好。

宜信荣誉

 

Global View

宜信星火平台可提供专业一站式全球资产配置服务。资产配置的优势:可以拥有更多的投资机会,最大限度提高收益,加强投资流动性;保障子女教育、养老规划、投资移动等各类支出需求。

强大风控实力

宜信凭借13年丰富行业经验与数据积淀,以“4+1道防线”进行资产管理,科技建模、信用评分、信息整合、智能防欺诈等,全流程风控体系科技完备抵御风险!

智库

宜信坚持从本源出发积淀发展能量,严选全球数十家顶级智库,建立长期深度合作,通过与强大外脑的知识经验碰撞,辨别行业前景,解析发展方向。

第三方资金存管

宜信是全国最早进行资金存管的平台之一!2015年7月,宜信即与广发银行达成合作,2018年3月,存管帐户再次安全升级。客户可在宜信星火直接开户,出借更安心!

国际化精英团队

宜信拥有行业顶尖的管理与服务团队,曾任职顶级团队国际银行的风控牛人,国际名校,500强名企出身的技术大加,以一流经验和顶级水准推动企业进步发展!

信息系统安全等级保护备案证明

在信息系统安全等级评测中,宜信成功取得“等保三级”认证,这是我国对非银行金融机构的最高认证,也被誉为“史上最难认证”!

电子签章

宜信已全面上线电子签章功能,通过网络技术实现签章管理高度技术化,为用户提供更便捷高效的安心服务体验。电子签章优势,合规有效,具备法律效应享合法权益;高效便捷,客户可随时随地调取查验;安全保障,加密护防篡改伪造销毁!

增值电信业务经营许可证

作为网货行业“硬门槛”的增值电信业务许可证,宜信也早已严格按要求收入囊中!

快捷支付限额表

网银支付限额

投资有风险 理财请谨慎

ChinaHadoop携手图书云打造大数据主题图书馆 免费企业图书馆 私人图书馆 共享图书更加便捷高效 扫码即刻开启图书共享时代

图书云为共享图书平台,通过图书云微信公众号可将自己的闲置图书共享出来,建立自己的微信私人共享图书馆,可与附近的朋友、同事、好友、群友、同学、邻居、俱乐部成员等分享自己的图书!也许,自己沉睡的图书是他人成长的阶梯!通过图书云,可以打造私人图书馆、企业图书馆、小区图书馆​!

本次ChinaHadoop携手图书云活动分为微信私人图书馆与企业图书馆两大活动主题!关注图书云公众号可开通私人图书馆,将自己的图书共享到平台,就近分享,特别适合​邻居、同事共享图书!动手能力强的可以自行扫码探索!想先了解的,可以扫码后,看看ChinaHadoop为图书云开设的介绍​!

图书云公众号二维码
图书云公众号二维码

一、私人图书馆

每个IT人士,或多或少都会有些​图书,这些书一点也不便宜!尤其是外文原版图书,看完也舍不得丢了,当废品卖了,更是​心疼!建立一个自己的私人小图书馆,让朋友邻居借着看,感觉就是不​一样!

1.1 巧用扫码录入

图书云支持扫码录入图书,扫图书的条形码,可直接将图书录入到平台,结合lbs技术,可让周围的朋友看到自己的图书!快速高效录入!

1.2 巧用书单码

图书云书单码是私人图书馆的快速入口,分享给朋友后,可让朋友进入到自己的私人图书馆中,浏览图书清单!支持分享到朋友圈,与圈里的​小伙伴共同图书!

1.3 实时微信提醒

关注图书云公众号之后,一旦有小伙伴相中的图书,能收到微信的实时提醒​!通过图书云小程序,可与借书的小伙伴进行实时文字聊天​!约时间、约地点,完成一次图书的​借阅!

二、图书云企业图书馆

图书云支持企业微信,通过图书云企业微信入口,可由企业微信管理员开通图书云企业微信功能,还未开通企业微信的企业负责人,可直接通过以下二维码​进行开通!非企业微信管理人员,无法直接开通,需要找管理员扫码开通!图书云​企业版,也是免费的!

图书云不仅支持私人图书馆、企业图书馆,也支持更多应用场景,可建立社区图书馆、微群图书馆、俱乐部图书馆、社区图书馆!更多的应用​场景等着大家去发现!ChinaHadoop欢迎各位小伙伴共享Hadoop大数据图书,共同建立以大数据为主题的线上​虚拟图书馆!

图书云  共享创建价值