自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(25)
  • 问答 (1)
  • 收藏
  • 关注

原创 Go语言基础、实战

最近由于工作需要,学习并使用了go。之前一直有点井底之蛙,一门心思只想钻研C++,但是最近接触了别的语言之后,才有了感慨,不必执着于什么语言,说到底也只是帮助我们实现的工具而已。之前学了点rust的皮毛,而这次比较全面了了解了GO语言,简直不要太爽,哈哈哈。所以新建了一个博客,以此来记录,也算是做个笔记吧,同时也能鞭策自己,更加全面深入的思考。 本系列博客,希望尽量少在基础语法上啰嗦...

2019-11-02 16:30:02 437

原创 Qt for Android——从搭建环境到APK的历练之路

这个系列的博客是用来记录我用Qt进行安卓开发中的一些经验总结,从接受移动端的项目开始,就开始对Qt for Android进行研究。现在项目刚开始做没多久就交出去了,但是大部分前期该踩的坑都已经踩过了,想用博客的形式记录下来。以后也会继续研究,不断更新。。。ps: 以前工作都是用完什么就不管了,没多久就会忘记,这样很不利于个人成长,劳动转成的个人价值也很低,所以现在决定开始写博客了。...

2019-05-06 19:25:13 16282 1

原创 road to master

直观魔鬼数字函数/类过长圈复杂度高函数/变量命名不规范等建议:规范性的问题,尽量通过工具去扫描微观类字段定义不合理函数功能不单一变量作用域过长等建议:代码局部层面问题,重点排查,优先关注宏观类职责不单一上帝类分层不清楚上下文混乱等建议:需求本身设计,类定义,类结构关键设计问题,这些问题需要结合业务和架构发展CMake是一个跨平台的安装(编译)工具,可以用简单的语句来描述所有平台的安装(编译过程)。

2023-08-29 21:40:24 640

原创 平衡二叉树

【代码】平衡二叉树。

2023-08-29 16:36:40 65

原创 学习哈哈哈哈

所以,互斥锁加锁失败时,会**从用户态陷入到内核态**,让内核帮我们切换线程,虽然**简化了锁的难度,但是存在一定的性能开销成本**(在加锁失败和锁被释放时,分别会有一次上下文切换,如果代码执行的时间很短,可能上下文切换的时间都比锁住的代码执行时间还长)。> > > 写优先锁:当读线程 A 先持有了读锁,写线程 B 在获取写锁的时候,会被阻塞,并且在阻塞过程中,后续来的读线程 C 获取读锁时会失败,于是读线程 C 将被阻塞在获取读锁的操作,这样只要读线程 A 释放读锁后,写线程 B 就可以成功获取读锁。

2023-08-29 16:33:06 476

原创 Go错误集锦 -- Map引起的崩溃concurrent map iteration and map write

今天早上一来领导告诉我消息源出问题了,赶紧检查日志,没有报错,于是跟着看nohup输出,看到一个error导致了程序崩溃:concurrent map iteration and map write. 看到这个错误信息,很容易就想到了,可能是在多线程中,同时对map进行了遍历和写操作,导致的崩溃。然后通过对代码进行检查,发现了确实有一处地方,没有对遍历map的操作加锁,导致了这个问题。之前只考虑到了读和写会引发崩溃,直到今天发生崩溃了才发现这个问题。 上一下之前的模拟代码:...

2020-07-14 11:30:01 10414

原创 Go语言基础、实战 -- 9. 方法

1. 简介 在面向对象编程中,一个对象其实就是一个简单的值或者一个变量,在这个对象中会包含一些函数,这种带有接收者的函数,称为方法。本质上,方法是和一种类型关联的函数。(类似于C++的成员函数,只有这种类型的对象才可以调用)2. 定义方式 在Go语言中,方法总是绑定对象实例,并隐式地将实例作为第一实参,方法的定义语法如下:func (v Type) MethodName() {}3. 实际例子 结构体作为接收者 首先,声明一个新的类型:t...

2020-05-09 16:44:32 328

