• 关于 php中绝对值 的搜索结果

回答

可参考开放平台SDK源码中AlipaySignature.getCertSN实现app_cert_sn的提取。 1、JAVA示例 String app_cert_sn=AlipaySignature.getCertSN("应用公钥证书绝对路径"); System.out.println("app_cert_sn:"+ app_cert_sn); 2、PHP示例 //调用getCertSN获取应用公钥证书序列号 $aop = new AopCertClient();$appCertPath = "应用公钥证书绝对路径"; //输出对应的应用公钥证书序列号值echo '应用公钥证书序列号'.$appCertSN; $appCertSN = $aop->getCertSN($appCertPath); 3、.Net示例 String AppCertPath = "应用公钥证书绝对路径"; //解析应用证书序列号,需要引用using Org.BouncyCastle.X509和using Aop.Api.Util; X509Certificate appCert = AntCertificationUtil.ParseCert(File.ReadAllText(AppCertPath)); String AppCertSN = AntCertificationUtil.GetCertSN(appCert); Console.WriteLine("应用证书序列号" + AppCertSN); 代码示例参考【普通调用示例(证书)】 (内含Java、PHP、.Net语言示例); 公钥证书签名可参考【RSA2和公钥证书签名验签的区别】的sdk封装签名方式。 具体参考自行签名方式。

保持可爱mmm 2020-05-05 16:45:45 0 浏览量 回答数 0

回答

报错原因 1、支付宝CA根证书文件路径(alipay_root_cert_path)错误; 2、支付宝CA根证书证书设置错误; 3、签名方式sign_type值设置错误; 4、php语言服务端sdk版本过低; 排查方案 1、支付宝根证书路径设置错误 支付宝CA根证书文件路径(alipay_root_cert_path)路径存在问题,建议检查路径传值是否正确; (1)文件路径需设置绝对路径; (2)核实对应的文件路径是否存在CA根证书文件; 2、支付宝根证书引用错误 alipay_root_cert_path设置路径对象错误,不是支付宝根证书 注:支付宝CA根证书文件,需要点击进入,选择使用的应用,再点击应用信息, 如图: 然后在“接口加密方式”中的“支付宝根证书”位置,点击“下载证书”。 如图: 3、sign_type设置错误 公钥证书方式方法做请求,sign_type必须是sign_type=RSA2; 4、php语言服务端sdk版本过低 php语言服务端sdk版本4.2.0以下的版本存在openssl兼容性问题,如果alipay_root_cert_sn解析的值存在下划线_后面以0X开头的会出现解析错误的情况; 例如:alipay_root_cert_sn=687b59193f3f462dd5336e5abf83c5d8_02941eef3187dddf3d3b83462e1dfcf6 解决方案:需要升级php语言服务端sdk,升级到sdk4.2.0以上即可.

保持可爱mmm 2020-05-05 17:04:04 0 浏览量 回答数 0

回答

密钥证书方式密钥匹配:校验应用私钥和应用公钥是否匹配流程。 注:若需匹配RSA2密钥(非证书模式)可详见【如何检验RSA2密钥是否匹配】。 1、签名验签工具下载 工具下载地址:https://docs.open.alipay.com/291/105971 注:解压缩时,解压缩路径中不要有空格和中文字段,否则会导致工具乱码或者闪退 2、下载商户应用公钥证书 在开发者中心中选择自己需验证的应用。 在需要校验应用的接口加签方式的应用公钥证书位置,点击下载证书。 3、获取上传公钥数据 Java: String publicKey = AlipaySignature.getAlipayPublicKey("商户应用公钥证书绝对路径"); System.out.println("应用公钥数据:"+publicKey); php: $aop = new AopCertClient(); $alipayCertPath="商户应用公钥证书绝对路径"; $alipayrsaPublicKey = $aop->getPublicKey($alipayCertPath); echo '应用公钥数据'.$alipayrsaPublicKey; .NET: String AlipayPublicCertPath = "商户应用公钥证书绝对路径"; //解析公钥的值需要引用using Org.BouncyCastle.X509和using Aop.Api.Util; X509Certificate alipayPublicKeyCert = AntCertificationUtil.ParseCert(File.ReadAllText(AlipayPublicCertPath)); String alipayPublicKey = AntCertificationUtil.ExtractPemPublicKeyFromCert(alipayPublicKeyCert); Console.WriteLine("应用公钥数据" + alipayPublicKey); 4、设置密钥数据 在工具的“密钥匹配”选项中: 商户应用私钥:代码中的私钥数据。 商户应用公钥:根据下载的商户应用公钥证书解析的商户应用公钥数据。 注:确认获取数据的appid一致。 5、匹配数据 点击“匹配”,查看匹配结果进行确认。 注:沙箱环境匹配密钥与正式环境一致,选择对应密钥设置方式

