通过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”

OpenCV之三帧差分法运动检测 2017-09-21

#include "opencv2/core/core.hpp"
#include "opencv2/highgui/highgui.hpp"
#include "opencv2/imgproc/imgproc.hpp"
#include <stdio.h>

#define threshold_diff1 25 //设置简单帧差法阈值
#define threshold_diff2 25 //设置简单帧差法阈值

using namespace cv;
using namespace std;

int main(int argc,unsigned char* argv[])
{
    Mat img_src1,img_src2,img_src3;//3帧法需要3帧图片
    Mat img_dst,gray1,gray2,gray3;
    Mat gray_diff1,gray_diff2;//存储2次相减的图片
    Mat gray_diff11,gray_diff12;
    Mat gray_diff21,gray_diff22;
    Mat gray;//用来显示前景的
    bool pause=false;

OpenCV之从video设备录制视频 2017-09-04

OpenCV之从video设备录制视频

#include <opencv2/opencv.hpp>
#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <QLatin1String>
#include <QQueue>
#include <QDateTime>

using namespace cv;
using namespace std;

int main(int argc, char *argv[])
{

Qt之QMultiMap一键多值 2017-09-02

Qt之QMultiMap一键多值

在QT中常用的键值对QMap,当遇到一键多值需要存储时往往QMap中vector这样存储, 但是QT提供了QMultiMap来解决这个问题

http://doc.qt.io/qt-4.8/qmultimap.html
QMultiMap<QString, int> map1, map2, map3;

map1.insert("plenty", 100);
map1.insert("plenty", 2000);
// map1.size() == 2

Qt之线程与数据传递的使用 2017-08-25

Qt之线程与数据传递的使用

// .h
class Demo : public QObject
{
    Q_OBJECT
public:
    Demo();
    void start();
public slots:
    void run() {
    start();
    }
signals:
    void send(QJsonObject);
};

Ubuntu之Firefox开机自启及全屏 2017-08-22

Ubuntu之Firefox开机自启及全屏

# 安装全屏插件 Firefox FullScreen
https://addons.mozilla.org/zh-CN/firefox/addon/mwfullscreen/?src=search

# 方法一:设置开机自动启动
# vi ~/.config/upstart/firefox.conf
start on desktop-start  
stop on desktop-end  
exec /usr/bin/firefox

# 方法二:设置开机自动启动
mkdir -p ~/.config/autostart
cp /usr/share/applications/firefox.desktop ~/.config/autostart/firefox.desktop
chmod +x ~/.config/autostart/firefox.desktop