自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

个人主页

个人网站:https://xuemingde.com

  • 博客(131)
  • 资源 (13)
  • 问答 (1)
  • 收藏
  • 关注

转载 MySQL锁

在 MySQL 中,当发生死锁时,MySQL 使用一种叫做"最小成本回滚"(InnoDB 中称为"最小编号事务回滚")的策略来选择一个事务作为牺牲者并进行回滚,最小成本回滚策略是 MySQL 的默认行为,它会自动选择牺牲者并回滚事务。最小成本回滚策略的原理是选择最小成本的事务作为牺牲者。

2024-04-17 08:22:35 7

转载 每个程序员都应该了解的硬件知识

在追求高效代码的路上,我们不可避免地会遇到代码的性能瓶颈。但以上的内容可能都太过繁琐、细节太多,在阅读的过程中,我们可能会迷失在纷繁的细节中,没法很好地将知识运用到实践中。组相联映射则尝试吸收前两者的优点,将缓存中的缓存行分组,主存中某一行只能映射到特定的一组,在组内则采取全相联的映射方式。为 2 的幂次时,都会有一个运行时间的突起,一个性能的毛刺。而二维数组在内存中是按行排布的,换句话说,数组中相邻的两行是首尾相连排列的。),用黑色箭头表示在循环外进行的操作,用不同的颜色,表示不同迭代中的操作。

2024-04-16 10:33:29 11

原创 为什么SpringBoot的 jar 可以直接运行

Spring Boot 应用程序被打包成的jar包之所以可以直接通过java -jar命令运行,是因为Spring Boot在构建过程中做了一些特殊的设计和配置。: Spring Boot使用maven插件(或Gradle对应的插件)将项目及其所有依赖项打包成一个单一的、自包含的jar文件,通常称为“Fat JAR”或“Uber JAR”。这意味着不仅包含了自己的类文件,还包含了运行应用所需的所有第三方库。: 在打包过程中,此插件会修改MANIFEST.MF文件,这是jar包中的一个元数据文件。

2024-04-07 12:35:55 353 2

转载 表设计的18条军规 - 掘金

对于后端开发同学来说,访问数据库,是代码中必不可少的一个环节。系统中收集到用户的核心数据,为了安全性,我们一般会存储到数据库,比如:mysql,oracle等。后端开发的日常工作,需要不断的建库和建表,来满足业务需求。通常情况下,建库的频率比建表要低很多,所以,我们这篇文章主要讨论建表相关的内容。如果我们在建表的时候不注意细节,等后面系统上线之后,表的维护成本变得非常高,而且很容易踩坑。今天就跟大家一起聊聊,数据库建表的18个小技巧。

2024-04-07 11:13:47 13

转载 Redis为什么快?我说Redis是纯内存访问的

纯内存操作Redis利用内存进行数据存储,其操作基于内存读写,由于内存访问速度远超硬盘,使得Redis在处理数据时具有极高的读写速度。特别是对于简单的存取操作,由于线程在内存中执行的时间非常短,主要的时间消耗在于网络I/O,因此Redis在处理大量快速读写请求时表现出卓越的性能。单线程模型Redis采用单线程模型处理客户端请求,这一设计确保了操作的原子性,避免了多线程环境下的上下文切换和锁竞争问题。

2024-04-03 09:50:32 22

转载 JDK21|借鉴了近十种语言,String终于变好用了 - 掘金

