精华内容
下载资源
问答
  • 背景图片 来自 Markus Spiske on UnsplashProjectX是...这次ProjectX在选择后端开发语言的时候,我不会考虑我自己的熟悉程度和之前的积累,希望可以比较客观的选择一个适合的后端语言,我也可以通过这个过程了解更...
    a202c68032ce85ee5fde925e3cecfd7e.png

    背景图片 来自 Markus Spiske on Unsplash

    ProjectX是现在我在做的一个项目的代号,我计划在整个项目的过程中做更多的尝试,并且尽可能的将过程记录下来。如果感兴趣可以关注我,非常欢迎给我或是ProjectX提提你的建议。

    这次ProjectX在选择后端开发语言的时候,我不会考虑我自己的熟悉程度和之前的积累,希望可以比较客观的选择一个适合的后端语言,我也可以通过这个过程了解更多后端语言。目前计划尝试的后端语言有:PHP、JAVA、Node.js、Go、Rust、Ruby、Python。没有案例的分享都是耍流氓,我用这几个语言统一做一个简单的数据查询返回的API接口,来从服务器支持、开发环境搭建、RESTful路径设置、数据库连接、语言结构和文档社区丰富度六个方面来聊聊我自己的感受。

    语言简介

    PHP的全称是PHP:Hypertext Preprocesser (一个程序员的黑色幽默),最初Personal Home Page的简称,算是目前最流行的网站开发语言,从PHP的名称就能看出来,PHP最初就是为了开发网站而设计的编程语言。据统计目前有80%的网站是有PHP开发的,尤其著名的Wordpress就是基于PHP开发的。PHP对于我来说也是最熟悉的后端开发语言,已经用PHP开发了大概15年了,从以前开发网站到后来App的后端接口再到小程序的后端接口基本都是使用PHP。也就是因此,我的第一篇打算从PHP开始分享,毕竟比较熟悉不容易翻车。

    服务器支持

    既然是最流行的服务器端编程语言,服务器的支持绝对是最佳的,PHP通过Apache服务器可以安装在所有服务器操作系统上,包括Linux、macOS、Windows和Unix系统,就算使用其他Web服务器软件,如Nginx、Lighthttp、LiteSpeed等等也都支持,虽然可能没有Apache自带那么方便。现在云服务器的服务供应商基本上都支持携带Linux+Apache+MySQL+PHP的镜像安装。基本可以做到了开箱即用,而且对于绝大多数网络应用来说基本不需要做什么配置,直接将在本地开发环境中的代码上传到相应的文件夹就可以使用了。所以服务器支持基本上可以算是满分了,而且购买了云服务器之后基本不需要配置就可以开始部署代码,服务器配置也很快,在几个大的云服务商基本上确定了合适的服务器运算配置后,只要15分钟就能让一台LAMP服务器上线。

    dedc956c64b04ee5dacdd5dfda1cebaf.png

    LAMP构架的服务器

    IDE vs. Editor

    PHP作为解释性语言,可以不用依赖IDE,不过现在PHP的框架还是非常成熟可以提高不少开发效率,IDE的好处是能直接通过新建项目来生成这些框架的脚手架,比直接在命令行内生成要直观不少,为此我尝试了一下JetBrain的PhpStorm。虽然PhpStorm已经改成了订阅制的收费方式,不过还是小贵的。我先安装体验一下,再看看是不是值得购买。

    964bff6899248cb61909fb3c9d894c87.png

    一年一千多,还是有点小贵的

    整个安装过程还是比较快速的,直接下载后拖拽入应用程序文件夹即可。然后打开PhpStorm先做了简单的配置和插件安装,可以看到PhpStorm对于主流的一些PHP框架都是有不同程度的支持的。这样新建项目的时候就可以直接选择需要的框架来搭建脚手架程序,非常方便,对于刚刚涉猎PHP的框架还是比较不错的,例如Symfony就可以直接建立带有Demo的项目,这样就可以边学边用。

    093384c8102add4eb23429aefa6a3fb0.png

    PhpStorm直接生成Symfony项目

    不过个人比较不喜欢使用框架,而且这次ProjectX对于性能优化的要求并不是特别高,所以就不准备使用框架了,毕竟从无到有的开发还是蛮有成就感的。最终还是决定使用VS Code来做开发,结合一些VS Code的语言格式化和高亮等插件,VS Code基本能满足整体的开发需要。因为过程中可能会尝试一些新的技术,会通过学习一些已有第三方库来深度学习,所以还会通过Composer来安装一些PHP依赖库。

    基本上PHP还是选择了Editor,开发配置会更直接一些,结合一些插件基本上就能着手开发了。

    RESTful VS GraphQL

    因为ProjectX计划是跨平台的前端,所以后端会通过API的方式来实现服务,之前一直使用的是类似RESTful的API设计,毕竟对于比较复杂的后端接口来说RESTful还是有一些局限的,而且往往没有足够时间来设计完整的RESTful API。后来出现了GraphQL,这次会多花点时间研究一下,GraphQL更像一个前端向后端传输的查询语句,可拓展性更高一些,这次在PHP中就试试能否使用GraphQL的接口规范。

    在PHP中配置RESTful规范的API,主要是对路径的重写来实现相应的RESTful EndPoint可以直接重新定向到相应的PHP文件。达到路径重写需要通过加载rewrite模块就可以让Apache服务器支持路径改写,支持类似下面这样的路径来调用一个herb的资源对象。

    http://localhost/herb/{id}

    开启rewrite的方式是在httpd.conf文件中找到mod rewrite这行代码将注释标识符#去掉

    #LoadModule rewrite_module lib/httpd/modules/mod_rewrite.so

    再将服务器根文件夹中AllowOverride 从默认的None改成All,

    DocumentRoot "ServeRoot"    Options Indexes FollowSymLinks    #    # AllowOverride controls what directives may be placed in .htaccess files.    # It can be "All", "None", or any combination of the keywords:    #   AllowOverride FileInfo AuthConfig Limit    #    AllowOverride All    Require all granted

    在重启动服务器就完成了Apache的配置,接下来就是在项目的目录下通过建立 .htaccess文件来开启重写引擎和建立重写规则。通过正则表达式来匹配请求路径中的信息,然后再匹配到相应PHP文件以及PHP的传入参数。 如下是一个简单的重写规则:

    RewriteRule "^api/herb/(.+)" "/api/herb.php?uid=$1"

    完成重写规则之后,就可以在相应的PHP文件中编写业务逻辑了,例如在herb.php中根据不同的HTTP提交的请求方法来返回相应的JSON格式数据。例如一下通过Postman来测试的接口。

    49bd4409572eb2008ff08edc7a6511f9.png

    RESTful接口的返回测试

    对于PHP来说建立一个RESTful规范格式的API,还是相对简单的,不过主要会在接口设计上花比较多时间,尤其对于比较复杂的业务场景,完全按照RESTful规范设计会很困难,尤其是在需要传路多个参数的时候。

    GraphQL的出现实际上就是弥补RESTful的一些设计缺陷。不过因为之前一直没有花时间学习GraphQL,乘这次的机会深入了解一下。GraphQL基本上是一套前端发送查询语句到后端的规范,可以通过添加多个输入参数和指定返回数据的参数的方式,将数据传输变得更可控,而且还添加了数据类型的控制。

    在PHP中使用GraphQL可以通过已有的第三方库,例如graphql-php、Railt、GraphQLite、Siler以及一些框架下的库,都是不错的选择,因为graphql-php应该算是PHP下对GraphQL实现的第一个库,所以是通过Composer安装了一下,尝试了一些GraphQL的机制,的确比RESTful灵活很多。如下在Postman中测试的接口,可以通过控制查询语句来控制返回的数据结构。

    0383030c897cb1fd59579cd86e22c33c.png

    GraphQL接口的返回测试

    不过graphql-php的文档不是很完善,只提供了一些简单的操作方式,估计最终如果选择使用PHP来实现GraphQL的话,估计会自己写一个GraphQL的处理库或者找到一个完善一点的库。

    e440b5446a5ae4edd5a1b9db15f1727d.png

    对于PHP来说,无论是对RESTful还是对GraphQL的支持都中规中矩,都有第三方库支持,就算自己来做库也都不算太困难。

    数据库连接

    这个点PHP已经非常成熟了,原生的库基本就能解决所有问题,为了更适合ProjectX的和个人的习惯还是会做一定的封装,现在已有的开源框架对于这方面的支持也算是不错的,可以直接使用现有框架,当然自己写一个基础的库也可以让自己更熟悉PHP对于数据连接上的一些机制和支持性。

    语言结构

    PHP目前已经发展到了第7版,无论是面向对象的开发方式还是函数的开发方式都支持,而且PHP对于Class的支持还是中规中矩的,对于封装一些业务逻辑来说还是不错的,只是PHP作为一个弱类型的编程语言,对于变量类型的控制会比较弱一点,不过只要养成一定的开发习惯还是能规避一些这方面的问题的。

    文档社区

    作为最流行的网络应用开发语言,文档支持和社区支持非常成熟,可以在Github上找到任何类型的库解决绝大多数开发中的问题,类似CSDN、Stackoverflow这类网站上解答关于PHP的问题也非常多,PHP官方文档也支持中文,基础问题也直接能在php.net上解决。

    总结

    作为最流行的网络应用开发语言,PHP各方面都非常完善,是可以直接拿起用的后端开发语言。不过因为自己对于PHP太熟悉了,绝对挑战少了一些,所以这次基本上不会使用PHP作为后端开发语言,除非尝试下来其他语言都不适合后端开发,不过这个概率应该不大。


    希望你喜欢这次的分享,如果喜欢的话,可以点赞让我知道一下!如有不同想法或是对之后内容的建议,可以在评论区讨论一下。

    展开全文
  • 背景图片 来自 Markus Spiske on UnsplashProjectX是...这次ProjectX在选择后端开发语言的时候,我不会考虑我自己的熟悉程度和之前的积累,希望可以比较客观的选择一个适合的后端语言,我也可以通过这个过程了解更...
    0cbb85c81340b7701ee7be4d72ae699b.png

    背景图片 来自 Markus Spiske on Unsplash

    ProjectX是现在我在做的一个项目的代号,我计划在整个项目的过程中做更多的尝试,并且尽可能的将过程记录下来。如果感兴趣可以关注我,非常欢迎给我或是ProjectX提提你的建议。

    这次ProjectX在选择后端开发语言的时候,我不会考虑我自己的熟悉程度和之前的积累,希望可以比较客观的选择一个适合的后端语言,我也可以通过这个过程了解更多后端语言。目前计划尝试的后端语言有:PHP、JAVA、Node.js、Go、Rust、Ruby、Python。没有案例的分享都是耍流氓,我用这几个语言统一做一个简单的数据查询返回的API接口,来从服务器支持、开发环境搭建、RESTful路径设置、数据库连接、语言结构和文档社区丰富度六个方面来聊聊我自己的感受。

    语言简介

    PHP的全称是PHP:Hypertext Preprocesser (一个程序员的黑色幽默),最初Personal Home Page的简称,算是目前最流行的网站开发语言,从PHP的名称就能看出来,PHP最初就是为了开发网站而设计的编程语言。据统计目前有80%的网站是有PHP开发的,尤其著名的Wordpress就是基于PHP开发的。PHP对于我来说也是最熟悉的后端开发语言,已经用PHP开发了大概15年了,从以前开发网站到后来App的后端接口再到小程序的后端接口基本都是使用PHP。也就是因此,我的第一篇打算从PHP开始分享,毕竟比较熟悉不容易翻车。

    服务器支持

    既然是最流行的服务器端编程语言,服务器的支持绝对是最佳的,PHP通过Apache服务器可以安装在所有服务器操作系统上,包括Linux、macOS、Windows和Unix系统,就算使用其他Web服务器软件,如Nginx、Lighthttp、LiteSpeed等等也都支持,虽然可能没有Apache自带那么方便。现在云服务器的服务供应商基本上都支持携带Linux+Apache+MySQL+PHP的镜像安装。基本可以做到了开箱即用,而且对于绝大多数网络应用来说基本不需要做什么配置,直接将在本地开发环境中的代码上传到相应的文件夹就可以使用了。所以服务器支持基本上可以算是满分了,而且购买了云服务器之后基本不需要配置就可以开始部署代码,服务器配置也很快,在几个大的云服务商基本上确定了合适的服务器运算配置后,只要15分钟就能让一台LAMP服务器上线。

    f98d57f856f70388d64abc84e84739f8.png

    LAMP构架的服务器

    IDE vs. Editor

    PHP作为解释性语言,可以不用依赖IDE,不过现在PHP的框架还是非常成熟可以提高不少开发效率,IDE的好处是能直接通过新建项目来生成这些框架的脚手架,比直接在命令行内生成要直观不少,为此我尝试了一下JetBrain的PhpStorm。虽然PhpStorm已经改成了订阅制的收费方式,不过还是小贵的。我先安装体验一下,再看看是不是值得购买。

    2f9264577bc22ab5942ffd76947823c7.png

    一年一千多,还是有点小贵的

    整个安装过程还是比较快速的,直接下载后拖拽入应用程序文件夹即可。然后打开PhpStorm先做了简单的配置和插件安装,可以看到PhpStorm对于主流的一些PHP框架都是有不同程度的支持的。这样新建项目的时候就可以直接选择需要的框架来搭建脚手架程序,非常方便,对于刚刚涉猎PHP的框架还是比较不错的,例如Symfony就可以直接建立带有Demo的项目,这样就可以边学边用。

    9f23eca98f467533c0671b7321a16dd6.png

    PhpStorm直接生成Symfony项目

    不过个人比较不喜欢使用框架,而且这次ProjectX对于性能优化的要求并不是特别高,所以就不准备使用框架了,毕竟从无到有的开发还是蛮有成就感的。最终还是决定使用VS Code来做开发,结合一些VS Code的语言格式化和高亮等插件,VS Code基本能满足整体的开发需要。因为过程中可能会尝试一些新的技术,会通过学习一些已有第三方库来深度学习,所以还会通过Composer来安装一些PHP依赖库。

    基本上PHP还是选择了Editor,开发配置会更直接一些,结合一些插件基本上就能着手开发了。

    RESTful VS GraphQL

    因为ProjectX计划是跨平台的前端,所以后端会通过API的方式来实现服务,之前一直使用的是类似RESTful的API设计,毕竟对于比较复杂的后端接口来说RESTful还是有一些局限的,而且往往没有足够时间来设计完整的RESTful API。后来出现了GraphQL,这次会多花点时间研究一下,GraphQL更像一个前端向后端传输的查询语句,可拓展性更高一些,这次在PHP中就试试能否使用GraphQL的接口规范。

    在PHP中配置RESTful规范的API,主要是对路径的重写来实现相应的RESTful EndPoint可以直接重新定向到相应的PHP文件。达到路径重写需要通过加载rewrite模块就可以让Apache服务器支持路径改写,支持类似下面这样的路径来调用一个herb的资源对象。

    http://localhost/herb/{id}

    开启rewrite的方式是在httpd.conf文件中找到mod rewrite这行代码将注释标识符#去掉

    #LoadModule rewrite_module lib/httpd/modules/mod_rewrite.so

    再将服务器根文件夹中AllowOverride 从默认的None改成All,

    DocumentRoot "ServeRoot"    Options Indexes FollowSymLinks    #    # AllowOverride controls what directives may be placed in .htaccess files.    # It can be "All", "None", or any combination of the keywords:    #   AllowOverride FileInfo AuthConfig Limit    #    AllowOverride All    Require all granted

    在重启动服务器就完成了Apache的配置,接下来就是在项目的目录下通过建立 .htaccess文件来开启重写引擎和建立重写规则。通过正则表达式来匹配请求路径中的信息,然后再匹配到相应PHP文件以及PHP的传入参数。 如下是一个简单的重写规则:

    RewriteRule "^api/herb/(.+)" "/api/herb.php?uid=$1"

    完成重写规则之后,就可以在相应的PHP文件中编写业务逻辑了,例如在herb.php中根据不同的HTTP提交的请求方法来返回相应的JSON格式数据。例如一下通过Postman来测试的接口。

    6f320d282e26f50d13256b2515cc34bf.png

    RESTful接口的返回测试

    对于PHP来说建立一个RESTful规范格式的API,还是相对简单的,不过主要会在接口设计上花比较多时间,尤其对于比较复杂的业务场景,完全按照RESTful规范设计会很困难,尤其是在需要传路多个参数的时候。

    GraphQL的出现实际上就是弥补RESTful的一些设计缺陷。不过因为之前一直没有花时间学习GraphQL,乘这次的机会深入了解一下。GraphQL基本上是一套前端发送查询语句到后端的规范,可以通过添加多个输入参数和指定返回数据的参数的方式,将数据传输变得更可控,而且还添加了数据类型的控制。

    在PHP中使用GraphQL可以通过已有的第三方库,例如graphql-php、Railt、GraphQLite、Siler以及一些框架下的库,都是不错的选择,因为graphql-php应该算是PHP下对GraphQL实现的第一个库,所以是通过Composer安装了一下,尝试了一些GraphQL的机制,的确比RESTful灵活很多。如下在Postman中测试的接口,可以通过控制查询语句来控制返回的数据结构。

    02ac4f10e8687f46d233974476020b6b.png

    GraphQL接口的返回测试

    不过graphql-php的文档不是很完善,只提供了一些简单的操作方式,估计最终如果选择使用PHP来实现GraphQL的话,估计会自己写一个GraphQL的处理库或者找到一个完善一点的库。

    6eea5bc0c0b3b1ee76fdcbfe2503e45a.png

    对于PHP来说,无论是对RESTful还是对GraphQL的支持都中规中矩,都有第三方库支持,就算自己来做库也都不算太困难。

    数据库连接

    这个点PHP已经非常成熟了,原生的库基本就能解决所有问题,为了更适合ProjectX的和个人的习惯还是会做一定的封装,现在已有的开源框架对于这方面的支持也算是不错的,可以直接使用现有框架,当然自己写一个基础的库也可以让自己更熟悉PHP对于数据连接上的一些机制和支持性。

    语言结构

    PHP目前已经发展到了第7版,无论是面向对象的开发方式还是函数的开发方式都支持,而且PHP对于Class的支持还是中规中矩的,对于封装一些业务逻辑来说还是不错的,只是PHP作为一个弱类型的编程语言,对于变量类型的控制会比较弱一点,不过只要养成一定的开发习惯还是能规避一些这方面的问题的。

    文档社区

    作为最流行的网络应用开发语言,文档支持和社区支持非常成熟,可以在Github上找到任何类型的库解决绝大多数开发中的问题,类似CSDN、Stackoverflow这类网站上解答关于PHP的问题也非常多,PHP官方文档也支持中文,基础问题也直接能在php.net上解决。

    总结

    作为最流行的网络应用开发语言,PHP各方面都非常完善,是可以直接拿起用的后端开发语言。不过因为自己对于PHP太熟悉了,绝对挑战少了一些,所以这次基本上不会使用PHP作为后端开发语言,除非尝试下来其他语言都不适合后端开发,不过这个概率应该不大。


    希望你喜欢这次的分享,如果喜欢的话,可以点赞让我知道一下!如有不同想法或是对之后内容的建议,可以在评论区讨论一下。

    展开全文
  • php中if用法详解_后端开发php中if用法是:1、指定条件为真,则执行代码;2、【if…else语句】当条件为true,则执行代码,当条件为false,则执行另一端代码。1、首先在网上下载一个快速搭建本地服务器的免费软件...

    php中if用法详解_后端开发

    php中if用法是:1、指定条件为真,则执行代码;2、【if…else语句】当条件为true,则执行代码,当条件为false,则执行另一端代码。

    8ef469e474e047f810b3381471f23515.png

    1、首先在网上下载一个快速搭建本地服务器的免费软件WampServer,百度搜索“WampServer”即可找到下载。

    2fcea375d4495cfd2b652af309c478e7.png

    2、下载好后,双击安装WampServer,一直选择“next”下一步即可完成安装。

    aee6e061489eed31fe2c49ad55fcc336.png

    d5ad1227fad9fd32a11dfd94abbf26cc.png

    ef86e38014473fbabe8645f09c7f6f5d.png

    50d977e34ca34f8e2673b1b343863a33.png

    7cc0c5fed6553368dce84623766ee140.png

    软件语言默认是英文,我们可以修改回中文。安装完成后,打开软件,在电脑右下角软件小图标右击,选择Language,选择语言“Chinese”即可。

    c2a00f3ce5cc550ffa37503205f2e106.png

    c语言puts函数用法是什么?_后端开发

    c语言中puts()函数是用来向标准输出设备输出字符串并换行的,具体为:把字符串输出到标准输出设备,将“\0”转换为回车换行。其调用方式为:“puts(s)”;其中s为字符串字符(字符串数组名或字符串指针)。

    单击软件小图标,选择www目录就是本地服务器的根目录;选择phpmyadmin即可打开数据库。

    eeb16ef886dee39ea9c5d8380c9cb79e.png

    1db001263f92740c2281f08e562c813d.png

    本地服务器就这么简单就搭建成功了,浏览器输入“localhost”即可访问本地服务器根目录。

    624c10c1b17757282f54dd152698187d.png

    如图所示如果没能成功访问,就是服务器没有启动,我们检查WampServer的服务是否启动,启动了的和没启动图标不同,没启动的是红色的。我们可以启动全部服务。

    3bd6495b710ef0ad053caefc72f2c294.png

    f34a02060a98cc821310f609393de3db.png

    如果还是没能成功访问本地服务器,那就是这台机子的80端口被占用,通常是安装了同类型的软件用到了Apache而被占用,找出来把它停用之后重启WampServer即可。

    推荐教程: 《php教程》

    展开全文
  • 详细后端开发知识讲解

    万次阅读 多人点赞 2018-05-15 16:13:07
    前言本片文章面向后端开发,讲述后端在进行开发时所使用的WEB服务器的工作流程,正所谓知根知底,WEB服务器后端开发人员日常用于调试WEB程序和与前端通讯的一种方式!WEB服务器最为强大的地方是能够执行WEB程序,...

    一. 前言

    本片文章面向后端开发,讲述后端在进行开发时所使用的WEB服务器的工作流程,正所谓知根知底,WEB服务器是后端开发人员日常用于调试WEB程序和与前端通讯的一种方式!

    WEB服务器最为强大的地方是能够执行WEB程序,其WEB程序的编程语言并没有明确的规定,因为只要你所使用的服务器支持这样的程序就可以了!

    WEB服务器更像是一个平台,在此平台上编写软件我们称其为WEB编程,注:WEB编程下有许多规范比如CGI,FastCGI等等,这个是要看服务器的支持范围!

    不同服务器所使用的规范不同,比如JSP服务器只能运行由JAVA EE编写的WEB程序,不能用于运行像C/C++、Python等编程语言编写而成的WEB程序!

    通常情况下的WEB服务器所使用的编程规范均为CGI编程、只能运行CGI规范的程序,除了一些例外的WEB服务器,比如JSP服务器!

    二. CGI规范,WEB服务器执行过程

    什么是CGI规范?

    CGI是Common Gateway Interface的缩写,其意义为公用网关接口,意思可以理解为:在WEB服务器上运行一个程序或脚本,并且WEB服务器要将脚本执行结果返回给浏览器(客户端)!

    规范从何而谈?

    规范的意思是,无论你使用任何语言编写,都必须使用输出函数(cout,printf,print)输出HTML格式的数据信息,WEB服务器根据这些信息传递给浏览器,浏览器HTML树并将其显示到浏览器当中,即为一个WEB页面!

    更加深层次的来说其实,无论你使用什么语言编写,只要在WEB服务器中的配置文件中,使其支持CGI编程,然后将你编译完成的二进制可执行文件后缀名改为.cgi,最后前端页面在使用get或post方法请求这个WEB程序,WEB服务器会自动执行这个程序并将其结果送回给浏览器(TCP/IP协议)!

    实际执行是由操作系统来完成的,只是WEB服务器将程序中打印输出的字符信息给重定向到WEB服务器当中了,即WEB服务器在调用你的CGI程序时会使用一条操作系统都有的命令,重定向:

    >>

    printf或cout等打印函数的底层实现过程是将数据写入到显存中,根据要打印字符的位置并把位置写入到显存下,GPU会根据显存数据在屏幕点亮像素点中对应的二极管(RGB),一般字符字体都是由操作系统来完成的,因为字体的不同,笔画也就不同!printf会把要打印的字符数据转交给操作系统,在从用户态到内核态之间的转换,在到显存,且也要考虑编码的问题,因为不同的编码对应不同的数据,printf只会移交ASCII(最底层是没有字符这个概念的只有二进制码,而二进制码可以转换成ASCII码)码,操作系统需要根据当前程序使用的编码,并将ASCII码转换成当前编码要输出的字符,并且操作系统也要考虑屏幕分辨率,比较分辨率的不同像素点占用就不同!

    其当服务器在执行CGI程序时,也可以不用把程序后缀改为.CGI,你可以在配置文件中增加支持的扩展后缀名:.exe、.py、.c、.elff(ARM可执行文件/Linux可执行文件,Linux就是为ARM设计的)

    注意如果你配置成源文件的格式需要WEB服务器的支持,比如apache服务器,仅支持py文件,apache服务器会自动编译.py文件并执行!

    如果是在Linux或MAC系统下需要设置目录权限:

    chown -R 555 //所有访问权限

    如何接受从服务器传递来的信息?

    当我们前端页面向WEB服务器发送一个请求时(get/post)会有一个传参,里面包含着请求数据,比如:

    https://www.zzhblog.cn/c.cgi/?utm_source=csdnbar

    其意思为,请求www.zzhblog.cn服务器下的c.cgi程序,并向其传递一个参数,参数名为:utm_source,参数数据为:csdnbar

    也有这样的:

    https://www.zzhblog.cn/?utm_source=csdnbar

    没有请求的程序名,其实是WEB服务器后台给隐藏掉了,你可以在自己的WEB后台中配置默认文件,即输入网站地址而无需指定文件名,访问即返回默认文件!

    或者隐藏请求文件名,WEB服务器会把这些信息放到报文头了,浏览器接受到之后会自动隐藏!

    那么我们要怎样得到传递来的信息呢?这里就需要使用CGI提供的模块了,CGI提供了C/C++版的模块和Python等的模块,使用这些模块里的Get方法可以轻而易举的获取后台服务器传递过来的信息,然后在对这些数据进行处理,并把处理结果重定向给WEB服务器,最后WEB服务器将结构返回给浏览器,注意结果必须以HTML格式返回!

    整个执行过程都是经过HTTP协议格式规范来的!

    不过目前有的WEB服务器已经开发出自己的WEB服务器编程语言,也就是说该WEB服务器只能运行指定运行编译的程序,并且该语言下提供了很多较为方便的模块,可以调用直接读取一些相关数据,和处理数据的模块!

    关于C/C++方面的WEB程序开发

    C/C++编写WEB程序开发效率实在是非常之低,因为通常情况下我们做WEB服务器处理,一般都是对字符的解析,而C/C++传递过来的GET或POST数据是一个完整的URL和报文,需要C/C++自己去解析这些数据,不像其他编程语言已经为其解析完成,拿过来直接处理即可,而且C/C++对字符处理方面库支持本身就很差,需要开发人员手动编写字符处理库,所以这也是为什么大家不愿意使用C/C++做WEB服务器开发,因为要写很多代码,即使是由CGI模块的支持,但CGI模块只能用于获取WEB服务器传递过来的数据!

    再则,C/C++本身就是一个不是易学,且要考虑内存泄漏问题的一个编程语言,现在很多编程语言会自动帮你释放不用且丢失的内存,解决内存泄漏,也就是托管式代码平台,经典的有:.net

    C/C++WEB服务器开发效率与其他编程语言对比

    C/C++需要编写很多代码来完成某个任何,极其降低后端开发效率,但是也提高个人编程能力,现在很多编程语言都提供了很多模块,来完成某些任何,甚至可以说不是编程语言,是脚本,专门调用C/C++写的代码,比如Python!

    由于Python简单,模块多,可以简单调用模块处理许多复杂模块,所以很收后端开发人员的欢迎!

    有的时候没有CGI模块,WEB服务器在开发文档中会告诉你,参数会存放在哪儿,哪个临时文件中,或直接利用C/C++传参的方式传递:

    a.out aaa aaa

    a.out代码:

    int main(int x,int *a[]){
    }

    这是最经典的方式,x代表参数数量,a代表参数!

    a一般是个数组指针,指向每个参数!

    for(int i = 0;i < x;++i){
    printf("%s",*a[i]);
    }

    CGI与FastCGI

    CGI程序只能被请求一次,也就是说一次只能执行一个客户端发来的请求,假如说有一百个客户端同时请求这个程序,那么该程序要一个一个的执行!

    FastCGI就是CGI的升级版,该规范可以同时以多线程的方法来执行CGI程序,一百个客户端同时请求CGI程序时,服务器就会同时执行一百个CGI程序来处理这些客户端,可以在WEB服务器的配置文件中修改选择对应的CGI和FastCGI方法,WEB服务器会根据这些方法来做对应的规范!

    执行效率与算法

    在前端把数据传递到后端以后,后端要着手处理这个数据,就拿搜索引擎为例子:当我们在搜索引擎中输入相关数据时,要知道,在庞大的万维网平台中,网页资源几乎数不胜数,每天都会要上亿的新网页诞生。

    搜索引擎中有一个叫蜘蛛的模块,用于将这些数据爬下来,也就是网络爬虫,保存到服务器本地上,假设你的搜索引擎服务器中有数百亿条数据,并且网页路径和域名,网页名在数据库里存储好的,那么当用户在浏览器里输入某个关键字时,就会找到海量的相同数据,那么后端人员要做的是将这些数据以热度并排名按从大到小的方式出现在搜索页面的下拉框里,供用户挑选,那么此时就考虑到算法的要求了,倘若算法太复杂,那么后端执行个一两分钟才返回结果那么用户体验是不是就很差?

     

    三. HTTP协议规范

    这里不做详细介绍,因为博主之前有写过对HTTP/HTTPS协议规范的详细介绍,所以这里简明摘要!

    HTTPS之所以叫HTTPS是因为在使用TCP协议加密时通过SSL算法进行加密,HTTPS传输过程比HTTP要更加耗时!

    其次使用HTTPS握手过程需要证书验证,所以WEB服务器方也必须支持SSL协议!

    在浩荡的互联网中,就像开车一样,当我们开一辆货车运载资源时,难免会遇上堵车,那么此时就需要交通法则,来规定我们怎样传输,从而避免网络堵塞的情况,同时也要避免两辆车互相撞在一起导致数据丢失,发生丢包的状况,所以HTTP协议规范用语规定互联网中应该怎样传输数据,比如HTTP协议规范确定使用TCP协议来传递数据,防止因为网络拥堵或堵塞导致丢包的现象,实则上路线的选择是由猫(调制转换器)来决定的,猫会根据当前连接的线路状况来确定最优的传输路线,而TCP只是规定怎样来完成这次的传输,传输路线是由猫来完成的,以及收,收到之后猫会把数据发送给网卡,网卡解析数据在发送给上层,也就是形成了网络七层的概念!

    以上的APDU、PPDU即为封装,因为上层需要把自己的数据封装到一个包里,然后发给下层,下层在把这个数据拆开翻译意思,在根据意思添加自己的报文格式进去,即形成了APDU、PPDU包格式!

    假如我要向IP为1.0.0的地方发送一个A的字符,那么需要填写IP地址和数据段信息,然后发送给传输层,传输层在把这个数据拆开分析其意思,然后在进行格式转换,压缩,确定传输方式,在传送给下一层,这样做的方法是为了确保不同的数据结果格式上的歧义问题(表示层以后的层格式是统一的,所以需要表示层来统一格式),然后在到物理层在转换成BIT的电路信号方式确定最优路线发送到指定路由下,路由器接收到之后呢,在一步一步按照前面的步骤拆包,一步一步分析包,最终发送到电脑上的指定程序下!

    其实像应用服务器,是没有七层这么个概念的,实则上就三层,应用层选择好路径,数据和方法,表示层分析数据和方法,并对这些格式进行压缩,加密然后传递给传输层,传输层在拆开确定方法,修改报文格式,增加新的包头,直接发送给物理层,由猫直接发送出去,在TCP协议中无需经过HTTP协议,HTTP协议只在WWW开头的万维网域名下有效!

     

    相关连接:HTTP/HTTPS协议原理HTTP/HTTPS协议原理HTTP协议层开发

    展开全文
  •  因为是第一次真正接触后端开发,从编码到部署服务器到上线,所以做个笔记,也供和我一样的开发小白一些参考。 一、前期工作:开发环境与工具:  1. 编程语言:Java #笔者还没学PHP,只想到了Java.  2. (后端)...
  • 一文看懂Web后端开发

    2021-03-20 23:53:34
    后端开发(Back-End Development,也称服务端开发、服务器端开发等)是创建完整可运行的Web应用服务端程序(服务端程序和资源合称为后端,即在服务器上运行的、不涉及用户界面的部分)的过程,是Web应用程序开发的一...
  • java后端开发学习路线

    2020-06-01 10:41:36
    文章目录java后端开发学习路线编程基础java语言语法基础JVM并发/多线程数据结构和算法数据结构算法计算机网络数据库/SQL操作系统设计模式研发工具应用框架后端spring全家桶服务器软件中间件分布式/微服务微服务发现/...
  • 需要熟悉Apache、NginX、Tomcat、WildFly、Weblogic等Web服务器和应用服务器的使用,熟悉面向对象的设计原则,熟悉基于JSP和Servlet的Java Web开发,熟练使用JSTL和EL编写无脚本动态页面,熟练使用Java语言进行面向...
  • 后端开发入门

    2020-06-10 14:29:08
    完全独立于语言的文本格式, 是一种理想的数据交换语言 前后端数据传输方式: HTTP的请求方法: GET 查看; 向数据库索取数据 PUT 更新; 向服务器端发送数据, 改变信息, 用于修改数据内容, 类似update; 作用...
  • C++后端开发技术栈

    2020-09-08 15:07:21
    作为一名C++程序员,尤其是想在互联网开发热潮中有一席之地,转做后端开发,需要了解未来的工作所需要用到的一些技术栈,好为自己好好规划未来的职业生涯。 先列一下目前我能想到的: c++语言,面向对象, stl库等 ...
  • JAVA后端开发浅谈

    千次阅读 2020-02-28 16:00:40
    两个阵营的开发基本上都是各自围绕着各自的开发语言(php/Java),选取最为兼容合适的框架结构和数据库,然后进行服务器端的开发。以下附上PHP和Java语言的区别介绍和原文链接: 《php和java的区别有哪些》 php中文...
  • 微信小程序后端开发关键点指引

    千次阅读 2019-04-27 21:09:23
    开发微信小程序需要前后端一起配合,前端通过微信提供的...调用微信提供的API时,后端开发关键点有两个: 一、在前端调用wx.login() 获取 临时登录凭证code之后,将code字符串发送给后端,后端通过auth.code2Sessi...
  • Java后端开发学习路线

    2020-07-22 10:14:47
    文章目录编程基础Java语言语言基础JVM虚拟机并发/多线程数据结构与算法数据结构算法计算机网络数据库/SQL操作系统设计模式开发工具集成开发环境Linux操作系统代码管理工具项目管理/构建工具应用框架后端Spring家族...
  • Python是一个强大的面向对象的程序设计语言,在人工智能领域,在网络爬虫、服务器开发、3D游戏、网络编程、数据分析、Web开发、运维、测试等多个领域都有不俗的表现,但学习的知识点也很多,实战技巧复杂,那么...
  • PHP是后端语言,因为php是一种创建动态交互性站点的强有力的服务器端脚本语言。PHP 是免费的,并且使用非常广泛。同时,对于像微软 ASP 这样的竞争者来说,PHP 无疑是另一种高效率的选项。PHP即“超文本预处理器”,...
  • JavaScript并不是新推出的脚本语言,但随着AJAX技术的兴起,这种在客户端运行,不浪费服务器端的资源,能建立良好的用户交互界面的脚本,得到了广泛的应用。与此同时网络编程语言与JavaScript变量的交换,也成了讨论...
  • 最近开始接触后端开发,原本在Python跟Java之间徘徊,之所以不选择其他语言,主要是这两个语言都有点基础,尤其是Java用了几年,用起来个跟顺手些,虽然Java也一年多没用了,不过接触几天之后,感觉就又都回来了。...
  • 用Django做Web后端开发现在Python的用途愈来愈广,服务器、Web、游戏、爬虫、数据分析以及人工智能学习之路还很长技术之路不能回头陷进去就出不来就跟恋爱一般,学习中、项目中印象笔记、有道云笔记、Onenote都记了...
  • 1、前端开发: 网站的“前端”是与用户直接交互的部分,包括你在浏览网页...2、后端开发: 为了让服务器、应用、数据库能够彼此交互,后端工程师需要具有用于应用构建的服务器语言,数据相关工具,PHP框架,版本控制
  • Java后端开发工作 - 写接口

    千次阅读 2020-04-15 16:52:22
    我在公司的工作内容是,对于一个BS应用,负责服务器开发工作,Java语言。与前端开发人员合作,最终提供给前端RESTFUL接口,保证页面正常响应。 经验之谈 一个接口可以理解为一个业务逻辑,一个业务逻辑可以由1~...
  • 后端开发基础——PHP

    2019-11-05 17:55:05
    PHP (hybertextPreprocessor),PHP在服务器上制行。 PHP语言的基本组成:PHP脚本可以在文档的任何位置,<?php ?> PHP区分大小写 echo语句,一次输出多个,变量逗好隔开;print为函数,点号隔开(串接),...
  • 后端开发基础—PHP 什么是PHP语言? 超文本预处理器 (Hypertext Preprocessor) 一种使用广泛的开源的脚本语言,常用于网页开发 PHP脚本在服务器上执行 概述 脚本范围:<?php ?> 注释://、#、/* */ echo和...
  • 1.后端开发能力 1)熟悉JAVA语言,了解常见算法 2)熟悉web.xml配置,熟悉SSH/SSM框架配置,了解SSH/SSM框架执行机制 3)熟悉SQL语句 2.前端能力 1)熟悉jQuery 2)熟悉javascript,了解CSS+DIV布局 3.服务器运维...
  • 1 什么是wsgi,uwsgi, uWSGI?(简单,可跳过直接问扩展问题)(考察Django网络请求处理流程/生命周期) wsgi协议:一种实现...uWSGI 是一个全功能的 HTTP 服务器,他要做的就是把 HTTP 协议转化成语言支持的网络协
  • PHP是在服务器端执行的脚本语言,与C语言类似,是常用的网站编程语言。PHP独特的语法混合了C、Java、Perl以及 PHP 自创的语法。利于学习,使用广泛,主要适用于Web开发领域。PHP多久能学会?PHP几乎是入门最简单的一...
  • 后端开发基础——SQL SQL概述 数据库:好比物流企业的仓库。用户从Web服务器浏览网站,而服务器通过SQL语言指令从数据库系统返回数据,最终经过web包装后返回给用户。 数据库系统构成:软件,服务接口(数据库...
  • php不可以写前端,因为PHP主要负责更高层面的业务数据...PHP是在服务器端执行的脚本语言,与C语言类似,是常用的网站编程语言。PHP独特的语法混合了C、Java、Perl以及 PHP 自创的语法。利于学习,使用广泛,主要适...
  • node 后端开发(四)

    2019-08-24 18:19:49
    转而研究Go语言。 node.js 适合小型,实时,事务型服务器网站。 GO更适合构建大型服务器网站。 node.js 出现的背景:为了解决web服务器的高并发性能问题,有哪些性能问题: 1. 缩短发送到响应的时长: 2. ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,320
精华内容 528
关键字:

服务器后端开发语言