Golang之获取Struct的Tag 2018-03-05

获取Struce的Tag

package main

import (
    "fmt"
    "reflect"
)

type Foo struct {
    FirstName string `tag_name:"tag 1"`
    LastName  string `tag_name:"tag 2"`
    Age       int    `tag_name:"tag 3"`
}

Golang之一个有趣的闭包问题 2018-03-05

Golang之一个有趣的闭包问题

// 在论坛上看到一个有趣的闭包例子, 下面这两个例子输出结果截然不同 ... 
// 未达到目的
package main

import (  
    "fmt"
    "time"
)

type field struct {  
    name string
}

Go之runtime.Caller与runtime.FuncForPC使用 2018-03-02

runtime.Caller与runtime.FuncForPC

func Caller(skip int) (pc uintptr, file string, line int, ok bool)
// skip如果是0,返回当前调用Caller函数的函数名、文件、程序指针PC,1是上一层函数,以此类推
package main

import (
    "log"
    "runtime"
)

func main() {
    test()
}

OpenCV之-两幅相同与不同尺寸图像融合 2018-02-23

两幅相同与不同尺寸图像融合

#include <opencv2/core/core.hpp>  
#include <opencv2/highgui/highgui.hpp>  
#include <opencv2/imgproc/imgproc.hpp>   
#include <iostream>   
using namespace cv;  
using namespace std;  

int main()  
{  
    //【0】定义相关变量   
    Mat ac, ahand;  
    //【1】读取原始图像并检查图像是否读取成功    
    ac = imread("D:\\OutPutResult\\ImageTest\\ac.jpg");  
    ahand = imread("D:\\OutPutResult\\ImageTest\\ahand.jpg");  
    if (ahand.empty() && ac.empty())        //检验两幅图像是否同时存在  
    {  
    cout << "读取图像有误,请重新输入正确路径!\n";  
    return -1;  
    }  
    //【3】显示原始图像  
    namedWindow("图像1ac");   //创建窗口  
    imshow("图像1ac", ac);    //显示窗口  
    namedWindow("图像2ahand");  
    imshow("图像2ahand", ahand);  
    //【4】调整ahand的大小与ac的大小一致,融合函数addWeighted()要求输入的两个图形尺寸必须相同    
    resize(ahand, ahand, Size(ac.cols, ac.rows));  
    //【5】利用addWeighted()函数对两幅图像进行融合  
    addWeighted(ac, 0.6, ahand, 0.4, 0., ac); //最后融合效果显示在ac图像上  
    /* 
    若不想毁坏原始ac图像,也可建立一个与ac图像类型尺寸一样的新图像,将融合后的图像保存到上面。 
    建立方法: 
    Mat newImage(ac.size(), ac.type()); //newImage与ac类型尺寸相同 
    */  
    namedWindow("图像1与图像2融合效果图");  
    imshow("图像1与图像2融合效果图", ac);  
    //【6】保持等待状态   
    waitKey();  
    return 0;  
}  

RESTful API 2017-12-29

RESTful API 简单了解

首先为什么要用RESTful结构呢?

早先页是前端后端融在一起的,比如之前的PHP,JSP等。
在之前的桌面时代问题不大,但是近年来移动互联网的发展,各种类型的Client层出不穷,RESTful可以通过一套统一的接口为 Web,iOS和Android提供服务。
另外对于广大平台来说,比如Facebook platform,微博开放平台,微信公共平台等,它们不需要有显式的前端,只需要一套提供服务的接口,于是RESTful更是它们最好的选择。

通过Screen进行远程会话管理 2017-11-10

Screen是Linux下的一款远程会话管理工具

通常情况下我们都是为每一个这样的任务开一个远程终端窗口,因为他们执行的时间太长了。必须等待它执行完毕,在此期间可不能关掉窗口或者断开连接,否则这个任务就会被杀掉,一切半途而废了。

为什么关掉窗口/断开连接会使得正在运行的程序死掉, 挂断信号(SIGHUP)默认的动作是终止程序

Screen是一个可以在多个进程之间多路复用一个物理终端的窗口管理器。Screen中有会话的概念,用户可以在一个screen会话中创建多个screen窗口,在每一个screen窗口中就像操作一个真实的telnet/SSH连接窗口那样。

// 创建一个新的窗口:
[root@nljb ~]# screen
[root@nljb ~]# screen vi nljb.c

Golang之v1.9中线程安全的sync.Map 2017-10-18

Golang 1.9 sync.Map 使用

  • Store
  • LoadOrStore
  • Load
  • Delete
  • Range
// 说明: 存储一个设置的键值。
Store(key, value interface{})

// 说明: 返回键的现有值(如果存在),否则存储并返回给定的值,如果是读取则返回true,如果是存储返回false。
LoadOrStore(key, value interface{}) (actual interface{}, loaded bool)

OpenCV之基于混合高斯模型GMM的运动目标检测 2017-10-17

基于混合高斯模型GMM的运动目标检测

#include <iostream>  
#include <string>  

#include <opencv2/opencv.hpp>  


int main(int argc, char** argv)  
{  
    std::string videoFile = "../test.avi";  

    cv::VideoCapture capture;  
    capture.open(videoFile);  

Linux之制作镜像文件 2017-09-25

制作ISO镜像的方法

// 把/dev/cdrom目录制作为镜像
dd if=/dev/cdrom of=/root/myiso.iso
mkisofs -r -o myiso.iso /dev/cdrom
cp -r /home/user myiso.iso

Linux之Huawei设备不能正常识别ttyUSB解决办法 2017-09-25

解决 12d1:1446 -> 12d1:1436

主要原因还是因为当前Huawei设备模式不对,一般如果处于存储模式就不会初始化ttyUSB设备等

sudo apt-get install usb-modeswitch
DefaultVendor = 0x12d1
DefaultProduct = 0x1446

TargetVendor = 0x12d1
TargetProductList = “1001,1406,140b,140C,1412,141b,14ac”