【转载】PHP 程序员进阶之路

原文:没有Nginx,你还能做什么?

PHP程序员的未来不是Java,Java拯救不了你。

已经1368年了,你扪胸自问,没有了Nginx的你,还能用PHP做什么。有一些高端的***民会愤怒地说:“有swoole啊,有workerman啊!”,那么,有两个问题需要回答:

  • 你可不可以用sw或wm去逐渐实现并代替贵司现有PHP业务
  • 如果可以更换,除了你之外的其他同事们需要花费多少精力和时间

认真思考一下,仿佛感觉fpm就是php的业界毒瘤,不过老话说得好:能用就行…

不说静态语言,就说脚本语言而言,拿同行Python相比,你看人家Python,多么的均衡多么的全面,进程、线程、IO、Stream什么都没有拉下,一句话总结一下就是:既没有明显缺点,也没有明显优点,什么都能做。

你们知道么,能做到“既没有明显缺点,也没有明显优点,什么都能做”是多么的困难的一件事。

搞Python的同行们,除了能用Flask码Web,也能用Tornado搞异步非阻塞,能够运用线程池来做一些task;相比之下,作为同行的我们,似乎除了会在fpm或者apache_mod下搞一搞增删改查,似乎别的什么也做不了了,而且在接收新概念的时候,不太容易能接纳(后半句科班生以及优秀的非科班生忽略)。

除了Python外,大举入侵的Nodejs,能够很快让原来的娱乐圈的同行们很快融入切换到后端圈来,而且天生的异步非阻塞优势能够让他们写出QPS很高的Web程序。

Java,恕我直言,实际上PHP压根就不具备和Java对比的资格,别玻璃,事实如此,PHP被Java按在地上摩擦,那为啥文章开头你为啥说…我就是讨厌Java,个人偏见,仅此而已…

回应文章标题的话,Nodejs压根不需要Nginx,而Python用Tornado也是完全O jb K!当然了,PHP也能这么做,然后请回到文章开头第五行和第六行。归根结底,都是生态问题导致的。我不能从从业者质量问题上去理解这个问题…

PHP7似乎是PHP的奋力一击,性能猛地提升了一倍。然而,以我目前的认知水准,似乎总有强弩之末的赶脚。PHP的强项在Web,这门为Web而生的语言似乎还没有做好拥抱新时代的准备。

都1368年了,PHPer该如何提升自己?

  • 第一:还请继续深入研究PHP,打好PHP自身的基础,PHP的SPL库系列请仔细研究;PHP的socket模块以及pcntl模块,一定要研究尝试一下,请尝试学习使用PHP cli模式去运行PHP,上面这几点都是针对纯语言方向的研究;然后,最好尝试从工程代码组织角度去理解和学习设计模式和面向对象OOP,因为干巴巴地背诵设计模式,压根理解不了。如果可以,请尝试使用swoole或者workerman,推荐swoole,因为折腾swoole的过程会让你知道很多你需要补充的知识点

  • 第二:请接纳一门新的语言。首先推荐Golang,然后是Java,其次是Nodejs,终极杀招是C/C++。不太严格地讲,编程语言分静态编译或动态脚本语言,所以我不建议再搞新的脚本语言,比如Nodejs或Python甚至Ruby之类,你既然要花费时间和精力去补充新鲜血液,不妨尝试Golang。作为终极大杀器,如果你对自己足够狠,请深入研究C语言

  • 第三:请深入研究数据结构,了解了数据结构,很多东西就会理解了。然后基础算法,注意是基础算法,那些脑筋急转弯就省省得了。现有的这些基础算法已经是人类智慧的结晶了,能够熟练运用就非常不错了,推荐书籍:《大话数据结构》

上面三点如果研究了一段时间,已经有所积累了的话,准备下面的几个步骤:

  • 第四:深入研究一下MySQL和Redis。MySQL请购买《MySQL技术内幕:innodb存储引擎》和《高性能MySQL》两本书,Redis请购买《Redis设计与实现》。有了前面三点累计的成果,你会对以前面试前需要背诵的什么Mysql索引优化原则了然于胸,不用背诵了,因为他就是应该是那样的。

