如何建立专属的安全易记的账号密码体系

在日常生活中,我们不仅需要记忆6位数字的银行卡密码,还需要记忆各式各样网站和应用的账号密码,可能我们自己也不记得曾经注册过多少个账号。账号和密码如此繁多,管理这些账号和密码,也是一个让人头疼的问题。 最原始的方法是将密码写纸上,放在一个安全的地方,但纸张存在丢失、损坏的风险,而且不方便存取。 改进版则是将纸张电子化,如 Excel,并辅以云盘实现多端同步,这样虽然存取便利性上有一定的改善,但安全性却降低了很多,如果云盘没有历史版本功能,在编辑时稍有失误,可能导致密码全部丢失,另外如果云盘密码泄露、电脑中毒或系统损坏,也可能导致密码泄露或丢失。如果某一天云盘软件突然倒闭了,该怎么办呢? 目前已经有很多账号密码管理软件,来帮助人们管理账号和密码,如 1Password、KeePass 等,但它们也或多或少存在一些缺陷:

爱折腾

谈一谈Qt的布局技巧

1. 手动拖放通过在 Qt Designer 中手动拖放控件,可以快速实现界面布局,如下图所示: 这种方式对初学者非常友好,可以快速上手开发一个界面,增加成就感。但我们需要知道,拖放布局不是 Qt 布局的全部,这种方式仅适合简单的界面布局。

Qt

C++异常之我所见

C++异常所带来的问题当我们在代码中写下一行 throw 语句时,我们就此埋下了一个祸根,从此以后,在该函数调用链中,必须至少有一个调用者需要提供相应的异常捕获,否则一旦异常被抛出,程序就会异常终止。 例如,函数 f() 调用 g(),而 g() 又调用 h(),并且 h() 抛出一个异常,则 g() 和 f()中必须有一个提供了相应的异常捕获,否则程序会异常终止。 由于异常可以使代码执行流程从任意地方跳出,因此我们还需要付出大量的精力来编写正确的异常安全代码,例如使用 RAII(资源获取即初始化)来保证资源正确释放。 如下面的示例,虽然我们在函数 f() 中捕获了异常,避免了程序的异常终止,但异常却中断了函数 g() 的正常执行流程,导致对象 m 没有被正确释放,从而出现了资源泄露。这种情况可能还会变相地增加了程序的调试难度。

C++语言

有趣的Unicode表情符号

本文了转载和收集了一些常用的 Unicode 表情符号,方便查阅。完整的 Unicode 表情符号可以查询下面的网站: unicode官网emoji列表 wikipedia List_of_emojis 几何图形🞀🞁🞂🞃🞄🞅🞇🞉...

爱折腾

生活家(转载)

《红楼梦》第五十回中,一夜大雪后,贾府大观园的姐妹们一起作诗,众姐妹要王熙凤为即景联诗起个头。王熙凤虽只识得几个字,倒也不扭捏,笑道:“我想下雪必刮北风。昨夜听见了一夜的北风,我有了一句,就是‘一夜北风紧’,可使得?”众人听了,都相视笑道:“这句虽粗...

剪切板

玩转Qt 2D绘图之画家

在 Qt 2D 世界中,图形基本都由点、线、矩形、多边形、椭圆、圆、折线、曲线、文本、贴图等基本元素辅以着色而构成,而且 QPainter 类已经提供了这些元素的绘制方法,花点时间掌握这些方法,也就掌握了 Qt 2D图形控件的制作,余下的就是勤学多练、孰能生巧了。

Qt

玩转Qt 2D绘图之画家的工具

软件是对现实世界的抽象,在设计软件接口时通常也会参考现实世界来进行设计。 在现实世界中,画家使用画笔、画刷这些工具在宣纸上作画,而在 Qt 中,画家是 QPainter 对象(画家的大脑则是 QPaintEngine),纸张可以是 QPaintDevice 的任何子类对象,如 QWidget、QImage、QPixmap、QGLPixelBuffer 等;在 QPainter 选好纸张后,就可以使用画笔来勾勒物体的轮廓了,Qt 中的画笔是 QPen 对象;画完轮廓后,可能还需要使用画刷来填充轮廓,Qt 中的画刷是 QBrush 对象。

Qt

玩转Qt 2D绘图之坐标系

Qt中提供了强大的 2D 绘图系统,可以使用相同的API在屏幕和绘图设备上进行绘制,主要基于 QPainter、QPaintDevice和 QPaintEngine 这三个类实现,其中: QPainter执行具体的绘图操作,QPainter 类提供了大量的GUI编程所需的函数,如drawLine、drawImage等。 QPaintDevice 是一个基类,提供绘图设备的抽象接口,它是一个二维空间的抽象,可以使用QPainter在其上进行绘制,常见的继承该类的绘图设备有QImage、QPixmap、QWidget、QOpenGLPaintDevice等。 QPaintEngine 提供了一些抽象接口,用于实现QPainter在不同的设备上进行绘制。QPaintEngine 由 QPaintDevice 创建并管理。

Qt
12322