自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(391)
  • 资源 (9)
  • 收藏
  • 关注

原创 Redis简介

简单来说 redis 就是一个数据库,不过与传统数据库不同的是 redis 的数据是存在内存中的,所以读写速度非常快,因此 redis 被广泛应用于缓存方向。另外,redis 也经常用来做分布式锁。redis 提供了多种数据类型来支持不同的业务场景。除此之外,redis 支持事务 、持久化、LUA脚本、LRU驱动事件、多种集群方案。

2023-09-03 23:35:42 517

原创 复习计划书

4、缓存 redis。

2023-07-11 00:39:46 89

转载 Java Optional用法

Java optional

2022-09-07 10:04:16 189

转载 MySQL日志系统:redo log、binlog、undo log 区别与作用

日志系统主要有redo log(重做日志)和binlog(归档日志)。redo log是InnoDB存储引擎层的日志,binlog是MySQL Server层记录的日志, 两者都是记录了某些操作的日志(不是所有)自然有些重复(但两者记录的格式不同)。图来自极客时间的mysql实践,该图是描述的是MySQL的逻辑架构。redo log日志模块redo log是InnoDB存储引擎层的日志,又称重做日志文件,用于记录事务操作的变化,记录的是数据修改之后的值,不管事务是否提交都会记录下来。在实例和

2022-03-24 15:52:35 199

原创 115. 不同的子序列

给定一个字符串 s 和一个字符串 t ,计算在 s 的子序列中 t 出现的个数。字符串的一个 子序列 是指,通过删除一些(也可以不删除)字符且不干扰剩余字符相对位置所组成的新字符串。(例如,"ACE"是"ABCDE"的一个子序列,而"AEC"不是)题目数据保证答案符合 32 位带符号整数范围。示例1:输入:s = "rabbbit", t = "rabbit"输出:3解释:如下图所示, 有 3 种可以从 s 中得到 "rabbit" 的方案。(上箭头符号 ^ 表示...

2021-03-17 14:17:51 139

原创 354. 俄罗斯套娃信封问题

给你一个二维整数数组 envelopes ,其中 envelopes[i] = [wi, hi] ,表示第 i 个信封的宽度和高度。当另一个信封的宽度和高度都比这个信封大的时候,这个信封就可以放进另一个信封里,如同俄罗斯套娃一样。请计算 最多能有多少个 信封能组成一组“俄罗斯套娃”信封(即可以把一个信封放到另一个信封里面)。注意:不允许旋转信封。示例 1:输入:envelopes = [[5,4],[6,4],[6,7],[2,3]]输出:3解释:最多信封的个数为 3, ...

2021-03-05 15:27:40 107

转载 二维前缀和详解

我们讲一下什么是二维前缀和,建立在一维前缀和之上,我们要求一个矩阵内一个任意的子矩阵的数的和,我们就可以用二维前缀和,我们还是用DP来预处理,状态和一维前缀和差不多,只不过我们多加了一维,DP[i][j]表示(1,1)这个点与(i,j)这个点两个点分别为左上角和右下角所组成的矩阵内的数的和,好好想一下状态转移方程,DP[i][j]=DP[i-1][j]+DP[i][j-1]-DP[i-1][j-1]+map[i][j],怎么来的呢?我们画一下图就知道了。这张图就知道了(i,j)可以由(i-1,j)和

2021-03-02 15:48:05 136

转载 top命令

top命令  top命令是Linux下常用的性能分析工具,能够实时显示系统中各个进程的资源占用状况,类似于Windows的任务管理器。  运行 top 命令后,CPU 使用状态会以全屏的方式显示,并且会处在对话的模式 -- 用基于 top 的命令,可以控制显示方式等等。退出 top 的命令为 q (在 top 运行中敲 q 键一次)。  内容解释:第一行(top):  15:24:36 系统当前时刻  14 days 系统启动后到现在的运作时间  3 users 当前.

2020-12-17 15:59:39 274 1

转载 熔断机制HYSTRIX

一、问题产生雪崩效应:是一种因服务提供者的不可用导致服务调用者的不可用,并将不可用逐渐放大的过程正常情况下的服务:某一服务出现异常,拖垮整个服务链路,消耗整个线程队列,造成服务不可用,资源耗尽: 形成过程: 1)服务提供者不可用 a)硬件故障:硬件损坏造成的服务器主机宕机, 网络硬件故障造成的服务提供者的不可访问 ...