要想看官方对于JDK21的更新说明,可以直接跳转到下面这个官方网站中JDK21是最新的LTS版本,里面添加了不少新的特性,本文将介绍JEP430–字符串模板前面介绍的这几种模板处理器都是JDK21中自带的,同时也提供了一个接口使得我们可以自己去实现一个字符串处理器,只需要继承StringTemplate.Processor,然后实现process方法即可。比如我现在想要自定义一个字符串的模板处理器,效果是将传入的变量中的空格都去除,就可以按照下面这种写法@Overridei++) {

2024-04-03 09:44:28 22

原创 Java核心卷一 · 笔记05

Java 的服务加载器机制允许开发者编写服务接口,然后通过服务提供者(实现了这些接口的类)来扩展和实现这些接口。在 Java 中,代理(Proxy)是一种设计模式,允许你提供一个替代或占位对象,以控制对另一个对象的访问。通过代理模式,你可以在不修改原始类的情况下对其进行控制和扩展,实现了更加灵活的代码结构。在静态代理中,代理类需要显式地实现与目标对象相同的接口,并在代理类中调用目标对象的方法。方法创建了一个动态代理对象,并在代理对象的方法调用前后输出了额外的信息。创建实现服务接口的类,这些类是服务提供者。

2024-03-01 11:34:43 686

原创 Java核心卷一 · 笔记04

需要注意的是,可变句柄是一种高级特性,通常用于特定的场景,如性能优化、并发编程等。在一般情况下,使用传统的面向对象方式来访问和修改对象的字段是更常见和推荐的做法。可变句柄的主要目标是提供一种高性能的方式来进行原子性和有序性操作,以及避免不必要的锁定和同步开销。它可以用于访问和修改对象的字段,包括私有字段,以及数组的元素。原子性操作:可变句柄提供了一系列原子性的操作,如读取、写入、比较和交换等,可以保证多线程环境下的数据一致性。方法返回的类型名称可能是实现定义的,可能是一个字符串,也可能是一个未指定的值。

2024-03-01 09:19:53 567

原创 Java核心卷一笔记03

抽象方法是没有具体实现的方法,只有方法签名,需要在具体的子类中实现。作为基类进行继承:抽象类可以被其他类继承,子类可以通过继承抽象类来获得其定义的接口和行为。需要注意的是,抽象类可以包含非抽象方法,但抽象方法必须在子类中进行实现。虚函数是一种特殊的成员函数,它允许在派生类中重写基类中的同名函数,并通过基类指针或引用调用派生类中的函数。关键字用于声明虚函数,允许在派生类中重写基类中的同名函数,并通过基类指针或引用调用派生类中的函数,实现多态性。类中,通过抽象类的引用调用了不同子类的方法,实现了多态性。

2024-01-29 20:20:03 1247

原创 Qt开发学习笔记04

请注意,在使用 QGraphicsDropShadowEffect 时,需要确保包含 QDialog 的窗口部件(例如 QWidget、QMainWindow 等)具有透明背景,以便阴影效果能够正确显示。),在重写监听事件时,未在方法结束后返回数据。使用QProcess检测IP会有一个问题,QProcess是阻塞形式的,如果IP不通时,虽然能够检测到,但会使程序卡顿,因为只有检测完成后才能继续程序。请注意,静态全局常量的使用需要小心处理,并确保在适当的时间创建和初始化相关对象,以及正确管理对象的生命周期。

2024-01-29 11:00:12 1012

原创 Java核心卷一笔记02

To 175。

2024-01-24 13:27:27 351

原创 Java核心卷一笔记01

To 112页。

2024-01-23 10:00:23 386

原创 Qt C++ 将qDebug打印输出到D盘的log.txt文件下

的输出重定向到 D 盘下的 log.txt 文件中,你可以使用 Qt 提供的消息处理机制来捕获和处理输出消息。的消息处理函数,它会将不同级别的消息写入到 D 盘下的 log.txt 文件中。输出调试信息时,输出的内容将被捕获并写入到 log.txt 文件中。请确保你的应用程序在运行时具有足够的权限来写入 D 盘中的文件。函数,将自定义的消息处理函数设置为全局的消息处理函数。在上述示例中,我定义了一个名为。如果你还有其他问题,请随时提问。在应用程序中,当调用。

2023-12-14 12:45:53 583

原创 Qt开发学习笔记03

在这个例子中,我们创建了一个继承自QObject的Worker类,该类的doWork() 槽函数实现了一个简单的任务。接着,我们使用connect()方法将线程的started()信号连接到Worker对象的doWork()槽函数,该槽函数在新的线程中执行。然后,你可以使用Qt的翻译工具来翻译这些字符串,并将翻译结果保存到对应的翻译文件中。你可以根据需要选择合适的消息框类型,例如information()用于显示信息框,warning()用于显示警告框,critical()用于显示错误框等。

2023-12-07 10:09:57 1066

