自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(94)
  • 收藏
  • 关注

原创 《Java修炼指南:高频源码解析》阅读笔记一Java并发包原子类

JUC包提供了一系列常用数据结构的原子类,这些类位于Java.util.concurrent.atomic包下,这些类都是使用CAS实现的,相比使用锁的方式在性能上有了很大的提升,可以再高并发的场景下,保证线程安全的同时,以更简单、高效的方式操作一个共享变量。一、AtomicLong类似类:AtomicInteger、AtomicIntegerArray、AtomicBoolean、AtomicLongArray、AtomicReference、AtomicReferenceArray原子变量操作类主

2022-03-08 21:54:39 382

原创 《Java修炼指南:高频源码解析》阅读笔记一LockSupport类

LockSupport类是jdk1.6引入的一个工具类,所有的方法都是静态方法。他主要提供了可以使线程阻塞和唤醒的方法,它是JUC中锁和其他并发类实现的基础。LockSupport核心方法都是基于Unsafe类中的Park方法和unpark方法实现的。1 void park()类似方法:void parkUntil(long deadline)、void parkNanos(long nanos)阻塞当前线程​2 void park(Object blocker)线程调用该方法会立即被阻塞挂起,

2022-02-23 13:38:43 324

原创 《Java修炼指南:高频源码解析》阅读笔记一Unsafe类

Java不能像C/C++一样直接操作内存区域,需要通过本地方法的方式来操作内存区域,JDK可以通过一个后门——Unsafe类,执行底层硬件级别的CAS原子操作,线程阻塞和唤醒等。Unsafe位于sun.misc包下,Unsafe类中方法几乎全部都是Native方法,它们使用JNI的方式调用本地的C++类库。CAS操作CAS是一种实现并发算法时常用的技术,自旋锁和乐观锁的实现都用到了CAS算法,JUC并发包的绝大多数工具类,如原子类AtomicInteger和重入锁ReentrantLock,他们的源码

2022-02-22 16:11:12 348

原创 《Java修炼指南:高频源码解析》阅读笔记一Java数据结构的实现集合类

