自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(131)
  • 资源 (27)
  • 收藏
  • 关注

原创 使用redis实现延时消息发送功能

redis本身也有发布订阅的模式,但是如果想要实现例如rocketmq或者rabbitmq的延时任务功能要怎么做呢,目前比较流行的做法有两种,一种是使用sortedset数据模型,把超时时间设置为score,然后系统启动一个定时任务定时去检查score超时的key然后把key取出来,再进行下一阶段的任务;第二种方法就是利用redis本身的通知机制,当key到期的时候会进行通知,通过捕获通知的信息来实现延时通知的效果。本文使用第二种方式,并且通过注解和反射使得整体功能更具有扩展性和适用性。

2023-11-03 16:25:58 619

原创 手写可持久化的纯JDK缓存

近期笔者搞了一个极简springboot项目,不依赖mysql,redis,数据库用H2,Cache用Caffeine,其他缓存就自己写了一个可持久化的工具。开源的代码如下: https://github.com/EricLoveMia/simpleBoot 本篇文章主要讲述可持久化的缓存工具。

2019-08-14 11:27:40 2012

原创 整理收集的一些常用java工具类(http、加解密、编号生成、二维码、字符串、图片、JDBC...)

小弟最近开了一个新的项目,主要是总结各个项目中用到的工具类,目前放到github中,内容持续补充,各位大神可以多题建议,争取做到全网最全的工具类项目 主要包括:订单编号生成工具类、http及https请求工具类、格式化数字工具类、加解密工具类、布隆过滤器、redis工具类,截取部分工具类如下: IPUtilsimport or...

2019-08-01 15:42:21 2297 1

原创 RocketMq源码解析二:NameService篇(启动流程)

首先来看一章总体的技术架构图消息中间件的设计思路一般是基于主题订阅发布的机制,消息生产者(Producer)发送某一个主题到消息服务器,消息服务器负责将消息持久化存储,消息消费者(Consumer)订阅该兴趣的主题,消息服务器根据订阅信息(路由信息)将消息推送到消费者(Push模式)或者消费者主动向消息服务器拉去(Pu模式),从而实现消息生产者与消息消费者解耦。为了避免消息服务器的单点故障导致的整个系统瘫痪,通常会部署多台消息服务器共同承担消息的存储。那消息生产者如何知道消息要发送到哪台消息服务器呢?

2024-05-21 15:49:33 119

原创 RocketMq源码解析一:源码结构介绍

从本章开始我们对Rocketmq的源码进行解析。使用版本是4.9.8。

2024-05-21 15:48:42 6

原创 面试集中营—Linux篇

语法:more [-dlfpcsu] [-num] [+/pattern] [+linenum] [fileNames..]more命令中内置了若干快捷键,常用的有H(获得帮助信息),Enter(向下翻滚一行),空格(向下滚动一屏),ps查看进程信息并通过less分页显示: ps -ef |less。cat是由第一行到最后一行连续显示在屏幕上,一次显示整个文件。ps -aux | grep * : 过滤查询某些进程;打包:tar -zxvf 文件名。less 文件名 : #cat 文件名 : #

2024-05-14 15:32:50 856

原创 面试集中营—rocketmq架构篇

Apache RocketMQ 是一款低延迟、高并发、高可用、高可靠的分布式消息中间件。消息队列 RocketMQ 可为分布式应用系统提供异步解耦和削峰填谷的能力,同时也具备互联网应用所需的海量消息堆积、高吞吐、可靠重试等特性。Apache RocketMQ 自诞生以来,因其架构简单、业务功能丰富、具备极强可扩展性等特点被众多企业开发者以及云厂商广泛采用。

2024-05-14 14:50:42 971

原创 面试集中营—Seata分布式事务

在计算机系统中,更多的是通过关系型数据库来控制事务,这是利用数据库本身的事务特性来实现的, 因此叫数据库事务,由于应用主要靠关系数据库来控制事务,而数据库通常和应用在同一个服务器,所以基于关系型数据库的事务又被称为本地事务。数据库事务的四大特性:ACID:原子性,构成事务的所有操作,要么都执行完成,要么全部不执行,不可能出现部分成功部分失败的情况。:一致性,在事务执行前后,数据库的一致性约束没有被破坏。比如:张三向李四转100 元,转账前和转账后的数据是正确状态这叫一致性,如果出现张三转出100。

