git说明

git 是目前世界上最先进的分布式版本控制系统 补充说明 git命令 很多人都知道,Linus在1991年创建了开源的Linux,从此,Linux系统不断发展,已经成为最大的服务器系统软件了。 Linus虽然创建了Linux,但Linux的壮大是靠全世界热心的志愿者参与的,这么多人在世界各地为Linux编写代码,那Linux的代码是如何管理的呢? 事实是,在2002年以前,世界各地的志愿者把源代码文件通过diff的方式发给Linus,然后由Linus本人通过手工方式合并代码! 你也许会想,为什么Linus不把Linux代码放到版本控制系统里呢?不是有CVS、SVN这些免费的版本控制系统吗?因为Linus坚定地反对CVS和SVN,这些集中式的版本控制系统不但速度慢,而且必须联网才能使用。有一些商用的版本控制系统,虽然比CVS、SVN好用,但那是付费的,和Linux的开源精神不符。 不过,到了2002年,Linux系统已经发展了十年了,代码库之大让Linus很难继续通过手工方式管理了,社区的弟兄们也对这种方式表达了强烈不满,于是Linus选择了一个商业的版本控制系统BitKeeper,BitKeeper的东家BitMover公司出于人道主义精神,授权Linux社区免费使用这个版本控制系统。 安定团结的大好局面在2005年就被打破了,原因是Linux社区牛人聚集,不免沾染了一些梁山好汉的江湖习气。开发Samba的Andrew试图破解BitKeeper的协议(这么干的其实也不只他一个),被BitMover公司发现了(监控工作做得不错!),于是BitMover公司怒了,要收回Linux社区的免费使用权。 Linus可以向BitMover公司道个歉,保证以后严格管教弟兄们,嗯,这是不可能的。实际情况是这样的: Linus花了两周时间自己用C写了一个分布式版本控制系统,这就是Git!一个月之内,Linux系统的源码已经由Git管理了!牛是怎么定义的呢?大家可以体会一下。 Git迅速成为最流行的分布式版本控制系统,尤其是2008年,GitHub网站上线了,它为开源项目免费提供Git存储,无数开源项目开始迁移至GitHub,包括jQuery,PHP,Ruby等等。 历史就是这么偶然,如果不是当年BitMover公司威胁Linux社区,可能现在我们就没有免费而超级好用的Git了。 Git常用命令清单 语法 git [–version] [–help] [-C <path>] [-c name=value] [–exec-path[=<path>]] [–html-path] [–man-path] [–info-path] [-p | –paginate | –no-pager] [–no-replace-objects] [–bare] [–git-dir=<path>] [–work-tree=<path>] [–namespace=<name>] <command> [<args>] 选项 add 将文件内容添加到索引 bisect 通过二进制查找引入错误的更改 branch 列出,创建或删除分支 checkout 检查分支或路径到工作树 clone 将存储库克隆到新目录中 commit 将更改记录到存储库 diff 显示提交,提交和工作树等之间的更改 fetch 从另一个存储库下载对象和引用 …

WebView中Js与Android本地函数的相互调用

介绍 随着Html5的普及,html在表现力上不一定比原生应用差,并且有很强的扩展兼容性,所以越来越多的应用是采用Html与Android原生混合开发模式实现。 既然要实现混合开发,那么Js与Android原生函数的相互调用就必不可少了。这里写了一个demo,实现点击html中的图片进行本地展示。 原理 1、Android调用js很简单,直接webView.loadUrl(“javascript:JS中的方法名称()”);即可。 2、js调用Android方法,需要使用WebView.addJavascriptInterface(Object obj, String interfaceName)这个方法告诉WebView我要添加一个Js接口调用本地函数。 3、demo中用到了universalimageloader与PhotoView实现图片加载与浏览 见http://www.cnblogs.com/leestar54/p/4220068.html,http://www.cnblogs.com/leestar54/p/4105726.html 4、demo中涉及到了一个JS闭包的问题,闭包中所记录的自由变量,只是对这个变量的一个引用,而非变量的值,当这个变量被改变了,闭包里获取到的变量值,也会被改变. 见http://www.cnblogs.com/mzwr1982/archive/2012/05/20/2509295.html 实现 MainActivity package com.example.javascriptinterface; import java.util.ArrayList; import com.nostra13.universalimageloader.core.DisplayImageOptions; import com.nostra13.universalimageloader.core.ImageLoader; import com.nostra13.universalimageloader.core.ImageLoaderConfiguration; import android.support.v7.app.ActionBarActivity; import android.app.ProgressDialog; import android.content.Context; import android.content.Intent; import android.os.Bundle; import android.os.Handler; import android.view.Menu; import android.view.MenuItem; import android.webkit.WebView; import android.webkit.WebViewClient; import android.graphics.Bitmap; public class MainActivity extends ActionBarActivity { private WebView …

