web开发

Web应用与Web框架

爷,独闯天下 提交于 2020-02-02 09:26:26
Web应用程序是什么 Web应用程序是一种可以通过Web访问的应用程序,程序的最大好处是用户很容易访问应用程序,用户只需要有浏览器即可,不需要再安装其他软件。 应用程序有两种模式C/S、B/S。C/S是客户端/服务器端程序,也就是说这类程序一般独立运行。而B/S就是浏览器端/服务器端应用程序,这类应用程序一般借助IE等浏览器来运行。WEB应用程序一般是B/S模式。Web应用程序首先是“应用程序”,和用标准的程序语言,如C、C++等编写出来的程序没有什么本质上的不同。然而Web应用程序又有自己独特的地方,就是它是基于Web的,而不是采用传统方法运行的。换句话说,它是典型的浏览器/服务器架构的产物。 Web应用程序的优点 网络应用程序不需要任何复杂的“展开”过程,你所需要的只是一个适用的浏览器; 网络应用程序通常耗费很少的用户硬盘空间,或者一点都不耗费; 它们不需要更新,因为所有新的特性都在服务器上执行,从而自动传达到用户端; 网络应用程序和服务器端的网络产品都很容易结合,如 email 功能和搜索功能; 因为它们在网络浏览器窗口中运行,所以大多数情况下它们是通过跨平台使用的 (例如 Windows,Mac,Linux 等等) Web应用程序的缺点 网络应用程序强调浏览器的适用性。如果浏览器方没有提供特定的功能,或者弃用特定的平台或操作系统版本(导致不适用),就会影响大量用户;

python web 开发 - Django 入门

一世执手 提交于 2020-02-02 05:45:42
开篇 通过上一篇 python 入门实战 - 学生管理系统 练习了一把 python 语法。本篇总结下 Django 这个 web 框架的入门使用。前提是要有相关的 web 开发经验(Java, php等)。因为本文不会涉及 http 协议,前后端分离不分离等概念。 另附: 官方教程: https://docs.djangoproject.com/en/3.0/intro/tutorial02/ 菜鸟教程: https://www.runoob.com/django/django-tutorial.html 正文 本人开发环境 操作系统: MacOS IDE: vscode 数据库: mysql python 版本 3.x 准备工作 安装 django (非 maOS 操作系统 请参考开篇的教程选择安装方式,以及验证是否安装成功) python3 -m pip install django==1.11.6 创建项目 django-admin startproject helloworld(这个是项目名) 图中标记了 4 个地方 1. 创建完 helloworld 项目后,会发现helloworld 下面还有一个 helloworld, 后面说到的 helloworld 一般都是第一层级,简称项目根目录 2. settings.py 主要是一些配置,比如数据库,静态文件存放位置等 3

absolute-ordering标记能解决More than one fragment with the name [spring_web] was found的原因和其他的解决办法

别说谁变了你拦得住时间么 提交于 2020-02-02 00:34:38
一大早起来,开开心心的写项目,可还没写多久,项目就出现了如下错误: 排查了一下错误和找了些资料,发现出错的地方在于我/WEB-INF/lib目录下的spring-web-4.1.0.RELEASE.jar和spring-web-4.1.0.RELEASE-sources.jar里面的META-INF目录下都有一个web-fragment文件(解压jar包可见),关键在于web-fragment文件的内容都一样,它们有着相同的web片段名: web片段是Servlet3.0的可插入特性的体现,它是是web.xml的一部分,通过在web片段配置serlvet入口等,可以减轻开发人员负担,不用在web.xml中配置太多东西。 而出错的原因在于web片段在web.xml中排序部署默认是relative ordering(相对地址排序),如上,相对地址都是META-INF/spring_web,就会冲突发生错误,这点是可以验证: 我尝试解压其中一个jar包spring-web-4.1.0.RELEASE-sources.jar,把里面的web片段改名为spring_web_source然后保存再打包成jar包,如下 删除项目原本的jar包放入新的然后启动tomcat,成功! 而<absolute-ordering/>能解决上述问题在于它是按绝对路径排序,它把jar包名也包括进去了

Nginx+uWSGI+Django部署web服务器