2024-05-12 22:29:38 776

原创 面试集中营—JVM篇

线程独占:栈,本地方法栈,程序计数器;线程共享:堆,方法区虚拟机栈:线程私有的,线程执行方法是会创建一个栈阵,用来存储局部变量表,操作栈,动态链接,方法出口等信息.调用方法时执行入栈,方法返回式执行出栈;本地方法栈:与虚拟机栈类似,也是用来保存执行方法的信息.执行Java方法是使用栈,执行Native方法时使用本地方法栈;程序计数器:保存着当前线程执行的字节码位置,每个线程工作时都有独立的计数器,只为执行Java方法服务,执行Native方法时,程序计数器为空;

2024-05-07 16:10:04 775

原创 面试集中营—Redis面试题

Redis是基于非阻塞的IO复用模型,内部使用文件事件处理器(file event handler),这个文件事件处理器是单线程的,所以Redis才叫做单线程的模型,它采用IO多路复用机制同时监听多个socket,根据socket上的事件来选择对应的事件处理器进行处理。文件事件处理器的结构包括四个部分1、多个socket;2、IO多路复用程序3、文件事件分排器4、事件处理器(连接应答处理器、命令请求处理器、命令回复处理器)多个 socket。

2024-05-07 14:19:59 1103

原创 面试集中营—Spring篇

Spring框架的好处Spring框架的好处1、轻量:spring是轻量的,基本的版本大约2MB;2、IOC:控制反转,Spring的IOC机制使得对象之间的依赖不再需要我们自己来控制了,而是由容易来控制,一个字:爽;3、AOP:切面编程,Spring提供的AOP技术可以把应用逻辑和系统服务分来,编码更灵活,更方便;4、MVC框架:如果使用过Struts2的同学,使用springmvc就会觉得非常的舒适,spring提供的mvc框架是一个非常优秀的Web框架;

2024-05-06 16:34:12 810

原创 面试集中营—Redis架构篇

1、redis6.0版本之前的单线程,是指网络请求I/O与数据的读写是由一个线程完成的;2、redis6.0版本升级成了多线程,指的是在网络请求I/O阶段应用的多线程技术;而键值对的读写还是由单线程完成的。所以redis多线程的模型依然是线程安全的。

2024-05-06 14:11:01 1086 2

原创 面试集中营—ElasticSearch架构篇

1、支持多种数据类型。它可以处理非结构化、数值和地理信息等多种类型的数据;2、简单的RESTful API。ES提供了一个简单易用的RESTful API,使得它可以从任何编程语言中调用,降低了学习的曲线。3、近实时搜索。ES每隔1秒将数据存储至系统缓存中,使用倒排索引提高检索效率,使得搜索数据变得快速且高效。4、支持相关性搜索。它可以根据条件对搜索结果进行打分,提供了基于文档的全文检索能力。5、天然分布式存储。ES是分布式的,使用分片支持处理PB级的数据量,易于扩展,可部署在数百台服务器的集群中。

2024-04-26 11:21:23 1120 5

原创 面试集中营—mysql架构相关

了解一个中间件一定要从架构开始,上来就背八股文那就没意思了。从下图可以看到Mysql的包括网络连接、服务、数据存储和系统文件(日志)四大部分。数据连接:客户端连接器(Client Connectors):提供与MySQL服务器建立的支持;服务:又包括了sql接口,sql解析器,查询优化器,缓存等模块,主要是把sql进行解析和处理;数据存储:主要是存储引擎,常用的就是MyISAM和InnoDB;

2024-04-23 10:34:14 1013

原创 面试集中营—场景面试题A

第一步我们要首先确定是什么导致的消息积压,基本上三个原因线上消息积压第一步先看日志,是否在消费端出现了系统异常,系统异常有可能是磁盘满了,挂载盘故障了,网络不稳定或者有黑客入侵植入了其他程序侵占了系统资源等等。系统异常排除,就通过日志查看是否存在业务异常,是否有大量的报错信息,如果存在那么应该是代码的问题,此时就要快速修复问题,然后上线。如果不是代码的问题,那么就要考虑当前消费线程的执行时间是否过长,每次消费的时间太长也会造成消息的积压,通过各种工具可以检测到消费的时长,如果很长那么也需要优化代码。