保持可爱mmm 2020-05-05 16:46:19 0 浏览量 回答数 0

新用户福利专场,云服务器ECS低至96.9元/年

新用户福利专场,云服务器ECS低至96.9元/年

回答

报错描述:公钥证书设置进行签名报错isv.invalid-alipay-root-cert-sn(无效支付宝根证书序列号) 报错原因:参与签名的alipay-root-cert-sn数据错误 排查方案: 1、支付宝根证书路径设置错误 支付宝CA根证书文件路径(alipay_root_cert_path)路径存在问题,建议检查路径传值是否正确。 建议设置绝对路径,且证书文件地址与alipay_root_cert_path设置路径地址一致。 2、支付宝根证书引用错误 alipay_root_cert_path设置路径引用证书错误,不是支付宝根证书。 注:支付宝CA根证书文件路径必须为商户上传公钥后,在“接口加密方式”中的“支付宝根证书”位置,点击“下载证书”。 文件名称为:alipayRootCert.crt 3、sign_type设置错误 支付宝开放平台开发助手生成的公钥证书为RSA2格式。 签名时,sign_type必须是sign_type=RSA2。 4、PHP语言报错核实 PHP语言需额外核实,解析的alipay_root_cert_sn的参数值,若下划线_后面是以0X开头的需进行转义。 正常数据如:alipay_root_cert_sn=687b59193f3f462dd5336e5abf83c5d8_02941eef3187dddf3d3b83462e1dfcf6 建议PHP语言sdk更换到4.2.0以上版本。 详见公钥证书签名步骤。

保持可爱mmm 2020-05-05 16:23:04 0 浏览量 回答数 0

回答

我会发挥每个系统的优势。 聚合,联接和过滤逻辑显然属于数据层。它的速度更快,这不仅是因为大多数数据库引擎为此进行了10多年的优化,而且还可以最大程度地减少数据库和Web服务器之间转移的数据。 另一方面,我使用的大多数数据库平台在处理单个值时的功能都很差。日期格式和字符串操作之类的东西在SQL中很烂,最好在PHP中完成。 基本上,使用每个系统来完成其工作。 在可维护性方面,只要清楚区分发生在何处,将它们与逻辑类型分开就不会造成太大问题,当然也不足以抵消收益。在我看来,代码的清晰度和可维护性更多的是一致性,而不是将所有逻辑放在一个地方。 回复:具体例子... 我知道这也不是您所指的,但日期几乎是一种特殊情况。您要确保系统生成的所有日期都在Web服务器或数据库上创建。如果将db服务器和Web服务器配置为不同的时区,则否则会导致一些隐患(我已经看到了这种情况)。想象一下,例如,您createdDate有一个默认值为DB的列getDate()应用于DB。如果您要插入一条记录,那么使用PHP中生成的日期(例如date("Y-m-d", time() - 3600),选择在过去一小时内创建的记录,您可能无法获得期望的结果。对于您应该在哪一层上执行此操作,我希望使用DB例如,它使您可以使用列默认值。 对于大多数应用程序,我会在PHP中执行此操作。混合姓氏和名字听起来很简单,直到您意识到有时也需要在其中使用称呼,标题和中间缩写。另外,您几乎肯定会以想要用户的名字,姓氏和组合称呼+姓氏+姓氏为最终结果。将它们串联在DB端意味着您最终将移动更多的数据,尽管实际上,它很小。 依靠。如上所述,如果您想单独使用它们,则最好从性能角度考虑,将它们分别拉出并在需要时进行连接。也就是说,除非您要处理的数据集庞大,否则可能还有其他因素(如您提到的可维护性)具有更大的影响力。 一些经验法则: 生成增量ID应该在数据库中进行。 就个人而言,我喜欢数据库所应用的默认设置。 选择时,任何减少记录数量的操作都应由数据库来完成。 这样做通常可以减少数据集DB端的大小(例如上面的字符串示例)。 正如你所说;排序,聚合,子查询,联接等应始终在DB端。 另外,我们还没有讨论它们,但是触发器通常是坏的/必要的。 在这里您需要面对一些核心的权衡,而平衡实际上取决于您的应用程序。 有些事情绝对应该总是在SQL中完成。排除许多任务的某些异常(如日期事件),SQL可能很笨拙,并且可能使您陷入逻辑混乱的境地。例如,在代码库中搜索对特定列的引用时,很容易错过视图或存储过程中包含的内容。 性能始终是一个考虑因素,但取决于您的应用程序和特定示例,可能并不是一个大问题。您对可维护性的担忧可能非常有效,而我提到的一些性能优势却很少,因此请提防过早优化。 另外,如果其他系统正在直接访问数据库(例如,用于报告或导入/导出),您将受益于数据库中更多的逻辑。例如,如果要直接从另一个数据源导入用户,则可以在SQL中实现类似电子邮件验证功能的重用。 简短的答案:这取决于。:)来源:stack overflow

