精华内容
下载资源
问答
  • Hibernate总结SSH原理总结 Hibernate工作原理及为什么要用: 原理: hibernate,通过对jdbc进行封装,对 java类和 关系数据库进行mapping,实现了对关系数据库的面向对象方式的操作,改 ...HDU 5820 (可持久化...

    Hibernate总结

    SSH原理总结 Hibernate工作原理及为什么要用: 原理: hibernate,通过对jdbc进行封装,对 java类和 关系数据库进行mapping,实现了对关系数据库的面向对象方式的操作,改 ...

    HDU 5820 (可持久化线段树)

    Problem Lights (HDU 5820) 题目大意 在一个大小为50000*50000的矩形中,有n个路灯.(n<=500000) 询问是否每一对路灯之间存在一条道路,使得长度为|x1 ...

    Linux数据归档和解压缩tar&comma;cpio&comma;gzip&comma;bzip&comma;lzma&comma;zip命令使用

    转载:http://www.1987.name/659.html 数据压缩归档和备份是系统管理的日常工作,定期备份不可小视,归档和压缩对于系统管理员或是普通用户来说都经常用到的操作,有很多中压缩格式, ...

    P102、面试题14:调整数组顺序使奇数位于偶数前面

    题目:输入一个整数数组,实现一个函数来调整该数组中数字的属性怒,使得所有奇数位于数组的前半部分,所有偶数位于数组的后半部分. 思路:其实就是用快速排序法的第一轮排序,从左右夹逼,左边遇到偶数,停下来, ...

    HDU-3790 最短路径问题

    最短路径问题 Time Limit : 2000/1000ms (Java/Other)   Memory Limit : 32768/32768K (Java/Other) Total Submis ...

    Ubuntu16&period;04 部署配置GO语言开发环境 &amp&semi; 注意事项

    1. 安装GO 安装go语言包: $ curl -O https://storage.googleapis.com/golang/go1.10.1.linux-amd64.tar.gz   下载完成后 ...

    MVC 5 Scaffolder &plus; EntityFramework&plus;UnitOfWork Pattern 代码生成工具集成Visual Studio 2013

    MVC 5 Scaffolder + EntityFramework+UnitOfWork Pattern 代码生成工具 经过一个多星期的努力总算完成了单表,多表关联(一对多,多对一)的增删改查的代码 ...

    kali linux 下搭建git服务器

    参考:http://www.cnblogs.com/dee0912/p/5815267.html https://www.liaoxuefeng.com/wiki/001373951630592960 ...

    ROSETTA使用技巧随笔--蛋白蛋白对接

    先写简略版,以后再详细写. 1. 对输入结构进行预处理(refine) $> relax.default.linuxgccrelease -in:file:s input_files/from_ ...

    【Unity】11&period;7 布料

    分类:Unity.C#.VS2015 创建日期:2016-05-02 一.简介 Unity提供了两种布料组件:交互布料(Interactive Cloth).蒙皮布料(Skinned Cloth).为 ...

    展开全文
  • 第一次正式java web开发项目总结

    千次阅读 2016-04-13 12:05:03
    记得自己当初过一篇总结的,我想这些对于刚出校门没什么工作经验的程序员应该会有一些帮助,但是却怎么也无法在csdn博客列表中找到这片文章,后来无意中发现它竟然跑到了我的回收站中,我已忘记是因为什么原因使他...

    去年下半年到现在,因为公司人员流动,也有好几个新进的员工分给我来带领,也有刚从学校出来的,在和他们交流的过程中,不由的想起自己刚刚进入这行的一些感想。


    记得自己当初写过一篇总结的,我想这些对于刚出校门没什么工作经验的程序员应该会有一些帮助,但是却怎么也无法在csdn博客列表中找到这片文章。


    后来无意中发现它竟然跑到了我的回收站中,我已忘记是因为什么原因使他跑到了这里,但是我想恢复的时候又发现有点坑的是,csdn回收站的东西无法恢复,因此只好重新发表了。


    以下是当时的总结:

     

    从学校走出来,转眼间就过去三四个月了,在公司的这几个月来,终于在最近几个星期迎来了第一个正式的开发项目,确切的说,是项目迭代。


    截止到今天,这一轮迭代已能算是基本完成,虽然分到自己的任务并不是很多,甚至可以说非常少,但是从中得到的收获依旧是巨大的,这大概就是所谓的实践出真知吧!


    在培训学校学了四个月,感觉学了很多东西,但是一直迷迷糊糊的,连书本上的许多习题都不能独立搞定。每每看到一个小程序的代码的时候,总感觉非常的简单,但是当只是给自己一个需求让自己找思路的时候,却又总是感觉无从下手。


     而来到公司之后,或许是因为不一样的气氛的缘故,在不断的学习的过程中,当我再回过头去找一些以前没有做过的小习题时,居然很是惊讶的发现并不是之前看到的那么难,解决思路也都像是原本就有一样水到渠成。


    或许这就是积累的力量吧,坚持走下去,就会有很多事在不知不觉间发生了改变!


    在这一轮的迭代中,我只负责一个查询功能的实现,整体比较简单,只是对查询出的结果进行处理的过程看似有一点点复杂。因为是第一次独立的开发,所以在这个过程中犯了一大堆的错,思路变了又变,代码改了又改,也正是因为这样,让自己才获得了很大的收获。


    这个小小的功能,代码被我重写了好几遍。刚开始的时候,因为对mongodb数据库的完全陌生,所以只是简单的套用别人的查询语句得到一个自己看不太懂的结果,然后进行了一系列的变换,最终把结果变成了我所熟悉的字符串和list集合,再在这个基础上进行处理,最终得到我想要的结果。


    结果最终是被我弄出来了,很是兴奋,但是经过高手的检查之后,告诉我的却是这样的写法太不可取了,原本应该很简单的实现不该被弄的这么复杂。于是乎,在高手的指点下重新设计思路,完全摒弃了用字符串来处理的想法,于是几乎整个的代码就都成为了废品,只能重头再来!


     不断的查资料,不断的询问,不断的尝试,一两天的煎熬后,终于又成功使用第二种思路得到了我想要的结果。然后反反复复的检查了很多遍,再次确定似乎是很符合要求了之后,我便又找来了高手给我检查。


    满心期待,但结果还是不符合要求,原因是我们的web项目使用的是springmvc结构,而我的代码处理逻辑几乎是全部都在dao的实现类中一气呵成了!


    对于高手的点评,我是心服口服,因为对于mvc三层结构,以及controller、service、dao这三层,我在培训学校的时候一直都没有弄明白,一直到现在开发的时候我都分不清该怎么用。


    高手告诉我说,dao中只需和数据库打交道,得到了数据库中的结果就ok,然后主要的处理逻辑在service中,service中返回的结果要能够供别人调用,最后返回的结果的最终处理放在controller。


    于是,再次整理思路,把dao中的代码进行分解,然后适当的放到另外两层中,再进行数次的调试,最终又成功迎来了我想要的结果。


    我想,这下应该是可以了吧!我在本机上测试了无数次了都没有任何问题,应该算是完工了吧!但是当最后和前台一联调才发现完全不是那么回事,前台无论发送什么样的请求给我,我给他返回的竟然都是“message:没有数据;result:success”!


    这是一个多么令人沮丧的结果,尚差一步,但就是尚差一步!于是只能再次拼命的分析,绞尽脑汁的测试。


    但是结果却是不尽人意的,我怎么想,怎么测都觉得应该是没有问题,可是他结果偏偏就是有问题,于是我只能是不停的抓耳捞腮!


    这里是公司,不同于在学校,结果出不来不能就这样了,再没办法也要想办法!于是在最终感觉真的是黔驴技穷的时候,我便只能又找来了高手。


    结果,高手随便瞄了一眼就找到了问题所在,这让我长久的折腾更显得徒劳!原来问题只是我在接收前台参数的时候多加了一个@requestbody的注解,我以为接收参数就要这个注解,而实际上这个注解并不能这样乱用!


    在高手的再次指点下,我删除了那个注解,结果tomcat一启动,页面一刷新,想要的画面就那样神奇的出现在了界面上,这时候真是感觉颇为无语,说不出感觉的无语。


    和前台联调成功,这个任务算是基本完成了,这个过程中,初步清楚了mvc,初步懂了mongodb数据库,初步明白了公司项目开发的整个流程,也初步掌握了debug调试。


    综上等等,在这一次项目中,最大的收获应该主要有两个,第一个就是了解了公司正式项目的基本开发流程,使自己刚进公司时的忐忑心理变得略微踏实了一些。


    总结一下,大概的流程应该就是这样的:


    首先由需求人员向项目组提出需求,然后给项目组的所有人进行需求讲解,大家一起探讨需求中各项细节的可行性。


    当开发人员和需求人员一起确定需求没有问题的时候,如果有时间,可以让开发人员进行一次需求反讲,在需求和开发都确认没有问题的时候,需求便算是正式定下来了。


    需求确定以后,开发人员进行分工协调,然后订制开发设计概要和API,后端API中一般包括一些接口,需要的参数,还要和前端一起确定好访问路径,需要传递的参数以及返回给前端的数据格式。


    在设计api的过程中,前后端各自设计好以后,要召开专门的会议互相讲解,在讲解讨论的过程中达到相关意见的一致,此过程中测试人员也要参加。


    当api也都确定好以后,开发人员正式开始开发,测试人员也开始写测试用例。


    在开发人员写代码的过程中,要针对自己的代码进行单元测试,同时需要写好单元测试文档,在测试的过程中不断的修改和优化自己的代码,以保证逻辑更严谨,执行效率更高,代码更整洁。


    然后,在前后端各自都测试并完善好自己的功能点后,前后端人员一起进行联调,进一步确保功能没有问题。


    如果上一步骤也都没有问题以后,代码就打包部署到测试服务器交由测试人员来专业的测试,进一步寻找问题,以求最终的程序更加完善。


    这一次的开发基本步骤大概就是这样了,那么第二个收获就是学会了比较正确的开发态度。


    之前培训的时候,可能是因为环境不一样吧,那时候遇到一个习题或者是一个需求的时候,都会一开始想一阵子办法,当一段时间的努力还是无法解决问题的时候,通常就会忍不住去看看参考答案,然后在参考答案的帮助下,自以为找到了自己的思路,然后会看似成功的完成代码,而这样的后果是,其实并没有真的得到该有的收获。


    而这次真正的开发中,没有参考答案,也没有做不出来就不管了的说法,无论怎样都必须想办法得出想要的结果,正是因为这样,才使自己在开发中得到了与之前完全不同的收获和感悟。

     

    人生有许多的第一次,第一次总是让人记忆尤深!第一次之后还会有无数次的其他经历,许多事只有走下去才知道结果如何;许多事,只要不断的走下去,就会有意想不到的收获!实践出真知,行动得结果,空谈会误国,实干才兴邦!在理论中实践,在错误中成长,在失败中总结,在跌倒中爬起,坚持不断的走下去,学下去,这世间终究会有一片属于自己的天空!

    路就在脚下,坚持走下去,以编程书写人生,使代码产生力量,用软件展现价值,让程序推动梦想!!

    展开全文
  • 此三周已经过去了,怎么说呢...我只能算是完成了我自己的功能点~,毕竟一个中小项目六、七个人负责均下来的功能还是很少的,这个时候矛盾又来了,一边在庆幸自己的工作量少,一边又可惜自己没有知无不无不尽~,...

         此三周已经过去了,怎么说呢?较上次的三周我确实努力了不少,或功能实现上的喜悦,或许多技巧掌握的快感,或不在迷茫自己要做什么等等~,总之,这次的收获确实不少!但是我觉得这还不够!总感觉我从做项目中收获的比有的人少很多!我只能算是完成了我自己的功能点~,毕竟一个中小项目六、七个人负责均下来的功能还是很少的,这个时候矛盾又来了,一边在庆幸自己的工作量少,一边又可惜自己没有知无不写,写无不尽~,而且我发现自己的能力确实有待提高,我自问我确实没有深厚的底子,没有卖命学的决心。能力的话,想进理想的公司,确实相当欠缺~~但是不管怎么样我都要hole 住,既然当初选择了这条路。又不有一句话叫----追求卓越吗?大学里浪费的两年只有加倍努力才能补的上,唉!从小到现在,这种决心我下了很多次,知道现在在说,显然已经很苍白无力了,但!!不管怎么样努力吧!回头看看,不知不觉已经快要找工作了,以我现在的水平,说实在的还不足以成为一名真正的程序员!甚至说远远不够!尽快丰富自己,积累知识,就像早前我说过的,走了这一条路!就走好一点儿!!

    转载于:https://www.cnblogs.com/ycxy/archive/2011/12/16/2290698.html

    展开全文
  • 一、系统设计1.1 秒杀系统概述特点:1)时间短、瞬间访问量大2)读多少的场景。...常见的 Java Web 架构:常见的 Java Web 架构1.2 优化思路核心思想:尽量将请求拦截在系统上游;读多少的场景使...

    一、系统设计

    1.1 秒杀系统概述

    特点:

    1)时间短、瞬间访问量大

    2)读多写少的场景。(库存固定则写操作固定,但访问量肯定无限大)

    难点:

    1)库存只有一份,但大量用户在集中时间对该数据进行读写。

    2)秒杀系统之所以挂,是因为请求没有经过上游的过滤与拦截,直接压倒在下游的数据层。

    常见的 Java Web 架构:

    29dddd90395e

    常见的 Java Web 架构

    1.2 优化思路

    核心思想:尽量将请求拦截在系统上游;读多写少的场景使用缓存

    介绍一些常见的操作:

    1)浏览器端的拦截

    点击 “购买” 后,按钮置灰,禁止用户重复提交请求。

    通过 JS 代码,限制用户在 x 秒之内只能提交一次请求。

    2)站点层的拦截

    秒杀时间开始前,不暴露秒杀链接并对URL加密。这样部分用户无法使用程序代替人工进行秒杀。

    页面缓存。x 秒内到达的请求,直接返回页面缓存。

    3)服务层的拦截

    将秒杀商品的数据缓存到 Redis 等内存数据库。这样读请求就不需要达到最下层的数据库。

    将库存数据缓存到 Redis 中,加上 Redis 事务和 lua 脚本进行查询库存并减库存的操作,放到 Redis 完成。

    将写请求放入到写请求队列中,每次让有限的写请求达到数据层,当库存不足就直接让队列里的写请求直接返回 “已售完”

    4)其他

    启动多个应用实例,并使用 Nginx 进行负载均衡。

    分库分表,增加并发度。

    CDN 缓存

    参考

    二、系统实现

    框架:SSM

    业务:只关注秒杀这块,所以页面只有两个,分别是秒杀商品列表页和商品详情页

    特点:短时间内,高并发。

    2.1 业务流程

    29dddd90395e

    秒杀总体的业务流程

    2.2 系统架构

    当然这里并没有完全实现

    29dddd90395e

    系统部署架构图

    PS:

    图中有四处体现了对秒杀系统的优化,分别是Nginx的负载均衡、CDN缓存、Redis缓存以及分库分表

    利用 Nginx 负载均衡功能,将流量均匀分布到各个后端服务器。

    分库分表也是提高并发度。

    Redis 缓存的主要工作:原子变量(Atomicinteger)记录库存,先将减库存的操作记录在 Redis 中,而后异步记录到数据库。

    CDN 缓存的主要工作:

    缓存静态文件,如css,js

    将一些页面静态化后,缓存到CDN中。如用户会在秒杀开始前后,疯狂刷新商品页,故此很必要将商品页静态化,然后缓存到CDN中

    2.3 优化分析

    瓶颈分析

    从业务角度分析,高并发主要发生在秒杀商品详情页。进入秒杀商品详情页以及请求涉及到的操作有:

    获取网页资源,包括静态资源和动态资源

    获取服务器时间的请求

    获取秒杀地址的请求

    执行秒杀的请求

    1)加载网页资源

    优化思路:缓存

    2)获取服务器时间的请求

    分析:该请求的处理是在内存中 new 一个 Date 对象,访问一次内存的大约是 10ns,得出该请求的 QPS = 1亿/s,所以该请求不是瓶颈所在。

    3)获取秒杀地址的请求

    分析:该请求的处理主要任务是在内存中生成md5。

    4)执行秒杀的请求

    过程:insert增加记录、update减库存。两个步骤组成事务。

    分析:

    如果多个事务对同一商品执行秒杀,由于事务在提交或回滚前都会持有行锁,这就导致多个事务最终变成串行执行。

    服务器端和数据库端的分离,使得两个步骤的通信都存在网络延迟,故此增加行锁的持有时间。

    这两个操作结果都存储在 JVM 内存中,容易引起GC,也会增加行锁的持有时间。

    同时目前回滚的控制权在服务器端中,也会增加行锁的持有时间。

    另外,一条update其实QPS有4w/s,已经足够了。所以说并不是数据库操作不够优,而是由于涉及到网络延迟、事务、锁等缘故造成性能瓶颈。【参考并没实践,因为还没学压力测试】

    结论:

    瓶颈在于执行秒杀的请求。核心优化是减少行锁的持有时间

    还可以优化的点:

    对资源进行缓存,如 CDN、Redis 缓存

    前端控制按钮只能点击一次

    优化方案

    1)浏览器端采用的拦截

    a. 不提前暴露秒杀地址,以及增加 md5 不让用户提前猜到秒杀地址。避免使用机器秒杀

    b. 商品详情页静态化。

    2)Web层采用的拦截

    a. 页面静态化

    b. 将静态文件存放到 CDN。【本项目并没有实现】

    3)Service层的优化

    a. Redis 缓存商品信息,并设置超时时间来维护数据一致性

    b. Redis 缓存商品库存,并利用 Redis 事务和 lua 脚本完成写请求。【本项目并没有实现】

    4)数据库层的优化

    a. 使用 MySQL 的存储过程,减少服务器端和数据库端通信次数,从而降低网络延迟和GC时间。

    2.4 URL设计

    URL

    解释

    /list

    秒杀商品列表页

    /{seckillId}/detail

    秒杀商品详情页

    /{seckillId}/exposer

    获取商品的秒杀地址,主要工作内容是生成md5。

    /{seckillId}/{md5}/execution

    执行秒杀

    /time/now

    获取服务器时间

    PS:

    只有当处于秒杀时间内时,才会暴露秒杀地址。避免用户提前知道地址后,使用程序进行秒杀,对其他用户不公平,也防止恶意攻击

    md5的生成是不可逆的,所以能有效保护执行秒杀的地址,避免提前下单。

    2.5 效果展示

    29dddd90395e

    秒杀商品列表页

    29dddd90395e

    秒杀商品详情页-三种状态

    扩展阅读

    展开全文
  • web前端学习(总结/心得)

    千次阅读 2020-12-11 23:09:04
    前言:在学习的时候,即使有计划,有时候也会因为一些其他的干扰,陷入迷茫之中,暂断学习,所以总结一下学习web前端的一些表层的东西,帮助自己在学习过程中更加明确每一步该怎么走,也分析给大家。 博主学前端的...
  • web前端面试总结(2)

    2018-10-29 10:46:05
    10.27 面试总结与分享(清宇网络) 面试问题 自我介绍 nodejs静态服务器路由前端使用Nodejs来的么 整个项目实现的思路,都实现了哪些模块 使用nigix代理解决端口问题 对于地图的使用,有没有用过地图自定义的东西 ...
  • 最近准备找实习工作,努力想要写一份不错的简历吧,是真的不知道怎么写,所以就准备用一些时间写一个拿的出手的项目,也就是《前端博站》,还没有做完,只是进行一个阶段性的总结 项目中用到的...
  • 对于现在的web2.0,到底怎么书写css样式表,才算是最好的,最规范的!几乎没有什么明确的规定。在整个开发的项目中,只要出一套最适合于团队开发的最好了。当然了很多的css样式书写范是大同小异的。需要不断的去...
  • 二、分析以及思路1.Tomcat的配置文件2 web项目文件夹信息2.初始化项目配置定义映射类加载配置文件加载 server.xml解析项目内容解析web.xml解析web.xml类加载实例化请求处理三、总结四、代码地址 前言 提示:上篇...
  • 这里自定义目录标题设置淘宝...因为百度到的相关教程几乎也是作者摸索出来,只知道怎么做,却没具体说为什么这样,而且没有总结,还到处是坑。 我的方法就是自动化:自动选择安装electron和electron-builder的版本
  • 大厂面试干货:教你怎么写简历投大厂最有效背景写简历之前该做哪些准备如何组织项目经验掌握的技能怎么写荣誉、证书该怎么写总结 背景   上一篇大厂面试干货:大厂是如何看候选人简历的从面试官角度写面试官期望...
  • 我不知道你怎么想,有些开源项目的源码得挺不好的,尤其是性能方面。或许你会以为改一改他们就可以成为为自己所用,不过,改这些开源的项目还真不容易。玩玩还可以。 数字媒体 相册(Flickr,
  • Web开发是一门很考验程序员水平的技术,它需要维护Web框架代码、需要前端UI框架,也需要进行项目开发…林林总总几乎覆盖了前端后端。那么,作为新人又该怎么学习Web开发技术呢?资深的开发工程师是这样说的,下面和...
  • Web开发是一门很考验程序员水平的技术,它需要维护Web框架代码、需要前端UI框架,也需要进行项目开发…林林总总几乎覆盖了前端后端。那么,作为新人又该怎么学习Web开发技术呢?资深的开发工程师是这样说的,下面和...
  • 前几天参加了360搜索内推前端的面试,分享一下个人的经验。 一面 对前端的认识 作为前端都应该学会哪些方面的知识 如果让你设计一个像...最近写项目遇到的哪些难点分享一下 二面 说一下ES6的promise 除了promi...
  • 项目中我们总会遇到关于加载的...并不会说谁在前面就先加载谁,那么正常的顺序应该是怎么样的呢? 下面是标准的web.xml文件 下面是web.xml的加载过程 : web.xml的加载顺序是:&lt;context-param&gt;...
  • 大家在自己一个人使用vue进行开发时,往往将用到的路由配置都在脚手架的router/index.js中,但这样路由耦合度高,配置的可读性低,文件的导入往往杂乱无章,尤其是在多人协同开发的场景下,更不利于代码的统一和...
  • 先问项目项目写的技术问个遍 然后会根据你自己的技术栈,也就是你简历上有的技术,如果前面的表现比较满意的话,都会问一遍。 注意,尽量不要说着说着说到自己不擅长的领域,面试官会从这些领域再找问题问(比较...
  • 一、前言 这段时间了很多有关 html+css+js 的博文,这个是...也就是这些博文适合那些想快速入门web前端或者是你做了多年android或ios等经常碰到混合开发项目的朋友。 接下来谈谈怎么看这些博文 二、博文整理 1...
  • 我遇到了什么问题? 不久之前我重构了一个古老的项目总结了一些js方面的想法,不过对于一...由于我重构的是一个react-native项目,所以我们先来说说在react-native上是怎么写样式的吧,和传统的web不一样的是,在...
  • 我遇到了什么问题? 不久之前我重构了一个古老的项目总结了一些js方面的想法,不过对于一...由于我重构的是一个react-native项目,所以我们先来说说在react-native上是怎么写样式的吧,和传统的web不一样的是,在...
  • 几个月之前很有幸的参加了该系统的一期结尾和二期工程,先说下项目的背景: 为东北一国企从传统人工客服转向信息化系统的工程。承建给某一知名高校软件学院,典型的高校工程。这里并不是说高校工程就是豆腐渣工程,...
  • gweb总结之开篇

    2018-05-08 21:25:15
    也不知道怎么称呼更为合适,因此主要目的在于总结相关知识。其中用到了的第三方的包,可以在项目的vendor文件夹里查阅。我也希望做成一个web框架,一边总结一边朝着这个方向迈进吧。 项目背景 最开始我一直都在用...
  • 下面总结一下使用Graphics2D图片的方法。简单说,就是要在下面的票据模板png图片上打印上数字,生成一个真的票据。模板是这个样子的:打上字之后是这个样子的:下面贴一下代码。生成工程文件,添加必要的依赖。...
  • 韩鱼总结

    2015-08-23 18:33:46
    但有一个非常大的问题是,这个项目像是一个不怎么懂android的人的,几个切换页面的代码都在了一个文件中,非常非常的乱,并且Bug非常多。*1.专业很重要,术业有专攻,一个以前Java Web的如果不潜下心来学习一...
  • Unity Webgl 问题总结

    千次阅读 热门讨论 2020-06-16 15:19:39
    而这些问题还不怎么好解决,在网上搜索发现解决和提问的问题少之又少,还好项目时间充足,才得以完成,最近不怎么忙,闲来把总结写了。 1.webgl不显示字体 开始导出来发现一些字不显示,还以为分辨率压缩Text文本...
  • 这标题实在有点拗口,不知道怎么写好,但看了标题也就明白文本的内容。最近几天在折腾这些玩意儿,所以写写总结。除了环境搭建,本文还是一篇入门级的上手教程。 去下载一些东西 JDK安装 Tomcat安装 Tomcat的...

空空如也

空空如也

1 2 3 4 5 ... 8
收藏数 144
精华内容 57
关键字:

web项目总结怎么写