天地图实现标注用户当前坐标位置

要想获取用户的位置就必须要知道用户设备所在的经纬度,而设备获取经纬度一般采用以下方法 1、IP地址 2、GPS全球定位系统(较准确) 3、WIFI无线网络 4、基站3G4G网络(较准确) 获取用户坐标我采用的是H5的Geolocation地理位置对象 navigataor.geolocation 方法: 》经度:coords.longitude 》维度:coords.latitude <!DOCTYPE html> <html> <head> <meta http-equiv=”content-type” content=”text/html; charset=utf-8″/> <meta name=”keywords” content=”天地图”/> <title>天地图-地图API</title> <script type=”text/javascript” src=”http://api.tianditu.com/js/maps.js”></script> <script> var map; var zoom = 12; function onLoad() { //初始化地图对象 map=new TMap(“mapDiv”); navigator.geolocation.getCurrentPosition(function(position){ var y = position.coords.longitude;//经度 var x = position.coords.latitude;//维度 console.log(y,x); //设置显示地图的中心点和级别 map.centerAndZoom(new TLngLat(y,x),zoom); //允许鼠标滚轮缩放地图 map.enableHandleMouseScroll(); //向地图上添加自定义标注 var …

Windows8 解决VMware与Hyper-V不兼容共存方法

1 首先win+X 2 命令提示符(管理员) 3 键入:bcdedit /copy {default} /d “Windows 8 Without Hyper-V” 4 然后再键入: bcdedit /set {} hypervisorlaunchtype off 把上面生成出来的ID放在{}里面 5 然后继续win+X 6 运行 7 键入msconfig 8 1.引导 2.超时设为3这是因为有时候系统太快了 会跳过引导菜单 所有设为3就好了 3.确定 9 然后问你是否要重启 点是 10 重启后选择Windows 8 Without Hyper-V引导 这时候就可以同时运行VM与HV了

C# 读取和编辑 MP3

ID3 是一个较为标准化的 MP3 属性标签集, 它可以在 MP3 文件的内部嵌入歌曲的一些信息, 比如标题, 艺术家, 专辑, 年份等, 在二代的版本中, 甚至支持将歌曲的图片和歌词, 都嵌入到文件中. 这使得我们在使用一些较为智能的播放器播放歌曲时, 会看到比较详细的信息, 如果带有封面显示的话, 也显得个性, 不会都是千篇一律的界面. 网上有很多修改 ID3 的工具, 代码也有一些, 但大部分的代码, 介绍的都是修改 ID3v1 的属性, 也就是总会看到的 MP3 最后 128 字节. 而关于如何修改 ID3v2 的非常少, 有也只是在介绍原理, 实际如何操作的更是少之又少. 甚至, 目前就没看到如何修改封面的. 于是决定把自己的实际操作收藏一下. 修改和获取 ID3 的相关信息, 我们可以借助官方推荐的一个类库: 类库的官方地址: 猛击这里去官方网址 我自己编译后的 DLL 文件下载: 猛击这里下载 DLL 文件 如果到官方下载, 可下载最新版, 但需要自己编译一下. 如果下载我编译的 DLL …

UML类图符号 各种关系说明以及举例