2020-11-13 17:49:42 216

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

本篇文章主要讨论一下我们经常会用到的一些对象:VO、DTO、DO和PO。由于不同的项目和开发人员有不同的命名习惯,这里我首先对上述的概念进行一个简单描述,名字只是个标识,我们重点关注其概念:概念:VO(View Object):视图对象,用于展示层,它的作用是把某个指定页面(或组件)的所有数据封装起来。DTO(Data Transfer Object):数据传输对象,这个概念来源于J2EE的设计模式,原来的目的是为了EJB的分布式应用提供粗粒度的数据实体,以减少分布式调用的次数,从而提.

2020-11-02 15:38:43 186

转载 【高并发】高并发五个利器(缓存、限流、降级、熔断、隔离)

文章目录一、前言 二、缓存 2.1 缓存本质 + 缓存分类 + 缓存三大特征 + 三种淘汰算法 + 根据业务场景设计过期时间 2.2 本地缓存(进程内缓存) 2.3 分布式缓存 2.4 缓存五问题:缓存雪崩 + 缓存穿透 + 缓存击穿 + 缓存更新 + 数据不一致 2.4.1 缓存雪崩问题 2.4.2 缓存穿透问题 2.4.3 缓存击穿问题 2.4.4 缓存更新问题(四种缓存更新方式 + 缓存数据源:DB和远程服务) 2.4.5 缓存数据不一致问题

2020-10-16 15:22:36 4383 3

转载 简洁又快速地处理集合——Java8 Stream(下)

本篇文章主要内容:一种特化形式的流——数值流 Optional 类 如何构建一个流 collect 方法 并行流相关问题一. 数值流前面介绍的如int sum = list.stream().map(Person::getAge).reduce(0, Integer::sum); 计算元素总和的方法其中暗含了装箱成本,map(Person::getAge) 方法过后流变成了 Stream<Integer> 类型,而每个 Integer 都要拆箱成一个原始类型再进行 sum 方法

2020-09-28 17:10:21 154

转载 简洁又快速地处理集合——Java8 Stream(上)

本篇文章主要内容:介绍 Stream 以及 Stream 是如何处理集合的 介绍 Stream 与集合的关系与区别 Stream 的基本方法介绍一. 什么是 StreamStream 中文称为 “流”,通过将集合转换为这么一种叫做 “流” 的元素序列,通过声明性方式,能够对集合中的每个元素进行一系列并行或串行的流水线操作。换句话说,你只需要告诉流你的要求,流便会在背后自行根据要求对元素进行处理,而你只需要 “坐享其成”。二. 流操作整个流操作就是一条流水线,将元素放在流水线上一

2020-09-28 16:38:57 158

转载 linux下生成dump文件方法及设置

Linux中生成 Core Dump 文件的方法1 什么是 Core DumpCore Dump 又叫核心转储。在程序运行过程中发生异常时,将其内存数据保存到文件中,这个过程叫做 Core Dump。2 Core Dump 的作用在开发过程中,难免会遇到程序运行过程中异常退出的情况,这时候想要定位哪里出了问题,仅仅依靠程序自身的信息打印(日志记录)往往是不够的,这个时候就需要 Core Dump 文件来帮忙了。一个完整的 Core Dump 文件实际上相当于恢复了异常现场,利用 Core Dump

2020-09-21 11:48:37 8243

转载 理解、学习与使用 JAVA 中的 OPTIONAL

从 Java 8 引入的一个很有趣的特性是Optional 类。Optional 类主要解决的问题是臭名昭著的空指针异常(NullPointerException) —— 每个 Java 程序员都非常了解的异常。本质上,这是一个包含有可选值的包装类,这意味着 Optional 类既可以含有对象也可以为空。Optional 是 Java 实现函数式编程的强劲一步,并且帮助在范式中实现。但是 Optional 的意义显然不止于此。我们从一个简单的用例开始。在 Java 8 之前,任何...

2020-09-17 16:05:20 95

转载 Guava学习之HashBiMap