2024-04-23 10:33:47 931

原创 面试集中营—AQS哪些事儿之ReentrantLock

AQS—AbstractQueuedSynchronizer是JDK工具包中的一个抽象类。在这个抽象类中,有几个属性和一个双向队列(FIFO)。是JUC并发包下的一个基类,那么我们熟知的ReentrantLock、CountDownLatch、信号量等等都是基于这个基类来实现的。

2024-04-22 15:08:23 1046

原创 面试集中营—AQS哪些事儿之CountDownLatch

AQS既可以用来实现互斥锁也可以用来实现共享锁,互斥锁确实可以用boolean来定义state的类型,但是共享锁需要多个线程持有一个锁资源,那么boolean就不适合了,state定义成int类型可以表示线程占用的数量。

2024-04-22 15:07:17 543

原创 面试题集中营—GC日志简析及频繁GC的调优

有两种方式查看GC日志,一种是动态命令行查看第二种就是在JVM参数中增加打印的参数,如下:-XX:+PrintGCDetails -XX:+PrintGCTimeStamps 表示打印每次GC的日志以及GC发生的时间-Xloggc:gc.log 可以把gc日志写入文件中。

2024-04-18 11:25:49 1065

原创 面试题集中营—分布式共识算法

简单来说共识算法就是投票,主节点或者说处理客户端请求的节点由集群中所有的服务器投票得出(更准确的说有投票权的服务器投票得出)。这样就有一个保证,如果集群中有半数以上的服务器是可用的,那么我的服务就可用。我们又会将节点分成数据节点和管理节点,由管理节点来统一管理数据节点。现在服务节点高可用了,但是管理节点呢,又出现单点问题了,怎么办,好办,管理节点也做高可用,可是难道要给管理节点再增加管理管理节点吗?为了服务的高可用性,我们一般都会多引入几个副节点当备份,当服务节点挂了,就把其中一个副节点升级为主节点。

2024-04-18 09:35:15 603

原创 从零开始手写mmo游戏从框架到爆炸(二十七)— 英雄属性展示及穿戴装备-1

本章我们把命令行客户端与后台串起来,并完成穿戴装备的功能。

2024-02-28 13:59:01 634

原创 从零开始手写mmo游戏从框架到爆炸(二十六)— 装备、金币、经验的掉落与获取二

上一章我们完成了装备金币和经验掉落的计算,这一章我们来完成装备、金币与经验的获取。这里我们先改造英雄封装 - HeroWrapper。改造BattleEngine中获取经验、金币和物品的方法。分支:step-13。

2024-02-28 10:41:27 240

原创 从零开始手写mmo游戏从框架到爆炸(二十五)— 装备、金币、经验的掉落与获取一

装备已经可以通过模板生成出来了,但是正式使用过程中,应该是根据野怪的等级、品质、还有地图等级等等来随机获得装备。掉落装备的同时也应该同时掉落金币。金币的作用就不用多说了。

2024-02-27 09:19:24 505

原创 从零开始手写mmo游戏从框架到爆炸(二十四)— 装备系统二

大概解释一下就是根据野怪的等级找到可获得的装备模板列表,再根据品质去获得属性的浮动,品质越高浮动越小,这样品质高的武器将有机会获得更高的属性加成。分支:step-12。

2024-02-27 09:19:02 931

原创 从零开始手写mmo游戏从框架到爆炸(二十三)— 装备系统一

下一步,就是要考虑经验、金币、和装备掉落的问题。经验金币都好说,装备系统是目前需要考虑的问题。为了简化我们把装备分成武器、胸甲两个部位,后期可以慢慢扩展。此时我们还是需要装备模板。这个功能和之前的野怪模板、地图模板差不多。

2024-02-26 15:32:15 920

原创 从零开始手写mmo游戏从框架到爆炸(二十二)— 战斗系统三