只愿长相守 提交于 2020-02-01 22:10:37
Nginx+uWSGI+Django部署web服务器 原创铁乐与猫 最后发布于2018-08-28 14:33:08 阅读数 4813 收藏 展开 Nginx+uWSGI+Django部署web服务器 Nginx+uWSGI+Django部署web服务器 环境说明 前言 搭建项目 Django部署 编辑luffy/luffy/settings.py 编辑luffy/app01/views.py 编辑luffy/luffy/urls.py 运行并测试 uWSGI部署 测试运行uWSGI 使用uWSGI运行django项目 uWSGi热加载Djangoa项目 部署nginx nginx配置uwsgi和django django部署static文件 重新加载nginx进行测试 测试nginx 应用 uWSGI 和 test.py 用UNIX socket取代TCP port uwsgi部署加强 使用uwsgi配置文件运行django项目 安装uWSGI到真实环境中 uwsgi配置文件更多参数 uWSGI开机启动服务 环境说明 进行本文操作前需己搭建好的环境 linux系统,我用的是openSUSE 使用了operation用户的家目录做为测试环境 python3.5.6 virtualenv 16.0 pip3 18.0 nginx 1.13.1 后面进行安装的环境 django 1

Apache与php解析器通信方式分析(mod_php的apache2hander模块模式与php-fpm的fastcgi管理器模式分析)

淺唱寂寞╮ 提交于 2020-02-01 21:44:27
Apache与php解析器通信方式分析(mod_php的apache2hander模块模式与php-fpm的fastcgi管理器模式分析) 在apache(Unix平台最流行的WEB服务器平台)之中调用PHP是个经久不衰的话题,目前的PHP存在PHP4和PHP5的版本,而且在apache(Unix平台最流行的WEB服务器平台)之中调用PHP还存在module(模块)方式和CGI方式,同时apache(Unix平台最流行的WEB服务器平台)还存在apache(Unix平台最流行的WEB服务器平台)1和apache(Unix平台最流行的WEB服务器平台)2两个版本.   在apache(Unix平台最流行的WEB服务器平台)之中调用PHP存在以下八种模式:   1,PHP4在apache(Unix平台最流行的WEB服务器平台)1的module模式   2,PHP4在apache(Unix平台最流行的WEB服务器平台)1的cgi模式   3,PHP5在apache(Unix平台最流行的WEB服务器平台)1的module模式   4,PHP5在apache(Unix平台最流行的WEB服务器平台)1的cgi模式   5,PHP4在apache(Unix平台最流行的WEB服务器平台)2的module模式   6,PHP4在apache(Unix平台最流行的WEB服务器平台)2的cgi模式  

HTTP与HTTPS区别

最后都变了- 提交于 2020-02-01 06:40:35
HTTP 的缺点 到现在为止,我们已了解到 HTTP 具有相当优秀和方便的一面,然而 HTTP 并非只有好的一面,事物皆具两面性,它也是有不足之处的。HTTP 主要有这些不足,例举如下。 1、通信使用明文( 不加密) , 内容可能会被窃听 2、不验证通信方的身份, 因此有可能遭遇伪装 3、无法证明报文的完整性, 所以有可能已遭篡改 这些问题不仅在 HTTP 上出现,其他未加密的协议中也会存在这类问题。 除此之外,HTTP 本身还有很多缺点。而且,还有像某些特定的 Web 服务器和特定的 Web 浏览器在实际应用中存在的不足(也可以说成是脆弱性或安全漏洞),另外,用 Java 和 PHP 等编程语言开发的 Web 应用也可能存在安全漏洞。 通信使用明文可能会被窃听 由于 HTTP 本身不具备加密的功能,所以也无法做到对通信整体(使用 HTTP 协议通信的请求和响应的 内容 )进行加密。即,HTTP 报文使用明文(指未经过加密的报文)方式发送。 TCP/IP 是可能被窃听的网络 如果要问为什么通信时不加密是一个缺点,这是因为,按 TCP/IP 协议族的工作机制,通信内容在所有的通信线路上都有可能遭到窥视。 所谓互联网,是由能连通到全世界的网络组成的。无论世界哪个角落的服务器在和客户端通信时,在此通信线路上的某些网络设备 、光缆、计算机等都不可能是个人的私有物

php解决高并发问题