HashBiMap存储的键和值都只能唯一,不存在键与键、值与值相同的情况(详细分析见我博客:Guava学习之BiMap)。HashBiMap类继承了AbstractMap类并实现了BiMap接口,其类继承关系如下图所示:HashBiMap  AbstractMap类实现了Map接口定义的一些方法,而BiMap类定义了其子类需要实现的一些方法,使得所有实现BiMap的类必须符合其独有的特性:键、值都是唯一的。HashBiMap类中主要有以下几个成员变量: private s..

2020-09-17 14:32:36 1437

转载 默默学Sharding-Sphere(五)

从本篇开始,开始对项目和源码进行一个分析学习。可能存在不准确的地方,望指出。基于版本3.1.0-M1版本。项目结构从项目模块拆分和依赖关系来看,大致我们可以看出各模块的主要职责和特点。sharding-core:核心模块sharding-transaction-core:事务模块核心sharding-jdbc-core:jdbc核心集成模块sharding-transaction-2pc-spi:2阶段提交事务SPI抽象sharding-transaction-2pc-xa:XA实现s

2020-09-15 20:52:06 308

转载 默默学Sharding-Sphere(四)

前三篇对sharding-sphere产品进行了一个入门学习,这篇转自某博客专栏对sharding-sphere作者的一些问题,加强对sharding-sphere进行一个认识。Q:Sharding-JDBC 的设计初衷是什么?旨在解决什么场景的问题?Sharding-JDBC 的设计初衷是想提供一个数据库中间层,用于透明的处理分库分表,而无需业务开发人员在业务代码中根据分片键生成 SQL。第一版的分库分表并不是现有的 Sharding-JDBC,而是当当的一个内部框架 ddframe 的数据库模块,d

2020-09-15 20:50:09 230

转载 默默学Sharding-Sphere(三)

接上篇,使用文档。使用文档数据分片不使用Spring引入Maven依赖<dependency> <groupId>io.shardingsphere</groupId> <artifactId>sharding-jdbc-core</artifactId> <version>${sharding-sphere.version}</version></dependency&

2020-09-15 20:46:25 475

转载 默默学Sharding-Sphere(二)

从上篇了解Sharding-Sphere的一个背景、定位以及规划后,我再去看了下官方文档,发现sharding-sphere活跃还是有原因的,文档一个字:详细。这里我大致拆分成两份:说明文档、使用文档。说明文档背景传统的将数据集中存储至单一数据节点的解决方案,在性能、可用性和运维成本这三方面已经难于满足互联网的海量数据场景。从性能方面来说,由于关系型数据库大多采用B+树类型的索引,在数据量超过阈值的情况下,索引深度的增加也将使得磁盘访问的IO次数增加,进而导致查询性能的下降;同时,高并发访问请

2020-09-15 20:38:53 745

转载 默默学Sharding-Sphere(一)

概念篇Sharding-Sphere是一套开源的分布式数据库中间件解决方案组成的生态圈,它由Sharding-JDBC、Sharding-Proxy和Sharding-Sidecar(计划中)这3款相互独立的产品组成。 他们均提供标准化的数据分片、分布式事务和数据库治理功能,可适用于如Java同构、异构语言、容器、云原生等各种多样化的应用场景。Sharding-Sphere定位为关系型数据库中间件,旨在充分合理地在分布式的场景下利用关系型数据库的计算和存储能力,而并非实现一个全新的关系型数据库。 它与

2020-09-15 20:37:13 142

转载 HTTP协议超级详解

HTTP协议简介超文本传输协议(英文:HyperTextTransferProtocol,缩写:HTTP)是一种用于分布式、协作式和超媒体信息系统的应用层协议。HTTP是万维网的数据通信的基础。HTTP的发展是由蒂姆·伯纳斯-李于1989年在欧洲核子研究组织(CERN)所发起。HTTP的标准制定由万维网协会(World Wide Web Consortium,W3C)和互联网工程任务组(Internet Engineering Task Force,IETF)进行协调,最终发布了一系列的RFC,..

2020-09-15 16:25:35 139

转载 Java关键字-instanceof

