开发环境及相关配置

   版本控制软件
      集中式和分布式

        集中式:集中式版本控制工具,版本库集中存放在中央服务器,团队成员里的每个人工作时从中央服务器下载代码,个人修改后再提交到中央服务器

        分布式:分布式版本控制工具,没有中央服务器,每个开发人员都通过clone,在本地拷贝一个完整的仓库。

      Git 与 Svn

        Svn的特点(集中式)

          1、每个版本库有唯一的URL,每个用户都从这个地址获取代码和数据

          2、获取代码的更新,也只能连接到这个唯一的版本库,同步以取得最新数据

          3、提交必须有网络连接(非本地版本库)

          4、提交需要授权,如果没有写权限,提交会失败

          5、提交并非每次都能成功。如果其他人先于你提交,会提示基于过时的版本,先更新再提交。

          6、冲突解决时一个提交速度的竞赛:手快着,先提交,平安无事;手慢着,后提交,可能产生冲突。

        Git的特点(分布式)

          1、Git中每个克隆的版本库都是平等的。你可以从任何一个版本库的克隆来创建属于你自己的版本库,同时你的版本库也可以作为源提供给他人,只要你愿意。

          2、Git的每一次提取操作,实际上都是一次对代码仓库的完整备份。提交完全在本地完成,无须别人给你授权,你的版本库你做主,并且提交总是会成功。

          3、甚至基于旧版本的改动也可以成功提交,提交会基于旧的版本创建一个新的分支

          4、Git的提交不会被打断,知道你的工作完全满意了,PUSH给他人或者他人PULL你的版本库,合并会发生再PULL和PUSH过程中,不能自动解决的冲突会提示你手工完成。

          5、冲突解决不再像是SVN一样的提交竞赛,而是在需要的时候才进行合并和冲突解决。

        Git与Svn的优缺点

          Svn优点:

            1、管理方便,逻辑明确,符合一般人思维习惯。

            2、易于管理,集中式服务器更能保证安全性。

            3、代码一致性非常高

            4、适合开发人数不多的项目开发

          缺点:

            1、服务器压力太大,数据库容量暴增。

            2、如果不能连接到服务器上,基本不可以工作

            3、不适合开源开发。

          Git的优点:

            1、适合分布式开发,强调个体

            2、公共服务器压力和数据量都不会太大

            3、速度快、灵活

            4、任意两个开发者之间可以很容易的解决冲突

            5、离线工作

          缺点:

            1、学习周期相对而言比较长

            2、不符合常规思维

            3、代码保密性差。

   PHP的运行机制和运行原理

      首先说一下PHP的运行机制,说之前先给大家介绍一下PHP的模块,PHP总共有三个模块:内核、Zend引擎、以及扩展层;PHP内核用来处理请求、文件流、错误处理等相关操作;Zend引擎用以将源文件转换成机器语言,然后再虚拟机上运行它;扩展层是一组函数、类库和流,PHP使用他们来执行一些特定的操作。比如,我们需要MySQL扩展来连接MySQL数据库;当Zend执行程序时可能会需要连接若干扩展,这时Zend将控制权交给扩展,等处理完成特定任务后返回给Zend;最后Zend将程序运行结果返回给PHP内核,它再将结果传送给SAPI层,最终输出到浏览器上。

      PHP的设计理念及特点

      多进程模型:由于PHP是多进程模型,不同请求间互不干涉,这样保证了一个请求挂掉不会对全盘服务器造成影响,当然随着时代发展,PHP也早已支持多线程模型。

      弱类型语言:和C/C++、Java、C#等语言不同,PHP是一门弱类型语言。一个变量的类型并不是一开始就确定不变,运行中才会确定可能发生隐式或显式的类型转换,这种机制的灵活性再web开发中非常方便、高效。

      Zend引擎+ext组件的模式降低内部耦合

      中间层sapi隔绝  web    server 和 php

      语法简单灵活、灭有太多规范。缺点导致风格混杂,再差的程序员也不会写出太离谱危害全局的程序

      

      PHP四层体系

      Zend引擎:Zend整体用纯C实现,是PHP的内核部分,它将PHP代码翻译(词法、语法解析等一系列编译过程)为可执行opcode的处理并实现相应的处理方法、实现了基本的数据结构(如hashtable、oo)、内存分配及管理、提供了相应的api方法供外部调用,是一切的核心,所有的外围功能均围绕Zend实现。

      Extensions:围绕着Zend引擎,extensions通过组件式的方式提供各种基础服务,我们常见的各种内置函数(如array系列)、标准库等都是通过extension来实现,用户也可以根据需要实现自己的extension以达到功能扩展、性能优化等目的(如贴吧正在使用的PHP中间层、富文本解析就是extension的典型应用)。

      Sapi:Sapi全称是Server Application Programming Interface,也就是服务端应用编程接口,Sapi通过一系列钩子函数,使得PHP可以和外围交互数据,这是PHP非常优雅和成功的一个设计,通过sapi成功的将PHP本身和上层应用解耦隔离,PHP可以不再考虑如何针对不同应用进行兼容,而应用本身也可以针对自己的特点实现不同的处理方式。

      上层应用:这就是我们平时编写的PHP程序,通过不同的sapi方式得到各种各样的应用模式,如通过webserver实现web应用、在命令行下以脚本方式运行等等。

      如果PHP是一辆车,那么车的框架就是PHP本身,Zend是车的引擎(发动机),Ext下面的各种组件就是车的轮子,Sapi可以看做是公路,车可以跑在不同类型的公路上,而一次PHP程序的执行就是汽车跑在公路上。因此,我们需要:性能优异的引擎+合适的车轮+正确的跑道。

   PHP的常见配置项

    zend.enable_gc     是否开启垃圾回收机制

    safe_mode             是否启用安全模式

    allow_url_include  是否允许通过include/require来执行一个远程文件

    allow_url_fopen     是否允许打开远程文件

    register_globals    判断是否将$_GET,$_POST等数组变量里的内容自动注册为全局变量

    enable_dl              是否允许使用dl()函数再脚本运行时加载PHP扩展

    log_errors             PHP错误报告日志功能

    error_log               错误报告日志文件路径

    error_reporting      错误级别

    max_execution_time   脚本所能运行的最长时间

    memory_limit         PHP进程能够占用的内存

    post_max_size      POST方法提交数据的最大大小限制

    file_uploads           是否允许文件上传

    max_file_uploads    一个请求允许上传的最大文件数量限制

    upload_tmp_dir     文件上传时存放文件的临时路径

    upload_max_filesize    上传文件的最大大小限制

    session.save_path     session文件存放的位置

    session.save_handle   设置session数据的存储方式

    session.use_cookies   是否使用cookie再客户端存储sessionid

    session.name  设置session名称

    extension_dir   存放扩展库的目录

    date.timezone    设置时区

    了解更多PHP配置:https://www.cnblogs.com/wujuntian/p/5768336.html

