- 2019-02-01
啊宁_9332
姓名:邓宁宁公司:蔚蓝时代实业有限公司【日精进打卡第186天】【知-学习】1.大纲1遍2.大学0遍3.通篇0遍【经典名句分享】1.在人生的道路上,即使一切都失去了,只要一息尚存,你就没有丝毫理由绝望。因为失去的一切,又可能在新的层次上复得。【行-实践】1.建工【对工作】1.日常工作2.月底行政【省-觉悟】1.平平淡淡才是真!【感谢】1.父母赐予生命!【发愿】要把儿子接到身边来!今日1善,累计184
- 2019-02-01
昊ge
真的!美的!珍的!等的!图片发自App图片发自App图片发自App图片发自App图片发自App图片发自App图片发自App
- 2019-02-01
幽室听喧
都是自己想的小时候看蔡智忠先生的漫画《列子说》,里面有很多小故事,像《亡斧者》,《智子疑邻》,《列子御风》等等。每个故事的最后都会有一句点评,或长或短,或诙谐或严肃,实是精辟之至,给小小的我以无穷的启迪。但是其中有几则故事的点评几乎都是一样的,这曾经让我难以理解。其中一个讲,一个穷人,因其家贫,底气不足,对人总是唯唯诺诺,点头哈腰。有一天这人去城里,意外的捡到一张银票,一看,居然是一万两,于是赶紧
- 2019-02-01
wangkj
王康军,20190201,精进打卡262天一,感恩1.感恩父母的养育和无私的爱!2.感谢徐伟对装填技术服务的总结3.感谢领导的工作指导4.感谢测试中心认真面对繁忙工作5.感谢老婆为过年采购物品6.感谢公司对员工福利的付出7.感谢潘蔚积极整理积分统计8.感谢宜兴客户沟通装置运行情况9.感谢万事万物二,行善利他1.完善工作流程记录2.月度会议汇报工作总结3.指导测试中心运行参数调整4.部门内分享工作方
- 2019-02-01
乐乐0068
1.找领导谈话今天开会关于拓展业务的事情,一个领导说的要找领导谈话,这个思路是我一直以来不喜欢做的,因为是学财务的,更喜欢和财务聊天,因为大家有共同的语言,沟通也比较顺畅,但财务人员没有购买业务的决策,而且好多业务,财务想做,领导未必觉的好,有些业务能给领导带来好处,但财务可能因为嫌麻烦不愿意做。所以找领导谈话才有希望带来更多的业务,但找领导谈什么,怎么谈,成了问题了,总不能谈财务知识吧,这不是他
- 2019-02-01 十大人间奢侈品
赵雪奎
美国华盛顿邮报最近评选出十大人间奢侈品!1.生命的觉悟。2.一颗自由,喜悦与充满爱的心。3.走遍天下的气魄。4.回归自然,有与大自然连接的能力。5.安稳而平和的睡眠。6.享受真正属于自己的空间与时间。7.彼此深爱的灵魂伴侣。8.任何时候都有真正懂你的人。9.身体健康,内心富有。10.能感染并点燃他人的希望。图片发自App
- 2019-02-01
42b9e5dca292
从下午两点开始到现在心情有些复杂,中午就趴了一会,醒来就接到一个通知。中午领导主管们开会,决定的事情,也没有问我的意见,两个部门领导就决定了,并且老板同意了。醒了就被通知,过完年去财务部。为啥没人问问我现在愿不愿意。虽然我并不排斥去财务。让我再想想……
- 2019-02-01
小胡子c
日精进打卡姓名:陈卫东组别:364期、403期、416期、456期公司:宁波华光精密仪器有限公司【日精进打卡第170天】【知~学习】巜六项精进》背诵大纲0遍,共138遍《大学》诵读0遍,共148遍巜活法》学习活法巜改法》第二章:人可以改变巜心法》第十七章:关于勤奋分享【经典名句分享】人生没有奋斗就不会随随便便成功【行~实践】一、修身:打篮球0年分钟,俯卧撑0个60kg握力器0个打羽毛球0分钟原地小
- 2019-02-01
夜色雨色
坚持分享149天晚饭间儿子和他爸杠上了,儿子说爸爸莫名责怪他。爸爸问什么时候,他自己怎么不知道的。我也纳闷,这爷俩怎么回事儿呢?仔细询问是前天晚上儿子在爸爸单位附近玩儿,爸爸听到儿子说外边很冷,就让儿子去他办公室暖和暖和。原本是件关心儿子的事情,怎么让儿子感觉到是责怪呢?我慢慢向儿子澄清,得知是爸爸说话的语气让他很不舒服,责怪他明明外边很冷怎么不到办公室暖和。儿子讲自己都这么大人了,冷不冷自己能感
- 2019-02-01
穷书生啊
冬季的天空总是蓝得很冷冽,几块残破的白云瑟缩着堆着,同样瑟瑟发抖的人群裹着衣服匆匆赶往不知名的地方,梗着脖子,缩着头,再骄傲的人在北方的冷风的狂放吹拂下也变得有了些低下的姿态。又是平常无比而注定庸庸碌碌的一天。我看着刚刚奔过去的携带着一身灰尘的电动车叹一口气。被无由来的焦虑感折磨得恨不得把时间一点点都无比有效率地填满,同时肢体和头脑都懒得行动,刷着微博,紧紧盯着每一个热点,设想这会引出些什么还算是
- 2019-02-01
你是我心里最难忘的记逸
人与人如果你不能和Ta在一起那么你就成为他变成更加优秀的样子心胸狭窄不过是有太多放不下、过不去、想不开的事开心豁达不过是有没担忧,没有顾虑,没背负责任做不到心胸开阔看你和她开心我很不开心我们是分手了可是我还放不下……没关系我努力我努力成为自己我自己喜欢的样子努力不再想你努力不再去看你过的怎么样努力
- 2019-02-01
幸福世碧
图片发自App看懂自己,你的人生才真正开始。2019年1月27日锻炼110天读书108天你生命中所有的问题,都来自于你不够爱自己。图片发自App图片发自App图片发自App
- 2019-02-01
王云静
图片发自App图片发自App图片发自App图片发自App图片发自App图片发自App
- 2019-02-01
Mousikaaa
图片发自App快过年了,茶城的人也越来越少了。可是超市里商场里的人却越来越多了,大家都在准备年货了,年味越来越浓!珍惜和大家在一起的每一刻,每天都要有新的收获,真好!大家晚安!爱你们!
- 2019-02-01
海边的桃源
图片发自App今晚很冷,在店里磨磨蹭蹭的时候想到如果有瞬移的功能该多好,一下子从沙发到床上。出门感觉两条不穿秋裤的腿是冷飕飕的,回家后想到几天就过年了,便换了床单和被套……人始终在快乐和不快乐,责任与不想负责任,自私和利他,能力与责任,美好的幻想及对社会进步的努力等等……在旁人看来都是笑话;晚安,亲爱的;
- 2019-02-01
Dhxndk
记得有句话叫“喜欢是藏不住的,就算嘴巴不说,眼睛也会表现出来”。有些人兜兜转转还是回到原地,有的人相行渐近有个交点后,又各奔东西。你不知道今夜星空璀璨,你不知道月下醉人光辉,你懵懵懂懂,你恍恍惚惚,哗啦的雨落了,天又晴了,你又笑了。
- 2019-02-01
writesomething_
2月简直来的猝不及防。1月不知不觉就过去了,这让我意识到,2019年也会不知不觉就过去了,那些快乐的事、悲伤的事,都会不知不觉就过去了。我很小的时候就体现出了不同于同龄人的文字能力,但是近年来我才发现,我喜欢文字。我渴望用文字来记录和表达自己。我原来很喜欢在微博、朋友圈去记录去分享,后来渐渐觉得吵闹,以及不喜欢自己暴露特别多,在一群最终都会越走越远的人面前。我觉得自己的情绪难以发泄的时候就想自言自
- 2019-02-01
国晓娴
今日任务1000,未完成。比学习:弥补自己的短处。比改变:不要纠结一些小事,把眼光放长远,思考更全面一些,改变会有收获。比付出:打扫死角卫生,张贴海报,对账。比感恩:感恩家人对工作的支持,感恩领导给予这个平台使我成长。比谦卑:认真工作,常怀谦卑之心。比坚持:加微信。
- 2019-02-01
雨木目_b4b0
生活就是一种积累,你若储存的温暖越多,你的生活就会越阳光明媚,你若储存太多寒凉,你的生活就会阴云密布。
- 2019-02-01
留白简话
2019.01.31星期四晴(-4/-21)最难不过盛情相邀,今日与朋友出外,其乐融融,一起在外玩耍,晚上还去喝酒,一通酒下肚,便是天南海北各种胡侃,气氛越发浓烈,酒瓶也在逐步增加,饭罢,各自东倒西歪,胡言乱语,说出的话都带拐弯了,难以,仔细写文,便忍着胡乱诌了一通,睡觉晚安。
- 2019-02-01
ruicore
LeetCode233.NumberofDigitOne.jpgLeetCode233.NumberofDigitOneDescriptionGivenanintegern,countthetotalnumberofdigit1appearinginallnon-negativeintegerslessthanorequalton.Example:Input:13Output:6Explanati
- 2019-02-01《刻意练习》第4章:黄金标准
珂_723e
《刻意练习》第5天打卡有目的的刻意练习是对任何一个渴望学习某种技能的黄金标准。越杰出的人,练习时间越长,每天都留出固定的时间来练习。刻意练习的具有以下特点:1、刻意练习发展的技能,是已经有一套行之有效的训练方法的技能;2、持续不断尝试刚好超出自己当前能力范围的事物;3、要有良好定义的目标;4、有目的而为;5、要有及时反馈。
- 2019-02-01
顺怅然
不想告诉你我不开心,抑制不住悲观的情绪。还好,自己产出的情绪自己消化,不要去影响其他人,其实也没有人可以分享我的情绪。就是一个这样的心情,就是这样的一个人,这么多年,喜怒哀乐又有谁能分享呢,两年前的状态又回来了,我怕是真的撑不到下一个光明了
- 2019-02-01三种自我介绍方式
宝姐姐181
各位优秀的小伙伴们,大家晚上好,我是来自东北沈阳的王立,上个月刚刚加入龙兄弟子班,为了让大家更好的认识我,接下来的5分钟,我将用30秒、一分钟、3分钟的这三种方式跟大家详细的介绍一下我自己,相信大家听了以后一定会更好的认识我。首先是30秒的自我介绍。各位最漂亮最帅气的小伙伴们大家好,感谢坚持星球给我们提供这样一个平台,让我们能够聚在一起共同学习,我是来自东北的王立,我是一名能够给大家带来美好的城市
- 幸福日志2019-02-01:过年回家
楠楠家的莹小宝
快过年了,可是生活依旧,也可能是倒班的原因,年三十轮你班你也得上。其实过年只是给你一个阶段提醒,“快过年了,家里该打扫规整了,该置办东西了”。可是打扫每日进行,最爱的家人就在身边,所以生活依旧,大年三十晚,该读书、陪娃、早起考证,该干嘛干嘛。大家说年味淡了,新春晚会都好多年不看了,鞭炮也禁放了,风俗淡化了,新衣服再也不是小时候的期盼了,可是只要和家人在一起,每天都是新年。但是有个原则,父母还是要看
- 2019-02-01
Hi云上太阳
#日更打卡2019.2.1Day68在这之前,我以为说一个人能忍耐,就是坚持忍耐,坚韧不拔、咬紧牙关的样子。今天看了书之后,有了另外一种认识:忍耐的智慧不在于忍耐的意志力,而在于支撑忍耐的洞察力。就是说,忍耐不是逆来顺受,依靠意志力的忍耐容易失去希望,到最后也许还会产生“怎么做都没用”的想法。而是基于洞察力之上,是能够看到事情积极的一面,深信逆境是暂时的,始终充满活力,增加采取行动的可能。这样的耐
- 2019-02-01
胖姑
公司:三亚蔚蓝时代实业有限公司【日精进打卡第186天】【知-学习】《六项精进》背诵1遍累计244遍《大学》背读1遍累计239遍其他阅读:向希望中奋力、不做(积极废人)主要内容是寻找适合自己的生活方式记工作状态,有目标且有方向直前。【经典名句分享】在失败中学习是进步,在成功中学习是提升。【行-实践】对自己好一点、好好爱自己和家人一起团聚【省-觉悟】先不要着急做一个拆台者、学会站在他人的角度考虑不要太
- 2019-02-01
霡霂霂
图片发自App支付宝出了集福之后其他的软件也是各种集啊,天天不是帮这个扫就是帮那个扫。你送我我送你,为什么我们不能送些更实际的呢,比如说送点真情实感,送点温馨啊。这世道啊,总感觉越来越冷漠了呢。小时候在老家,邻居有点什么新鲜玩意儿,新鲜吃的,定是要拿出来给四邻都尝尝的,那种感觉真是非常暖心的。
- 2019-02-01师父行脚日记分享16
李佳洋妈妈
感悟分享:老天随时准备给我们利益,但需要我们给个理由。人在做天在看,不问收获只管耕耘,老天他不会告诉我们这样做有什么坏处,也不会告诉我们那样做有什么好处,他只是在默默观察、等待,他随时随地都准备好了给我们利益,只等我们给出一个恰当的通道,一个合适的理由。我们平时生怕吃亏了,耍点小聪明以为别人不知道赚到了,但是站在一个更加维度看是真吃亏了,就象师父让那个年轻妇女带路,她以为不去可以自在的多晃悠一会,
- 2019-02-01
c2af4cc51cce
2月1日丰盛日记思想:年前的最后一周,已经能感觉到年味了,自打过了小年以后,马路上的车明显变少,路边开始张灯结彩,节日气氛越来越浓厚,在单位里面也是一样,抬头所见都是红红火火,让人心情愉悦。工作依然非常忙碌,这周的工作重点放在了节前安全检查、节前安全教育、场地年终盘点、节中节后生产情况摸底、节日值班安排等,总体来说忙而有序。现在已经养成了清单式的工作方法,每周五制定工作计划,然后每周一开始逐天推进
- 解读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