保持可爱mmm 2020-05-17 12:12:12 0 浏览量 回答数 0

回答

您有几种选择方法,可COUNT(*)从SQL 获取值。最简单的三个可能是: $sql = "SELECT COUNT(*) FROM news"; $result = mysqli_query($con, $sql); $count = mysqli_fetch_assoc($result)['COUNT(*)']; echo $count; 或使用列别名: $sql = "SELECT COUNT(*) as cnt FROM news"; $result = mysqli_query($con, $sql); $count = mysqli_fetch_assoc($result)['cnt']; echo $count; 或使用数值数组: $sql = "SELECT COUNT(*) FROM news"; $result = mysqli_query($con, $sql); $count = mysqli_fetch_row($result)[0]; echo $count; 不要使用mysqli_num_rows网络上某些地方建议的对数据库中的记录进行计数。此功能使用很少,计数记录绝对不是其中之一。使用mysqli_num_rows您将要求MySQL 从数据库中检索所有匹配的记录,这可能会非常消耗资源。最好将计数记录的工作委托给MySQL,然后如我的答案所示,仅获取PHP中的返回值。 我还建议您学习OOP,这会使您的代码更整洁,更易于阅读。与OOP相同,可以执行以下操作: $sql = "SELECT COUNT(*) FROM news"; $count = $con->query($sql)->fetch_row()[0]; echo $count; 如果查询使用变量,则可以执行类似的操作,但要使用准备好的语句。 $sql = "SELECT COUNT(*) FROM news WHERE category=?"; $stmt = $con->prepare($sql); $stmt->bind_param('s', $category); $stmt->execute(); $count = $stmt->get_result()->fetch_row()[0]; echo $count;来源:stack overflow

保持可爱mmm 2020-05-11 16:26:51 0 浏览量 回答数 0

问题

MQ PHP Linux SDK 调试方法及注意事项有哪些?

猫饭先生 2019-12-01 21:19:06 1635 浏览量 回答数 0

问题

【javascript学习全家桶】934道javascript热门问题,阿里百位技术专家答疑解惑

管理贝贝 2019-12-01 20:07:22 6202 浏览量 回答数 1

问题

云数据库Memcache版日常诊断

阿里云柳璃 2019-12-01 22:06:29 8107 浏览量 回答数 0

回答

单独开个空白文件作测试呢? ######谢谢你的提醒,单独开了一个文件测试,没问题。应该是代码的问题。######感觉是前文有引号没结束######有可能是,我按这个思路找找######估计你用的是  Netbeans ,这东西会自作聪明,把括号,引号之类的删掉一般######我也不太了解都用了什么。不过,好像没有Netbeans--因为我还没他们提起过这个名字。######这绝对不是PHP的问题~######应该是代码的问题,可能是因为低版本的PHP不报相应的错,现在的PHP5.3严厉了,所以问题就暴露出来了。###### 太奇怪了!!!! 调试了半天,发现不可以用  ”能“ 这个汉字!! 只要某个字符串定义时,值里面有”能”这个字,那后面就不可以用单引号或者双引号。例如 $a='能';的后面的代码中只要出现单引号就出错。 $a="能";的后面的代码中只要出现双引号就出错。 怪死了!!######文件编码。 ######我也觉得是不是可以改改编码解决问题。可以,应该用什么编码呢?######你能把报错信息完整贴上来么###### 引用来自“leo108”的答案 你能把报错信息完整贴上来么 文件名:test.php 文件内容: <?php $a = 'abc能'; $c='fsdf'; echo $a; ?> 报错信息: PHP Parse error:  syntax error, unexpected T_STRING in /home/test/test.php on line 3 ###### 暂时的结论:字符串变量的值的最后一个字是”能“时,会导致问题。 暂时通过把所有以”能“结尾的字符串的”能“后面加个空格来解决了。 不过,应该有更好的方法解决,暂时先这样了。 ----不知道这算不算一个PHP的bug###### php 5.3.1 没有出现你所说的问题 php 5.4.3 也没有出现你说的问题 以上均使用 UTF-8 编码 个人觉得没道理出现这样的问题。 ######我把我的测试代码改成UTF-8格式的,问题解决了。 UTF-8应该是默认的吧。有什么地方可以设置一下让我的代码可以采用其他格式的吗?######我把我的测试代码改成UTF-8格式的,问题解决了。 UTF-8应该是默认的吧。有什么地方可以设置一下让我的代码可以采用非其他格式的吗?

