精华内容
下载资源
问答
  • 什么要设计好目录结构?"设计项目目录结构",就和"代码编码风格"一样,属于个人风格问题。对于这种风格上的规范,一直都存在两种态度:一类同学认为,这种个人风格问题"无关紧要"。理由是能让程序work就好,风格问题...

    为什么要设计好目录结构?

    "设计项目目录结构",就和"代码编码风格"一样,属于个人风格问题。对于这种风格上的规范,一直都存在两种态度:

    一类同学认为,这种个人风格问题"无关紧要"。理由是能让程序work就好,风格问题根本不是问题。

    另一类同学认为,规范化能更好的控制程序结构,让程序具有更高的可读性。

    我是比较偏向于后者的,因为我是前一类同学思想行为下的直接受害者。我曾经维护过一个非常不好读的项目,其实现的逻辑并不复杂,但是却耗费了我非常长的时间去理解它想表达的意思。从此我个人对于提高项目可读性、可维护性的要求就很高了。"项目目录结构"其实也是属于"可读性和可维护性"的范畴,我们设计一个层次清晰的目录结构,就是为了达到以下两点:

    可读性高: 不熟悉这个项目的代码的人,一眼就能看懂目录结构,知道程序启动脚本是哪个,测试目录在哪儿,配置文件在哪儿等等。从而非常快速的了解这个项目。

    可维护性高: 定义好组织规则后,维护者就能很明确地知道,新增的哪个文件和代码应该放在什么目录之下。这个好处是,随着时间的推移,代码/配置的规模增加,项目结构不会混乱,仍然能够组织良好。

    所以,我认为,保持一个层次清晰的目录结构是有必要的。更何况组织一个良好的工程目录,其实是一件很简单的事儿。

    目录组织方式

    关于如何组织一个较好的Python工程目录结构,已经有一些得到了共识的目录结构。在Stackoverflow的这个问题上,能看到大家对Python目录结构的讨论。

    这里面说的已经很好了,我也不打算重新造轮子列举各种不同的方式,这里面我说一下我的理解和体会。

    假设你的项目名为foo, 我比较建议的最方便快捷目录结构这样就足够了:

    Foo/

    |-- bin/

    | |-- foo

    |

    |-- foo/

    | |-- tests/

    | | |-- __init__.py

    | | |-- test_main.py

    | |

    | |-- __init__.py

    | |-- main.py

    |

    |-- docs/

    | |-- conf.py

    | |-- abc.rst

    |

    |-- setup.py

    |-- requirements.txt

    |-- README

    简要解释一下:

    bin/: 存放项目的一些可执行文件,当然你可以起名script/之类的也行。

    foo/: 存放项目的所有源代码。(1) 源代码中的所有模块、包都应该放在此目录。不要置于顶层目录。(2) 其子目录tests/存放单元测试代码; (3) 程序的入口最好命名为main.py。

    docs/: 存放一些文档。

    setup.py: 安装、部署、打包的脚本。

    requirements.txt: 存放软件依赖的外部Python包列表。

    README: 项目说明文件。

    除此之外,有一些方案给出了更加多的内容。比如LICENSE.txt,ChangeLog.txt文件等,我没有列在这里,因为这些东西主要是项目开源的时候需要用到。如果你想写一个开源软件,目录该如何组织,可以参考这篇文章。

    下面,再简单讲一下我对这些目录的理解和个人要求吧。

    关于README的内容

    这个我觉得是每个项目都应该有的一个文件,目的是能简要描述该项目的信息,让读者快速了解这个项目。

    它需要说明以下几个事项:

    软件定位,软件的基本功能。

    运行代码的方法: 安装环境、启动命令等。

    简要的使用说明。

    代码目录结构说明,更详细点可以说明软件的基本原理。

    常见问题说明。

    我觉得有以上几点是比较好的一个README。在软件开发初期,由于开发过程中以上内容可能不明确或者发生变化,并不是一定要在一开始就将所有信息都补全。但是在项目完结的时候,是需要撰写这样的一个文档的。

    可以参考Redis源码中Readme的写法,这里面简洁但是清晰的描述了Redis功能和源码结构。

    关于requirements.txt和setup.py

    setup.py

    一般来说,用setup.py来管理代码的打包、安装、部署问题。业界标准的写法是用Python流行的打包工具setuptools来管理这些事情。这种方式普遍应用于开源项目中。不过这里的核心思想不是用标准化的工具来解决这些问题,而是说,一个项目一定要有一个安装部署工具,能快速便捷的在一台新机器上将环境装好、代码部署好和将程序运行起来。

    这个我是踩过坑的。

    我刚开始接触Python写项目的时候,安装环境、部署代码、运行程序这个过程全是手动完成,遇到过以下问题:

    安装环境时经常忘了最近又添加了一个新的Python包,结果一到线上运行,程序就出错了。

    Python包的版本依赖问题,有时候我们程序中使用的是一个版本的Python包,但是官方的已经是最新的包了,通过手动安装就可能装错了。

    如果依赖的包很多的话,一个一个安装这些依赖是很费时的事情。

    新同学开始写项目的时候,将程序跑起来非常麻烦,因为可能经常忘了要怎么安装各种依赖。

    setup.py可以将这些事情自动化起来,提高效率、减少出错的概率。"复杂的东西自动化,能自动化的东西一定要自动化。"是一个非常好的习惯。

    setuptools的文档比较庞大,刚接触的话,可能不太好找到切入点。学习技术的方式就是看他人是怎么用的,可以参考一下Python的一个Web框架,flask是如何写的: setup.py

    当然,简单点自己写个安装脚本(deploy.sh)替代setup.py也未尝不可。

    requirements.txt

    这个文件存在的目的是:

    方便开发者维护软件的包依赖。将开发过程中新增的包添加进这个列表中,避免在setup.py安装依赖时漏掉软件包。

    方便读者明确项目使用了哪些Python包。

    这个文件的格式是每一行包含一个包依赖的说明,通常是flask>=0.10这种格式,要求是这个格式能被pip识别,这样就可以简单的通过 pip install -r requirements.txt来把所有Python包依赖都装好了。具体格式说明: 点这里。

    关于配置文件的使用方法

    注意,在上面的目录结构中,没有将conf.py放在源码目录下,而是放在docs/目录下。

    很多项目对配置文件的使用做法是:

    配置文件写在一个或多个python文件中,比如此处的conf.py。

    项目中哪个模块用到这个配置文件就直接通过import conf这种形式来在代码中使用配置。

    这种做法我不太赞同:

    这让单元测试变得困难(因为模块内部依赖了外部配置)

    另一方面配置文件作为用户控制程序的接口,应当可以由用户自由指定该文件的路径。

    程序组件可复用性太差,因为这种贯穿所有模块的代码硬编码方式,使得大部分模块都依赖conf.py这个文件。

    所以,我认为配置的使用,更好的方式是,

    模块的配置都是可以灵活配置的,不受外部配置文件的影响。

    程序的配置也是可以灵活控制的。

    能够佐证这个思想的是,用过nginx和mysql的同学都知道,nginx、mysql这些程序都可以自由的指定用户配置。

    所以,不应当在代码中直接import conf来使用配置文件。上面目录结构中的conf.py,是给出的一个配置样例,不是在写死在程序中直接引用的配置文件。可以通过给main.py启动参数指定配置路径的方式来让程序读取配置内容。当然,这里的conf.py你可以换个类似的名字,比如settings.py。或者你也可以使用其他格式的内容来编写配置文件,比如settings.yaml之类的。

    展开全文
  • web服务器一般指网站服务器,也称为WWW服务器,是目前 Internet 上最重要的服务,它采用 C/S 结构web服务器的作用就是向浏览器等Web客户端提供文档,放置网站文件,让可以访问网络的用户都可以进行访问,也可以放置...

    web服务器是什么?

    web服务器一般指网站服务器,也称为WWW服务器,是目前 Internet 上最重要的服务,它采用 C/S 结构web服务器的作用就是向浏览器等Web客户端提供文档,放置网站文件,让可以访问网络的用户都可以进行访问,也可以放置文档让用户下载。

    web服务器有哪些?

    常见的Web 服务器有MicrosoftInternet Information Service(IIS)、Apache、Netscape Web Server 等。访问和获取 WWW 信息的程序是客户机,通常称为浏览器,如 Microsoft nternet Explorer(IE)、Netscape Navigator 等。下面为大家详细介绍web服务器有哪些?

    (1)Apache:Apache是世界使用排名第一的Web服务器软件。它可以运行在几乎所有广泛使用的计算机平台上。Apache源于NCSAhttpd服务器,经过多次修改,成为世界上最流行的Web服务器软件之一。Apache取自"a patchy server"的读音,意思是充满补丁的服务器,因为它是自由软件,所以不断有人来为它开发新的功能、新的特性、修改原来的缺陷。Apache的特点是简单、速度快、性能稳定,并可做代理服务器来使用。

    (2)IIS是英文Internet Information Server的缩写,译成中文就是"Internet信息服务"的意思。它是微软公司主推的服务器,最新的版本是Windows2008里面包含的IIS 7,IIS与Window Server完全集成在一起,因而用户能够利用Windows Server和NTFS(NT File System,NT的文件系统)内置的安全特性,建立强大,灵活而安全的Internet和Intranet站点。(3)GFEGoogle的web服务器,用户数量激增。目前紧逼iis。

    (4)Nginx不仅是一个小巧且高效的HTTP服务器,也可以做一个高效的负载均衡反向代理,通过它接受用户的请求并分发到多个Mongrel进程可以极大提高Rails应用的并发能力。

    (5)Lighttpd是由德国人 Jan Kneschke 领导开发的,基于BSD许可的开源WEB服务器软件,其根本的目的是提供一个专门针对高性能网站,安全、快速、兼容性好并且灵活的web server环境。具有非常低的内存开销,CPU占用率低,效能好,以及丰富的模块等特点。Lighttpd 是众多OpenSource轻量级的web server中较为优秀的一个。支持FastCGI, CGI, Auth, 输出压缩(output compress), URL重写, Alias等重要功能。

    (6)Zeus是一个运行于Unix下的非常优秀的Web Server,据说性能超过Apache,是效率最高的Web Server之一。

    (7)Sun的Java系统Web服务器也就是以前的Sun ONE Web Server。主要出现在那些运行Sun的Solaris操作系统的关键任务级Web服务器上。它最新的版本号是6.1,可以支持x86版本Solaris,Red Hat Linux,HP-UX 11i, IBM AIX,甚至可以支持Windows,但它的大多数用户都选择了SPARC版本的Solaris操作系统。

    (8)Resin提供了最快的jsp/servlets运行平台。在java和javascript的支持下,Resin可以为任务灵活选用合适的开发语言。Resin的一种先进的语言XSL(XML stylesheet language)可以使得形式和内容相分离。

    (9)Jetty是一个开源的servlet容器,它为基于Java的web内容,例如JSP和servlet提供运行环境。Jetty是使用Java语言编写的,它的API以一组JAR包的形式发布。开发人员可以将Jetty容器实例化成一个对象,可以迅速为一些独立运行(stand-alone)的Java应用提供网络和web连接。

    (10)BEA WebLogic是用于开发、集成、部署和管理大型分布式Web应用、网络应用和数据库应用的Java应用服务器。将Java的动态功能和Java Enterprise标准的安全性引入大型网络应用的开发、集成、部署和管理之中。 BEA WebLogic Server拥有处理关键Web应用系统问题所需的性能、可扩展性和高可用性。

    (11)Tomcat是Apache 软件基金会(Apache Software Foundation)的Jakarta 项目中的一个核心项目,由Apache、Sun 和其他一些公司及个人共同开发而成。由于有了Sun 的参与和支持,最新的Servlet 和JSP 规范总是能在Tomcat 中得到体现。因为Tomcat 技术先进、性能稳定,而且免费,因而深受Java 爱好者的喜爱并得到了部分软件开发商的认可,成为目前比较流行的Web 应用服务器。

    展开全文
  • 什么web标准

    2019-10-04 05:29:24
    目前所通常所说的WEB标准一般指网站建设采用基于XHTML语言的网站设计语言,WEB标准中典型的应用模式是“css+div”(什么是css+div)。实际上,WEB标准并不是某一个标准,而是一系列标准的集合。 网页主要由三部分...

    WEB标准不是某一个标准,而是一系列标准的集合。目前所通常所说的WEB标准一般指网站建设采用基于XHTML语言的网站设计语言,WEB标准中典型的应用模式是“css+div”(什么是css+div)。实际上,WEB标准并不是某一个标准,而是一系列标准的集合。

      网页主要由三部分组成:结构(Structure)、表现(Presentation)和行为(Behavior)。对应的网站标准也分三方面:结构化标准语言,主要包括XHTML和XML;表现标准语言主要包括CSS;行为标准主要包括对象模型(如W3C DOM)、ECMAScript等。这些标准大部分由W3C组织(什么是W3C组织)起草和发布,也有一些是其他标准组织制订的标准,比如ECMA(European Computer Manufacturers Association)的ECMAScript标准。

      web标准的本意是实现内容(结构)和表现分离,就是将样式剥离出来放在单独的css文件中。这样做的好处是可以分别处理内容和表现,也方便搜索和内容的再利用。

     

    转载于:https://www.cnblogs.com/cjw-jxd/p/7466327.html

    展开全文
  • 1、Web采用B/S通信模式,用HTTP(HyperTextTransferProtocol)协议通信。 HTTP协议如图: 2、Web的特点 (1)用超文本技术HTML(HyperTextMarkupLanguage)来表达信息。 (2)用统一资源定位URL...

    一、什么 是Web开发?

    1、Web采用B/S通信模式,用HTTP(HyperTextTransferProtocol)协议通信。

    HTTP协议如图:

    这里写图片描述

    2、Web的特点

    (1)用超文本技术HTML(HyperTextMarkupLanguage)来表达信息。

    (2)用统一资源定位URL(UniformResourceLocator)来网络上信息的的精确定位。

    (3)使用DNS域名解析来处理IP,以方便记忆。

    (4)用网络应用层协议HTTP来实现与Web服务器之间的通信。底层为TCP/IP协议。

    3、分为:静态web资源 和 动态web资源

    静态web资源,如html页面等。

    动态web资源,如Jsp/servlet、asp、aspx、php等。

    4、B/S模式下用户的请求与响应

    这里写图片描述

    二、HTTP协议

    1、HTTP协议:

    (1)、HTTP协议:(HyperTextTransferProtocol)超文本传输协议,是关于如何在网络上传输超级文本HTML的协议。

    (2)、在分层的网络体系结构中,HTTP协议属于应用层,建立在TCP/IP传输层协议的基础之上。

    (3)、HTTP协议默认使用80端口。

    (4)、HTTP协议的版本为1.0和1.1,目前广泛使用的是1.1版本。

    2、URL:

    (1)、Uniform Resource Locator 统一资源定位。是专门为网络上的资源位置而设置的一种编址方式。

    (2)、url一般包含3个部分组成:

    应用层协议。

    主机IP地址或是域名。

    资源所在的路径或是文件名。http://ip域名

    (3)、如:协议://Ip或是域名[:端口]/资源名

    示例:http://www.baidu.com/index.html
    示例:http://127.0.0.1:8080/index.jsp

    3、HTTP协议:

    这里写图片描述

    4、应用层协议:

    这里写图片描述

    5、HTTP请求/响应格式:

    (1)、请求格式:

    通过HTTP向服务器请求数据,有严格的定义,称之为请求的格式。

    (2)、响应格式:

    服务器返回的数据,也有严格的定义,称之为响应格式。

    (3)、如图:
    这里写图片描述

    三、Web开发平台:Tomcat服务器

    1、Tomcat服务器说明:

    既然用户是通过浏览器访问服务器获取服务资源的,那么,就必须将应用程序安装到一台可以被访问到的服务器上。

    注意,服务器,一般指两种情况下的服务器:一种为硬件服务器,即指一台高性能的主机,另一种是是指可以运行某种服务的应用程序。如数据库服务器,只所以叫它为数据库服务器,是指在这台机器上安装了某种数据库产品。
    所以,本文所说的Tomcat服务器,是指安装了Tomcat应用程序的一台主机。

    2、Tomcat的目录结构:

    这里写图片描述

    3、Tomcat的配置文件目录结构:

    这里写图片描述

    4、Tomcat的组成结构:

    Tomcat本身由一系列可配置的组件构成,Tomcat的种个组件,
    可以在%CATALINA_HOME%\conf\server.xml中进行配置,
    Tomcat的server.xml文件的片段代码如下:

    (1)Tomcat中的server.xml:

    其中:Engine、Host、Context都是属于容器中的。

    <Server>
        <Service>
            <Connector .../>
            <Engine>
                <Host>
                    <Context .../>
                </Host>
            </Engine>
        </Service>
    </Server>

    (2)如图:server.xml配置文件:

    这里写图片描述

    (3)关于server.xml中元素的解释:

    (1)<Server>元素:

    代理整个Servlet的容器组件,是Tomcat的顶层元素,可以包含多个Service元素。

    (2)<Service>元素:

    包含一个Engine元素,以及多个Connector元素。这些Connector元素共享同一个Engine元素。

    (3)<Connector>元素:

    代表客户与服务器的实际交互组件,负责接收用户的请求及返回客户响应。

    (4)<Engine>元素:

    Engine元素,处理所有Connector元素收到的客户请求。

    (5)<Host>元素:

    在一个Engine元素中,可以包含多个Host元素,每一个Host定义一个虚拟主机,每一个Host又也可包含多个Web应用,即Context元素。

    (6)<Context>元素:

    每一个Context元素代表了一个运行在虚拟主页上的Web应用。

    展开全文
  • 如题,我是开发人员刚刚接触设计,现在有一个项目是数据的存储量和计算量比较大,但是功能相对简单,选用什么框架比较好呢?能尽量使存储效率和计算速率都比较高? 是b/s结构的程序,是否需要用ssh或者ssi? 谢谢!
  • 今天先是环境的配置,和如何使用,在配置IDEA的时候很...web采用的是B/S架构 b/s:数据传输的方式是HTTP协议 c/s:采用WinSocket协议 web服务器 服务器: 硬件服务器和软件服务器 web服务器: 提供资源供别人访问 ...
  • 什么WEB标准

    2011-11-23 20:24:41
    目前所通常所说的WEB标准一般指网站建设采用基于XHTML 语言的网站设计语言,WEB标准中典型的应用模式是“css+div”(什么是css+div )。实际上,WEB标准并不是某一个标准,而是一系列标准的集合。  网页主要由三...
  • Swoole高效跟传统的web开发有什么区别,除了传统的LAMP/LNMP同步开发模式,swoole的异步开发模式是怎么样的。 我的官方群点击此处。获取更多的swoole学习资料以及视频源码笔记。 1.1、传统web开发模式 PHP web...
  • 文章概要: ...RESTful架构,是目前最流行的一种互联网软件架构,因为其结构清晰,符合标准,易于理解,扩展方便,所以越来越多的网站采用RESTful架构设计了。 其实,RESTful是一种开发理念,是...
  • 我是刚开始学java web 开发,我看了很多项目, 很不明白为什么分这么多层. 例如一个项目采用struct 有: 1.实体类: 2 Action类: 3.DAO类 4service类。 5jsp. 请问为什么这样分啊,把这些都放在一块是个坏...
  • 什么是CS和BS结构

    2010-03-30 09:53:03
    服务器通常采用高性能的PC、工作站或小型机,并采用大型数据库系统,如Oracle、Sybase、Informix或 SQL Server。客户端需要安装专用的客户端软件。 B/S是Brower/Server的缩写,客户机上只要安装一个浏览器(Browser...
  • 这次,我来谈一点高深的话题:结构化存储(Structured Storage).  也许有人要奇怪我为什么研究到那个东西去了,不就是个打杂的么?还要研究这些东西?我先说说来由。  我的网站上的地名信息系统一共包含70万个...
  • 0x00。...欢迎! 欢迎使用Web Stack专业化。 前三个项目将为您提供Web开发的所有基础知识:HTML,CSS和Developer工具。...如何使用标题(以及为什么遵循层次结构顺序很重要) 如何用HTML制作列表 媒体之间的差异
  • koa是一个非常轻量的web框架,里面除了ctx和middleware之外什么都没有,甚至连最基本的router功能都需要通过安装其他中间件来实现。不过虽然简单,但是它却非常强大,仅仅依靠中间件机制就可以构建完整的web服务。而...
  • 采用分层架构进行管理,可使用最新的ASP.NET Core和Web API和EF Core技术构建现代Web应用程序。 什么是AspnetRun? 充分利用ASP.NET Core技能的最佳途径。 入职到Full Stack .Net Core Developer作业。 带有...
  • Web安全之SQL注入

    2021-01-21 14:35:02
    SQL是操作数据库数据的结构化查询语言,网页的应用数据和后台数据库中的数据进行交互时会采用SQL。SQL注入是指将Web页面的原URL、表单域或数据包输入的参数,修改拼接成SQL语句,传递给Web服务器,进而传给数据库...
  • python简单总结-web编程

    2020-05-04 17:05:28
    什么web ...URL采用MTV的框架结构 模型M,模版T,视图V Web app URL开发 业务处理 模版支持 数据库处理 服务发布 需要开发什么 pip install django==2.2.1 django-admin....
  • 连接查询等)除了上述技术外,应该花时间学习以下知识:操作系统原理(了解)编译原理(了解)数据结构、算法(招聘时笔试面试必考)Linux基本操作(目前服务器多采用Linux)版本控制(Git等)软件工程设计模式学习...
  • 斜线和反斜线简要历史,为什么windows和unix采用不同的路径分隔符 / 和 \ / 和 \,左为斜线,右为反斜;一个常用的速记法:八字,先撇为斜,后捺为反斜。 / 和 \一般的作用是作为目录分隔符,这些符号在不同的...
  • Java影响力远超想像——为什么采用Java平台 从开发项目的类别角度看java平台基于B/S结构的系统,在这个方向上的竞争是激烈的,有专注于此的LAMP(Linux + Apache + Mysql + Php); 也有刚刚兴起的Rails(Ruby ...
  • 才子进销存互联网版(Web版)管理软件是采用融合了C/S架构和B/S(BS)架构各自的优点的的SmartClient(智能客户端)技术,利用先进的三层式分布体系结构,该种技术一般用于同类型的高端产品中,目的是解决网络上数据存取...
  • WEB开发技术 知识点总结

    千次阅读 2018-05-11 00:10:58
    Web是Internet提供的一种服务,是基于Internet、采用Internet协议的一种体系结构。2、Web三要素:统一资源定位(URL):解决网上资源在何处的问题。资源访问方式(HTTP):解决用什么方法访问资源的问题。超链接:...
  • URL是什么,有什么作用 Uniform Resource Locator,统一资源定位符,它是WWW的统一资源定位标志,就是指网络地址 描述URL的格式 除了http协议,ftp, smb等协议的资源定位也采用url形式 HTTP报文结构 请求:请求行 + ...
  • 一开始还以为是厂家升级,变更了存储的表结构,感觉下载最近的升级包都装上,但是发现库结构没有什么变化。仔细看了一下,原来web开发部分与精灵显示确实从机制上有些区别,web不说,精灵的数据采用了一种缓存机制,...
  • 1、什么是Struts 框架 Struts名字来源于在建筑与旧式飞机中使用的支持金属架,它是由自定义标签、信息资源...从图5-11可以看出,Struts的体系结构采用了MVC设计模式,同时包含客户端(Client)请求以及业务逻辑处理...
  • 这是为您的下一个Web项目确定最佳构建工具的快速方法,或者值得进行工具迁移,还是如何在现有配置和代码库中采用工具的最佳实践。 进行设置 npm install 为了开发 npm run dev 这将在监视模式下启动构建,并启动HTTP...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 617
精华内容 246
关键字:

web采用什么结构