instanceof严格来说是Java中的一个双目运算符,用来测试一个对象是否是一个类的实例,用法:boolean result = obj instanceof Class 其中 obj 为一个对象,Class 表示一个类或者一个接口,当 obj 为 Class 的对象,或者是其直接或间接子类,或者是其接口的实现类,结果result 都返回 true,否则返回false。 注意:编译器会检查 obj 是否能转换成右边的class类型,如果不能转换则直接报错,如果不能确定类型,则通过编译,具体

2020-09-01 15:28:28 120

转载 过多的if else 代码重构技巧总结

一、if else 的滥用在实际业务开发中,常常面临多个条件判断的情况,如果不加思索就写代码,很容易出现一堆if else 的代码,导致代码逻辑不清晰,可阅读性很差,笔者现在改造中的一个历史遗留项目,大片大片的if else,给后来人带来很大的理解成本。过多的if else ,这是很明显的坏代码的味道,这时就应该考虑自己的设计是否合理,有没有更好的表达方式了。二、if else 重构技巧1.适当提前return这是判断条件取反的做法,代码在逻辑表达上会更清晰,先看看下面这段demo示例代码:

2020-08-20 16:55:45 1164

原创 微服务学习笔记-如何搭建微服务治理平台

一、微服务治理平台的基本功能1、服务管理通过微服务治理平台,可以调用注册中心提供的各种管理接口来实现服务的管理。根据我的经验,服务管理一般包括以下几种操作: 服务上下线。当上线一个新服务的时候,可以通过调用注册中心的服务添加接口,新添加一个服务,同样要下线一个已有服务的时候,也可以通过调用注册中心的服务注销接口,删除一个服务。 节点添加 / 删除。当需要给服务新添加节点时候,可以通过调用注册中心的节点注册接口,来给服务新增加一个节点。而当有故障节点出现或者想临时下线一些节点.

2020-08-20 10:05:00 1109

原创 微服务学习笔记-服务调用失败时得处理手段

一、超时单体应用被改造成微服务架构后,一次用户调用可能会被拆分成多个系统之间的服务调用,任何一次服务调用如果发生问题都可能会导致最后用户调用失败。而且在微服务架构下,一个系统的问题会影响所有调用这个系统所提供服务的服务消费者,如果不加以控制,严重的话会引起整个系统雪崩。所以在实际项目中,针对服务调用都要设置一个超时时间,以避免依赖的服务迟迟没有返回调用结果,把服务消费者拖死。这其中,超时时间的设定也是有讲究的,不是越短越好,因为太短可能会导致有些服务调用还没有来得及执行完就被丢弃了;当然时间也不.

2020-08-19 21:11:50 3353

原创 微服务学习笔记-如何应对服务端出现的故障

微服务系统可能出现故障的三种类型:集群故障,微服务系统一般都是集群部署的,根据业务量大小而定,集群规模从几台到甚至上万太都有可能。一旦某些代码出现bug,可能整个集群都会发生故障,不能提供对外提供服务。 单IDC故障,现在大多数互联网公司为了保证业务的高可用性,往往业务部署在不止一个 IDC。然而现实中时常会发生某个 IDC 的光缆因为道路施工被挖断,导致整个 IDC 脱网。 单机故障。顾名思义就是集群中的个别机器出现故障,这种情况往往对全局没有太大影响,但会导致调用到故障机器上的请求都失败,影响整

2020-08-19 10:58:31 628

原创 微服务学习笔记-如何使用服务路由

服务路由就是服务消费者在发起服务调用时,必须根据特定的规则来选择服务节点,从而满足某些特定的需求。一、服务路由的应用场景几种应用场景:分组调用。一般来讲,为了保证服务的高可用性,实现异地多活的需求,一个服务往往不止部署在一个数据中心,而且出于节省成本等考虑,有些业务可能不仅在私有机房部署,还会采用公有云部署,甚至采用多家公有云部署。服务节点也会按照不同的数据中心分成不同的分组,这时对于服务消费者来说,选择哪一个分组调用,就必须有相应的路由规则。 灰度发布。在服务上线发布的过程中,一般需要先在.

2020-08-19 10:01:05 563

原创 微服务学习笔记-如何使用负载均衡算法