一、Arrays工具类来自java.util.Arrays,用来处理数组的各种方法。1.1 List asList(T… a)用来返回由自定数组支持的固定大小列表,虽然这里返回了一个List,但是这个是Arrays中的一个内部类,这里边主要的方法有:并没有add和remove方法,因此它是不支持add和remove方法的,是一个定长列表,不支持添加和删除,但是可以修改​注:因为参数是泛型的,所以是不能使用基础数据类型作为参数的,但是基本数据类型的数组是可以的。​1.2 void sort(

2022-02-21 14:56:59 517

原创 《Java修炼指南:高频源码解析》阅读笔记一Java需要掌握的基础类

Java是一套语言规范,规定了如何定义变量,如何写控制语句,提供了基本的语法。JDK是java自带的调用组件,是对基本java语法规范的进一步封装。​Object类java.lang.*该包下的所有类使用时无须手动导入,系统会在编译期间自动导入。而Object类就在该包下有两种导入方式:按类型导入:import java.util.Date按需类型导入:import java.util.*,按需类型导入并不是将该包下所有的类型都导入,而是通过查找符合的所有类都进行导入,这个就导致了编译速度降低

2022-02-20 20:38:50 453

原创 任意进制与十进制相互转换-java

任意进制转十进制:系数 * 基数^权重● 系数:当前所在位的数字● 基数:当前进制数字● 权重: 所在位-1,所在位由整数部分最小位为1, 向左(更高位)位数增1,向右(小数位)位数减1十进制转任意进制:整数部分和小数部分分别运算● 整数:整数部分除以基数倒序取余数● 小数:小数部分乘以基数顺序取整数部分代码样例 public static void main(String[] args) { // 二进制 => 0b+具体数字 Integer b

2022-01-19 11:38:19 1069

原创 Redis实现分布式锁方案整理

分布式锁一般有三种实现方式:1. 数据库乐观锁;2. 基于Redis的分布式锁;3. 基于ZooKeeper的分布式锁。和其他两种锁比起来,Redis实现的分布式锁性能更高,对于高并发场景更加支持,ZK实现的分布式锁是强一致性的,也就是说是非常安全的,但是性能有所下降Redis是AP模型,ZK是CP模型可靠性首先,为了确保分布式锁可用,我们至少要确保锁的实现同时满足以下四个条件:互斥性。在任意时刻,只有一个客户端能持有锁。——锁的基础特性不会发生死锁。即使有一个客户端在持有锁的期间崩溃而没有主

2021-10-28 20:50:20 333

原创 Mybatis二次深度学习整理——缓存、插件

Mybatis缓存缓存就是存储在内存中的数据,内存和硬盘的区别想必不陌生,主要是体现在读写速度价格上不是一个级别的,为了防止高并发的场景下,硬盘无法支持IO性能要求,所以就有了将数据储存在内存中的概念,也就是缓存了,使用缓存可以避免频繁与数据库交互,进而提高响应速度。Mybatis是分为一级缓存和二级缓存的一级缓存是Sqlsession级别的缓存,在操作数据库的时候需要构造SqlSession对象,在对象中会有一个HashMap用于存储缓存的数据,不同的Sqlsession是互不干扰的。二级缓存

2021-08-18 16:28:21 230

原创 2021-07-29问题整理

答疑一1.mysql分库分表的情况下,主键id都是基于雪花算法实现的吗?雪花算法是如何保证id唯一的?mysql分库分表的情况下,主键id都是基于雪花算法实现的吗?雪花算法是如何保证id唯一的?雪花算法是什么?雪花算法在分布式架构中比较常见,是用来生成全局唯一ID的,说到全局唯一ID,不得不提到UUID,它是Java自带的生成一串唯一随机36位字符串(32个字符串+4个“-”)的算法。它可以保证唯一性,且据说够用N亿年,但是其业务可读性差,无法有序递增,它是随机生成的。snowflake(雪花算

2021-07-30 21:39:59 180

原创 Java NIO 详解

前言本篇将分为BIO、NIO概念介绍、javaNIO组件、并发NIO简易模型实例三部分组成,为读者和我自己增加对NIO的理解。一、概念认知这里主要是介绍NIO,但是在介绍NIO的时候难免会提到BIO,所以这里也顺带介绍一下什么是BIO,由此切入NIO。1 什么是IO在介绍BIO之前先来了解一下更加普遍的概念IO,IO是输入流和输出流的统称,在IO的世界里,有几个重要的概念,分别是同步、异步、阻塞、非阻塞,在这一小部分主要也是介绍这四个的概念。同步与异步同步异步中有一个主线程的概念问题,就是当前

2021-07-19 15:12:51 2838

原创 Mybatis二次深度学习整理——基础应用

前言啰嗦两句,工作中使用Mybatis,感觉自己理解不深,又系统学习了一次,现在是第二次整理了,反反复复学习了三次,学习这东西本来就是学忘、忘学的过程本篇是对Mybatis中基础应用的一个整理,在我眼里的基础应用都包括什么呢?Mybatis基础配置、Xml开发、注解开发、结果集映射——一对一、一对多、多对多,这些都是基础应用,说实话就是CRUD。但是本篇应该不只有基础应用的介绍,还包括一些我在中文官方文档中看到的让我感觉新奇的配置属性以及一些其他信息。再次推荐直接查看中文官方文档来全面了解Myb

2021-07-13 21:24:33 626

原创 HTTPS的传输流程是什么?SSL/TLS详细流程

HTTPS的传输流程是什么?基础概念名词抢先了解HTTPS:HTTPS是在HTTP上建立SSL加密层,并对传输数据进行加密,是HTTP协议的安全版。 说得再简单一点,HTTPS就是 HTTP + SSL。**SSL:**Secure Sockets Layer,即“安全套接层”。发明SSL协议的初衷,是为了解决HTTP明文传输不安全的问题。HTTP是应用层协议,是和TCP进行直接通信的,但是当我们将它转换成为HTTPS的时候,可以看下面这个流程,在HTTPS和TCP中间多了一个SSL层,这也就解释了

2021-07-04 17:47:30 1280

原创 2021-06-20问题整理

答疑一:1. 场景问题:公司目前是单库单表,有一个大表,数据量非常大,日后考虑ES集群的方式来解决可能面临的性能问题,这种设计是否合理?详细内容现在公司里有个大表是单库单表,询问项目负责人为什么不拆表,说是数据太大,且数据实时性要求很高,运维尝试主从结构,主从之间的同步速度赶不上要求,于是就是一直单表。然后后续的方案可能设计是es集群,想问一下作为这种设计是否合理?答: 如果设计成ES的话,那么有一个问题,当数据从数据库同步到ES是有有实时性问题呢?如果存Mysql的主从数据同步都是有延

2021-06-21 18:19:36 437

原创 误删分区后,卸载/重装原分区内的应用,提示该磁盘无效

这个时候,其实是因为windows卸载应用都会访问一下原磁盘,所以差找不到对应磁盘,自然无法卸载。常规是有两种方式可以解决,第一种就是删除windows中的注册表的细腻

2021-06-05 10:26:44 1954

原创 Postman:请求下载ZIP文件,返回中文乱码

写了一个java压缩图片成ZIP文件的Demo,结果使用Postman调用接口API返回乱码文件,反复对比自己Demo和各种网上例子后,发现没有问题,最后定位到是Postman请求下载ZIp文件就会

2021-06-03 23:51:02 2477 1

原创 GitKraKen——安装及基本使用

一、安装并破解GitKraKen是收费工具,有能力的朋友请支持正版1.下载最新版2.将系统中release.gitkraken.com api.gitkraken域名屏蔽掉这个目的是为了防止更新gitkraken,若不屏蔽掉这个域名,那么每次打开GitKraken是默认去检查是否有更新的,如果有那么将更新到最新版,并且破解的将失去作用。2.1修改host文件修改C:\Windows\System32\drivers\etc下的hosts文件,添加127.0.0.1 release.gitkrak

2021-05-25 11:30:30 12397 10

原创 XML文件约束-XSD系统学习之问题整理

前言如果是没有了解过XSD基本语法的同学们,建议还是先去了解一下XSD的语法,也就是W3C的XSD协议规范,关于这个方面我是在菜鸟教程中学习的,因为不涉及到写出完善的CSD文件,只是出于学习和整理的角度去看CSD语法,所以菜鸟教程中的内容对我来说完全足够了。有其他需求的同学建议看XSD协议以下内容全部来自于个人整理,如有错误地方希望可以得到您的指点,万分感谢。1 什么是XML Schema、XSD?XML Schema是一种用来描述,XML文档结构的语言规范。可以理解为更加丰富的dtd,目前xsd

2021-05-22 17:00:02 660

原创 Mybatis二次深度学习整理——自定义ORM框架

前言第二次重复整理Mybatis相关内容,这次相对于上一次的整理会更加的深入,而不仅仅是局限于API的使用上面,当然API的使用也会温习一下,因为距离上次系统整理已经过去一段时间了,有些不常用的内容也有些忘记了。这次在开始之前首先就整理一下ORM框架的通用体系的一个思路,也就是这篇自定义ORM框架的由来了,这里先声明一下这篇博客主要是为了整理ORM框架的思路,并不是为了开发一个成熟的ORM框架,当然开发一个成熟的ORM框架,我还远远不够格,这也不应该是一个人的工作量。先说一下加下来涉及的前置知识:

2021-05-16 17:37:40 287 2

原创 Xml文件解析——dom4j和Xpath的基本应用

前言Xml文件解析,这里的Xml文件主要是指java项目中的Xml配置文件,对配置文件进行解析,用到了两种技术,分别是dom4j和Xpath语法(表达式),下面是简单介绍一、dom4jdom4j是一个java XML API,是jdom的升级品,用来读写XML文件的,在目前四种读取XMl文件的产品中(dom、sax、jdom、dom4j),dom4是最受欢迎的,也是各方面表现比较好的。dom4j maven依赖<!-- parser xml file --><dependenc

2021-05-11 15:32:19 347

原创 系统整理Mysql学习笔记——流程控制结构

前言流程控制结构是任何一个语言的一种基本具备的特性,有三种结构,分别是顺序结构、分支结构、循环结构,下面主要是对分支结构和循环结构进行了解。一、分支结构在MYSQL中分支结构可以看成有三种 ,分别是IF函数、CASE结构、IF结构1 IF函数IF函数,它首先是一个函数,所以它可以在函数所支持的位置使用,主要是针对简单的双分支结构。语法:IF(表达式1,表达式2,表达式3)如果表达式1为TRUE,则执行返回表达式2的值,否则返回表达式3的值。例子:SELECT IF(TRUE,'我是TR

2021-04-26 21:38:39 136

原创 系统整理Mysql学习笔记——存储过程和函数

前言存储过程和函数的概念非常类似,但是它们和java中的方法概念也基本类似,都是提高代码的重用性和简化操作的。可以将存储过程和函数看成是一组预先编译好的SQL语句的集合,一次编译,减少了和数据库服务器的连接次数。存储过程和函数的不同之处是什么?主要是在于入参和返回值上存储过程:可以有零个或者多个参数和返回值;函数:参数不限,有且只有一个返回值。对比来看,函数很像是java中的方法,而存储过程类似于java使用引用传递返回值的方式。一、存储过程1 创建语法CREATE PROCEDUR

2021-04-26 19:36:29 111

原创 系统整理Mysql学习笔记——变量

前言变量是一个程序语言必不可少的一部分,sql也不例外,在sql中变量可以分为两种,系统变量和自定义变量。系统变量系统变量主要是指变量是由服务端来提供,不是用户自定义的。系统变量根据范围分为全局级别和会话级别,它们只是范围的区别,变量都是一样的意思,所以下面的查看和修改系统变量的时候需要加上范围,如:全局级别,需要加上GLOBAL,会话级别需要加上SESSION,如果不写默认是SESSION。1 查看1.1 查看全部系统变量SHOW GLOBAL|[SESSION] VARIABLES;

2021-04-26 19:35:55 103

原创 系统整理Mysql学习笔记——视图

前言视图的概念,在工作中或多或少的用过,之前一直没有系统的整理这部分内容,我现在想来视图就是一种虚拟的表,和上面DQL子查询中提到的虚拟表概念应该是一致的,视图的行和列的数据来自于定义视图的查询中使用的原始表(真实的表),并且是在使用使用的时候动态生成的,视图只会保存Sql逻辑,不会保存查询的结果。这样想的话,视图是不是和子查询很像,尤其是像表子查询很像,其实视图说到底它还是一个查询,不过我们再次使用这个查询的时候可以直接通过这个视图就得到了。视图常用的命令1 创建视图/*CREATE VIEW

2021-04-24 10:48:35 96

原创 系统整理Mysql学习笔记——基础命令TCL

前言TCL:Transaction Control Language,事务控制语言,这个是数据库中最最基础的一部分,也是在面试中最常提到的问题,这块尽可能的详细介绍一下。一、概念一个或一组SQL语句组成一个执行单元,这个执行单元要么全部执行,要么全部不执行,这样就可以称之为是事务。怎么理解呢,在网上搜索mysql事务,在大多数中都是以一个转账的案例展开,这里也不例外,可以想到有小富婆和小乞丐两个人,下面是这两个人的银行账户情况姓名余额小富婆1000小乞丐10先

2021-04-23 22:16:26 141

原创 系统整理Mysql学习笔记——基础命令DDL

DDL,即Data Define Language, 数据库定义语言

2021-04-23 10:33:17 284

原创 系统整理Mysql学习笔记——基础命令DML

前言DML,即Data Manipulation Language, 数据操作语言,更加通俗一下就是对表中记录进行增删改操作。DML语言分为插入:insert修改:update删除:delete一、insert插入这里的语法有两种方式,第一种INSERT INTO 表名[(列名,...) ]VALUES (值1,...)[,(值1,...),...];这里的列名可以省略,如果省略则默认对表中所有字段都需要在VALUES后面的括号中给出对应的值。对应的列名顺序就是默认顺序。这里需要注

2021-04-12 01:10:51 118

原创 系统整理Mysql学习笔记——基础命令DQL

前言程序开发中,数据库接触的最多,尤其是mysql数据库,平时一直在使用,但是一直对这个数据库概念很模糊,现在系统的整理一下mysql数据库的内容一、数据库基础命令1 查看当前所有数据库show databases;2 打开指定数据库use 库名3 查看当前库的所有表show tables [from 库名];后面参数可以指定库名,查看指定库的所有表4 查看表结构desc 表名5 创建表create table 表名{ 列名 列类型 是否可以为空 是否为主键 默认值 外键

2021-04-11 23:52:07 208

原创 java编程思想学习笔记——21多线程

一、并发简介实现并发最直接的方式是在操作系统级别使用进程。进程是运行在它自己的地址空间内的自包含的程序。多任务操作系统可以通过周期性地将CPU 从一个进程切换到另一个进程,来实现同时运行多个进程(程序)。对于进程来说,他们之间没有任何彼此通信的需要,因为他们都是完全独立的。但是如果将进程当做并发的唯一选择,那么进程来做并发来说的话,也有他的局限性,因为进程通常来说是有数量和开销的限制的,以避免他们在不同的并发系统之间的可应用性java采用在顺序型语言的基础上提供对线程的支持,即线程机制是在由执行程序表

2021-04-01 23:23:48 302

原创 mysql学习笔记整理——my.ini配置文件

前言数据库的本质还是将数据以文件的形式存储在磁盘上,不过通过数据库服务进行管理,mysql就是这样的一个工具,言归正传,前面只是对我以前一直以来的疑惑进行了复述。my.ini配置文件可以对数据库一些常用配置进行设置,如:engineer、port、character等,因此这个文件也是非常重要的,当然也可以全部使用默认配置的形式。一、my.ini的位置这里要特别注意一下,my.ini默认是在mysql实例文件的根路径下,如:但是可能有一些直接下载zip进行安装的mysql,在这个路径下依旧是找不

2021-03-22 15:39:59 45931 5

原创 分布式事务解决方案-学习笔记之事务介绍

前言从事IT代码工作,就不得不与数据库打交道,尤其是后端程序员,肯定是要和数据库打交道的,和数据库打交道的过程中有一个非常重要的概念就是事务,一般单体系统连接一个数据库的情况可以称之为本地事务,那么与之相对的就是分布式事务本节主要介绍事务、分布式事务一、事务事务通常是指和数据库之间的交互的一次会话,也就是一系列对系统中数据进行访问与更新的操作所组成的。当然这是狭义上的解释事务更多的作用是一种隔离,以防止彼此的操作互相干扰,这类似于java中的线程锁,防止多个独立的连接请求对一个共享资源的竞争,导致

2021-03-17 17:04:42 253

原创 设计模式—策略模式(整合Spring)

本篇借鉴于菜鸟教程、策略模式及使用Spring实现策略模式+工厂模式、实践:使用Spring 原生注解来快速实现 策略模式 + 工厂模式可直接参考上诉传送门内容,里边我认为是查了很多篇后比较好的三篇了,下面内容是对上面内容的个人加工整理一 简介在策略模式(Strategy Pattern)中,一个类的行为或其算法可以在运行时更改。这种类型的设计模式属于行为型模式。在策略模式中,我们创建表示各种策略的对象和一个行为随着策略对象改变而改变的 context 对象。策略对象改变 context 对象的执行

2021-03-14 23:36:59 193

原创 Bug记录—Java—Feign多接口命名重复

问题:The bean ‘*****.FeignClientSpecification’, defined in null, could not be registered.***************************APPLICATION FAILED TO START***************************Description:The bean '********.FeignClientSpecification', defined in null, could

2021-03-08 16:18:07 990

原创 Rabbitmq消息中间件初步学习——第二节SpringBoot集成Rabbitmq

前言本节主要涉及到Rabbitmq在SpringBoot的API使用,基本是上一节的一个扩展,也会简单的介绍一下七种模型和Header Exchange的使用,不过使用场景从原生变成了SpringBoot封装。对于七种模型和Header Exchange的介绍会很简单提及,如果想详细了解,可以看一下上一节内容。一 Hello WordHello Word 模型采用默认Exchange,以Queue Name作为RoutingKey的方式进行消息发布。...

2021-02-14 10:44:19 407

原创 Rabbitmq消息中间件初步学习——第二节七种模型分析

前言Rabbitmq应用场景1.RabbitMQ的消息应当尽可能的小,并且只用来处理实时且要高可靠性的消息。2.消费者和生产者的能力尽量对等,否则消息堆积会严重影响RabbitMQ的性能。3.集群部署,使用热备,保证消息的可靠性。...

2021-01-28 23:25:05 468 2

原创 延时任务三种实现方式——延时队列、Redis、Rabbitmq

前言延迟任务在工作的业务中有很多的应用场景,比如下订单后监听是否支付成功,若多少分钟后未支付则自动取消订单;比如注册用户后,再三分钟后提醒用户完成某项操作等,应用的场景很多,同时实现的方式也很多,在这里我引入一个我看过的博客,使用Redis实现延时任务,写的应该还是可以的。在我这篇博客里,介绍三种实现延时任务的方式,它们的优劣点可以看一下这个图吧,总结的很好这三种分别是JDK的延时队列、Redis、Rabbitmq,这里解释一下为什么没有介绍另外两种,因为基于数据库的方式在现在的项目中,尤其是大数据

2021-01-18 00:33:07 3171

原创 Rabbitmq消息中间件初步学习——第一节Rabbitmq3.8.9安装(linux版)

前言最近学习有些懈怠了,惭愧惭愧,程序员生涯不止,学习不停!接下来,系统性学习一下Rabbitmq,当然依然是基础使用学习,足够应对大多数的工作场景了,更加深入的研究,等我以后把点亮的技能点建立一个完整的闭环的时候吧!再一次立下一个flag!本节主要讲解Rabbitmq在linux场景下的安装,这里主要目的当然不是重复造轮子,而确实是在刚刚安装linux的Rabbitmq的时候,参考网上各路的文章,遇到了很多问题。这些问题涉及方方面面,比如linux、系统版本、Rabbitmq版本,yum库,这些都会

2021-01-08 00:29:00 490

原创 SpringBootTest 事务默认回滚及手动/自动提交事务

背景Spring Test测试类,默认事务回滚,也就是类似于修改数据库数据操作会回滚,不作用于数据库自动提交事务如何设置在测试方法执行后,将事务提交呢?如下: @Test @Transactional @Rollback(false) public void testUpdateFirstWebClmCheckclmTPAVO() throws Exception { HashMap<String, Object> params = new

2021-01-06 15:39:58 2422

原创 Redis初步学习整理——第七节缓存击穿、缓存穿透、缓存雪崩、数据预热以及缓存模式(终节)

前言学习Redis到这节对于我现阶段来说就差不多了,更加深入的内容,不是现在我时间精力可以轻易接触的,等我搭建一个完善的知识体系后,再回来完善!这节主要是看一下Redis的做缓存过程中遇到的各种问题,当然这部分内容,目前还没有实践过,都是通过网上文章总结来的,如果哪里不对,请指教一、缓存模式三种常见的缓存模式,这些应该是工作中非常常见的了,都有优缺点,需要根据具体的业务场景去适应与优化1.Cache Aside应用在查询数据的时候,先从缓存Cache中读取数据,如果缓存中没有,则再从数据库中读

2020-12-19 13:53:59 130 1

原创 Redis初步学习整理——第六节Cluster集群部署、主从复制、哨兵模式

前言在实际生产中,不可能Redis是以单机启动的,因为这样的服务是非常不稳定的,现在的项目首先提倡高可用,而高可用最佳的使用方式就是分布式部署(多部署几份以分摊意外的分享),而集群部署和主从复制是一个意思,Redis是通过主从复制来完成集群部署的,哨兵机制(Sentinel)又是在主从复制上的又一级别的改进了!一、集群部署和主从复制Redis的集群部署至少都是三个Redis服务起步的,也就是一个主两个从!主从复制也就是当主服务(Master)更新时,从节点(Slave)也随之更新,这块也有一个数据库方

2020-12-18 22:20:41 414 1

原创 Redis初步学习整理——第五节Redis配置文件、RDB、AOF、Redis订阅发布

前言上几节学习完了Redis的常规操作,这节就深入学习一下Redis的配置文件、RDB、AOF、Redis订阅发布内容了,共同加油!一、redis.conf 配置文件参数Redis配置文件涉及到的参数很多,如果英文很好的话,配置文件中都有相应的案例,所以不难理解,但是对于我这种英语起步阶段的话,还是需要对一些重点的参数进行一下整理的# Note on units: when memory size is needed, it is possible to specify# it in the us

2020-12-12 18:21:30 150

空空如也

空空如也

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

TA关注的人

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