黄二刀 2020-05-27 10:10:32 0 浏览量 回答数 0

回答

单独开个空白文件作测试呢? ######谢谢你的提醒,单独开了一个文件测试,没问题。应该是代码的问题。######感觉是前文有引号没结束######有可能是,我按这个思路找找######估计你用的是  Netbeans ,这东西会自作聪明,把括号,引号之类的删掉一般######我也不太了解都用了什么。不过,好像没有Netbeans--因为我还没他们提起过这个名字。######这绝对不是PHP的问题~######应该是代码的问题,可能是因为低版本的PHP不报相应的错,现在的PHP5.3严厉了,所以问题就暴露出来了。###### 太奇怪了!!!! 调试了半天,发现不可以用  ”能“ 这个汉字!! 只要某个字符串定义时,值里面有”能”这个字,那后面就不可以用单引号或者双引号。例如 $a='能';的后面的代码中只要出现单引号就出错。 $a="能";的后面的代码中只要出现双引号就出错。 怪死了!!######文件编码。 ######我也觉得是不是可以改改编码解决问题。可以,应该用什么编码呢?######你能把报错信息完整贴上来么###### 引用来自“leo108”的答案 你能把报错信息完整贴上来么 文件名:test.php 文件内容: <?php $a = 'abc能'; $c='fsdf'; echo $a; ?> 报错信息: PHP Parse error:  syntax error, unexpected T_STRING in /home/test/test.php on line 3 ###### 暂时的结论:字符串变量的值的最后一个字是”能“时,会导致问题。 暂时通过把所有以”能“结尾的字符串的”能“后面加个空格来解决了。 不过,应该有更好的方法解决,暂时先这样了。 ----不知道这算不算一个PHP的bug###### php 5.3.1 没有出现你所说的问题 php 5.4.3 也没有出现你说的问题 以上均使用 UTF-8 编码 个人觉得没道理出现这样的问题。 ######我把我的测试代码改成UTF-8格式的,问题解决了。 UTF-8应该是默认的吧。有什么地方可以设置一下让我的代码可以采用其他格式的吗?######我把我的测试代码改成UTF-8格式的,问题解决了。 UTF-8应该是默认的吧。有什么地方可以设置一下让我的代码可以采用非其他格式的吗?

爱吃鱼的程序员 2020-06-02 14:05:59 0 浏览量 回答数 0

回答

本文以在CentOS中自动执行shell脚本为例,介绍如何通过弹性伸缩和脚本自动化部署应用。 背景信息 Linux系统中,共有7个启动级别: 等级0:关机。 等级1:单用户模式。 等级2:无网络连接的多用户命令行模式。 等级3:有网络连接的多用户命令行模式。 等级4:不可用。 等级5:带图形界面的多用户模式。 等级6:重新启动。 在弹性伸缩自动创建ECS实例后,如您需要自动安装、更新程序和自动加载代码,可以在自定义镜像中存放执行脚本,并设置命令在操作系统启动后自动执行该脚本。然后在伸缩配置中使用该自定义镜像,自动创建ECS实例后即会自动执行脚本,完成自动化部署。 由于CentOS 6及以下系统采用system V init作为初始化进程,但CentOS 7采用了systemd作为初始化进程,两者的工作原理有较大差别。本文分别针对CentOS 6以及CentOS 7进行说明。 CentOS 6及以下系统自动执行脚本 本节演示如何在CentOS 6及以下系统自动执行脚本。 创建shell测试脚本。 #!/bin/sh chkconfig: 6 10 90 description: Test Service echo "hello world!" 其中,6是默认启动级别,具体含义请参见背景信息。10是启动优先级,90是停止优先级,优先级范围是0-100,数字越大,优先级越低。 说明 如您需要确保ECS实例上的任务处理完成才允许弹性伸缩释放该ECS实例,将脚本中的启动级别改为0即可。 将测试文件放在/etc/rc.d/init.d/目录下,然后执行chkconfig --level 6 test on,以后每次开机启动都会执行该测试脚本。 说明 如您需要确保ECS实例上的任务处理完成才允许弹性伸缩释放该ECS实例,将脚本中的启动级别改为0即可,每次关机时都会执行该测试脚本。 例如,您可以通过脚本执行phpwind安装程序(数据库密码仍需要您自己输入),示例脚本如下,请根据实际情况修改。 cd /tmp echo "phpwind" yum install -y unzip wget httpd php php-fpm php-mysql php-mbstring php-xml php-gd php-pear php-devel chkconfig php-fpm on && chkconfig httpd on wget http://pwfiles.oss-cn-hangzhou.aliyuncs.com/com/soft/phpwind_v9.0_utf8.zip && unzip -d pw phpwind_v9.0_utf8.zip && mv pw/phpwind_v9.0_utf8/upload/* /var/www/html && wget http://ess.oss-cn-hangzhou.aliyuncs.com/ossupload_utf8.zip -O ossupload_utf8.zip && unzip -d ossupload ossupload_utf8.zip && /bin/cp -rf ossupload/ossupload_utf8/* /var/www/html/src/extensions/ && chown -R apache:apache /var/www/html service httpd start && service php-fpm start echo "安装云监控" wget http://update2.aegis.aliyun.com/download/quartz_install.sh chmod +x quartz_install.sh bash quartz_install.sh echo "安装完成" CentOS 7系统自动化部署应用 本节演示如何在CentOS 7系统自动执行脚本。按照以下步骤,使用systemd时,在系统关闭状态仍能运行脚本。 创建需要运行的脚本。 在/etc/systemd/system下创建一个文件run-script-when-shutdown.service。 请把ExecStop变量的值,修改为您需要运行脚本的绝对路径: [Unit] Description=service to run script when shutdown After=syslog.target network.target [Service] Type=simple ExecStart=/bin/true ExecStop=/path/to/script/to/run RemainAfterExit=yes [Install] WantedBy=default.target 执行命令启动新创建的服务。 systemctl enable run-script-when-shutdown systemctl start run-script-when-shutdown 说明 您可以配置run-script-when-shutdown运行固定的脚本,并在需要时修改更换该脚本,使其更加灵活实用。 无需运行上述服务时,执行systemctl disable run-script-when-shutdown。

