Lastest

gradle编译太慢的解决办法

gradle编译速度实在太慢,一个hello world竟然要15s。改用本文配置之后只要2.15s 解决方法 gradle.property文件 org.gradle.jvmargs=-Xmx1536m 改为 org.gradle.jvmargs=-Xmx2048m -XX:MaxPermSize=512m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8 org.gradle.daemon=true org.gradle.parallel=true org.gradle.configureondemand=true

go语言数组内存是怎么扩容的

话不多说,上测试代码和结果 package main import ( "fmt" ) func main() { var orderIds []int fmt.Println(len(orderIds), cap(orderIds)) fmt.Println("已使用", "\t\t", "容量", "\t\t", "增量") var lastCap = cap(orderIds) for i := 0; i < 100000; i++ { orderIds = append(orderIds, 1) if cap(orderIds) != lastCap{ fmt.Println(len(orderIds), "\t\t", cap(orderIds), "\t\t", cap(orderIds)-lastCap) lastCap = cap(orderIds) } } } 输出 0 0 已使用 容量 增量 1 2 2 3 4 2 5 8 4 9 16 8 ...

php7使用Coalescing运算符替代isset

简洁 使用coalescing运算(??)代替isset来减少代码量,省去不必要的代码。在获得某个变量的时候,可以直接给出默认值,而不是先判断是否存在 isset https://www.php.net/manual/en/function.isset.php 用例 $page = 1; if(isset($_GET["page"])){ $page = $_GET["page"]; } //或者 page = isset($_GET['page']) ? $_GET['page'] : 1 我们经常需要检测一个 coalescing运算(??) https://www.php.net/manual/en/migration70.new-features.php 当我们需要使用isset三元运算符的时候,我们可以使用coalescing运算(??)这个语法糖来代替 比如 $page = isset($_GET['page']) ?? 1; 测试代码 $array = [0 => "aaa", 1 => null]; $v0 = $array[0] ?? "emtpy"; // 存在 $v1 = $array[1] ?? "emtpy"; // null $v2 = $array[2] ?? "emtpy"; // 不存在 echo $...

VC++线程安全退出

完善线程退出机制 加入线程退出条件变量m_bQuitThread, 初始化为false. 在线程内的循环中加入退出变量检测,当m_bQuitThread为true时,主动结束线程 在程序退出时,首先设置m_bQuitThread为true,而后使用WaitForSingleObject等待线程完全退出 代码 CDialogList::CDialogList(CWnd* pParent /*=nullptr*/) : CDialogEx(IDD_DIALOG_LIST, pParent) { m_bQuitThread = false; } // 启动线程 m_refreshLatencyThread = AfxBeginThread((AFX_THREADPROC)RefreshThread, this); // 退出逻辑 void CDialogrList::EndThread() { m_bQuitThread = true; WaitForSingleObject(m_refreshLatencyThread->m_hThread, INFINITE); TRACE(TEXT("线程已经退出")); } 这么做其实是有问题的。假设一种情况,EndThread()中,m_bQuitThread = true和WaitFor...

使用adminlte的word-map

<!-- Map card --> <div class="card bg-gradient-primary"> <div class="card-header border-0"> <h3 class="card-title"> <i class="fas fa-map-marker-alt mr-1"></i> Visitors </h3> <!-- card tools --> <div class="card-tools"> <button type="button" class="btn btn-primary btn-sm daterange" data-toggle="tooltip" title="Date ra...

golang数组用法

package main import ( "fmt" ) var ( duration int = 2 ) func main() { fmt.Println("test case 1:") strs := make([]string, 10) strs = append(strs, "1") strs = append(strs, "2") strs = append(strs, "3") for _, val := range strs{ fmt.Println(val) } fmt.Println("test case 2:") var strs2 []string strs2 = append(strs2, "1") strs2 = append(strs2, "2") strs2 = append(strs2, "3") for _, val2 := range strs2{ fmt.Println(val2) } } 输出 test case 1: 1 2 3 test case 2: 1 2 3

golang interface用法

golang interface测试 很不爽这种一眼看过去看不出一个struct实现了哪个interface的奇怪设计。但路依然是要走的,真香。。 测试代码1 package main import "fmt" type Task interface{ execute() } type CrontabTask struct{ } func (task CrontabTask) execute() { fmt.Println("crontab task!") } type QueueTask struct{ } func (task QueueTask) execute() { fmt.Println("queue task!") } type LoopTask struct{ } func (task LoopTask) execute() { fmt.Println("loop task!") } type WrongTask struct{ } func (task WrongTask) execute1() { fmt.Println("loop task!") } func main(){ var task Task task = new (CrontabTask) task.execut...

支持多种登录方式的用户表设计

支持多种登录方式的用户表设计 最原始的用户登录,user表 user_id username password 用户数据 1 xxxx 123456 用户数据 2 yyyy 123456 用户数据 select * from user where user = :user and password = :password 搞定了 如果要加入微信登录如何破 加三个字段? user_id username password wechat_id wechat_access_token wechat_expires 1 xxxx 123456 sasdada qwerty 00000000 再添加qq登录呢?再加三个字段,显然是要累死人的 靠谱的做法 用户信息和登录分开,登录分为本地登录和第三方登录 user表 user_id 用户数据 1 用户数据 2 用户数据 本地登录表 user_id username password 1 xxxx 123456 2 yyyy 123456 第三方OAuth登录表 id user_id oauth_name oauth_id oauth_access_token oauth_expires 1 A1 weibo W...

gomod使用方法

全在这里了 https://zhuanlan.zhihu.com/p/60703832

根据json生成golang struct

根据json生成golang struct https://mholt.github.io/json-to-go/ 输入 {"age":1, "firstName":"LeTian", "lastName":"Chu", "birthday":"2000-01-30"} 输出 type AutoGenerated struct { Age int `json:"age"` FirstName string `json:"firstName"` LastName string `json:"lastName"` Birthday string `json:"birthday"` }