思维拉练前后端分离诞生记-系统学习八

简介: 通过5+6的需求的实现,以及不同版本的变化带来思考的过程;希望您用餐愉快。

一、背景


通过5+6的需求的实现,以及不同版本的变化带来思考的过程;希望您用餐愉快。


二、介绍


第一练:实现5+6需求


/**
 * 第一练
 * 计算5与6的和
 */
public class a0001 {
    public static void main(String[] args) {
        System.out.println(5+6);
    }
}


主题讨论:《从1.1 《版本1:计算5和6的和》中,这样极其简单的代码,你写的多吗?从中你又能发现什么?》


参考回复:代码写死了,不具备复用性,不利于后续的扩展


第二练:简单变化的开始


/**
 * 第二练:简单变化的开始
 * 思维拉力:计算5与6的和;
 */
public class a0002 {
    public static void main(String[] args) {
        int a ,b;
        a = 5;
        b = 6;
        System.out.println(a+b);
    }
}


主题讨论:《从版本1到版本2中代码发生了非常巨大的变化,来说说你发现的巨大变化都有哪些,以及你能由此想到的更深入的知识点还有哪些?》


参考回复:将具体数值封装到变量中;复用了逻辑;可以实现任意两数的相加


第三练:质的变化


/**
 * 思维拉练:质的变化
 * 思维拉力:计算5与6的和。
 */
public class a0003 {
    public static void main(String[] args) {
        int a,b,c;
        a = 5;
        b = 6;
        //----------------
        c = a+b;
        //----------------
        System.out.println(c);
    }
}


主题讨论:独立思考如下有趣的话题:1、对比工程2的实现与工程3的实现,代码和形式上有哪些不同?2、从软件工程学的角度看,非常巨大的进步是什么?


参考回复:1.把逻辑做了抽象、将输出做了封装2.使得输出可以成为任何逻辑的组合


期中训练:


通过前三个过程的学习,现在如果给你一个需求,让你去设计一个四+五的功能,你会如何设计?


参考回复:通过前三个过程的训练,让我们学会了抽象的概念,封装的概念,为逻辑代码和功能的复用奠定一个很好的基础。当给我们一个具体要解决问题的时候,我们要通过这些训练能够想象将来业务场景的变化,使得我们的代码能够适应未来的变化,而不仅仅适应眼前的需求。


未雨绸缪;运筹帷幄之中决胜千里之外.


第四练:变是永远不变的


import javax.swing.*;
import java.io.IOException;
/**
 * 思维拉练:变是永远不变的
 * 思维拉力:计算5与6的和。
 */
public class a0004 {
    public static void main(String[] args) throws IOException {
        int a,b,c;
        a = Integer.valueOf(JOptionPane.showInputDialog("输入a的值:"));
        b = Integer.valueOf(JOptionPane.showInputDialog("输入b的值:"));
        //----------------
        c = a+b;
        //----------------
        System.out.println(c);
    }
}


主题讨论:版本4的主题讨论:《结合版本4的伪代码示例,请结合你目前的软件工程知识,对此代码产生了变化进行分析》


参考回复:前后端的分离使得我们有机会创造更加丰富的前端,使得数据的输入有了更多的通道实现了输入由单一的串行变成了多通道的并行。


创造来自于想象,而不是仅仅依赖于客观。


第五练:多此一举吗?


import javax.swing.*;
import java.io.IOException;
/**
 * 思维拉练:多此一举吗?
 * 思维拉力:计算5与6的和。
 */
public class a0005 {
    public static void main(String[] args) throws IOException {
        int a,b,c;
        a = Integer.valueOf(JOptionPane.showInputDialog("输入a的值:"));
        b = Integer.valueOf(JOptionPane.showInputDialog("输入b的值:"));
        //----------------
        c = a+b;
        //----------------
        JOptionPane.showMessageDialog(null,c);
    }
}


