- 博客(23)
- 资源 (18)
- 收藏
- 关注
原创 qt中文乱码原因分析及解决方案
首先说明几个基础概念UTF-8 BOM和UTF-8。BOM在文件头位置占三个字节,用来标识UTF-8编码,软件通过BOM来识别这个文件是否是UTF-8编码。 源码字符集。源码文件使用何种编码格式保存的。 执行字符集。可执行程序内保存的是何种编码(程序执行时内存中字符串编码)。 QString::fromxxx()函数。代表将字符串以对应格式去解析成执行字符集,qt程序运行的时候字符串编码在QString中实际都是以unicode编码存储的。fromLocal8Bit()代表从本地字符集(系统设..
2020-08-04 00:42:27
4054
原创 qt事件循环阻塞机制分析
关于事件循环所有对象的exec()方法都是开启事件循环,QApplicaion::exec()为主事件循环。程序在exec()里面无限循环,能让跟在exec()后面的代码得不到运行机会,直至程序从exec()跳出 事件循环能接收事件并处理。待处理事件被放在事件循环队列里顺序处理 事件循环的本质就是以队列的方式分配线程时间片,程序所有的代码都活动在事件循环里 事件循环是嵌套的,子层的事件...
2020-05-04 04:11:15
5498
3
原创 设计模式概述
本文为《设计模式其实很简单》一书的简单概括,推荐大家读一下这本书,简单明了、概括性强。GOF是设计模式的经典名著 《设计模式——可复用面向对象软件的基础》)的四位作者,这四个人常被称为Gang of Four, 即四人组,简称GOF。GOF描述了23种设计模式,其中不包括简单工厂模式,通常意义的设计模式指的是GOF的23种设计模式加简单工厂模式。GOF设计模式大类上分为创建型模式、结...
2020-03-21 19:15:26
220
原创 qt信号槽跨线程使用时候的坑
信号槽connect的时候扩展有5种,在跨线程使用的时候选择不同的参数会有不同的效果,使用不当会造成线程同步甚至崩溃的问题。5种参数的意义不再累述,可以参考信号槽的多线程安全性讨论 第一个坑 跨线程时connect使用Direct Connection (直接连接) 跨线程触发槽的时候,因为信号和槽不在一个线程内需要考虑同步问题(参考 信号槽的多线程安全性讨论),比较简单的方式是槽函...
2020-03-08 22:48:17
6411
原创 信号槽的多线程安全性讨论
讲正题之前首先需要了解几个基础知识点: 信号槽的连接方式 connect()函数的参数如下:QMetaObject::Connection QObject::connect(const QObject * sender, const char * signal, const QObject * receiver, const char * method, Qt::Connecti...
2020-03-07 01:15:46
2922
原创 c++ 智能指针关键原理
言简意赅,智能指针详细原理不做介绍,只记录关键点。1,STL的std::auto_ptr实际应用基本无意义。因为使用 std::auto_ptr 时,绝对不能使用“operator=”操作符,这一操作会夺取原对象的所有权,会造成原对象悬空。void TestAutoPtr2(){ std::auto_ptr<Simple> my_memory(new Simple(1...
2020-01-30 21:55:42
131
原创 哈希表空间换时间原理
哈希表原理不再冗述,以下只记录关键原理。 哈希表的长度一般是定长的,在存储数据之前我们应该知道我们存储的数据规模是多大,应该尽可能地避免频繁地让哈希表扩容。但是如果设计的太大,那么就会浪费空间,因为我们跟不用不到那么大的空间来存储我们当前的数据规模;如果设计的太小,那么就会很容易发生哈希冲突,体现不出哈希表的效率。所以,我们设计的哈希表的大小,必须要做到尽可能地减小哈希冲突,并且也要...
2020-01-30 21:40:46
1214
原创 qtcreator多线程编译参数和release调试参数
构建-make参数开启八核编译:MAKE="mingw32-make -j8"qmake额外参数开启release调试:QMAKE_CXXFLAGS_RELEASE=$$replace(QMAKE_CXXFLAGS_RELEASE,'-O2','-O0') QMAKE_CXXFLAGS_RELEASE+=-g QMAKE_CFLAGS_RELEASE+=-g QMAKE_LFLAGS_REL...
2020-01-09 09:42:09
1771
原创 QList,QLinkedLis,QVector 内存结构
QList是最常用的容器类,他存储给定类型的数据类型T的一列值。他所维护的是一个一指针数组,该数组存储的指针指向存储列表项的值; QVector这个方式是在相邻的内存位置上保存数据的,也就是以数组的方式进行存储的,所以对起进行插入的操作的时候是一项很耗时间的,因为要有大量的数据进行移位; QLinkedLis内存为链表存储,真正意义上的链表;故而,在使用时候:1、大多数情况下可以用QLi...
2019-09-23 16:30:12
925
转载 我看鸿蒙操作系统
本文转载自https://blog.youkuaiyun.com/caoz/article/details/92802521华为宣布推出鸿蒙操作系统。其实我觉得能理解,但也蛮无奈的,所谓不得已而为之,google不提供后续版本授权,不提供新的支持,怎么办,硬着头皮也要上。有些自媒体说什么安卓慌了,google吓坏了,我真的想骂人,一群王八蛋为了点击率什么都敢写。自建操作系统,对华为来说,或许技...
2019-06-19 10:55:42
1125
原创 通用浏览器插件技术概况与分析
目录主要的浏览器插件技术其它类浏览器插件技术http通信websocket通信Firebreath相关介绍浏览器控件发展趋势 浏览器插件是应用范围比较广的技术,因为一旦涉及到b/s模式开发,总会出现web端解决不了的情况,比如操纵硬件或本地文件等。即使html5的出现增强了web端的功能,但是就目前技术和发展趋势来看,浏览器插件技术无法被替代。然而在浏览器插件技术上...
2019-01-19 19:12:17
4108
2
原创 c++ 字符串中截取json的方法
最近项目中需要对一个流进行处理,其中需要一个提取json串的功能,没有找到相关开源的方法,于是手写了一个。因为json串开始结束是以 {} 作为分割的,但是json里面有嵌套包含 {} 的情况。如果能保证截取的字符串里面的 { 和 } 的数量是相同的就可以认为是json格式。具体思路就是从流中截取第1个 { 和第1个 } 中间的字符串 ,如果字符串里面 { 和 } 数量相等,就认为截取成功;如...
2018-08-21 11:14:26
1330
原创 类的静态成员函数调用类非静态成员的方法
在类中使用静态成员函数是一种破坏封装的行为,因为静态成员函数只能调用类的静态成员。但是在有些情况下只能使用静态成员函数,比如类内绑定自身成员函数作为回调函数,这种情况在开启多线程时很常见,如果不想将回调定义为全局那只能定义为类静态了,为了避免过度破坏封装类中应当尽量不要让类静态成原函数调用类成员。这种情况下可以用一种比较取巧的方法。因为类的静态成员和普通成员其实就一种区别,那就是静态成员...
2018-08-20 16:48:51
7420
原创 开源网络库boost.asio,libevent,mongoose学习记录以及多线程模式的实现
目录IO操作: IO多路复用(select,poll,epoll)select:poll:epoll:异步IO(iocp,epoll)LibeventBoost.asioMongoose总结: 首先说明一下几个基础概念: IO操作: IO操作包括两个部分: 等待数据准备好:对于一个套接口上的操作,这一步骤关系...
2018-08-17 21:15:17
6467
5
转载 “全栈”工程师 请不要随意去做
今天来说说全栈「迷之怀旧 」老朋友可能会很熟悉这篇文章,因为当时因为这篇文章的观点,我在优快云博客头条被大牛、大佬们喷的体无完肤,特别酸爽,当然赞同我的更多。短短几小时博客200条留言,居当时csdn官方人员说:简直破了记录了。他们说我伤了他们的心,不知道从何说起,可能真的点到了大部分基础不扎实的人的心了吧,也可能我把全栈描述成了真的全栈,今天技术发展越来越快,更新频率越来越高,所以我决定再来回...
2018-03-23 17:08:04
774
转载 回调方法介绍之中国好室友篇(Java示例)
作者:futeng链接:https://www.zhihu.com/question/19801131/answer/26586203来源:知乎著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。前言在Java社区的各种开源工具中,回调方法的使用俯拾即是。所以熟悉回调方法无疑能加速自己对开源轮子的掌握。网上搜了一些文章,奈何对回调方法的介绍大多只停留在什么是回调方法的程度上。本篇文...
2018-03-23 16:39:46
171
原创 qwebsocket使用wss通信时的应注意的问题
qt里面的qwebsocket从5.10版本以后支持wss,但是需要先做ssl设置,官方文档上并没有说明这一点,本人刚开始使用的时候绕了很多弯路。现在将设置方法记录一下,希望可以帮助到大家。wss连接大概原理就是在ws连接之前使用ssl套接字先建立一次安全通道,然后在使用ws连接。所以我们在使用qwebsocket之前需要先进行ssl认证。首先去官方网站http://slproweb.com/
2018-01-11 18:15:06
6729
原创 使用zlib开源库解压时内存崩溃问题解决
最近一个项目中用到了解压缩,打算使用zlib开源库封装quazip在qt中开发,但是在解压缩过程中遇到了内存崩溃现象,错误指向了inflate_fast里面的汇编模块。最后经过分析发现是编译zlibwapi.dll的时候使用汇编模块造成的bug。解决方法用c编译方式取代汇编方式,在zlib源码的zlibvc工程属性-预处理器定义里面去掉 ASMINF 定义,这样就可以屏蔽掉汇编模块了。但是
2018-01-04 20:58:13
3418
5
原创 php加载COM组件失败原因及其解决方法
在php中调用其它编程语言的接口,个人感觉最方便的就是使用COM组件了。最近小弟刚开始接触php,在研究调用c++编写的COM组件的时候遇到了“'Failed to create COM object”这个错误,费了不少功夫终于解决。高版本的php需要手动开启支持COM,基本就是在php.ini中修改配置为com.allow_dcom = true和extension=php_com_dotn
2017-02-23 20:49:42
14094
1
原创 XAMPP学习之路: 第二章 模拟服务器环境
这章很简单,就是在局域网里面模拟一个服务器环境。首先打开C:\Windows\System32\drivers\etc\hosts内容如下:# Copyright (c) 1993-2009 Microsoft Corp.## This is a sample HOSTS file used by Microsoft TCP/IP for Windows.## This
2017-02-16 16:21:38
714
原创 XAMPP学习之路: 第一章 下载和安装XAMPP
XAMPP(Apache+MySQL+PHP+PERL)是一个功能强大的建站集成软件包。这个软件包原来的名字是 LAMPP,但是为了避免误解,最新的几个版本就改名为 XAMPP 了。它可以在Windows、Linux、Solaris、Mac OS X 等多种操作系统下安装使用,支持多语言:英文、简体中文、繁体中文、韩文、俄文、日文等许多人通过他们自己的经验认识到安装 Apache 服务
2017-02-16 14:46:55
2510
原创 ice使用简单式例 c++
ICE提供一些扩展组件,实现网络通讯的负载均衡(ICEGrid),通讯节点统一管理(ICEBOX),程序自动更新(ICEPatch)等,方便应用扩展。 在实现服务端或者客户端的时候通常都要写一些“公式化”的代码,负责Ice通信器初始化、异常捕获,以及应用终止后的销毁。如下: 1int status=0; 2 3 Ice::Communicat
2017-02-13 14:21:54
1931
qwebsocket使用wss连接工程源码,qt5.7,debug下面已经包含ssl依赖库
2018-01-11
修改后的最新zlib源码库,附带封装成quazip库,qt5.7的解压缩工程使用示例
2018-01-04
Qt学习之路(1-60)
2017-02-24
slice2qt ice3.5.1 qt5.30版本
2014-10-16
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人