为什么要引入负载均衡算法呢?主要有两个原因:一个是要考虑调用的均匀性,也就是要让每个节点都接收到调用,发挥所有节点的作用; 另一个是要考虑调用的性能,也就是哪个节点响应最快,优先调用哪个节点。常见的负载均衡算法1、随机算法从可用的服务节点中,随机挑选一个节点来访问。采用随机算法,在节点数量足够多,并且访问量比较大的情况下,各个节点被访问的概率是基本相同的。2、轮询算法按照固定的顺序,把可用的服务节点,挨个访问一次。轮询算法通常是把所有可用节点放到一个数组里,然后按照数组编号,挨个访.

2020-08-18 20:45:32 144

原创 微服务学习笔记-如何识别服务节点是否存活

心跳开关保护机制在网络频繁抖动的情况下,注册中心中可用的节点会不断变化,这时候服务消费者会频繁收到服务提供者节点变更的信息,于是就不断地请求注册中心来拉取最新的可用服务节点信息。当有成百上千个服务消费者,同时请求注册中心获取最新的服务提供者的节点信息时,可能会把注册中心的带宽给占满,尤其是注册中心是百兆网卡的情况下。所以针对这种情况,需要一种保护机制,即使在网络频繁抖动的时候,服务消费者也不至于同时去请求注册中心获取最新的服务节点信息。我曾经就遇到过这种情况,一个可行的解决方案就是给注册中心设置

2020-08-18 16:57:18 661

原创 微服务学习笔记-如何搭建一套服务追踪系统

服务追踪系统包含三个部分:埋点数据收集,负责在服务端进行埋点,来收集服务调用的上下文数据。 实时数据处理,负责对收集到的链路信息,按照traceId和spanId。 数据链路展示,把处理后的服务调用数据,按照调用链的形式展示处理。OpenZipkinOpenZipkin是Twitter开源的服务追踪系统。OpenZipkin主要由四个核心部分组成:Collector:负责收集探针Reporter埋点采集的数据,经过验证处理并建立索引。 Storage:存在服务调用的链路数据,默认

2020-08-18 15:30:15 250

原创 微服务学习笔记-如何搭建一个可靠的监控系统

一个监控系统主要涉及四个环节:数据收集、数据传输、数据处理和数据展示。不同的监控系统实现方案,在四个环节所使用的技术方案不同,适合的业务场景也不一样。比较流行的开源监控系统实现方案主要有两种:集中式日志解决方案,比如ELK 时序数据库解决方案,比如Graphite、TICK和PrometheusELKELK是Elasticsearch、Logstash、kibana三个开源软件产品首字母的缩写,它们三个通常配合使用,所以被称为ELK Stack。三个软件的功能各不相同:Log..

2020-08-14 16:09:56 454

原创 微服务学习笔记-开源RPC框架

一、PRC框架分类RPC框架主要分为两类:跟某种特定语言平台绑定,主要有:Dubbo:国内最早开源的RPC框架,由阿里巴巴公司开发并于2011年末对外开源,仅支持Java语言。 Motan:微博内部使用的RPC框架,于2016年对外开源,仅支持Java语言 Tars:腾讯内部使用的RPC框架,于2017年对外开源,仅支持C++语言 Spring Cloud:国外 Pivotal 公司 2014 年对外开源的 RPC 框架,仅支持 Java 语言与语言无关即跨语言平台,主要有:gRPC

2020-08-13 21:16:03 649

原创 微服务学习笔记-开源服务注册中心选型

当下主流的服务注册与发现的解决方案主要有两种应用内注册与发现:注册中心提供服务端和客户端的SDK,业务应用通过引入注册中心提供的SDK,通过的SDK,通过SDK与注册中心交互,来实现服务的注册和发现。 应用外注册的发现:业务应用本身不需要通过SDK与注册中心打交道,而是通过其他方式与注册中心交互,间接完成服务注册与发现。两个典型的注册中心实现1、应用内采用应用内注册与发现的方式,最典型的案例要属Netflix开源的Eureka。Eureka的架构,主要由三个重要的组件组成:Eur

2020-08-12 18:23:29 435

原创 微服务学习笔记-注册中心如何落地

