• 关于

    外部数据库常见问题及解决方法

    的搜索结果

回答

概述 在Linux系统的ECS实例上自建MySQL服务器,可能会出现无法远程连接异常情况,本文主要介绍该情况下的常见错误及解决办法。 详细信息 阿里云提醒您: 如果您对实例或数据有修改、变更等风险操作,务必注意实例的容灾、容错能力,确保数据安全。 如果您对实例(包括但不限于ECS、RDS)等进行配置与数据修改,建议提前创建快照或开启RDS日志备份等功能。 如果您在阿里云平台授权或者提交过登录账号、密码等安全信息,建议您及时修改。 以下列举一些常见问题及解决办法。 未授权导致无法连接MySQL服务 监听地址错误导致无法连接MySQL服务 连接时报“Lost connection to MySQL server at 'reading initial communication packet' ”错误 版本问题导致无法连接MySQL服务 未授权导致无法连接MySQL服务 问题现象 在ECS实例内部连接MySQL服务正常,远程连接则会出现如下错误 。 EHost 'XX.XX.XX.XX' is not allowed to connect to this MySQL serverConnection closed by foreign host. 系统显示类似如下。 解决方案 确认MySQL服务监听的是0.0.0.0地址。 检查实例是否开启防火墙,建议先关闭防火墙进行测试。 确认MySQL服务是否开启远程登录,可通过如下方法开启。 登录数据库,选择mysql数据库。将user表中的host项,从localhost改为'%'。 登录数据库,创建一个远程连接的用户。 监听地址错误导致无法连接MySQL服务 问题现象 MySQL服务对127.0.0.1地址进行监听,导致外部无法远程连接。 解决方案 在MySQL服务配置文件中,注释掉bind-address参数,然后重启即可。 连接时报“Lost connection to MySQL server at 'reading initial communication packet' ”错误 问题现象 远程连接MySQL服务时,报如下错误。 Lost connection to MySQL server at 'reading initial communication packet' 解决方案 检查是否开启防火墙,限制了连接请求。 检查MySQL数据库是否有访问权限。可通过如下命令进行添加。 use mysql; Grant all privileges on . to 'root'@'%' identified by '[$Password]' with grant option; flush privileges; 注:[$Password]为密码。 检查my.ini配置文件是否设置了bind-address参数,将该条注释掉。 在my.ini配置文件添加skip-name-resolve参数。 修改hosts.allow配置文件,增加如下配置。 mysqld-max : ALL :ALLOW 版本问题导致无法连接MySQL服务 问题现象 自建的MySQL服务器版本为5.6,远程连接时提示如下错误。 ERROR 2049 (HY000): Connection using old (pre-4.1.1) authentication protocol refused (client option 'secure_auth' enabled) 问题原因 由于服务器端的密码管理协议陈旧,使用的是旧有的用户密码格式存储,但客户端升级之后采用了新的密码格式 。MySQL 5.6版本遇到这种不一致的情况就会拒绝连接 。 解决方案 连接时添加--secure-auth参数,连接命令如下所示。详细的表述可以参考 MySQL手册。 mysql -h [$Host] -u [$Username] --secure-auth -p 注:[$Host]为ECS实例域名或IP,[$Username]为数据库用户名。

1934890530796658 2020-03-26 00:28:50 0 浏览量 回答数 0

回答

在工程实践上,为了保障系统的可用性,互联网系统大多将强一致性需求转换成最终一致性的需求,并通过系统执行幂等性的保证,保证数据的最终一致性。但在电商等场景中,对于数据一致性的解决方法和常见的互联网系统(如 MySQL 主从同步)又有一定区别,分成以下 6 种解决方案。(一)规避分布式事务——业务整合业务整合方案主要采用将接口整合到本地执行的方法。拿问题场景来说,则可以将服务 A、B、C 整合为一个服务 D 给业务,这个服务 D 再通过转换为本地事务的方式,比如服务 D 包含本地服务和服务 E,而服务 E 是本地服务 A ~ C 的整合。优点:解决(规避)了分布式事务。缺点:显而易见,把本来规划拆分好的业务,又耦合到了一起,业务职责不清晰,不利于维护。由于这个方法存在明显缺点,通常不建议使用。(二)经典方案 - eBay 模式此方案的核心是将需要分布式处理的任务通过消息日志的方式来异步执行。消息日志可以存储到本地文本、数据库或消息队列,再通过业务规则自动或人工发起重试。人工重试更多的是应用于支付场景,通过对账系统对事后问题的处理。消息日志方案的核心是保证服务接口的幂等性。考虑到网络通讯失败、数据丢包等原因,如果接口不能保证幂等性,数据的唯一性将很难保证。eBay 方式的主要思路如下。Base:一种 Acid 的替代方案此方案是 eBay 的架构师 Dan Pritchett 在 2008 年发表给 ACM 的文章,是一篇解释 BASE 原则,或者说最终一致性的经典文章。文中讨论了 BASE 与 ACID 原则在保证数据一致性的基本差异。如果 ACID 为分区的数据库提供一致性的选择,那么如何实现可用性呢?答案是BASE (basically available, soft state, eventually consistent)BASE 的可用性是通过支持局部故障而不是系统全局故障来实现的。下面是一个简单的例子:如果将用户分区在 5 个数据库服务器上,BASE 设计鼓励类似的处理方式,一个用户数据库的故障只影响这台特定主机那 20% 的用户。这里不涉及任何魔法,不过它确实可以带来更高的可感知的系统可用性。文章中描述了一个最常见的场景,如果产生了一笔交易,需要在交易表增加记录,同时还要修改用户表的金额。这两个表属于不同的远程服务,所以就涉及到分布式事务一致性的问题。文中提出了一个经典的解决方法,将主要修改操作以及更新用户表的消息放在一个本地事务来完成。同时为了避免重复消费用户表消息带来的问题,达到多次重试的幂等性,增加一个更新记录表 updates_applied 来记录已经处理过的消息。基于以上方法,在第一阶段,通过本地的数据库的事务保障,增加了 transaction 表及消息队列 。在第二阶段,分别读出消息队列(但不删除),通过判断更新记录表 updates_applied 来检测相关记录是否被执行,未被执行的记录会修改 user 表,然后增加一条操作记录到 updates_applied,事务执行成功之后再删除队列。通过以上方法,达到了分布式系统的最终一致性。进一步了解 eBay 的方案可以参考文末链接。(三)去哪儿网分布式事务方案随着业务规模不断地扩大,电商网站一般都要面临拆分之路。就是将原来一个单体应用拆分成多个不同职责的子系统。比如以前可能将面向用户、客户和运营的功能都放在一个系统里,现在拆分为订单中心、代理商管理、运营系统、报价中心、库存管理等多个子系统。拆分首先要面临的是什么呢?最开始的单体应用所有功能都在一起,存储也在一起。比如运营要取消某个订单,那直接去更新订单表状态,然后更新库存表就 ok 了。因为是单体应用,库在一起,这些都可以在一个事务里,由关系数据库来保证一致性。但拆分之后就不同了,不同的子系统都有自己的存储。比如订单中心就只管理自己的订单库,而库存管理也有自己的库。那么运营系统取消订单的时候就是通过接口调用等方式来调用订单中心和库存管理的服务了,而不是直接去操作库。这就涉及一个『分布式事务』的问题。分布式事务有两种解决方式优先使用异步消息。上文已经说过,使用异步消息 Consumer 端需要实现幂等。幂等有两种方式,一种方式是业务逻辑保证幂等。比如接到支付成功的消息订单状态变成支付完成,如果当前状态是支付完成,则再收到一个支付成功的消息则说明消息重复了,直接作为消息成功处理。另外一种方式如果业务逻辑无法保证幂等,则要增加一个去重表或者类似的实现。对于 producer 端在业务数据库的同实例上放一个消息库,发消息和业务操作在同一个本地事务里。发消息的时候消息并不立即发出,而是向消息库插入一条消息记录,然后在事务提交的时候再异步将消息发出,发送消息如果成功则将消息库里的消息删除,如果遇到消息队列服务异常或网络问题,消息没有成功发出那么消息就留在这里了,会有另外一个服务不断地将这些消息扫出重新发送。有的业务不适合异步消息的方式,事务的各个参与方都需要同步的得到结果。这种情况的实现方式其实和上面类似,每个参与方的本地业务库的同实例上面放一个事务记录库。比如 A 同步调用 B,C。A 本地事务成功的时候更新本地事务记录状态,B 和 C 同样。如果有一次 A 调用 B 失败了,这个失败可能是 B 真的失败了,也可能是调用超时,实际 B 成功。则由一个中心服务对比三方的事务记录表,做一个最终决定。假设现在三方的事务记录是 A 成功,B 失败,C 成功。那么最终决定有两种方式,根据具体场景:重试 B,直到 B 成功,事务记录表里记录了各项调用参数等信息;执行 A 和 B 的补偿操作(一种可行的补偿方式是回滚)。对 b 场景做一个特殊说明:比如 B 是扣库存服务,在第一次调用的时候因为某种原因失败了,但是重试的时候库存已经变为 0,无法重试成功,这个时候只有回滚 A 和 C 了。那么可能有人觉得在业务库的同实例里放消息库或事务记录库,会对业务侵入,业务还要关心这个库,是否一个合理的设计?实际上可以依靠运维的手段来简化开发的侵入,我们的方法是让 DBA 在公司所有 MySQL 实例上预初始化这个库,通过框架层(消息的客户端或事务 RPC 框架)透明的在背后操作这个库,业务开发人员只需要关心自己的业务逻辑,不需要直接访问这个库。总结起来,其实两种方式的根本原理是类似的,也就是将分布式事务转换为多个本地事务,然后依靠重试等方式达到最终一致性。(四)蘑菇街交易创建过程中的分布式一致性方案交易创建的一般性流程我们把交易创建流程抽象出一系列可扩展的功能点,每个功能点都可以有多个实现(具体的实现之间有组合/互斥关系)。把各个功能点按照一定流程串起来,就完成了交易创建的过程。面临的问题每个功能点的实现都可能会依赖外部服务。那么如何保证各个服务之间的数据是一致的呢?比如锁定优惠券服务调用超时了,不能确定到底有没有锁券成功,该如何处理?再比如锁券成功了,但是扣减库存失败了,该如何处理?方案选型服务依赖过多,会带来管理复杂性增加和稳定性风险增大的问题。试想如果我们强依赖 10 个服务,9 个都执行成功了,最后一个执行失败了,那么是不是前面 9 个都要回滚掉?这个成本还是非常高的。所以在拆分大的流程为多个小的本地事务的前提下,对于非实时、非强一致性的关联业务写入,在本地事务执行成功后,我们选择发消息通知、关联事务异步化执行的方案。消息通知往往不能保证 100% 成功;且消息通知后,接收方业务是否能执行成功还是未知数。前者问题可以通过重试解决;后者可以选用事务消息来保证。但是事务消息框架本身会给业务代码带来侵入性和复杂性,所以我们选择基于 DB 事件变化通知到 MQ 的方式做系统间解耦,通过订阅方消费 MQ 消息时的 ACK 机制,保证消息一定消费成功,达到最终一致性。由于消息可能会被重发,消息订阅方业务逻辑处理要做好幂等保证。所以目前只剩下需要实时同步做、有强一致性要求的业务场景了。在交易创建过程中,锁券和扣减库存是这样的两个典型场景。要保证多个系统间数据一致,乍一看,必须要引入分布式事务框架才能解决。但引入非常重的类似二阶段提交分布式事务框架会带来复杂性的急剧上升;在电商领域,绝对的强一致是过于理想化的,我们可以选择准实时的最终一致性。我们在交易创建流程中,首先创建一个不可见订单,然后在同步调用锁券和扣减库存时,针对调用异常(失败或者超时),发出废单消息到MQ。如果消息发送失败,本地会做时间阶梯式的异步重试;优惠券系统和库存系统收到消息后,会进行判断是否需要做业务回滚,这样就准实时地保证了多个本地事务的最终一致性。(五)支付宝及蚂蚁金融云的分布式服务 DTS 方案业界常用的还有支付宝的一种 xts 方案,由支付宝在 2PC 的基础上改进而来。主要思路如下,大部分信息引用自官方网站。分布式事务服务简介分布式事务服务 (Distributed Transaction Service, DTS) 是一个分布式事务框架,用来保障在大规模分布式环境下事务的最终一致性。DTS 从架构上分为 xts-client 和 xts-server 两部分,前者是一个嵌入客户端应用的 JAR 包,主要负责事务数据的写入和处理;后者是一个独立的系统,主要负责异常事务的恢复。核心特性传统关系型数据库的事务模型必须遵守 ACID 原则。在单数据库模式下,ACID 模型能有效保障数据的完整性,但是在大规模分布式环境下,一个业务往往会跨越多个数据库,如何保证这多个数据库之间的数据一致性,需要其他行之有效的策略。在 JavaEE 规范中使用 2PC (2 Phase Commit, 两阶段提交) 来处理跨 DB 环境下的事务问题,但是 2PC 是反可伸缩模式,也就是说,在事务处理过程中,参与者需要一直持有资源直到整个分布式事务结束。这样,当业务规模达到千万级以上时,2PC 的局限性就越来越明显,系统可伸缩性会变得很差。基于此,我们采用 BASE 的思想实现了一套类似 2PC 的分布式事务方案,这就是 DTS。DTS在充分保障分布式环境下高可用性、高可靠性的同时兼顾数据一致性的要求,其最大的特点是保证数据最终一致 (Eventually consistent)。简单的说,DTS 框架有如下特性:最终一致:事务处理过程中,会有短暂不一致的情况,但通过恢复系统,可以让事务的数据达到最终一致的目标。协议简单:DTS 定义了类似 2PC 的标准两阶段接口,业务系统只需要实现对应的接口就可以使用 DTS 的事务功能。与 RPC 服务协议无关:在 SOA 架构下,一个或多个 DB 操作往往被包装成一个一个的 Service,Service 与 Service 之间通过 RPC 协议通信。DTS 框架构建在 SOA 架构上,与底层协议无关。与底层事务实现无关: DTS 是一个抽象的基于 Service 层的概念,与底层事务实现无关,也就是说在 DTS 的范围内,无论是关系型数据库 MySQL,Oracle,还是 KV 存储 MemCache,或者列存数据库 HBase,只要将对其的操作包装成 DTS 的参与者,就可以接入到 DTS 事务范围内。一个完整的业务活动由一个主业务服务与若干从业务服务组成。主业务服务负责发起并完成整个业务活动。从业务服务提供 TCC 型业务操作。业务活动管理器控制业务活动的一致性,它登记业务活动中的操作,并在活动提交时确认所有的两阶段事务的 confirm 操作,在业务活动取消时调用所有两阶段事务的 cancel 操作。”与 2PC 协议比较,没有单独的 Prepare 阶段,降低协议成本。系统故障容忍度高,恢复简单(六)农信网数据一致性方案电商业务公司的支付部门,通过接入其它第三方支付系统来提供支付服务给业务部门,支付服务是一个基于 Dubbo 的 RPC 服务。对于业务部门来说,电商部门的订单支付,需要调用支付平台的支付接口来处理订单;同时需要调用积分中心的接口,按照业务规则,给用户增加积分。从业务规则上需要同时保证业务数据的实时性和一致性,也就是支付成功必须加积分。我们采用的方式是同步调用,首先处理本地事务业务。考虑到积分业务比较单一且业务影响低于支付,由积分平台提供增加与回撤接口。具体的流程是先调用积分平台增加用户积分,再调用支付平台进行支付处理,如果处理失败,catch 方法调用积分平台的回撤方法,将本次处理的积分订单回撤。用户信息变更公司的用户信息,统一由用户中心维护,而用户信息的变更需要同步给各业务子系统,业务子系统再根据变更内容,处理各自业务。用户中心作为 MQ 的 producer,添加通知给 MQ。APP Server 订阅该消息,同步本地数据信息,再处理相关业务比如 APP 退出下线等。我们采用异步消息通知机制,目前主要使用 ActiveMQ,基于 Virtual Topic 的订阅方式,保证单个业务集群订阅的单次消费。总结分布式服务对衍生的配套系统要求比较多,特别是我们基于消息、日志的最终一致性方案,需要考虑消息的积压、消费情况、监控、报警等。