原创 Qt开发学习笔记01

在这个例子中,我们使用std::find函数来查找字符’c’是否在myArray数组中。如果字符存在于数组中,std::find函数将返回指向该字符的迭代器,否则将返回指向数组末尾的迭代器。我们可以使用std::end函数来获取数组的末尾迭代器,然后将其与std::find函数的返回值进行比较,以确定字符是否存在于数组中。函数原型为:void QTableWidget::sortItems(int column, Qt::SortOrder order = Qt::AscendingOrder)

2023-12-07 10:09:19 979

原创 Qt开发学习笔记02

在C++中,可以使用QString的chop()函数来删除最后一个字节。这个函数会将字符串的长度减小一个字节,并且移除最后一个字符。在上述代码中,我们定义了一个QString对象str,并赋值为"Hello World"。然后调用chop()函数,传入参数1,表示删除一个字节。执行完毕后,str的值将变为"Hello Worl",最后一个字节已被删除。

2023-12-07 10:03:02 1127

原创 new Object()到底占用几个字节

上图中的对齐填充不是一定有的,如果对象头和实例数据加起来刚好是8字节的倍数,那么就不需要对齐填充。对象内存中可以分为三块区域:对象头(Header),实例数据(Instance Data)和对齐填充(Padding),以64位操作系统为例(未开启指针压缩的情况)Java对象布局。可以看到,这时候已经没有了对齐填充部分了,但是占用大小还是16位。然后分别在开启指针压缩和关闭指针压缩的场景下分别输出这个类的大小。最后的结果是16字节,没有问题,这是因为**这个时候就能看出来开启了指针压缩的优势了,

2023-10-18 09:31:03 267

原创 1967作为子字符串出现在单词中的字符串数目

java解法,程度:简单。

2023-10-13 14:47:12 207

原创 C++开发学习笔记3

需要注意的是,在有继承关系的类中,基类的析构函数应该声明为虚函数,以便子类能够正确调用其自身的析构函数。这是因为在使用基类指针或引用指向派生类对象时,如果基类的析构函数不是虚函数,那么就无法通过基类指针或引用来调用派生类的析构函数,从而导致资源无法正确释放。调用顺序:在具有继承关系的类中,当派生类对象被销毁时,会先自动调用派生类的析构函数,然后再调用基类的析构函数。总结:C++ 的析构函数通过编译器自动调用,在对象销毁时执行必要的清理工作,它的实现原理包括命名规则、调用顺序等。

2023-10-09 13:06:31 402

原创 Qt开发学习笔记02

在C++中,可以使用QString的chop()函数来删除最后一个字节。这个函数会将字符串的长度减小一个字节,并且移除最后一个字符。在上述代码中,我们定义了一个QString对象str,并赋值为"Hello World"。然后调用chop()函数,传入参数1,表示删除一个字节。执行完毕后,str的值将变为"Hello Worl",最后一个字节已被删除。

2023-10-09 12:57:15 299

原创 如何防止重复提交订单

产生的原因- 一种是由于用户在短时间内多次点击下单按钮,或浏览器刷新按钮导致。- 另一种则是由于Nginx或类似于SpringCloud Gateway的网关层,进行超时重试造成的。- 由于网速等原因造成页面卡顿,用户重复刷新提交页面- 黑客或恶意用户使用 postman 等网络工具,重复恶意提交表单

2023-10-09 12:55:56 666

原创 C++ Qt QModbusClient 的使用

以上是一个基本的使用示例,您可以根据实际需求进行扩展和调整。请注意,Modbus通信涉及到更多的概念和操作,例如设置寄存器地址、处理异常等,请参考Qt的官方文档和Modbus协议的规范进行更详细的了解。这是一个示例的读取请求,您可以根据需要创建读取或写入请求,并通过。根据您的实际情况,选择适当的连接参数函数来设置连接的详细信息。希望这个回答对您有帮助。如果您有更多问题,请随时提问。信号,您可以在连接状态发生变化时获取通知。是可选的,用于管理对象的生命周期。在C++ Qt中使用。

2023-08-31 16:43:05 1365 2

原创 TCP socket error (The proxy type is invalid for this operation).

