- TableView嵌套的思路
senpaiLi
在实际代码中,我们iOS的tableView经常会有需要嵌套的情况。一般来说,嵌套时需要控制上层和下层两个scrollView的滑动时机,我这里提供一种思路来实现。(代码是很耦合的,不容易抽离)上层scrollView的滑动手势,下层scrollView会没有反应。这是因为scrollView默认拦截了其他view上面的手势操作,所以要实现如下的方法:/**同时识别多个手势@paramgestur
- 【Android】UI布局工具及详解
米莱虾
#Androiduiandroid
ViewGroup1.简介ViewGroup是一种View,他是View容器,也就是里边可以包含其他View.分类:(1)layout布局类的ViewGroup(2)ScrollView带滚动条的ViewGroup(3)高级View容器(适配器View)(4)其他ViewGroup2.布局类的ViewGroup布局类的容器主要是用来控制子元素的排布方式和排列位置分类:(1)线性布局(2)相对布局(
- 【WPF】自定义ScrollViewer中遇到的Name坑——“Name=PART_XXX”
_hmdyc
WPF
项目中遇到自定义ScrollViewer的需求,修改滑块样式,隐藏滑块边框。实现该功能的代码很容易找到,但是我在实现过程中遇到这样一个问题:鼠标无法拖动滑块。代码如下(修改后):<ScrollBarx:Name="PART_VerticalScrollBar"HorizontalAlignment="Right"Maximum="{TemplateBindingScrollableHeight}"
- UIScrollView使用Masonry设置contentSize
生命不止运动不息
场景1:scrollview上有3个子视图,子视图高度确定,通过masonry设置scrollview的contentsize高度。方法:第一个子视图的顶部设置好与scrollview的顶部的值,最后一个子视图的底部设置好距离scrollview的底部的值,其他子视图正常设置。代码:-(void)viewDidLoad{[superviewDidLoad];//Doanyadditionalset
- Unity SuperScrollView插件:高效列表视图解决方案
Bobby陈兴博
本文还有配套的精品资源,点击获取简介:UnitySuperScrollView是一个为UGUI设计的高效、全面的滚动视图插件,用于创建复杂的高性能列表视图。它支持高度的自定义化,优化了性能以应对大量数据,并提供了丰富的示例和易用的API。该插件兼容Unity新版本,并通过扩展接口支持二次开发,适用于游戏、应用等多种数据展示场景。1.UnitySuperScrollView2.4.2功能概述1.1S
- Android开发——不同布局的定位属性 与 通用属性
目录不同布局的定位属性1.线性布局(LinearLayout)2.相对布局(RelativeLayout)3.约束布局(ConstraintLayout)4.表格布局(TableLayout)5.网格布局(GridLayout)6.帧布局(FrameLayout)7.坐标布局(AbsoluteLayout)8.滚动布局(ScrollView)9.水平滚动布局(HorizontalScrollVie
- UIKit框架使用总结--看看你掌握了多少
CCCCCC1990
ui
一、经常使用的,基本就是每次项目迭代都需要使用的UIView、UILabel、UIImage、UIColor、UIFont、UIImageView、UITextField、UIButton、UIScrollView、UITableView、UITableViewCell、UICollectionView、UICollectionViewCell、UITextView、UIViewControlle
- react native 解决键盘弹起遮挡输入框问题
问题:使用Textinput组件时,ios模拟器软键盘弹出会遮挡住输入框.如何调出软键盘:解决思路:(其他情况类似)1、Textinput在ScrollView中当弹出软键盘时,计算软键盘的高度,state设置ScrollView的paddingBottom值加上软键盘的高度2、Textinput固定在屏幕底部当弹出软键盘时,计算软键盘的高度,state设置Textinput定位的bottom值加
- react native关于在ScrollView里使用WebView会有大片多余空白的问题
angan0295
json
本人也是reactnative的菜鸟,下面只是说说解决方案,具体为什么可以实现目前还不懂。我在项目里因为需求关系,在ScrollView里放置了WebView。方法一:一开始我按照网上的一些方法在js里的代码如下:12{8this.setState({9WebViewHeight:(parseInt(title.title))10})11}}12onMessage={(e)=>{13this.ha
- ReactNative进阶(二十五):ScrollView 滚动视图组件详解_react native scrollview
2401_84447417
程序员reactnativereact.jsjavascript
文章目录一、概述二、属性2.1Style2.2方法2.2.1scrollTo()2.2.2crollToEnd()三、拓展阅读一、概述ScrollView在Android和ios原生开发中都比较常见,是一个滚动视图控件。在RN开发中,系统也给我们提供了这么一个控件。不过在RN开发中,使用ScrollView必须有一个确定的高度才能正常工作,因为它实际上所做的就是将一系列不确定高度的子组件装进一个确
- 解决react-native软键盘弹出挡住输入框的问题
曲小强
reactNative采坑之路软键盘弹出挡住输入框react-native
这是效果:代码:importReact,{Component}from'react';import{View,Text,Button,StyleSheet,TextInput,ScrollView,KeyboardAvoidingView,Dimensions}from'react-native';import{StackActions,NavigationActions,withNavigati
- react-native键盘遮挡输入框
huaiyanchen
react-native
1、使用组件KeyboardAvoidingView使用注意:在render内使用,需要设置高度keyboardVerticalOffset:有时候应用离屏幕顶部还有一些距离(比如状态栏等等),利用此属性来补偿修正这段距离。2.与ScrollView使用ScrollView标签不要设置高度render(){return(...this._extraUniqueKey(item,index)}ren
- react-native中ScrollView套ScrollView
诚实可靠王大锤
前端reactnativereact.jsjavascript
react-native中ScrollView套ScrollView(安卓环境)ScrollView套ScrollView,子ScrollView无法滚动试了很多种方法,都是无效的,最终还是在官方文档中找到了nestedScrollEnabled属性官方说明:在AndroidAPIlevel21(5.0)以上启用嵌套滚动。iOS上默认支持嵌套滚动。所以我在父子ScrollView上全部加上了这个属
- 揭秘 Android ScrollView:深入剖析其使用原理与源码奥秘
Android 小码蜂
AndroidView介绍androidandroidjetpackgradlecocoapodsrxjavaokhttpretrofit
揭秘AndroidScrollView:深入剖析其使用原理与源码奥秘一、引言在Android应用开发中,用户界面的设计至关重要。当界面内容超出屏幕显示范围时,就需要一种机制来让用户能够查看全部内容,ScrollView便是实现这一功能的重要组件。ScrollView是Android提供的一个可滚动的视图容器,它允许用户通过滚动操作来查看超出屏幕范围的内容。本文将深入Android源码,详细分析Sc
- ios tableview吸顶
hbysjw
iosobjective-c
由于项目需要实现一个上滑吸顶的效果,网上也看到有很多种方式实现,但是如果加上下拉刷新的功能会导致界面异常,还有第三方库实现方式库,太繁琐了,下面是我的实现方式,效果如下:tablevie滑动吸顶主要代码部分:横线滚动代理方法updateTopViewFrame//父视图滚动的回调,用于横向滚动判断-(void)scrollViewDidScroll:(UIScrollView*)scrollVie
- react-微信小程序封装日历携带日程组件
_琉
web端微信小程序小程序
最近因为需求,网上没有找到一个合适的日历控件,索性自己封装了一个简易的日历控件,废话不多说直接上代码。importTarofrom'@tarojs/taro';import{ScrollView,View,Image}from'@tarojs/components';import'./index.scss';importReact,{useEffect,useState}from'react';i
- ReactNative容器组件
zjy_yue
reactnativereact.jsjavascript
ReactNative容器组件详解在ReactNative应用开发中,容器组件是构建用户界面的基础。本文将详细介绍四个最常用的容器组件:View、Text、ScrollView和Touchable系列组件,深入探讨它们的常用属性、使用场景以及性能优化技巧。View组件View是ReactNative中最基础的容器组件,相当于Web开发中的div元素,是构建UI的基础。主要属性style:样式属性f
- android横向滑动导航菜单,Android自定义横向滑动菜单的实现
医学科普联盟
android横向滑动导航菜单
本文讲述了Android自定义横向滑动菜单的实现。分享给大家供大家参考,具体如下:前言开发安卓过程中,经常会用到标题栏的样式,有时候传统方式不能满足开发者的需要,这时候就需要自定义控件来实现。(注意:本文提供思路,有关键代码,但是代码不全)标题栏说明自定义标题栏ColumnHorizontalScrollView继承HorizontalScrollView这个安卓原生的控件,HorizontalS
- WPF (基础控件13)ScrollViewer控件的详细使用教程
生命不息-学无止境
WPFwpf
ScrollViewer是WPF中的一个容器控件,它允许用户滚动其内容。通常用于显示超出可视区域的内容,如长文本、图片列表或复杂的布局。通过ScrollViewer,你可以在水平和/或垂直方向上滚动查看内容。以下是ScrollViewer控件的详细使用教程。1.基本用法ScrollViewer是一个容器控件,因此可以包含其他控件或布局。要使内容可以滚动,只需将其包含在ScrollViewer中。V
- WPF解决ScrollViewer内部鼠标滚轮无法控制上下翻页
weixin_39583625
wpf计算机外设c#
WPF解决ScrollViewer内部鼠标滚轮无法控制上下翻页最近发现ScrollViewer使用时鼠标在内部内容中滚动不能使其上下翻,只有鼠标移到最右侧滚动条上才有用于是查找到了这位大佬的解决方式,测试了一下解决了问题,记录一下原文地址ScrollViewer:当内容超过指定长度和宽度后,会出现滚动条,且可以使用鼠标滚轮滚动控制当ScrollViewer中包含ItemsControl时,因为It
- ScrollViewer—WPF滚动条控件
焦糖玛奇朵574
WPFwpfc#
ScrollViewer—WPF滚动条控件参考地址:ScrollViewer概述-WPF.NETFramework|MicrosoftLearn1.ScrollViewer定义与功能ScrollViewer是WPF应用程序的一个容器控件,用于在可以滚动的区域中显示其他可见元素。ScrollViewer封装;水平和垂直ScrollBar元素以及一个内容容器,响应鼠标命令和键盘命令。应用场景长文本大量
- Unity学习日记2 #UI基础篇
努力学习游戏开发
Unityunity学习ui
Unity基础之UI已经被淘汰的GUIUGUIEventSystemRectTransformCanvas组件CanvasScaler组件GraphicRaycaster组件TextImageRawImageButtonToggleDropDownInputFieldSliderScrollBarScrollViewNGUI已经被淘汰的GUI//要在生命周期GUI中调用,由于在生命周期调用频率过高
- wpf 输入框 在输入时去除水印
StevenChen85
WPFwpf
wpfScrollViewer在输入数据时去除水印在WPF(WindowsPresentationFoundation)中,ScrollViewer控件通常用于显示滚动内容。如果你想在ScrollViewer中使用数据输入(例如文本输入),并且希望在输入时去除水印(通常指的是文本框中的提示文字),你可以通过以下几种方式实现:使用样式和触发器(推荐)最简单且最常见的方法是使用WPF的样式和触发器来控
- wpf ScrollViewer 在输入数据时去除水印
StevenChen85
WPFwpf
前言wpfScrollViewer在输入数据时去除水印在WPF(WindowsPresentationFoundation)中,ScrollViewer控件通常用于显示滚动内容。如果你想在ScrollViewer中使用数据输入(例如文本输入),并且希望在输入时去除水印(通常指的是文本框中的提示文字)使用样式和触发器(推荐)最简单且最常见的方法是使用WPF的样式和触发器来控制水印的显示和隐藏。这种方
- C# WPF下自定义滚动条ScrollViewer样式
凡梦_
C#c#WPFScrollViewer滚动条
一、实现对ScrollViewer样式的自定义主要包括:1、滚动条宽度设置2、滚动条颜色3、滚动条圆角4、滚动条拉动时的效果mouseover二、实现效果:三、实现方法1、创建资源字典(ResourceDictionary)文件由于style代码比较多,之间在控件文件中加载style比较混乱,也不利于其它窗口复用,这里单独创建了ScrollViewDictionary.xaml文件代码如下:2、在
- UGUI Super ScrollView 插件
何盼思Kit
UGUISuperScrollView插件UGUISuperScrollView.zip项目地址:https://gitcode.com/open-source-toolkit/a55fe简介本仓库提供了一个强大的UGUISuperScrollView插件资源文件,包含两个版本:UGUISuperScrollView2.4.3UGUISuperScrollView2.5.3UGUISuperScr
- 探索无限可能:Unity3D UGUI Super ScrollView v2.4.4 插件推荐
咎尉裕Lilah
探索无限可能:Unity3DUGUISuperScrollViewv2.4.4插件推荐SuperScrollviewForUGUI-main.zip项目地址:https://gitcode.com/open-source-toolkit/960e9项目介绍在现代游戏和应用开发中,高效处理大量列表项是一个常见且重要的需求。无论是展示排行榜、商品列表,还是其他需要滚动显示的内容,开发者都希望能够在性能
- Android CoordinatorLayout基础教程-AppBarLayout滑动悬停效果
司码帝
Androidandroid学习
简单介绍CoordinatorLayout布局是原名协调布局,顾名思义他在Android中扮演子View滑动过程中协调者的作用,可以把它理解为一个容器,继承ViewGroup,最初是在MaterialDesign风格中提出来的,用来处理很多复杂布局滑动相关的功能,最常见的是搭配AppBarLayout、NestedScrollView、RecyclerView等布局配置说明引入MaterialDe
- 禁止scrollView内布局变化自动滚动
zh_xuan
androidandroid
publicclassInScrollViewextendsScrollView{publicInScrollView(Contextcontext,AttributeSetattrs,intdefStyle){super(context,attrs,defStyle);}publicInScrollView(Contextcontext,AttributeSetattrs){super(cont
- Flutter_学习记录_自定义 AppBar
一人前行
flutter学习flutter
完全自定义AppBar的布局,通过FlexibleSpace或者CustomScrollView实现。代码示例:import'package:flutter/material.dart';import'package:flutter_fangxm/app/service/ScreenAdapter.dart';import'package:get/get.dart';import'../contr
- 解读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