精华内容
下载资源
问答
  • 自己动手写CPU

    2018-06-21 14:07:52
    自己动手写CPU文字版 自己动手写CPU文字版 自己动手写CPU文字版 自己动手写CPU文字版
  • 自己动手写编译器.zip

    2021-03-20 23:33:58
    自己动手写编译器
  • 自己动手写网络爬虫自己动手写网络爬虫自己动手写网络爬虫
  • 自己动手实现Lua.zip

    2020-04-09 15:40:49
    自己动手实现Lua:虚拟机、编译器和标准库自己动手实现Lua:虚拟机、编译器和标准库自己动手实现Lua:虚拟机、编译器和标准库自己动手实现Lua:虚拟机、编译器和标准库
  • 自己动手做-源码

    2021-02-12 06:25:23
    自己动手
  • 自己动手做操作系统 自己动手做操作系统 自己动手做操作系统 自己动手做操作系统 自己动手做操作系统
  • 自己动手实现Lua:虚拟机、编译器和标准库 (自己动手系列)自己动手实现Lua:虚拟机、编译器和标准库 (自己动手系列).pdf自己动手实现Lua:虚拟机、编译器和标准库 (自己动手系列).pdf自己动手实现Lua:虚拟机、...
  • 自己动手DIY.zip

    2021-09-03 16:59:02
    自己动手DIY.zip
  • 自己动手写操作系统

    2019-02-24 10:44:18
    想要自己学习写操作系统的朋友们可以过来参考,自己动手写操作系统
  • 自己动手——快速搭建Java应用服务器

    万次阅读 多人点赞 2017-05-08 11:33:17
    我写这套帖子的目的,是在自己学会、实现并熟练掌握之后,想帮助下面将会提到的这样一群正在学习Android的新手(虽然我自己也是新手),通过自己的经验传递出去,让他们少走一点弯路,节省大量用在查询和翻阅资料的...


    Motivation

    我写这系列博文的目的,是在自己学会、实现并熟练掌握之后,想帮助正在学习的人门,通过将自己的经验传递出去,让你们少走一点弯路,节省大量用在查询和翻阅资料上的时间。

    我在学习编写自己的服务器程序的时候遇到过以下的问题:
    1.我需要准备什么?
    2.我该选择哪一套实现方案?

    这些问题的搜索和查证都需要占用大量的时间,以至于初学者们手头的项目可能长达几个月没有进展,而我会一一为大家解决这些问题,你只需要花费看这一篇博文的时间。


    好了,言归正传:

    一、什么是前后端分离?

    即前后端代码分别开发并独立部署。
    前端: 实现静态/动态页面,必要时向后端发起http请求,并根据后端的响应结果对页面进行刷新或跳转。
    后端: 后端不再负责处理对静态资源的请求,仅提供请求接口,在收到前端发来的请求时给与响应。


    二、我需要准备什么?

    硬件要求:

    一台开发机和一台云服务器,当前各大云服务提供商的云服务器产品十分便宜,甚至有大学生优惠。每月不超过10块,所以推荐租一台Linux系统的云服务器,省去了很多麻烦(后续会有帖子介绍流程)。

    软件要求:

    安装JDK并配置完环境变量 (本系列博文统一采用JDK 1.8)
    还有一些软件是需要用到的,到了具体的章节我们再引入。

    知识储备要求:

    1.基础Java知识和基础Java编程能力:

    也不需要对Java有多么深的理解,但是Java面向对象的三大要素——封装、继承、多态——至少要理解得清清楚楚!如果连静态方法和非静态方法都搞不清楚,那还怎么写程序?!

    2.计算机网络基础知识:

    对以下概念有较清晰的认识即可:
    ①内网与外网;②局域网;③IP地址;④端口号;⑤Http请求;

    3.数据库相关知识:

    时间充分的话还是强烈建议系统学习,因为没有学好可能以后写出的查询语句效率低下还不知道怎么优化。时间紧迫的话,会常用的建库、建表、创建字段、增删改查即可。


    三、我该选择哪一套方案?

    在具有了一台云服务器这一硬件条件后,我们的服务器仅仅有了一个容器,真正能让它工作起来的是一套软件相关的东西。
    在本系列博文中,我们用:MySQL + Java Web + Tomcat来实现我们的服务器。

    其中:
    ①MySQL是开源的数据库软件;
    ②Java Web是遵循Java语言风格的服务器应用程序组件(即客户端发来的请求的应答者);
    ③Tomcat是开源的服务器软件(作为Java Web应用程序的容器)。


    四、开发部署流程

    1. 在Windows、Mac等有UI界面的机器上做开发。
    2. 开发完成后,将工程打包成.jar或.war文件,称为jar包或war包。
    3. 将jar包或war包上传到服务器上进行解包——称作“部署”。

    由于开发时需要做一定的测试,每次测试都部署一遍会消耗大量时间和精力。因此,开发机上也需要装MySQL数据库和Tomcat服务器容器。


    五、客户端发送Http请求和接收到应答的流程

    我来描述一下从各客户端发出一趟请求到收到应答的过程(没图,但是我会说到各种图往往笼统和忽略的部分):

    1.客户端向指定IP地址(或域名)的服务器发出一条Http请求(例如包含账号和密码的登录请求);

    2.服务器容器Tomcat收到Http请求,寻找相应Java Web编写的服务器应用程序,把请求分派给它来处理;

    3.Java Web编写的服务器应用程序找到处理请求相应的Servlet(Java Web项目的一部分,后面会讲)实例,把请求分配给它处理;

    4.Servlet根据请求来执行相应的操作(如调用数据库然后验证登录是否成功),将结果添加到应答中,发回客户端;

    5.客户端接收到应答,从应答中解析出结果(如登录是否成功),然后根据结果执行相应的逻辑(如跳转页面或提示账号密码不正确等)。


    六、基础实现

    实现的部分,我分到了多篇博文中去讲各个部分的实现及其衔接:

    1. 构建开发环境——安装集成开发工具包XAMPP

    2. 调试入门——如何快速定位并修复Bug

    3. Web开发入门——创建Java Web工程

    4. 部署和测试


    七、初级进阶

    到这里,我们实现了基础的请求/响应流程,但要实现完善的后端服务,还需要学习一些进阶知识:

    1. 数据管理——创建并通过Java连接MySQL数据库

    2. 数据传输——JSONObject与JSONArray

    3. Servlet请求调度器——DispatcherServlet

    4. Q&A


    八、中级进阶

    学习了前面的这些知识,并做了一些实践,实际上学习成本不高,但是实现成本比较高。这些都是10多年前开发者们实现Java Web后端程序的方法和过程。

    看到这里你可能有点失落:“学了半天,居然是10多年前的老方法”。我自然会讲现在的新技术,但前面的过程也是必不可少的,理由如下:

    • 一步一步进阶学习的过程比较平稳,不至于被新技术的复杂知识体系吓住。
    • 老技术学习成本低,但实现成本高,适合快速学习。
    • 进阶学习的过程可以使我们知道,老技术为何被放弃,新技术的优越性有哪些。

    总之,技术的革新都是为了不断地解放生产力,让我们用更少的代码实现更多的功能,热爱学习和实现的你,耐心地往下看吧。

    1. 依赖管理进阶——Maven学习笔记

    2. 初识框架——Spring学习笔记


    九、高级进阶

    这个部分,我是想写SpringBoot的,记得当时进阶学习也就用了两天,因此从Spring Framework进阶到SpringBoot是很快的。Spring Framework中我们扔掉了web.xml,Spring Boot中我们连配置文件也不要了。写后端服务更加便捷。

    敬请期待
    ——2020.11.13


    更新日志

    这篇综述和索引的博文我就写到这了,去写几个分帖了,写出来之后我会第一时间在这里挂上链接,敬请期待。
    我的这一系列博文应该会在两周左右全部写完,如果是有紧急的问题需要帮助的朋友,直接回帖或者给我发邮件,在时间充足和我会的情况下帮你解决。
    ——2017.05.08

    实在是有些忙,今天忙里偷闲一天,写完了内网穿透的博文,已经在上面挂上了链接。我仔细想了一下,上面第二步可能需要三篇博文分别来讲服务器、数据库集成开发工具包的介绍,Java Web的编写和Tomcat的使用,之前吹牛说两周写完可能做不到了
    ——2017.05.12

    今早写了服务器、数据库集成开发工具包这篇文章,已经在上面挂上了链接。
    ——2017.05.13

    今天开始写Java Web的编写,写了之后才发现,这个确实挺麻烦的,各种细节需要各种截图,已经在上面挂上了链接,没写完,可以先看看前面的准备部分。
    ——2017.05.15

    今晚终于抽空写完了Java Web的编写, 诸君可以照葫芦画瓢,写自己的服务器程序了,博文有点长,进下心来慢慢看吧,绝对有收获!今天写着写着,又想到我好像没有规划MySQL建数据库的部分,就在索引中添上了。
    ——2017.05.17

    今天写完了MySQL数据库的建立,已经在上面挂上了链接。
    ——2017.05.18

    今天把Tomcat的一些使用方法写完了,写着写着突然忘了本来准备的内容了,略尴尬。
    ——2017.05.19

    今天终于把原计划的这最后一篇文章写完了,已经在上面挂上了链接。 原本计划两周写完的,这都拖了将近一个多月了。但是最近真的很忙,没办法。

    近期如果有空,我会写一篇番外文章,讲一点关于JSONObject和JSONArray的东西,应该会比较短,但是会很有用,尽请期待吧!
    ——2017.07.01

    根据各位开发者看完这一系列博文之后在开发过程中的反馈,今天对《内网穿透》、《Tomcat》和《Java Web》等三帖做了一些更新。
    ——2018.03.11

    时隔将近一年,我终于把承诺的JSONObject和JSONArray的部分写出来了,作为进阶使用的番外部分,已在上面挂上了链接。

    另外,今天写的尽兴的时候,想起了Servlet分配器这个东西,作为进阶内容的话还是很有意义与价值的。这次不会再跳票那么长时间了,一两天内完成,尽情期待!
    ——2018.04.12

    Servlet请求分派器的博文已经写完了,在上面挂上了链接。
    ——2018.04.14

    鉴于做整体的系统测试的时候,很难定位Bug出在了客户端还是服务端,我将《Tomcat的一些使用方法》这篇博文改名为《服务器端的一些测试方法》,并在里面添加了分享3。根据分享3,大家可以先写服务端,不写客户端,服务端测试正确了再开始写客户端,这样做的好处就是,我们可以更加精准的做到Bug定位了。
    ——2018.05.05

    今天做了一个重要的调整,即《MySQL》和《JavaWeb》两篇博文的次序,如果还是按我写它们时的顺序放在索引里,会造成你们逻辑的颠倒,因此,调了过来。
    ——2018.05.11

    根据近期自己在开发中的亲身经历和大家的反馈,写了一篇收集由PC和真实服务器环境的差异造成的Bug的博文,不光收集问题,也写了这些问题的解决方法。 大家在服务端出现Bug的时候可以点进去看看,有可能就对号入座,解决问题了,同时也鼓励各位开发者同仁,贡献出你们在开发过程中遇到的,各种各样的问题及其解决方案。
    ——2018.05.14

    为了便于索引和阅读,准备在所有的博文上加上目录,尤其是篇幅比较长的博文。
    ——2018.12.27

    近期发现有不止一个人问,non-static method 'XXX' can not be referenced from a static context这个异常怎么解决,怎样把XXX函数改成静态的?这就相当过分了。我也反省了一下是不是我这个教程写得太傻瓜式操作了。最后还是觉得,好东西也要看谁拿着。我再清清楚楚地声明一下:我这篇博文不是针对一点基础知识都没有的小白的,缺什么基础知识就去学完再来搞实践!!!
    ——2019.04.16

    今天对博文的内容和格式做了部分修改,同时根据近期开发和部署上遇到的一些问题,写了一篇新的博文用于记录软件版本差异造成的异常及其解决方案。
    ——2019.05.08

    我时常觉得自己比较后知后觉,却又很庆幸,虽然晚一些,但最终还是“觉”了。直到不久前才学到了所谓“前后端分离”的真正内涵和实现方法。由此,已经不需要为任何一种客户端来单独开发后端模块了,有了web端的前后端分离,后端程序对任何客户端都是通用的。 因此,我决定再次修改着系列博文,从标题到内容。
    ——2020.11.04


    后记

    几年前,我在自己辛苦求索,花了近半个月把这一套东西弄通之后,写下了这一系列博文。目的在于给和我处境类似的初学者们一些指引,让大家少走一些弯路。

    如果发现了代码或者理论方面的错误,请直接回复,我会尽快修改博文,避免误导了大家。

    如果在实现中出现了自己难以解决的问题,我的邮箱是implementist@outlook.com

    展开全文
  • 自己动手写搜索引擎

    2019-07-22 12:53:17
    资源名称:自己动手写搜索引擎资源截图: 资源太大,传百度网盘了,链接在附件中,有需要的同学自取。
  • 自己动手装OS

    2012-11-06 21:46:02
    自己动手装OS
  • 自己动手做标本flash动画是一款幼儿园科学教育课件自己动手做标本动画素材下载。
  • 自己动手编写操作系统
  • 自己动手粉刷墙面.zip

    2021-09-03 16:44:41
    自己动手粉刷墙面.zip
  • 自己动手设计数据库

    2017-12-29 14:52:12
    自己动手设计数据库》主要讲述数据库的设计,讨论了如何建立表结构、确定主键、设置字段说明、建立表关系、确立业务规则、建立视图和各层次的数据完整性,以及如何避免不好的设计等问题。《自己动手设计数据库》...
  • 自己动手写虚拟机

    2017-10-05 14:05:19
    自己动手写虚拟机,java,java虚拟机,java核心技术
  • 自己动手做聊天机器人
  • 自己动手写网络爬虫

    2018-08-23 18:58:20
    自己动手写网络爬虫 
  • 自己动手开始爬虫

    2018-06-23 22:50:48
    自己动手写网络爬虫.pdf和一些些爬虫要用到的资源。可以说是爬虫入门必备。
  • 自己动手写操作系统 pdf 自己动手 写操作系统 自己动手写操作 系统 pdf
  • 自己动手写网络爬虫PDF自己动手写网络爬虫PDF自己动手写网络爬虫PDF自己动手写网络爬虫PDF自己动手写网络爬虫PDF
  • 自己动手写cpu

    2017-11-19 19:50:57
    自己动手写CPU 雷思磊 著 电子工业出版社 verilog HDL设计实现的兼容MIPS32的指令集架构处理器Open-MIPS
  • 自己动手写编译器链接器。一门好的编译链接器开发必看的书。
  • 自己动手制作无线话筒自己动手制作无线话筒
  • 自己动手制作gif

    2014-08-25 15:00:05
    自己动手可以制作gif 动画,很简单,自己动手可以制作gif 动画,很简单
  • 自己动手写JVM

    2018-04-13 16:17:42
    包含了三个资源:自己动手写JVM系列(go语言描述),Java虚拟机规范第8版英文版,Java编程语言规范第8版英文版。适合学习JVM基本原理,了解Java部分语法的实现原理。因虚拟机是用go语言所写,需要先简单了解下go语言...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 261,378
精华内容 104,551
关键字:

自己动手