在使用QModbusTcpClient连接Modbus TCP设备时,如果您没有配置代理服务器,或者配置的代理类型不正确,就会出现这个错误。有时防火墙可能会阻止应用程序与外部设备建立连接,您可以尝试暂时禁用防火墙进行测试,如果连接成功,则说明防火墙设置可能是问题所在。确认网络环境:如果您在使用Modbus TCP设备时没有使用代理服务器,确保您的计算机和Modbus TCP设备处于相同的网络环境中,并且可以直接进行通信。如果您有更多问题,请随时提问。检查设备状态:在连接设备之前,可以使用。

2023-08-31 16:41:59 881

原创 Reference to incomplete type ‘const QVariant‘ could not bind to an rvalue of type ‘int‘

QVariant`是一种通用的数据类型,可以存储多种不同的数据类型,包括整数、字符串、浮点数等。如果您尝试将一个`int`类型直接赋值给`QVariant`类型的变量,可能需要进行类型转换。`QVariant`类型通常在Qt框架中使用,所以请确保包含了正确的Qt头文件,并在代码中使用了正确的命名空间。根据您提供的信息,似乎涉及到了`QVariant`类型和`int`类型之间的绑定问题。这样可以将`myInt`的值转换为`QVariant`类型并赋值给`myVariant`变量。

2023-08-31 16:39:14 259

原创 Qt 数据库连接池

【代码】Qt 数据库连接池。

2023-06-29 13:13:21 578

原创 计算机中整数的加减运算

以带符号位的四位二进制数为例:1010,最高位为1表示这是一个负数,其它三位010,即021+02^0=2,所以1010表示十进制数-2。在8位二进制的表示为:00001001在8位二进制的表示为:10001001那么减法如何计算呢?由于我们规定了负数的表示,可以把减法转换成加法来计算,要计算a-b,可以先把b变号然后和a相加,相当于计算a+(-b)。但如果两个加数的符号位不同就要用大数的绝对值减小数的绝对值,这一步减法计算仍然是免不了的。

2022-11-15 10:19:16 2050 2

原创 小数在计算机的存储形式

4.25转为二进制的过程:拆分为整数部分和小数部分,整数部分为4,小数部分为0.25。4转二进制为:1000.25转二进制为:0.01将两个二进制相加就是:100.01,所以4.25的转为二进制就是100.010.25转二进制的过程:0.25*2=0.5,取整数为00.5*2=1.0,取整数为1这时小数部分为0时结束,0.25的二进制的小数部分就是01。19.625转为二进制过程:19转二进制为:100110.625转二进制的过程:0.625*2=1.25,取整数部分 1。

2022-11-11 10:47:13 1277

原创 算法基础13:数结构

为什么要学习树结构数组存储方式的分析优点:通过下标方式访问元素,速度快。对于有序数组,还可使用二分查找提高检素速度。缺点:如果要检素具体某个值,或者插入值(按一定顺序)会整体移动,效率较低。链式存储方式的分析优点:在一定程度上对数组存储方式有优化(比如:插入一个数值节点,只需要将插入节点,链接到链表中即可,删除效率也很好)。缺点:在进行检素时,效率仍然较低,比如(检素某个值,需要从头节点开始遍历)树存储方式的分析能提高数据存储,读取的效率,比如利用二叉排序树(Binary Sort Tree),既可以保证数

2022-09-13 20:55:01 166

原创 算法基础11:查找算法

请对一个有序数组进行斐波那契查找{1,8,10,89,1000,1234},输入一个数看看该数组是否存在此数,并且求出下标,如果没有就提示"没有这个数。上面代码存在问题,如果有重复数据,只会返回一个。查找的数组必须是有序的。是否包含需要查找的数。

2022-09-13 18:57:27 89

原创 算法基础12:哈希表

有一个公司,当有新的员工来报道时,要求将该员工的信息加入(id,性别,年龄,住址),当输入该员工的id时,要求查找到该员工的所有信息.要求:不使用数据库,尽量节省内存,速度越快越好=>哈希表(散列)

2022-09-07 21:17:50 97

转载 算法习题04-图的基本介绍与代码实现

图是一种数据结构,其中节点可以具有零个或多个相邻的元素。两个结点之间的连接称为边,结点也可以称为顶点。

2022-07-31 15:50:48 131

转载 算法习题03:快速排序

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-JWzkMyQZ-1659253532312)(https//xuemingde.com/pages/image/2022/07/20/19531762PXaC.png)][外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-GHhNwZtk-1659253532312)(https//xuemingde.com/pages/image/2022/07/20/195332L4J7MK.png)]...

2022-07-31 15:47:09 413

原创 算法习题02:选择排序算法

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-70jor7gG-1659253112809)(https//xuemingde.com/pages/image/2022/07/18/20061658145726.png)]它的工作原理首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置,然后,再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾。以此类推,直到所有元素均排序完毕。截图来自《算法图解》这本书。...

2022-07-31 15:41:13 252

原创 算法习题01:二分查找算法

算法一的做法,在极端情况下,(low+high)存在着溢出的风险,进而得到错误的mid结果,导致程序错误。二分查找法的O(logn)让它成为十分高效的算法。就在它的限定之上必须有序,我们很难保证我们的数组都是有序的。解决这些缺陷问题更好的方法应该是使用二叉查找树了,最好自然是自平衡二叉查找树了,既能高效的(O(nlogn))构建有序元素集合,又能如同二分查找法一样快速(O(logn))的搜寻目标数。数组读取效率是O(1),可是它的插入和删除某个元素的效率却是O(n)。......

2022-07-31 15:37:12 94

转载 深入理解volatile

volatile作为并发问题不得不谈的一个关键字,在代码层面简简单单的一个关键字却解决了很大一部分的并发程序问题,我们常常遇到并发问题就会想到使用synchronized和volatile,有时候甚至到了胡乱用的程度,因为我们压根就不知道使用volatile解决的到底是什么问题,要究其根本还是我们对于产生并发问题的核心不了解,所以为了更清楚的知道这些关键字后面所代表的意义,那么就有必要深挖一下这些关键字背后到底做了什么操作,解决了什么问题。首先这里我们将从volatile解决了哪两个方面的问题,然后我们

2022-04-07 17:05:53 93

转载 事务并发与事务隔离

什么是事务的隔离性?两个人同时在一个画本上画画,过程中你一笔我一笔,那么最后最后画出来的一定是一个四不像,多个事务同时操作一个数据也会和上面的情况类似,所以为了让不同的事务之间相互不存在干扰,就需要对事务的操作进行隔离,事务的隔离性也就是将操作同一个数据的事务相互分离,让操作之间分开有序的执行用什么方式实现事务的隔离性通常数据库里都是采用锁的机制,保证事务之间的隔离性,在一个事务对数据进行修改的时候,首先会对该数据进行加锁,在当前事务没有释放锁之前,后续的事务是无法对该数据再次进行加锁的,所以其

2022-04-07 16:33:36 124

转载 Mysql 索引原理

一、什么是索引索引是一种利用某种规则的数据结构与实际数据的关系加快数据查找的功能;索引数据节点中有着实际文件的位置,因为索引是根据特定的规则和算法构建的,在查找的时候遵循索引的规则可以快速查找到对应数据的节点,从而达到快速查找数据的效果;其实宏观来说索引其实是一种概念而不是具体的某项技术,只是我们在某个技术中运用得比较广泛和鲜明(比如说数据库)渐渐的有了特定领域的标签,其实在生活中索引的使用无处不在,比如说:书本里的目录;读书时的座位号,考试编号都有类似索引的功能;总结来所有通过某规则数据结构和实际目

2022-04-07 16:26:36 202

转载 浅析 RPC 与基本实现

本文转自:https://xiaomi-info.github.io/2020/03/02/rpc-achieve/注:文中所用到的代码已上传至 github: https://github.com/fankongqiumu/storm.git[作者简介] 孙浩,信息部售后组研发工程师引言本文主要论述的是“RPC 实现原理”,那么首先明确一个问题什么是 RPC 呢?RPC 是 Remote Procedure Call 的缩写,即,远程过程调用。RPC 是一个计算机通信协议。该协议允许运行...

2022-03-26 13:18:53 172

转载 synchronized 实现原理

本文转自:https://xiaomi-info.github.io/2020/03/24/synchronized/[作者简介] 张庆波,小米信息技术部架构组前言众所周知 synchronized 锁在 Java 中经常使用它的源码是 C++ 实现的,它的实现原理是怎样的呢?本文以 OpenJDK 8 为例探究以下内容。synchronized 是如何工作的synchronized 锁升级过程重量级锁的队列之间协作过程和策略对象头对象头的内容非常多这里我们只做简单介绍以引出后文。在.

2022-03-26 11:15:51 246

转载 一文详解SQL关联子查询

Alibaba Java 技术图谱: https://developer.aliyun.com/article/878802?spm=a2c6h.12873581.0.dArticle878802.44867e04FDXkMY原文地址:https://developer.aliyun.com/article/783124?spm=a2c6h.24874632.0.0.21e53ccdPwXu9S**简介:**本文主要介绍什么是关联子查询以及如何将关联子查询改写为普通语义的sql查询。...

2022-03-25 22:12:50 1690

ngrok 是一个反向代理,此资源是linux版本

ngrok 是一个反向代理,通过在公共的端点和本地运行的 Web 服务器之间建立一个安全的通道。ngrok 可捕获和分析所有通道上的流量,便于后期分析和重放.

2022-11-15

java 实现PDF导出功能需要的中文支持文件

java 实现PDF导出功能需要的中文支持文件

2021-11-08

ClickClean_Latest.crx

是一个专门为使您的在线浏览更加安全而设计的网络浏览器插件。它作为一个清理 应用程序来删除输入的 URL、缓存和 cookie。它还会擦除您的下载和浏览历史记录。只需单击一下,即可立即完成所有这些操作. 它是解决您隐私问题的创新且免费的解决方案 。

2021-06-08

BitDockSetup1.9.2.6安装版.exe

是一款运行在Windows系统中的停靠栏工具,这种停靠栏很有个性,它让你在使用 Windows 更加的动感,而且还支持使用拖曳的方式来自定义要启动的程...

2020-08-28

oCam_v515.0.exe

oCam 是一款屏幕录制捕捉工具,编码功能强大,支持游戏录像,可录制任何区域,可选全屏模式或自定义区域截图;还可捕捉到正在播放的声音;非常简单易用,而且完全免费。

2020-08-28

laowang.zip

SQL注入攻击(SQL injection)是目前网站安全以及服务器安全层面上是最具有攻击性,危害性较高,被黑客利用最多的一个漏洞,基本上针对于网站代码,包括JAVA JSP PHP ASP apache tomcat 语言开发的代码都会存在sql注入漏洞

2020-05-06

Spring Boot Security OAuth2 实现支持JWT令牌的授权服务器源码.zip

Spring Boot Security OAuth2 实现支持JWT令牌的服务器源码

2020-03-25

win实用工具-1.zip

win开发实用工具

2020-03-02

72.0.3626.121_chrome_installer.exe

chrome 72版本chrome 72版本chrome 72版本chrome 72版本chrome 72版本

2019-10-23

eXtra Buttons

eXtra Buttons 是款窗口增强工具,可以给窗口的标题栏添加额外的功能按钮,从而改变多年来最小化、最大化、关闭三剑客统领的局面

2019-08-29

instagram 安卓版

Instagram(照片墙)是一款运行在移动端上的社交应用,以一种快速、美妙和有趣的方式将你随时抓拍下的图片彼此分享。

2019-07-29

uTools-0.6.1-beta.exe

uTools 是一款极简、插件化、跨平台、现代化的桌面增强效率软件

2019-06-18

Realtek-64bit_Win7_Win8_Win81_Win10_R279.exe

Realtek-64bit_Win7_Win8_Win81_Win10_R279 windows音频驱动

2019-06-18

Click&Clean;

Click&Clean;是一个谷歌浏览器插件,它可以清除您电脑上所有的网络临时文件,URL和缓存数据。它也可以清除Cookie和清空缓存,清理电脑活动的所有痕迹,保护你的您的隐私。

2019-03-05

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

TA关注的人

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