原创 Go语言基础、实战 -- 8. 结构体

xxx

2020-04-29 15:39:21 323

原创 Go语言基础、实战 -- 7. 指针

1. 什么是指针 指针是存储内存地址的变量类型 2. 指针的声明与使用 指针的声明可以用一个已经存在的变量,也可以用 ==new(T)== 的形式:```govar num int = 5p_num := &numfmt.Printf("[%p] [%d]\n", p_num, *p_num) // 输出结果为:[0xc0000120a0] ...

2020-04-29 15:29:51 423

原创 Go语言基础、实战 -- 6. 字符串

1. 什么是字符串? 在Go中字符串是byte数组。可以通过将内容放在 " " 之间的方式来创建一个字符串。如下:s := "I am string" Go中的字符串符合Unicode标准,并以UTF-8编码。2. 访问字符串中的字节、遍历 因为字符串实际上是byte数组,所以可以通过下标访问一个字符串的单个字节,也可以遍历。如下:str := "He...

2020-04-28 20:13:58 179

原创 Go2sky -- Golang用skywalking实现全链路追踪

一、背景介绍 由于在微服务架构中,服务之间的调用关系多而复杂,所以有必要对它们之间的调用链路进行追踪、分析,判断是哪里出了问题,或者哪里耗时过多。 最近接到了这个需求,添加全链路追踪,所以研究并实践了一下,还不太深刻,若有错误的地方欢迎指正。二、OpenTracing相关概念介绍 首先,要实现全链路追踪,必须先理解OpenTracing的一...

2020-04-28 17:31:40 16660 5

原创 Qt —— 手动编译Qt源码(附带编译openssl库)

一、手动编译openssl 如果你不需要openssl的话,这一部分可以跳过。 我的版本是:openssl1.1.1d 下载地址:https://www.openssl.org/source/ 1. 准备工作 下载openssl并解压,下载perl、nasm并安装。 perl和nasm安装好后检查一下环境变量,有没有自动添...

2020-04-14 20:53:40 5140

原创 Go语言基础、实战 -- 5. map

一、map 1. 简介 map是Go的内置类型,是键值对(key-value)的形式,不再赘述。 2. 语法 map类型的表示语法为:map[KeyType]ValueType 3. 声明 可以用普通的声明方式,也可以用速记声明,还可以声明同时初始化,如下:salary := make(map[string]...

2019-12-25 20:41:08 268

原创 Go语言基础、实战 -- 4. 数组、切片

一、数组 1. 简介 数组:是指相同元素的集合。 元素:数组中包含的每个数据,被称为元素。 长度:数组中元素的个数,被称为数组的长度。 注意:数组长度也是数组类型的一部分,比如 [2]int 和 [3]int 两个数组,类型是不同的。 2. 声明数组 数组的类型为 [n]T ,n表示数组中...

2019-11-28 21:02:31 526

原创 Go语言基础、实战 -- 3. 条件和循环语句

一、条件 Go语言中提供了if-else的条件判断 1. 语法 if-else语句基本语法为:if condition { ...} else if condition2 { ...} else { ...} 2. 变体 Go语言允许我们在 if 后面再执行一个语句,然后再做判断,语法为:...

2019-11-26 20:02:34 191

原创 Go语言基础、实战 -- 2. 函数、变参函数和包

一、函数 1. 函数语法 func FuncName(ParamName Type) ReturnType ,如下:func FuncName(param int) int { return 1} 如果有多个相同类型的参数,不必每个变量后面都写类型,可以写在一起,如下:func FuncName(price, volume int...

2019-11-25 20:40:25 180

原创 Go语言基础、实战 -- 1. 变量、类型和常量

一、变量 首先呢,变量是啥意思我就不解释了 1. 变量的声明及初始化 Go语言声明变量的方式有很多种形式,比如,可以带var关键字,可以不带;可以单个变量声明,也可以多个变量声明; 可以给初始值,也可以不给。var age int //声明不初始化,age=0var age int = 25 ...

2019-11-02 17:53:40 208

原创 Qt for Android——打包APK

1. 如何生成APK 这个不用我们来操心,当我们的工程的构建套件选择Android相关的时候,编译之后Qt会自动为我们生成APK文件。如果是编译并运行,Qt会要求你选择一个匹配的安卓虚拟设备或者真机设备,它会自动把编译生成的APK安装到你选择的设备中,然后运行。你也可能通过这个来调试程序。2. APK的路径 默认生成的apk的路径在build下: a...

2019-05-06 19:08:51 12912 3

原创 Qt for Android——关于版本的选择(ABI和CPU版本)

1. 前景介绍 之前在开发Qt for Android程序的时候,不知道如何选择套件的版本,乱选一通,经常是程序开发完,到了运行选择设备的时候告诉我设备不匹配,不支持这个ABI。下面就来讲讲这些版本。2. Qt中套件对应的版本 在我们安装Qt的时候,会有Android相关的选项供我们勾选,我选择了如下图所示的三个选项: 从名字已经可以...

2019-05-06 17:31:20 7004

原创 Qt for Android——Ubuntu下Qt for Android的环境搭建

1. 随便写写 今天突然被告知手上的Android项目要交由安卓的同事来做,于是,研究了这么久的东西终于。。。派不上用场了,哎。接下来会对这段时间内的一些经验进行总结归档,一是为了以后查找相关问题的时候有迹可循,二是对于这一块我确实还挺感兴趣的,项目没了自己也会继续研究下去,相信这部分的博客会不断更新壮大的,加油!2. 需要的东西 想要在Ubuntu下搭建Qt for...

2019-05-06 16:12:45 9207 1

原创 Qt for Android——通过screenOrientation属性设置Android应用的屏幕显示方向

一、前景介绍 在现在大多数主流的移动APP中,屏幕显示方向基本上都是强制竖屏显示了,所以在大部分情况下,本文的内容都派不上用场。然而在某些时候当我们需要横屏显示界面的时候,我们就需要设置屏幕的显示方向。 那么在Qt里面是如何做到的呢?首先Qt为我们提供了Qt Android Extras模块,供我们开发Android一些相关的额外功能。我们可以用这个模块提供的类和接...

2019-04-30 14:38:07 2956 1

原创 Qt for Android——QSensor传感器与传感器手势的使用

一、前景介绍 在我们用Qt进行Android应用开发的时候,免不了要对一些设备的传感器或者收回进行监测。比如摇晃手机、翻转手机、接电话时等等。QSensor为我们的开发提供了便利,让我们能够获取到这些信息和手势,从而进行我们对应的处理。二、传感器和传感器手势 传感器相关的类(如QGyroscope)可以获取到传感器的信息,比如陀螺仪、线性加速度等等,但通常...

2019-04-26 15:50:04 3785

原创 enable_shared_from_this,关于在类的内部获取该对象shared_ptr指针的问题

今天碰到一个bug,我在QT自定义控件类的内部做了获取该对象的shared_ptr指针,用了this指针,结果发现悲剧了,写了这行代码之后,设置样式表都无效了,就像下面这样:class MineButton{public: void on_MineButton_clicked();}void on_MineButton_clicked(){ ui->MineBut...

2018-03-13 20:40:04 677

原创 使用sqlite3所遇到的问题

C++中用sqlite的库函数操作数据库

2017-05-25 15:46:55 712

原创 第一篇博客---记一次因构造函数给我狠狠的教训

之前一直没有写博客的习惯,做了一些东西做了就做了,可是今天因为一点小小的问题让我找了一整天的bug,想以此为教训,鞭挞自己,做过的东西千万啊要掌握、融会贯通,不然就白做了,今天就以此为契机,以后没做一点东西都会养成写博客的习惯,将自己做过的东西记录下来,让自己以后有证可查。今天的问题很简单,由于构造函数的执行顺序引起的错误,下面贴上伪代码说明,首先是头文件:class A{public:

2017-04-20 01:16:01 254

空空如也

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

TA关注的人

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