1934890530796658 2020-03-23 09:44:24 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

回答

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

回答

报错原因 1、资金类接口(强制必须要使用公钥证书)却使用了普通公钥方式进行签名导致的; 2、公钥证书请求调用sdk提交方法错误; 3、应用公钥证书路径(app_cert_path)设置错误; 4、应用公钥证书文件引用错误; 排查方案 1、普通公钥签名导致报错 目前新创建的应用,资金类接口会进行强制校验是否公钥证书签名,若使用普通密钥方式签名报错isv.missing-app-cert-sn(缺少应用公钥证书序列号)。 所以资金类接口(如单笔转账到支付宝账户,现金红包),必须使用公钥证书进行签名请求。 2、公钥证书请求调用的sdk提交方法错误 公钥证书的response请求方式是否正确: (1)java语言response的execute()方法需改成certificateExecute(); (2)PHP语言response的execute()方法仍然使用execute(); (3).Net语言response的execute()方法需改成CertificateExecute(); 3、公钥证书签名路径设置错误 应用公钥证书路径(app_cert_path)路径存在问题,建议检查路径传值是否正确; (1)建议设置绝对路径,进行引用证书; (2)证书下载文档的地址,与代码中设置的路径地址是否一致; 4、公钥证书签名证书引用错误 app_cert_path设置路径对象错误,不是密钥工具生成时原始的公钥文件路径,而是需要从开放平台上进行下载的证书crt文件。 注:应用公钥证书crt文件,需要点击进入,选择使用的应用,再点击应用信息,如图: 然后在“接口加密方式”中的“应用公钥证书”位置,点击“下载证书”。 如图: 5、自行实现签名 检查是否设置应用公钥证书SN(app_cert_sn)参数参与签名; 注:公钥证书自签名方式中,除文档参数外,需携带应用公钥证书SN(app_cert_sn)、支付宝根证书SN(alipay_root_cert_sn)进行请求。 具体参考公钥证书签名步骤。

保持可爱mmm 2020-05-05 17:03:30 0 浏览量 回答数 0

问题

WP 使用走 Unix Sockets 的 Redis 作为对象缓存

妙正灰 2019-12-01 22:03:24 6116 浏览量 回答数 1

问题

常见问题:监控与自动化部署问题

青蛙跳 2019-12-01 21:32:17 620 浏览量 回答数 0

问题

IIS6.0新建站点及绑定域名图文教程

西蜀遗风 2019-12-01 21:13:10 21697 浏览量 回答数 9

回答

