❶ 高级语言排行
编程语言的受欢迎程度、学习的人群数量,以及由于人工智能的兴起,最热门的编程语言排行榜也发生了变化。让我们来看看。
可以看出,Python现在是最受欢迎的程序员编程语言。那么,很多大公司都把Python作为自己旗下人工智能的开发语言,比如亚马逊、谷歌、FACEBOOK等等。那么,如何让自己使用Python开发的机器学习模型快捷低成本的跑起来,并且深度兼容TensorFlow?Google 针对人工智能发布了AIY Projects(AIY计划),其目标是让每个Maker(创客)都能DIY自己的 AI 人工智能产品,让更多人能学习、探索并体验人工智能。对人工智能领域以及正在学习Python的程序员或者创客们,可以去了解下谷歌的这个项目。
❷ php是什么
PHP(PHP:Hypertext Preprocessor递归缩写)中文名字是:“超文本预处理器”,是一种广泛使用的通用开源脚本语言,适合于Web网站开发,它可以嵌入HTML中。编程范型是面向对象、命令式编程的,截止2019年4月24日为止,最新的版本是PHP 5.6.0(28 Aug 2014),其操作的系统为windows/linux/Mac跨平台。
(2)php编译运行说法扩展阅读:
PHP的功能
1、创建博客
使用PHP创建博客wordpres,可以轻松创建博客。即使您不具备PHP知识,也可以使用它,但如果您可以编写PHP,则可以自定义您的博客并创建主题。
2、网站开发
60%全球互联网网站采用php技术,80%国内互联网网站使用php开发。这些网站包含购物网站,政府企业网站,QQ空间,论坛博客等等。
3、移动端微网站开发以及小程序
移动设备的普及为移动互联网的快速发展奠定了基础!手机淘宝网站,手机京东网站等等, 微信公众号应用中的微网站。
❸ PHP,JSP,ASP是什么干什么用的之间有什么关系吗
PHP,Hypertext Preprocessor,最初在95年问世(那时以前叫Personal Home Page)。PHP最初是制作动态网页的服务器端脚本语言,但现在PHP已经可以作为command line运行有GUI的standalone的程序。现在是PHP Group在开发和管理PHP的规则,功能等。但PHP大都用在dynamic webpage scripting上,好象没听过谁用它开发desktop application。
PHP使用率是制作动态网页的几种语言(JSP,ASP,ASP.NET, ColdFusion, Ruby, SHTML)中最高的。因为PHP在95年已经问世至今,以有相当数量的开发者。我们熟知的国际权威网络全书Wikipedia有90%用PHP写的,而且国外流行多年的“校内网”FaceBook 也全部用PHP写的,同时Yahoo, Sony官方,Pepsi百事官方这些网站都是用PHP的。根据维基网络(Wikipedia)的说法,PHP被超过20,000,000的网站所用,被超过1,000,000的网页服务器所用。目前到2008五月,PHP最新版本为5.2.6。
PHP不仅使用率高,而且能兼容各类平台。它可以在大多数网页服务器上运行(如:MS IIS,Apache),大多数操作系统上运行(如:Windows, UNIX, Linux)。而且PHP支持很大多数牌子的数据库:MySQL, Informix, Oracle, Sybase, Solid, PostgreSQL, Gerneric ODBC等。
结构方面,虽比JSP,ASP.NET差点,PHP也有很多Framework可用。微软的ASP.NET结构是出名的,JSP的MVC结构也很厉害,所以开发大网站ASP.NET,JSP都很快。而PHP Group也为此付出很大努力,来开发自己特有的结构适应不同类型的大网站的需求。常见的PHP的Framework有:CakePHP, PRADO, Symfony, Zend等。
另外LAMP结构,是PHP最常用的开发模式,即是配合Linux, Apache, MySQL, PHP,合称LAMP。个人认为这种方式才是ASP.NET,PHP,JSP中最简单的。
3. 说说JSP。(本人工作中用的最多的就是JSP)
JSP, JavaServer Pages 是Java技术的一部分,可以说是Java Platform Enterprise Edition的一部分(JAVA主要3个大技术,Java SE, Java EE, Java ME)。软件开发者可以用JSP来动态生成HTML,XML或者其他的文档。然后把文档response给网页用户。这项技术,可以用Java里的所有定义过的library来支持它的功能,所以JSP的API和普通Java EE的API一样。
JSP里还有很多有功能的XML tag(如:<jsp:include>,<jsp:useBean)。这些都是JAVA内置功能,不需要导入新的外置 library。这些XML tag,可以在很多Web Server里使用(如:Apache, Apache TomCat, WebLogic等)。
JSP在编译后就完全和Servlet一样了。JSP页面在第一次被用户访问的时候,首先被JAVA 编译器,编译成Java Servlet Class。然后编译后Servlet Class,在以后被用户访问时,直接在JVM里运行,由JSP Web Container来输出HTML给用户。JSP这种“首次访问-预编译”的运行方式比传统PHP(PHP 4和PHP以前版本),过时的ASP(所有版本的ASP),要快很多。(网络一位网友作过一个1万次For Loop,循环的测试,结果发现JSP比传统PHP,ASP快尽10被的速度就完成运算)。预编译的运行方式后来被PHP5效仿,ASP.NET也是预编译的。当然JSP还有一个好处,就是可以直接用纯Java (无HTML),来写一个Servlet,直接在JVM运行后,由JSP Web Container输出HTML给用户。只是Servlet有的时候写一些presentation tier的东西很麻烦,因为它不能融合XML和输出逻辑在一起。所以一般Servlet用于纯Java的business logic逻辑。
JSP的tag还可以由用户自己来创造和使用,这个和ASP.NET里的user-defined controls差不多。
MVC, Model-View-Controller,是JSP的普遍开发架构,用来把JSP技术中的presentation, business logic, data storage三层清楚的分开。这样使开发过程更佳清楚明了,便于开发,维护。常用的MVB架构有:Barracuda, Apache Struts和Spring。JSF,JavaServer Faces是一个由SUN官方开发的Framework,是模仿ASP.NET的event-driven开发模式,和ASP.NET非常相似。但SUN 并没有让JSF替代JSP,相反JSF的开发者少之又少,但是据说现在JSF或JSP配合RAD(AJAX)开发很流行(校内网就是这样,而且结合Struts)。
4. ASP(Active Server Pages), ASP.NET 两个分别是 动态网页开发语言,动态网页开发语言和结构
(1) 关于ASP的淘汰
ASP, Active Server Pages已经过时了, 但因为其出现的早,96年就有了,所以现在有些中小网站还用(但,使用最多最广的是PHP,最初于95年现世。ASP是微软第一代动态网页开发语言,只能在Windows系统 + MS IIS服务器平台下运行。
Wikipedia, Facebook, 网络等都用PHP,PHP学习的简单度和ASP差不多;JSP稍微难点,JSP用的一般都是银行,购物等安全性较高的网站,Google也用JSP)。但随着开发者的各种需求,ASP以后可以被ASP.NET取代,因为微软停止对其的一切技术维护与功能更新。ASP.NET是革新版本的ASP(注意是“革新版本”,而非“改进版本”),或者说是完全新一代的Dynamic Web Scripting。
ASP代表着传统的dynamic web scripting,与ASP.NET没什么关系,学了确实也没用。因为ASP不象CGI(Common Gateway Interface),CGI是动态网站制作的始祖,所有ASP,JSP,PHP什么的都根据CGI演化而来,而且ASP,PHP,JSP都包含了些 CGI的东西;而ASP却没有被衍生出任何新技术,ASP.NET也不算基于ASP,只能说ASP.NET开发理念,library,功能完全是基于.NET的其它组件。
其实PHP,JSP,ASP明白其中一种,其它的都很容易学会了。如果非要学学传统的dynamic web scripting,那就学学PHP吧,不比ASP难,但比ASP功能多,稳定性好,PHP5运行速度也比ASP快很多(JSP稍难因为要学点 Java)。学了PHP或JSP什么的,对学ASP.NET有好处,而且还可以直接用PHP,JSP进行开发。去google差差英文资源,有评价PHP 最好的,有评价JSP最好的,还从没有听谁说过ASP最好。
ASP.NET毕竟在.NET中,所以ASP.NET还是有相当地位的。
(2). 关于ASP.NET的优势
ASP.NET是微软.NET Framework的一部分。伴随.NET 1.0在2002的问世,ASP.NET也出现在动态网页开发语言的家族中(与PHP,JSP,ColdFusion, Ruby, SHTML等并行了)。
功能上,ASP.NET比ASP有更强大的library, 更好的稳定性。 ASP.NET可以使用.NET Framework中所有组件(也就是说.NET能实现的,ASP.NET一样能实现),功能上显然强大于传统功能单调的ASP。最强的技术支持Web Service, 而且有.NET的所有library做后盾。而且ASP.NET 在.NET 3.5中还有微软专门为AJAX开发的功能--ASP.NET AJAX。
结构上,传统的ASP把所有代码混为一团,简单的用<%%>把HTML和VBScript(或JScript)分开,实现动态输出 HTML。因为ASP.NET模仿JSP的MVC网页结构,微软为ASP.NET开发了自己的Code-Behind结构,将 presentation(文件拓展名:.aspx)和business logic(文件拓展名:.cs或.vb等)分离。同时Code-Behind模式也实现了让ASP.NET开发者用.NET中最普通Winform的开发模式来开发网站,方便非网页开发者制作动态网站。所以ASP.NET更容易维护,比ASP更适合于Enterprise Level 的大网站开发。
由于ASP.NET比JSP,PHP等更接近于.NET Winform的开发。如Tree View, Datagrid View(即高级Table)等高级UI,都可以直接用ASP.NET中的Web Control来实现,这比传统的使用JavaScript + XTHML + CSS的DHTML开发方式简单不少,也更好维护。同时ASP.NET开发这可以定义自己的User Control,制作自己特别的一种UI(如网站LOGO,版权等部分),而且此User Control可以被存为.ascx文件,方便让每一页(.aspx)来使用。
运行速度上,ASP.NET模仿了JSP的预编译机制(Pre-Compile)。使编译好的代码(MSIL语言)在网页服务器上运行。这样比传统的ASP,传统PHP(PHP4以前版本)更快,因为传统的ASP是直接运行开发者写的Script,相当于每运行一次,就得编译一次那么慢。 ASP.NET可以用VB, C#, J#等所有.NET Framework的语言开发.(但其实每种语言做的东西都一样... 就象山东话, 东北话, 写出来都是中文:)
不过ASP.NET对出学者可能有点难. 因为它其实在模拟desktop application development,即Winforms开发的模式, 不象传统的JSP,PHP, ASP这样容易明白。传统的Dynamic Server Scripting, 象PHP 5, 这是现在最简单的, 最有效的了。( 那个JSP也不难. 如果有钱还可以考虑下Adobe ColdFusion。)
ASP.NET的新潮的Dynamic Server Scripting, 在其带动下SUN也推出自己的JavaServer Faces (其实是拓展JSP,但JSF无法取代JSP), 和ASP.NET很象, 也有很多Web Control(JTable, JTree),同时JSF也曾强了对WEB SERVCIE的支持, 也很适合ENTERPRISE LEVEL 的网站。
(3). ASP与ASP.NET的优劣总结:
-- ASP已经被微软停止更新;ASP.NET却在.NET(1.0, 2.0, 3.0, 3.5)中突飞猛进;
-- ASP在96年出现,并没有引领一个潮流,PHP,ColdFusion都出现于95年,引领了整个潮流;ASP.NET引领新的动态网站开发潮流,SUN的JSF(JavaServer Faces)就是与ASP.NET极其相似;
-- ASP大多被用在是中小网站;PHP被Wikipedia, Facebook, 网络所用,JSP被GOOGLE所用;
-- ASP不支持Web Service; ASP.NET支持Web Service。要是了解.NET中的Web Service在大组织系统中的重要性,就能立杆见影的看出差距
-- ASP开发AJAX比较麻烦;而ASP.NET专门用AJAX控件,更方便。要是了解Web 2.0,那么AJAX是什么地位,就不用我说了吧。
-- ASP.NET模仿JSP,是pre-compile的;ASP不compile,直接运行Script的速度显然没有compile之后的快。
-- ASP.NET的唯一缺点,就是开发用的IDE--Visual Studio Professional比较贵(express版免费的功能太少);ASP的唯一优点是,其
学起来最简单,跟PHP一样简单,比JSP简单,更比ASP.NET简单几倍。
❹ php swoole 只能运行在php-cli 环境吗
一直想写点Swoole的东西,毕竟它重新定义了php,却一直不知道怎么下手写Swoole涉及的知识点非常多,互为表里,每次想写都发现根本理不出一个头绪Swoole是一个php的扩展,它的核心目的就是解决php在实现server服务中可能遇到的一系列问题,这些问题用源生的php往往并不能很高效(执行效率)的解决,一般也不会使用php来解决,所以会有说swolle重新定义的php的说法。
其实swoole也提供了一个框架,swoole framework是基于swoole extension设计的一个框架,要用好这个框架,还是要先了解swoole extension。
扩展的英文名称是Extension,php扩展是用C语言作为开发语言,基于Zend引擎提供的API,编译成的一个动态库。
如果曾经做过类似动态库调用开发的童鞋可能会更好理解一些,例如Android中的NDK开发在php的配置文件中配置好extension的属性后,就可以引用这个动态库了。
也就是说,swoole本身是用C语言编写的,它可以让php获得一些额外的function。
然后是运行方式,swoole的许多功能都只能运行在cli模式下,而cli模式往往是很多刚接触swoole的phper遇到的第一个问题。
有时候其实只是需要转变一下思路
我们现在整理一下最常见的php代码执行方式:
安装apache、php
配置apache对那个目录进行php解析
用浏览器访问那个目录的php文件
更多的细节这里就不提了,毕竟我相信每个phper对这个都是很熟悉的。
但这里就开始出现了第一个问题,我们知道,php是一个脚本语言,脚本语言的核心特点在于不用编译,随时执行,而执行脚本的工具就是解析器,而php的解析器就是zend引擎。
严格来说,zend并不是唯一的选择,不过,zend是最官方的。另外,Zend Studio和Zend Engine不是同一个东西,本文中的Zend全部指Zend Engine。
换个角度讲,只要有解析器,写好的php脚本就是可以执行的,而zend引擎与apache之间并没有绝对的关系实际上,apahce是调用了zend对php脚本进行执行,然后将执行结果输出给了浏览器所以所谓cli模式(CommandLine,命令行模式),其实就是在命令行下直接调用zend引擎对php脚本进行解析并执行,并获得程序输出结果的php脚本执行方式。
其实php也可以作为shell脚本来使用哦,就像bash shell一样既然问题讲清楚了,在一个系统中具体怎么操作呢?
本文以CentOS 7.5作为系统环境,swoole是针对linux系统开发的,windows下并不适用。学习swoole的一个前题是懂得基本的linux系统使用。
当安装好php的时候,找到php的安装目录,如果是默认安装的话,可以试试whereis命令# 某种简单的方法
whereis php
> /usr/local/bin/php;
locate whereis find这些命令都可以试试,目的是找到php然后我们来写一个最经典的php脚本:
<?php
//vi hello_cli.php
echo 'Hello PHP Cli';
编写纯php脚本时,php标签不要封口
然后我们在shell里执行它:
/usr/local/bin/php hello_cli.php
> Hello PHP Cli
这段代码中的第一个php,是一个可执行文件,它接受一个php脚本文件作为输入参数,并解析执行这个php脚本文件(通过zend)。
没有错,第一个cli模式下的php程序就被你执行成功了!
默认情况下,php都会被安装在了$PATH的目录下,那就可以直接省略路径前缀了,下文中调用php的时候,全都省略了路径前缀。
因为swoole是pecl的项目,所以使用pecl安装是最简单的方法,强烈推荐第一次接触的童鞋先使用pecl安装,在熟悉了swoole之后,再考虑使用编译安装的方式以获取更多进阶功能。
pecl这个工具基本都会被安装在与php相同的目录下(往往也都是$PATH目录)pecl install swoole
执行以下命令查看是否安装成功:
php -m | grep swoole
> swoole
如果正确的输出了swoole,那么恭喜你,这次安装很成功另一个常见的比较麻烦的问题是,有些童鞋的电脑里安装了多个php,而安装的时候没有正确的安装到预期的php的扩展目录中,就会导致无法正常工作,解决方案就是弄清楚各个php安装目录及配置关系,选择正确的目录进行安装。
其实本文还没正式开始介绍swoole,都是在学习swoole之前的准备工作,swoole的上手门槛比一般的php应用要高的多,如果没有网络开发和操作系统方面的一些知识,学习它并不是一件容易的事情,学习曲线很陡峭。
这句话我在群里说了无数次
很多新手会诟病swoole的手册写的太模糊,其实是前置知识不足,而手册也给出了需要的前置知识列表,以下引用至官网的手册-学习swoole需要哪些知识?
多进程/多线程
了解Linux操作系统进程和线程的概念
了解Linux进程/线程切换调度的基本知识
了解进程间通信的基本知识,如管道、UnixSocket、消息队列、共享内存socket
了解SOCKET的基本操作如accept/connect、send/recv、close、listen、bind了解SOCKET的接收缓存区、发送缓存区、阻塞/非阻塞、超时等概念IO复用
了解select/poll/epoll
了解基于select/epoll实现的事件循环,Reactor模型了解可读事件、可写事件
TCP/IP网络协议
了解TCP/IP协议
了解TCP、UDP传输协议
调试工具
使用gdb调试Linux程序
使用strace跟踪进程的系统调用
使用tcpmp跟踪网络通信过程
其他Linux系统工具,如ps、lsof、top、vmstat、netstat、sar、ss等学习并理解一个新事务并不是一个容易的事情,特别对于swoole这种具备一定颠覆性的工具,要有耐心和实践。
淡定的把手册看完,遇到不理解的名词学会使用搜索引擎学习,swoole的手册其实是个大宝库,网络开发常见的问题其实里边都涉及到了。