- 【推荐一款实体类转换工具 MapStruct,性能强劲,简单易上手 】
Fightover
1.什么是MapStruct1.1JavaBean的困扰对于代码中JavaBean之间的转换,一直是困扰我很久的事情。在开发的时候我看到业务代码之间有很多的JavaBean之间的相互转化,非常的影响观感,却又不得不存在。我后来想的一个办法就是通过反射,或者自己写很多的转换器。第一种通过反射的方法确实比较方便,但是现在无论是BeanUtils,BeanCopier等在使用反射的时候都会影响到性能。虽
- BeanUtils和BeanCopier性能复制Bean工具比较
程序员Forlan
Javajava
文章目录一、前言二、实验三、原理1、BeanUtils2、BeanCopier四、总结一、前言我们本篇比较的是复制Bean对象的工具,分别是org.springframework.beans.BeanUtils和net.sf.cglib.beans.BeanCopier二、实验importnet.sf.cglib.beans.BeanCopier;importorg.springframework
- @Data和@Accessors(chain = true)冲突,实体类copy赋值
一口两个馍
javaspringboot
在使用Lombok的时候,@Data这个注解很常用,有些时候在使用@Accessors(chain=true)这个注解后会发现文件赋值不能使用,BeanCopier和PropertyUtils.copyProperties这个俩都不能使用,可以使用org.springframework.beans.BeanUtils.copyProperties(source,target)这个方法
- Django个人博客开发 | 前言
stormsha
django个人博客开发djangohtmlpython个人博客
本渣渣不专注技术,只专注使用技术,不是一个资深的coder,是一个不折不扣的copier1、前言自学Python,始于Django框架,Scrapy框架,elasticsearch搜索引擎,最初的目的是毕业设计需求,毕设项目是做一个类似百度的搜索引擎。从2018年二月份毕设课题确定,是我学习Python的开始,到2018年5月份毕设完成,并不是我学习Python的结束。目前仍然从事Python开发
- bean 属性COPY
执于代码
【Java语言】
bean属性COPY目录概述需求:设计思路实现思路分析1.创建对象并赋值2.PropertyUtils3.SpringBeanUtils4.CglibBeanCopier5.直接set拓展实现(性能测试)相关工具如下:实验效果:(解决思路)分析:小结:参考资料和推荐阅读LDistiggerforever,CGarenotbrothersforever,throwthepotandshine.Rid
- 教你如何快速下载网站?如何仿制网址,下载网站,获取网站html文件,图像文件
Jon Daijn
杂文html
原文地址:https://www.toymoban.com/diary/share/92.html如何仿制网址,下载网站,获取网站html文件,图像文件1、本文通过WinHTTrackWebsiteCopier软件讲解如何实现下载网站进行离线访问。安装包:httrack_x64-3.49.2.zip,点击下载。2、点开软件,按照默认安装即可,注意安装路径,建议非C盘,例子为D盘。3、安装完成后,打
- BeanCopier、BeanUtils对象属性拷贝
Djbfifjd
在做业务的时候,为了隔离变化,我们会将DAO查询出来的DO和对前端提供的DTO隔离开来,它们的结构都是类似的。写很多冗长的b.setFiled(a.getFiled())这样的代码,是繁琐无意义的。于是需要简化对象拷贝方式。大多时候使用的是Apache或Spring的BeanUtils,还有另一个更高效的属性拷贝方式:BeanCopier。一、背景1️⃣对象拷贝概念Java中,数据类型分为值类型(
- myBatis源码解析-反射篇(4)
联旺
1property包-主要对类的属性进行操作的工具包1.1PropertyCopier包利用反射类Filed进行属性复制复制代码//该类作用将sourceBean与destinationBean相同属性名的属性进行值复制publicclassPropertyCopier{//属性复制publicstaticvoidcopyBeanProperties(Classtype,ObjectsourceB
- 试用程序实现不使用缓存字节数组的方法复制C盘根目录下的a,jpg到E盘下的a.jpg
哦豁哇哦哦哦
缓存c语言java
importjava.io.*;publicclassFileCopier{publicstaticvoidmain(String[]args){StringsourcePath="C:\\a.jpg";//源文件路径StringdestinationPath="E:\\a.jpg";//目标文件路径copyFile(sourcePath,destinationPath);System.out.p
- 试编程实现使用缓存数组的方法实现从C盘根目录复制文件a.jpg到E盘根目录
哦豁哇哦哦哦
缓存c语言java
importjava.io.*;publicclassFileCopier{privatestaticfinalintBUFFER_SIZE=4096;publicstaticvoidmain(String[]args){StringsourcePath="C:\\a.jpg";//源文件路径StringdestinationPath="E:\\";//目标文件夹路径copyFile(source
- java 对象属性复制
逗逼程序员
业务系统中经常需要两个对象进行属性的拷贝,不能否认逐个的对象拷贝是最快速最安全的做法,但是当数据对象的属性字段数量超过程序员的容忍的程度,代码因此变得臃肿不堪,使用一些方便的对象拷贝工具类将是很好的选择。性能对比:BeanCopier>PropertyUtils>BeanUtils.其中BeanCopier的性能高出另外两个100数量级。目前流行的较为公用认可的工具类:Apache的两个版本:(反
- Lintcode437 Copy Books solution 题解
程风破浪会有时
【题目描述】GivennbooksandtheithbookhasA[i]pages.Youaregivenkpeopletocopythenbooks.nbookslistinarowandeachpersoncanclaimacontinousrangeofthenbooks.Forexampleonecopiercancopythebooksfromithtojthcontinously,b
- golang转换结构体到map 弥补copier.Copy的不足
zhenshanrenhao
javascript开发语言golang数据结构
生日随想三月阳春人渐老万事不遂心中悲何年携孙游陇上不负流年去无回import("errors""log""reflect")//转换结构体到mapfuncCopyStr2MapX(pinterface{})map[string]interface{}{str2Map,_:=CopyStr2Map(p)returnstr2Map}//转换结构体到mapfuncCopyStr2Map(pinterfa
- Go源码解析:copier库
了-凡
Go语言学习#Go语言官方包源码阅读
注:该文章源码分析参考copier目录源码包代码阅读1、tag标签说明2、静态参数3、整体设计4、辅助方法说明I、获取实际的Type和ValueII、Tag处理III、获取结构体Field切片IV、检查结构体复制结果V、对结构体进行设值5、Copy主方法说明I、参数说明II、不可寻址III、非ValidIV、可转换结构体的转换V、两个类型都是map的处理VI、只有一个类型是结构体的处理VII、判断
- golang Copier 数据复制
编号996
gogolangcopier工具包
CopierIamacopier,IcopyeverythingfromonetoanotherCopier是golang实现的,实现不同数据结构之间数据复制的工具包github地址使用方法以User和Employee之间相互复制为例使用的版本为v0.3.5入门packagemainimport("fmt""github.com/jinzhu/copier")typeUserstruct{Name
- 【Java对象拷贝机制】「实战开发专题」高性能使用CGlib实现Bean拷贝(BeanCopier)指南
洛神灬殇
深入浅出Java原理及实战mavenmybatisjava
对象拷贝现状业务系统中经常需要两个对象进行属性的拷贝,不能否认逐个的对象拷贝是最快速最安全的做法,但是当数据对象的属性字段数量超过程序员的容忍的程度,代码因此变得臃肿不堪,使用一些方便的对象拷贝工具类将是很好的选择。模型数据转换项目中或多或少会对某些实体进行转换(DTO、VO、DO或者PO等),往往具有相同的属性名称,数量少的情况下我们可以直接采取set、get方法进行赋值,可是如果这样的转换在很
- 对象属性拷贝常用的四种方式(总结出最高效率)
伏加特遇上西柚
#java工具java开发语言后端
对象属性拷贝常用的四种方式一、背景1.1对象拷贝概念1.2为什么需要拷贝对象1.3有哪些拷贝方式二、BeanUtils2.1、单个对象拷贝2.2、集合拷贝2.3暴力拷贝(不推荐)2.4优雅拷贝(本文推荐)2.4.1定义一个函数式接口2.4.2封装一个工具类==BeanUtilCopy.java==2.4.3简单拷贝测试2.5小结三、BeanCopier3.1常规使用3.2自定义转换器3.3缓存Be
- 电脑微信转发文件的时候造成了电脑奔溃
luooove
很长一段时间里在用电脑微信转发的时候会造成电脑奔溃,但是同事都没有这个问题,后来发现是因为安装了一个Ultracopier的文件复制工具。卸载后就没有这个问题了。
- 【Java生态圈技术总结】之深度剖析MapStruct对象拷贝工具
掂掂三生有幸
原力计划JAVAjavaspringapache性能优化原力计划
目录导航一、常用的对象拷贝工具基本介绍1.1ApacheBeanUtils1.2SpringBeanUtils1.3cglibBeanCopier1.4HuToolBeanUtils1.5MapStruct1.6getter&setter1.7总结二、使用介绍2.1准备工作2.2映射2.2.1基本映射2.2.2不同属性名映射2.2.3不同个数属性映射2.2.4多个源合并映射2.2.5子对象映射2.
- golang 对不同结构体中数据进行相互转换的几种常用方法
招手熊
golanggolang开发语言后端
golang对不同结构体中数据进行相互转换的几种常用方法常用的不同结构体中的数据相互转换的方法1.利用json包的marshal和unmarshal2.使用第三方包copier进行数据转换3.对结构不同的结构体进行转换常用的不同结构体中的数据相互转换的方法1.利用json包的marshal和unmarshal要求:json标签的值必须一致示例:packagemainimport("encoding
- 使用BeanCopier复制对象属性值,遇到NullPointerException?
程序员Forlan
Javajava后端
文章目录一、场景二、问题三、分析四、解决五、总结一、场景项目中,为了数据安全,由于身份证属于敏感信息,需要加密后返回给页面解密显示,但DTO中出现了一种骚操作,身份证的get方法,把身份证转成大写的了,当我们通过BeanUtils.copyProperties复制属性值给VO对象,就会调用get方法获取值,然后赋值,所以我们的加密内容会被转为大写,导致页面无法解密,最终我们额外写了一个getIde
- [总结翻译] The revitalization of a 19-th century industrial building 19世纪工业建筑重获新生_The Threshold pod...
苹果放阳台
newssource新闻来源:https://inhabitat.com/uber-transforms-19th-century-industrial-buildings-into-hub-for-futuristic-tech/TheUberAdvancedTechnologiesGroupR&DCenterhasmovedintoSanFransicoPier70,a19-thcentury
- 3D路径,控件
cfqq1989
PLC编程(汇川禾川)PLC
主要分3大块:1控制面板vc:VisuStruct3DControl;//用于绑定3d轨迹控件的按钮【需要安装库path】2轨迹图:【整体图】SM3_CNC_Visu.SMC_PathCopierCompleteQueue;//坐标流轨迹图SM3_CNC_Visu.SMC_PathCopierFile;//文本轨迹图SMC_PositionTracker(FB)//电机坐标点SMC_PathCop
- Java:对象属性拷贝如dto转do和do转dto的2类方法
hexter
1,直接用现成的库如:Cglib的BeanCopier依赖BeanCopier支持两种方式拷贝:1,简单拷贝,仅对两个bean间属性名和类型完全相同的变量进行拷贝;2,自定义Converter的拷贝,可以对某些特定属性值进行特殊转换操作后拷贝简单拷贝:只要字段类型和名称相同就能直接拷贝:结果如果需要对集合数据进行拷贝,比如List,Map,可以自己封装个工具类。测试结果当源和目标的属性有名称相同但
- 【业务功能篇71】Cglib的BeanCopier进行Bean对象拷贝
studyday1
业务场景实例问题JavaSpringbootjavaspringboot对象拷贝
选择Cglib的BeanCopier进行Bean拷贝的理由是,其性能要比Spring的BeanUtils,Apache的BeanUtils和PropertyUtils要好很多,尤其是数据量比较大的情况下。BeanCopier的主要作用是将数据库层面的Entity转化成service层的POJO。BeanCopier其实已经有很多开源版本,例如DozerMapper、ApacheBeanUtils、
- Java获取指定文件夹下目录下所有视频并复制到另一个地方
java李杨勇
日常开发问题记录java文件处理
importjava.io.File;importjava.io.IOException;importjava.nio.file.Files;importjava.nio.file.StandardCopyOption;publicclassVideoCopier{publicstaticvoidmain(String[]args){//指定源文件夹路径和目标文件夹路径StringsourceFo
- golang编译出现问题
ezreal_pan
Gogolang
现象:项目中引入了第三方包(github.com/jinzhu/copier),编译的时候出现了go:github.com/jinzhu/
[email protected]:verifyinggo.mod:github.com/jinzhu/
[email protected]/go.mod:readinghttp://192.168.24.11:3000/sumdb/sum.golang.org/lookup/g
- 主流属性拷贝工具速度比较
理查德成
摘要本文介绍四种主流的属性拷贝工具:PropertyUtils(commonsbeanutils)BeanUtils(commonsbeanutils)BeanUtils(Springbeans)BeanCopier(cglib)它们的属性拷贝都基于java内省,拷贝的对象类型必须提供setter/getter;经过拷贝速度测试:getter/setter速度最快,但是不适用于数量多的属性拷贝;B
- bean拷贝
yx️
springjava
平时常用的工具:ApacheBeanUtilsSpringBeanUtilsCglibBeanCopierMapStruct性能对比:MapStruct≈CglibBeanCopier>SpringBeanUtils>ApacheBeanUtils拷贝场景:同名同类型字段拷贝不同类型的属性拷贝,比如基本类型与其包装类型等不同字段名属性拷贝,当然字段名应该尽量保持一致,但是实际业务中,由于不同开发人
- BeanCopy 常用工具类
chy1984
常用API对象拷贝属性复制对象转换BeanUtilsclone
目录BeanCopy常见工具类硬编码MapStruct(推荐)cglib的BeanCopierspring-beans的BeanUtilsapache的BeanUtils浅拷贝与深拷贝使用Object的clone()方法实现浅拷贝通过反序列化实现深拷贝BeanCopy常见工具类硬编码手动get、set,性能最高,但写起来麻烦。MapStruct(推荐)需要引入依赖、自行定义mapper接口;编译时
- 解读Servlet原理篇二---GenericServlet与HttpServlet
周凡杨
javaHttpServlet源理GenericService源码
在上一篇《解读Servlet原理篇一》中提到,要实现javax.servlet.Servlet接口(即写自己的Servlet应用),你可以写一个继承自javax.servlet.GenericServletr的generic Servlet ,也可以写一个继承自java.servlet.http.HttpServlet的HTTP Servlet(这就是为什么我们自定义的Servlet通常是exte
- MySQL性能优化
bijian1013
数据库mysql
性能优化是通过某些有效的方法来提高MySQL的运行速度,减少占用的磁盘空间。性能优化包含很多方面,例如优化查询速度,优化更新速度和优化MySQL服务器等。本文介绍方法的主要有:
a.优化查询
b.优化数据库结构
- ThreadPool定时重试
dai_lm
javaThreadPoolthreadtimertimertask
项目需要当某事件触发时,执行http请求任务,失败时需要有重试机制,并根据失败次数的增加,重试间隔也相应增加,任务可能并发。
由于是耗时任务,首先考虑的就是用线程来实现,并且为了节约资源,因而选择线程池。
为了解决不定间隔的重试,选择Timer和TimerTask来完成
package threadpool;
public class ThreadPoolTest {
- Oracle 查看数据库的连接情况
周凡杨
sqloracle 连接
首先要说的是,不同版本数据库提供的系统表会有不同,你可以根据数据字典查看该版本数据库所提供的表。
select * from dict where table_name like '%SESSION%';
就可以查出一些表,然后根据这些表就可以获得会话信息
select sid,serial#,status,username,schemaname,osuser,terminal,ma
- 类的继承
朱辉辉33
java
类的继承可以提高代码的重用行,减少冗余代码;还能提高代码的扩展性。Java继承的关键字是extends
格式:public class 类名(子类)extends 类名(父类){ }
子类可以继承到父类所有的属性和普通方法,但不能继承构造方法。且子类可以直接使用父类的public和
protected属性,但要使用private属性仍需通过调用。
子类的方法可以重写,但必须和父类的返回值类
- android 悬浮窗特效
肆无忌惮_
android
最近在开发项目的时候需要做一个悬浮层的动画,类似于支付宝掉钱动画。但是区别在于,需求是浮出一个窗口,之后边缩放边位移至屏幕右下角标签处。效果图如下:
一开始考虑用自定义View来做。后来发现开线程让其移动很卡,ListView+动画也没法精确定位到目标点。
后来想利用Dialog的dismiss动画来完成。
自定义一个Dialog后,在styl
- hadoop伪分布式搭建
林鹤霄
hadoop
要修改4个文件 1: vim hadoop-env.sh 第九行 2: vim core-site.xml <configuration> &n
- gdb调试命令
aigo
gdb
原文:http://blog.csdn.net/hanchaoman/article/details/5517362
一、GDB常用命令简介
r run 运行.程序还没有运行前使用 c cuntinue 
- Socket编程的HelloWorld实例
alleni123
socket
public class Client
{
public static void main(String[] args)
{
Client c=new Client();
c.receiveMessage();
}
public void receiveMessage(){
Socket s=null;
BufferedRea
- 线程同步和异步
百合不是茶
线程同步异步
多线程和同步 : 如进程、线程同步,可理解为进程或线程A和B一块配合,A执行到一定程度时要依靠B的某个结果,于是停下来,示意B运行;B依言执行,再将结果给A;A再继续操作。 所谓同步,就是在发出一个功能调用时,在没有得到结果之前,该调用就不返回,同时其它线程也不能调用这个方法
多线程和异步:多线程可以做不同的事情,涉及到线程通知
&
- JSP中文乱码分析
bijian1013
javajsp中文乱码
在JSP的开发过程中,经常出现中文乱码的问题。
首先了解一下Java中文问题的由来:
Java的内核和class文件是基于unicode的,这使Java程序具有良好的跨平台性,但也带来了一些中文乱码问题的麻烦。原因主要有两方面,
- js实现页面跳转重定向的几种方式
bijian1013
JavaScript重定向
js实现页面跳转重定向有如下几种方式:
一.window.location.href
<script language="javascript"type="text/javascript">
window.location.href="http://www.baidu.c
- 【Struts2三】Struts2 Action转发类型
bit1129
struts2
在【Struts2一】 Struts Hello World http://bit1129.iteye.com/blog/2109365中配置了一个简单的Action,配置如下
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configurat
- 【HBase十一】Java API操作HBase
bit1129
hbase
Admin类的主要方法注释:
1. 创建表
/**
* Creates a new table. Synchronous operation.
*
* @param desc table descriptor for table
* @throws IllegalArgumentException if the table name is res
- nginx gzip
ronin47
nginx gzip
Nginx GZip 压缩
Nginx GZip 模块文档详见:http://wiki.nginx.org/HttpGzipModule
常用配置片段如下:
gzip on; gzip_comp_level 2; # 压缩比例,比例越大,压缩时间越长。默认是1 gzip_types text/css text/javascript; # 哪些文件可以被压缩 gzip_disable &q
- java-7.微软亚院之编程判断俩个链表是否相交 给出俩个单向链表的头指针,比如 h1 , h2 ,判断这俩个链表是否相交
bylijinnan
java
public class LinkListTest {
/**
* we deal with two main missions:
*
* A.
* 1.we create two joined-List(both have no loop)
* 2.whether list1 and list2 join
* 3.print the join
- Spring源码学习-JdbcTemplate batchUpdate批量操作
bylijinnan
javaspring
Spring JdbcTemplate的batch操作最后还是利用了JDBC提供的方法,Spring只是做了一下改造和封装
JDBC的batch操作:
String sql = "INSERT INTO CUSTOMER " +
"(CUST_ID, NAME, AGE) VALUES (?, ?, ?)";
- [JWFD开源工作流]大规模拓扑矩阵存储结构最新进展
comsci
工作流
生成和创建类已经完成,构造一个100万个元素的矩阵模型,存储空间只有11M大,请大家参考我在博客园上面的文档"构造下一代工作流存储结构的尝试",更加相信的设计和代码将陆续推出.........
竞争对手的能力也很强.......,我相信..你们一定能够先于我们推出大规模拓扑扫描和分析系统的....
- base64编码和url编码
cuityang
base64url
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.io.StringWriter;
import java.io.UnsupportedEncodingException;
- web应用集群Session保持
dalan_123
session
关于使用 memcached 或redis 存储 session ,以及使用 terracotta 服务器共享。建议使用 redis,不仅仅因为它可以将缓存的内容持久化,还因为它支持的单个对象比较大,而且数据类型丰富,不只是缓存 session,还可以做其他用途,一举几得啊。1、使用 filter 方法存储这种方法比较推荐,因为它的服务器使用范围比较多,不仅限于tomcat ,而且实现的原理比较简
- Yii 框架里数据库操作详解-[增加、查询、更新、删除的方法 'AR模式']
dcj3sjt126com
数据库
public function getMinLimit () { $sql = "..."; $result = yii::app()->db->createCo
- solr StatsComponent(聚合统计)
eksliang
solr聚合查询solr stats
StatsComponent
转载请出自出处:http://eksliang.iteye.com/blog/2169134
http://eksliang.iteye.com/ 一、概述
Solr可以利用StatsComponent 实现数据库的聚合统计查询,也就是min、max、avg、count、sum的功能
二、参数
- 百度一道面试题
greemranqq
位运算百度面试寻找奇数算法bitmap 算法
那天看朋友提了一个百度面试的题目:怎么找出{1,1,2,3,3,4,4,4,5,5,5,5} 找出出现次数为奇数的数字.
我这里复制的是原话,当然顺序是不一定的,很多拿到题目第一反应就是用map,当然可以解决,但是效率不高。
还有人觉得应该用算法xxx,我是没想到用啥算法好...!
还有觉得应该先排序...
还有觉
- Spring之在开发中使用SpringJDBC
ihuning
spring
在实际开发中使用SpringJDBC有两种方式:
1. 在Dao中添加属性JdbcTemplate并用Spring注入;
JdbcTemplate类被设计成为线程安全的,所以可以在IOC 容器中声明它的单个实例,并将这个实例注入到所有的 DAO 实例中。JdbcTemplate也利用了Java 1.5 的特定(自动装箱,泛型,可变长度
- JSON API 1.0 核心开发者自述 | 你所不知道的那些技术细节
justjavac
json
2013年5月,Yehuda Katz 完成了JSON API(英文,中文) 技术规范的初稿。事情就发生在 RailsConf 之后,在那次会议上他和 Steve Klabnik 就 JSON 雏形的技术细节相聊甚欢。在沟通单一 Rails 服务器库—— ActiveModel::Serializers 和单一 JavaScript 客户端库——&
- 网站项目建设流程概述
macroli
工作
一.概念
网站项目管理就是根据特定的规范、在预算范围内、按时完成的网站开发任务。
二.需求分析
项目立项
我们接到客户的业务咨询,经过双方不断的接洽和了解,并通过基本的可行性讨论够,初步达成制作协议,这时就需要将项目立项。较好的做法是成立一个专门的项目小组,小组成员包括:项目经理,网页设计,程序员,测试员,编辑/文档等必须人员。项目实行项目经理制。
客户的需求说明书
第一步是需
- AngularJs 三目运算 表达式判断
qiaolevip
每天进步一点点学习永无止境众观千象AngularJS
事件回顾:由于需要修改同一个模板,里面包含2个不同的内容,第一个里面使用的时间差和第二个里面名称不一样,其他过滤器,内容都大同小异。希望杜绝If这样比较傻的来判断if-show or not,继续追究其源码。
var b = "{{",
a = "}}";
this.startSymbol = function(a) {
- Spark算子:统计RDD分区中的元素及数量
superlxw1234
sparkspark算子Spark RDD分区元素
关键字:Spark算子、Spark RDD分区、Spark RDD分区元素数量
Spark RDD是被分区的,在生成RDD时候,一般可以指定分区的数量,如果不指定分区数量,当RDD从集合创建时候,则默认为该程序所分配到的资源的CPU核数,如果是从HDFS文件创建,默认为文件的Block数。
可以利用RDD的mapPartitionsWithInd
- Spring 3.2.x将于2016年12月31日停止支持
wiselyman
Spring 3
Spring 团队公布在2016年12月31日停止对Spring Framework 3.2.x(包含tomcat 6.x)的支持。在此之前spring团队将持续发布3.2.x的维护版本。
请大家及时准备及时升级到Spring
- fis纯前端解决方案fis-pure
zccst
JavaScript
作者:zccst
FIS通过插件扩展可以完美的支持模块化的前端开发方案,我们通过FIS的二次封装能力,封装了一个功能完备的纯前端模块化方案pure。
1,fis-pure的安装
$ fis install -g fis-pure
$ pure -v
0.1.4
2,下载demo到本地
git clone https://github.com/hefangshi/f