其中大部分上一章已经基本讲过了,大家对着gitee上的分支源码来看即可,我们重点关注地图已经搜寻野怪的代码。地图中存储了野怪的等级已经出现的概率。)中,客户端已经可以创建英雄并且进入游戏主界面了,下一步,我们需要选择地图,并且和地图中的野怪来一张遭遇战。首先我们把上一章中的test路径下的demo移动到正式路径下并进行修改。我们把战斗系统demo应用到实际的项目中来。这个接口就一个方法,寻找野怪。选择地图:MenuHandler。客户端的相关handler。地图:TownMap。分支:step-12。

2024-02-26 15:31:41 411

原创 从零开始手写mmo游戏从框架到爆炸(二十一)— 战斗系统二

上一章我们说过,比如速度是1000的时候是每隔2秒钟攻击一次,但是服务器不能真的等两秒再计算攻击的结果,那么这个战斗的时长将会超过几分钟,用户也可能等这么久。首先Action接口中增加一个interval()的方法,用于获取时间间隔,这个时间间隔是预计攻击时间距离战斗开始时间的间隔,例如计算出来的攻击间隔是500,那么每次计算的结果就是500,1000,1500,2000...以此类推。第一个就是速度和出手间隔的换算,我们使用一个比较简单的公式,就是。那么根据这个方法我们来尝试改造战斗引擎。

2024-02-22 09:26:02 1026

原创 从零开始手写mmo游戏从框架到爆炸(二十)— 战斗系统一

我们现在设计并尝试开发战斗系统。战斗系统我们先设定几个规则 1、多人对多人:英雄可以携带宝宝,面对的野怪也可以是成群的,故要设计成多人对多人的战斗引擎; 2、速度快的先出手:这点应该没有异议,根据速度来判定出手间隔,但是这里要有一个数据转换的问题,比如并不是速度100的就比速度50的出手速度快一倍,应该有一个计算公式来根据英雄的速度属性计算出手间隔。

2024-02-22 09:25:22 558

原创 从零开始手写mmo游戏从框架到爆炸(十九)— 用户数据封装与存储

首先一个用户应该会创建多个角色,故而先创建一个用户游戏封装类UserGameWrapper,每个角色也有一个封装类HeroWrapper。当一个用户登录或者注册成功的时候,要把其game数据查询并放到缓存中。用户在选择了职业之后, 后台接收需要创建用户的数据,这里我们要先把用户在后台的数据存储结构定义出来。客户端选择创建新英雄后,后端要生成英雄并保存到全局缓存中。客户端的LoginHandler的修改。LoginHandler修改。分支:step-11。

2024-02-21 09:37:40 322

原创 从零开始手写mmo游戏从框架到爆炸(十八)— 职业选择

本章我们在登录或者注册成功以后,让用户选择职业。选择好职业后再进入菜单。ClientMenuTag中增加新的tag在登录或者注册成功之后,返回可选职业列表已经和已经创建的英雄列表。目前暂时没有已创建英雄也没有存档的能力,故先返回可选职业列表,职业列表我们已经在前文【】实现了。

2024-02-21 09:37:13 481

原创 从零开始手写mmo游戏从框架到爆炸(十七)— 完善后端报错与客户端显示

从代码中可以看到,我们先是统一了返回的参数,同时对入参进行了解析,如果指定了转发的topic与tag就使用客户端指定的,如果没有指定就使用默认的。这里封装的还是有点粗糙但是味道是有了。这里其实就是把回调的topic和tag写入进去。这里最好强制所有的请求体都是对象而不是基础类型。我们在前后端交互的请求体的父类中再增加三个字段,分别是失败跳转topic,失败跳转tag,失败原因。修改所有的handler返回值都是 StringMessage。其他的代码就不贴出来了,大家可以自行去对应的tag中查看。

2024-02-20 09:09:20 177

原创 从零开始手写mmo游戏从框架到爆炸(十六)— 客户端指定回调路由与登录

在这之前,我们还要解决一个问题,就是服务端往客户端发消息的路由问题,这个路由其实应该由客户端来指定,因为客户端在不同的场景中可能会调用同一个服务端路由,比如查询英雄状态,装备状态等等。所以应该由客户端来指定回调地址比较友好。由于这个字段并不是必须的,我们可以把回调的topic和tag放到一个基类中。我们这次来把注册、登录、选择英雄,进入主页-选择地图的功能完善。补充登录相关的请求体以及执行handler。客户端增加登录的处理:LoginHandler。分支:step-09。

