自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

锦瑟年华,逐梦之人

人的悲欢并不相通

  • 博客(254)
  • 收藏
  • 关注

转载 【JavaScript】闭包和匿名函数的关系详解

文章目录前言匿名函数立即执行函数闭包结论前言本文讲的是关于JavaScript闭包和匿名函数两者之间的关系,从匿名函数概念到立即执行函数,最后到闭包。下面一起来看看文章分析,希望你会喜欢。前面讲了一篇在for循环中加setTimeout输出内容,我们用到了一个闭包,但同时也可以说是匿名函数,到底匿名函数和闭包有没有关系呢?【答案是它们之间没有关系】匿名函数匿名函数,顾名思义,就是没有名字的函数,与之对应的就是有名字的函数,也叫具名函数。//匿名函数function (){ conso

2021-10-03 18:37:20 553

转载 【JavaSrcipt】立即调用的函数表达式

文章目录前言什么是自执行?问题的核心旁白:函数(function),括弧(paren),语法错误(SyntaxError)自执行函数表达式用闭包保存状态自执行匿名函数和立即执行的函数表达式区别最后的旁白:Module模式更多阅读同步与推荐前言大家学JavaScript的时候,经常遇到自执行匿名函数的代码,今天我们主要就来想想说一下自执行。在详细了解这个之前,我们来谈了解一下“自执行”这个叫法,本文对这个功能的叫法也不一定完全对,主要是看个人如何理解,因为有的人说立即调用,有的人说自动执行,所以你完全可

2021-10-03 18:03:42 383

转载 【分词】文本挖掘的分词原理

阅读目录前言1. 分词的基本原理2. N元模型3. 维特比算法与分词4. 常用分词工具5. 结语前言在做文本挖掘的时候,首先要做的预处理就是分词。英文单词天然有空格隔开容易按照空格分词,但是也有时候需要把多个单词做为一个分词,比如一些名词如“New York”,需要做为一个词看待。而中文由于没有空格,分词就是一个需要专门去解决的问题了。无论是英文还是中文,分词的原理都是类似的,本文就对文本挖掘时的分词原理做一个总结。1. 分词的基本原理现代分词都是基于统计的分词,而统计的样本内容来自于一些标准的语料

2021-09-20 21:34:15 630

转载 【Kafka】Group 状态变化分析及 Rebalance 过程

文章目录前言Group 状态机offset 那些事Topic __consumer_offsetsGroupCoordinator状态转移图Consumer 初始化Consumer poll 过程解析Consumer 初始化时 group 状态变化Consumer Rebalance前言前段时间看一下 Kafka 的部分源码(0.10.1.0 版),对一些地方做了一些相应的总结。本文主要就 Kafka Group 方面的内容做一下详细的讲述,重点讲述 Consumer Client 如何进行初始化、Se

2021-09-14 23:47:19 711

转载 【JVM】jstack命令

前言如果有一天,你的Java程序长时间停顿,也许是它病了,需要用jstack拍个片子分析分析,才能诊断具体什么病症,是死锁综合征,还是死循环等其他病症,本文我们一起来学习jstack命令~jstack 的功能jstack用法线程状态等基础回顾实战案例1:jstack 分析死锁实战案例2:jstack 分析CPU 过高jstack 的功能jstack是JVM自带的Java堆栈跟踪工具,它用于打印出给定的java进程ID、core file、远程调试服务的Java堆栈信息.jstack

2021-09-05 10:18:59 552

转载 【Mysql】DruidDataSource 深入理解数据库编程中的超时设置

数据库是开发过程中最常用的组件,然而我们经常会遇到各种各样的超时异常,如:> connect timeout:建立数据库连接超时> socket timeout:socket 读取超时> statement timeout:单个sql执行超时> transaction timeout:事务执行超时,一个事务中可能包含多个sql> get coconnect timeout:建立数据库连接超时socket timeout:socket 读取超时statement timeout:单个sql

2021-09-01 00:09:20 5619

转载 【设计模式】命令模式