孤者浪人 提交于 2020-02-01 03:44:38
我们通常衡量一个Web系统的吞吐率的指标是QPS(Query Per Second,每秒处理请求数),解决每秒数万次的高并发场景,这个指标非常关键。举个例子,我们假设处理一个业务请求平均响应时间为100ms,同时,系统内有20台Apache的Web服务器,配置MaxClients为500个(表示Apache的最大连接数目)。 那么,我们的Web系统的理论峰值QPS为(理想化的计算方式): 20*500/0.1 = 100000 (10万QPS) 咦?我们的系统似乎很强大,1秒钟可以处理完10万的请求,5w/s的秒杀似乎是“纸老虎”哈。实际情况,当然没有这么理想。在高并发的实际场景下,机器都处于高负载的状态,在这个时候平均响应时间会被大大增加。 普通的一个p4的服务器每天最多能支持大约10万左右的IP,如果访问量超过10W那么需要专用的服务器才能解决,如果硬件不给力 软件怎么优化都是于事无补的。主要影响服务器的速度 有:网络-硬盘读写速度-内存大小-cpu处理速度。 就Web服务器而言,Apache打开了越多的连接进程,CPU需要处理的上下文切换也越多,额外增加了CPU的消耗,然后就直接导致平均响应时间增加。因此上述的MaxClient数目,要根据CPU、内存等硬件因素综合考虑,绝对不是越多越好。可以通过Apache自带的abench来测试一下,取一个合适的值。然后

撩课-Web大前端每天5道面试题-Day7

六眼飞鱼酱① 提交于 2020-02-01 02:47:03
1. 你能描述一下渐进增强和优雅降级之间的不同吗? 定义: 优雅降级(graceful degradation): 一开始就构建站点的完整功能, 然后针对浏览器测试和修复 渐进增强(progressive enhancement): 一开始只构建站点的最少特性, 然后不断针对各浏览器追加功能。 优雅降级和渐进增强都关注于同一网站 在不同设备里不同浏览器下的表现程度。 区别: “优雅降级”观点认为应该针对那些最高级、 最完善的浏览器来设计网站。 而将那些被认为“过时”或有功能缺失的浏览器下 的测试工作安排在开发周期的最后阶段,并把测试 对象限定为主流浏览器(如 IE、Mozilla 等)的 前一个版本。 “渐进增强”观点则认为应关注于内容本身。 总结: "优雅降级"就是首先完整地实现整个网站, 包括其中的功能和效果. 然后再为那些无 法支持所有功能的浏览器增加候选方案, 使之在旧式浏览器上以某种形式降级体验 却不至于完全失效。 "渐进增强"则是从浏览器支持的基本功能开始, 首先为所有设备准备好清晰且语义化的html及 完整内容, 然后再以无侵入的方法向页面增加无 害于基础浏览器的额外样式和功能。 当浏览器升级时, 它们会自动呈现并发挥作用。 2. 请说说浏览器内核的组成? 浏览器的结构: 用户界面(UI) - 包括菜单栏、工具栏、地址栏、 后退/前进按钮、书签目录等,也就是能看到的除

每天刷Web面试题(前10天汇总)

时间秒杀一切 提交于 2020-02-01 02:46:24
一、算法题部分 1. 如何获取浏览器URL中查询字符串中的参数? function getParamsWithUrl(url) { var args = url.split('?'); if (args[0] === url) { return ""; } var arr = args[1].split('&'); var obj = {}; for ( var i = 0; i < arr.length; i++) { var arg = arr[i].split('='); obj[arg[0]] = arg[1]; } return obj; } var href = getParamsWithUrl('http://www.itlike.com?id=1022&name=撩课&age=1'); console.log(href['name']); // 撩课 2. 写一个深度克隆方法(es5)? /** * 深拷贝 * @param {object}fromObj 拷贝的对象 * @param {object}toObj 目标对象 */function deepCopyObj2NewObj(fromObj, toObj) { for(var key in fromObj){ // 1. 取出键值对 var fromValue = fromObj[key]; // 2.

web前端笔试题

亡梦爱人 提交于 2020-02-01 02:34:51
1, 判断字符串是否是这样组成的,第一个必须是字母,后面可以是字母、数字、下划线,总长度为5-20 var reg = /^[a-zA-Z][a-zA-Z_0-9]{4,19}$/; reg.test("a1a__a1a__a1a__a1a__"); 2 ,截取字符串abcdefg的efg var str = "abcdefg"; if (/efg/.test(str)) { var efg = str.substr(str.indexOf("efg"), 3); alert(efg); } 3 ,判断一个字符串中出现次数最多的字符,统计这个次数 //将字符串的字符保存在一个hash table中,key是字符,value是这个字符出现的次数 var str = "abcdefgaddda"; var obj = {}; for (var i = 0, l = str.length; i < l; i++) { var key = str[i]; if (!obj[key]) { obj[key] = 1; } else { obj[key]++; } } /*遍历这个hash table,获取value最大的key和value*/ var max = -1; var max_key = ""; var key; for (key in obj) { if (max < obj