2024-02-20 09:09:04 394

原创 从零开始手写mmo游戏从框架到爆炸(十五)— 命令行客户端改造

之前的客户端就是简单的nettyclient,但是现在客户端也要解析topic和tag,所以我们根据server来改造客户端。剩余的改动这里就不一一赘述了,大家可以根据代码来看下调整的地方。到现在,我们切实需要一个客户端来完整的进行英雄选择,选择地图,打怪等等功能。修改command模块的结构,把tag根据不同的topic拆分到不同的类中,方便维护。首先再common模块中增加打印颜色的工具类:ConsoleColors。客户端的监听类- NetworkClientListener。分支:step-09。

2024-02-19 10:08:56 587

原创 从零开始手写mmo游戏从框架到爆炸(十四)— 英雄和野怪

之前都是模板的创建,现在我们来创建英雄和野怪。

2024-02-19 09:40:57 623

原创 从零开始手写mmo游戏从框架到爆炸(十三)— 地图与野怪模板

首先祝大家龙年大吉,大吉大利,财源滚滚,事事如意!角色有了,那么基本的功能应该包括选择地图,打怪,掉落装备,升级等等,我们一一来完成。首先我们设计野怪和地图。

2024-02-18 10:16:26 525

原创 从零开始手写mmo游戏从框架到爆炸(十二)— 角色设定

角色模板是英雄和野怪通用的/*** @description: 角色模版**/// 力量 影响物理输出 物理技能输出// 护甲值 影响物理防御和法术防御// 体质 影响生命值 一点体质增加10点生命值// 魔力 影响法术输出 法术技能输出// 技巧 影响闪避率、暴击率// 攻击速度// 每升一级力量增加值// 每升一级护甲增加值// 每升一级生命力增加值// 每升一级魔法增加值// 每升一级技巧增加值// 每升一级速度增加值// 转职前的最高级别。

2024-02-18 09:28:26 492

原创 从零开始手写mmo游戏从框架到爆炸(十一)— 注册与登录

从这一章开始,我们进入业务的部分,从注册登录开始。

2024-02-07 09:54:10 527

原创 从零开始手写mmo游戏从框架到爆炸(十)— 集成springboot-jpa与用户表

集成springboot-jpa,不用mybatis框架一个是方便对接不同的数据源。第二个目前规划的游戏内容可能对数据库的依赖不是很大,jpa应该肯定能满足要求了。我们先创建一个用户表方便后续注册和登录的功能开发。分支:step-07。

2024-02-07 09:13:05 614

原创 从零开始手写mmo游戏从框架到爆炸(九)— 消息路由最终实现

我们已经在HandlerFactory中注册了所有的handler,此时只需要把投递过来的消息根据topic和tag找到对应的handler去执行就可以了,但是这里还有一个新的问题,就是投递过来的消息body都是string,但是我们很多时候传递过来的应该是对象的json字符串,所以我们要考虑反序列化的问题。同时为了尽可能的使用服务器的资源,处理的时候应该放到线程池中去处理,所以还需要增加一个线程池。改造NetworkListener。改造HelloHandler。分支:step-06。

2024-02-06 16:20:55 195

原创 从零开始手写mmo游戏从框架到爆炸(零)—— 导航

从今天开始我们尝试从零开始写一个mmo的游戏。主要技术还是netty。参考了网上很多的大神的框架,本来希望基于ioGame或者vert.x等来直接写功能的,觉得从零开始更有意义,而且咱们也不需要太NB的底层功能,够用就行。

2024-02-06 15:47:55 524

原创 从零开始手写mmo游戏从框架到爆炸(八)— byte数组传输

在这种场景下,只需要把这个解码器加到 pipeline 中,Netty 会使用换行分隔符,把底层帧分割成一个一个完整的应用层数据包,发送到下一站。适用场景:每个上层数据包的长度,都是固定的,比如 100。在这种场景下,只需要把这个解码器加到 pipeline 中,Netty 会把底层帧,拆分成一个个长度为 100 的数据包 (ByteBuf),发送到下一个 channelHandler入站处理器。这是一种基于灵活长度的解码器。我们之前使用的是自定义分隔符帧解码器,现在我们改用自定义长度帧解码器。

2024-02-06 15:16:27 1259