单独开个空白文件作测试呢?######谢谢你的提醒,单独开了一个文件测试,没问题。应该是代码的问题。######感觉是前文有引号没结束######有可能是,我按这个思路找找######估计你用的是 Netbeans,这东西会自作聪明,把括号,引号之类的删掉一般######我也不太了解都用了什么。不过,好像没有Netbeans--因为我还没他们提起过这个名字。######这绝对不是PHP的问题~######应该是代码的问题,可能是因为低版本的PHP不报相应的错,现在的PHP5.3严厉了,所以问题就暴露出来了。###### 太奇怪了!!!! 调试了半天,发现不可以用 ”能“这个汉字!! 只要某个字符串定义时,值里面有”能”这个字,那后面就不可以用单引号或者双引号。例如 $a='能';的后面的代码中只要出现单引号就出错。$a="能";的后面的代码中只要出现双引号就出错。 怪死了!!######文件编码。 ######我也觉得是不是可以改改编码解决问题。可以,应该用什么编码呢?######你能把报错信息完整贴上来么######<divclass="ref"> 引用来自“leo108”的答案<divclass="ref_body">你能把报错信息完整贴上来么<divclass="a_body"> 文件名:test.php 文件内容:<preclass="brush:php;toolbar:true;auto-links:false;"><?php$a='abc能';$c='fsdf';echo$a;?> 报错信息:PHPParseerror: syntaxerror,unexpectedT_STRINGin/home/test/test.phponline3###### 暂时的结论:字符串变量的值的最后一个字是”能“时,会导致问题。 暂时通过把所有以”能“结尾的字符串的”能“后面加个空格来解决了。 不过,应该有更好的方法解决,暂时先这样了。 ----不知道这算不算一个PHP的bug###### <spanstyle="font-size:18px;color:#e53333;">php5.3.1没有出现你所说的问题<spanstyle="color:#e53333;font-weight:bold;font-size:18px;"> <spanstyle="font-size:18px;color:#e53333;">php5.4.3也没有出现你说的问题<spanstyle="color:#e53333;font-weight:bold;font-size:18px;"> <spanstyle="color:#e53333;font-size:18px;">以上均使用UTF-8编码 <spanstyle="color:#e53333;font-size:18px;"><spanstyle="font-size:32px;">个人觉得没道理出现这样的问题。######我把我的测试代码改成UTF-8格式的,问题解决了。UTF-8应该是默认的吧。有什么地方可以设置一下让我的代码可以采用其他格式的吗?######我把我的测试代码改成UTF-8格式的,问题解决了。UTF-8应该是默认的吧。有什么地方可以设置一下让我的代码可以采用非其他格式的吗?

爱吃鱼的程序员 2020-06-22 23:03:49 0 浏览量 回答数 0

问题

【阿里云产品公测】以开发者角度看ACE服务『ACE应用构建指南』

mr_wid 2019-12-01 21:10:06 20092 浏览量 回答数 6

问题

【Java学习全家桶】1460道Java热门问题,阿里百位技术专家答疑解惑

管理贝贝 2019-12-01 20:07:15 27612 浏览量 回答数 19

问题

小试用,大学问菜鸟也要知道如何去试用之云服务器测评

universitylife 2019-12-01 21:15:34 33359 浏览量 回答数 19

问题

小试用,大学问菜鸟也要知道如何去试用之云服务器测评

universitylife 2019-12-01 21:31:33 15660 浏览量 回答数 10

回答

