自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

简单记录一下。

闻道有先后,术业有专攻,如是而已。

  • 博客(188)
  • 资源 (16)
  • 问答 (1)
  • 收藏
  • 关注

转载 面试 - 怎么解决MySQL死锁问题的?

咱们使用 MySQL 大概率上都会遇到死锁问题,这实在是个令人非常头痛的问题。本文将会对死锁进行相应介绍,对常见的死锁案例进行相关分析与探讨,以及如何去尽可能避免死锁给出一些建议。1、什么是死锁死锁是并发系统中常见的问题,同样也会出现在数据库MySQL的并发读写请求场景中。当两个及以上的事务,双方都在等待对方释放已经持有的锁或因为加锁顺序不一致造成循环等待锁资源,就会出现“死锁”。常见的报错信息为 Deadlock found when trying to get lock...。举例来说 .

2021-12-30 17:27:46 118143 9

原创 面试 - 为什么foreach中不允许对元素进行add和remove

我们先来看看使用foreach遍历ArrayList过程中使用add 和 remove 会出现什么样子的结果,然后再分析一下。public static void main(String[] args) { List<Integer> list = new ArrayList<>(); for (int i = 0; i < 20; i++) { list.add(i); } for (Integer j : list) .

2021-10-25 20:59:53 179599 78

原创 分布式 - Redis热点key大Value解决方案

不啰嗦,我们直接开始!引言关于 Redis 热点数据 & 大 key 大 value 问题也是容易被问的高阶问题,不如一次痛快点学完,让面试官无话可说,个人工作经验中,热点数据问题在工作中相比雪崩更容易遇到,只是大部分时候热点不够热,都会被提前告警解决,但这个问题一旦控制不了造成的线上问题也是足够让你今年绩效垫底了,废话不说进入正题。正常情况下,Redis 集群中数据都是均匀分配到每个节点,请求也会均匀的分布到每个分片上,但在一些特殊场景中,比如外部爬虫、攻击、热点商品等,最典型的就是明

2021-10-13 23:45:19 185479 1

原创 分布式 - 公司使用什么RPC框架,聊聊你理解的RPC原理

不啰嗦,我们直接开始!引言以前在做一个规模不大的系统的时候,用的是单体架构,一台服务器部署上一个应用和数据库也就够了。但是现代化互联网公司业务逐渐扩大,服务逐渐细分,很多服务之间需要通过远程分布式接口调用通讯,即不同的服务不是部署在同一个服务器上,比如订单服务在 A 服务上,付款服务在另一个服务上,有同步调用、也有异步调用,这个时候我们就需要远程调用不同的服务,使用的时候调用远程服务就像调用本地服务一样,引入一个 jar 包,就能通过this.xxx( ) 一样调用远程服务,这背后的机制就是通.

2021-10-12 23:28:07 196559 14

原创 分布式 - 谈谈你对分布式的理解,为什么引入分布式?

不啰嗦,我们直接开始!划重点:真正了解分布式系统的概念,日后工作中具有分布式系统设计思想。 能否在设计中对系统稳定性方面考虑周全。 能构建高 QPS 健壮的系统架构。1、面试官:那谈谈你对分布式系统的理解问题分析:各种分布式框架层出不穷,Spring Cloud,阿里的 Dubbo,无论使用哪一个,原理都相同,考察下基本概念掌握的如何。答:为了解决传统单体服务架构带来的各种问题,代码数量庞大,迭代测试维护困难,可能因为一处改动测试不到位造成整个服务瘫痪等问题,分布式系统就是将一

2021-10-12 00:22:29 190582 17

原创 Maven - 10、设计你自己的maven插件

maven中的插件是有很多目标(goal)组成的,开发插件,实际上就是去编写插件中目标的具体代码。execute:这个方法比较重要,目标的主要代码就在这个方法中实现,当使用mvn命令调用插件的目标的时候,最后具体调用的就是这个方法。setLog:注入一个标准的Maven日志记录器,允许这个Mojo向用户传递事件和反馈getLog:获取注入的日志记录器说一下上面这个Log,这是一日志接口,里面定义了很多方法,主要用户向交互者输出日志,比如我们运行mvn clean。

2022-10-07 07:30:00 217

原创 Maven - 9、多环境构建

自定义属性maven属性前面我们有用到过,可以自定义一些属性进行重用,如下:可以看到上面依赖了4个spring相关的构建,他们的版本都是一样的,在元素中自定义了一个属性,值为spring的版本号,其他几个地方使用直接进行引用,这种方式好处还是比较明显的,升级spring版本的时候非常方便,只需要修改一个地方,方便维护。上面这个是maven自定义属性,需要先在中定义,然后才可以在其他地方使用进行引用。maven的属性主要分为2大类,第一类就是上面说的自定义属性,另外一类是不需要自定义的,可以直接拿来使用

2022-10-06 07:30:00 811

原创 Maven - 8、大型Maven项目,快速按需任意构建

需要掌握mvn命令中的各种用法注意-pl后面的参数的写法:模块相对路径、或者[groupId].artifactId还是那句话,上面这些用法大家会经常用到的,建议大家下去了多练练。看和操作,所获取到的是不能比的,看的过程中可能觉得一切都知道了,但是实际操作就不一样了,可能中间会遇到各种问题,然后自己会想办法解决这些问题,领会和学到的东西是不一样的!

2022-10-05 07:30:00 623

原创 Maven - 7、聚合、继承、单继承问题详解

需要掌握聚合的使用掌握继承的使用掌握单继承问题解决方案掌握依赖管理和插件管理的使用还是那句话,建议大家下去了多练练,都操作一遍,加深理解!

2022-10-04 07:30:00 870

原创 Maven - 6、生命周期和插件详解

除了默认绑定的一些操作,我们自己也可以将一些阶段绑定到指定的插件目标上来完成一些操作,这种自定义绑定让maven项目在构件的过程中可以执行更多更丰富的操作。常见的一个案例是:创建项目的源码jar包,将其安装到仓库中,内置插件绑定关系中没有涉及到这一步的任务,所以需要用户自己配置。插件的可以帮助我们完成该任务,我们将这个目标绑定在default生命周期的verify阶段上面,这个阶段没有任何默认绑定,verify是在测试完成之后并将构件安装到本地仓库之前执行的阶段,在这个阶段我们生成源码,配置如下:在。

2022-10-03 07:30:00 1100 2

原创 Maven - 5、私服详解

私服也是远程仓库中的一种,我们为什么需要私服呢?

2022-10-02 07:30:00 1336

原创 Maven - 4、仓库详解

在maven出现之前,项目中用到第三方jar包时,我们会把这些依赖的jar包拷贝到项目的lib目录中,如果我们开发了多个项目,这些jar包在各个项目目录中都有一份拷贝,这存在的一些问题:不方便jar包的管理,比如jar的升级、删除等操作对磁盘空间的重复占用主要还是不方便jar包的管理,maven很好的解决了这些问题,我们来看看maven管理依赖jar包的效果。我来提几个问题,带着问题来看本篇内容maven是如何将依赖的jar引入项目的?maven项目中依赖的jar是从哪里获取的?

2022-10-01 07:30:00 2043

原创 Maven - 3、详解maven解决依赖问题

上篇文章中安装的是Maven3.6.2版本,这个版本在运行过程中会有一些问题,请大家按照上一篇文章的介绍重新安装3.6.1版本。

2022-09-30 07:30:00 2032

原创 Maven - 2、安装、配置、mvn运行过程详解

掌握maven的安装过程~表示当前用户目录maven的配置文件settings.xml一般我们放在~/.m2目录中,方便maven的升级,避免影响其他用户的配置了解mvn命令的执行过程。

2022-09-29 07:30:00 2066 1

原创 Maven - 1、什么是maven?为什么需要它?

当我们的项目比较大的时候,我们会将一个大的项目分成很多小的项目,每个小项目由几个开发负责,比如一个电商项目分为:账户相关的项目、订单相关的项目、商品相关的项目,这些项目的结构都是类似的,用到的技术都是一样的:ssm(spring、springmvc、mybatis),然后每个项目都需要把这些jar拷贝一份到自己的项目目录中,最后10个项目只是jar就复制了10份,后来,我们发现项目中有些jar需要升级版本,打算替换一下,此时我们需要依次去替换10个项目,也是相当痛苦。

2022-09-27 07:00:00 2558

原创 多线程与并发 - Java 8 CompletableFuture 异步多线程

CompletableFuture的get()方法是阻塞的,我们一般建议使用future.get(5, TimeUnit.SECONDS)。并且一般建议使用自定义线程池。但是如果线程池拒绝策略是DiscardPolicy或者DiscardOldestPolicy,当线程池饱和时,会直接丢弃任务,不会抛弃异常。因此建议,CompletableFuture线程池策略最好使用AbortPolicy,然后耗时的异步线程,做好线程池隔离哈。

2022-08-22 07:30:00 12365

原创 HTTP - HTTP 1.0、HTTP 1.1、HTTP 2.0的区别

连接方式: HTTP 1.0 为短连接,HTTP 1.1 支持长连接。状态响应码: HTTP/1.1中新加入了大量的状态码,光是错误响应状态码就新增了24种。比如说················在请求大资源前的预热请求······范围请求的标识码·················请求与当前资源的规定冲突410 (Gone)·······················资源已被永久转移,而且没有任何已知的转发地址。缓存处理。...

2022-08-19 07:30:00 12411

原创 MySQL - 数据库的监控方式

任何东西不应过重关注其外表,要注重内在的东西,往往绚丽的外表下会有对应的负担和损耗。mysql 数据库的监控支持通过 SQL 方式从 performance_schema 库中访问对应的表数据,前提是初始化此库并开启监控数据写入。对于监控而言,不在于手段的多样性,而需要明白监控的本质,以及需要的监控项内容,找到符合自身项目特色的监控方式。在选择监控工具对 mysql 监控时,需要关注监控工具本身对于数据库服务器的消耗,不要影响到其自身的使用。...

2022-08-18 07:30:00 13458

原创 CDN - 原理解析

其实 CDN 就是内容分发网络的意思,其英文全称为 Content Delivery Network。简单地说,CDN 可以提前把数据存在离用户最近的数据节点,从而避免长途跋涉经过长途骨干网,最终达到减少骨干网负担、提高访问速度的目的。按照我们上面的场景,如果没有 CDN 的话,每次请求都需要从网站服务器经过公网出口、长途骨干网、用户接入局域网,最终到达浏览器。但是当有了 CDN 之后,可能就变成了下面这样:浏览器请求图片数据时,会先去 CDN 缓存服务器获取。如果获取到数据,那么就直接返回。...

2022-08-12 07:30:00 15282

转载 Redis - 13、开发规范

本文主要介绍在使用Redis时的开发规范,从下面几个方面进行说明。键值设计命令使用客户端使用相关工具通过本文的介绍可以减少使用Redis过程带来的问题。

2022-07-31 21:54:07 17517

原创 Redis - 12、应用问题解决

缓存穿透、缓存击穿、缓存雪崩、分布式锁

2022-06-22 10:46:29 28218 11

原创 Redis - 11、集群(Cluster)

redis集群是对redis的水平扩容,即启动N个redis节点,将整个数据分布存储在这个N个节点中,每个节点存储总数据的1/N。

2022-06-22 07:00:00 28681 13

原创 Redis - 9、持久化之AOF(Append OnlyFile)

以日志的形式来记录每个写操作(增量保存),将redis执行过的所有写指令记录下来(读操作不记录),只允追加文件但不可改写文件,redis启动之初会读取该文件重新构造数据,换言之,redis重启的话就根据日志文件的内容将写指令从前到后执行一次以完成数据的恢复工作。...

2022-06-21 21:30:00 28448

原创 Redis - 8、持久化之RDB(Redis DataBase)

在指定的时间间隔内将内存中的数据集快照写入磁盘,也就是行话讲的Snapshot快照,它恢复时是键快照文件直接读到内存里。

2022-06-21 21:00:00 28542 2

原创 Redis - 7、事务操作

redis事务是一个单独的隔离操作,事务中的所有命令都会序列化、按顺序地执行,事务在执行的过程中,不会被其他客户端发送来的命令请求所打断。redis事务的主要作用就是串联多个命令防止 别的命令插队。...

2022-06-21 20:45:00 28453

原创 Redis - 10、主从复制

主机更新后根据配置和策略,自动同步到备机的master/slave机制,Master以写为主,Slave以读为主。

2022-06-21 20:24:12 28468 2

原创 Redis - 6、SpringBoot整合Redis

springboot中使用RedisTemplate来操作redis,需要在我们的bean中注入这个对象

2022-06-21 19:45:00 28338

原创 Redis - 5、Jedis操作Redis6

Jedis是java开发的操作redis的工具包。

2022-06-21 19:15:00 28359 2

原创 Redis - 4、新的3种数据类型

Bitmaps:位操作字符串、HyperLoglog、Geographic

2022-06-21 19:00:00 28357

原创 Redis - 3、发布和订阅

redis发布订阅(pub/sub)是一种消息通信模式:发布者(pub)发布消息,订阅者(sub)接收消息。redis客户端可以订阅任意数量的频道。

2022-06-21 18:00:00 28502

原创 Redis - 2、5大数据类型

这里说的数据类型是value的数据类型,key的类型都是字符串。5种数据类型:哪里去获取redis常用数据类型操作命令:Redis命令中心String是Redis最基本的类型,你可以理解成与Memcached一模一样的类型,一个key对应一个value。String类型是二进制安全的。意味着Redis的string可以包含任何数据。比如jpg图片或者序列化的对象。String类型是Redis最基本的数据类型,一个Redis中字符串value最多可以是512M。 NX:当数据库中key不存在时,可

2022-06-21 07:00:00 28705 18

原创 Redis - 1、redis概述和安装

redis是单线程+多路IO复用技术。多路复用是指使用一个线程来检测多个文件描述符(socket)的就绪状态,比如调用select和poll函数,传入多个文件描述符,如果有一个文件描述符就绪,则返回,否则阻塞到超时,得到就绪状态后进行真正的操作可以在同一个线程里执行,也可以启动线程执行(比如使用线程池)串行 vs 多线程+锁(memcached) vs 单线程+多路复用(redis)(与memcache三不同:支持多数据类型,支持持久化,单线程+多路复用)redis6.0中提供...

2022-06-15 23:45:32 30218 10

转载 SpringCloud Gateway API接口安全设计(加密 、签名)

1、防止数据抓包窃取1.1、风险简述简述:当用户登录时,恶意攻击者可以用抓包工具可以拿到用户提交的表单信息,可以获取用户的账号密码,进而可以恶意访问网站。1.2、RSA非对称加密1.2.1、RSA简介RSA加密算法是一种非对称加密算法。在公开密钥加密和电子商业中RSA被广泛使用。RSA是1977年由罗纳德·李维斯特(Ron Rivest)、阿迪·萨莫尔(Adi Shamir)和伦纳德·阿德曼(Leonard Adleman)一起提出的。当时他们三人都在麻省理工学院工作。RSA就.

2022-05-26 16:25:02 37840

转载 你管这破玩意儿叫 MQ?

1、幸福的烦恼张大胖最近是又喜又忧,喜的是业务量发展猛增,忧的是由于业务量猛增,一些原来不是问题的问题变成了大问题,比如说新会员注册吧,原来注册成功只要发个短信就行了,但随着业务的发展,现在注册成功也需要发 push,发优惠券,…等这样光注册用户这一步就需要调用很多服务,导致用户注册都需要花不少时间,假设每个服务调用需要 50 ms,那么光以上服务就需要调用 200 ms,而且后续产品还有可能再加一些发新人红包等活动,每加一个功能,除了引入额外的服务增加耗时外,还需要额外集成服务,重发代码,实在

2022-05-24 22:59:10 37469 2

转载 反射真的很耗时吗,反射 10 万次,耗时多久。

无论是在面试过程中,还是看网络上各种技术文章,只要提到反射,不可避免都会提到一个问题,反射会影响性能吗?影响有多大?如果在写业务代码的时候,你用到了反射,都会被 review 人发出灵魂拷问,为什么要用反射,有没有其它的解决办法。而网上的答案都是千篇一律,比如反射慢、反射过程中频繁的创建对象占用更多内存、频繁的触发 GC 等等。那么反射慢多少?反射会占用多少内存?创建 1 个对象或者创建 10 万个对象耗时多少?单次反射或者 10 万次反射耗时多少?在我们的脑海中没有一个直观的概念,而今天这篇文章将会告

2022-05-24 22:36:00 37434

转载 Spring - Validation最佳实践及其实现原理,参数校验没那么简单

1、简单使用Java API规范(JSR303)定义了Bean校验的标准validation-api,但没有提供实现。hibernate validation是对这个规范的实现,并增加了校验注解如@Email、@Length等。Spring Validation是对hibernate validation的二次封装,用于支持spring mvc参数自动校验。接下来,我们以spring-boot项目为例,介绍Spring Validation的使用。1.1、引入依赖如果spring-boot版本小

2022-05-12 17:41:03 42921

转载 VO,DTO,DO,PO的概念、区别和用处

1、概念VO(View Object):视图层,用于展示层,它的作用是把某个指定页面(或组件)的所有数据封装起来。DTO(Data Transfer Object):数据传输对象,这个概念来源于J2EE的设计模式,原来的目的是为了EJB的分布式应用提供粗粒度的数据实体,以减少分布式调用的次数,从而提高分布式调用的性能和降低网络负载,但在这里,我泛指用于展示层与服务层之间的数据传输对象。DO(Domain Object):领域对象,就是从现实世界中抽象出来的有形或无形的业务实体。PO(Pers

2022-05-12 17:40:41 43198

转载 RabbitMQ - 保证全链路数据100%不丢失

我们都知道,消息从生产端到消费端消费要经过3个步骤:生产端发送消息到RabbitMQ; RabbitMQ发送消息到消费端; 消费端消费这条消息;这3个步骤中的每一步都有可能导致消息丢失,消息丢失不可怕,可怕的是丢失了我们还不知道,所以要有一些措施来保证系统的可靠性。这里的可靠并不是一定就100%不丢失了,磁盘损坏,机房爆炸等等都能导致数据丢失,当然这种都是极小概率发生,能做到99.999999%消息不丢失,就是可靠的了。下面来具体分析一下问题以及解决方案。1、生产端可靠性投递生产端

2022-05-12 17:39:45 42699 2

转载 Spring - 循环依赖

1、什么是循环依赖很简单,看下方的代码就知晓了@Servicepublic class A { @Autowired private B b;}@Servicepublic class B { @Autowired private A a;}//或者自己依赖自己@Servicepublic class A { @Autowired private A a;}上面这两种方式都是循环依赖,应该很好理解,当然也可以是三个 Bean

2022-05-12 17:39:20 42683

转载 MySQL - MySQL查询语句的执行过程

需要从数据库检索某些符合要求的数据,我们很容易写出 Select A B C FROM T WHERE ID = XX 这样的SQL,那么当我们向数据库发送这样一个请求时,数据库到底做了什么?我们今天以MYSQL为例,揭示一下MySQL数据库的查询过程,并让大家对数据库里的一些零件有所了解。1、MYSQL架构MySQL 主要可以分为 Server 层和存储引擎层。Server层包括连接器、查询缓存、分析器、优化器、执行器等,所有跨存储引擎的功能都在这一层实现,比如存储过程、触发器、视图.

2022-04-21 19:55:55 53729

CrystalDiskInfo8_11_2.exe

硬盘健康状况检测工具,显示硬盘驱动器的基本信息,智能监控和磁盘的温度。

2021-03-07

TortoiseSVN-1.14.0.28885-x64-svn-1.14.0

TortoiseSVN-1.14.0.28885-x64-svn-1.14.0.msi及对应简体中文安装包LanguagePack_1.14.0.28885-x64-zh_CN.msi

2020-11-15

TortoiseGit-2.11.0.0-64bit

TortoiseGit-2.11.0.0-64bit.msi及对应简体中文安装包TortoiseGit-LanguagePack-2.11.0.0-64bit-zh_CN.msi

2020-11-15

draco-1.3.6.zip

Google 3D压缩开源项目Draco v 1.3.6 Draco是用于压缩和解压缩3D几何网格和点云的库。旨在改善3D图形的存储和传输。 Draco的设计和制造旨在提高压缩效率和速度。该代码支持压缩点,连接性信息,纹理坐标,颜色信息,法线以及与几何相关的任何其他通用属性。使用Draco,使用3D图形的应用程序可以大大缩小,而不会影响视觉保真度。对于用户而言,这意味着现在可以更快地下载应用程序,可以更快地在浏览器中加载3D图形,并且可以以很小的带宽传输VR和AR场景并快速渲染。 Draco作为C ++源代码发布,可用于压缩3D图形以及编码数据的C ++和Javascript解码器。

2020-07-30

libphp7.so

下载的道友请先看下描述 PHP 7.0.5 编译的libphp7.so,供 Apache/2.4.6使用,还没试过单独拷这个文件使用,没有积分可以私我发你 PHP 7.0.5 (cli) (built: May 13 2020 22:20:18) ( NTS ) Copyright (c) 1997-2016 The PHP Group Zend Engine v3.0.0, Copyright (c) 1998-2016 Zend Technologies Server version: Apache/2.4.6 (CentOS) Server built: Apr 2 2020 13:13:23

2020-05-13

MediaInfo_GUI_20.03_Windows.rar

MediaInfo是一款非常实用的视频参数检测工具,除了可以对视频进行编码分析查询,还可以对音频文件的编码及信息进行检测。有问题或需要其他版本请私聊我

2020-04-27

TortoiseSVN-1.13.1.28686-x64.rar

TortoiseSVN-1.13.1.28686-x64-svn-1.13.0.msi及对应简体中文安装包LanguagePack_1.13.1.28686-x64-zh_CN.msi

2020-04-16

TortoiseGit-2.10.0.2-64bit.rar

TortoiseGit-2.10.0.2-64bit.msi及对应简体中文安装包TortoiseGit-LanguagePack-2.10.0.0-64bit-zh_CN.msi

2020-04-08

aarch64服务器GCC软件包.rar

aarch64服务器GCC软件包:centos7.6已安装测试 使用方法,将所有rpm放置统一目录下 例如:放置目录/usr/linux_GCC下 进入终端: cd /usr/linux_GCC //进入目录 rpm -Uvh *.rpm --nodeps --force //不验证依赖安装 gcc -v //验证是否安装成功 安装有问题或需要其他依赖请私我

2020-04-08

java识别文件编码工具类 EncodingDetect.java

识别文件编码 例如读取txt,先获取txt编码,再针性读取(es踩的坑) 使用方法:String code = EncodingDetect.getJavaEncode(path);//返回文件编码

2020-03-27

quicksupport和add-on(oneplus).rar

quicksupport和add-on(oneplus版) oneplus7pro 亲测可用,有问题或需要其他版本请私我

2020-03-18

wiztree_3_30_setup.exe

wiztree_3_30_setup.exe安装包 WizTree——快速找出磁盘分区中大文件的免费工具 WizTree是一个类似于WinDirStat的硬盘磁盘空间分析器,但速度要快得多。 适用于32位和64位版本的Windows XP,Vista,Windows 7,8和10

2019-11-29

FreeFileSync_10.18.rar

注意:是安装包,不是绿色版 FreeFileSync_10.18版:下载解压后有3个安装包,分别是Windows版、Linux版、macOS版,选择对应版本安装使用即可,使用前建议先练练手,避免弄丢文件

2019-11-29

centos7.6_64_ntp_rpm.rar

安装过程中先查看服务器已有相关ntp的依赖,再视情况安装 centos7.6 64位 NTP安装RPM软件包:ntp-4.2.6p5-28.el7.centos.x86_64.rpm、ntpdate-4.2.6p5-28.el7.centos.x86_64.rpm、autogen-libopts-5.18-5.el7.x86_64.rpm、openssl-1.0.2k-12.el7.x86_64.rpm、openssl-libs-1.0.2k-12.el7.x86_64.rpm

2019-11-28

TortoiseGit-2.9.0.0-64bit.rar

TortoiseGit-2.9.0.0-64bit.msi及对应简体中文安装包TortoiseGit-LanguagePack-2.9.0.0-64bit-zh_CN.msi

2019-11-28

mail1.5.0.jar

javax.mail/mail/1.5.0-b01依赖的jar包,实现javamail发送邮件需要的jar包,可实现基于腾讯的QQ邮箱邮件发送

2018-04-08

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

TA关注的人

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