自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(75)
  • 收藏
  • 关注

原创 rust学习笔记

CopyClone:可以理解为深拷贝,例如String的clone就是将栈上的指针和堆上的字符都拷贝一份。若某类型实现了Clone,则y=x仅仅只是移动所有权,若想做深拷贝必须显式调用.clone()Copy:逐比特拷贝。因此Copy不能被重载。若某类型实现了Copy,则y=x就进行的是拷贝而非移动。若结构体的每个字段都实现了Copy,rust编译器不会自动为该结构体生成Copy trait,即y=x仍然会发生移动。只有加上#[derive(Copy, Clone)]才行。

2024-04-13 22:00:56 490

原创 cpp程序员速成rust(更新中)

cpper在学习rust过程中会免不得将rust的语法跟cpp做对比,所以特开此坑,在此记录下来我的rust学习之路,仅供参考。

2023-11-12 13:45:20 430 1

原创 C++ copy elision

我们可以发现,首先在f_RVO()函数栈上(a4f地址)构造了一个对象,然后在main函数栈上开辟了一块临时地址(a9f)执行移动构造,再在main函数栈上真正要构造a的位置(a9e)执行移动构造。先在f_NRVO()函数栈上(a5f地址)构造了一个对象,然后在main函数栈上开辟了一块临时地址(aaf)执行移动构造,再在main函数栈上真正要构造a的位置(aae)执行移动构造。由于在c++17中RVO是必须的,所以-fno-elide-constructors不管用了,直接在main函数栈上原地构造了。

2023-06-03 17:09:00 545

原创 图解git原理

用最直观的方式理解git原理

2022-10-14 17:20:34 1027 2

原创 C/C++固定位宽类型

C/C++编程中建议使用固定位宽类型

2022-09-04 21:32:47 1308

原创 C++17 filesystem

C++17 filesystem的使用介绍

2022-08-14 18:37:33 5117

原创 C++11 错误码

在C++11中引入了库,将错误码封装成了一个类std::error_code,它可以通过一个枚举值std::errc来构造,并且可以用.message()成员方法取出来其字符串形式,增加可读性。

2022-08-14 12:17:31 1385

原创 c++20 ranges库

ranges库在对元素进行逐一操作或者判断时可以省掉很多循环体,使代码的可读性提高。例如,要从一个vector中拿出所有的偶数并求平方并逆序排列,生成一个新的vector,以前这样写:vector<int> v1 = {0, 1, 2, 3, 4};vector<int> v2;for (auto i : v1) { if (i % 2 == 0) { v2.push_back(i * i); }}vector<int>

2021-12-25 22:23:19 2334

原创 C/C++ 算术转换规则 (以及容易踩的坑)

算术转换指的是运算符的两个操作数类型不同时所发生的转换,不要小看这个点,可能会造成灾难性的程序问题。首先需要明确两个概念,后面要介绍的转换规则会依赖于这两个概念:一、整型提升https://en.cppreference.com/w/cpp/language/implicit_conversion#Integral_promotion算术运算符不接受小于int类型的变量,所以会存在以下的整型提升:signed char、signed short:转换为int unsigned char

2021-12-01 22:57:58 1683

原创 充分使用RAII

