自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

alin的博客

这是一个C/C++程序猿,希望在CSDN上交流学习

  • 博客(105)
  • 资源 (1)
  • 收藏
  • 关注

原创 Qt使用事件过滤器时程序崩溃解决方案

bool UserMainWindow::eventFilter(QObject *watched, QEvent *event){ if(watched == ui->close_btn) { if(event->type() == QEvent::HoverEnter) { ui->close_btn->setStyleSheet("border-image:url(:/images/close2.png)

2021-05-08 16:45:44 1200 1

原创 Qt遇到错误:error:“collect2: ld returned 1 exit status”

Qt遇到错误:error:“collect2: ld returned 1 exit status”看到网上说是进程已启动未杀死就启动了新的进程,可能有这种情况,但本人却不是这个问题。这个问题应该是编译的问题,那么直接进入到build的目录里面,里面会有一个Makefile,直接make一下可以查看具体的报错,根据错误提示debug即可。...

2021-04-29 17:02:49 671

转载 Qt 实现两个窗口间跳转

Qt 实现两个窗口间跳转在父窗口包含子窗口的变量父窗口定义两个槽函数用于互相跳转子窗口类定义信号和改变窗口的槽函数参考:https://blog.csdn.net/zxy131072/article/details/95475136

2021-03-07 21:15:35 776

原创 root密码忘记后如何修改root密码

root密码忘记后如何修改root密码sudo -i,可以直接输入当前用户密码进入root使用passwd命令修改当前root用户密码

2021-02-07 18:13:22 418

原创 Failed to connect to github.com port 443 连接超时

Failed to connect to github.com port 443: 连接超时在安装fabric环境时遇到了这个问题,解决办法如下:首先第一次出现了port 80的问题,这时sudo vim /etc/hosts,在里面添加一行代码,原因是未能解析这个域名199.232.68.133 raw.githubusercontent.com如标题的问题出现了,port 443,sudo vim /etc/hosts,将里面含有github的条目注释掉# xxx.xxx.xxx.x

2021-02-05 12:03:57 10923 1

原创 docker

docker ????1. docker镜像管理镜像搜索# 命令$ docker search 镜像的名字# 字段关键字NAME - 镜像名字DESCRIPTION - 镜像描述STARS - 下载量OFFICIAL - 是不是官方制作AUTOMATED - 是不是自动化编译出来的,自动化:通过dockerfile制作的获取镜像$ docker pull 镜像名查看镜像# 命令$ docker images$ docker image ls# 查看所有的镜像

2021-02-05 10:00:23 148

原创 交易流程

比特币交易比特币使用的非对称加密算法是ECC(椭圆曲线算法)1. 比特币地址的生成流程私钥生成公钥对公钥做两次哈希,sha256,ripemd160(生成160bit)的哈希值==>公钥哈希将比特币网络的版本号和公钥哈希拼接到一起:21字节bytes对这21字节做两次sha256哈希运算,对结果去前四字节,得到校验码将21字节与4字节的checksum拼接到一起,得到25字节数据做base58编码与base64相同,但是字符集去掉了6个容易混淆的字符0和O

2021-01-31 20:35:25 596

原创 命令行的使用cli

命令行的使用cli为程序添加命令行启用的方法新建源程序在其中添加一个结构体// 处理用户输入命令,完成具体函数的调用// cli : command line 命令行type CLI struct { // 不需要字段}// 使用说明,帮助用户正确使用const Usage = `Usage: ./blockchain create "创建区块链" ./blockchain addBlock <需要写入的数据> "添加区块" ./blockchain print

2021-01-28 19:09:55 798

原创 区块链持久化

区块链持久化1. bolt数据库1.1 存储结构其中有桶的概念,在一个数据库下有多个桶bucket,很像一个个抽屉key ==> value[]byte ==> []bytekey是唯一的存储顺序是按照key的ASCII值,小在前,大在后1.2 读写方法例如桶1叫:b1写: b1.Put([]byte("key1"), []byte("value1"))读: byte1 := b1.Get([]byte("key1"))读取不存在的key会返回零值1.

2021-01-27 22:09:14 517

原创 基本链条的实现

基本链条的实现1. 实现思路定义区块结构第一阶段:先实现基础字段:前区块哈希,哈希,数据第二阶段:补充字段:Version,时间戳,难度值等创建一个区块(提供一个方法)定义区块链结构提供一个创建区块链的方法提供一个向区块链中添加区块的方法打印区块链2. 代码实现Main.gopackage mainimport ( "fmt" "time")// 打印区块链func main() { bc := NewBlockChain() time.Sleep(

2021-01-26 10:52:05 317

原创 React入门和进阶

React入门和进阶1. React使用方法需要在html中导入三个文件,并且导入的顺序不能更改<script src="js/react.development.js"></script><script src="js/react-dom.development.js"></script><script src="js/babel.min.js"></script>随后其他的代码要放在body标签中其他标签的后面,

2021-01-22 16:23:20 70

原创 React入门和进阶

React入门和进阶1. React使用方法需要在html中导入三个文件,并且导入的顺序不能更改<script src="js/react.development.js"></script><script src="js/react-dom.development.js"></script><script src="js/babel.min.js"></script>随后其他的代码要放在body标签中其他标签的后面,

2021-01-22 15:56:34 134

原创 ES6语法

ES6语法1. 变量的声明和赋值1.1 变量声明let和constlet和const是新增的声明变量的开头的关键字,在这之前,变量声明是用var关键字,这两个关键字和var的区别是,它们声明的变量没有预解析,let和const的区别是,let声明的是一般变量,const申明的常量,不可修改。<script> // alert(iNum01); // undefined // 声明变量 var iNum01 = 12; // 通过let声明变量,声明的

2021-01-22 10:38:22 87

原创 jQuery高级

jQuery高级1. 事件冒泡什么是事件冒泡在一个对象上触发某类事件(比如单击onclick事件),如果此对象定义了此事件的处理程序,那么此事件就会调用这个处理程序,如果没有定义此事件处理程序或者事件返回true,那么这个事件会向这个对象的父级对象传播,从里到外,直至它被处理(父级对象所有同类事件都将被激活),或者它到达了对象层次的最顶层,即document对象(有些浏览器是window)。阻止事件冒泡事件冒泡机制有时候是不需要的,需要阻止掉,通过 event.stopPropagatio

2021-01-21 20:37:40 116

原创 jQuery进阶

jQuery进阶1. 元素显示隐藏<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Document</title> <style>

2021-01-21 11:28:13 103

原创 jQuery入门

jQuery入门jQuery的使用方法:直接将jQuery的源文件拷贝到html文件的js目录中即可前端代码的压缩:删除所有注释和空格,并且修改变量名以混淆。1. jQuery文档加载完再执行<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial

2021-01-20 21:05:13 56

原创 JavaScript高级

JavaScript高级1. 数组及操作方法<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Document</title> <script>

2021-01-20 17:12:31 86

原创 JavaScript入门

JavaScript入门1. JavaScript引入页面的三种方式行间事件<!-- 第一种页面引入js的方式:行间事件 不推荐使用 --><div onclick="alert('hello world')">这是一个div</div>内嵌式<!-- 第二种页面引入js的方式:内嵌式 部分推荐使用 --><script> alert("hello world again!!!")</script>

2021-01-19 21:43:17 135

原创 go语言与mysql

go语言与mysql1. 准备工作首先安装驱动:go get github.com/go-sql-driver/mysqlimport ( "database/sql" _ "github.com/go-sql-driver/mysql")github的必须在使用前导入,它是驱动的依赖包。“database/sql”:是go语言数据库操作函数的包2. 连接数据库func Open(driverName, dataSourceName string) (*DB, error)dri

2021-01-18 18:43:41 167

原创 goland使用mysql驱动时遇到问题

goland使用mysql驱动时遇到问题没有设置GOPATH首先查看自己的GOPATH和GOROOTgo envsudo vim ~/.bash_profileexport GOROOT=/usr/local/goexport GOPATH=/Users/alin/goPATH=$PATH:/usr/local/mysql/bin:$GOPATH/bin:$GOROOT/binsource ~/.bash_profile编译问题:编译出错查看自己的go版本号,如果不到1.9,去重新下载

2021-01-18 17:17:57 547

原创 go语言:反射

go语言:反射1. 反射的应用1.1 反射简介go语言通过reflect包提供运行时反射机制静态类型interface{}、Type类型、Value类型1.2 反射应用场景go语言API库封装。 Fmt.Printfgo框架开发。结构体标签的实现。1.3 反射的基本使用在运行时,动态的获取变量信息。值、类型、类别在运行时,获取结构体的信息。字段名、方法在运行时,修改变量指,调用方法。2. 反射的原理变量 – reflect.TypeOf() – refle

2021-01-18 11:10:06 353

原创 go语言与JSON

go语言与JSON1. 字节序复习大端法:高存低,低存高小端法:高存高,低存低2. 序列化func Marshal(v interface{}) ([]byte, error)参数:待序列化的数据返回值:json串2.1 结构体序列化要求 结构体类型名 和 成员(属性)名 必须大写(包作用域),才能在json包中可见。(因为json的函数是在其他包中,必须要让其他包可见要转换的结构体)否则,不报错!但不做序列化转换。{“Name”:“张三”,“Age”:29,“Score

2021-01-17 16:51:51 280

原创 go语言与爬虫

go语言与爬虫0. 网页爬虫横向爬取:找寻网页的页与页之间的规律。分页器规律纵向爬取:找寻网页之间条目与条目之间的规律。1. 爬取流程明确URL,找寻网页分页器规律获取网页数据 http.Get()使用正则表达式筛选有用信息 MustCompile、FindallstringSubmatch保存信息到本地2. 爬取信息横向规律:https://movie.douban.com/top250?start=25&filter= – 第二页https://movie.

2021-01-16 21:49:16 196

原创 go语言与正则表达式

go语言与正则表达式编译解析正则表达式func MustCompile(str string) *Regexp参数:正则表达式字符串。推荐使用反引号`返回值:编译后,go语言能够识别出来的一个正则表达式结构体利用正则从字符串中提取有用信息func (re *Regexp) FindAllStringSubmatch(s string, n int) [][]string参数1:需要过滤的字符串参数2:匹配次数返回值:利用正则表达式匹配成功的子串匹配项中的行、列列0带

2021-01-16 19:42:28 252

原创 go语言:http编程

go语言http相关1. 回调函数和C语言一样,在函数参数里加上一个函数指针,传变量的时候将函数指针传进去即可调用type FUNCP func(x int, y bool) intfunc callBack(x int, y bool, p FUNCP) int { fmt.Println("调用回调函数", p(x, y)) return x}func han(x int, y bool) int { fmt.Println("这里是回调函数") return x}func

2021-01-16 17:35:52 555

原创 go语言提升(四):tcp/udp,命令行参数

go语言提升(四):tcp/udp,命令行参数1.TCP函数原型及服务器实现Listen函数func Listen(net, laddr string) (Listener, error)参数1:协议类型:tcp、upd(必须小写)参数2:服务器端的IP:port(192.168.31.11:8000)返回值:成功创建的监听器type Listener interface{ Addr() addr Accept() (c Conn, err error) Cl

2021-01-14 21:53:20 343

原创 go语言提升(三):select、死锁、互斥锁、读写锁、条件变量、生产者消费者模型

go语言提升(三):select、死锁、互斥锁、读写锁、条件变量、生产者消费者模型1. select1.1 select 概述select是一个关键字。select用于监听数据在channel上的流动select监听channel是异步机制。语法:select { case <- chan1: // 如果chan1成功读到数据,则走该条语句 case <- chan2: // 如果chan2成功读到数据,则走该条语句 defa

2020-11-02 16:38:57 461

原创 go语言提高(二):goroutine、runtime包、channel、定时器

go语言提高(二):goroutine、runtime包、channel、定时器1. go程 goroutine1.1 go程的特性创建:在函数调用的前面添加关键字go关键字。创建go程特性:主go程先于子go程结束运行,自动释放进程的地址空间,go程也就被动的退出了。举例:注意:创建go程后主函数变为主go程,当主go程退出后会释放整个进程地址空间,进程就退出了,其他的go程也就直接退出了。func singing() { for i:=0; i<5; i++{

2020-11-01 19:00:35 310

原创 go语言提高(一):文件读写和目录操作

go语言提高(一):文件读写和目录操作1. 文件的创建和打开1.1 创建文件func Create(name string) (file *File, err error)参数:新创建的文件名,可以是绝对路径也可以是相对路径(相对于.go或.exe文件)返回值文件指针,file结构体指针err,错误返回值创建文件时收到文件掩码的限制,可以使用函数设置文件掩码func Umask(mask int) (oldmask int)参数:指定的文件权限掩码返回值:旧的

2020-10-30 18:30:13 277

原创 go语言基础(四):指针、面向对象(继承)、方法

go语言基础(四):指针1. 指针注意:无法获取常量内存地址指针定义的语法:var 指针变量名 *数据类型想要访问指针指向的数据,要使用解引用有关指针的概念性的东西和C语言完全相同func main() { num := 10 var p *int = &num fmt.Printf("%T\n", p) // *int fmt.Printf("%d\n", *p) // 10}2.1 使用new开辟堆空间语法:new(数据类型),返回对应数据类型的指

2020-10-27 23:15:13 441

原创 go语言基础(三):map、结构体

go语言基础(三):map、结构体1. map语法:var map的名字 map[键类型]值类型 = make(map[键类型]值类型)map的名字 := make(map[键类型]值类型)如果不写后面的make的话会报错map在定义后不需要给它指定大小就能进行使用,和切片这一点不同要区分对于map直接使用map名[键值]=数据值,就可以进行数据的添加func main() { var m map[int]string = make(map[int]string) m[0] =

2020-10-26 15:29:36 2037

原创 go语言基础(二):匿名函数、数组、随机数、切片、字符串

go语言基础(二):匿名函数、数组、随机数、切片、字符串1. 匿名函数匿名函数的使用常用的有两种情况定义并调用匿名函数func main() { // 匿名函数的定义 // func后面的第一个括号代表函数的形参列表 // func后面的第一个括号后可以跟返回值 // 在func后面的反括号后还要再加上一个括号,代表函数的调用,里面要写函数的实参 func() { fmt.Println("hello world") }()

2020-10-25 22:54:15 913

原创 go语言基础(一):数据类型、常量、控制语句、循环、函数定义

go语言基础(一):数据类型、常量、控制语句、循环、函数定义1. 变量的定义和使用语法:var 变量名 类型名 = 数值如果当变量仅定义但是不对它进行初始化的话,那么默认是0func main() { var PI float64 = 3.14159 var r float64 = 2.5 var s float64 = PI * r * r var l float64 = PI * r * 2 fmt.Println("s = ", s) fmt.Println("l = ",

2020-10-23 22:40:14 165

原创 C++ Primer Plus读书感悟

C++ Primer Plus 读书感悟1. vector的扩容机制总结:0~4都是增加一个扩容一个元素,4以后当容量不够时扩容至1.5倍 (这个结论仅限VS下)如果使用GCC的话会发现扩容的倍数将会是2倍。2. 智能指针auto_ptr 和 unique_ptr 是所有权的归属发生了转换,share_ptr 是在内部进行了一个引用计数,当计数等于0时才调用delete智能指针的定义void printInt(int num){ int* a = new int(num); /

2020-10-06 19:48:14 338

原创 alin的学习之路:在Qt中使用Oracle数据库

alin的学习之路:在Qt中使用Oracle数据库1. 准备工作在Qt中安装好Source插件,将其中的oci模块进行编译,注意要在oci.pro中指定数据块的动态库和头文件路径需要在Qt项目文件中添加的模块名:qmake: QT += sql2. 相关类和APIQSqlDatabase// 通过这个类添加/删除/复制/关闭数据库实例// 相关的api// 得到key使用的数据库驱动名字的集合[static] QStringList QSqlDatabase::drive

2020-09-05 17:36:22 657

原创 alin的学习之路:共享内存Linux下的API

alin的学习之路:共享内存Linux下的API共享内存是进程间通信中最简单的方式之一。共享内存允许两个或更多进程访问同一块内存,当一个进程改变了这块地址中的内容的时候,其它进程都会察觉到这个更改。共享内存使用流程1. 向内核申请一块内存 -> 指定大小2. 如果有两个进程, 需要通信, 可以使用这块共享内存来完成, 先创建出这两个进程 - 进程A - 进程B3. 进程A和进程B分别和共享内存进行关联 - 拿到共享内存的地址 -> 首地址4. 两个进程可以通过这个首地址

2020-09-04 20:51:44 223 1

原创 alin的学习之路:Qt的信号槽机制注意事项

alin的学习之路:Qt的信号槽机制注意事项1. 必须继承QObject类要使用Qt中的信号槽机制,必须继承QObject类,还需要在类的定义中的第一行写上一个宏Q_OBJECTclass MyTest : public QObject{ Q_OBJECT // 没有这个宏, 信号槽机制还是不能使用 ...}如果没有直接继承QObject,而是继承了一些继承QObject类的其他类也可以,比如QWidget类是QObject的子类,再有个类继承QWidget也能使用信号槽的机制

2020-09-04 18:36:50 462

转载 alin的学习之路:用户级线程和内核级线程

alin的学习之路:用户级线程和内核级线程转载:https://blog.csdn.net/gatieme/article/details/518924371. 线程的用户级线程实现方式在用户级线程中,有关线程管理的所有工作都由应用程序完成,内核意识不到线程的存在. 应用程序可以通过使用线程库设计成多线程程序. 通常,应用程序从单线程起始,在该线程中开始运行,在其运行的任何时刻,可以通过调用线程库中的派生例程创建一个在相同进程中运行的新线程。用户级线程仅存在于用户空间中,此类线程的创建、撤销、线程

2020-09-03 22:29:50 317

原创 alin的学习之路:c++11特性

alin的学习之路:c++11 新特性参考链接:https://blog.csdn.net/zzb2019/article/details/816243671. 关键字新增 auto decltype nullptr1.1 自动类型推导 autoauto a;// 错误,auto是通过初始化表达式进行类型推导,如果没有初始化表达式,就无法确定a类型  auto i = 1;  auto d = 1

2020-09-02 22:17:42 172

原创 alin的学习之路:Qt中的线程池QThreadPool

alin的学习之路:Qt中的线程池QThreadPool我们使用线程的时候就去创建一个线程,这样实现起来非常简便,但是就会有一个问题:如果并发的线程数量很多,并且每个线程都是执行一个时间很短的任务就结束了,这样频繁创建线程就会大大降低系统的效率,因为频繁创建线程和销毁线程需要时间。线程池是一种多线程处理形式,处理过程中将任务添加到队列,然后在创建线程后自动启动这些任务。线程池线程都是后台线程。每个线程都使用默认的堆栈大小,以默认的优先级运行,并处于多线程单元中。如果某个线程在托管代码中空闲(如正在等

2020-09-02 20:27:25 645

myMp3_alin.zip

Qt设计的MP3播放器,可应对学校级别的课程设计,在企业开发看来我的代码就是渣渣 资源内容: 设计一个MP3播放器,要求:使用Linux下的madplay进行歌曲的播放,一共有三大项: 1. Linux下字符界面实现Mp3播放器 2. 将字符界面移植到ARM板上运行 3. Qt图形化Mp3界面 资源内容:Qt图形化的设计开发。 包括:资源图片,基础的MP3图形化实现的代码。

2020-06-15

空空如也

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

TA关注的人

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