自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(57)
  • 资源 (17)
  • 收藏
  • 关注

原创 java零散知识记录

Paht:1.Paths.get(s).normalize(); get方法返回拼接字符串后的路径。可以是一个参数,也可以是多个。normalize方法是返回删除冗余名称元素的路径。 在许多文件系统中,“ . ”和“ .. ”是用于指示当前目录和父目录的特殊名称。 在这样的文件系统中,所有单独出现的“ . ”和“..”都被认为是冗余的,但是如下面ss..一起出现就不会删除。 如果“ .. ”前面有一个非“ .. ”的名称,那么这两个名称都被认为是冗余的(识别这些名称的过程被重复,直到它不再适用),只删除

2020-06-03 13:18:36 585

原创 jdk8新特性

Lambda:Java中Lambda表达式的使用_程序员的博客-CSDN博客_java lambda表达式Date:jdk7的特点1、所有的日期类都是可变的,因此他们都不是线程安全的,这是Java日期类最大的问题之一。 2、Java的日期/时间类的定义并不一致,在java.util和java.sql的包中都有日期类,此外 用于格式化和解析的类在java.text包中定义。 3、java.util.Date同时包含日期和时间,而java.sql.Date仅包含日期,将其纳入ja...

2021-12-15 19:32:26 329

原创 jvm命令使用