小川游鱼 2019-12-02 01:46:40 0 浏览量 回答数 0

问题

云服务器 ECS Linux MySQL 无法远程连接问题有哪些常见错误及解决办法

boxti 2019-12-01 21:55:16 2249 浏览量 回答数 0

Quick BI 数据可视化分析平台

2020年入选全球Gartner ABI魔力象限,为中国首个且唯一入选BI产品

回答

自建步骤自行建站的四个基本步骤:服务器选择不同网站类型需要的服务器配置不同,首先确认网站规模与访问人数,一般情况下,小型网站只需要选择基础配置即可。购买服务器流程可参考通过购买页面创建一台ECS实例。想了解不同配置对应的价格,推荐使用ECS价格计算器。云服务器ECS主要计费方式为预付(包括包年包月和按周付费)和按量付费,详细的计费规则可以参考产品计价。域名购买和备案域名购买:输入想要的域名,未被占用即可注册,具体操作请参考域名注册流程。域名后缀通常为.COM或.CN,其它后缀介绍和区别请参考域名区别。 注意:域名注册成功后需进行实名认证。流程请参考域名如何实名制认证。域名备案:域名购买完成后,还需进行备案方可使用。备案步骤如下: i.备案准备:因各省管局要求存在差异,所需资料也不尽相同,请根据各省市备案规则准备资料,或访问工信部备案管理系统(www.miitbeian.gov.cn) 了解细则。详情请参考备案准备。ii.首次备案接入:若之前尚未进行过工信部备案,请参考首次备案流程图文引导。其它备案场景请参考备案导航。网站部署常见网站类型有以下几种:个人博客WordPress 常用于搭建个人博客网站,尤其适用于首次使用阿里云进行建站的新用户。详情请参考使用 WordPress 搭建个人手机博客。 若已有网站代码,可通过阿里云 Windows 一键安装web环境来部署。 论坛网站通过 phpwind 镜像快速搭建论坛网站请参考使用 phpwind 镜像搭建论坛。通过 Discuz 搭建论坛网站请参考使用 Discuz 镜像搭建论坛。其他建站教程通过镜像一键部署 Linux 环境通过镜像部署 Java Web 环境部署 Linux 主机管理系统 WDCP快速搭建 Moodle 课程管理系统初级建站推荐使用网上一键安装包,例如WordPress、discuz这类,比较适合新手操作。域名解析设置域名解析后,外部用户可通过域名访问网站。详情请参考设置域名解析快速入门。如需将域名指向一个IP地址,添加A记录即可。详情请参考如何添加不同记录类型的解析。至此,建站操作已基本完成,接下来您可使用域名测试访问是否正常。常见问题与解决方案在服务器使用或者网站搭建过程中,可能会遇到一些使用问题,因此,列举了以下最常见的问题和对应的解决方案。服务器远程连接Windows无法远程连接: 文档解决方案:无法连接 Windows 实例。视频教程:如何远程连接 Windows 实例。Linux无法远程连接: 文档解决方案:无法连接 Linux 实例。视频教程:如何远程连接 Linux 实例。安全组和快照如何设置安全组默认规则?安全组应用案例合集。如何创建自定义快照?网站无法访问Windows 实例带宽和CPU跑满或跑高怎么办?网站无法访问的常见原因及检查方法有哪些?Windows 实例网络访问丢包延时高怎么办?Linux 实例网站访问丢包延时高如何解决?域名解析已经生效,无法打开网站常规的原因有哪些?相关服务若在上云前希望了解如何选择适合自身业务特点的阿里云产品和配置,可点此查看架构设计&上云咨询服务。 若您需要将云下自建机房、托管机房等环境下的业务迁移到阿里云上, 并希望获取专业上云方案实施服务,可点此查看上云方案实施服务。 若您需要在阿里云服务器上部署站点环境、安装应用程序,可点此查看网站基础环境搭建服务。 基于阿里云服务器 ECS,若需要专业工程师协助对系统/数据库/站点进行基础设置,可使用云资源管理基础设置服务。

微笑de向阳 2019-12-01 23:54:00 0 浏览量 回答数 0

回答