zipkin-server-3.3.0-exec.jar

zipkin-server-3.3.0-exec.jar

2024-05-15

zipkin-server-2.24.4-exec.jar

zipkin-server-2.24.4-exec.jar

2024-05-15

新员工培训材料-天宫paas分布式服务架构演进及k8s基础培训.pdf

新员工培训材料-天宫paas分布式服务架构演进及k8s基础培训

2022-12-13

2021年中国APaaS应用及选型研究报告

2021年中国APaaS应用及选型研究报告

2022-12-13

Http工具类,一个http的java工具类

Http工具类

2019-02-25

PPT素材库时间轴

PPT素材库时间轴

2018-08-31

PPT时间轴模板大全,PPT时间轴

PPT时间轴模板大全

2018-08-31

PPT模板素材-时间轴汇总大全

PPT模板素材-时间轴汇总大全

2018-08-31

cudnn-9.0-linux-x64-v7.2.1.38.tgz

cudnn-9.0-linux-x64

2018-08-31

重构-改善既有代码的设计》电子书高清版+源码

重构-改善既有代码的设计》电子书高清版+源码 重构-改善既有代码的设计》电子书高清版+源码 重构-改善既有代码的设计》电子书高清版+源码

2018-01-12

sshshell.zip

sshshell ssh shell 服务器 远程连接 FTP for mac ssh shell 服务器 远程连接

2018-01-02

FileZilla_3.29.0_macosx-x86.dmg

FileZilla_3.29.0_macosx-x86.dmg SSH 远程连接服务器工具

2018-01-02

rubygems-2.6.13

rubygems-2.6.13rubygems-2.6.13rubygems-2.6.13rubygems-2.6.13rubygems-2.6.13rubygems-2.6.13rubygems-2.6.13rubygems-2.6.13rubygems-2.6.13rubygems-2.6.13rubygems-2.6.13rubygems-2.6.13rubygems-2.6.13rubygems-2.6.13rubygems-2.6.13rubygems-2.6.13rubygems-2.6.13rubygems-2.6.13rubygems-2.6.13rubygems-2.6.13rubygems-2.6.13rubygems-2.6.13rubygems-2.6.13rubygems-2.6.13rubygems-2.6.13rubygems-2.6.13

2017-11-03

genymotion-2.10.0.exe

genymotion-2.10.0.exe

2017-08-16

IBM-ECM解决方案介绍

IBM-ECM解决方案介绍IBM-ECM解决方案介绍IBM-ECM解决方案介绍

2016-12-06

Ext 3.0 中文帮助文档

Ext 3.0 中文帮助文档

2016-12-06

Java Web 投票系统

Java Web项目开发案例精粹02投票系统源码Java Web项目开发案例精粹02投票系统源码Java Web项目开发案例精粹02投票系统源码Java Web项目开发案例精粹02投票系统源码Java Web项目开发案例精粹02投票系统源码

2016-12-06

PI-API Installation Instructions

PI API 安装手册

2016-07-20

IBM-知识管理白皮书

IBM_知识管理白皮书

2016-04-07

JavaScript手册

JavaScript手册

2015-07-17

HTML+CSS+JavaScript帮助文档

HTML+CSS+JavaScript帮助文档

2015-07-17

SharePoint2007安装及使用教程(零基础)

SharePoint2007安装及使用教程(零基础)

2011-07-29

C语言写的员工管理系统

员工管理系统,这是一个员工管理系统,这是一个员工管理系统这是一个员工管理系统这是一个员工管理系统

2009-11-27

最短路径算法

计算各点到原点的最短距离

2008-06-25

C语言贪吃蛇

贪吃蛇游戏啊贪吃蛇用C的

2008-06-25

火车订票系统

添加,预订,更新,保存等

2008-06-24

C编的各种排序大全

插入排序,希尔排序,冒泡排序,快速排序,简单排序,堆排序

2008-06-24

C++编的计算器

计算器而已,没有什么

2008-06-24

简单计算器

c语言编得计算器,有需要的可以拿去用

2008-06-24

简单计算器

c语言编的计算器,大家有需要可以拿去用

2008-06-24

JAVA编的聊天器

自己搞得大家随便看看

2008-06-23

空空如也

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

TA关注的人

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