文章目录前言命令模式的结构AudioPlayer系统宏命令命令模式的优点前言在阎宏博士的《JAVA与模式》一书中开头是这样描述命令(Command)模式的:命令模式属于对象的行为模式。命令模式又称为行动(Action)模式或交易(Transaction)模式。命令模式把一个请求或者操作封装到一个对象中。命令模式允许系统使用不同的请求把客户端参数化,对请求排队或者记录请求日志,可以提供命令的撤销和恢复功能。命令模式的结构命令模式是对命令的封装。命令模式把发出命令的责任和执行命令的责任分割开,委

2021-08-29 11:54:09 121

转载 【数据结构】布隆过滤器

文章目录前言1.什么是布隆过滤器?2. 布隆过滤器的原理介绍3.布隆过滤器使用场景4.通过 Java 编程手动实现布隆过滤器5.利用 Google 开源的 Guava 中自带的布隆过滤器6. Redis 中的布隆过滤器6.1 介绍6.2 使用Docker安装6.3常用命令一览实际使用前言海量数据处理以及缓存穿透这两个场景让我认识了 布隆过滤器 ,我查阅了一些资料来了解它,但是很多现成资料并不满足我的需求,所以就决定自己总结一篇关于布隆过滤器的文章。希望通过这篇文章让更多人了解布隆过滤器,并且会实际去使用

2021-07-05 09:08:36 165

转载 【Maven】dependencyManagement作用说明

在Maven多模块的时候,管理依赖关系是非常重要的,各种依赖包冲突,查询问题起来非常复杂,于是就用到了 <dependencyManagement>。示例说明在父模块中<dependencyManagement> <dependencies> <dependency> <groupId>mysql</groupId> <a

2021-06-26 12:02:18 256

转载 【Redis】缓存雪崩、缓存击穿、缓存穿透与缓存预热、缓存降级

一、缓存雪崩:1、什么是缓存雪崩:如果缓在某一个时刻出现大规模的key失效,那么就会导致大量的请求打在了数据库上面,导致数据库压力巨大,如果在高并发的情况下,可能瞬间就会导致数据库宕机。这时候如果运维马上又重启数据库,马上又会有新的流量把数据库打死。这就是缓存雪崩。2、问题分析:造成缓存雪崩的关键在于同一时间的大规模的key失效,为什么会出现这个问题,主要有两种可能:第一种是Redis宕机,第二种可能就是采用了相同的过期时间。搞清楚原因之后,那么有什么解决方案呢?3、解决方案:(1)事前:①

2021-06-18 23:32:49 213

转载 【Redis】过期删除策略和内存淘汰策略

前言在介绍这篇文章之前,我们先来看如下几个问题:①、如何设置Redis键的过期时间?②、设置完一个键的过期时间后,到了这个时间,这个键还能获取到么?假如获取不到那这个键还占据着内存吗?③、如何设置Redis的内存大小?当内存满了之后,Redis有哪些内存淘汰策略?我们又该如何选择?如果上面的几个问题你都懂,那么下面的内容你就不用看了;如果你不是很懂,那就带着这些问题往下看。1、设置Redis键过期时间Redis提供了四个命令来设置过期时间(生存时间)。①、EXPIRE :表示将键 key

2021-06-18 22:44:08 160

转载 【算法】快速排序 —— 三数取中法

前言快速排序由C. A. R. Hoare在1962年提出。它的基本思想是:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列基本步骤三数取中在快排的过程中,每一次我们要取一个元素作为枢纽值,以这个数字来将序列划分为两部分。在此我们采用三数取中法,也就是取左端、中间、右端三个数,然后进行排序,将中间数作为枢纽值。根据枢纽值进行分割代码实现

2021-06-16 10:27:54 3441 1

转载 【Java基础】对象克隆(复制)

