自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

AndrewYZWang的博客

keep life simple! stupid

  • 博客(22)
  • 资源 (24)
  • 论坛 (1)
  • 收藏
  • 关注

原创 leetCode刷题第一天--求两数之和

两数之和给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。你可以假设每种输入只会对应一个答案。但是,数组中同一个元素不能使用两遍。示例:给定 nums = [2, 7, 11, 15], target = 9因为 nums[0] + nums[1] = 2 + 7 = 9所以返回 [0, 1]解题思路:· for j := i+1;j < k;j++ ·j肯定大于i所以不需要在判断j的有效性,因此效率更高f.

2020-12-23 00:07:15 64

原创 go性能优化

Go性能优化CPU profile:报告程序CPU使用情况,按照一定频率去采集应用程序CPU和寄存器上面的数据Memory Profile (Heap Profile):报告内存使用情况Block Profiling:报告goroutines不在运行状况情况下,可以用来分析和查找死锁等性能瓶颈Goroutine Profiling:报告goroutine的使用情况,有哪些goroutine它们调用关系是怎样的package mainimport ( "flag" "fmt" "os"

2020-12-22 23:27:06 166

原创 go get 命令提示没有权限问题解决

出现一下类似的问题,是因为你安装go是直接将go源码解压进行安装的,需要对解压后的go目录加上可执行权限:go get github.com/google/pprof: copying /tmp/go-build384767642/b001/exe/a.out: open /usr/local/go/bin/pprof: permission denied家可执行权限:#进入到对应目录,执行:sudo chmod -R 777 go/...

2020-12-22 00:07:01 497

原创 go语言中的闭包

闭包闭包是什么?闭包是一个函数,这个函数包含了他外部作用域的变量函数可以作为返回值函数内部查找变量的顺序,先自己内部找,找不到再往外层找如何形成闭包结构内层函数+外层函数局部变量(可以是入参或者定义的局部变量) = 闭包结构如果将一个内层函数作为函数返回值内层函数中又涉及到外层函数的局部变量(自己定义或者外部传进来的参数,都是局部变量)1+2 条件满足后,就会导致该局部变量的声明周期发生改变,外层函数的局部变量不会随着外层函数的借宿而销毁将这种内层函数变量和外层局部变量,统称为闭包结构

2020-12-14 22:25:31 54

原创 说一说ffmpeg到处都在使用的ff_thread_once函数

从名字就能知道ff_thread_once函数的作用,就是保证在多线程调用的时候,函数只执行一次FFmpeg中是使用经典的double check来保证函数只执行一次的,我们来跟踪下函数看下具体的实现:ff_thread_once函数是调用pthread_once函数实现的:#define ff_thread_once(control, routine) pthread_once(control, routine)pthread_once函数实现如下:static av_always_inlin

2020-12-13 22:18:27 102

原创 FFmpeg音视频入门-使用FFmpeg读取多媒体文件的信息C++代码实现+详解

读取音视频信息设置日志等级// 设置日志等级av_log_set_level(AV_LOG_DEBUG);参数检查必须给出要读取的多媒体文件路径才能进行接下来的多媒体读取的任务。if (argc != 2) { cout << "please input a reading file" << "argc = " << argc << endl; return -1;}char *inputFileName = argv[1]

2020-12-13 16:22:24 341 2

原创 FFmpg音视频入门教程

FFmpegFFmpg是音视频领域的瑞士军刀,由C语言进行编写,广泛的支持C++, python,java,go等语言的调用,继承了几乎所有的编解码库和流协议,并能任意的添加图片水印和问题,能解决音视频开发领域几乎所有的问题, FFmpeg的开源协议为LGPL何GPL协议,也就是说他能在一定程度上允许闭源商用,前提是不要使用它的GPL开源的功能。本文经过裁剪参考:https://ffmpeg.org/documentation.html原文地址:https://www.fawdlstty.com/f

2020-12-12 23:59:03 459

原创 go语言中goroutine池

创建三个goroutine,创建5个任务,用三个goroutine干5个任务package mainimport ( "fmt" "time")func worker(id int, jobs <-chan int, results chan<- int) { for j := range jobs { fmt.Printf("worker:%d start job:%d\n", id, j) time.Sleep(time.Second) fmt.Printf("

2020-12-12 20:29:13 59

原创 go语言中的匿名函数

匿名函数:没有名字的函数package mainimport "fmt"func main() { /* 匿名函数: 没有名字的函数 匿名函数,需要在匿名函数尾部加上()直接调用 */ func1() // 匿名函数采用的也是函数名字 ()实现调用 // 匿名函数的实现和调用 func() { fmt.Println("Anonymous call back.") }() // 加上了小括号实现了函数的调用 // 匿名函数的多次调用 func3 := fu

2020-12-10 23:51:14 89

原创 go语言中处处可见的for循环

package mainimport ( "fmt" "math")type xPoint struct { name string age int}// 结构体比较大的时候尽量使用指针的类型 进行构造函数// go语言中 构造函数都是以new开头的func newPoint(name string, age int) *xPoint { return &xPoint{ name: name, age: age, }}func main() {

2020-12-10 00:22:30 61

原创 go语言中错误的处理和实现自己的错误处理类型

package mainimport ( "errors" "fmt")func main() { /* 错误:在可能出现问题的地方出现问题, 如打开一个文件打开失败是意料之中的事情 异常:在不该出现错误的地方出现错误, 如出现空指针,意料之外的情况 */ //exec.Command("pwd") //exec.Command("ps") //f, err := os.Open("test.txt") //if err != nil { // log.Fatal(er

2020-12-10 00:21:00 76

原创 go语言中使用递归函数实现文件目录的遍历

实现思路:使用ioutil.ReadDir将当前文件信息都读取完,并对目录进行遍历,当当前目录遍历时,如果发现某个文件是子文件夹,就使用回调,再对子目录调用ioutil.ReadDir读取所有的文件信息,以此进行实现将当前文件夹下所有的文件进行遍历package mainimport ( "fmt" "io/ioutil" "log")func main() { // listFiles(".", 0)}func listFiles(dirName string, level

2020-12-10 00:07:09 103

原创 go语言中的defer

defer的词义: 延迟 推迟在go语言中,使用defer关键字来延迟一个函数或者方法的执行1. defer 函数或方法 一个函数或方法会被延迟执行2. defer的使用A 对象文件的close 临时文件的删除B go语言中关于异常的处理,使用panic 和recoverpanic函数引发的恐慌 导致程序中断执行recover函数用于恢复程序的执行recover()语法上要求必须在defer中执行3. 如果多个defer函数倒序调用 最后defer调用的最先被调用package main

2020-12-10 00:00:16 63

原创 go语言中channel的创建和销毁以及匿名函数的使用

channel的创建go语言中,任意类型前面加上关键字chan即可声明对应类型的通道,创建通道需要使用make,make也用于map 和slice的创建创建一个通道/*刚创建的通道是nil*/var a chan boola = make(chan bool)使用匿名函数创建一个goroutinego func() { for i := 1; i < 10; i++ { fmt.Println("子goroutine is running....", i) } // 往通道中

2020-12-09 23:58:07 112

原创 go语言buffio与继承

buffio比较简单,主要就是对Io一类的操作,第一个例子中顺带加上了go语言中继承的实现,因为go不是面相对象的语言,更准确的来说是面相接口编程的语言,因此继承的实现其实就是将另外一个结构体合并到自己的结构体中,package mainimport ( "bufio" "fmt" "os")type animal struct { eye int foot int}type dog struct { animal // 对animal实现继承 watch string

2020-12-09 23:43:29 70

原创 go语言中变量的定义和使用

Go语言是静态类型语言,因此变量(variable)是有明确类型的,编译器也会检查变量类型的正确性。在数学概念中,变量表示没有固定值且可改变的数。但从计算机系统实现角度来看,变量是一段或多段用来存储数据的内存。声明变量的一般形式是使用 var 关键字:var name type其中,var 是声明变量的关键字,name 是变量名,type 是变量的类型。需要注意的是,Go语言和许多编程语言不同,它在声明变量时将变量的类型放在变量的名称之后。这样做的好处就是可以避免像C语言中那样含糊不清的声明形式,

2020-12-09 23:26:31 153

原创 go语言数组的使用

go语言的数组除了和C语言的定义时方式不同,使用起来基本上是一样的定义数组://定义一个类型为 [4]int类型的数组var arrName [4]intarrName[0] = 1 // 对数组进行赋值,可以看到,索引还是从0开始的,和C语言保持了一致var arrname2 = [4]int{1, 2, 3, 4} // 创建一个数组并对其进行初始化var b = [5]int{1, 2, 3} // [5]int 类型的数组,只初始化3个值var c = [5]int{1: 1, 3:

2020-12-09 23:14:44 91

原创 go语言中结构体与json

go语言中使用Marshal函数实现结构体json化,需要有一下两点注意因为json化是在其他函数中完成,因此需要将结构体中的成员大写,这样才能在生成的结构体中有对应的元素在结构体后面,如果有需要改写字段名称,需要使用烦引号,指定对应的字段名称,支持多指定如json:"name" db:"dbname",这样在不同函数调用的时候,就会生成不同的键值对package mainimport ( "encoding/json" "fmt")// json -- struct// 注

2020-12-07 00:09:26 189

原创 go语言游戏编程-Ebiten使用矩阵实现对图的缩放和移动

如何使用矩阵绘图这个程序几乎和渲染一个图片一模一样,唯一一点不同的是,增加了option参数,并依靠参数,实现了对图像的放大和移动package mainimport ( "github.com/hajimehoshi/ebiten" "github.com/hajimehoshi/ebiten/ebitenutil" _ "image/png" "log")var mImg *ebiten.Imagefunc init() { var err error mImg, _, e

2020-12-04 00:32:58 189

原创 go语言游戏编程-Ebiten渲染一张图片

渲染一个图片完整实现代码:package mainimport ( "fmt" "github.com/hajimehoshi/ebiten" "github.com/hajimehoshi/ebiten/ebitenutil" _ "image/png" "log")var img *ebiten.Imagefunc init() { var err error img, _, err = ebitenutil.NewImageFromFile("gopher.png")

2020-12-04 00:30:28 245

原创 go语言游戏编程-Ebiten实现画面的填充

Draw完整代码如下:package mainimport ( "github.com/hajimehoshi/ebiten" "image/color" "log")type fGame struct {}func (g *fGame) Update() error { return nil}func (g *fGame) Draw(screen *ebiten.Image) { screen.Fill(color.RGBA{R: 0xff, A: 0xff})}

2020-12-02 23:36:33 198

原创 go语言游戏编程初识--`Ebiten`

Ebitenebiten是一个简单的使用纯go实现的游戏,使用这个库即可以实现go语言代码的学习,又可以实现对游戏编程的了解。Hello world让我们以一个Hello world!开始ebiten的学习,完整代码实现如下:package mainimport ( "github.com/hajimehoshi/ebiten" "github.com/hajimehoshi/ebiten/ebitenutil" "log")type Game struct {}func (

2020-12-02 23:15:19 585

最新GeoLite2资源整合.zip

开源的IP地理数据库GeoLiteCity,类似于GeoIPCity,但不如后者精确。免费数据库GeoLite的格式与收费数据库GeoIP相同。任何可以读取GeoIP的代码都可以读取GeoLite。其存储是MaxMind DB格式。 里面放了 GeoLite2-City.mmdb(等同于GeoLite2-Citt.dat 该文件形式已经被wireshark弃用,使用GeoLite2-City.mmdb能完全兼容),国家字段的csv文件以及城市的csv都放到里面,可以打包下载

2020-10-03

GPS-6M-模块+DMA上传

更改的原子的GPS使用串口3+DMA进行GPS的数据接收

2017-07-28

配置samba服务器的配置文件备份

自己使用的是ubuntu16.04与自己的windows主机在在进程资料传输的时候一直使用ftp但是这样做很不方便,于是自己就折腾了一下配置了samba服务器,为了方便以后重装系统之后还需要重新配置就将配置文件进行了copy源文件的路路径和名称是  /etc/samba/smb.conf

2018-08-25

Roboware使用手册0.711

ROS入门到精通,想学习ROS的同学可以下载非常的经典,帮助你快速开发ROS程序

2018-01-10

C++基础课程讲义.pdf

面向过程的结构化程序设计方法  设计思路 – 自顶向下、逐步求精。采用模块分解与功能抽象,自顶向下、分而治之。  程序结构: – 按功能划分为若干个基本模块,形成一个树状结构。 – 各模块间的关系尽可能简单,功能上相对独立;每一模块内部均是由顺序 、 选择和循环三种基本结构组成。 – 其模块化实现的具体方法是使用子程序。  优点: 有效地将一个较复杂的程序系统设计任务分解成许多易于控制和处理的子任务,便于开发 和维护。  缺点:可重用性差、数据安全性差、难以开发大型软件和图形界面的应用软件 – 把数据和处理数据的过程分离为相互独立的实体。 – 当数据结构改变时,所有相关的处理过程都要进

2020-09-26

福昕阅读器--linux最新版

福建福昕软件开发股份有限公司(Foxit Software Incorporated)是一家国际化运营的PDF电子文档解决方案提供厂商,是国际PDF协会主要成员、中国版式文档OFD标准制定成员。福昕在亚洲、美洲、欧洲和澳洲设有多家子公司,福昕直接用户已超过5.6亿,企业客户数达10万以上,遍及世界200多个国家和地区。2020年9月8日,福昕软件正式在上交所科创板挂牌上市,股票代码:688095,证券简称:福昕软件。 福昕具有完全自主产权的PDF核心技术,提供文档的生成、转换、显示、编辑、搜索、打印、存储、签章、表单、保护、安全分发管理等涵盖文档生命周期的产品技术与解决方案。 福

2020-11-14

Professional CMake

Attempting to use any tool before understanding at least the basics of what it does and how it is meant to be used is most likely going to result in frustration. On the other hand, spending all one’s time learning the theory about something without getting hands-on makes for a rather boring experien

2020-09-26

dbeaver-ce_7.2.4_amd64最新版本|dbeaver-ce_7.2.4_amd64.deb

已下载 28.2 MB,耗时 12秒 (2,441 kB/s) 正在选中未选择的软件包 ca-certificates-java。 (正在读取数据库 ... 系统当前共安装有 203570 个文件和目录。) 准备解压 .../ca-certificates-java_20190405ubuntu1_all.deb ... 正在解压 ca-certificates-java (20190405ubuntu1) ... 正在选中未选择的软件包 java-common。 准备解压 .../java-common_0.

2020-11-14

ubuntu搭建ftp服务器

自己的环境是ubuntu16.04搭建的ftp环境,测试能够使用,并将相应的资源上传共享也能够方便自己日后使用

2018-08-26

linux上的可以绘制思维导图的软件

资源是可以安装在linux上的回执思维导图的软件,非常的好用

2018-08-25

MPU6050模块STM32驱动代码

自己移植的MPU6050程序,采用宏编译将MPU9150的寄存器也加了进去可以同时支持MPU6050和MPU9150两种模块

2017-07-28

自己参考网上的资源配置的vim编译器配置文件

因为ubuntu自带的vim使用的不是很方便,于是就自己动手参考网上的教程,配置了自己的vim环境, 源文件的路径和名称是  /etc/vim/vimrc 要是用户不行执行本用户使用不影响其他用户的配置可以将该文件改名为   .vimrc并放到  ~  目录下面

2018-08-25

2.变量和参数的介绍.md

变量是什么,变量是脚本编程中进行数据表现的一种方法,说白了,变量不过是计算机为了保留数据项,而在内存中分配的一个位置或一组位置的标识或名字。

2020-01-16

vim配色,用于配置viim

vim配色,让自己的vim像IDE一样工作,你想要的配置里面都有,只需要去掉自己不想要的设置就行

2018-08-25

IPC进程间通信

- IPC对象(消息队列、共享内存和信号量)存在于内核而不是文件系统中,由用户控制释放(用户管理IPC对象的生命周期),不像管道的释放由内核控制。 - IPC对象通过其标识来引用和访问,所有的IPC对象在内核空间中唯一性标识ID,在用户空间中的唯一性标识称为Key. - IPC对象是全局对象,可以通过ipcs,ipcrm等命令来查看或删除 - 每个IPC对象都由get函数创建

2019-05-03

最经典的bash资料

最经典的bash   shell编程资料因为网上买不到书本,就自己打印了一本,真的非常棒

2018-08-25

bsearch.zip

The bsearch() function searches an array of nmemb objects, the initial member of which is pointed to by base, for a member that matches the object pointed to by key. The size of each member of the array is specified by size. The contents of the array should be in ascending sorted order according to the comparison function refer‐ enced by compar. The compar routine is expected to have two arguments which point to the key object and to an array member, in that order, and should return an integer less than, equal to, or greater than zero if the key object is found, respectively, to be less than, to match, or be greater than the array member.

2020-04-18

strtok的赞歌.pdf

标记解析(`Tokenizing`)是最简单也是最常见的解析问题,也就是根据分隔符把一个字符串分割为几个部分。这个定义覆盖了所有这种类型的任务。根据空白分隔符(例如`" \t\n\r"`之一)分割单词。假设有个像`"/usr/include:/usr/local/include:."`这样的路径,在冒号处将其分开,形成单独的目录。根据一个简单的换行分隔符`"\n"`把一个字符串分割为不同的行。可以使用一个配置文件,包含`value = key`格式的行,在这种情况下分隔符就是`"="`。在数据文件中以逗号分隔的值当然是以逗号为分隔符。我们可以采取两个层次的分割来分别进行处理。例如读取一个完整的配置文件,首先根据换行符进行分割,然后在每行根据=进行分割。

2020-04-19

在ubuntu上配置ftp服务器的说明文档,亲测可用(图片)

环境是ubuntu16.04,配置ftp服务器的文档,亲测可用,所以上传分享,也可以方便自己今后再次配置使用(图片)(图片)

2018-08-26

RFC2616中文翻译-有待改进.odg

- 支持客户/服务器模式。 - 简单快速:客户向服务器请求服务时,只需传送请求方法和路径。请求方法常用的有 GET、HEAD、 POST。每种方法规定了客户与服务器联系的类型不同。由于 HTTP 协议简单,使得 HTTP 服务器的程序规 模小,因而通信速度很快。 - 灵活:HTTP 允许传输任意类型的数据对象。正在传输的类型由 Content-Type 加以标记。 - 无连接:无连接的含义是限制每次连接只处理一个请求。服务器处理完客户的请求,并收到客户的 应答后,即断开连接。采用这种方式可以节省传输时间。 - 无状态:HTTP 协议是无状态协议。无状态是指协议对于事务处理没有记忆能力。缺少状态意味着 如果后续处理需要前面的信息,则它必须重传,这样可能导致每次连接传送的数据量增大。另一方面,在 服务器不需要先前信息时它的应答就较快。

2020-01-15

pycharm快捷键

python IDE常用快捷键,用于日常查看使用pycharm,包含所有pycharm上的快捷键及其使用方式

2019-05-03

GDB就该这样用

因为执行脚本的时候会自动新启用一个子 bash因此在脚本中设置的ulimit -c unlimited 并不能产生核心转存储文件,需要执行可执行文件之前手动设置一下 ulimit -c unlimited ------ DEBUG 是在linux下使用dbg的记录,一下的文件是在UBUNTU 16.04上验证通过的

2019-05-04

Sqlite3.pdf

## 使用SQLite创建数据库 **sqlite3_open(const char \*filename, sqlite3 \**ppDb)** 如果 *filename* 参数是 NULL 或 ':memory:',那么 sqlite3_open() 将会在 RAM 中创建一个内存数据库,这只会在 session 的有效时间内持续。 如果文件名 filename 不为 NULL,那么 sqlite3_open() 将使用这个参数值尝试打开数据库文件。如果该名称的文件不存在,sqlite3_open() 将创建一个新的命名为该名称的数据库文件并打开。 简单的来说就是会打开一个数据库文件,文件不存在就会创建一个对应名字的数据库文件

2019-06-30

matplotlib

Matplotlib_slides.pdf

2017-01-02

AndrewYZWang的留言板

发表于 2020-01-02 最后回复 2020-01-02

空空如也

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

TA关注的人 TA的粉丝

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