- 2018-10-09
17李登博
今天我见到了围棋老师,围棋老师给我们的贴画,我们坐在凳子上坐好了小手放膝盖小脚平平摆,眼睛微微闭,腰儿直起来,我坐直了老师送给我贴画,围棋老师给我们玩了游戏下棋,在电视上看见了19条线数线直线都是19条,我们还猜了谜语,别人都猜了我举着手老师没有叫我,我觉得那个谜语很好猜,我很喜欢上围棋课。
- loom 2018-10-09
花卷的学习笔记
背诵Anotherfinancialcrisisislooming。我的:Moreproblemisloomingwiththedevelopmentofthecompany。Asthecompanygrows,anumberofpotentialproblemslooms。公司逐渐发展,越来越多潜在的问题慢慢浮出水面。TheGaoKao,China'scollegeentranceexam.lo
- 2~觉醒语录2018-10-09
徐欢曙光
难的不是说爱而是吵架的时候还能记得爱难的不是扛事儿而是落魄的时候依然说责任都在我——觉醒语录
- 2018-10-09
失欲
1.清楚的知道自己产品的市场空间、消费群体、与其相竞争的产品进行比较所具有的优势等方面的内容。2.选择好适合自己的渠道,并结合自己产品的利润空间,考虑产品适合的销售模式,是直营,还是代理?或者两者双管齐下。其中选择较强网络、实力好、客情好、理念不错的经销商来做代理。3.有效整合资源适当结合当地情况做一些媒体投放,让分销商、二批商、零售商用最快的速度记住你的产品,从而达到进货数量的剧增。为企业带来较
- 2018-10-09
3aadf915e5cf
WhyIdon'tstudyhardWhynotstudyhardAssoonasIsawthetopicoftheEnglishwriting,itreallyamusedme.Atfirst,Ithoughtitwasalittlestrangetowriteaboutthistopicasastudent.ButwhenIbegantothinkaboutthereasonwhyyouask
- React官网摘抄
曹天骄
react.js前端前端框架
https://react.dev/learn1、组件名称大写2、变量,用{}vue中用{{}}react中用{}3、遍历4、state使用
- 2019-05-18 网摘
最爱可乐
from:https://www.v2ex.com/go/ideas手机当服务器,用途?按点击量排序的笔记/知识库软件常用的知识点需要经常查询,高频使用的将访问/点击数最多的笔记自动置顶,可以限制在某个笔记本/分类内。建个常用的目录?把我看过的美剧,提取含GT单词的视频片段,这样就有了例句,有了视频加深印象。而且你喜欢什么电影就拿什么电影来做,喜欢什么美剧就拿什么美剧来做。原理巨简单:找个字幕,英
- 06 “你这个磨人的小妖精,我喜欢”
简小鼠
作者|网摘来源|公众号:晚而不安(ID:syz-1840)每晚对你说一句,晚安。点击头像关注我,深夜和你分享有感情、有故事的文字。我绞尽脑汁也想不出是哪一刻开始想念你你就这样悄无声息地潜入我心底于是我满脑子都是你你的可爱,你的善良你的温柔与任性填满我的脑海,不留一丝空隙我想,我大概是喜欢上你这个磨人的小妖精了
- 2018-10-09
Catherine_龙猫
1工作心得:作为新老师不参与家访,只需要准备好备课就好。家访的目的是近距离走进学生家庭,进而了解学生的成长环境,从家长那了解到更多学生情况,拉近彼此的关系。为了尽可能多的了解学生,那就需要家长多向我们诉说学生情况,作为老师一定要懂得如何询问,而且要认真倾听。备课:第一遍通篇熟练课文,总结出重要知识点,确保每个单词发音准确,进行知识点归纳,感觉到有些生疏。不管怎样,先把自己觉得重要且基础的部分做好,
- 2018-10-09
画三两
国庆假期归来,黄老师今天带小朋友们讲述了自己国庆大假期间记忆最深刻的一天~黎乐凡讲述了自己在放假的时候和爸爸妈妈出去坐船的所见所闻,而李悦彤讲述了自己和妈妈一起在花园里玩耍的时候,看见了一个坠落滑滑梯的小姑娘被医生救治的故事~图片发自App图片发自App图片发自App图片发自App图片发自App图片发自App图片发自App图片发自App~
- 2018-10-09
Muuuuuuu
1.科学的用声,规范的吐字才是好声音的共性!2.科学用声,如果长期错误用声,会造成各种病变,比如:声带小结3.正确科学练声→气息练习→情、声、气统一4.情感是君王,气息是统帅,声音是士兵
- 2018-10-09
天黑黑_e3af
王丽组别:第377期六项精进努力二组组员【日精进打卡第151天】【知-学习】背诵《大学》开篇5遍共100遍背诵《六项精进》大纲5遍共100遍【经典名句分享】如果,有醒不了的梦,我一定去做;如果,有走不完的路,我一定去走;如果,有变不了的爱,我一定去求。让懂的人懂,让不懂的人不懂;让世界是世界,我甘心是我的茧。【行-实践】一、修身:做事要一丝不苟的完成,今日事今日毕。二、齐家:与父母谈谈近况。三、建
- 2018-10-09 关于我的“配得感”
Chris的另一个世界
今天早上有点冷,但是靠近中午的这会阳光渐渐明媚起来。我喜欢这样的天气。想起了最开始在穿越zg和xa两城途中的停靠站火车一开门明媚的阳光和俊朗的风。此刻我正坐在可爱的飘窗上身后有好些个靠垫让我感觉好很多。感受风和阳光还有半个窗帘帮我挡了射向电脑屏幕的光。脚踝被晒的暖暖的感觉特好。虽然有些腰痛好脖子僵硬但是心情还是很好的。想起昨天和mm聊到配得感这个话题,虽然在很多物质层面我还没能满足,但另一个层面我
- 阳光也是具有欺骗性的
澜梦雨
2018-10-09晴今天依然是阳光灿烂,出门前看着窗外明媚的阳光还以为是温暖的一天,于是衣着单薄的出门了,然而一出门我就懵逼了,直接冻得缩成了一团,风也很大,感觉头都要吹秃了……原来太阳也会骗人,有阳光但不一定温暖。仔细想想生活中挺多这样的「假象」的,阳光一直以来都被认为是温暖的,事实好像也是这样,但这是得有前提条件的,如果环境温度很低,太阳的温度也不能带来很多的热量,这让我联想到了之前写过的一
- 2018-10-09
柳叶箴
我从未想过,那个半生沉默坚忍的人,会仅仅因为我的一个未接电话而痛哭流涕,流露出我不曾见过的少年般的柔情。古人云,父母在,不远游,游必有方。而我如今,一人,一箱,行走在辽远的远方,并无所谓游行之方,唯有满心寂然,缥缈无依之感。
- 2019-03-22 网摘
最爱可乐
产品雷军做产品的七字诀叫“专注、极致、口碑、快”。聚焦企业的资源,去打造功能和价格突出的产品(专注带来极致),因为产品极致,因而带来用户口碑(极致创造口碑),利用口碑快速推广变现、快速产品迭带,从而形成持续性先发战略优势(口碑带来快)。周鸿祎做产品的七字诀叫“痛点、刚需、高频次”。那么要专注做什么样的产品呢?周鸿祎说要做有痛点、用户必须买的、使用频次高的产品。李善友做产品的六字诀叫“极致、情怀、简
- 2018-10-09简单冥想
Mr玉民
图片发自App我们在冥想时该如何应对纷繁的想法,又该如何通过冥想去和自己的情感平和共处。记住我们的练习和技巧:不要去抵抗,而是去接纳。去想象好的感觉是和所爱之人分享,坏的是替所爱之人承受。你还会觉得冥想是为了摆脱情感吗?我们只要通过冥想找回那个内心深处始终安详平和、始终清澈的地方,这样,无论是遇到正面情感还是负面情感,我们都可以接受,都能回归那个地方而感觉舒服,这才是一种区别于短暂快乐的真正幸福。
- 2018-10-09实习日记2
1f658716b568
SCMain在库传感器总计:个在线:个离线:个停用:个functionPostTheWebUrl(obj){if(obj=="Node"){varmyurl="../../page/THSupervisionCenter/ScInStoreOfOutline.aspx";window.location.assign(myurl);}elseif(obj=="Car"){varmyurl="../.
- 告警关联分析系统
weixin_33859844
运维数据库python
2019独角兽企业重金招聘Python工程师标准>>>浪潮通信致力网络告警维护解析关联分析专家系统发布时间:2012.03.2214:40来源:赛迪网作者:赛迪网摘要:针对通信网络告警数量巨大,设备复杂多样,难于实现故障定位问题,浪潮通信信息系统有限公司提出了一种告警分析与故障精确定位专家系统,基于框架式规则知识库和多种推理机导控策略引擎,利用基于人工智能语言的逻辑和基于神经网络的推理相结合的方式
- 2018-10-09
无比虚荣无比善良
图片发自App这里总没有被发现了吧!回家,看完电视看书的你已经睡着了!狗都不如的人不在!中午电话,挂断再打来,那态度,草泥马,怕被人知道还是咋的!不是你已经做了卡,我会打你电话,我不会自己去做一张,两天就能办出,好像不需要你什么事!这种不是人,是狗都不如!
- 2018-10-09
DAN524
10.10.《红色延安》P1-6学习宾馆里的一本介绍延安的书籍,被赋予“革命圣地”,见证了党13年取得革命胜利的光辉岁月。下午杨家岭的学习,了解到“一切纸老虎都是感动派”的论断,也参观了中共七大会址。虽然不大但是在当时的影响却是全国性的。图片发自App图片发自App图片发自App
- 2018-10-09
讲多无谓啊
今天早上开始学的刘润五分钟的同理心了。上次学过,但温故而知新。会反省自己是不是做的还是不够好,上半年跟下半年相比,性格转变了一些,但有时候熟悉起来,还是会很红,碎碎念个没完,缺少一些站在他人角度考虑的时候,其余时候自我认为是同理心泛滥的人。任何时候过度都是不好的。资源量拉开愈发多,有一点紧迫感,是确实来的晚了,还是自己没有拼尽全力导致的呢?今天的状态很好,从出门到结束,都蛮顺利,目的性出手率都高,
- 浪翻《intrans函数》2018-10-09
愉快先生
写函数,函数名与文件名同名调用函数新建个文件。imag=imread('C:\Users\liulang\Desktop\test.jpg')gray=rgb2gray(imag)log=intrans(gray,'log',1)neg=intrans(gray,'neg')stretch=intrans(gray,'stretch',1,2)gam5=intrans(gray,'gamma',5
- 《所谓成长,就是要不断破局》(网摘)
送人玫瑰
注:昨天下班路上,在广播上听到的一篇文章,感觉到不错。今天在网上一搜,还真有这篇文章,文章很长,读起来需要15分钟左右。但我相信,读过以后你一定会有所收获!《所谓成长,就是要不断破局》(网摘)一个人的成就,基本上无法超出他的认知和能力边界,甚至是有许多人,都是在既定的边界内打转。当一个人认知越深越广,他的边界也越远,同样的,边界内的空间和接触到边界外的空间也越大,他的人生就有了更多的可能性。而关键
- 2018-10-09
断弃离
其实之前就很想写点东西,因为自己的文笔不好,感觉写东西逻辑上也有很大的问题,就一直拖着没来写。其实我是很享受可以用文字把生活记录下来的那种感觉,以后自己回头看的时候会有很多感受,会有很多感悟吧。现在越来越相信害怕什么就要去做,完成之后其实没有那么可怕,缺什么就去努力,过程可能会比较难。但是必须要坚持去做啊。
- 2018-10-09
十沫儿
LastweekIwenttothetheatre.Ihadaverygoodseat.Theplaywasveryinteresting.Ididnotenjoyit.Ayoungmanandayoungwomanweresittingbehindme.Theyweretalkingloudly.Igotveryangry.Icouldnotheartheactors.Iturnedround.
- 2018-10-09
闵慧贤
2018-08-21闵慧贤2018-08-2122:35·字数291·阅读8·日记本《六项精进》打卡第58天姓名:闵慧贤公司:上海晋名实业有限公司组别:423期谦虚三组【知~学习】1:朗诵大学一遍六项精进一遍【经典名句分享】时间永远是旁观者,所有的过程和结果,都需要我们自己承担。【行~实践】一、修身:1:锻炼身体二、齐家:1:和家人在一起三、建功:{积善}:日行一善遵守交通规则发愿从2018年08
- 2018-10-09
成就最好的自己
肖伟【375期学员日精进打卡第171天】【411期志工日精进打卡第101天】【知~学习】《六项精进》背1遍,共190遍《大学》开篇背1遍,共205遍【经典或感受分享】将最简单质朴的原理原则作为做人的原理原则。【行~实践】一、修身:徒步锻炼身体二、齐家:陪伴家人三、积善:发愿从2018年4月22日起,10年,日行1善。今日3善,累计250善。【省~觉悟】反省自己的不足之处。【感谢】1、感谢所有的遇见
- 2018-10-09
A泰优汇浦东夏天
六项精进打卡记录夏加寿【日精进打卡第100天】一、学习与实践1.付出不亚于任何人的努力2.要谦虚,不要骄傲3.要每天反省4.活着,就要感谢5.积善行,思利他6.不要有感性的烦恼与《大纲》1遍《大学》1遍二、分享人生定位在哪里,心里装的坐标图;人生路线在那里,顺着路标一直走;人生手段是什么,大要着眼小着手;人生态度是什么,理想信念当导游。
- 今日感恩(第七期108-20)2018-10-09
毛毛细雨mmxy
图片发自App感恩~今天在新教育群里读到一篇文章:如何针对性引导孩子得心理。里面关于目标感的建立的观点与焦点极其相似,目标不是想出来的,而是做出来的?(焦点就是关注解决的学派)中短期目标的倒推。(焦点的以终为始)反省目标(焦点的总结与反馈)。现在不由自主地看见文章会用焦点思维比较一番,这是不是也是焦点生活化呢?其实,很多理论之间是相通的,只是表达方式有所差别,掌握了精髓,就可以以不变应万变,万变不
- 解读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