实际上,你第四步进行一个周期后,还是会有一些疑惑,确实理解不了,只能靠背诵和记忆,无妨。

  • 第五:终究绕不开的还是学习CLang和使用Linux操作系统。你需要准备两本书,按照学习先后顺序,分别是《C Primer Plus》和《Unix环境高级编程》。这地方有一个巨大的错觉,就是读完一遍《C Primer Plus》后就觉得自己会CLang了,有这种优越感的,请你尝试用CLang做个什么东西出来?然后你发现似乎真的什么也做不了,这会儿就可以步入到《Unix环境高级编程》的节奏了,在这里你才能逐渐发现CLang可以做些什么。一个流程完毕后,你再回到第四步,试试?第一次看第四步的时候遗留的问题是不是可以搞定一部分了?

再往下,就没有了,到了这一步,实际上大多数人自己已经方向是什么了。说到底都是基础,一切基于基础之上的上层应用都是海市蜃楼,犹如过眼云烟,你今天背过这个,明天就会冒出来新的。今天他叫Node,明天他就叫Deno,然而不变的永远是基于事件监听的异步非阻塞IO…

博客地址:她和她的猫,欢迎关注。
本文转载于网络 如有侵权请联系删除

相关文章

  • 2022-08-12:方案1 : {7, 10}; xxxx : {a , b}; 1 2 3 4; FunnyGoal = 100; OffenseGoal

    2022-08-12:方案1:{7,10};xxxx:{a,b};1234;FunnyGoal=100;OffenseGoal=130。找到一个最少方案数,让FunnyGoal、OffenseGoal,都大于等于。定义如下尝试过程:贴纸数组stickers,stickersi:i号贴纸的Funny值,stickersi:i号贴纸的Offense值。index....所有的贴纸,随便选择。index之前的贴纸不能选择,在让restFunny和restOffense都小于等于0的要求下,返回最少的贴纸数量。来自弗吉尼亚理工大学(VT),算法考试卷。答案2022-08-12:递归,从左往右,要i还是不要i。动态规划。代码用rust编写。代码如下:fnmain(){ letmutstickers:Vec<Vec<i32>>= vec![vec![1,5],vec![2,4],vec![3,3],vec![4,2],vec![5,1]]; letans1=min_stickers1(&mutstickers,3,5); letans2=min_stickers2(

  • go server和client通过grpc建立连接

    一、文件结构server端和client端分布在两个不同的集群里,可以通过下发mq消息,或者grpc连接传递消息,这里介绍通过grpc建立连接,第一步是创建proto文件,要传递的方法和变量都在这里定义sendData/├──data.proto└──log二、创建data.proto文件注意,如果server端和client端不在同一集群,两边都要创建proto文件syntax="proto3";//指定protobuf的版本 packagesendData;//声明一个包名,一般与文件目录名相同 //service里定义建立连接的方法sayHello serviceConnect{ rpcsayHello(HelloRequest)returns(HelloReply){} } //定义传递结构体 messageHelloRequest{ stringname=1; intage=2; Datadata=3;//传递的数据的顺序从上到下排列,类型也可以是结构体 } messageData{ stringphone=1; } messageHelloRe

  • 微服务应该遵循的6种设计模式

    曾经被认为是最热门的新兴技术之一,微服务现在已被广泛采用,作为解决大型复杂基础设施的一种方式。传统应用程序充当单体,这意味着它们是单个自包含的项目,而基于微服务的应用程序由多个构建块组成,这些构建块可以组合在一起以更快地启动和运行新的应用程序和服务。什么是微服务模式?可以将大型应用程序结构分解为更小的独立服务的六大微服务模式。1.细粒度的SOA刚开始时,细粒度的SOA是最常见的微服务方法。这种模式应用了与面向服务的架构相同的原则,但通过将基础架构分解成更小、更细化的部分来减少通常会出现的问题。在大多数情况下,此模式是SOA集成的扩展,其中每个服务都提供与外部系统的连接。这对那些外部存储形成了紧密的依赖关系,从而降低了更改的速度,并使系统的凝聚力反映了这些应用程序的内部状态。2.细粒度SOA上的分层API细粒度SOA模式的下一个演变是在其上分层API。在大多数情况下,这两种模式会共存。细粒度SOA方法之上的分层API与API主导的连接密切相关。在这两者中,系统API公开应用程序,流程API编排它们,体验API提供最终用户体验。当缺乏结构时,微服务架构可能难以合理化,从而难以对每个微服务的

  • 基于 actix、async-graphql、rbatis、pgsql/mysql 构建 GraphQL 服务(4)-变更服务

    前3篇文章中,我们初始化搭建了工程结构,选择了必须的crate,并成功构建了GraphQL查询服务,以及对代码进行了第一次重构。本篇文章,是我们进行GraphQL服务后端开发的最后一篇:变更服务。本篇文章之后,GraphQL服务后端开发第一阶段告一阶段,之后我们进行基于Rust的Web前端开发。本系列文章中,采用螺旋式思路,Web前端基础开发之后,再回头进行GraphQL后端开发的改进。自定义表名的小重构有查阅基于actix-web+async-graphql+rbatis+postgresql/mysql构建异步RustGraphQL服务(2)-查询服务文章的朋友联系笔者,关于文章中user表和User结构体同名的问题。表名可以自定义的,然后在rbatis中指定即可。比如,我们将上一篇中的user表改名为users,那么async-graphql简单对象的代码如下:useserde::{Serialize,Deserialize}; #[rbatis::crud_enable(table_name:"users")] #[derive(async_graphql

  • 【黄啊码】如何用python识别图像

    我想要做的是一个简单的应用程序的图像识别:给定图像(500x500)pxs(1色背景)(50×50)像素将只有1个几何graphics(三angular形或方形或smaleyface:))。python会对graphics进行识别并显示几何graphics。一个典型的Python工具链将是:使用PIL阅读您的图像将它们转换成Numpy数组使用Scipy的图像filter(线性和秩序,形态)来实现您的解决scheme为了区分形状,我将通过观察背景的形状来获得其轮廓。然后我会使用angular点检测algorithm(例如Harris)来检测angular点的数量。一个三angular形有三个angular落,一个正方形的四个,还有一个笑脸没有。这是一个用Scipy进行哈里斯angular点检测的python实现。编辑:正如你在评论中提到的那样,博客文章没有提供产生algorithm所需的高斯内核的函数。下面是一个来自ScipyCookbook的例子(很好的资源btw):defgauss_kern(size,sizey=None):"""Returnsanor

  • Linux网络安全技术与实现(实例)

    对web\ftp\dns\mail在1分钟内的请求做判断,超过一定次数后,就dropimage.pngimage.pngimage.pngimage.png防火墙抵挡SYN攻击*****************************************image.pngimage.pngimage.pngimage.pngimage.pngimage.pngIP欺骗: 过滤掉不是本机的image.png过滤掉私有IPimage.png过滤掉广播非UDPimage.png过滤掉eth0的非正常来源image.png

  • 5 分钟快速掌握在 Python 使用 SQLite 数据库

    去年,州的先生曾经发表过一篇《小巧、稳定、快速!我为什么喜欢用SQLite》的文章,里面对SQLite数据库极尽推崇。 小巧、稳定、快速!我为什么喜欢用SQLite 毕竟,对于大多数人和大多数业务来说,SQLite都是一个极佳的数据库。这个低开销、跨平台、自包含、零配置、事务性SQL数据库引擎让你一方面可以摆脱磁盘文件存储的痛苦(关系型数据存储),一方面可以让你摆脱各个大型数据库安装和运维的痛苦(单文件的存在,非常适合于关系型数据库初学者的学习和使用)。在Python中,直接有一个内置库提供了对SQLite数据库的支持,所以我们可以在Python中直接使用SQLite数据库。这可以让我们直接将SQLite数据库作为数据存储载体应用在我们的Python程序中,比如图形界面程序(PyQt5、Kivy、Tkinter)中的数据存储、Web应用程序中的数据存储(Django使用SQLite作为默认的数据库后端)下面,我们就来了解一下SQLite在Python中的使用。引入模块Python的内置库sqlite3提供了对SQLite数据库的支持。我们在Python代码中引入这个模块,即可拥有操作S

  • PPO(Proximal Policy Optimization)近端策略优化算法

    强化学习可以按照方法学习策略来划分成基于值和基于策略两种。而在深度强化学习领域将深度学习与基于值的Q-Learning算法相结合产生了DQN算法,通过经验回放池与目标网络成功的将深度学习算法引入了强化学习算法。其中最具代表性分别是Q-Learning与PolicyGradient算法,将Q-Learning算法与深度学习相结合产生了DeepQNetwork,而后又出现了将两种方式的优势结合在一起的更为优秀ActorCritic,DPG,DDPG,A3C,TRPO,PPO等算法。而本文所采用的是目前效果较好的近端策略优化算法PPO。PPO算法思想PPO算法是一种新型的PolicyGradient算法,PolicyGradient算法对步长十分敏感,但是又难以选择合适的步长,在训练过程中新旧策略的的变化差异如果过大则不利于学习。PPO提出了新的目标函数可以再多个训练步骤实现小批量的更新,解决了PolicyGradient算法中步长难以确定的问题。其实TRPO也是为了解决这个思想但是相比于TRPO算法PPO算法更容易求解。PolicyGradient回顾重新回顾一下PolicyGradien

  • Ubuntu16.04搭建NFS 文件共享服务器的方法

    NFS即网络文件系统(NetworkFileSystem),是一种分布式文件系统协议,该协议允许客户端主机可以像访问本地文件系统一样通过网络访问服务器端文件,即可以将远程服务器文件直接mount(挂载)到本地的文件目录结构中进行访问。一、软件安装服务器端需要安装nfs-kernel-server软件包:$sudoapt-getupdate $sudoapt-getinstallnfs-kernel-server复制二、服务器配置默认情况下,NFS服务器上定义了某个共享目录,则该目录及其子目录下的所有文件都可被访问。出于对安全的考虑,客户端任何需要超级用户(即root用户,UID=0&GID=0)权限的文件操作都默认映射到UID=65534和GID=65534的用户,即Ubuntu系统中的nobody:nogroup。例如客户端使用root权限在挂载的共享目录中创建文件时,该文件的属主和属组自动变为nobody:nogroup,而非root:root。1.在服务器端创建共享目录sudomkdir-p/var/nfs/gernel sudomkdir-p/var/nfs/publi

  • Centos7安装k8s集群1.15.0版本

    版本说明Date:2019.7.17OS:CentOS7Docker:18.09.7K8S:1.15.0安装前说明使用kubeadm安装k8s,比起以前一个个安装组件,已经非常简单了。只不过因为国内网络问题,google的东西都被墙了,所以感觉安装起来比较费劲。所以安装ks关键在如何拉取镜像,有四个方法法解决: 如果有代理,直接给docker配置代理,安装非常顺利如果没有代理,找国内阿里云等仓库,下载镜像,再把镜像的tag改成google的如果有同事或者别的机器已经下载好镜像,使用docker的save和load命令导入直接编译ks源码,打成docker镜像,该方法不适合新手。github上有一个图形化安装k8s的项目,已经获得CNCF官方认证。图像界面安装k8s 机器规划机器名称ip地址角色yum安装的组件k8s-master10.1.69.101masterdocker、kubelet、kubeadm、kubectlk8s-node110.1.69.102nodedocker、kubelet、kubeadmk8s-node210.1.69.103nodedocker、kubelet

  • 关于Java序列化的问题你真的会吗?

    引言在持久化数据对象的时候我们很少使用Java序列化,而是使用数据库等方式来实现。但是在我看来,Java序列化是一个很重要的内容,序列化不仅可以保存对象到磁盘进行持久化,还可以通过网络传输。在平时的面试当中,序列化也是经常被谈及的一块内容。谈到序列化时,大家可能知道将类实现Serializable接口就可以达到序列化的目的,但当看到关于序列化的面试题时我们却常常一脸懵逼。1)可序列化接口和可外部接口的区别是什么?2)序列化时,你希望某些成员不要序列化?该如何实现?3)什么是serialVersionUID?如果不定义serialVersionUID,会发生什么?是不是突然发现我们对这些问题其实都还存在很多疑惑?本文将总结一些Java序列化的常见问题,并且通过demo来进行测试和解答。问题一:什么是Java序列化?序列化是把对象改成可以存到磁盘或通过网络发送到其它运行中的Java虚拟机的二进制格式的过程,并可以通过反序列化恢复对象状态。Java序列化API给开发人员提供了一个标准机制:通过实现java.io.Serializable或者java.io.Externalizable接口,O

  • SMTP邮件服务器原理解析,php发送邮件,swoole发送邮件

    写在前面电子邮件是啥就不用介绍了吧,利用程序发送邮件,可以实现:客户财务报表推送、服务异常预警、自动订阅文章等等功能。php来发送邮件的类库网上也有。比如:PHPMailer等但是由于类库年代久远,或者自己使用过程中出现了一些异常错误,导致一系列苦恼。所以写下这篇文章,来讲明SMTP邮件服务器的原理,让你在调试对接的过程中,有思路可循。基础知识储备TCP:TCP是一种面向连接的、可靠的、基于字节流的传输层通信协议。先去看看TCP协议的基础概念:比如连接握手三次、断开、收发包等等流程。比如我们访问一个网站,使用的是HTTP协议,HTTP协议是基于TCP协议的。我们本次要讲的SMTP也是基于TCP协议的。SSL:加密传输比如我们的http网站和https网站,在传输过程中加密,会比较安全。大部分的SMTP服务器也会要求加密传输内容。SMTP协议的定义简单邮件传输协议(SimpleMailTransferProtocol简称SMTP)是一个相对简单的基于文本的协议。在发送方(客户端)和接收方(服务器)间创建TCP连接之后那么接下来就是一个合法的SMTP会话了。(SMTP会话的本质只是一个普通

  • 中文文本挖掘预处理流程总结

        在对文本做数据分析时,我们一大半的时间都会花在文本预处理上,而中文和英文的预处理流程稍有不同,本文就对中文文本挖掘的预处理流程做一个总结。1.中文文本挖掘预处理特点    首先我们看看中文文本挖掘预处理和英文文本挖掘预处理相比的一些特殊点。    首先,中文文本是没有像英文的单词空格那样隔开的,因此不能直接像英文一样可以直接用最简单的空格和标点符号完成分词。所以一般我们需要用分词算法来完成分词,在文本挖掘的分词原理中,我们已经讲到了中文的分词原理,这里就不多说。    第二,中文的编码不是utf8,而是unicode。这样会导致在分词的时候,和英文相比,我们要处理编码的问题。    这两点构成了中文分词相比英文分词的一些不同点,后面我们也会重点讲述这部分的处理。当然,英文分词也有自己的烦恼,这个我们在以后再讲。了解了中文预处理的一些特点后,我们就言归正传,通过实践总结下中文文本挖掘预处理流程。2.  中文文本挖掘预处理一:数据收集    在文本挖掘之前,我们需要得到文本数据,文本数据的获取方法一般有两种:使用别人做好的语料库和自己用爬虫去在网上去爬自己的语料数据。    对于第

  • 安卓开发-See the log file\.metadata\.log.

    今天在给安卓项目res-valus-string.xml中字符串修改的时候,突然eclipse卡住了然后任务管理器关掉之后,重新打开显示一个错误百度了一下eclipse启动报错,让查看.metadata\.log日志  1!SESSION2013-09-2317:28:28.484-----------------------------------------------  2eclipse.buildId=M20120914-1800  3java.version=1.7.0_11  4java.vendor=OracleCorporation  5BootLoaderconstants:OS=win32,ARCH=x86,WS=win32,NL=zh_CN  6Frameworkarguments: -productorg.eclipse.epp.package.jee.product  7Command-linearguments: -oswin32-wswin32-archx86-productorg.eclipse.epp.package.jee.product  8   

  • 苹果无人驾驶汽车平台培训资料遭曝光

    外媒BusinessInsider获得并披露了关于苹果无人驾驶汽车平台的相关培训文件和材料,文件中以苹果“AutomatedSystem(自动化平台)”来命名,文件名称为“开发平台具体训练内容(DevelopmentPlatformSpecificTraining)”。为在苹果自驾车测试驾驶者提供实际道路测试之前的安全培训和基础技巧训练。测试驾驶者在接受培训后,需要通过7项基本测试,随后测试驾驶者将有资格参与用于数据收集的无人驾驶车辆实际道路测试。这些测试包括基本驾驶技能,如低速和高速行车,系统干预介入技能,包括紧急U弯、突然转向介入、突然加速和紧急制动等。驾驶员还需要能够在遇到“转弯信号和系统行为冲突下”采取合适行动的能力,就是指错误的车道变更请求。根据一份文件,当一辆车不受无人驾驶系统控制时,驾驶者需要使用逻辑方向盘和踏板通过“Drive-by-Wire电传线控”来进行操控车辆的技能。4月15日,外媒BusinessInsider带来了最新的进展:苹果已经获得加州的许可,可以在该州测试无人驾驶汽车。在曝出苹果研发自动驾驶技术的新闻两年之后,苹果的名字终于出现在加州机动车管理局网站上

  • Struts2应用范围有多广?有多严重?哪些网站受到了波及?

    1、什么是Struts2漏洞?Struts是Apache软件基金会(ASF)赞助的一个开源项目,通过采用JavaServlet/JSP技术,实现基于JavaEEWeb应用的MVC设计模式的应用框架,Struts2是Struts的下一代产品,是在struts1和WebWork的技术基础上进行了合并的全新的Struts2框架。Struts框架广泛应用于政府、公安、交通、金融行业和运营商的网站建设,作为网站开发的底层模板使用。此次爆发的漏洞是Struts2的一个远程执行漏洞,利用这个漏洞,攻击者可以上传后门,黑掉一个网站或者盗取用户数据库。2、为什么此次Struts2漏洞影响巨大?第一,Apache官方在漏洞公告中直接把漏洞利用代码公开了,这是一个令人震惊的做法,因为在公布之前还有很多网站没有及时打上补丁。公布后该漏洞疯狂传播,并出现了直接利用该漏洞进行入侵的傻瓜工具,一些未及时更新补丁的网站被入侵。第二,ApacheStruts2是一个应用框架,它的漏洞并不像Windows一样,及时发个补丁推送给用户,更新了就没事了,而是需要站长和网站维护人员自己去更新这个补丁,国内并不是每个网站的技术人

  • 搜索与图论篇——DFS和BFS

    搜索与图论篇——DFS和BFS 本次我们介绍搜索与图论篇中DFS和BFS,我们会从下面几个角度来介绍: DFS和BFS简介 DFS数字排序 DFS皇后排序 DFS树的重心 BFS走迷宫 BFS八数码 BFS图层次 DFS和BFS简介 首先我们先来介绍一下DFS和BFS: DFS:深度优先遍历算法,我们在进行算法运算时,优先将该路径的当前路径执行完毕,执行完毕或失败后向上回溯尝试其他途径 BFS:广度优先遍历算法,我们在进行算法运算时,优先将当前路径点的所有情况罗列出来,然后根据罗列出来的情况罗列下一层 DFS和BFS的算法依据: 两者均以树的形式进行展开,可以采用树的模型来进行DFS和BFS演示 DFS数字排序 我们首先给出DFS的一元问题: 给定一个整数n,将数字1∼n排成一排,将会有很多种排列方法。 现在,请你按照字典序将所有的排列方法输出。 问题解析: /*一元问题解析*/ 我们目前采用DFS算法运算,我们需要一次得到数据,然后回溯 那么我们目前的问题就是: -如何判断DFS算法结束:我们只需要记录遍历到第几个数字然后与之判断是否相等,若相等表示结束 -如何得

  • 基于JT/T 1078协议设计和开发部标视频服务器

    交通部与2016年10月份推出了JT/T1078-2016标准,全称是<道路运输车辆卫星定位系统视频通信协议>。该标准将改变以往两客一危车辆的视频监控设备通信协议都是设备厂商私有协议的局面。标准起草单位:中国交通通信信息中心、北京国交信通科技发展有限公司、江苏威森通讯科技有限公司、大连信开数码软件有限公司、深圳市锐明视讯技术有限公司、广州亿程交通信息有限公司、深圳市瑞信视讯技术有限公司、吉林省寰旗卫星导航通信集团有限公司、杭州海康威视数字技术股份有限公司、大连鼎视科技有限公司。这里面真正做视频老牌厂商也就是海康、大华这两家公司。  1.部标1078协议和808协议的区别  部标1078协议文档明确说明了,协议是在JT/T808协议的基础上进行增加了大量的视频指令,以前的终端32位报警,由于增加了视频报警,拓展为64位报警。终端参数中也增加了大量与视频相关的参数设置。协议的通信方式、数据类型、传输规则和消息组成按照 JT/T 808-2011中第 4 章的要求。协议中信令数据报文的通信连接方式按照 JT/T

  • Python使用pexpect实现telnet登陆服务器

    pipinstallpexpect #!/usr/bin/envpython importpexpect address='192.168.2.1' userName='root' password='12345678' cmd='telnet'+address prompt='[$#>]' child=pexpect.spawn(cmd) index=child.expect(['login',pexpect.EOF,pexpect.TIMEOUT],timeout=1) ifindex==0: child.sendline(userName) index=child.expect('Password',timeout=1) child.sendline(password) child.expect(prompt,timeout=1) child.sendline("ls-al") child.expect("ls-al",timeout=1) child.expect(prompt,timeout=1) print(child.before) else: print

  • 创建一个三角形类,成员变量三边,方法求周长,创建类主类A来测试它。

    publicclasszhouchang{ privatedoublea; privatedoubleb; privatedoublec; publicdoublegetA(){ returna; } publicvoidsetA(doublea){ this.a=a; } publicdoublegetB(){ returnb; } publicvoidsetB(doubleb){ this.b=b; } publicdoublegetC(){ returnc; } publicvoidsetC(doublec){ this.c=c; } publicdoublegetZhouchang() { returna+b+c; } }复制 publicclassTest07{ publicstaticvoidmain(String[]args){ zhouchangsjx=newzhouchang(); sjx.setA(11); sjx.setB(12); sjx.setC(13); System.out.println("三边a=11,b=12,c=13的周长是:"+sjx.

  • 放个大招,招聘的招

    直接说正事,放个大招,招人的招!!BIM这么火,需求这么热,让我们干起来,创造美好世界的同时实现个人价值,买车、买房、实现财务自由、赢取白富美,想想都有点小激动 会有小伙伴问,BIM是什么?就是建筑信息模型,说个大白话就是实体建筑在计算机中的虚拟表示,咱们就在要这个东东之上大做文章了?没搞懂什么BIM?没关系,咱们团队有人懂,合作就好!符合下面的任意一条就可以。 加入北京毕加索智能科技有限公司,加入我们团队,等你来! JavaScript/WebGL前端开发工程师 岗位职责: 1、负责开发基于浏览器的三维模型展示软件 2、负责对开发的软件进行测试并编写自动化测试脚本 3、负责系统性能监控和系统优化 任职要求: 1、熟练掌握JavaScript 2、熟悉DirectX/OpenGL或WebGL,如Three.js、Babylone.js,或Unity等游戏引擎,熟悉Shader编程者优先 3、熟悉计算机图形学 4、熟悉敏捷开发流程,2年以上编程经验 5、学习能力强 6、掌握任意一门web开发语言 加分项: 1、ComfortablewithcommunicationinEnglish.

相关推荐

推荐阅读