主题讨论:版本5主题讨论:《看了版本5和版本4的代码示例,通过1~4的学习和提高,展现一下你的聪明才智,来描述一下从版本4到5,它们之间这个巨大的变化》


参考回复:完整的前后端分离,通过扩充msgbox,实现并行多通道的扩展。


一个系统完整的前后端分离,就此诞生了。


三、扩展


什么是前端?


答:即网站前台部分,运行在PC端,移动端等浏览器上展现给用户浏览的网页


静态网页的诞生


1989年,在欧洲粒子物理实验室(粒子物理研究通常与来自世界各地的研究所进行合作)的IT部门工作的Tim Berners-Lee向其领导提出了一项名为Information Management: A Proposal的提议:使来自世界各地的远程站点的研究人员能够组织和汇集信息,在个人计算机上访问大量的科研文献,并建议在文档中链接其他文档,这就是Web的原型。

1990年,Tim以超文本语言HTML为基础在NeXT电脑上发明了最原始的Web浏览器。

1991年,Tim作为布道者在Internet上广泛推广Web的理念,与此同时,美国国家超算应用中心(National Center for Supercomputer Applications)对此表现出了浓厚的兴趣,并开发了名为Mosaic的浏览器,于1993年4月进行了发布。

1994年5月,第一届万维网大会在日内瓦召开。

1994年7月,HTML2规范发布。

1994年9月,因特网工程任务组(Internet Engineering Task Force)设立了HTML工作组。

1994年11月,Mosaic浏览器的开发人员创建了网景公司(Netscape Communications Corp.),并发布了Mosaic Netscape 1.0 beta浏览器,后改名为Navigator。

1994年底,由Tim牵头的万维网联盟(World Wide Web Consortium)成立,这标志着万维网的正式诞生。

此时的网页以HTML为主,是纯静态的网页,网页是“只读”的,信息流只能通过服务器到客户端单向流通,由此世界进入了Web 1.0时代。

JavaScript的诞生

1995年,网景工程师Brendan Eich花了10天时间设计了JavaScript语言。起初这种脚本语言叫做Mocha,后改名LiveScript,后来为了借助Java语言创造良好的营销效果最终改名为JavaScript。网景公司把这种脚本语言嵌入到了Navigator 2.0之中,使其能在浏览器中运行。

与此相对的是,1996年,微软发布了VBScript和JScript。JScript是对JavaScript进行逆向工程的实现,并内置于Internet Explorer 3中。但是JavaScript与JScript两种语言的实现存在差别,这导致了程序员开发的网页不能同时兼容Navigator和Internet Explorer浏览器。Internet Explorer开始抢夺Netscape的市场份额,这导致了第一次浏览器战争。

1996年11月,为了确保JavaScript的市场领导地位,网景将JavaScript提交到欧洲计算机制造商协会(European Computer Manufacturers Association)以便将其进行国际标准化。

1997年6月,ECMA以JavaScript语言为基础制定了ECMAScript标准规范ECMA-262。JavaScript是ECMAScript规范最著名的实现之一,除此之外,ActionScript和JScript也都是ECMAScript规范的实现语言。自此,浏览器厂商都开始逐步实现ECMAScript规范。

1998年6月,ECMAScript2规范发布,并通过ISO生成了正式的国际标准ISO/IEC 16262 。

1999年12月,ECMAScript3规范发布,在此后的十年间,ECMAScript规范基本没有发生变动。ECMAScript3成为当今主流浏览器最广泛使用和实现的语言规范基础。

第一次浏览器战争以IE浏览器完胜Netscape而结束,IE开始统领浏览器市场,份额的最高峰达到2002年的96%。随着第一轮大战的结束,浏览器的创新也随之减少。


前端和后端的作用是什么?


前端:

1.网页的结构层(structural layer)由 HTML 或 XHTML 之类的标记语言负责创建

2.网页的表示层(presentation layer) 由 CSS 负责创建

3.网页的行为层(behavior layer)负责回答“内容应该如何对事件做出反应”这一问题