如果echo($sql);执行该操作,您会发现查询语法不正确,原因如下: 文件名应该用引号而不是反引号引起来,因为它是字符串文字而不是标识符。 绝对不需要调用mysql_escape_string()在FIELDS TERMINATED BYand ENCLOSED BY和ESCAPED BY子句中指定分隔符。 您过度使用了反引号。实际上,在您的情况下,由于没有使用保留字,因此请放弃所有保留字。它们只会增加混乱。 在CSV文件第一行的末尾,您必须要 ,,,使用它,因为将它们用作行定界符的一部分。如果您不这样做,则不仅会跳过第一行,还会跳过包含数据的第二行。 您不能ENCLOSED BY多次使用子句。您必须以Number不同的方式处理字段。 查看您不需要的示例行恕我直言ESCAPED BY。但是,如果您觉得自己需要它,可以像这样使用它ESCAPED BY '\'。 话虽这么说,但句法正确的语句可能看起来像这样 LOAD DATA INFILE 'detection.csv' INTO TABLE calldetections FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"' LINES TERMINATED BY ',,,\r\n' IGNORE 1 LINES (date, name, type, number, duration, addr, pin, city, state, country, lat, log) 现在,恕我直言,您需要在加载它们时转换很多字段: 如果date表中的datetime数据类型为数据类型,则需要对其进行转换,否则会出现错误 日期时间值不正确:行的“日期”列为“ 2013年9月18日01:53:45 PM” 您必须处理围绕Number字段值的单个qoutes 你最有可能要更改"null"字符串字面量实际NULL为addr, pin, city, state, country列 如果持续时间总是以秒为单位,则可以提取秒的整数值并将其存储在表中,以便以后可以轻松汇总持续时间值。 话虽这么说,该语句的有用版本应如下所示 LOAD DATA INFILE 'detection.csv' INTO TABLE calldetections FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"' LINES TERMINATED BY ',,,\r\n' IGNORE 1 LINES (@date, name, type, @number, @duration, @addr, @pin, @city, @state, @country, lat, log) SET date = STR_TO_DATE(@date, '%b-%d-%Y %h:%i:%s %p'), number = TRIM(BOTH ''' FROM @number), duration = 1 * TRIM(TRAILING 'Secs' FROM @duration), addr = NULLIF(@addr, 'null'), pin = NULLIF(@pin, 'null'), city = NULLIF(@city, 'null'), state = NULLIF(@state, 'null'), country = NULLIF(@country, 'null') 以下是在我的机器上执行查询的结果 mysql>加载数据文件'/tmp/detection.csv' ->进入表呼叫检测 ->以','结尾的字段 ->可选用““''封闭 ->以',,, \ n'结尾的行 ->忽略1行 ->(@日期,名称,类型,@编号,@持续时间,@ addr,@ pin,@ city,@ state,@ country,lat,log) ->设置日期= STR_TO_DATE(@date,'%b-%d-%Y%h:%i:%s%p'), ->数字= TRIM(都是'''FROM @number), ->持续时间= 1 * TRIM(从@duration跟踪'Secs'), -> addr = NULLIF(@addr,'null'), ->引脚= NULLIF(@pin,'null'), ->城市= NULLIF(@city,'null'), ->状态= NULLIF(@state,'null'), ->国家= NULLIF(@ country,'null'); 查询正常,受影响的3行(0.00秒) 记录:3已删除:0跳过:0警告:0 mysql>从calldetections中选择*; + --------------------- + --------- + --------------- +- ------------ + ---------- + ------ + ------ + ------ + ----- -+ --------- + ------ + ------ + | 日期| 名称| 类型 编号 持续时间 地址| 别针 城市| 州| 国家| lat | 日志| + --------------------- + --------- + --------------- +- ------------ + ---------- + ------ + ------ + ------ + ----- -+ --------- + ------ + ------ + | 2013-09-18 13:53:45 | 未知 拨出电话| 123456 | 0 | NULL | NULL | NULL | NULL | NULL | 0.0 | 0.0 | | 2013-09-18 13:54:14 | 未知 拨出电话| 1234567890 | 0 | NULL | NULL | NULL | NULL | NULL | 0.0 | 0.0 | | 2013-09-18 13:54:37 | 未知 拨出电话| 14772580369 | 1 | NULL | NULL | NULL | NULL | NULL | 0.0 | 0.0 | + --------------------- + --------- + --------------- +- ------------ + ---------- + ------ + ------ + ------ + ----- -+ --------- + ------ + ------ + 设置3行(0.00秒) 最后在php中将查询字符串分配给$sql变量应如下所示 $sql = "LOAD DATA INFILE 'detection.csv' INTO TABLE calldetections FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"' LINES TERMINATED BY ',,,\r\n' IGNORE 1 LINES (@date, name, type, @number, @duration, @addr, @pin, @city, @state, @country, lat, log) SET date = STR_TO_DATE(@date, '%b-%d-%Y %h:%i:%s %p'), number = TRIM(BOTH ''' FROM @number), duration = 1 * TRIM(TRAILING 'Secs' FROM @duration), addr = NULLIF(@addr, 'null'), pin = NULLIF(@pin, 'null'), city = NULLIF(@city, 'null'), state = NULLIF(@state, 'null'), country = NULLIF(@country, 'null') ";来源:stack overflow

保持可爱mmm 2020-05-17 17:42:01 0 浏览量 回答数 0

问题

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

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

问题

弹性伸缩常见问题监控与自动化部署问题

反向一觉 2019-12-01 21:16:25 1501 浏览量 回答数 0

回答