PHP面试 PHP基础知识 十一(开发环境及相关配置)的更多相关文章

  1. Ant学习-001-ant 基础知识及windows环境配置

    一.Ant 概要基础知识 Apache Ant 是一个将软件编译.测试.部署等步骤联系在一起加以自动化的一个工具,大多用于Java环境中的软件开发,用以构建应用,或结合其他开源测试工具例如 git.T ...

  2. 【Java面试】基础知识篇

    [Java面试]基础知识篇 Java基础知识总结,主要包括数据类型,string类,集合,线程,时间,正则,流,jdk5--8各个版本的新特性,等等.不足的地方,欢迎大家补充.源码分享见个人公告.Ja ...

  3. 20162312 实验一 Linux基础与Java开发环境

    实 验 报 告 课程:程序设计与数据结构 姓名:张家铖 班级:1623 学号:20162312 实验名称: Linux基础与Java开发环境 实验器材:msi GL62M 7RD 实验目的与要求:1. ...

  4. 实验一 Linux基础与Java开发环境

    实验一 (一)实验内容 基于命令行和IDE(Intellj IDEA 简易教程http://www.cnblogs.com/rocedu/p/4421202.html)进行简单的Java程序编辑.编译 ...

  5. 20182332 实验一《Linux基础与Java开发环境》实验报告

    20182332 实验一<Linux基础与Java开发环境>实验报告 课程:<程序设计与数据结构> 班级: 1823 姓名: 盛国榕 学号:20182332 实验教师:王志强 ...

  6. Android开发环境搭建相关文章列表(转载)

    Android开发虽然有所了解,但是一直没有搭建开发环境去学习,Android的更新速度比较快了,Android1.0是2008年发布的,截止到目前为止Android已经更新Android5.0.1, ...

  7. 【转】android 最新 NDK r8 在window下开发环境搭建 安装配置与使用 详细图文讲解,完整实际配置过程记录(原创)

    原文网址:http://www.cnblogs.com/zdz8207/archive/2012/11/27/android-ndk-install.html android 最新 NDK r8 在w ...

  8. android 最新 NDK r8 在window下开发环境搭建 安装配置与使用 详细图文讲解,完整实际配置过程记录(原创)

      android 最新 NDK r8 在window下开发环境搭建 安装配置与使用 详细图文讲解,完整实际配置过程记录(原创) 一直想搞NDK开发却一直给其他事情耽搁了,参考了些网上的资料今天终于把 ...

  9. Android NDK r8 Cygwin CDT 在window下开发环境搭建 安装配置与使用 具体图文解说

    版权声明:本博客全部文章均为原创.欢迎交流.欢迎转载:转载请勿篡改内容,而且注明出处,谢谢! https://blog.csdn.net/waldmer/article/details/3272500 ...

随机推荐

  1. 左手Mongodb右手Redis 通过python连接mongodb

    首先需要安装第三方包pymongo pip install pymongodb """ 通过python连接mongodb数据库 首先需要初始化数据库连接 "& ...

  2. WPF自定义控件(三)

    今天我们开始制作我们的按钮,主要的效果就是一个按钮正常状态.鼠标滑过.按下三态显示不同的图片. 首先我们需要给扩展按钮添加三个属性,分别是正常状态图片,鼠标滑过图片,按钮按下图片. 先贴出Button ...

  3. git push github 免输入账号和密码方法

    git config --global credential.helper store 打开~/.gitconfig文件,会发现多了一项: [credential] helper = store 此时 ...

  4. USACO 6.1 章节

    Postal Vans 题目大意 4*n的网格,要经过所有点的有向有环,不重复经过点的路径总数 n<=1000 题解 显然 插头dp 以4为切面 问题是,会发现 超精度 解决呢要么实现高精度,要 ...

  5. Django token 学前小知识

    1,base64 '防君子不防小人' 方法 作用 参数 返回值 b64encode 将输入的参数转化为base64规则的串 预加密的明文,类型为bytes:例:b‘guoxiaonao’ base64 ...

  6. 关于deepin下安装ssh以后root用户登陆报错的解决

    最近刚刚接触到deepin,觉得,wow,除了mac,还有这么好看的非win系统,而且第测出那个Linux,宽容度很高,非常适合我这种比较喜欢折腾的人,于是下载了deepin15版本并将其当作虚拟机成 ...

  7. 热修复设计之AOT/JIT&dexopt 与 dex2oat (一)

    阿里P7移动互联网架构师进阶视频(每日更新中)免费学习请点击:https://space.bilibili.com/474380680本篇文章将先从AOT/JIT&dexopt 与 dex2o ...

  8. 【题解】A Horrible Poem

    题目大意 给出一个由小写英文字母组成的字符串 S,再给出 q 个询问,要求回答 S 某个子串的最短循环节. 如果字符串 B 是字符串 A 的循环节,那么 A 可以由 B 重复若干次得到. 输入格式 第 ...

  9. ZR-19CSP-S赛前冲刺

    ZR-19CSP-S赛前冲刺 1 ZR-19CSP-S赛前冲刺 2 ZR-19CSP-S赛前冲刺 3 ZR-19CSP-S赛前冲刺 4 ZR-19CSP-S赛前冲刺 5 ZR-19CSP-S赛前冲刺 ...

  10. 第二节 RabbitMQ配置

    原文:第二节 RabbitMQ配置 版权声明:未经本人同意,不得转载该文章,谢谢 https://blog.csdn.net/phocus1/article/details/87281553 1.配置 ...