html是主体,装载各种dom元素;css用来装饰dom元素;javascript控制dom元素。

用一扇门比喻三者间的关系是:html是门的门板,css是门上的油漆或花纹,javascript是门的开关;

后端:

1.接收前端数据,把数据写在服务器的文件里面。

2. 把数据返回给前端。


四、总结


在思维拉练过程中学习了封装和抽象;用现在的需求结合未来的眼光来满足长远的变化;通过前后端分离的过程体会到事物发展的逻辑。

相关文章
|
存储 运维 Kubernetes
Kubernetes 集群的持续性能优化实践
【4月更文挑战第22天】在动态且复杂的微服务架构中,确保 Kubernetes 集群的高性能运行是至关重要的。本文将深入探讨针对 Kubernetes 集群性能优化的策略与实践,从节点资源配置、网络优化到应用部署模式等多个维度展开,旨在为运维工程师提供一套系统的性能调优方法论。通过实际案例分析与经验总结,读者可以掌握持续优化 Kubernetes 集群性能的有效手段,以适应不断变化的业务需求和技术挑战。
|
10月前
|
安全 容器 Cloud Native
从理论到实践:用开源工具打造你的专业实训项目
本内容涵盖ERP实训、金融量化分析、DevOps实战及云原生进阶四大模块。通过Odoo容器化部署与自定义开发,实现高可用ERP系统;借助Python全链路开发,完成金融量化任务调度与高频数据存储优化;结合开源工具优化CI/CD流程,支持混合云部署与安全加固;实践Istio服务网格,增强服务治理与可观测性。整合Websoft9等资源,提供可靠、可扩展且安全的技术实训方案,助力数字经济人才培养。
199 1
|
存储 前端开发 JavaScript
前端技术深度探索:从基础到现代框架的实践之旅
前端技术深度探索:从基础到现代框架的实践之旅
273 3
|
人工智能 运维 监控
现代化运维管理:挑战与应对策略
随着信息技术的不断发展,现代化运维管理面临着诸多挑战。本文从运维自动化、安全防护和资源优化等方面探讨了这些挑战,并提出了相应的应对策略,旨在帮助企业有效应对运维管理中的各种问题,提升系统的稳定性和可靠性。
483 1
|
缓存 安全 前端开发
Electron on macOS: 揭秘 MacUpdater 如何实现无缝自动更新?
本文首发于微信公众号“前端徐徐”,详细探讨了 Electron 应用在 macOS 平台上的更新原理。文章分析了 `MacUpdater` 类的实现,包括与 Electron 原生更新器的集成、更新检测和下载、代理服务器管理、环境适配、安全性保障、错误处理和日志记录、更新安装流程控制以及缓存管理等关键功能。通过这些技术细节,展示了如何在 macOS 上实现高效、安全的 Electron 应用更新。
517 0
Electron on macOS: 揭秘 MacUpdater 如何实现无缝自动更新?
|
存储 算法 Java
【底层服务/编程功底系列】「手把手教学系列」带你打造一个属于自己的规则引擎服务,打破任何业务难题(逻辑模型和API设计)(一)
【底层服务/编程功底系列】「手把手教学系列」带你打造一个属于自己的规则引擎服务,打破任何业务难题(逻辑模型和API设计)
656 1
|
XML Java Android开发
Android spinner 的使用
Android spinner 的使用
368 6
|
SQL 安全 Java
硬核,腾讯内部整理的面向开发人员代码安全指南,适合所有程序员
硬核,腾讯内部整理的面向开发人员代码安全指南,适合所有程序员
483 0
|
数据管理 Java jenkins
API接口自动化测试框架搭建之需求整理、详细设计和框架设计
API接口自动化测试框架搭建之需求整理、详细设计和框架设计
633 1
|
Unix Shell Linux
shell脚本转换为c代码的工具
将shell脚本转换成代码,并编译成二进制可执行文件,在linux系统下具有防调试跟踪机制