经过不懈努力本人自己解决这个问题 出现这个问题的原因:html渲染的,要配合freemark使用,所以视图解析必须使用freemark才能渲染html(个人见解)具体配置如下:     <!-- 配置freeMarker的模板路径 -->     <bean id="freemarkerConfig" class="org.springframework.web.servlet.view.freemarker.FreeMarkerConfigurer">         <property name="templateLoaderPath" value="/WEB-INF/view/common/" />         <property name="freemarkerSettings">             <props>                 <prop key="template_update_delay">1</prop>                 <prop key="defaultEncoding">UTF-8</prop>                 <prop key="url_escaping_charset">UTF-8</prop>                 <prop key="locale">zh_CN</prop>                 <prop key="boolean_format">true,false</prop>                 <prop key="datetime_format">yyyy-MM-dd HH:mm:ss</prop>                 <prop key="date_format">yyyy-MM-dd</prop>                 <prop key="time_format">HH:mm:ss</prop>                 <prop key="number_format">0.##</prop>                 <prop key="whitespace_stripping">true</prop>                             </props>         </property>     </bean> <!-- 配置freeMarker视图解析器 -->     <bean id="viewResolver" class="org.springframework.web.servlet.view.freemarker.FreeMarkerViewResolver">         <property name="viewClass" value="org.springframework.web.servlet.view.freemarker.FreeMarkerView" />         <property name="contentType" value="text/html; charset=utf-8" />         <property name="cache" value="true" />         <property name="redirectContextRelative" value="false" />         <property name="suffix" value=".html" />         <property name="order" value="1" />         <property name="requestContextAttribute" value="request" />         <property name="exposeRequestAttributes" value="true" />         <property name="exposeSessionAttributes" value="true" />         <property name="exposeSpringMacroHelpers" value="true" />         <property name="allowSessionOverride" value="true" />     </bean> <!-- jsp视图解析器视图解释类 -->     <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">         <property name="prefix" value="/WEB-INF/view/jsp/" />         <property name="suffix" value=".jsp" /><!--可为空,方便实现自已的依据扩展名来选择视图解释类的逻辑 -->         <property name="order" value="1" />         <property name="viewClass" value="org.springframework.web.servlet.view.JstlView" />     </bean>######过滤器######过滤器怎么实现,求思路######配置配置配置,看见酒恶心,你不觉得恶心吗?还用什么springmvc =============================== nginx 某台机器出问题时,就使用backup 400 请求报错  nginx默认其它所有的非backup机器down或者忙的时候,才请求backup机器。 能否实现3台机器负载均衡接流量,1台backup机器,当3台中某一台出现问题时,启用backup机器. --- 那实际上你的需求不是负载均衡(Load Balance),而是高可用(High Available) see: http://ajitabhpandey.info/2009/03/building-a-highly-available-nginx-reverse-proxy-using-heartbeat/ ######keepalived =============================== PHP中https的问题,如何让标签请求的url开头变成https? 400 请求报错  比如说标签 <a href="{:url('Xiaoqu/index')}">小区</a> 中怎么让这个标签请求的url开头是https呢,网页一直报Mixed Content错误 求大神支招 --- 拿到url的值把http替换成https不行么######不是一个页面啊,几百个页面######改你的url函数######你这个跟你自己的url没关系啊,要看那个你访问的域名有没有配置https啊.######你应该用的是TP5+吧 建议你查看URL你会发现url函数是相对路径 如果你觉得你要生成绝对路径不带https 建议你在app/common.php中加入一个函数 _UrlHttps($_Url,$P){ return 'https://'.url($_Url,$P); }   =============================== ASP.NET用C#开发时怎么么弹出对话框啊? 400 请求报错  假设有一个输入框(TextBox)控件,只能输入数字,如果输入了字符,就要提示出错,在网页中弹出对话框提示出错,就像javascript的alert()或confirm()那样,这个怎么做啊? --- http://msdn.microsoft.com/zh-cn/library/system.windows.forms.messagebox.aspx######js事件最好用jQuery绑定 <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="WebApplication1._Default" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head runat="server"> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/> <title>Text Box Validation</title> <script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.4.4/jquery.min.js"></script> <script type="text/javascript"> $(function () { $("#<%=NumberEditor.ClientID %>").keydown(function (e) { if ($.browser.msie) { if (((e.keyCode > 47) && (e.keyCode < 58)) || (event.keyCode == 8) || (e.keyCode>= 96 && e.keyCode <= 106)) {  // 判断键值 return true; } else { return false; } } else { if (((e.which > 47) && (e.which < 58)) || (e.which == 8) || (event.keyCode == 17) || (e.keyCode >= 96 && e.keyCode <= 106)) { return true; } else { return false; } } }).focus(function () { this.style.imeMode = 'disabled'; }); }); </script> </head> <body> <form id="form1" runat="server"> <div> <asp:TextBox ID="NumberEditor" ClientIdMode="" runat="server"></asp:TextBox> </div> </form> </body> </html> ######客户端验证,还是JavaScript的事

kun坤 2020-05-29 17:58:47 0 浏览量 回答数 0
阿里云大学 云服务器ECS com域名 网站域名whois查询 开发者平台 小程序定制 小程序开发 国内短信套餐包 开发者技术与产品 云数据库 图像识别 开发者问答 阿里云建站 阿里云备案 云市场 万网 阿里云帮助文档 免费套餐 开发者工具 云栖号物联网 小程序开发制作 视频内容分析 企业网站制作 视频集锦 代理记账服务 2020阿里巴巴研发效能峰会 企业建站模板 云效成长地图 高端建站 云栖号弹性计算 阿里云云栖号 云栖号案例 云栖号直播