git 2.0的push


起步

好久没用linux了,命令都不熟悉了.linux下安装的git版本比较新,2.x版本,在push时候收到了下面的报错:

$ git push
warning: push.default 尚未设置,它的默认值在 Git 2.0 从 'matching'
变更为 'simple'。若要不再显示本信息并保持传统习惯,进行如下设置:

  git config --global push.default matching

若要不再显示本信息并从现在开始采用新的使用习惯,设置:

  git config --global push.default simple

当 push.default 设置为 'matching' 后,git 将推送和远程同名的所有
本地分支。

从 Git 2.0 开始,Git 缺省采用更为保守的 'simple' 模式,只推送当前
分支到远程关联的同名分支,即 'git push' 推送当前分支。

参见 'git help config' 并查找 'push.default' 以获取更多信息。
('simple' 模式由 Git 1.7.11 版本引入。如果您有时要使用老版本的 Git,
为保持兼容,请用 'current' 代替 'simple')

Matching

matching 参数是 Git 1.x 的默认行为,其意是如果你执行 git push 但没有指定分支,它将 push 所有你本地的分支到远程仓库中对应匹配的分支。

Simple

而 Git 2.x 默认的是 simple,意味着执行 git push 没有指定分支时,只有当前分支会被 push 到你使用 git pull 获取的代码。

修改默认设置

从上述消息提示中的解释,我们可以修改全局配置,使之不会每次 push 的时候都进行提示。对于 matching 输入如下命令即可:

$ git config --global push.default matching

而对于 simple ,请输入:

$ git config --global push.default simple

深入JVM内核(二)


在这里将继续对JVM进行探究,首先来看看

JVM启动流程

1.png 首先装载JVM所需的配置,通过环境变量寻找JDK中的java.exe实现查找,同时可以找到jvm.cfg(相当于配置文件)。接着根据配置找到JVM.dll(在jre的bin/server目录下)并调用系统API装载JVM.dll。最后就可以获得本地化接口并从main开始执行程序。


实用的git别名


程序员都是"懒惰"的,哪怕是执行一个命令的时候少敲了一个字母也感觉特舒坦。Git就允许为命令设置别名。 类似 git status 都要敲那么多字母。如果把status换成st,这种机(tou)智(lan)的做法用着很有魔性。

$ git config --global alias.st status

这句话就是让git明白,我把status取了外号叫st了,以后老子喊st就表示status了。 这时再敲下git st试试。 下面分享我常用的别名设置。

git config --global alias.l  "log --color --graph --decorate --pretty=oneline --abbrev-commit"
git config --global alias.l0 "log --color --graph --decorate --pretty=oneline --abbrev-commit -U0"
git config --global alias.la "log --color --graph --decorate --pretty=oneline --abbrev-commit --all"
git config --global alias.lb "log --color --graph --decorate --pretty=oneline --abbrev-commit --all --simplify-by-decoration"
git config --global alias.lg "log --color --graph --decorate" 
git config --global alias.dl  "log --date-order --color --graph --decorate --pretty=oneline --abbrev-commit"
git config --global alias.dla "log --date-order --color --graph --decorate --pretty=oneline --abbrev-commit --all"
git config --global alias.dlb "log --date-order --color --graph --decorate --pretty=oneline --abbrev-commit --all --simplify-by-decoration"
git config --global alias.dlg "log --date-order --color --graph --decorate"

git config --global alias.d  "diff --color"
git config --global alias.dc "diff --color --cached"
git config --global alias.d0 "diff --color --unified=0"

git config --global alias.ci "commit --verbose"

git config --global alias.co "checkout"
git config --global alias.tr "checkout --track"

git config --global alias.s  "status --short"
git config --global alias.st "status"

深入JVM内核(一)


首先让我们了解一下什么是JAVA虚拟机。

  • 免去长篇大论,简单来说,JAVA虚拟机是指通过软件模拟的具有完整硬件系统功能的、运行在一个完全隔离环境中的完整计算机系统。除了JVM,虚拟机还包括VMWare,Visual Box。其中VMWare或者Visual Box都是使用软件模拟物理CPU的指令集,而JVM使用软件模拟Java 字节码的指令集。

  • 下面来简单谈一谈JVM的发展历史,所谓知往昔而见未来,了解编程语言的发展历史绝非一无是处,这里简单介绍,感兴趣的朋友可以深入了解:


让json更懂中文


起步

相信很多人用php搭后台时候,当ajax用于交互时候,由于字符都被urf-8处理,所以用PHP的json_encode来处理中文的时候, 中文都会被编码, 变成不可读的, 类似”\u***”的格式, 而且还会在一定程度上增加传输的数据量。

<?php
$str = "让json更懂中文";
echo json_encode($str);
//输出:"\u8ba9json\u66f4\u61c2\u4e2d\u6587"

总结几种解决方法。

方法1:自己构造支持中文的 json_encode

思路是这样的,对字符串进行url加密处理,之后json_encode后再解密

<?php
function json_encode_zn($data) {
    //处理json的中文问题
    if(is_string($data)) {
        $data = urlencode($data);
    }else if(is_array($data)) {
        array_walk_recursive($data, function(&$value) {
            if(is_string($value)) {
                $value = urlencode($value);
            }
        });
    }
    return urldecode(json_encode($data));
}

$str = "让json更懂中文";
$arr = array("id"=>5,"name"=>"中文名字","arr"=>array(1,"weapon","中文"));
echo json_encode_zn($str);//"让json更懂中文"
echo json_encode_zn($arr);//{"id":5,"name":"中文名字","arr":[1,"weapon","中文"]}