• 摘要视图
  • 目录视图

各种编程相关

WebRTC detect connection type

WebRTC detect connection type

Test on Chromium 87 and 90

Detecting the connection type of webrtc, p2p or relay.

// Listen for connectionstatechange on[......]

>> 阅读全文...

资源管理器重启后 electron 隐藏任务栏图标失效问题的解决方案

1. 问题现象

创建一个electron 窗口,设置skipTaskbar为true,即可隐藏应用的任务栏图标。

const {app, BrowserWindow} = require('electron')

function createWindow () {
  cons[......]

>> 阅读全文...

LeetCode-206-单链表逆序

问题描述

LeetCode – Reverse Linked List

将单链表逆序

算法1 插入法

性能:
Runtime: 4 ms, faster than 89.98% of C online submissions for Reverse Linked List.

算法思路:
类比于插入排[……]

>> 阅读全文…

LeetCode-26-已排序数组去重

问题描述

LeetCode – Remove Duplicates from Sorted Array

对已经排好序的数组,去除其中重复的元素,并返回去重后的长度。如[1,2,2,3,3],去重后为[1,2,3] ,去重后长度为3

算法1

两个指针,前者(p)记录当前去重后的最后一个元素,后者(i)[……]

>> 阅读全文…

算法-螺旋队列

问题

21  22  …
20  7   8   9   10
19  6   1   2   11
18  5   4   3   12
17  16  15  14  13

看清以上数字排列的规律,设 1 点的坐标是 (0,0),x 方向向右为正,y 方向向下为正。例如,7 的坐标为 ([……]

>> 阅读全文…

C++ 智能指针的实现

1. shared_ptr 的特性

shared_ptr内部维护一个引用计数,当创建、copy、销毁时,引用计数都会变化

(1) 拷贝构造函数 p(q),会递增q的引用,p和q指向同一个对象

shared_ptr<string> q = make_shared<string>[......]

>> 阅读全文...

CAS 的跨平台实现方案 以及 基于CAS 的无锁多线程安全日志类

CAS

CAS, compare-and-swap, 原子的比较和设置变量值。

#include <stdio.h>

#if defined(__linux__) || defined(__unix__)
    #define CAS32(ptr, val_old, val_new[......]

>> 阅读全文...

protobuf c++ 笔记

protobuf的github 源码地址为 https://github.com/google/protobuf

本次使用的环境为ubuntu,参照官方教程

1. 编译源码

sudo apt-get install autoconf automake libtool curl #安装工具
git c[......]

>> 阅读全文...

c++ bind1st 和 bind2nd的用法

std::bind1st 和 std::bind2nd将二元函数转换为一元函数,具体用法参加下面的代码。

代码介绍了两种使用方式,第一种是使用std::less和std::greater,第二种是使用自定义的仿函数。

#include <iostream>
#include <ve[......]

>> 阅读全文...

日志函数

一个简单的日志函数示例,使用宏实现日志的打印和显示。

不足:没有考虑多线程的文件操作问题;宏较长,使用宏会使得代码体积膨胀。

#include <stdio.h>
#include <time.h>
#include <string>

#define __MOD[......]

>> 阅读全文...

libjpeg的交叉编译以及jpeg图片的缩放(缩略图)

libjpeg 库的交叉编译

libjpeg 库主要用于 jpeg 格式图片的编解码,其交叉编译过程如下

1. 下载源码

从官方网站http://www.ijg.org/files/ 下载libjpeg库的源码,本次编译过程使用的是jpegsrc.v9a.tar.gz

2. 解压源码

# 2.1 切[......]

>> 阅读全文...

在Visual Studio 2013 中使用C++单元测试

本文主要介绍在Visual Studio 2013中对代码进行单元测试的方法,包含了两方面的内容:对已有的Dll文件进行单元测试,以及对已有的源文件进行单元测试。

 

1. VS2013对DLL文件的单元测试

对已有的dll文件进行单元测试。

Windows 串口通信简单实例

工具软件

为了方便串口程序的调试,使用了如下两款工具软件。

[1]. 串口调试助手

该软件可以通过串口收发数据。可以通过串口发送数据,也可以查看串口收到的数据。下载地址

[2]. 虚拟串口

可以虚拟串口,每次虚拟出一对串口,这对串口相互连通。如图中虚拟出了串口COM2和COM3,这样通过COM2[……]

>> 阅读全文…

Windows 核心编程 学习笔记 (第四部分)

目录

19. 用户态的线程同步方式

  •     互锁函数
  •     循环锁
  •     CRITICAL_SECTION 临界区

20. 内核态的线程同步方式

  •     内核对象用于线程同步
  •     等待函数
  •     Event – 事件
  •     WaitableTi[……]

    >> 阅读全文…

Windows 核心编程 学习笔记 (第三部分)

目录

16. 作业

  •     作业
  •     一个简单例程
  •     CreateJobObject 创建作业
  •     作业限制和 SetInformationJobObject
  •     AssignProcessToJobObject 将进程添加到作业
  •     终止作业
  • [……]

    >> 阅读全文…