CMS:首先介绍一下新生代、老年代。所谓的新生代和老年代是针对于分代收集算法来定义的,新生代又分为Eden和Survivor两个区。加上老年代就这三个区。数据会首先分配到Eden区 当中(当然也有特殊情况,如果是大对象那么会直接放入到老年代(大对象是指需要大量连续内存空间的java对象),当Eden没有足够空间的时候就会 触发jvm发起一次Minor GC。如果对象经过一次Minor GC还存活,并且又能被Survivor空间接受,那么将被移动到Survivor空 间当中。并将其年龄设为1,对象在S...

2021-08-25 17:26:05 319

原创 基于redis的分布式锁和redis的线程模型

目录介绍基于Redis的分布式锁redisson介绍为了防止分布式系统中的多个进程之间相互干扰,我们需要一种分布式协调技术来对这些进程进行调度。而这个分布式协调技术的核心就是来实现这个分布式锁。为什么要使用分布式锁?成员变量 A 存在 JVM1、JVM2、JVM3 三个 JVM 内存中 成员变量 A 同时都会在 JVM 分配一块内存,三个请求发过来同时对这个变量操作,显然结果是不对的 不是同时发过来,三个请求分别操作三个不同 JVM 内存区域的数据,变量 A 之间不.

2020-12-14 18:14:22 1675

原创 mysql问题记录

写入导出文件报错错误提示:The MySQL server is running with the --secure-file-priv option so it cannot execute出现这个问题的原因是因为启动MySQL的时候使用了--secure-file-priv这个参数,这个参数的主要目的就是限制LOAD DATA INFILE或者SELECT INTO OUTFILE之类文件的目录位置,我们可以使用 SELECT @@global.secure_file_priv; 查询到你当..

2020-12-12 16:44:24 240

原创 MyBatis中的#

MyBatis中的#1. #是预编译的方式,$是直接拼接;#不需要关注数据类型,mybatis实现自动数据类型转换;$不做数据类型转换,需要自行判断数据类型;#可以防止sql注入;$不能防止sql注入;如果只有一个参数,默认情况下,#{}中可以写任意的名字;${}中只能用value来接收。2. 有时候新增一条数据,知道新增成功即可,但是有时候,需要这条新增数据的主键,以便逻辑使用,再将其查询出来明显不符合要求,效率也变低了。这时候,通过一些设置,mybatis可以将insert的

2020-12-12 12:27:09 2906

原创 JVM详解

JVM:从软件层面屏蔽了底层硬件、指令层面的细节,保证了跨平台。JRE:Java程序运行环境,JDK:Java程序的开发环境. JDK: JRE + 工具 。JRE: JVM + 类库(javaSE)。每个Java应用程序有一个Runtime类的实例,使运行程序与运行环境相连接,Runtime的exec(string)方法可以执行dos命令。通过Runtime的getRuntime返回实例。程序计数器:指向当前线程正在执行的字节码指令的地址(行号)。而线程只负责执行,不负责记忆。栈帧:栈

2020-12-10 18:42:37 442

原创 Jvm参数介绍及调优总结

首先介绍一下新生代、老年代。所谓的新生代和老年代是针对于分代收集算法来定义的,新生代又分为Eden和Survivor两个区。加上老年代就这三个区。数据会首先分配到Eden区 当中(当然也有特殊情况,如果是大对象那么会直接放入到老年代(大对象是指需要大量连续内存空间的java对象),当Eden没有足够空间的时候就会 触发jvm发起一次MinorGC。如果对象经过一次MinorGC还存活,并且又能被Survivor空间接受,那么将被移动到Survivor空 间当中。并将其年龄设为1,对象在Survivor每..

2020-12-05 18:50:50 461

原创 linux整理

linux基本介绍1.linux命令在线查询:http://man.linuxde.net/2.linux系统中断正在执行的程序,就要用Ctrl + c键组合而非[delete]键。3.unix提供了多个多个shell程序(bourne shell, C shell, Korn shell,Bash shell)管理员在为用户创建账号时,就规定了用户所使用的shell程序4.命令区分大小写,命令与参数之间要用空格符或者制表符分隔。把一组连续的空格符或者制表符称为空白字符串,系统规定命令中的各

2020-10-25 23:04:19 1934

原创 通用对象池GenericObjectPool

GenericObjectPool 是Apache Commons Pool提供的对象池,使用的时候需要调用 borrowObject 获取一个对象,使用完以后需要调用 returnObject 归还对象,或者调用 invalidateObject 将这个对象标记为不可再用。GenericObjectPool创建时,可以用有参构造函数进行初始化,通过GenericObjectPoolConfig 和PooledObjectFactory来进行参数的初始化和对象工厂类的引入。PooledObje...

2020-10-14 10:08:48 4804 1

原创 c3p0

C3P0是一个开源的JDBC连接池.它实现了数据源和JNDI绑定,支持JDBC3规范和JDBC2的标准扩展。目前使用它的开源项目有Hibernate、Spring等。JNDI(Java Naming and Directory Interface,Java命名和目录接口)是SUN公司提供的一种标准的Java命名系统接口,JNDI提供统一的客户端API,通过不同的访问提供者接口JNDI服务供应接口(SPI)的实现,由管理者将JNDI API映射为特定的命名服务和目录系统,使得Java应用程序可以和这些命名

2020-10-10 15:28:00 3509

原创 Signal机制

java中提供了signal的机制。在sun.misc包下,属于非标准包。重要涉及到两个类:Signal和SignalHandler。其中Signal主要使用了静态方法Signal.handle(Signal, SignalHandler),而SignalHandler是一个接口,有一个抽象方法void handle(Signal var1);需要我们自己实现SignalHandler接口处理。在Linux下支持的信号(具体信号kill -l命令查看):SEGV, ILL, FPE, BUS, SYS

2020-09-08 22:32:36 2629

原创 Base64编码原理

Base64的由来目前Base64已经成为网络上常见的传输8Bit字节代码的编码方式之一。在做支付系统时,系统之间的报文交互都需要使用Base64对明文进行转码,然后再进行签名或加密,之后再进行(或再次Base64)传输。那么,Base64到底起到什么作用呢?在参数传输的过程中经常遇到的一种情况:使用全英文的没问题,但一旦涉及到中文就会出现乱码情况。与此类似,网络上传输的字符并不全是可打印的字符,比如二进制文件、图片等。Base64的出现就是为了解决此问题,它是基于64个可打印的字符来表示二进制的数

2020-09-08 11:41:01 253

原创 Spring Framework

介绍:Spring Framework核心支持依赖注入,事务管理,Web应用程序,数据访问,消息传递,测试和更多功能。Spring 官网:https://spring.io/ Spring 文档:https://spring.io/guides Spring Project:https://spring.io/projects 项目快速生成器:https://start.spring.io/Spring框架为现代基于Java的企业应用程序提供了一个全面的编程和配置模型 - 在任何类...

2020-09-05 15:06:29 896

原创 bitmap,bitSet和布隆过滤器讲解

在20亿个随机整数中找出某个数m是否存在其中,并假设32位操作系统,4G内存在Java中,int占4字节, 1字节=8位(1 byte = 8 bit)如果每个数字用int存储,那就是20亿个int,因而占用的空间约为 (2000000000*4/1024/1024/1024)=7.47G如果按位存储就不一样了,20亿个数就是20亿位,占用空间约为 (2000000000/8/1024/1024/1024)=0.233Gbitmap算法:所谓的Bit-map就是用一个bit位来标记...

2020-07-26 19:26:42 840

原创 Redis

@【TOC】目录# Redis简介REmote DIctionary Server(Redis) 是一个由Salvatore Sanfilippo写的key-value存储系统,是完全开源免费的,遵守BSD协议,是一个高性能的key-value数据库。一款高性能的NOSQL系列的非关系型数据库。关系型有 mysql 和oracle等。关系型数据库与非关系型数据库对比:两者互补,通常情况下,使用关系型数据库,在合适的时候使用Nosql数据库,一般会将数据存储在关系型数据库,在Nosql数据库.

2020-07-19 22:44:14 484

原创 Netty总结

对于高性能的 RPC 框架,Netty 作为异步通信框架,几乎成为必备品。例如,Dubbo 框架中通信组件,还有 RocketMQ 中生产者和消费者的通信,都使用了 Netty。今天,我们来看看 Netty 的基本架构和原理。Netty 的特点与 NIONetty 是一个异步的、基于事件驱动的网络应用框架,它可以用来开发高性能服务端和客户端。其中,Selector 机制就是 NIO 的核心。当每次客户端请求时,会创建一个 Socket Channel,并将其注册到 Selector 上(多路复用器)

2020-07-18 22:46:24 340

原创 Gradle总结

@[toc]#Why Gradle?(为什么使用gradle)@[toc]Gradle 官方对其描述是:能自动构建、测试、部署、打包、生成静态页面,生成文档等等。Gradle整合了Ant对依赖管理的强大能力和优于maven约定配置的特性,形成了一种更有效的构建方式。Gradle基于Groovy的领域定义语言,充满了创新。https://docs.gradle.org/current/userguide/userguide.html#gradle 与maven相比有哪些优势@[toc]1.

2020-06-27 19:41:20 1226

原创 mysql总结

@[toc]MySQL是一个关系型数据库管理系统,由瑞典MySQL AB公司开发,目前属于Oracle公司。MySQL是一种关系型数据库管理系统,关系型数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性。MySQL是开源的,所以你不需要支付额外的费用。 MySQL支持大型的数据库。可以处理拥有上千万条记录的大型数据库。 MySQL使用标准的SQL数据语言形式。 MySQL可以允许于多个系统上,并且支持多种语言。这些编程语言包括C、C++、Python

2020-06-27 17:32:20 1342

原创 Gson解析介绍

JSON,Javascript Object Notation,是一种轻量级的数据交换格式,Gson 是google解析Json的一个开源框架,同类的框架fastJson,JackJson等等。POJO,Plain Old Java Object,是一种简单的Java对象,一般就是有一些private属性及其属性getter、setter方法的类。这种对象只能用来装载数据,作为数据存储的载体,而不具有业务逻辑处理的能力。Gson的创建方式1..Gson gson = new gson();

2020-06-14 13:03:26 2294

原创 apache-tomcat-7.0.81/conf/server.xml详解

https://blog.csdn.net/u_ascend/article/details/80433978Tomcat隶属于Apache基金会,是开源的轻量级Web应用服务器,使用非常广泛。server.xml是Tomcat中最重要的配置文件,server.xml的每一个元素都对应了Tomcat中的一个组件;通过对xml文件中元素的配置,可以实现对Tomcat中各个组件的控制.说明:由于server.xml文件中元素与Tomcat中组件的对应关系,后文中为了描述方便,“元素”和“组件”的使用不...

2020-06-12 12:46:13 575

原创 java中Annotation详解

Java 注解(Annotation)又称 Java 标注,是 JDK5.0 引入的一种注释机制。主要作用:Annotation其实是代码里的特殊标记,这些标记可以在编译、类加载、运行时被读取,并执行相应的处理。通过使用Annotation,程序开发人员可以在不改变原有逻辑的情况下,在源文件嵌入一些补充信息。如代码分析工具、开发工具和部署工具可以通过这些补充信息进行验证或者进行部署。Java ...

2020-04-09 15:49:05 1657 1

原创 java之AIO实例

AIO介绍JDK1.7升级了NIO类库,升级后的NIO类库被称为NIO 2.0,Java正式提供了异步文件I/O操作,同时提供了与UNIX网络编程事件驱动I/O对应的AIO。AIO是真正的异步非阻塞I/O。它不需要通过多路复用器(Selector)对注册的通道进行轮询操作即可实现异步读写,从而简化了NIO的编程模型。NIO 2.0引入了新的异步通道的概念,并提供了异步文件通道和异步套接字通道的...

2020-03-31 14:58:13 1540 2

原创 JavaNIO详解

NIO在Java1.4之前的I/O系统中,提供的都是面向流的I/O系统,而在Java 1.4中推出了NIO,NIO 与原来的IO 有同样的作用和目的,但是使用的方式完全不同,NIO支持面向缓冲区的、基于通道的IO操作。NIO将以更加高效的方式进行文件的读写。阻塞IO模型在老的IO包中,serverSocket和socket都是阻塞式的,因此一旦有大规模的并发行为,而每一个访问都会开启一个...

2020-03-27 10:51:44 428

原创 游戏中的状态同步和帧同步

1、状态同步:顾名思义,是指的将其他玩家的状态行为同步的方式,一帮情况下AI逻辑,技能逻辑,战斗计算都由服务器运算,只是将运算的结果同步给客户端,客户端只需要接受服务器传过来的状态变化,然后更新自己本地的动作状态、Buff状态,位置等就可以了,但是为了给玩家好的体验,减少同步的数据量,客户端也会做很多的本地运算,减少服务器同步的频率以及数据量。2、 帧同步:RTS游戏常采用的一种同步技术 ,上一...

2020-03-15 16:42:25 320

原创 九种算法整理

稳定性:如果相同元素排序前后的顺序不变,说明该算法是稳定的.时间开销:数据比较次数与数据移动次数来衡量.空间开销:执行算法顺序时的附加存储开销.忽略常数,用O(1)表示1.选择排序(Selection-sort)是一种简单直观的排序算法。它的工作原理:首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置,然后,再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的...

2020-03-14 18:15:55 439

原创 java树的整理

用树的原因:因为它通常结合了另外两种数据结构的有点:一种是数组,一种是链表,在树中查找数据项的速度和在有序数组中查找一样快,并且插入数据项和删除数据项的速度和链表一样。路径:设想一下顺着链接点的边从一个节点走到另一个节点,所经过的节点顺序排列就称为“路径”。根:树顶端的节点就称为根,一棵树只能有一个根,从根到任意节点有且只有一条路径。父节点:每个节点上面的节点为此节点的父节点,...

2020-03-12 18:13:26 799

原创 java并发编程及juc包的应用

多线程: 进程是操作系统资源分配的基本单位,而线程是任务调度和执行的基本单位。windows操作系统是多任务操作系统,它以进程为单位,一个进程是一个包含有自身地址的程序,每个正在独立执行的程序都称为进程,每个进程有自己的内存空间和系统资源。系统可以分配给每个进程一段有限的使用CPU时间,CPU在这个时间片中执行某个进程,然后下一个时间片又跳到另一个进程中去执行,由于CPU转换较快...

2020-01-19 18:24:09 803

转载 什么是CDN?

据了解,2018年1月,阿里云为虎牙提供了边缘节点服务(ENS)。基于阿里云ENS,可以轻松地将业务模块放到边缘运行,在主播的推流时,实现就近节点进行转码和分发,同时支持了高并发实时弹幕的边缘分发。在获得网络低时延的同时,减少了对中心的压力,节省了30%以上的中心带宽成本,并且实现了边缘节点网络连接小于5毫秒延时,提升了主播上行质量,以及用户成功连接占比等数指标,有效提升了用户观看体验。EN...

2019-08-08 11:28:52 219

原创 ExecutorService学习

转载:https://blog.csdn.net/fwt336/article/details/81530581在我们的日常开发中,难免会使用到线程,部分还会用到多线程并发问题。我们知道,线程的创建和释放,需要占用不小的内存和资源。如果每次需要使用线程时,都new 一个Thread的话,难免会造成资源的浪费,而且可以无限制创建,之间相互竞争,会导致过多占用系统资源导致系统瘫痪。不利于扩展,比如...

2019-03-28 16:24:08 483

原创 Java中Lambda表达式的使用

此笔记仅用作复习使用:https://www.cnblogs.com/franson-2016/p/5593080.htmlLambda表达式是Java SE 8中一个重要的新特性。lambda表达式允许你通过表达式来代替功能接口。 lambda表达式就和方法一样,它提供了一个正常的参数列表和一个使用这些参数的主体(body,可以是一个表达式或一个代码块)。Lambda表达式还增强了集合库。...

2019-03-26 17:39:22 64645 15

原创 ReentrantLock问题记录

说ReentrantLock前我们先了解一下Lock与AbstractQueuedSynchronizer(AQS),Doug Lea大师为我们提供了大量实用,高性能的工具类,这些代码在java.util.concurrent包下。包的结构大概是:lock简介我们下来看concurent包下的lock子包。锁是用来控制多个线程访问共享资源的方式,一般来说,一个锁能够防止多个线程同时访问共享...

2019-03-21 18:23:17 1020

原创 ConcurrentHashMap,CopyOnWriteArraySet「E」,BlockingQueue

1.ConcurrentHashMap:大家都知道HashMap是非线程安全的,Hashtable是线程安全的,但是由于Hashtable是采用synchronized进行同步,相当于所有线程进行读写时都去竞争一把锁,导致效率非常低下。而ConcurrentHashMap避免了为整个容器上锁。JDK1.8以前他把整个容器分成了若干个段(Segment),而这些段数组的容量是固定的。每个段又相当于一...

2019-03-20 20:01:09 897

原创 jxl和poi读取xls和xlsx

一、jxl优点:Jxl对中文支持非常好,操作简单,方法看名知意。Jxl是纯javaAPI,在跨平台上表现的非常完美,代码可以再windows或者Linux上运行而无需重新编写支持Excel 95-2000的所有版本,生成Excel 2000标准格式支持字体、数字、日期操作能够修饰单元格属性支持图像和图表,但是这套API对图形和图表的支持很有限,而且仅仅识别PNG格式,只能对excel处理。...

2019-03-17 21:30:59 3270

转载 U3D游戏中的贝塞尔曲线以及其在Unity中的实现

定义:一般的,在平面直角坐标系中,如果曲线上任意一点的坐标x,y都是某个变数't’的函数{x=f(t),y=g(t)并且对于't‘的每一个允许值,由上述方程组所确定的点M(x,y)都在这条曲线上,那么上述方程则为这条曲线的参数方程,联系x,y的变数't‘叫做变参数,简称参数,相对于参数方程而言,直接给出点的坐标间关系的方程叫做普通方程。(注意:参数是联系变数x,y的桥梁,可以是一个有物理意义和几何...

2019-01-18 19:32:02 825

原创 Unity的一些基础性东西

1.Unity是单线程的游戏引擎,unity的非主线程中无法访问Unity的API,这种限制的原因:游戏中逻辑更新和画面更新的时间点要求有确定性,必须按照帧序严格保持同步,否则就会出现游戏中的对象不同步现象。2.生命周期:我们在自己脚本里写OnApplicationQuit,OnDisable,OnDestroy三个函数时的执行顺序于书写顺序一样,是因为在OnApplicationQuit里调...

2018-12-18 11:49:36 338

原创 Unity里的协程和lua里的协同

线程:一个线程在程序中和其他线程是异步运行的,在多处理器机器中一个线程可以同时与所有其他线程的实时运行其代码,这使得线程编程能够解决很复杂的事情,因为可能在相同的时间里一个线程在改变它而另一个线程正在读取它,正因为如此,你必须通过锁,以确保这种情况不会由任何确保没有共享内存发生.Unity中可以开启多线程, 但是只有主线程能访问Unity的方法。协程(coroutine)与多线程情况下的线程比...

2018-12-15 14:35:11 1770

转载 unity的RectTransform

RectTransform继承于Transform,配合Canvas专门交给UGUI使用.控制UI的大小旋转缩放等。1.Anchorunity中的ui元素是有严格的父子关系的,子物体的位置是根据父物体的变化而变化的,而子物体和父物体联系的桥梁就是Anchor。在recttransform面板中可以调整锚点的值.min和max表征的是该点所在位置占父物体大小的比例.(默认左下角为0,0点,右...

2018-12-11 17:38:40 6315

原创 lua中的io

lua中的io分为两种模式:简单模式(simple model)拥有一个当前输入文件和一个当前输出文件,并且提供针对这些文件相关的操作。 完全模式(complete model) 使用外部的文件句柄来实现。它以一种面对对象的形式,将所有的文件操作定义为文件句柄的方法模式 描述 r 以只读方式打开文件,该文件必须存在。 w 打开只写文件,若文件存在则文件长度清为0,...

2018-12-03 12:26:09 1829

转载 Bat文件中javac和java中的ClassPath

在dos下编译java程序,就要用到classpath这个概念,尤其是在没有设置环境变量的时候。classpath就是存放.class等编译后文件的路径。javac:如果当前你要编译的java文件中引用了其它的类(比如说:继承),但该引用类的.class文件不在当前目录下,这种情况下就需要在javac命令后面加上-classpath参数,通过使用以下三种类型的方法 来指导编译器在编译的时候去指...

2018-11-28 14:22:36 705

javaproject.zip

自动用sftp上传文件和shell脚本更新

2021-04-23

JAVA_API_1.7中文开发文档.rar

jdk1.7中文开发文档

2020-07-28

Netty.实战pdf

仅供学习netty使用

2020-07-26

java学习资料.zip

这个是java的学习资料。百度网盘不给力。所以放在这上面保存一下啊。

2020-05-23

logback.的jar包

此zip包含logback-access-1.2.3和logback-classic-1.2.3和logback-core-1.2.3

2020-01-13

slf4j的jar包

此资源包含slf4j-api-1.7.30.jar和slf4j-api-1.7.30-javadoc.jar和slf4j-api-1.7.30-sources.jar和slf4j-api-1.7.30-tests.jar

2020-01-13

此资源包含4种mock源码

此zip文件包含easymock-master和 jmockit1-master和mockito-release-3.x和powermock-release-2.x元am

2020-01-13

Junit5.zip

此资源包含了junit5的jar包和源码,junit5-r5.4.0.zip 和demo的zip文件,对于测试来说是比较有用的

2020-01-13

SVN汉化.zip

TortoiseSVN-1.8.5.25224-x64-svn-1.8.8.msi汉化包

2019-06-27

effecctivejava 第三版中文

effecctivejava 第三版中文

2019-03-22

json的jar包-javadoc文档和查看官方文档方式还有设计思路

json的jar包-javadoc文档和查看官方文档方式还有设计思路

2019-03-19

java解析xml四种方式完整项目

此资源是利用DOM,SAX,JDOM,DOM4J解析XML文件的完整项目。

2019-03-17

jxl和poi读取写入表格jar包,文档和示例

此资源为利用jxl和poi读取写入表格,并带有jxl和poi文档,最后还附带有java项目源码示例

2019-03-17

untiy贝塞尔曲线脚本

此资源为利用unity制作的贝塞尔曲线实现的多种曲线,只需要拖拽自己创建的transform和定义点的个数实现多种曲线

2019-01-19

运用lua的io和String展开协议里的多种复杂字段

此资源可以解决在前后端交互的时候因为协议里复杂字段不好寻找的问题, 方便程序员快速开发

2018-12-01

java里的自定义实现事件

C#有委托和事件,但是java没有直接实现,所以我们只能自定义实现事件。此压缩包带有文档,方便查看,

2018-11-01

java从入门到精通实例版清华大学第三版高清

此分享为百度网盘链接的TXT文件,java书籍,学习用途。

2018-06-27

空空如也

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

TA关注的人

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