使用截图软件开始截图的时候,实际上是将当前桌面抓取成一张背景图(加点暗色的透明度),将背景图作为一个无边框的z-order顶级全屏窗口覆盖在桌面上,后续操作就在这个窗口上进行,类似一个当前桌面的快照。 这里要讲的...
推送消息版本号的设计与使用问题
客户端服务端网络交互的时候最常用的就两种通信方法:请求应答和推送,在这两种场景同时存在的情况下客户端怎样保证与服务端的数据实时保持一致。 客户端可以分页请求服务端数据,同时为了保证数据实时更新还需要接收...
Qt 绘制简单QPixmap
当我们需要一个简单的QPixmap的时候不想很麻烦的去要个切图,直接绘制一下就可以了,比如我们想实现下面这种列表框,需要绘制一个圆形和一个表示无颜色的图形。 ![](https://ningto.com/upload/20210419-ntscreenshot...
Qt 更改Object Name显示指定的样式
Qt 更改Object Name显示指定的样式 背景 Qt做UI样式的时候通常会在构造函数里设置窗口整体的stylesheet,然后各个组件根据ObjectName或者类名来应用这些样式。但是这里有个问题就是必须先设置好各个组件,然后再设...
DLL注入和卸载
dll本身是不能运行的,它可以被可执行文件调用来执行,这种是主动去调用dll,反过来也可以将dll注入到指定进程地址空间去执行。 注入程序 使用命令行的方式提供了注入dll和卸载dll两个方法 // inject.cpp : 此文...
界面之下:还原真实的 MVC、MVP、MVVM 模式
文章中会用MVX代表所有MV相关的设计模式,下图中的图示描述的模型并不是固定的,在不同的场景下会有一些差别,如:前端开发,客户端开发,手机端开发可能都不太一样,关键是理解这种设计思想。 前言 做客户端开发、前端开...
Go寻找最长不含有重复字符的子串
寻找最长不含有重复字符的子串,这道算法题很常见,现在用go语言来实现下。 思路 从头到尾遍历,设置一个起始位置start,当前最大不重复字符子串的长度maxLength以及位置maxStart,还有一个map存储了遍历过的所有字符...
Go Buffer重用,避免频繁内存分配
在我们写代码的过程中如果多次使用make([]byte, 4096),那就要考虑使用下面的方法了。当然你不要想着把这个buffer保存为全局变量,多线程下会有竞态问题,实现代码: var blackHoleUsed = make(chan []byte, 1) fun...
Go竞态检测
介绍 竞争条件是最隐蔽和难以捉摸的编程错误之一。它可能会导致不稳定和莫名其妙的故障,而且很可能是在代码部署到生产环境很久之后才会产生。虽然Go的并发机制使编写干净的并发代码变得容易,但它们并不能防止竞争条件...
Golang pipeline模式
pipeline流水线模式(管道模式),我们用这个模式来计算所有质数的和。 什么是质数 质数又称素数。指在一个大于1的自然数中,除了1和此整数自身外,没法被其他自然数整除的数。 C++代码实现 我们先用一般的方法实现...
gorm写入数据库后时间差8小时
这个很明显是时区的问题,首先检查一下数据库连接的uri,是否包含如下参数: parseTime=true&loc=Local 重新连接数据库就可以了,如果还不行那你可能要看一下系统环境设置了。 [官方文档链接](https://github.co...
Qt QTextEdit文本高亮
QTextEdit支持HTML展示,这样实现高亮就很简单了。 需求 QTextEdit展示了一些信息,增加一个搜索框,搜索时实时高亮出搜索的内容并滚动到最近搜索到的地方。 实现 连接textChanged信号,在onSearchChanged中实现...
博客文章增加TOC
博客文章是使用Markdown写的,有了TOC(Table of Contents)阅读起来体验更好,TOC就是所有h1组成的标签目录,点击后调到相应的位置。 获取所有h1标签 我用的是github_markdown库,在renderer的Header方法中可以获取,存...
Chrome简单插件开发,自动初始化gitalk评论
Chrome简单插件开发——自动初始化gitalk评论 gitalk增加手动初始化评论 我给博客增加了gitalk评论,确实蛮方便好用的,但是没有初始评论需要管理员去创建,还好它提供了一个参数来手动创建 createIssueManually:...
Redis常见问题和解答
Redis 持久化机制 =========== Redis是一个支持持久化的内存数据库,通过持久化机制把内存中的数据同步到硬盘文件来保证数据持久化。当Redis重启后通过把硬盘文件重新加载到内存,就能达到恢复数据的目的。 实现:单独创建fork()一个子进程,将当前父进程的数据库数据复...
C++ 多线程有序锁和无序锁
正常情况下如果多个线程被阻塞,当使用notify_all或者notify_one来唤醒被阻塞的线程时是无序的,你不能知道被唤醒的是哪个线程。当然你可能说我不在意被唤醒的线程是哪一个,但是有些场景需要控制被唤醒的顺序,即:先加锁的线程让它先被唤醒。 首先,这里讨论的不是简单的使...
QWebEngineView支持https
问题 我有个本地网页,里面有https地址的图片,使用QWebEngineView load本地网页后图片显示不出来。 解决 从QWebEnginePage类派生出WebPage类实现certificateError接口,然后将WebPage设置给QWebEngineView。 代码 WebPage代码: // .h class WebPage : publi...
常用端口号
常用协议端口号情况如下: POP3:110端口,邮件收取。 SMTP:25端口,邮件发送。 FTP:20数据端口/21控制端口,文件传输协议。 HTTP:80端口,超文本传输协议,网页传输。 HTTPS:443。 DHCP:67端口,IP地址自动分配。 SNMP:161端口,简单网络管理协议。 DNS:53端口...
golang设计模式-命令模式
介绍 命令(Command)模式是一种对象的行为型模式,类似于传统程序设计方法中的回调机制,它将一个请求封装为一个对象,从而使得可用不同的请求对客户进行参数化;对请求排队或者记录请求日志,以及支持可撤销的操作。命令模式是对命令的封装,将发出命令的责任和执行命令的责任...
Qt启动第三方控制台程序并读取输出内容
使用QProcess来启动程序,下面使用同步方式来启动: 1. 准备好工作目录,将需要运行的程序放在工作目录下 2. 准备启动的命令行(如果有参数,要拼装好参数) 3. 设置工作目录(很重要) 4. 启动命令 5. 等待执行完成 6. 读取输出结果 代码演示了调用uploadimg.exe工具来...