UML中描述对象和类之间相互关系的方式包括:依赖(Dependency),关联(Association),聚合(Aggregation),组合(Composition),泛化(Generalization),实现(Realization)等。 依赖(Dependency):元素A的变化会影响元素B,但反之不成立,那么B和A的关系是依赖关系,B依赖A;类属关系和实现关系在语义上讲也是依赖关系,但由于其有更特殊的用途,所以被单独描述。uml中用带箭头的虚线表示Dependency关系,箭头指向被依赖元素。 泛化(Generalization):通常所说的继承(特殊个体 is kind of 一般个体)关系,不必多解释了。uml中用带空心箭头的实线线表示Generalization关系,箭头指向一般个体。 实现(Realize):元素A定义一个约定,元素B实现这个约定,则B和A的关系是Realize,B realize A。这个关系最常用于接口。uml中用空心箭头和虚线表示Realize关系,箭头指向定义约定的元素。 关联(Association):元素间的结构化关系,是一种弱关系,被关联的元素间通常可以被独立的考虑。uml中用实线表示Association关系,箭头指向被依赖元素。 聚合(Aggregation):关联关系的一种特例,表示部分和整体(整体 has a 部分)的关系。uml中用带空心菱形头的实线表示Aggregation关系,菱形头指向整体。 组合(Composition):组合是聚合关系的变种,表示元素间更强的组合关系。如果是组合关系,如果整体被破坏则个体一定会被破坏,而聚合的个体则可能是被多个整体所共享的,不一定会随着某个整体的破坏而被破坏。uml中用带实心菱形头的实线表示Composition关系,菱形头指向整体。 1.1.1       依赖(Dependency):虚线箭头表示 1、依赖关系也是类与类之间的联结 2、依赖总是单向的。(#add 注意,要避免双向依赖。一般来说,不应该存在双向依赖。) 3、依赖关系在 Java 或 C++ 语言中体现为局部变量、方法的参数或者对静态方法的调用。 (软件开发中,往往会设计一些公用类,供别的类调用,如果这些公用类出问题了,那调用这些公用类的类都会因此而出问题。 两个元素之间的一种关系,其中一个元素(提供者)的变化将影响另一个元素(客体),或向它提供所需信息 显示一个类引用另一个类) 方法参数示例: public class Person { void buy(Car car) { … } } 表示方法:虚线加箭头 特点:当类与类之间有使用关系时就属于依赖关系,不同于关联关系,依赖不具有“拥有关系”,而是一种“相识关系”,只在某个特定地方(比如某个方法体内)才有关系。 依赖关系可以分为以下四类: 1)  使用依赖(Usage)表示客户使用提供者提供的服务以实现它的行为,包括: 使用<<use>>–声明使用一个类时需要用到已存在的另一个类。 调用<<call>>–声明一个类调用其他类的操作的方法。 参数<<parameter>>–声明一个操作和它的参数之间的关系。 发送<<send>>–声明信号发送者和信号接收者之间的关系。 实例化<<instantiate>>–声明用一个类的方法创建了另一个类的实例。 2)  抽象依赖(Abstraction)表示客户与提供者之间用不同的方法表现同一个概念,通常一个概念更抽象,一个概念更具体。包括: 跟踪<<trace>>–声明不同模型中的元素之间存在一些连接但不如映射精确。 精化<<refine>>–声明具有两个不同语义层次上的元素之间的映射。 …

OpenCV中的机器学习方法

Mahalanobis算法:通过除以协方差来对数据空间进行变换,然后计算距离。如果协方差矩阵是单位矩阵,那么该度量等价于欧氏距离。 K均值算法:一种非监督的聚类方法,使用K个均值来表示数据的分布,其中K的大小由用户定义。该方法与期望最大化方法的区别是K均值的中心不是高斯分布,而且因为各个中心竞争去“俘获”最近的点,所以聚类结果更像肥皂泡。聚类区域经常被用作稀疏直方图的bin,用来描述数据。 正态/朴素贝叶斯分类器算法:一种通用的分类器,它假设特征是高斯分布而且统计上互相独立。这个假设过于苛刻,在很多条件下不能满足,故被称作“朴素贝叶斯”分类器。而在许多情况下,这个分类器的效果却出奇的好。 决策树算法:一个判别分类器。该树在当前节点通过寻找数据特征和一个阈值,来最优化分数据得不同的类别。处理流程是不停地划分数据并向下到树的左侧子节点或右侧子节点。虽然它一般不具有最优性能,但是往往是测试算法的第一选择,因为它的速度比较快。而且具有不错的功能。 Boosting算法:多个判别子分类器的组合。最终的分类决策是由各个子分类器的加权组合来决定。在训练时,逐个训练子分类器,且每个子分类器是一个弱分类器(只是优于随机选择的性能)。这些弱分类器由单变量决策树构成,被称作“树桩”。在训练时,“树桩”不仅从数据中学习分类决策,而且还根据识别精度学习“投票”的权重。当逐个训练分类器的时候,数据样本的权重被重新分配,使之能够给予分错的数据更多的注意力。训练过程不停地执行,直到总错误(加权组合所有决策树组成的分类器产生的错误)低于某个已经设置好的阈值。为了达到好的效果,这个方法通常需要很大量训练的训练数据。 随机森林:这是由许多决策树组成的“森林”,每个决策树向下递归以获取最大深度。在学习过程中,每棵树的每个节点只从特征数据的一个随机子集中选择。这保证了每棵树是统计上不相关的分类器。在识别过程中,将每棵树的结果进行投票来确定最终结果,每棵树的权重相同。这个分类器方法经常很有效,而且对每棵树的输出进行平均,可以处理回归问题。 人脸检测/Haar分类器:这个物体检测方法巧妙地使用了boosting算法。OpenCV提供了正面人脸检测的检测器,它的检测效果非常好。你也可使用OpenCV提供的软件训练算法,使之能够检测其他物体。该算法非常擅长检测特定视角的刚性物体。 期望最大化(EM)算法:一种用于聚类的非监督生成算法,它可以拟合N个多维高斯到数据上,此处,N的大小由用户决定。这样仅仅使用几个参数(均值和方差)就可以非常有效的表达一个比较负责的分布。该方法经常用于分科。 K近邻:K近邻可能是最简单的分类器。训练数据跟类别标签存放在一起,离测试数据最近的(欧氏距离最近)K个样本进行投票,确定测试数据的分类结果。该方法通常比较有效,但是速度比较慢且对内存需求比较大。 神经网络/多层感知器:该分类算法在输入结点和输出结点之间具有隐藏结点,这可以更好的表示输入信号。训练该分类器很慢,但是识别时很快。 支持向量机(SVM):它可以进行分类,也可以进行回归。该算法需要定一个高位空间中任两点的距离函数。(将数据投影到高维空间会使数据更容易地线性可分。)该算法可以学习一个分类超平面,用来在高纬空间里实现最优分类器。当数据有限的时候,该算法可以获得非常好的性能,而boosting和随机森林只能在拥有大量训练数据时才有好的效果。 算法使用总结 计算机视觉中使用算法流程:标定数据 –> 提取特征 –> 数据分类(训练集、测试集、验证集) –> 选择分类器。 特征提取:需要寻找表达物体固有属性的特征,如梯度直方图、色彩、各种特征等。如果有背景信息,可能需首先把背景去除,提取出物体,然后进行图像处理(归一化图像、尺度变换、旋转、直方图均衡),计算很多特征。物体的特征向量将与物体的标签对应。 数据分类:建议交叉使用训练集、验证集、测试集。即将所有数据分成K个子集,然后每次随机选取其中一部分来训练,剩余的用来测试。测试结果求平均,得到最终的性能结果。使用交叉验证,可更清楚地看到处理异常数据时分类器的性能。 分类器选择:一般分类器的选择需要考虑计算速度、数据形式和内存大小。一些应用中,在线用户优先选择建模,所以分类器需要能够快速完成训练。这种情况下,最近邻算法、正态贝叶斯和决策树是不错的选择。如果需要考虑内存因素,决策树和神经网络是理想的选择。如果不需要很快训练,而需要很快判断,那么神经网络可以满足要求,正态贝叶斯和SVM也不错。如果不需要训练很快,但是需要精度很高,可选择boosting和随机森林。如果选取的特征比较好,仅仅需要一个简单易懂的分类器,就选择决策树和最近邻算法。要获取最好的性能,离不开boosting和随机森林。 诊断特征重要性的算法: 1)用训练集训练一个分类器。 2)使用验证集或测试集来确定分类器的准确率。 3)对于每一个数据样本和一个选择的特征,随机选择其他特征数据中的该特征的值来替代(替补抽样法)。这样可以保证特征的分布与原始数据集的一样,但是特征的结构或者意义被抹去了(因为它的值是从剩余的数据中随机选择的)。 4)用改变后的训练集训练分类器,然后用改变后的测试集或者验证集来评价分类器。如果完全打乱特征使正确率降低很多,那么这个特征并没有多重要,可以考虑删除。 5)把原始数据重新换一个特征按照3和4操作,直到所有的特征全部分析完毕,得到的结果就是每个特征的重要性。 机器学习中,一些重要规律是:大量数据比少量数据好;好的特征比好的算法更重要。如果选取的特征好,最大化它们的独立性,最小化它们在不同环境下的变化,那么大部分算法那都可以获得比较好的效果。此外,经常遇到的两个问题: 欠拟合:模型假设太严格,所以模型不能拟合到实际数据上; 过拟合:算法不仅学习了数据,而且把噪声也当做信号学习了,这样算法的推广能力很差。 欠拟合的解决方案:使用更多的特征有利于拟合;选用一个学习能力更好的拟合算法。 过拟合的解决方案:增加训练数据的数量可使得拟合曲线更光滑;减少特征的数量可降低过拟合程度;使用一个学习能力差一点的算法。 训练和测试比较好,但实际应用效果不好的解决方案:采集更加真实的数据。 模型无法学习数据的解决方案:重新选择特征,使特征更能表达数据的不变特征;采集更新、更相关的数据;选用一个学习能力更好的拟合算法。 交叉验证与自抽样法 交叉验证首先把数据分为k个不同的子集。然后用k-1个子集进行训练,用没有用来训练的子集进行测试。这样做k次(每个子集都有一次机会作为测试集),然后把结果平均。 自抽样法跟交叉验证类似,但是验证集是从训练集中随机选取的。选择的点仅用于测试,不在训练中使用。这样做N次,每次随机选择一些验证集,最后把得到的结果平均。这意味着一些数据样本会出现在不同的验证集中,自抽样的效果一般胜于交叉验证。 ROC曲线评估了分类器参数的变化对分类器性能的影响。 参考文献:学习OpenCV ——————— 作者:Dream_yz 来源:CSDN 原文:https://blog.csdn.net/yzhang6_10/article/details/53958153 版权声明:本文为博主原创文章,转载请附上博文链接!