目录一、C++ 资源管理二、利用栈变量的析构函数三、goto四、do while(0)大法一、C++ 资源管理写代码时经常会碰到这种情况:在函数开始时申请了buffer、或打开了某文件、打开某so,需要在函数返回前做对应的释放或关闭操作。不使用任何语言机制的情况下,写出来的代码是这样的:void before() { uint8_t *a = new uint8_t[10]; double *b = new double(1.2); if (xxx) {

2021-11-16 23:05:10 890

原创 在windows上交叉编译android平台的ffmpeg库

前置条件:Android NDK,可以通过android studio直接下载 msys2,https://www.msys2.org/ ffmpeg源码,https://ffmpeg.org/download.html#releases在任意目录新建脚本"build_ffmpeg.sh",内容如下:前几行根据自己的路径来改写。 configure后面也可以根据自己的需要来裁剪一些功能。#!/bin/bashset -eSRC_DIR=D:/Program/ffmpeg-4.4

2021-07-10 17:30:24 2068 13

原创 C++17新特性——std::optional

我们在写代码过程中可能经常会碰到这样的情况:某个函数经过一系列计算后获取一个返回值,但是这个函数可能在执行过程中有异常分支,从这些异常分支中return出来的时候还没有得到这个想计算的值。 例如想计算得到一个无符号类型,我们可能会在这些异常分支return一个-1出去,用来表示计算失败,或执行有误,甚至不同的负值用来表示不同的异常情况。。。由于这些值的存在,本来返回值应该是uint32类型,为了容纳可能出现的负值和整个uint32的范围,返回值就变成了int64。。。这个int64,竟然要么表示错误码.

2021-07-04 12:18:56 5899 6

原创 clion中文乱码的问题

windows平台的乱码一般都是因为在我国windows系统的默认编码方式是GBK,这导致了很多兼容性问题。我们需要把clion设置里所有编码方式通通都改成UTF-8File->Settings->Editor->File Encodings,全部改成UTF-8以及控制台输出也改成UTF-8,File->Settings->Editor->General->Console打印中文时会从"Run"这个标签页输出,我们也要把这个标签页的编

2021-07-03 14:04:05 1073 1

原创 C++ 左值、右值、左值引用、右值引用

一、左值右值1.1 定义在C++中有几个晦涩的概念:左值、右值、泛左值、纯右值、将亡值泛左值=左值+将亡值; 右值=纯右值+将亡值; 我们可以发现将亡值既属于泛左值又属于右值;这些分类是由于它们具有不同性质而命名的,但其实我们只需要掌握左值和右值的概念就已经足够了。这5种值类型我总结了一张表格,如下:首先这几个名词用来形容一个表达式,在C++中,一切表达式都必然属于左值、将亡值、纯右值中的一种。而右值=将亡值+纯右值,所以我们又可以说一切C++表达式都必然要么是左值要么是右值。

2021-05-19 23:53:04 714 8

原创 c++模板进阶、完美转发

当我们要定义的代码逻辑一样,但只是处理类型不一样时,模板的作用就体现出来了。使用模板可以极大的减少代码冗余、使代码简洁强大。本文不赘述模板,只探讨一些需要注意的语法点。1.非类型模板参数在模板参数列表中,除了类型参数外,还可以使用非类型参数;但在实例化非类型参数时必须使用常量表达式。例如下面这个对C风格数组求和的函数模板:#include <iostream>using namespace std;template<typename T, size_t N.

2021-05-19 00:02:58 324

原创 RGB与YUV的来源

一、历史来源YUV格式是1938年由一个法国通信工程师M. Georges Valensi发明的,(专利FR patent 841335, Valensi, Georges, "Procédé de télévision en couleurs", published 1939-05-17, issued 1939-02-06)它能使得彩色电视的信号完全兼容黑白电视,因此被广泛使用。全球两大主要的电视广播制式(PAL/NTSC)都使用YUV作为信号传输格式。YUV中的Y表示亮度lu.

2021-03-28 22:29:25 1723 1

原创 C++中实现回调的几种方式

考虑两个类之间的异步场景:客户端调用类A处理某个任务,A需要委托B进行一些处理并返回结果;并且都是异步进行,即函数迅速返回之后在后台进行计算,完毕后通知调用者。一、使用函数指针类B需要有SetCallBack接口来接收函数指针,此处我们用std::function来实现。 B在进行ProcessAsync任务时另起一个线程并detach掉去进行较长时间的后台计算(此处用std::this_thread::sleep_for来模拟长时间计算),计算完成后通过刚才设置进来的函数指针来通知调用者。#

2021-01-27 23:46:33 11110 5

原创 tinyxml读取xml文件

xml中每个元素element的组成唯一的name 多个attribute(每个attribute包含name和value) 注释comment 文本Text 多个子element<?xml version="1.0" encoding="UTF-8"?><ffprobe> <format filename=".\Westworld.S03E01.720p.WEB.H264-XLF[eztv].mkv" nb_streams="3" nb_progra

2021-01-12 23:28:00 742 2

原创 python开发环境配置 & 设置镜像源

一、下载python解释器不推荐从python官网下载,因为它只包含python解释器和python标准库;推荐Anaconda,它不仅包含python解释器和标准库,还有许多实用常用的第三方python库,例如numpy/pandas等。根据你想要的python版本,去下载对应的anaconda对应关系详见:anaconda python 版本对应关系anaconda镜像下...

2020-04-14 09:58:44 8957

原创 在windows上通过msys2/mingw来安装gcc / clang

安装msys2https://www.msys2.org/设置msys2的镜像源,参考https://mirrors.tuna.tsinghua.edu.cn/help/msys2/打开安装目录,例如 D:\msys64\etc\pacman.d 分别修改这三个文件:编辑 mirrorlist.mingw32 文件,在文件开头添加Server = https://mir...

2020-04-05 22:04:47 12332

原创 C++设计模式——抽象工厂模式

抽象工厂提供一个创建一系列相关或相互依赖的对象的接口,而无需指定它们具体的类。它主要解决产品族和产品等级的问题,例如产品族(即生产厂家)有美的和海尔,产品等级有空调和冰箱,那么所有的产品就有:美的空调、美的冰箱、海尔空调、海尔冰箱这四种。抽象工厂首先实例化产品族,然后再实例化产品等级。#include <iostream>using namespace std;//-...

2020-03-22 18:43:47 256

原创 C++设计模式——工厂模式

工厂模式是为了解耦,将对象的创建和使用分离开。在客户端使用对象时,只需要知道对象的名称即可用一个共同接口来使用,而具体的创建过程对使用者屏蔽,所有对象的创建过程都由工厂来统一管理。工厂模式分为三种:①简单工厂模式 ②工厂方法模式 ③抽象工厂模式; 本文介绍前两种。①简单工厂模式只需要建一个工厂类,在该类中进行判断和对象创建。当需要增加新类型对象时,只需新增对应类,并修改工厂类即可。②工...

2020-03-21 21:38:45 251

原创 python中的格式化字符串

python中的格式化字符串概述:https://docs.python.org/zh-cn/3/tutorial/inputoutput.html#格式化字符串共有三种方式:①旧的printf风格,从C语言来的https://docs.python.org/zh-cn/3/library/stdtypes.html#printf-style-bytes-formatting②st...

2020-03-03 21:39:48 501

原创 python计算PSNR

将两张图都转成float64进行计算,且归一化到0~1,防止精度丢失import numpy as npdef getpsnr(img1,bitdepth1,img2,bitdepth2): img1 = np.float64(img1) / (2**bitdepth1-1) img2 = np.float64(img2) / (2**bitdepth2-1) ...

2020-02-28 11:12:32 1662 2

原创 matplotlib教程

官网上有两张图介绍了matplotlib画出的一张figure的组成部分:https://matplotlib.org/1.5.1/faq/usage_faq.html#parts-of-a-figurehttps://matplotlib.org/tutorials/introductory/usage.html#sphx-glr-tutorials-introductory-usage...

2020-02-26 14:44:50 489 1

原创 HEIC/HEIF和BPG——从HEVC扩展出的图片压缩格式

HEIC(high efficiency image container),又称HEIF(high efficiency image format),是由MPEG于2014年制定的图片压缩标准。率先由苹果在iOS11中推广使用,小米10也加入了这一阵营,这有利于新格式的普及和旧格式(JPEG)的淘汰。链接:MPEG-H part12BPG(Better Portable Graphi...

2020-02-13 15:26:47 2530

原创 focal loss的实现

focal loss的原文https://arxiv.org/abs/1708.02002里公式写的不太清晰,只写了其中一部分(正例项),实际编程实现的时候正例项和负例项对损失的贡献都是要考虑的,很多博客里写的都是错的,下面给出正确公式。设标签为y,预测为y',二进制交叉熵(Binary Cross Entropy, BCE)定义为:Focal Loss(FL)如下,其...

2019-11-22 14:25:21 713

原创 文件读写模式

文件不存在则 文件指针位置 详细解释 报错 开头 无则报错,有则从头开始覆盖,未被覆盖的仍被保留 r 只读 r+ 读写 创建 开头 无则创建,有则删除原文件从头开始覆盖 w 只写 w+ 读写 创建 末尾 无则创建,有则在后面开始追加内容 a 追加写 a+ ...

2019-11-14 15:48:16 230

原创 如何彻底卸载vs(VisualStudio)

1.用这个工具先卸载vs;https://github.com/Microsoft/VisualStudioUninstaller/releases2.但是vs还是出现在控制面板里删不掉,这时再用这个工具清理注册表。https://geekuninstaller.com/download...

2019-11-09 14:28:41 7418

原创 毕设论文怎么调格式(字体字号要求 & 章节自动编号 & 图表按照章节自动编号)

请在写论文之前做以下操作,写好之后再调格式会非常麻烦。调格式最重要的就是设置样式和多级列表一、页面设置纸张大小:A4(21.0cm×29.7cm)页边距:上、下:2.54cm,左、右:2.50cm二、设置样式对于一二三级标题,不要自己定义新样式,否则后面在设置图表自动编号的时候会出问题。直接修改word里原有的即可(注:标题3是默认隐藏的,怎么调出来请自行百度)...

2019-10-31 15:02:44 8060 4

原创 视频编码标准常用链接

总结到表格中如下:标准 H.264/AVC H.265/HEVC H.266/VVC 联合专家组名称 JVT(Joint Video Team) JCT-VC(Joint Collaborative Team on Video Coding) JVET(Joint Video Exploration Team) fraunhofer主页 htt...

2019-10-24 17:40:32 1168

原创 用vscode写python

一、安装python或anaconda首先根据你想要的python版本,去下载对应的anaconda对应关系详见:anaconda python 版本对应关系anaconda镜像下载地址:https://mirrors.tuna.tsinghua.edu.cn/anaconda/archive/?C=N&O=Danaconda官方下载地址:https://repo.anac...

2019-10-13 17:27:19 670

原创 在windows上用vscode+cmake+mingw开发c++

用vscode适合写一些比较短小的程序,开发大型工程还是用IDE比较好。配置流程如下:一、安装mingw64在C盘新建一个没有空格出现的文件夹,例如“C:\mingw-w64”;在https://sourceforge.net/projects/mingw-w64/files/中选择所需的版本,例如“x86_64-win32-seh”,下载到“C:\mingw-w64”中...

2019-09-03 13:59:30 6716 1

原创 镜像站汇总

阿里巴巴开源镜像站 https://opsx.alibaba.com/mirror腾讯云软件源 https://mirrors.cloud.tencent.com/网易开源镜像站 http://mirrors.163.com/清华大学开源软件镜像站 https://mirrors.tuna.tsinghua.edu.cn/中科大开源软件镜像站 http://mirrors....

2019-07-08 22:07:50 3232 2

原创 写论文时图片的主观质量对比

# -*- coding: utf-8 -*-from PIL import Image, ImageDrawdef drawAndShow(picpath, bbox, scale, savepath, position=2): # bbox (x0,y0,x1,y1) 即 (left, upper, right, lower) bbox_wid = bbox[2] - ...

2019-06-14 16:05:37 503

原创 tensorflow 模型量化

文章参考https://blog.youkuaiyun.com/u012101561/article/details/82587806?tdsourcetag=s_pcqq_aiomsgtensorflow的量化有很多种方式,有些需要用到tflite,有些不需要,下面介绍一下不需要tflite也能量化的方式:在较早的版本上有官方的一个量化脚本,比如tensorflow-1.10.0\tensor...

2019-06-06 15:16:54 1158 3

原创 python常用库的官方手册

python 官方英文文档https://docs.python.orgpython 3.5.2 第三方中文文档https://yiyibooks.cn/xx/python_352/index.htmlpython 2.7.8 第三方中文文档https://yiyibooks.cn/yy/python_278/index.htmlpython3 cookbookhttps...

2019-04-09 19:47:24 15092 1

原创 tensorflow 获取所有variable或tensor的name

获取所有variable(每个op中可训练的张量)的name:for variable_name in tf.global_variables(): print(variable_name)获取所有tensor(每个op的输出张量)的name:for tensor_name in tf.contrib.graph_editor.get_tensors(tf.get_defa...

2019-03-27 23:17:24 13269

原创 c++ 判断文件夹是否存在,不存在则创建(可建多级目录)

c++中,<io.h>中的_access可以判断文件是否存在,<direct.h>中的_mkdir可以创建文件。建单级目录:#include <io.h>#include <direct.h>#include <string>int main(){ std::string prefix = "G:/test/"...

2019-03-18 17:19:05 38235 6

原创 广度优先搜索BFS

迷宫题:给定一个二维矩阵,1表示不能走,0表示能走。再给定一个起点和终点,只可以上下左右,求出最短路径。广度优先搜索依次搜索走1步、走2步、走3步能到的位置,走的路径逐渐增大,到终点时立即返回,所以最终当函数返回时一定是最短路径。from collections import dequedirs = [(-1,0),(1,0),(0,-1),(0,1)] #上下左右arrows...

2019-03-14 22:52:16 417

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除