2021年7月

主要是增加:
fastcgi_split_path_info ^(.+?.php)(/.*)$;

location ~ .*\.php(\/.*)*$ {
    root           html;
    fastcgi_pass   127.0.0.1:9000;
    fastcgi_index  index.php;
    fastcgi_split_path_info ^(.+?.php)(/.*)$;
    set $path_info "";
    set $real_script_name $fastcgi_script_name;
    if ($fastcgi_script_name ~ "^(.+?\.php)(/.+)$") {
            set $real_script_name $1;
            set $path_info $2;
    }
    fastcgi_param SCRIPT_FILENAME /usr/share/nginx/html$real_script_name;
    fastcgi_param SCRIPT_NAME $real_script_name;
    fastcgi_param PATH_INFO $path_info;
    include        fastcgi_params;
}

Git搭服务器超简单方法就是建一个主目录,然后通过SSH传送就好
1.先建立服务器

git clone --bare XXXXX.git

XXXXX就是服务器你的项目名字
假如这个目录保存在:/data/gitdata/XXXXX.git
那么其它用户只需要:

git clone ssh://用户名@192.168.1.145:端口data/gitdata/XXXXX.git

用户名就是登录这台服务器的用户名例如:git,root什么的。
端口不填就是22

然后新建的Git分支需要flow一下:

git flow init -d

执行一次后就不需要这个命令,正常使用

git pull
git add.
git commit -am "new project"
git push origin master

常用功能,其它上网就可以:

//状态栏
implementation 'com.gyf.immersionbar:immersionbar:3.0.0'

在每个ActivityOnCreate方法增加这个就可以

ImmersionBar.with(this)
    .transparentBar() // 透明
    .hideBar(BarHide.FLAG_HIDE_BAR) // 隐藏状态和导航条
    .init()

先引入库:

implementation 'com.tencent:mmkv-static:1.2.10'

这封装一个类

import android.widget.EditText
import android.widget.TextView
import androidx.annotation.Nullable
import com.tencent.mmkv.MMKV
import kotlinx.android.synthetic.main.activity_login_by_password.*
import java.lang.Exception

/**
 * 保存本地数据KEY
 */
object Save {
    /**
     * 常用保存
     */
    fun set(key: String, @Nullable value: Any) {
        when (value) {
            is String -> MMKV.defaultMMKV().encode(key, value)
            is Boolean -> MMKV.defaultMMKV().encode(key, value)
            is Long -> MMKV.defaultMMKV().encode(key, value)
            is Int -> MMKV.defaultMMKV().encode(key, value)
            is Double -> MMKV.defaultMMKV().encode(key, value)
            is Float -> MMKV.defaultMMKV().encode(key, value)
            else -> throw Exception("暂时不支持这类型");
        }
    }

    /**
     * 读取
     */
    fun get(key: String): String? {
        return MMKV.defaultMMKV().decodeString(key)
    }
    fun getLong(key: String): Long {
        return MMKV.defaultMMKV().decodeLong(key)
    }
    fun getInt(key: String): Int {
        return MMKV.defaultMMKV().decodeInt(key)
    }
    fun getBool(key: String): Boolean {
        return MMKV.defaultMMKV().decodeBool(key)
    }
    fun getDouble(key: String): Double {
        return MMKV.defaultMMKV().decodeDouble(key)
    }
    fun getFloat(key: String): Float {
        return MMKV.defaultMMKV().decodeFloat(key)
    }

    /**
     * 直接将值保存到EditText
     */
    fun setEditText(key: String, edit: EditText) {
        var value = MMKV.defaultMMKV().decodeString(key)
        value.let {
            edit.setText(it)
        }
    }

    /**
     * 直接将值保存到TextView
     */
    fun setTextView(key: String, edit: TextView) {
        var value = MMKV.defaultMMKV().decodeString(key)
        value.let {
            edit.text = it
        }
    }
}