阅读目录前言前言假如说你想复制一个简单变量。很简单:int apples = 5; int pears = apples; 不仅仅是int类型,其它七种原始数据类型(boolean,char,byte,short,float,double.long)同样适用于该类情况。但是如果你复制的是一个对象,情况就有些复杂了。假设说我是一个beginner,我会这样写:class Student { private int number; public int ge.

2021-03-26 13:33:14 294

转载 【Linux】grep颜色问题

在linux下给grep命令添加颜色grep --color "test" test.json自动给grep加颜色vim ~/.bashrc alias grep='grep --color' source ~/.bashrc 在管道中的其他程序也可以有颜色这里用到grep的一个参数--color,color有三个值供选择:never、always、auto。always和auto的区别就是,always会在任何情况下都给匹配字段加上颜色标记,当通过管道或重定向时就会多出一些控制字符

2021-03-14 16:38:14 1490

转载 【算法】最小生成树之Kruskal算法

给定一个无向图,如果它任意两个顶点都联通并且是一棵树,那么我们就称之为生成树(Spanning Tree)。如果是带权值的无向图,那么权值之和最小的生成树,我们就称之为最小生成树(MST, Minimum Spanning Tree)。我们由最小生成树的定义,可以延伸出一个修建道路的问题:把无向图的每个顶点看作村庄,计划修建道路使得可以在所有村庄之间通行。把每个村庄之间修建道路的费用看作权值,那么我们就可以得到一个求解修建道路的最小费用的问题。常见求解最小生成树的算法有Kruskal算法和Prim算法

2021-02-21 22:25:50 474

转载 【微服务】Java 微服务框架选型(Dubbo 和 Spring Cloud?)

前言微服务(Microservices)是一种架构风格,一个大型复杂软件应用由一个或多个微服务组成。系统中的各个微服务可被独立部署,各个微服务之间是松耦合的。每个微服务仅关注于完成一件任务并很好地完成该任务。在所有情况下,每个任务代表着一个小的业务能力。以往我们开发应用程序都是单体型(可以看作是一个怪兽????),虽然开发和部署比较方便,但后期随着业务的不断增加,开发迭代和性能瓶颈等问题,将会困扰开发团队,微服务就是解决此问题的有效手段,市面上有很多的微服务框架,比如最著名的两个 Dubbo 和 Spr

2021-02-20 18:02:15 339

转载 【微服务】什么是SOA服务架构?

SOASOA是Service Oriented Architecture的缩写,面向服务架构。Bezos(亚马逊CEO)将Amazon的软件架构完全转换为SOA,它是如此关键,从某种程度上改变了亚马逊 Amazon 的命运。思想SOA的精髓是严格的松散耦合,不允许直接访问其它服务的数据,大家按照一个契约或标准(service interface)来进行交流。百科解释:面向服务的体系结构(SOA)是一个组件模型,它将应用程序的不同功能单元(称为服务)通过这些服务之间定义良好的接口和契约联系起来。接

2021-02-20 10:32:31 1236

转载 【Java基础】详解Java中的checked异常和unchecked异常

阅读目录Java的异常层次结构unchecked异常和checked异常的区别为什么要对unchecked异常和checked异常进行区分?我们应该对哪些异常进行声明?Java的异常层次结构要想明白Java中checked Exception和unchecked Exception的区别,我们首先来看一下Java的异常层次结构。这是一个简化的Java异常层次结构示意图,需要注意的是所有的类都是从Throwable继承而来,下一层则分为两个结构,Error 和 Exception。其中Error类层次

2021-02-18 21:57:47 281

原创 【SpringBoot】解决SpringBoot 打包启动项目后,静态资源文件不可用

问题描述今天在启动项目时,发现网页的图标都加载不出来,打开控制台,发现告警信息是文件解码错误,错误信息:Failed to decode downloaded font: http://localhost:8080/plugins/fontawesome-free/webfonts/fa-solid-900.woff2OTS parsing error: Failed to convert WOFF 2.0 font to SFNTOTS parsing error: incorrect fil

2021-02-10 11:10:43 2418 3

转载 【最佳实践】打印日志时,为什么有时要写if (log.isDebugEnabled()) 或 if (log.isInfoEnabled())

问题描述:在项目中我们经常可以看到这样的代码:if (logger.isDebugEnabled()) { logger.debug(message);}简单来说,就是用isDebugEnabled方法判断来能提升性能的!!有些人不明白为什么要这样写。有些人认为这样是为了能够控制日志的输出,对于下面这行代码:logger.debug(message);他们的看法是:如果这样写的话,就算你把日志级别调整为info, 这里也会输出日志。 原因分析:其实,在debug()方法

2021-02-08 10:16:32 607

转载 【Java进阶】流式编程Stream

什么是Stream?Stream它并不是一个容器,它只是对容器的功能进行了增强,添加了很多便利的操作,例如查找、过滤、分组、排序等一系列的操作。并且有串行、并行两种执行模式,并行模式充分的利用了多核处理器的优势,使用fork/join框架进行了任务拆分,同时提高了执行速度。简而言之,Stream就是提供了一种高效且易于使用的处理数据的方式。作者:双哥链接:https://juejin.im/post/6844903895789993991来源:掘金著作权归作者所有。商业转载请联系作者获得授权,非商

2020-09-12 11:27:28 349

原创 【最佳实践】工具类方法MathUtils.addAndCheck 使用:防止加法溢出

前言在涉及与金融相关的计算中,有时候很容易忽略int, long 数相加时的溢出了最大边界或最小边界,如果if分支判断恰好要求两数相加小于某一个值时,而你的两数相加刚好溢出变成负数,此时就会造成不正确的运行结果,导致事故发生。MathUtils.addAndCheckorg.apache.commons.math.util 包下已经为我们封装了两数相加的安全检查,源码理解起来也比较简单,再也不用担心溢出而出事故了。导入包<dependency> <groupId&gt

2020-09-05 21:50:20 486

原创 【SpringBoot】Java SpringBoot 企业微信机器人发送文本消息、图片消息

前言最近需要定时提示同事分享文章等,因此做了一个企业微信机器人定时发送消息。官网指导文档:群机器人配置说明发送应用消息实战1.根据文档里的JSON格式,我们先定义要用到的消息实体对象和枚举类。(1) Message/** * @description: 企业微信机器人消息实体类 * @author: DreamflyChen * @create: 2020-08-30 13:03 */@Datapublic class Message { /** * 消息类型

2020-08-30 22:21:33 3520 5

原创 【Linux】Linux tail 命令与日志查找应用场景技巧

前言tail是Linux中的一个常用命令,用于查看文件尾部的内容,它与head命令相对应。我们常用它来查看日志文件,通过-f参数可实时看文件的最新内容。tail命令格式与参数格式tail [选项...] [文件...]tail [-F | -f ] [-q] [-c # | -n #] [file ...]注:其中 # 代表数字的意思。参数解释参数解释-f--follow[={name|descriptor}], 跟踪文件的增长,并实时输出所增长的数据;缺省选项参数

2020-08-02 12:05:40 2021 1

原创 【Mysql】Mysql explain 命令

前言MySQL 提供了一个 EXPLAIN 命令, 它可以对 SELECT 语句进行分析, 并输出 SELECT 执行的详细信息。通过该命令看出 mysql 是如何执行该条 sql 的,可以通过分析索引,表结构等方面来优化你的慢查询语句。用法EXPLAIN 命令用法十分简单, 在 SELECT 语句前加上 Explain 就可以了, explain + sql 语句, 例如:EXPLAIN SELECT * FROM blog WHERE blog_id > 10;执行结果如下mysql

2020-07-26 18:22:06 2264

转载 【通用设计】分布式系统中接口的幂等性

阅读目录业务场景接口幂等性幂等性实现方式Token机制数据库去重表Redis实现状态机总结业务场景公司有个借贷的项目,具体业务类似于阿里的蚂蚁借呗,用户在平台上借款,然后规定一个到期时间,在该时间内用户需将借款还清并收取一定的手续费,如果规定时间逾期未还上,则会产生滞纳金。用户发起借款因此会产生一笔借款订单,用户可通过支付宝或在系统中绑定银行卡到期自动扣款等方式进行还款。还款流程都走支付系统,因此用户还款是否逾期以及逾期天数、逾期费等都通过系统来计算。但是在做订单系统的时候,遇到这样一个业务场景,

2020-07-23 22:26:02 363 1

转载 【Mysql】MySql中delimiter的作用

阅读目录MySql中delimiter的作用例子先说结论MySql中delimiter的作用Mysql 中默认命令的终止符是; , 但有时候,不希望MySQL这么做,因为你输入的sql 语句可能要包含多句,句中也包含了;, 这时候就要使用delimiter换终止符啦!例子默认情况下,delimiter是分号;。在命令行客户端中,如果有一行命令以分号结束,那么回车后,mysql将会执行该命令。如输入下面的语句mysql> select * from test_table;然后回车,那么

2020-07-22 23:39:37 426

转载 【网络安全】XSS跨站脚本漏洞

阅读目录1 XSS漏洞原理解析2 XSS攻击类型3 反射型XSS3.1 分析反射型XSS4 存储型XSS4.1 分析存储型XSS5 DOM型XSS5.1 分析DOM型XSS1 XSS漏洞原理解析XSS跨站脚本攻击(Cross Site Scripting,简称为XSS) 是一种针对web网站安全的漏洞攻击技术,恶意攻击者利用网站程序对用户输入过滤不足,在网站中插入对用户有影响的恶意脚本代码(通常是js或html等脚本代码),当用户使用浏览器打开浏览该网页时,恶意代码就会在用户浏览器上执行,从而盗取用户

2020-07-11 12:59:22 932

转载 【最佳实践】git 上的分支命名规范

master(主分支,永远是可用的、稳定的、可直接发布的版本,不能直接在该分支上开发)develop(开发主分支,代码永远是最新,所有新功能以这个分支来创建自己的开发分支,该分支只做只合并操作,不能直接在该分支上开发)feature-xxx(功能开发分支,在develop上创建分支,以自己开发功能模块命名,功能测试正常后合并到develop分支)release(预发布分支,在合并好feature分支的develop分支上创建,主要是用来提测的分支,修改好bug并确定稳定之后合并到develop和ma.

2020-07-11 09:49:25 593

转载 【Mysql】mysql中insert into和replace into以及insert ignore用法区别:

mysql中常用的三种插入数据的语句:insert into表示插入数据,数据库会检查主键,如果出现重复会报错;replace into表示插入替换数据,需求表中有PrimaryKey,或者unique索引,如果数据库已经存在数据,则用新数据替换,如果没有数据效果则和insert into一样;insert ignore表示,如果中已经存在相同的记录,则忽略当前新数据;下面通过代码说明之间的区别,如下:create table testtb( id int not null primary

2020-07-03 23:54:30 281

转载 【Linux】linux后台执行命令:&和nohup

阅读目录前言& 方式执行命令nohup 方式执行命令操作程序相关命令`2>&1`解析前言当我们在终端或控制台工作时,可能不希望由于运行一个作业而占住了屏幕,因为可能还有更重要的事情要做,比如阅读电子邮件。对于密集访问磁盘的进程,我们更希望它能够在每天的非负荷高峰时间段运行(例如凌晨)。为了使这些进程能够在后台运行,也就是说不在终端屏幕上运行,有几种选择方法可供使用。& 方式执行命令当在前台运行某个作业时,终端被该作业占据, 可以在命令后面加上& 实现后台运行。例

2020-06-29 17:38:37 264

转载 【网络安全】如何验证下载的文件

阅读目录介绍先决条件文件验证如何工作验证下载的文件可确保您下载的内容是您的想法。在本教程中,您将了解到什么是文件验证,为什么它很重要,以及如何使用命令行工具在各种操作系统上进行验证。介绍您可能已经下载了一些开源软件,例如Linux发行版ISO,并且在下载链接旁边有一个用于下载文件校验和的链接。 你有没有想过那个校验和链接是干什么的? 该校验和用于验证刚刚下载的文件的完整性。2016年2月20日,受欢迎的Linux发行版Linux Mint网站遭到黑客入侵 ,用于安装发行版的ISO受到了损害。 在发现

2020-06-26 10:39:50 1493

转载 【Shiro】Shiro 动态权限管理和Redis缓存

阅读目录问题描述第一个问题解决步骤第二个问题的解决步骤总结问题描述之前我们整合Shiro,完成了登录认证和权限管理的实现,登录认证没什么说的,需要实现AuthorizingRealm中的doGetAuthenticationInfo方法进行认证,但是我们在实现doGetAuthorizationInfo权限控制这个方法的时候发现以下两个问题:第一个问题:我们在ShiroConfig中配置链接权限的时候,每次只要有一个新的链接,或则权限需要改动,都要在ShiroConfig.java中进行权限的修

2020-06-21 16:31:05 996

转载 【SpringBoot】@RequestBody的使用

阅读目录基础知识介绍示例详细说明`@RequestBody`与前端传过来的`json`数据的匹配规则解析json数据大体流程概述全面的结论提示: 建议一定要看后面的@RequestBody的核心逻辑源码以及六个重要结论!本文前半部分的内容都是一些基本知识常识,可选择性跳过。声明:本文是基于SpringBoot,进行的演示说明。基础知识介绍@RequestBody主要用来接收前端传递给后端的json字符串中的数据(请求体中的数据的);GET方式无请求体,所以使用@RequestBody接收数据时

2020-06-20 23:47:35 16562 1

原创 【通用设计】获取当前请求的ip地址

问题描述通常服务端用request获取客户端的IP地址的方法是:request.getRemoteAddr(),这种方法在大部分情况下都是有效的,除了服务端通过了nginx, Apache, Squid等反向代理软件这种情况就不能获取到客户端的真实IP地址了。使用反向代理服务器时,访问服务器是反向代理服务器访问的,反向代理服务器再将得到的结果返回给真实的请求方。所以这种情况直接使用request.getRemoteAddr();这个方法得到的是代理工具的ip地址, 并不是真正的请求方的地址。例如,当我

2020-06-19 21:55:49 1089

转载 Shiro更改用户信息同时更改subject中的信息

阅读目录问题描述解决问题描述当更改用户信息的时候,发现subject却还是原来的信息,解决没有直接的办法更改,只能给当前用户切换身份,切换一个认证信息给安全管理器。当更改用户信息后,调用setUser方法,UserInfo是原来放在SimpleAuthenticationInfo中的对象,realName是原来realm的名字。public class ShiroUtils { public static Subject getSubjct(){ return Sec

2020-06-19 12:23:16 1441

原创 解决在springboot测试中@value 获取server.port=-1情况

阅读目录问题描述原因问题描述application.yml部分配置配置项如下:server: port: 8080domain: localhost配置项对应的类代码如下:@Component@Datapublic class SiteConfig { //域名 @Value("${domain:#{null}}") private String domain; //端口号 @Value("${server.port:#{8081}}")

2020-06-18 11:42:50 2987

转载 【前端】http预请求options

在有很多情况下,当我们在js里面调用一次ajax请求时,在浏览器那边却会查询到两次请求,第一次的Request Method参数是OPTIONS,还有一次就是我们真正的请求,比如get或是post请求方式。查阅相关的资料之后发现, 这是浏览器对复杂跨域请求的一种处理方式,在真正发送请求之前, 会先进行一次预请求, 就是我们刚刚说到的参数为OPTIONS的第一次请求, 它的作用是用于试探性的服务器响应是否正确, 即是否能接受真正的请求, 如果在options请求之后获取到的响应是拒绝性质的,例如500等ht

2020-06-15 20:27:20 639

原创 slf4j + log4j2 的使用

阅读目录前言快速使用引入依赖排除依赖冲突配置文件日志打印代码log4j2的优点log4j2.xml配置文件说明前言log4j2是 log4j 的进化版本,并提供了许多 logback 可用的改进,同时解决了 Logback 体系结构中的一些固有问题。本文将从slf4j+log4j2的快速使用开始,然后介绍log4j2的优异性能以及log4j2配置文件相关的详细说明。log4j2 官网文档:https://logging.apache.org/log4j/2.x/快速使用引入依赖如果是Spr

2020-06-12 23:13:22 6870 1

转载 alpha、beta、rc各版本区别

很多软件在正式发布前都会发布一些预览版或者测试版,一般都叫“beta版”或者 “rc版”,特别是开源软件,甚至有“alpha版”,下面来解释一下各个版本的意思。alpha版:内部测试版。α是希腊字母的第一个,表示最早的版本,一般用户不要下载这个版本,这个版本包含很多BUG,功能也不全,主要是给开发人员和 测试人员测试和找BUG用的。beta版:公开测试版。β是希腊字母的第二个,顾名思义,这个版本比alpha版发布得晚一些,主要是给“部落”用户和忠实用户测试用的,该版本任然存 在很多BUG,但是相对alp

2020-06-12 12:38:06 827

空空如也

空空如也

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

TA关注的人

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