- 博客(153)
- 资源 (14)
- 收藏
- 关注
原创 关于企业快速实现从爬虫到API服务提供的些许实践
在企业实际应用中,需要经历抓取数据->存储数据->构建API的基本步骤,然后在去定时更新数据。一般情况下,如果想在短时间内完成大批量的从数据抓取到提供数据服务,短时间内是很难。而且对于非程序员来说,你的目的并不是想去学习搭建稳定可靠自动更新的API服务,你只是想用这个网站的数据而已。企信数动智慧平台就是为此实现,可以快速的完成爬虫创建、数据库表在线编辑、API服务在线编辑,达到使用网站实时数据的目的。下面分享下,作为一枚程序员是如何利用现有开源项目来完成自己的从爬虫到数据服务的:
2020-06-27 11:52:37 389
原创 数据接口API——个人开发者不可不知的网站
作为独立的开发者而言:生活在这个国内的大环境中非常的不容易,与国外的独立开发者相比真的是可怜很多。国内的人都喜欢免费,破解版的东西,即使让用户支付1分钱去使用,都是一件很困难的事;尤其是现在,随着各大应用市场上各种软件鱼龙混杂,可以说各类应用应有尽有,再加上国内应用市场也是很分散,不统一,所以国内的独立开发者可谓是举步维艰。当今独立开发者,我认为最缺乏的就是“恒心和毅力”。当然,这也是可以理解;毕竟个人的时间和力量是非常有限,在预定的期间内没有产生预想的收益;慢慢的就会失去耐心,进而放弃。那么是不是
2021-08-15 22:13:23 522 1
原创 activiti工作流接口使用手册
1、工作流API2、API服务调用接口工作流使用注意事项:1、流程图采用activiti提供的设计器进行设计;2、流程图每个任务节点需要设置创建时的监听器,服务类为:*com.yabushan.activiti.tasklistener.GroupTaskListener*3、根据接口文档中每个接口的入参情况传入参数即可;4、流程图可自由设计,所有接口支持动态传参。...
2021-08-06 00:56:46 1171
原创 activiti——监听器
监听器是Activiti在BPMN2.0规范基础上扩展的宫嗯那个,是业务与流程的“非侵入性粘合剂”。监听器可以分未两类:执行监听器和任务监听器,和其他的Activiti扩展模型一样,监听器徐娅包含在BPMN2.0规范的<extensionElements>标签中。执行监听器执行监听器允许在执行流程过程中执行java代码(实现了监听器接口)或表达式。执行监听器可以捕获的事件如下:1、流程实例启动、结束;2、输出流捕获;3、活动启动、结束;4、路由开始、结束;5、
2021-08-01 13:25:32 1847
原创 activiti——边界与中间事件
中间事件提供的特殊功能可以用来处理流程执行过程中抛出、捕获的事件,具体包括边界事件、中间捕获事件、中间抛出事件。每种中间事件的图形都有一个共同特点:以双线圆形表示。边界事件边界事件是绑定在活动上的“捕获型”事件,会一直监听所有处于运行中活动的某种事件的触发,在捕获到事件之后中断活动,然后从边界事件类型的输出流继续执行。一旦触发边界事件,当前的活动就会被终端,然后按照边界事件之后的输出流执行。边界事件和所关联的活动有一个特殊的关系“附加”,而且一个活动只能绑定一个边界事件;每个边界事件类型都是
2021-08-01 13:06:54 1719
原创 activiti——子流程与调用活动
在企业中还有一些通用的业务流程,例如:付款流程作为公司业务运作的核心流程之一,在业务设计及架构设计上会保持通用,或者在业务架构中作为一个通用的模块,不同的业务根据财务流程的规范传入指定的参数就可以使用付款流程。调用活动的特点和子流程类似,但是子流程嵌入在主流程中,要保持通用需要把付款流程作为活动由主流程“调用”,如此调用活动即包含了子流程的特性又保持通用。对于子流程:只能且仅包含一个空启动事件;至少要有一个结束事件(每个流程都要“有始有终”);在子流程中顺序流不能直接设置输出流到子流程
2021-08-01 12:43:53 1770
原创 activiti——网关
网关用于控制流程走向,根据功能不同可以划分为以下4种网关:排他网关用来对流程中的决定进行建模,流程执行到该网关时,按照输出流的顺序逐个计算,当条件为true时,继续执行当前网关的输出流。如果多个线路的计算结果都为true,那么只会执行第一个值为true的网关,忽略其他表达式的值为true的网关。如果多个网关计算结果没有为true的值,则引擎会抛出异常。并行网关并行网关用来对并发的任务进行流程建模,它能把单条线路任务拆分(fork)成多个路径并行执行或将多条线路合并(join).并行网
2021-08-01 12:07:19 1364 1
原创 activiti——多实例
多实例允许业务流程中某一个任务甚至子流程可以重复执行多次,在实际应用中,一个申请由多人审批是多实例的典型应用场景。多个实例可以选择顺序执行,还可以选择并行执行多实例任务或子流程。多实例支持的任务类型如下:用户任务脚本任务服务任务(java service/web service)业务规则任务邮件任务手动任务接收任务子流程(嵌入式)子流程(调用活动)在BPMN2.0规范中规定了多实例的几个属性变量,可以通过executin.getVariable()获取变量:.
2021-08-01 11:45:52 2034
原创 activiti——任务
1、用户任务: 用户任务用来设置必须由人员完成的工作。 当流程执行到用户任务,会创建一个新任务, 并把这个新任务加入到分配人或群组的任务列表中。2、脚本任务: 脚本任务是一个自动节点。当流程到达脚本任务, 会执行对应的脚本。 脚本任务的流程可以访问的所有流程变量,都可以在脚本中使用。 也可以在脚本中设置流程变量,直接调用execution.setVariable("variableName", variableValue)。<script> def scrip...
2021-08-01 11:18:52 2196
原创 activiti——顺序流
顺序流时两个模型之间的连接者,可以把顺序流比作人体的动脉,每一条连接到不同的器官,在BPMN2.0规范中每个输出流连接到不同的活动、事件。如果一个元素在流程执行期间被访问,流程会沿着该元素所有输出顺序流继续执行。这意味着BPMN2.0默认行为是并行的:多个输出顺序流会创建多条独立、并行的执行路径。顺序流可以细分为两种:标准顺序流:默认流转条件顺序流:添加了条件表达式,只有满足条件才能通过顺序流到达目标活动activiti还对顺序流进行了扩展,允许开发人员在顺序流上提娜佳监..
2021-08-01 11:01:24 932
原创 activiti——结束事件
Activiti工作流始于开始任务,止于结束任务。结束事件标志着(子)流程的(分支的)结束。结束事件总是抛出(型)事件。这意味着当流程执行到达结束事件时,会抛出一个结果。结果的类型由事件内部的黑色图标描绘。在XML表示中,类型由子元素声明给出。流程终结又可以分为4种情况:空结束任务、错误结束任务、取消结束任务、终结任务,其中空结束任务是最常见的结束任务。结束任务的类型:1)空结束事件(none end event)2)错误结束事件(error end event)3)取消结束事件(ter
2021-08-01 10:45:42 4933
原创 工作流——启动事件(Start Event)
一、前言启动事件是Activiti活动的开始节点。现在有很多国产的工作流是省略了开始和结束这两个节点的。但是BPMBN 2.0标准是必须要有开始和结束节点的。启动事件表示流程的开始。定义了流程如何被启动的启动事件类型(当收到消息、特定的时是以一个小图标来形象表示事件的。在XML表示中,类型是由子元素的声明给出的。启动事件总是捕获型的:从概念上讲,该事件(任何时候) 会一直等待直到触发发生。二、启动事件的类型有哪些?(1)空启动事件(None Satrt Event)(2)定..
2021-08-01 09:56:26 2187
原创 工作流——流程设计器
一、activiti介绍Activity是由Alfresco软件在2010年5月17日发布的业务流程管理(BPM)框架,它是覆盖了业务流程管理、工作流、服务协作等领域的一个开源的、灵活的、易扩展的可执行流程语言框架。Activiti基于Apache许可的开源BPM平台,创始人Tom Baeyens是JBoss jBPM的项目架构师,它特色是提供了eclipse插件,开发人员可以通过插件直接绘画出业务流程图。BPMN2.0规范包含很多种模型。目前Activiti可以支持在大多数情况下常用的模型,并且在
2021-07-27 23:17:13 3322
原创 开篇:为什么要学习工作流?
一、工作流是什么?1、生活中到处都是活生生的“流”:在单位请假、从网上购物都可以看到工作流的影子。2、工作流最早起源于生产组织和办公自动化领域,它是针对平时工作中的业务流程活动而提出的一个概念,目的是根据将工作分解成定义良好的任务或角色,根据一定的原则和过程来实施这些任务并加以监控,从而达到提高效率、控制过程、提升客户服务、增强有效管理业务流程等目的。二、工作流的类型有哪些?1.流程工作流(Process Workflow)当一组任务具有可预测性和重复性时,就会发生流程工作流。也就是
2021-07-27 22:59:19 498
原创 南瓜树数据平台——共享数据API服务平台(后端的利器,前端的神器)
系统目的本文档是针对南瓜树数据管理平台的数据服务模块功能及使用说明。对第三方客户就如何使用数据平台开发API服务进行说明。本文档可帮助:后端开发人员快速开发数据接口服务; 不具备服务开发的前端人员也能开发自己的应用; 维护人员快速进行API服务的在线动态升级和维护 第三方公司快速实现业务接口。建设背景当前软件的开发流程耗时较长,从需求部门提出需求到需求上线需要一个较长的时间周期,当程序出现问题时,开发人员往往需要先定位问题,修复代码、发布程序版本;耗时长、影响业务开展。系统.
2021-06-14 12:01:17 4050
原创 低代码南瓜树数据平台产品说明书
前言作为一个开发人员,一直想做一款优秀的综合性低代码业务开发平台;参考了很多优秀的开源项目,于是有了这个产品。定位我对于南瓜树数据平台的定位是:兼顾大中小微企业,助力企业实现数字化转型;目前南瓜树数据平台具备的能力有:1、统一用户信息管理:承接上游人力资源管理系统的组织用户数据,扩展企业第三方组织信息管理,推动企业业务系统快速开发;2、人员子集信息管理:提供多维度的人员信息管理,助力企业甄别筛选符合特殊岗位的需求人才;3、集成工作流:提供在线设计能力,推动流程接口,开源工作流代
2021-04-25 18:26:40 6235 4
原创 java新集合
前言新的集合库考虑到了“容纳自己对象”的问题,并将其分割成两个明确的概念:1、集合(Collection):一组单独的元素,通常应用了某种规则。在这里,一个List(列表)必须按特定的顺序容纳元素,而一个Set(集)不可包含任何重复的元素。相反,“包”(Bag)的概念未在新的集合库中实现,因为“列表”已提供了类似的功能。2、映射(Map):一系列“键-值”对(这已在散列表身上得到了充分的体现)。从表面看,这似乎应该成为一个“键-值”对的“集合”,但假若试图按那种方式实现它,就会发现实现过程相当笨
2021-03-13 13:38:07 331
原创 数组与集合
数组 数组实际代表一个简单的线性序列,它使得元素的访问速度非常快,但我们却要为这种速度付出代价:创建一个数组对象时,它的大小是固定的,而且不可在那个数组对象的“存在时间”内发生改变。可创建特定大小的一个数组,然后假如用光了存储空间,就再创建一个新数组,将所有句柄从旧数组移到新数组。数组和第一类对象无论使用的数组属于什么类型,数组标识符实际都是指向真实对象的一个句柄。那些对象本身是在内存“堆”里创建的。堆对象既可“隐式”创建(即默认产生),亦可“显式”创建(即明确指定,用一个new表达式...
2021-03-13 10:54:16 294 1
原创 java的多形性(多态)与内部类
前言对于面向对象的程序设计语言,多型性是第三种最基本的特征(前两种是 数据抽象和继承)。“多形性”(Polymorphism)从另一个角度将接口从具体的实施细节中分离 出来,亦即实现了“是什么”与“怎样做”两个模块的分离。利用多形性的概念,代码的组织以及可读性均能获得改善。此外,还能创建“易于扩展”的程序。多形性是一种至关重要的技术,它允许程序员“将发生改变的东 西同没有发生改变的东西区分开”。覆盖与过载当子类声明了与基类相同名字的方法,而且使用了相同的签名时,就称派生类的成员覆.
2021-03-03 22:19:37 292 1
原创 java代码再生或者重复使用的机制
合成与继承1、在新类里简单地创建原有类的对象。我们把这 种方法叫作“合成”,因为新类由现有类的对象合并而成。我们只是简单地重复 利用代码的功能,而不是采用它的形式。2、创建一个新类,将其作为现有类的一个 “类型”。我们可以原样采取现有类的形式,并在其中加入新代码,同时不会对 现有的类产生影响。这种魔术般的行为叫作“继承”(Inheritance),涉及的大多 数工作都是由编译器完成的。对于合成与继承这两种方法,大多数语法和行为都是类似的。final关键字由于语境(应用环境)不.
2021-02-28 21:56:42 645
原创 java中对象的初始化与清除
前言“初始化”和“清除”是这些安全问题的其中两个。许多 C 程序的错误都是 由于程序员忘记初始化一个变量造成的。对于现成的库,若用户不知道如何初始 化库的一个组件,就往往会出现这一类的错误。清除是另一个特殊的问题,因为 用完一个元素后,由于不再关心,所以很容易把它忘记。这样一来,那个元素占 用的资源会一直保留下去,极易产生资源(主要是内存)用尽的后果。初始化用构建器自动初始化对于方法的创建,可将其想象成为自己写的每个类都调用一次 initialize()。在 Java 中,由于提供了名.
2021-02-28 15:15:57 224
原创 java中的流程控制
前言Java 使用了 C 的全部控制语句,所以假期您以前用 C 或 C++编程,其中大多 数都应是非常熟悉的。大多数程序化的编程语言都提供了某种形式的控制语句, 这在语言间通常是共通的。在 Java 里,涉及的关键字包括 if-else、while、 do-while、for 以及一个名为 switch 的选择语句。然而,Java 并不支持非常有 害的 goto(它仍是解决某些特殊问题的权宜之计)。仍然可以进行象 goto 那样 的跳转,但比典型的 goto 要局限多了。if-else i.
2021-02-28 13:55:26 66
原创 java中的运算符总结
前言就象任何有感知的生物一样,程序必须能操纵自己的世界,在执行过程中 作出判断与选择。在 Java 里,我们利用运算符操纵对象和数据,并用执行控制语句作出选择。Java 是建立在 C++基础上的,所以对C和C++程序员来说,对 Java 这方面的大 多数语句和运算符都应是非常熟悉的。当然,Java 也进行了自己的一些改进与 简化工作。算术运算符Java 的基本算术运算符与其他大多数程序设计语言是相同的。其中包括加号 (+)、减号(-)、除号(/)、乘号(*)以及模数(%,从整数除法中获.
2021-02-28 13:44:40 428 1
原创 怎么理解java中的“一切都是对象”?
前言无论 C++还是 Java 都属于杂合语言,尽管以 C++为基础,但 Java 是一种更纯粹的面向对象程序设计语言。本文我们将一起来探讨Java 程序的基本组件,深入体会“java程序内的一切皆对象”一、对象的创建过程创建句柄在java中,我们实际操作的不是对象,而是指向对象的一个句柄,例如:String s;创建的只是句柄,并不是对象;若此时向 s 发送一条消息,就会获得 一个错误(运行期)。这是由于 s 实际并未与任何东西连接;因此创建一个句柄时,记住无论如何...
2021-02-28 13:11:56 278
原创 java中的主类型
前言在Java中,有一系列类需特别对待;可将它们想象成“基本”、“主要”或者“主” (Primitive)类型,进行程序设计时要频繁用到它们。之所以要特别对待,是由于用 new 创建对象(特别是小的、简单的变量)并不是非常有效,因为 new 将 对象置于“堆”里。对于这些类型,Java 采纳了与 C 和 C++相同的方法。也就 是说,不是用 new 创建变量,而是创建一个并非句柄的“自动”变量。这个变 量容纳了具体的值,并置于堆栈中,能够更高效地存取。主类型基本类型 主类型..
2021-02-28 12:30:09 632
转载 Java 的类加载机制
01、字节码在聊 Java 类加载机制之前,需要先了解一下 Java 字节码,因为它和类加载机制息息相关。计算机只认识 0 和 1,所以任何语言编写的程序都需要编译成机器码才能被计算机理解,然后执行,Java 也不例外。Java 在诞生的时候喊出了一个非常牛逼的口号:“Write Once, Run Anywhere”,为了达成这个目的,Sun 公司发布了许多可以在不同平台(Windows、Linux)上运行的 Java 虚拟机(JVM)——负责载入和执行 Java 编译后的字节码。.
2021-02-28 12:10:36 443
原创 什么是面向对象程序设计方法
一、什么是面向对象程序设计?1、所有的东西都是对象;对象保存着数据,且可对它自身进行操作;2、可从要解决的问题上提出概念性的组件,然后再程序中将其表达为一个对象,(头、身体、手、腿组成一个人);3、程序是一大堆对象的组合,各个对象之间传递消息来共同完成一个功能;4、每个对象都有自己的存储空间,且可容纳其他对象;5、每个对象都有一种类型(type),即每个对象都是某个类(class)的一个实例;一个类最重要的特征就是“能将什么消息发给它”;6、同一类所有对象都能接收相同的消息二、面
2021-02-27 22:25:33 2741
原创 程序员为什么要写技术博客?
前言 前些天看到一篇文章【做为技术人员为什么要写博客】,深有感触。作为一名从业6年多的一线技术开发人员,笔者曾经也在各大博客网站上发表过文章,例如:开源中国、CSDN,掘金、ITEYE、简书 都有记录自己的一些心得笔记。笔记的内容主要有以下几个方面:java、linux、数据库:oracle、mysql等。写博客的好处 好记性不如烂笔头,随着年龄的增长,记忆力也大不如从前。有些技术细节点如果没有做好笔记,时间久了,需要把技术拿起来用的时候可能需要花费双倍的时间才...
2021-02-27 17:08:18 1011 2
原创 java链接oracle数据库的几种方式
1、url: jdbc:oracle:thin:@(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=10.12.111.12)(PORT=1521))(FAILOVER=on)(LOAD_BALANCE=on))(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=hai)))2、jdbc:oracle:thin:@(DESCRIPTION =(ADDRESS = (PROTOCOL = T.
2020-10-19 22:29:49 663
原创 JVM了解以下?JVM系列~内存区域与内存溢出异常
JVM存在的目的和意义是什么?为什么要学习JVM? JVM是Java Virtual Machine的缩写,是一种用于计算设备的规范,它是一个虚构出来的计算机,是通过在实际的计算机上仿真模拟各种计算机功能来实现的。引入Java语言虚拟机后,Java语言在不同平台上运行时不需要重新编译。Java语言使用Java虚拟机屏蔽了与具体平台相关的信息,使得Java语言编译程序只需生成在Java虚拟机上运行的目标代码(字节码),就可以在多种平台上不加修改地运行。本文着重分析JVM中运行...
2020-08-24 23:56:36 128
原创 java依旧很香~基础课程系列——2020应届生入职培训课程
本文是本人给公司2020年招聘的应届毕业生进行为期一天的java培训课程课件。主要目的是:让应届生对系统及系统权限、开发流程、开发注意事项有个基本的认识;便于后续进入项目组快速融入团队、快速上手开发01:J2EE基础开发与代码规约1、JDK的发展历程JDK从1991年发展至今,经历了快20余载;商业上目前用的最多的版本主要是:JDK6、JDK8。2020年3月已发布JDK14;对待新版本的态度还是处于观望中。2、CS与BS的区别...
2020-08-23 13:21:49 1029
转载 Linux安装MySQL5.7(转)
文章转自:https://blog.csdn.net/qq_37598011/article/details/93489404下载地址:https://dev.mysql.com/downloads/mysql/5.7.html#downloads解压tar -xvf mysql-5.7.26-linux-glibc2.12-x86_64.tar再移动并重命名一下mv mysql-5.7.26-linux-glibc2.12-x86_64 /usr/local/mysql...
2020-06-16 18:15:16 113
原创 结合实战经验谈谈企业如何用好数据中台之数据中台的定义
1、数据中台起源 2015 年阿里巴巴集团启动了中台战略,目标是要构建符合互联网大数据时代的,具有创新性、灵活性的“大中台,小前台”的机制。在2018年 3 月 15 日 ThoughtWorks 技术雷达峰会上,数据中台受到业界的广泛关注。2、数据中台的概念 数据中台的概念是最早由阿里巴巴首次提出,是为了应对像双十一这样的业务高峰、应对大规模数据的线性可扩展问题、应对复杂业务系统的解耦问题,而在技术、组织架构等方面采取的一些变革,其本质上还是一个平台。3、数据中台的定义 ...
2020-06-14 00:46:05 918
原创 广告运营公司的oa系统是什么样子?
最近接到几个朋友的需求,给他公司做一个OA系统,于是便拿起了看家本领怼成了如下系统功能需求和背景,发现这类公司的OA系统跟平常说接触的OA系统有点大不相同,微小企业由于人员少,所以比较注重实用,下面就一起来看看广告运营公司的OA系统长啥样吧,哈哈。1、背景随着业务的发展和客户量的增加,原先依靠人工和Excel进行管理的方式成本越来越高,且容易出错。为了提高效率和减低成本,故产生了该系统。2、目的2.1、系统的目的是减少人工成本,提高工作效率,根据不同角色的工作职责来有序的进行各自工作内容的分
2020-05-17 09:56:30 664
原创 二十四、mysql中数据删除的几个问题
目录1. 为什么简单删除表数据达不到表空间回收的效果?2. 表的数据delete了,但是表空间却没有被回收?3. 一条数据的删除流程?4. 如何正确回收表空间?重建表一个InnoDB表包含两部分,即:表结构定义和数据。再MySQL8.0版本以前,表结构是存在以.frm为后缀的文件里。而MySQL8.0版本,则已经允许把表结构定义放在系统数据表中了。1. 为什么简单...
2020-02-05 10:28:29 449
原创 二十三、mysql中kill不掉的sql语句的原因
在mysql中有两个kill命令:一个是kill query +线程id,表示终止这个线程中正在执行的语句;一个是kill connection +线程id,这里connection 可缺省,表示断开这个线程的连接,当然如果线程有语句正在执行,也是要先停止正在执行的语句的。收到kill 命令后,线程做什么?当对一个表做增删改查操作时,会在表上加MDL读锁;如果线程被kill的时候,...
2020-02-05 10:28:21 3402
原创 二十一、mysql中如何正确的切换主从暨主从同步如何跳过错误
目录1、基于位点的主备切换2、GTIDGTID实例:一主多重的切换正确性:1、基于位点的主备切换通常情况下,在切换任务的时候,要先主动跳过这些错误,有两种常用的方法:1、主动跳过一个事物,跳过的命令的写法是:set global sql_slave_skip_counter=1;start slave;因为切换过程中,可能会不止重复执行一个事物,所以需要在...
2020-02-04 08:39:58 659
原创 二十二、mysql中误删数据的几种方式及恢复方法
1、使用delete 语句删除数据行;2、使用drop table 或者truncate table语句误删除数据库;3、使用drop database 语句误删除数据库;4、使用rm 命令误删除整个mysql实例。恢复方案:1、数据定期备份;2、记录操作日志 ,使用日志回滚;...
2020-02-04 08:39:58 1252
原创 二十、mysql中如何判断一个库是否正常
目录如何判断一个数据库是否出问题?select 1判断查表判断更新判断内部统计在一主一备的双M架构里,主备切换只需要把客户端流量切换到备库;而在一主多从架构里,主备切换除了要把客户端流量切到备库外,还需要把从库连接到新主库上。主备切换有两种场景,一种是主动切换,一种是被动切换。而其中被动切换,往往是因为主库出问题了,由HA系统发起的。如何判断一个数据库是...
2020-02-04 08:39:52 1183
原创 十九、mysql中读写分离的一些问题
目录读写分离的主要目标就是分摊主库的压力:客户端直连和带proxy的读写分离架构 特点:主题:读写分离,处理主备延迟导致的读写分离问题;读写分离的主要目标就是分摊主库的压力:1、可以由客户端来选择连接后端数据库;2、在MySQL和客户端之间有一个中间代理层proxy,客户端只连接proxy,由proxy根据请求类型和上下文决定请求的分发路由。客户端直连和带prox...
2020-02-04 08:39:37 265
struts.hibernate.spring整合jar包大全
2014-09-26
jdbc驱动程序
2014-05-13
随机数发生器
2013-12-13
Java+SE+7+Documentation.chm
2013-11-18
学生成绩管理系统
2013-10-13
C语言学生成绩管理系统
2013-10-12
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人