自建步骤自行建站的四个基本步骤:服务器选择不同网站类型需要的服务器配置不同,首先确认网站规模与访问人数,一般情况下,小型网站只需要选择基础配置即可。购买服务器流程可参考通过购买页面创建一台ECS实例。想了解不同配置对应的价格,推荐使用ECS价格计算器。云服务器ECS主要计费方式为预付(包括包年包月和按周付费)和按量付费,详细的计费规则可以参考产品计价。域名购买和备案域名购买:输入想要的域名,未被占用即可注册,具体操作请参考域名注册流程。域名后缀通常为.COM或.CN,其它后缀介绍和区别请参考域名区别。 注意:域名注册成功后需进行实名认证。流程请参考域名如何实名制认证。域名备案:域名购买完成后,还需进行备案方可使用。备案步骤如下: i.备案准备:因各省管局要求存在差异,所需资料也不尽相同,请根据各省市备案规则准备资料,或访问工信部备案管理系统(www.miitbeian.gov.cn) 了解细则。详情请参考备案准备。ii.首次备案接入:若之前尚未进行过工信部备案,请参考首次备案流程图文引导。其它备案场景请参考备案导航。网站部署常见网站类型有以下几种:个人博客WordPress 常用于搭建个人博客网站,尤其适用于首次使用阿里云进行建站的新用户。详情请参考使用 WordPress 搭建个人手机博客。 若已有网站代码,可通过阿里云 Windows 一键安装web环境来部署。 论坛网站通过 phpwind 镜像快速搭建论坛网站请参考使用 phpwind 镜像搭建论坛。通过 Discuz 搭建论坛网站请参考使用 Discuz 镜像搭建论坛。其他建站教程通过镜像一键部署 Linux 环境通过镜像部署 Java Web 环境部署 Linux 主机管理系统 WDCP快速搭建 Moodle 课程管理系统初级建站推荐使用网上一键安装包,例如WordPress、discuz这类,比较适合新手操作。域名解析设置域名解析后,外部用户可通过域名访问网站。详情请参考设置域名解析快速入门。如需将域名指向一个IP地址,添加A记录即可。详情请参考如何添加不同记录类型的解析。至此,建站操作已基本完成,接下来您可使用域名测试访问是否正常。常见问题与解决方案在服务器使用或者网站搭建过程中,可能会遇到一些使用问题,因此,列举了以下最常见的问题和对应的解决方案。服务器远程连接Windows无法远程连接: 文档解决方案:无法连接 Windows 实例。视频教程:如何远程连接 Windows 实例。Linux无法远程连接: 文档解决方案:无法连接 Linux 实例。视频教程:如何远程连接 Linux 实例。安全组和快照如何设置安全组默认规则?安全组应用案例合集。如何创建自定义快照?网站无法访问Windows 实例带宽和CPU跑满或跑高怎么办?网站无法访问的常见原因及检查方法有哪些?Windows 实例网络访问丢包延时高怎么办?Linux 实例网站访问丢包延时高如何解决?域名解析已经生效,无法打开网站常规的原因有哪些?相关服务若在上云前希望了解如何选择适合自身业务特点的阿里云产品和配置,可点此查看架构设计&上云咨询服务。 若您需要将云下自建机房、托管机房等环境下的业务迁移到阿里云上, 并希望获取专业上云方案实施服务,可点此查看上云方案实施服务。 若您需要在阿里云服务器上部署站点环境、安装应用程序,可点此查看网站基础环境搭建服务。 基于阿里云服务器 ECS,若需要专业工程师协助对系统/数据库/站点进行基础设置,可使用云资源管理基础设置服务。

微笑de向阳 2019-12-01 23:54:01 0 浏览量 回答数 0

回答

自建步骤自行建站的四个基本步骤:服务器选择不同网站类型需要的服务器配置不同,首先确认网站规模与访问人数,一般情况下,小型网站只需要选择基础配置即可。购买服务器流程可参考通过购买页面创建一台ECS实例。想了解不同配置对应的价格,推荐使用ECS价格计算器。云服务器ECS主要计费方式为预付(包括包年包月和按周付费)和按量付费,详细的计费规则可以参考产品计价。域名购买和备案域名购买:输入想要的域名,未被占用即可注册,具体操作请参考域名注册流程。域名后缀通常为.COM或.CN,其它后缀介绍和区别请参考域名区别。 注意:域名注册成功后需进行实名认证。流程请参考域名如何实名制认证。域名备案:域名购买完成后,还需进行备案方可使用。备案步骤如下: i.备案准备:因各省管局要求存在差异,所需资料也不尽相同,请根据各省市备案规则准备资料,或访问工信部备案管理系统(www.miitbeian.gov.cn) 了解细则。详情请参考备案准备。ii.首次备案接入:若之前尚未进行过工信部备案,请参考首次备案流程图文引导。其它备案场景请参考备案导航。网站部署常见网站类型有以下几种:个人博客WordPress 常用于搭建个人博客网站,尤其适用于首次使用阿里云进行建站的新用户。详情请参考使用 WordPress 搭建个人手机博客。 若已有网站代码,可通过阿里云 Windows 一键安装web环境来部署。 论坛网站通过 phpwind 镜像快速搭建论坛网站请参考使用 phpwind 镜像搭建论坛。通过 Discuz 搭建论坛网站请参考使用 Discuz 镜像搭建论坛。其他建站教程通过镜像一键部署 Linux 环境通过镜像部署 Java Web 环境部署 Linux 主机管理系统 WDCP快速搭建 Moodle 课程管理系统初级建站推荐使用网上一键安装包,例如WordPress、discuz这类,比较适合新手操作。域名解析设置域名解析后,外部用户可通过域名访问网站。详情请参考设置域名解析快速入门。如需将域名指向一个IP地址,添加A记录即可。详情请参考如何添加不同记录类型的解析。至此,建站操作已基本完成,接下来您可使用域名测试访问是否正常。常见问题与解决方案在服务器使用或者网站搭建过程中,可能会遇到一些使用问题,因此,列举了以下最常见的问题和对应的解决方案。服务器远程连接Windows无法远程连接: 文档解决方案:无法连接 Windows 实例。视频教程:如何远程连接 Windows 实例。Linux无法远程连接: 文档解决方案:无法连接 Linux 实例。视频教程:如何远程连接 Linux 实例。安全组和快照如何设置安全组默认规则?安全组应用案例合集。如何创建自定义快照?网站无法访问Windows 实例带宽和CPU跑满或跑高怎么办?网站无法访问的常见原因及检查方法有哪些?Windows 实例网络访问丢包延时高怎么办?Linux 实例网站访问丢包延时高如何解决?域名解析已经生效,无法打开网站常规的原因有哪些?相关服务若在上云前希望了解如何选择适合自身业务特点的阿里云产品和配置,可点此查看架构设计&上云咨询服务。 若您需要将云下自建机房、托管机房等环境下的业务迁移到阿里云上, 并希望获取专业上云方案实施服务,可点此查看上云方案实施服务。 若您需要在阿里云服务器上部署站点环境、安装应用程序,可点此查看网站基础环境搭建服务。 基于阿里云服务器 ECS,若需要专业工程师协助对系统/数据库/站点进行基础设置,可使用云资源管理基础设置服务。

微笑de向阳 2019-12-01 23:14:41 0 浏览量 回答数 0

回答

自建步骤自行建站的四个基本步骤:服务器选择不同网站类型需要的服务器配置不同,首先确认网站规模与访问人数,一般情况下,小型网站只需要选择基础配置即可。购买服务器流程可参考通过购买页面创建一台ECS实例。想了解不同配置对应的价格,推荐使用ECS价格计算器。云服务器ECS主要计费方式为预付(包括包年包月和按周付费)和按量付费,详细的计费规则可以参考产品计价。域名购买和备案域名购买:输入想要的域名,未被占用即可注册,具体操作请参考域名注册流程。域名后缀通常为.COM或.CN,其它后缀介绍和区别请参考域名区别。 注意:域名注册成功后需进行实名认证。流程请参考域名如何实名制认证。域名备案:域名购买完成后,还需进行备案方可使用。备案步骤如下: i.备案准备:因各省管局要求存在差异,所需资料也不尽相同,请根据各省市备案规则准备资料,或访问工信部备案管理系统(www.miitbeian.gov.cn) 了解细则。详情请参考备案准备。ii.首次备案接入:若之前尚未进行过工信部备案,请参考首次备案流程图文引导。其它备案场景请参考备案导航。网站部署常见网站类型有以下几种:个人博客WordPress 常用于搭建个人博客网站,尤其适用于首次使用阿里云进行建站的新用户。详情请参考使用 WordPress 搭建个人手机博客。 若已有网站代码,可通过阿里云 Windows 一键安装web环境来部署。 论坛网站通过 phpwind 镜像快速搭建论坛网站请参考使用 phpwind 镜像搭建论坛。通过 Discuz 搭建论坛网站请参考使用 Discuz 镜像搭建论坛。其他建站教程通过镜像一键部署 Linux 环境通过镜像部署 Java Web 环境部署 Linux 主机管理系统 WDCP快速搭建 Moodle 课程管理系统初级建站推荐使用网上一键安装包,例如WordPress、discuz这类,比较适合新手操作。域名解析设置域名解析后,外部用户可通过域名访问网站。详情请参考设置域名解析快速入门。如需将域名指向一个IP地址,添加A记录即可。详情请参考如何添加不同记录类型的解析。至此,建站操作已基本完成,接下来您可使用域名测试访问是否正常。常见问题与解决方案在服务器使用或者网站搭建过程中,可能会遇到一些使用问题,因此,列举了以下最常见的问题和对应的解决方案。服务器远程连接Windows无法远程连接: 文档解决方案:无法连接 Windows 实例。视频教程:如何远程连接 Windows 实例。Linux无法远程连接: 文档解决方案:无法连接 Linux 实例。视频教程:如何远程连接 Linux 实例。安全组和快照如何设置安全组默认规则?安全组应用案例合集。如何创建自定义快照?网站无法访问Windows 实例带宽和CPU跑满或跑高怎么办?网站无法访问的常见原因及检查方法有哪些?Windows 实例网络访问丢包延时高怎么办?Linux 实例网站访问丢包延时高如何解决?域名解析已经生效,无法打开网站常规的原因有哪些?相关服务若在上云前希望了解如何选择适合自身业务特点的阿里云产品和配置,可点此查看架构设计&上云咨询服务。 若您需要将云下自建机房、托管机房等环境下的业务迁移到阿里云上, 并希望获取专业上云方案实施服务,可点此查看上云方案实施服务。 若您需要在阿里云服务器上部署站点环境、安装应用程序,可点此查看网站基础环境搭建服务。 基于阿里云服务器 ECS,若需要专业工程师协助对系统/数据库/站点进行基础设置,可使用云资源管理基础设置服务。

微笑de向阳 2019-12-01 23:14:40 0 浏览量 回答数 0

回答

