git mv使正确识别被修改名字的文件

有一个文件filename,由于在更名的同时也做了很大的变动,因此git无法识别这是一个被修改了名字的文件,正确识别应当这样:

➔ git status
Changes to be committed:
  (use "git reset HEAD <file>..." to unstage)

    renamed:    fileA -> fileB

现在是错误的识别了:

➔ git status
Changes to be committed:
  (use "git reset HEAD <file>..." to unstage)

    new file:   fileB
    deleted:    fileA

那怎么办呢?我是这么做的:

# 先unstage掉fileA,fileB
➔ git reset HEAD fileA fileB

# 用新文件生成老的文件
➔ cp fileB fileA

# 删除新文件
➔ rm fileB

# 使用git mv命令重命名
➔ git mv fileA fileB

# 最后看一下
➔ git status

我出的一组面试题

最近帮忙面试出的一组面试题,个人认为是比较基础的,如果你觉得题目不好, 欢迎提出来。供参考,如果你需要答案也欢迎联系我。

一、 PHP语法篇

  1. 写一个单例类。
  2. C => B => A 三个类,三个类中分别有静态方法m3、m2、m1,在B类的静态方法m中,分别调用C、B、A中的m3、m2、m1方法。
  3. 一个空数组,对应前端的一个对象,json_encode时,将其转换成{},而不是[]
  4. empty函数和isset函数的区别?
  5. 是否用过php7中的??
  6. 对psr规范是否了解,你觉得规范是否有不合理的地方

二、数据库篇

  1. having 和where的区别
  2. dinstinct的含义
  3. MySQL有哪些连接查询

三、Linux服务器篇

  1. 在centos上如何重启php-fpm
  2. 查看PHP安装的扩展,查看是否有安装mbstrig扩展
  3. crontab
  4. 给一个脚本增加所有用户可执行权限
  5. git 从分支A新建分支B,并同时切换到这个分支
  6. git 删除远程分支

TCP三次握手的目的

本人CS不是很专业,这是我今晚随便琢磨得到的想法,各位笑看即可:

很多人知道TCP三次握手是为了建立可靠的网络连接,那什么叫做可靠的网络连接呢?

可靠的连接,就是要确保双方都既会发送tcp包、也会接收tcp包,这里的“会”其实有两个含义,一是能做到,二是乐意去做。

假设A为请求方,B为服务方,假设他们之间用一种叫做“tcp”的语言沟通。

第一次A向B发送一个包:意思为,A证明自己会“说”tcp语言(发送tcp包);

B收到A的包后,向A发送第二个包:意思为,我听懂了你说的tcp语言(接收tcp包),并且向A证明自己也会说tcp语言(发送tcp包);

注意,此时,A证明了自己会说,B证明了自己会听也会说,但是A还没有证明自己会听呀!

于是A收到B的包后,向B发送了第三个包:意思为:你发给我的包,我能听懂(接收tcp包)

此时,A和B都证明了自己都会发送tcp,也能接收tcp

在服务器上创建git远程仓库

有时自己的代码比较私密,不方便放在github或者其他托管网站,如果你有一个vps的话,可以使用下面这个方法创建一个仓库:

远程:

cd /srv
git init --bare [repo-name].git

本地:

这里其实是使用ssh连接,如果你没改过ssh的端口,[remote-port]则可以省略

git remote add origin root@[remote-ip]:[remote-port]/srv/[repo-name].git
# 这样就添加好了,试试push吧
git push origin master

No supported encrypter found. The cipher and / or key length are invalid. – 解决办法

初次使用Laravel,对这个框架还不是很熟,项目拉下来后,提示以下错误:

No supported encrypter found. The cipher and / or key length are invalid.

解决办法为:

config/app.php文件中,找到类似的这行代码:

'key' => env('APP_KEY', 'SomeRandomString'),

将这里的SomeRandomString改成一个随意的32位的字符串,比如我的12345678901234567890123456789012(建议你改一个复杂一点的)

或者你也可以在项目的根目录创建一个名字为.env的文件,并且添加一行APP_KEY=12345678901234567890123456789012,下面是通过代码的方式操作:

# 首先 cd 到项目目录
echo APP_KEY=12345678901234567890123456789012 >> .env

也有可能是缓存的问题,那么请执行:

php artisan config:cache

bingo~

Apache路由重写

<IfModule mod_rewrite.c>
    <IfModule mod_negotiation.c>
        Options -MultiViews
    </IfModule>

    RewriteEngine On

    # Redirect Trailing Slashes If Not A Folder...
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^(.*)/$ /$1 [L,R=301]

    # Handle Front Controller...
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^ index.php [L]
</IfModule>