一、注册中心如何存储服务信息注册中心用来存储服务信息,服务信息春初节点信息(IP和端口)、请求失败时重试的次数、请求结果是否压缩等信息。服务信息通常用JSON字符串来存储,包含多个字段,每个字段代表不同的含义。服务一般分为多个不同的分组,每个分组的目的不同。主要集中分组方式:核心与非核心,从业务的核心程度来分。 机房,从机房的维度来分。 线上环境与测试环境,从业务场景维度来区分。所以注册中心存储的服务信息一般包含三部分内容:分组、服务名以及节点信息,节点信息又包括节点地址和几点其他信息。.

2020-08-11 21:24:44 197

原创 微服务学习笔记-服务发布和引用的实践

XML配置方式,服务发布和引用的具体实践以及可能遇到的问题。一、XML配置方式的服务发布和引用流程1、服务提供者定义接口服务提供者发布服务之前首先定义接口,声明接口名、传递参数以及返回值类型,然后把接口打包成JAR发布出去。2、服务提供者发布接口服务提供者发布的接口是通过在服务发布配置文件中定义接口来实现。一个具体的服务发布配置文件 user-last-status.xml ,它定义了要发布的接口 userLastStatusLocalService,对外暴露的协议是 Motan..

2020-08-10 11:38:14 163

原创 微服务学习笔记-Double框架中的微服务

一、服务发布与引用服务发布与引用的三种常用方式:RESTful、XML配置以及IDL文件。Double主要采用XML配置方式。<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns:dubbo="http://dubbo.a

2020-08-07 18:12:01 4214

原创 微服务学习笔记-微服务治理得方式

可能会出现一些问题:注册中心宕机; 服务提供者右节点宕机; 服务消费者和注册中心之间网络不通; 服务提供者和服务提供者之间得网络不通; 服务提供者有些节点性能变慢; 消费提供者短时间内出现问题一、节点管理1、注册中心主动摘除机制服务提供者定时的主动向注册中心汇报心跳,注册中心根据服务提供者节点最近一次汇报心跳的时间与上一次汇报心跳时间做比较,如果超出一定时间,就认为服务提供者出现问题,继而把节点从服务列表中摘除,并把最近的可用服务节点列表推送给服务消费者。2、服务消费者摘除机制

2020-08-06 21:22:45 150

原创 微服务学习笔记-追踪微服务调用

微服务系统追踪微服务调用,跟踪记录一次用户请求经过哪些调用,经过哪些服务处理,并且记录每一次调用所设计的服务的详细信息。如果发生调用失败,可以根据日志快速定位出现问题的环节。一、作用 1.优化系统瓶颈 通过记录调用经过的每一条链路上的耗时,快速定位系统中的瓶颈点。 2.优化链路调用 通过服务追钟可以分析调用所经过的路径,然后评估是否合理,通过对调用链路进行分析,可以跨数据中心的服务调用,从而进行优化,尽量规避这种情况。 ...

2020-08-06 18:16:44 533

原创 微服务学习笔记-如何监控微服务调用

如何监控微服务调用一、监控对象二、监控指标三、监控维度四、监控系统原理一、监控对象用户端监控业务直接对用户提供的功能的监控接口监控业务提供的功能所依赖的具体RPC接口的监控资源监控某个接口依赖的资源的监控基础监控服务器本身的健康状况的监控二、监控指标请求量实时请求量:QPS(Queries Per Second)即每秒查询次数来衡量,反映服务调用的实时变化情况统计请求量:PV(Page View)即一段时间内用户的访问量来衡量响应时间:一段时间内所调用的平均耗时来反映

2020-08-05 11:21:44 504

统计学习方法 pdf

统计学习方法 pdf,扫描清晰统计学习方法 pdf,扫描清晰

2017-11-10

《机器学习实战》的源码

《机器学习实战》源码,可以迅速查找机器学习实战的源代码

2017-10-31

org.springframework.core-3.1.0.M2.jar

org.springframework.core-3.1.0.M2.jar

2017-07-31

struts2小项目购物网站

struts2小项目购物网站

2017-07-12

Unity3D贪吃蛇

Unity3D贪吃蛇

2016-05-16

传智播客php34期

传智播客php34期

2016-03-30

黑马程序员_毕向东最新经典Java基础视频

黑马程序员_毕向东最新经典Java基础视频

2016-03-30

空空如也

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

TA关注的人

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