自建步骤自行建站的四个基本步骤:服务器选择不同网站类型需要的服务器配置不同,首先确认网站规模与访问人数,一般情况下,小型网站只需要选择基础配置即可。购买服务器流程可参考通过购买页面创建一台ECS实例。想了解不同配置对应的价格,推荐使用ECS价格计算器。云服务器ECS主要计费方式为预付(包括包年包月和按周付费)和按量付费,详细的计费规则可以参考产品计价。域名购买和备案域名购买:输入想要的域名,未被占用即可注册,具体操作请参考域名注册流程。域名后缀通常为.COM或.CN,其它后缀介绍和区别请参考域名区别。 注意:域名注册成功后需进行实名认证。流程请参考域名如何实名制认证。域名备案:域名购买完成后,还需进行备案方可使用。备案步骤如下: i.备案准备:因各省管局要求存在差异,所需资料也不尽相同,请根据各省市备案规则准备资料,或访问工信部备案管理系统(www.miitbeian.gov.cn) 了解细则。详情请参考备案准备。ii.首次备案接入:若之前尚未进行过工信部备案,请参考首次备案流程图文引导。其它备案场景请参考备案导航。网站部署常见网站类型有以下几种:个人博客WordPress 常用于搭建个人博客网站,尤其适用于首次使用阿里云进行建站的新用户。详情请参考使用 WordPress 搭建个人手机博客。 若已有网站代码,可通过阿里云 Windows 一键安装web环境来部署。 论坛网站通过 phpwind 镜像快速搭建论坛网站请参考使用 phpwind 镜像搭建论坛。通过 Discuz 搭建论坛网站请参考使用 Discuz 镜像搭建论坛。其他建站教程通过镜像一键部署 Linux 环境通过镜像部署 Java Web 环境部署 Linux 主机管理系统 WDCP快速搭建 Moodle 课程管理系统初级建站推荐使用网上一键安装包,例如WordPress、discuz这类,比较适合新手操作。域名解析设置域名解析后,外部用户可通过域名访问网站。详情请参考设置域名解析快速入门。如需将域名指向一个IP地址,添加A记录即可。详情请参考如何添加不同记录类型的解析。至此,建站操作已基本完成,接下来您可使用域名测试访问是否正常。常见问题与解决方案在服务器使用或者网站搭建过程中,可能会遇到一些使用问题,因此,列举了以下最常见的问题和对应的解决方案。服务器远程连接Windows无法远程连接: 文档解决方案:无法连接 Windows 实例。视频教程:如何远程连接 Windows 实例。Linux无法远程连接: 文档解决方案:无法连接 Linux 实例。视频教程:如何远程连接 Linux 实例。安全组和快照如何设置安全组默认规则?安全组应用案例合集。如何创建自定义快照?网站无法访问Windows 实例带宽和CPU跑满或跑高怎么办?网站无法访问的常见原因及检查方法有哪些?Windows 实例网络访问丢包延时高怎么办?Linux 实例网站访问丢包延时高如何解决?域名解析已经生效,无法打开网站常规的原因有哪些?相关服务若在上云前希望了解如何选择适合自身业务特点的阿里云产品和配置,可点此查看架构设计&上云咨询服务。 若您需要将云下自建机房、托管机房等环境下的业务迁移到阿里云上, 并希望获取专业上云方案实施服务,可点此查看上云方案实施服务。 若您需要在阿里云服务器上部署站点环境、安装应用程序,可点此查看网站基础环境搭建服务。 基于阿里云服务器 ECS,若需要专业工程师协助对系统/数据库/站点进行基础设置,可使用云资源管理基础设置服务。

微笑de向阳 2019-12-02 02:10:58 0 浏览量 回答数 0

问题

服务器出现宕机可能的原因及解决方法

dd防护专家 2019-12-01 21:24:52 1336 浏览量 回答数 0

问题

面向服务的ERP可重构开发模型

hua2012h 2019-12-01 20:13:41 7876 浏览量 回答数 0

回答

在使用自建 MySQL 数据库的时候,偶尔会遇到无法连接 MySQL 服务器的情况,以下列举一些常见问题及解决办法: 账号没有授权导致无法连接 MySQL,报错:'xxxx' is not allowed to connect to this MySQL Server 端口监听不对导致无法连接 MySQL MySQL 连接报错: Lost connection to MySQL server at 'reading initial communication packet'  版本问题导致无法连接 MySQL,报错:Connection using old (pre-4.1.1) authentication protocol refused (client option 'secure_auth' enabled) 账号没有授权导致无法连接 MySQL,报错:'xxxx' is not allowed to connect to this MySQL Server 问题现象 服务器上部署 MySQL  在本地直接连接服务器是没有问题的,远程连接 MySQL 会显示错误 。 报错:EHost 'XX.XX.XX.XX' is not allowed to connect to this MySQL serverConnection closed by foreign host. 解决方案 查看 MySQL  监听的地址就是 0.0.0.0 。这种情况请先检查两个地方 1、服务器是否开启了防火墙,请先关闭防火墙测试 2、MySQL 是否没有打开远程登录 打开远程登陆有两种方法。 (1 )该表:在本机登入 MySQL 后,更改 “mysql” 数据库里的 “user” 表里的 “host” 项,从 ”localhost” 改为 '%'。 (2 )授权法:为 MySQL 创建一个 远程连接的用户 一般这样配置就没有问题了。   端口监听不对导致无法连接 MySQL MySQL 监听在 127.0.0.1 上导致外部无法连接,如下图: 修改 MySQL 配置文件里面的 bind-address,如下图重启即可。 MySQL 连接报错:Lost connection to MySQL server at 'reading initial communication packet'  问题现象 MySQL 远程连接报错:Lost connection to MySQL server at 'reading initial communication packet'  解决方案 1、检查是否有防火墙限制2、检查 MySQL 是否有访问权限 use mysql; Grant all privileges on *.* to 'root'@'%' identified by '密码' with grant option; flush privileges; 3、检查 my.ini 文件里是否设置了 bind-address 参数,如果有将该条注释掉即可。 4、在 my.ini 中添加 skip-name-resolve vi /etc/my.cnf [mysqld] skip-name-resolve #增加这个 5、修改 hosts.allow vi /etc/hosts.allow mysqld-max : ALL :ALLOW #增加这个   版本问题导致无法连接 MySQL,报错:Connection using old (pre-4.1.1) authentication protocol refused (client option 'secure_auth' enabled) 问题现象 ECS Linux 主机本机 MySQL 客户端版本为 5.6,连接低版本的 MySQL 客户端 报错ERROR 2049 (HY000): Connection using old (pre-4.1.1) authentication protocol refused (client option 'secure_auth' enabled) 问题原因 由于服务器端的密码管理协议陈旧,使用的是旧有的用户密码格式存储;但是客户端升级之后采用了新的密码格式 。mysql5.6版本遇到这种不一致的情况就会拒绝连接 。 解决方案 连接时增加 --secure-auth 参数,连接命令如下: mysql -h host -u username --secure-auth -p 详细的表述可以参考 MySQL 的手册   如果问题还未能解决,您可以到阿里云社区进行免费咨询,或联系云市场商家寻求帮助。

51干警网 2019-12-02 00:35:42 0 浏览量 回答数 0

问题

【精品问答】Docker与JVM常见bug解决方案50问(附源码)

游客pklijor6gytpx 2019-12-01 21:57:35 53 浏览量 回答数 0

问题

MaxCompute百问集锦(持续更新20171011)

隐林 2019-12-01 20:19:23 38430 浏览量 回答数 18

回答

使用阿里云云服务器ECS搭建网站有多种方式,本文主要介绍自助建站的流程。 建站方式 使用ECS建站的方式如下表所示。请根据实际业务需求,选择适合您的建站方式。 建站方式 优势 适用人群 自助建站 服务器购买、网站搭建、网站维护全程自主,弹性灵活。 适合刚接触云计算或对云服务器和建站不太了解、希望自行设计网站的个人或小企业用户。 云市场网站模板 即买即用,轻松便捷,后台管理方便,且有专人进行网站维护。 适合无特殊需求的个人和小企业用户,支持PC、手机等多种渠道,选择多样,成本较低。 云市场企业官网定制 即买即用,轻松便捷,后台管理方便,且有专人进行网站维护。 适合看重网站个性化、预算相对充足、希望节省人力、使用需求迫切的企业用户。 自助建站步骤 选择服务器。 不同网站类型需要的ECS配置不同,请您确认网站规模与访问人数。一般情况下,小型网站只需要选择基础配置即可。购买实例的步骤,请参见使用向导创建实例。 云服务器ECS主要计费方式为包年包月和按量付费,详情请参见计费概述。使用ECS价格计算器,可了解不同配置对应的价格。 部署网站。 选择网站的部署方式。具体部署方式,请参见自助建站方式汇总。 购买域名。 注册域名。 输入想要的域名,未被占用即可注册。具体操作,请参见注册通用域名。 域名后缀通常为.com或.cn,更多后缀请参见域名区别。 实名认证。具体流程,请参见域名实名认证概述。 备案域名。 说明 使用中国大陆境内服务器托管您的网站时,需要进行备案。否则,请跳过此步骤。 准备备案。 各省管局要求资料有所不同,请根据各地区管局备案规则准备资料。更多详情,请参见ICP备案前准备概述。 备案。 若之前尚未进行过工信部备案,请先完成首次备案接入。具体步骤,请参见首次备案。 其它备案场景,请参见ICP备案流程概述。 解析域名。 解析域名的具体步骤,请参见设置域名解析快速入门。设置域名解析后,外部用户可通过域名访问网站。 如需将域名指向一个IP地址,添加A记录即可。详情请参见如何添加不同记录类型的解析。 至此,自助建站操作已完成。接下来,您可以使用域名访问网站,测试服务是否正常。 自助建站常见问题 在使用ECS或者搭建网站过程中的常见问题和解决方案如下: 服务器远程连接 Windows无法远程连接: 文档解决方案:无法连接Windows实例。 视频教程:如何远程连接Windows实例。 Linux无法远程连接: 文档解决方案:无法连接Linux实例。 视频教程:如何远程连接Linux实例。 安全组和快照 安全组应用案例 使用快照回滚云盘 网站无法访问 Windows实例带宽和CPU跑满或跑高怎么办? 网站无法访问的常见原因及检查方法有哪些? Windows实例网络访问丢包延时高怎么办? Linux实例网站访问丢包延时高如何解决? 相关服务 上云前如何根据自身业务特点,选择阿里云产品和配置,请参见架构设计&上云咨询服务。 迁移云下自建机房、托管机房等环境下的业务到阿里云, 并获取专业迁云方案实施服务,请参见迁云方案实施服务。 基于ECS,若需要专业工程师协助对系统、数据库、站点进行基础设置,请参见云资源管理基础设置服务。

1934890530796658 2020-03-26 09:58:24 0 浏览量 回答数 0

问题

【精品问答】130+大数据面试汇总

问问小秘 2019-12-01 21:52:42 1644 浏览量 回答数 2

问题

【精品问答】Java必备核心知识1000+(附源码)

问问小秘 2019-12-01 22:00:28 870 浏览量 回答数 1

问题

【精品问答】Java技术1000问(1)

问问小秘 2019-12-01 21:57:43 37578 浏览量 回答数 11

问题

【精品问答】python技术1000问(1)

问问小秘 2019-12-01 21:57:48 454222 浏览量 回答数 19

问题

Apache Flink常见问题汇总【精品问答】

黄一刀 2020-05-19 17:51:47 11230 浏览量 回答数 2

回答

PHP面试干货 1、进程和线程 进程和线程都是由操作系统所体会的程序运行的基本单元,系统利用该基本单元实现系统对应用的并发性。进程和线程的区别在于: 简而言之,一个程序至少有一个进程,一个进程至少有一个线程. 线程的划分尺度小于进程,使得多线程程序的并发性高。 另外,进程在执行过程中拥有独立的内存单元,而多个线程共享内存,从而极大地提高了程序的运行效率。 线程在执行过程中与进程还是有区别的。每个独立的线程有一个程序运行的入口、顺序执行序列和程序的出口。但是线程不能够独立执行,必须依存在应用程序中,由应用程序提供多个线程执行控制。 从逻辑角度来看,多线程的意义在于一个应用程序中,有多个执行部分可以同时执行。但操作系统并没有将多个线程看做多个独立的应用,来实现进程的调度和管理以及资源分配。这就是进程和线程的重要区别。 2、apache默认使用进程管理还是线程管理?如何判断并设置最大连接数? 一个进程可以开多个线程 默认是进程管理 默认有一个主进程 Linux: ps -aux | grep httpd | more 一个子进程代表一个用户的连接 Conf/extra/httpd-mpm.conf 多路功能模块 http -l 查询当前apache处于什么模式下 3、单例模式 单例模式需求:只能实例化产生一个对象 如何实现: 私有化构造函数 禁止克隆对象 提供一个访问这个实例的公共的静态方法(通常为getInstance方法),从而返回唯一对象 需要一个保存类的静态属性 class demo { private static $MyObject; //保存对象的静态属性 private function __construct(){ //私有化构造函数 } private function __clone(){ //禁止克隆 } public static function getInstance(){ if(! (self::$MyObject instanceof self)){ self::$MyObject = new self; } return self::$MyObject; } } 4、安装完Apache后,在http.conf中配置加载PHP文件以Apache模块的方式安装PHP,在文件http.conf中首先要用语句LoadModule php5_module "e:/php/php5apache2.dll"动态装载PHP模块,然后再用语句AddType application/x-httpd-php .php 使得Apache把所有扩展名为PHP的文件都作为PHP脚本处理 5、debug_backtrace()函数能返回脚本里的任意行中调用的函数的名称。该函数同时还经常被用在调试中,用来判断错误是如何发生的 function one($str1, $str2) { two("Glenn", "Quagmire"); } function two($str1, $str2) { three("Cleveland", "Brown"); } function three($str1, $str2) { print_r(debug_backtrace()); } one("Peter", "Griffin"); Array ( [0] => Array ( [file] => D:\www\test\result.php [line] => 9 [function] => three [args] => Array ( [0] => Cleveland [1] => Brown ) ) [1] => Array ( [file] => D:\www\test\result.php [line] => 5 [function] => two [args] => Array ( [0] => Glenn [1] => Quagmire ) ) [2] => Array ( [file] => D:\www\test\result.php [line] => 16 [function] => one [args] => Array ( [0] => Peter [1] => Griffin ) ) ) 6、输出用户的IP地址,并且判断用户的IP地址是否在192.168.1.100 — 192.168.1.150之间 echo $ip=getenv('REMOTE_ADDR'); $ip=str_replace('.','',$ip); if($ip<1921681150 && $ip>1921681100) { echo 'ip在192.168.1.100—–192.168.1.150之间'; } else { echo 'ip不在192.168.1.100—–192.168.1.150之间'; } 7、请将2维数组按照name的长度进行重新排序,按照顺序将id赋值 $tarray = array( array('id' => 0, 'name' => '123'), array('id' => 0, 'name' => '1234'), array('id' => 0, 'name' => '1235'), array('id' => 0, 'name' => '12356'), array('id' => 0, 'name' => '123abc') ); foreach($tarray as $key=>$val) { $c[]=$val['name']; } function aa($a,$b) { if(strlen($a)==strlen($b)) return 0; return strlen($a)>strlen($b)?-1:1; } usort($c,'aa'); $len=count($c); for($i=0;$i<$len;$i++) { $t[$i]['id']=$i+1; $t[$i]['name']=$c[$i]; } print_r($t); 8、表单数据提交方式POST和GET的区别,URL地址传递的数据最大长度是多少? POST方式提交数据用户不可见,是数据更安全,最大长度不受限制,而GET方式传值在URL地址可以看到,相对不安全,对大长度是2048字节。 9、SESSION和COOKIE的作用和区别,SESSION信息的存储方式,如何进行遍历 SESSION和COOKIE都能够使值在页面之间进行传递,SESSION存储在服务器端,数据更安全,COOKIE保存在客户端,用户使用手段可以进行修改,SESSION依赖于COOKIE进行传递的。Session遍历使用$_SESSION[]取值,cookie遍历使用$_COOKIE[]取值。 10、什么是数据库索引,主键索引,唯一索引的区别,索引的缺点是什么 索引用来快速地寻找那些具有特定值的记录。 主键索引和唯一索引的区别:主键是一种唯一性索引,但它必须指定为“PRIMARY KEY”,每个表只能有一个主键。唯一索引索引列的所有值都只能出现一次,即必须唯一。 索引的缺点: 1、创建索引和维护索引要耗费时间,这种时间随着数据量的增加而增加。 2、索引需要占用物理空间,除了数据表占数据空间之外,每一个索引还要占一定的物理空间,如果要建立聚簇索引,需要的空间就会更大。 3、当对表中的数据进行增加、删除、修改的时候,索引也要动态的维护,这样就降低了数据的维护速度。 11、数据库设计时,常遇到的性能瓶颈有哪些,常有的解决方案 瓶颈主要有: 1、磁盘搜索 优化方法是:将数据分布在多个磁盘上 2、磁盘读/写 优化方法是:从多个磁盘并行读写。 3、CPU周期 优化方法:扩充内存 4、内存带宽 12、include和require区别 include引入文件的时候,如果碰到错误,会给出提示,并继续运行下边的代码。 require引入文件的时候,如果碰到错误,会给出提示,并停止运行下边的代码。 13、文件上传时设计到点 和文件上传有关的php.ini配置选项(File Uploads): file_uploads=On/Off:文件是否允许上传 upload_max_filesize上传文件时,单个文件的最大大小 post_max_size:提交表单时,整个post表单的最大大小 max_file_uploads =20上传文件的个数 内存占用,脚本最大执行时间也间接影响到文件的上传 14、header常见状态 //200 正常状态 header('HTTP/1.1 200 OK'); // 301 永久重定向,记得在后面要加重定向地址 Location:$url header('HTTP/1.1 301 Moved Permanently'); // 重定向,其实就是302 暂时重定向 header('Location: http://www.maiyoule.com/'); // 设置页面304 没有修改 header('HTTP/1.1 304 Not Modified'); // 显示登录框, header('HTTP/1.1 401 Unauthorized'); header('WWW-Authenticate: Basic realm="登录信息"'); echo '显示的信息!'; // 403 禁止访问 header('HTTP/1.1 403 Forbidden'); // 404 错误 header('HTTP/1.1 404 Not Found'); // 500 服务器错误 header('HTTP/1.1 500 Internal Server Error'); // 3秒后重定向指定地址(也就是刷新到新页面与 <meta http-equiv="refresh" content="10;http://www.maiyoule.com/ /> 相同) header('Refresh: 3; url=http://www.maiyoule.com/'); echo '10后跳转到http://www.maiyoule.com'; // 重写 X-Powered-By 值 header('X-Powered-By: PHP/5.3.0'); header('X-Powered-By: Brain/0.6b'); //设置上下文语言 header('Content-language: en'); // 设置页面最后修改时间(多用于防缓存) $time = time() - 60; //建议使用filetime函数来设置页面缓存时间 header('Last-Modified: '.gmdate('D, d M Y H:i:s', $time).' GMT'); // 设置内容长度 header('Content-Length: 39344'); // 设置头文件类型,可以用于流文件或者文件下载 header('Content-Type: application/octet-stream'); header('Content-Disposition: attachment; filename="example.zip"'); header('Content-Transfer-Encoding: binary'); readfile('example.zip');//读取文件到客户端 //禁用页面缓存 header('Cache-Control: no-cache, no-store, max-age=0, must-revalidate'); header('Expires: Mon, 26 Jul 1997 05:00:00 GMT'); header('Pragma: no-cache'); //设置页面头信息 header('Content-Type: text/html; charset=iso-8859-1'); header('Content-Type: text/html; charset=utf-8'); header('Content-Type: text/plain'); header('Content-Type: image/jpeg'); header('Content-Type: application/zip'); header('Content-Type: application/pdf'); header('Content-Type: audio/mpeg'); header('Content-Type: application/x-shockwave-flash'); //.... 至于Content-Type 的值 可以去查查 w3c 的文档库,那里很丰富 15、ORM和ActiveRecord ORM:object relation mapping,即对象关系映射,简单的说就是对象模型和关系模型的一种映射。为什么要有这么一个映射?很简单,因为现在的开发语言基本都是oop的,但是传统的数据库却是关系型的。为了可以靠贴近面向对象开发,我们想要像操作对象一样操作数据库。还可以隔离底层数据库层,我们不需要关心我们使用的是mysql还是其他的关系型数据库 ActiveRecord也属于ORM层,由Rails最早提出,遵循标准的ORM模型:表映射到记录,记录映射到对象,字段映射到对象属性。配合遵循的命名和配置惯例,能够很大程度的快速实现模型的操作,而且简洁易懂。 ActiveRecord的主要思想是: 1. 每一个数据库表对应创建一个类,类的每一个对象实例对应于数据库中表的一行记录;通常表的每个字段在类中都有相应的Field; 2. ActiveRecord同时负责把自己持久化,在ActiveRecord中封装了对数据库的访问,即CURD;; 3. ActiveRecord是一种领域模型(Domain Model),封装了部分业务逻辑; ActiveRecord比较适用于: 1. 业务逻辑比较简单,当你的类基本上和数据库中的表一一对应时, ActiveRecord是非常方便的,即你的业务逻辑大多数是对单表操作; 2. 当发生跨表的操作时, 往往会配合使用事务脚本(Transaction Script),把跨表事务提升到事务脚本中; 3. ActiveRecord最大优点是简单, 直观。 一个类就包括了数据访问和业务逻辑. 如果配合代码生成器使用就更方便了; 这些优点使ActiveRecord特别适合WEB快速开发。 16、斐波那契方法,也就是1 1 2 3 5 8 ……,这里给出两种方法,大家可以对比下,看看哪种快,以及为什么 function fibonacci($n){ if($n == 0){ return 0; } if($n == 1){ return 1; } return fibonacci($n-1)+fibonacci($n-2); } function fibonacci($n){ for($i=0; $i<$n; $i++){ $r[] = $i<2 ? 1 : $r[$i-1]+$r[$i-2]; } return $r[--$i]; } 17、约瑟夫环,也就是常见的数猴子,n只猴子围成一圈,每只猴子下面标了编号,从1开始数起,数到m那么第m只猴子便退出,依次类推,每数到m,那么那个位置的猴子退出,那么最后剩下的猴子下的编号是啥。 function yuesefu($n,$m) { $r=0; for($i=2; $i<=$n; $i++) { $r=($r+$m)%$i; } return $r+1; } 18、冒泡排序,大致是临近的数字两两进行比较,按照从小到大或者从大到小的顺序进行交换,这样一趟过去后,最大或最小的数字被交换到了最后一位,然后再从头开始进行两两比较交换,直到倒数第二位时结束 function bubbleSort($arr){ for($i=0, $len=count($arr); $i<$len; $i++){ for($j=0; $j<$len; $j++){ if($arr[$i]<$arr[$j]){ $tmp = $arr[$j]; $arr[$j] = $arr[$i]; $arr[$i] = $tmp; } } } return $arr; } 19、快速排序,也就是找出一个元素(理论上可以随便找一个)作为基准,然后对数组进行分区操作,使基准左边元素的值都不大于基准值,基准右边的元素值 都不小于基准值,如此作为基准的元素调整到排序后的正确位置。递归快速排序,将其他n-1个元素也调整到排序后的正确位置。最后每个元素都是在排序后的正 确位置,排序完成。所以快速排序算法的核心算法是分区操作,即如何调整基准的位置以及调整返回基准的最终位置以便分治递归。 function quickSort($arr){ $len = count($arr); if($len <=1){ return $arr; } $key = $arr[0]; $leftArr = $rightArr= array(); for($i=1; $i<$len; $i++){ if($arr[$i] <= $key){ $leftArr[] = $arr[$i]; } else{ $rightArr[] = $arr[$i]; } } $leftArr = quickSort($leftArr); $rightArr = quickSort($rightArr); return array_merge($leftArr, array($key), $rightArr); } 20、(递归的)列出目录下所有文件及目录,这里也有两种方法 function listDir($path){ $res = dir($path); while($file = $res->read()){ if($file == '.' || $file == '..'){ continue; } if(is_dir($path . '/' .$file)){ echo $path . '/' .$file . "\r\n"; listDir($path . '/' .$file); } else{ echo $path . '/' .$file . "\r\n"; } } $res->close(); } function listDir($path){ if(is_dir($path)){ if(FALSE !== ($res = opendir($path))){ while(FALSE !== ($file = readdir($res))){ if($file == '.' || $file == '..'){ continue; } $subPath = $path . '/' . $file; if(is_dir($subPath)){ echo $subPath . "\r\n"; listDir($subPath); } else{ echo $subPath . "\r\n"; } } } } } 21、找出相对的目录,比如/a/b/c/d/e.php相对于/a/b/13/34/c.php是/c/d/ function ralativePath($a, $b){ $a = explode('/', dirname($a)); $b = explode('/', dirname($b)); $c = '/'; foreach ($a as $k=> $v){ if($v != $b[$k]){ $c .= $v . '/'; } } echo $c; } 22、快速找出url中php后缀 function get_ext($url){ $data = parse_url($url); return pathinfo($data['path'], PATHINFO_EXTENSION); } 23、正则题,使用正则抓取网页,以网页meta为utf8为准,若是抓取的网页编码为big5之类的,需要转化为utf8再收录 function preg_meta($meta){ $replacement = "\\1utf8\\6\\7"; $pattern = '#(<meta\s+http-equiv=(\'|"|)Content-Type(\'|"|)\s+content=(\'|"|)text/html; charset=)(\w+)(\'|"|)(>)#i'; return preg_replace($pattern, $replacement, $meta); } echo preg_meta("<meta http-equiv=Content-Type content='text/html; charset=big5'><META http-equiv=\"Content-Type\" content='text/html; charset=big5'>"); 24、不用php的反转函数倒序输出字符串,如abc,反序输出cba function revstring($str){ for($i=strlen($str)-1; $i>=0; $i--){ echo $str{$i}; } } revstring('abc'); 25、常见端口 TCP 21端口:FTP 文件传输服务 SSH 22端口:SSH连接linux服务器,通过SSH连接可以远程管理Linux等设备 TCP 23端口:TELNET 终端仿真服务 TCP 25端口:SMTP 简单邮件传输服务 UDP 53端口:DNS 域名解析服务 TCP 80端口:HTTP 超文本传输服务 TCP 110端口:POP3 “邮局协议版本3”使用的端口 TCP 443端口:HTTPS 加密的超文本传输服务 TCP 1521端口:Oracle数据库服务 TCP 1863端口:MSN Messenger的文件传输功能所使用的端口 TCP 3389端口:Microsoft RDP 微软远程桌面使用的端口 TCP 5631端口:Symantec pcAnywhere 远程控制数据传输时使用的端口 UDP 5632端口:Symantec pcAnywhere 主控端扫描被控端时使用的端口 TCP 5000端口:MS SQL Server使用的端口 UDP 8000端口:腾讯QQ 26、linux常用的命令 top linux进程实时监控 ps 在Linux中是查看进程的命令。ps查看正处于Running的进程 mv 为文件或目录改名或将文件由一个目录移入另一个目录中。 find 查找文件 df 可显示所有文件系统对i节点和磁盘块的使用情况。 cat 打印文件类容 chmod 变更文件或目录的权限 chgrp 文件或目录的权限的掌控以拥有者及所诉群组来管理。可以使用chgrp指令取变更文件与目录所属群组 grep 是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹 配的行打印出来。 wc 为统计指定文件中的字节数、字数、行数,并将统计结果显示输出 27、对于大流量的网站,您采用什么样的方法来解决访问量问题 首先,确认服务器硬件是否足够支持当前的流量 其次,优化数据库访问。 第三,禁止外部的盗链。 第四,控制大文件的下载。 第五,使用不同主机分流主要流量 第六,使用流量分析统计软件 28、$_SERVER常用的字段 $_SERVER['PHP_SELF'] #当前正在执行脚本的文件名 $_SERVER['SERVER_NAME'] #当前运行脚本所在服务器主机的名称 $_SERVER['REQUEST_METHOD'] #访问页面时的请求方法。例如:“GET”、“HEAD”,“POST”,“PUT” $_SERVER['QUERY_STRING'] #查询(query)的字符串 $_SERVER['HTTP_HOST'] #当前请求的 Host: 头部的内容 $_SERVER['HTTP_REFERER'] #链接到当前页面的前一页面的 URL 地址 $_SERVER['REMOTE_ADDR'] #正在浏览当前页面用户的 IP 地址 $_SERVER['REMOTE_HOST'] #正在浏览当前页面用户的主机名 $_SERVER['SCRIPT_FILENAME'] #当前执行脚本的绝对路径名 $_SERVER['SCRIPT_NAME'] #包含当前脚本的路径。这在页面需要指向自己时非常有用 $_SERVER['REQUEST_URI'] #访问此页面所需的 URI。例如,“/index.html” 29、安装php扩展 进入扩展的目录 phpize命令得到configure文件 ./configure --with-php-config=/usr/local/php/bin/php-config make & make install 在php.ini中加入扩展名称.so 重启web服务器(nginx/apache) 30、php-fpm与nginx PHP-FPM也是一个第三方的FastCGI进程管理器,它是作为PHP的一个补丁来开发的,在安装的时候也需要和PHP源码一起编译,也就是说PHP-FPM被编译到PHP内核中,因此在处理性能方面更加优秀;同时它在处理高并发方面也比spawn-fcgi引擎好很多,因此,推荐Nginx+PHP/PHP-FPM这个组合对PHP进行解析。 FastCGI 的主要优点是把动态语言和HTTP Server分离开来,所以Nginx与PHP/PHP-FPM经常被部署在不同的服务器上,以分担前端Nginx服务器的压力,使Nginx专一处理静态请求和转发动态请求,而PHP/PHP-FPM服务器专一解析PHP动态请求 #fastcgi FastCGI是一个可伸缩地、高速地在HTTP server和动态脚本语言间通信的接口。多数流行的HTTP server都支持FastCGI,包括Apache、Nginx和lighttpd等,同时,FastCGI也被许多脚本语言所支持,其中就有PHP。 FastCGI是从CGI发展改进而来的。传统CGI接口方式的主要缺点是性能很差,因为每次HTTP服务器遇到动态程序时都需要重新启动脚本解析器来执行解析,然后结果被返回给HTTP服务器。这在处理高并发访问时,几乎是不可用的。另外传统的CGI接口方式安全性也很差,现在已经很少被使用了。 FastCGI接口方式采用C/S结构,可以将HTTP服务器和脚本解析服务器分开,同时在脚本解析服务器上启动一个或者多个脚本解析守护进程。当HTTP服务器每次遇到动态程序时,可以将其直接交付给FastCGI进程来执行,然后将得到的结果返回给浏览器。这种方式可以让HTTP服务器专一地处理静态请求或者将动态脚本服务器的结果返回给客户端,这在很大程度上提高了整个应用系统的性能。 Nginx+FastCGI运行原理 Nginx不支持对外部程序的直接调用或者解析,所有的外部程序(包括PHP)必须通过FastCGI接口来调用。FastCGI接口在Linux下是socket,(这个socket可以是文件socket,也可以是ip socket)。为了调用CGI程序,还需要一个FastCGI的wrapper(wrapper可以理解为用于启动另一个程序的程序),这个wrapper绑定在某个固定socket上,如端口或者文件socket。当Nginx将CGI请求发送给这个socket的时候,通过FastCGI接口,wrapper接纳到请求,然后派生出一个新的线程,这个线程调用解释器或者外部程序处理脚本并读取返回数据;接着,wrapper再将返回的数据通过FastCGI接口,沿着固定的socket传递给Nginx;最后,Nginx将返回的数据发送给客户端,这就是Nginx+FastCGI的整个运作过程。 31、ajax全称“Asynchronous Javascript And XML”(异步JavaScript和XML)

小川游鱼 2019-12-02 01:41:29 0 浏览量 回答数 0

回答

PHP面试干货 1、进程和线程 进程和线程都是由操作系统所体会的程序运行的基本单元,系统利用该基本单元实现系统对应用的并发性。进程和线程的区别在于: 简而言之,一个程序至少有一个进程,一个进程至少有一个线程. 线程的划分尺度小于进程,使得多线程程序的并发性高。 另外,进程在执行过程中拥有独立的内存单元,而多个线程共享内存,从而极大地提高了程序的运行效率。 线程在执行过程中与进程还是有区别的。每个独立的线程有一个程序运行的入口、顺序执行序列和程序的出口。但是线程不能够独立执行,必须依存在应用程序中,由应用程序提供多个线程执行控制。 从逻辑角度来看,多线程的意义在于一个应用程序中,有多个执行部分可以同时执行。但操作系统并没有将多个线程看做多个独立的应用,来实现进程的调度和管理以及资源分配。这就是进程和线程的重要区别。 2、apache默认使用进程管理还是线程管理?如何判断并设置最大连接数? 一个进程可以开多个线程 默认是进程管理 默认有一个主进程 Linux: ps -aux | grep httpd | more 一个子进程代表一个用户的连接 Conf/extra/httpd-mpm.conf 多路功能模块 http -l 查询当前apache处于什么模式下 3、单例模式 单例模式需求:只能实例化产生一个对象 如何实现: 私有化构造函数 禁止克隆对象 提供一个访问这个实例的公共的静态方法(通常为getInstance方法),从而返回唯一对象 需要一个保存类的静态属性 class demo { private static $MyObject; //保存对象的静态属性 private function __construct(){ //私有化构造函数 } private function __clone(){ //禁止克隆 } public static function getInstance(){ if(! (self::$MyObject instanceof self)){ self::$MyObject = new self; } return self::$MyObject; } } 4、安装完Apache后,在http.conf中配置加载PHP文件以Apache模块的方式安装PHP,在文件http.conf中首先要用语句LoadModule php5_module "e:/php/php5apache2.dll"动态装载PHP模块,然后再用语句AddType application/x-httpd-php .php 使得Apache把所有扩展名为PHP的文件都作为PHP脚本处理 5、debug_backtrace()函数能返回脚本里的任意行中调用的函数的名称。该函数同时还经常被用在调试中,用来判断错误是如何发生的 function one($str1, $str2) { two("Glenn", "Quagmire"); } function two($str1, $str2) { three("Cleveland", "Brown"); } function three($str1, $str2) { print_r(debug_backtrace()); } one("Peter", "Griffin"); Array ( [0] => Array ( [file] => D:\www\test\result.php [line] => 9 [function] => three [args] => Array ( [0] => Cleveland [1] => Brown ) ) [1] => Array ( [file] => D:\www\test\result.php [line] => 5 [function] => two [args] => Array ( [0] => Glenn [1] => Quagmire ) ) [2] => Array ( [file] => D:\www\test\result.php [line] => 16 [function] => one [args] => Array ( [0] => Peter [1] => Griffin ) ) ) 6、输出用户的IP地址,并且判断用户的IP地址是否在192.168.1.100 — 192.168.1.150之间 echo $ip=getenv('REMOTE_ADDR'); $ip=str_replace('.','',$ip); if($ip<1921681150 && $ip>1921681100) { echo 'ip在192.168.1.100—–192.168.1.150之间'; } else { echo 'ip不在192.168.1.100—–192.168.1.150之间'; } 7、请将2维数组按照name的长度进行重新排序,按照顺序将id赋值 $tarray = array( array('id' => 0, 'name' => '123'), array('id' => 0, 'name' => '1234'), array('id' => 0, 'name' => '1235'), array('id' => 0, 'name' => '12356'), array('id' => 0, 'name' => '123abc') ); foreach($tarray as $key=>$val) { $c[]=$val['name']; } function aa($a,$b) { if(strlen($a)==strlen($b)) return 0; return strlen($a)>strlen($b)?-1:1; } usort($c,'aa'); $len=count($c); for($i=0;$i<$len;$i++) { $t[$i]['id']=$i+1; $t[$i]['name']=$c[$i]; } print_r($t); 8、表单数据提交方式POST和GET的区别,URL地址传递的数据最大长度是多少? POST方式提交数据用户不可见,是数据更安全,最大长度不受限制,而GET方式传值在URL地址可以看到,相对不安全,对大长度是2048字节。 9、SESSION和COOKIE的作用和区别,SESSION信息的存储方式,如何进行遍历 SESSION和COOKIE都能够使值在页面之间进行传递,SESSION存储在服务器端,数据更安全,COOKIE保存在客户端,用户使用手段可以进行修改,SESSION依赖于COOKIE进行传递的。Session遍历使用$_SESSION[]取值,cookie遍历使用$_COOKIE[]取值。 10、什么是数据库索引,主键索引,唯一索引的区别,索引的缺点是什么 索引用来快速地寻找那些具有特定值的记录。 主键索引和唯一索引的区别:主键是一种唯一性索引,但它必须指定为“PRIMARY KEY”,每个表只能有一个主键。唯一索引索引列的所有值都只能出现一次,即必须唯一。 索引的缺点: 1、创建索引和维护索引要耗费时间,这种时间随着数据量的增加而增加。 2、索引需要占用物理空间,除了数据表占数据空间之外,每一个索引还要占一定的物理空间,如果要建立聚簇索引,需要的空间就会更大。 3、当对表中的数据进行增加、删除、修改的时候,索引也要动态的维护,这样就降低了数据的维护速度。 11、数据库设计时,常遇到的性能瓶颈有哪些,常有的解决方案 瓶颈主要有: 1、磁盘搜索 优化方法是:将数据分布在多个磁盘上 2、磁盘读/写 优化方法是:从多个磁盘并行读写。 3、CPU周期 优化方法:扩充内存 4、内存带宽 12、include和require区别 include引入文件的时候,如果碰到错误,会给出提示,并继续运行下边的代码。 require引入文件的时候,如果碰到错误,会给出提示,并停止运行下边的代码。 13、文件上传时设计到点 和文件上传有关的php.ini配置选项(File Uploads): file_uploads=On/Off:文件是否允许上传 upload_max_filesize上传文件时,单个文件的最大大小 post_max_size:提交表单时,整个post表单的最大大小 max_file_uploads =20上传文件的个数 内存占用,脚本最大执行时间也间接影响到文件的上传 14、header常见状态 //200 正常状态 header('HTTP/1.1 200 OK'); // 301 永久重定向,记得在后面要加重定向地址 Location:$url header('HTTP/1.1 301 Moved Permanently'); // 重定向,其实就是302 暂时重定向 header('Location: http://www.maiyoule.com/'); // 设置页面304 没有修改 header('HTTP/1.1 304 Not Modified'); // 显示登录框, header('HTTP/1.1 401 Unauthorized'); header('WWW-Authenticate: Basic realm="登录信息"'); echo '显示的信息!'; // 403 禁止访问 header('HTTP/1.1 403 Forbidden'); // 404 错误 header('HTTP/1.1 404 Not Found'); // 500 服务器错误 header('HTTP/1.1 500 Internal Server Error'); // 3秒后重定向指定地址(也就是刷新到新页面与 <meta http-equiv="refresh" content="10;http://www.maiyoule.com/ /> 相同) header('Refresh: 3; url=http://www.maiyoule.com/'); echo '10后跳转到http://www.maiyoule.com'; // 重写 X-Powered-By 值 header('X-Powered-By: PHP/5.3.0'); header('X-Powered-By: Brain/0.6b'); //设置上下文语言 header('Content-language: en'); // 设置页面最后修改时间(多用于防缓存) $time = time() - 60; //建议使用filetime函数来设置页面缓存时间 header('Last-Modified: '.gmdate('D, d M Y H:i:s', $time).' GMT'); // 设置内容长度 header('Content-Length: 39344'); // 设置头文件类型,可以用于流文件或者文件下载 header('Content-Type: application/octet-stream'); header('Content-Disposition: attachment; filename="example.zip"'); header('Content-Transfer-Encoding: binary'); readfile('example.zip');//读取文件到客户端 //禁用页面缓存 header('Cache-Control: no-cache, no-store, max-age=0, must-revalidate'); header('Expires: Mon, 26 Jul 1997 05:00:00 GMT'); header('Pragma: no-cache'); //设置页面头信息 header('Content-Type: text/html; charset=iso-8859-1'); header('Content-Type: text/html; charset=utf-8'); header('Content-Type: text/plain'); header('Content-Type: image/jpeg'); header('Content-Type: application/zip'); header('Content-Type: application/pdf'); header('Content-Type: audio/mpeg'); header('Content-Type: application/x-shockwave-flash'); //.... 至于Content-Type 的值 可以去查查 w3c 的文档库,那里很丰富 15、ORM和ActiveRecord ORM:object relation mapping,即对象关系映射,简单的说就是对象模型和关系模型的一种映射。为什么要有这么一个映射?很简单,因为现在的开发语言基本都是oop的,但是传统的数据库却是关系型的。为了可以靠贴近面向对象开发,我们想要像操作对象一样操作数据库。还可以隔离底层数据库层,我们不需要关心我们使用的是mysql还是其他的关系型数据库 ActiveRecord也属于ORM层,由Rails最早提出,遵循标准的ORM模型:表映射到记录,记录映射到对象,字段映射到对象属性。配合遵循的命名和配置惯例,能够很大程度的快速实现模型的操作,而且简洁易懂。 ActiveRecord的主要思想是: 1. 每一个数据库表对应创建一个类,类的每一个对象实例对应于数据库中表的一行记录;通常表的每个字段在类中都有相应的Field; 2. ActiveRecord同时负责把自己持久化,在ActiveRecord中封装了对数据库的访问,即CURD;; 3. ActiveRecord是一种领域模型(Domain Model),封装了部分业务逻辑; ActiveRecord比较适用于: 1. 业务逻辑比较简单,当你的类基本上和数据库中的表一一对应时, ActiveRecord是非常方便的,即你的业务逻辑大多数是对单表操作; 2. 当发生跨表的操作时, 往往会配合使用事务脚本(Transaction Script),把跨表事务提升到事务脚本中; 3. ActiveRecord最大优点是简单, 直观。 一个类就包括了数据访问和业务逻辑. 如果配合代码生成器使用就更方便了; 这些优点使ActiveRecord特别适合WEB快速开发。 16、斐波那契方法,也就是1 1 2 3 5 8 ……,这里给出两种方法,大家可以对比下,看看哪种快,以及为什么 function fibonacci($n){ if($n == 0){ return 0; } if($n == 1){ return 1; } return fibonacci($n-1)+fibonacci($n-2); } function fibonacci($n){ for($i=0; $i<$n; $i++){ $r[] = $i<2 ? 1 : $r[$i-1]+$r[$i-2]; } return $r[--$i]; } 17、约瑟夫环,也就是常见的数猴子,n只猴子围成一圈,每只猴子下面标了编号,从1开始数起,数到m那么第m只猴子便退出,依次类推,每数到m,那么那个位置的猴子退出,那么最后剩下的猴子下的编号是啥。 function yuesefu($n,$m) { $r=0; for($i=2; $i<=$n; $i++) { $r=($r+$m)%$i; } return $r+1; } 18、冒泡排序,大致是临近的数字两两进行比较,按照从小到大或者从大到小的顺序进行交换,这样一趟过去后,最大或最小的数字被交换到了最后一位,然后再从头开始进行两两比较交换,直到倒数第二位时结束 function bubbleSort($arr){ for($i=0, $len=count($arr); $i<$len; $i++){ for($j=0; $j<$len; $j++){ if($arr[$i]<$arr[$j]){ $tmp = $arr[$j]; $arr[$j] = $arr[$i]; $arr[$i] = $tmp; } } } return $arr; } 19、快速排序,也就是找出一个元素(理论上可以随便找一个)作为基准,然后对数组进行分区操作,使基准左边元素的值都不大于基准值,基准右边的元素值 都不小于基准值,如此作为基准的元素调整到排序后的正确位置。递归快速排序,将其他n-1个元素也调整到排序后的正确位置。最后每个元素都是在排序后的正 确位置,排序完成。所以快速排序算法的核心算法是分区操作,即如何调整基准的位置以及调整返回基准的最终位置以便分治递归。 function quickSort($arr){ $len = count($arr); if($len <=1){ return $arr; } $key = $arr[0]; $leftArr = $rightArr= array(); for($i=1; $i<$len; $i++){ if($arr[$i] <= $key){ $leftArr[] = $arr[$i]; } else{ $rightArr[] = $arr[$i]; } } $leftArr = quickSort($leftArr); $rightArr = quickSort($rightArr); return array_merge($leftArr, array($key), $rightArr); } 20、(递归的)列出目录下所有文件及目录,这里也有两种方法 function listDir($path){ $res = dir($path); while($file = $res->read()){ if($file == '.' || $file == '..'){ continue; } if(is_dir($path . '/' .$file)){ echo $path . '/' .$file . "\r\n"; listDir($path . '/' .$file); } else{ echo $path . '/' .$file . "\r\n"; } } $res->close(); } function listDir($path){ if(is_dir($path)){ if(FALSE !== ($res = opendir($path))){ while(FALSE !== ($file = readdir($res))){ if($file == '.' || $file == '..'){ continue; } $subPath = $path . '/' . $file; if(is_dir($subPath)){ echo $subPath . "\r\n"; listDir($subPath); } else{ echo $subPath . "\r\n"; } } } } } 21、找出相对的目录,比如/a/b/c/d/e.php相对于/a/b/13/34/c.php是/c/d/ function ralativePath($a, $b){ $a = explode('/', dirname($a)); $b = explode('/', dirname($b)); $c = '/'; foreach ($a as $k=> $v){ if($v != $b[$k]){ $c .= $v . '/'; } } echo $c; } 22、快速找出url中php后缀 function get_ext($url){ $data = parse_url($url); return pathinfo($data['path'], PATHINFO_EXTENSION); } 23、正则题,使用正则抓取网页,以网页meta为utf8为准,若是抓取的网页编码为big5之类的,需要转化为utf8再收录 function preg_meta($meta){ $replacement = "\\1utf8\\6\\7"; $pattern = '#(<meta\s+http-equiv=(\'|"|)Content-Type(\'|"|)\s+content=(\'|"|)text/html; charset=)(\w+)(\'|"|)(>)#i'; return preg_replace($pattern, $replacement, $meta); } echo preg_meta("<meta http-equiv=Content-Type content='text/html; charset=big5'><META http-equiv=\"Content-Type\" content='text/html; charset=big5'>"); 24、不用php的反转函数倒序输出字符串,如abc,反序输出cba function revstring($str){ for($i=strlen($str)-1; $i>=0; $i--){ echo $str{$i}; } } revstring('abc'); 25、常见端口 TCP 21端口:FTP 文件传输服务 SSH 22端口:SSH连接linux服务器,通过SSH连接可以远程管理Linux等设备 TCP 23端口:TELNET 终端仿真服务 TCP 25端口:SMTP 简单邮件传输服务 UDP 53端口:DNS 域名解析服务 TCP 80端口:HTTP 超文本传输服务 TCP 110端口:POP3 “邮局协议版本3”使用的端口 TCP 443端口:HTTPS 加密的超文本传输服务 TCP 1521端口:Oracle数据库服务 TCP 1863端口:MSN Messenger的文件传输功能所使用的端口 TCP 3389端口:Microsoft RDP 微软远程桌面使用的端口 TCP 5631端口:Symantec pcAnywhere 远程控制数据传输时使用的端口 UDP 5632端口:Symantec pcAnywhere 主控端扫描被控端时使用的端口 TCP 5000端口:MS SQL Server使用的端口 UDP 8000端口:腾讯QQ 26、linux常用的命令 top linux进程实时监控 ps 在Linux中是查看进程的命令。ps查看正处于Running的进程 mv 为文件或目录改名或将文件由一个目录移入另一个目录中。 find 查找文件 df 可显示所有文件系统对i节点和磁盘块的使用情况。 cat 打印文件类容 chmod 变更文件或目录的权限 chgrp 文件或目录的权限的掌控以拥有者及所诉群组来管理。可以使用chgrp指令取变更文件与目录所属群组 grep 是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹 配的行打印出来。 wc 为统计指定文件中的字节数、字数、行数,并将统计结果显示输出 27、对于大流量的网站,您采用什么样的方法来解决访问量问题 首先,确认服务器硬件是否足够支持当前的流量 其次,优化数据库访问。 第三,禁止外部的盗链。 第四,控制大文件的下载。 第五,使用不同主机分流主要流量 第六,使用流量分析统计软件 28、$_SERVER常用的字段 $_SERVER['PHP_SELF'] #当前正在执行脚本的文件名 $_SERVER['SERVER_NAME'] #当前运行脚本所在服务器主机的名称 $_SERVER['REQUEST_METHOD'] #访问页面时的请求方法。例如:“GET”、“HEAD”,“POST”,“PUT” $_SERVER['QUERY_STRING'] #查询(query)的字符串 $_SERVER['HTTP_HOST'] #当前请求的 Host: 头部的内容 $_SERVER['HTTP_REFERER'] #链接到当前页面的前一页面的 URL 地址 $_SERVER['REMOTE_ADDR'] #正在浏览当前页面用户的 IP 地址 $_SERVER['REMOTE_HOST'] #正在浏览当前页面用户的主机名 $_SERVER['SCRIPT_FILENAME'] #当前执行脚本的绝对路径名 $_SERVER['SCRIPT_NAME'] #包含当前脚本的路径。这在页面需要指向自己时非常有用 $_SERVER['REQUEST_URI'] #访问此页面所需的 URI。例如,“/index.html” 29、安装php扩展 进入扩展的目录 phpize命令得到configure文件 ./configure --with-php-config=/usr/local/php/bin/php-config make & make install 在php.ini中加入扩展名称.so 重启web服务器(nginx/apache) 30、php-fpm与nginx PHP-FPM也是一个第三方的FastCGI进程管理器,它是作为PHP的一个补丁来开发的,在安装的时候也需要和PHP源码一起编译,也就是说PHP-FPM被编译到PHP内核中,因此在处理性能方面更加优秀;同时它在处理高并发方面也比spawn-fcgi引擎好很多,因此,推荐Nginx+PHP/PHP-FPM这个组合对PHP进行解析。 FastCGI 的主要优点是把动态语言和HTTP Server分离开来,所以Nginx与PHP/PHP-FPM经常被部署在不同的服务器上,以分担前端Nginx服务器的压力,使Nginx专一处理静态请求和转发动态请求,而PHP/PHP-FPM服务器专一解析PHP动态请求 #fastcgi FastCGI是一个可伸缩地、高速地在HTTP server和动态脚本语言间通信的接口。多数流行的HTTP server都支持FastCGI,包括Apache、Nginx和lighttpd等,同时,FastCGI也被许多脚本语言所支持,其中就有PHP。 FastCGI是从CGI发展改进而来的。传统CGI接口方式的主要缺点是性能很差,因为每次HTTP服务器遇到动态程序时都需要重新启动脚本解析器来执行解析,然后结果被返回给HTTP服务器。这在处理高并发访问时,几乎是不可用的。另外传统的CGI接口方式安全性也很差,现在已经很少被使用了。 FastCGI接口方式采用C/S结构,可以将HTTP服务器和脚本解析服务器分开,同时在脚本解析服务器上启动一个或者多个脚本解析守护进程。当HTTP服务器每次遇到动态程序时,可以将其直接交付给FastCGI进程来执行,然后将得到的结果返回给浏览器。这种方式可以让HTTP服务器专一地处理静态请求或者将动态脚本服务器的结果返回给客户端,这在很大程度上提高了整个应用系统的性能。 Nginx+FastCGI运行原理 Nginx不支持对外部程序的直接调用或者解析,所有的外部程序(包括PHP)必须通过FastCGI接口来调用。FastCGI接口在Linux下是socket,(这个socket可以是文件socket,也可以是ip socket)。为了调用CGI程序,还需要一个FastCGI的wrapper(wrapper可以理解为用于启动另一个程序的程序),这个wrapper绑定在某个固定socket上,如端口或者文件socket。当Nginx将CGI请求发送给这个socket的时候,通过FastCGI接口,wrapper接纳到请求,然后派生出一个新的线程,这个线程调用解释器或者外部程序处理脚本并读取返回数据;接着,wrapper再将返回的数据通过FastCGI接口,沿着固定的socket传递给Nginx;最后,Nginx将返回的数据发送给客户端,这就是Nginx+FastCGI的整个运作过程。 31、ajax全称“Asynchronous Javascript And XML”(异步JavaScript和XML)

小川游鱼 2019-12-02 01:41:29 0 浏览量 回答数 0

问题

SaaS模式云数据仓库MaxCompute 百问百答合集(持续更新20200921)

亢海鹏 2020-05-29 15:10:00 15821 浏览量 回答数 4

问题

负载均衡高可用框架

行者武松 2019-12-01 21:36:54 1691 浏览量 回答数 0
阿里云大学 云服务器ECS com域名 网站域名whois查询 开发者平台 小程序定制 小程序开发 国内短信套餐包 开发者技术与产品 云数据库 图像识别 开发者问答 阿里云建站 阿里云备案 云市场 万网 阿里云帮助文档 免费套餐 开发者工具 企业信息查询 小程序开发制作 视频内容分析 企业网站制作 视频集锦 代理记账服务 2020阿里巴巴研发效能峰会 企业建站模板 云效成长地图 高端建站