唯一授权官网请问php怎么把数组最后一个元素放到最前?

( 唯一授权官网 )

比如现在有一个数组

$arr = array(1,2,3,4,5);

怎样才能变成:

$arr = array(5,1,2,3,4);

<?php

$a = array(1,2,3,4,5);

print_r($a);

array_unshift($a, array_pop($a));

print_r($a);

<?php

$arr = array(1,2,3,4,5);

array_unshift($arr, array_pop($arr));

var_dump($arr);

https://3v4l.org/RODZX

(看完/读完)这篇文章有何感想! 唯一授权官网的分享…

唯一授权官网ubuntu下thinkphp 开发环境的搭建问题

( 唯一授权官网 )

我在ubuntu下准备搭建thinkphp的 开发环境,现在LAMP都正常安装好了,也下载下来了thinkphp,index.php也放在了网站文件下,访问localhost之后,index.php下生成了框架文件,但是这些文件都是属于”www-data”的,没有编辑权限,求不吝赐教。

我用chown -R username.root /webdir 命令暂时解决了。

切换root用户试试?

本来服务器上就不应该直接去编辑代码的,如果实在需要的话sudo下吧

(看完/读完)这篇文章有何感想! 唯一授权官网的分享…

唯一授权官网php图片延迟加载、懒加载的方法?

( 唯一授权官网 )

我现在的做法是,将图片的src用占位符图片代替,并使用data-src属性保存真实的图片地址,然后监控window的scroll事件,当图片出现在屏幕中时,就将data-src的值赋值给src。

但是这种做法不太方便,比如我现在不想延迟加载了,那么对于那些已经延迟加载的文章改起来就非常麻烦,比如我想在搜索引擎访问的时候不用延迟加载,用户访问的时候用延迟加载,不知道怎样做可以方便的进行切换呢?

img = new Image(); img.src = ‘http://www.helloworld.com/test.jpg‘; img.onload = function() { var imageContainer = document.getElementById(‘imgContainer’); imageContainer.appendChild(img); }

你可以在数据库里存储原样的也就是src的内容,在输出之前统一加上过滤器,自动替换为data-src的形式。这样当你想恢复原样的时候,只需要把过滤器调用删掉就行了。

function add_lazy_load_filter($html) {
    return preg_replace("/<img\s+src=\"([^\"]+)\"\s*\/?>/is", "<img data-src=\"\\1\">", $html);
}

(看完/读完)这篇文章有何感想! 唯一授权官网的分享…

SBF888胜博发娱乐Yii2.0抛出异常问题

( SBF888胜博发娱乐 )

try {
    $model = new ResetPasswordForm($token);
} catch (InvalidParamException $e) {
    throw new BadRequestHttpException($e->getMessage());
}

这是 Yii2.0 中的一段代码。

RT,在实际项目开发中,什么情况下需要抛出异常并进行处理?

比如redis没连接上

try {
    $redis = new redis();
} catch (\Exception $e) {
    var_dump($e->getMessage());
}

if (!$order->save()) {                      
                    throw new \Exception('修改订单状态失败');
                }
比如要保存数据库的时候,保存不成功需要报异常。
            

(看完/读完)这篇文章有何感想! SBF888胜博发娱乐的分享…

胜博发娱乐游戏导航提交几百k的图片会出现502 gate bad way

( 胜博发娱乐游戏导航 )

请问为什么我用form形式提交几百k的图片会出现502 gate bad way啊,几十k就不会,我是在自己电脑上做的试验,装的是xampp?

看下你服务端上传静态文件是否加了limit size 限制

查看 error log php 的和 apache的

貌似PHP配置文件,可以设定上传文件大小。

(看完/读完)这篇文章有何感想! 胜博发娱乐游戏导航的分享…

唯一授权官网网站上有没有有效的方法可以在一定程度上防止用户手动构造传送请求而不经过浏览器?

( 唯一授权官网 )

当然没有十全十美的方法。
只是在一定程度上。
比如浏览器端cookie验证啦等等。。

忍不住来回答个:

简单而言:没有

HTTP协议所传输的内容都是公开的明文,cookie、referer都只是HTTP头中的一个字段,很容易伪造 —— 比如随便找个python爬虫的教程,都能轻易地加上这两个字段。

当然,如果加了cookie和referer校验后,不懂python爬虫之类的人员就可以pass掉了。


感觉LZ问题没问到点子上。很好奇为什么要防用户手动构造请求呢?
猜测有以下2个原因:

  1. 页面性能不行,怕被人刷挂了

  2. 一些消耗资源的操作,比如注册用户,怕被人反复操作,比如注册了N多小号

其实,这两个问题都很好解决:

  1. 性能不行就解决性能问题,比如使用页面缓存;再不济基于IP做防刷控制

  2. 加验证码,加短信校验码

cookie是要有的
像是laravel之类的服务端框架为了防止csrf攻击会为每位访问者生成csfr字符串,在提交表单时必须携带此串并进行验证。
参考资料:

http://laravel.com/docs/master/routing#csrf-protection

或者可以在服务端验证HTTP Referer字段

你搜索一下csrf就知道了

浏览器会自动执行js,curl执行不了,可以用js操作cookie来判断是否为浏览器。具体的验证规则可以自定义了

的确,没有办法绝对限制,只是能增加爬取得难度而已。

可以用session?

token机制

从我与各大网站斗智斗勇的经历来看,方法只有两个,一个是验证码,一个是限制IP。

token的话,浏览器之内无解。但是用爬虫,可以先get表单的页但是用爬虫,可以先get表单的页面,然后把token截取出来,用在第二次的post上面。

token + 限制来源

csrf可以做到

(看完/读完)这篇文章有何感想! 唯一授权官网的分享…

SBF888胜博发娱乐类似微信通讯录排序如何实现的?

( SBF888胜博发娱乐 )

按每个字的字母顺序排下来,感觉效率略低,可否讲讲思路或者直接贴代码上来?或者有没有可用的开源代码?感谢!

(看完/读完)这篇文章有何感想! SBF888胜博发娱乐的分享…

唯一授权官网如何编写自己的PHP框架

( 唯一授权官网 )

使用PHP有段时间了,好吧,只是使用而已。

没做过大型项目,只做过简单的模块开发,见识过 Yii ThinkPHP CI 等开源框架。
但是,只停留在知其然的状态,很想自己弄个框架,由小见大一点一点的做一个东西出来,不知道从哪里入手。

求大神指点迷津。

这个问题本来我不想回答的。但是思考了一段时间后,还是要吐槽下。

首先你要明白你为啥自己开发框架?

我想你自己都没有想的特别明白吧。是为了写个框架,觉得很酷,很厉害,还是仅仅为了顺手,

符合自己的习惯。

楼主自己还是处于初手阶段,对几种不错的框架原理都没搞清楚,就开始写框架。我觉得不是很脚踏实

地。当你了解到现在框架的优劣,原理,觉得不是很便利,或者觉得不是很符合自己的理念,习惯等。

你才去开发。那样你才有实力,才有深刻得理解。

本人当时也是做了很多项目,也用了很多框架,觉得框架不是很符合自己的思想理念。才试着写符合自

己思想的框架。

上面纯属个人理解。言辞不好地方,请多多指教。

先吐一句:框架和其他程序一样,是用来解决问题的。如果你没有遇到问题,为什么要重新制造轮子?

然后说点正经的:

大部分的Web框架处理以下事情:

  • 代码重用:定义包、类、函数的放置和加载规则,建议直接整合Composer及其AutoLoad特性。
  • 请求的分发管理:这个就是路由,Rest风的框架喜欢Rewrite,简单的一点的框架主要通过参数来定位模块和方法所在。
  • 配置文件管理:加载和动态加载配置数据
  • 错误和异常管理:异常捕捉、错误日志记录以及错误码规范。
  • LayOut和模板引擎:如何规划页面布局、widget如何重用、ajax页面如何结合、过期session如何重定向;数据和模板怎么渲染成HTML,是否压缩和设置过期头。
  • 数据库:如何融入控制器;支持什么样的driver;考虑主从分离的扩展性;以及是否使用ORM。

核心框架大体就是这些东西吧。外围就是其他常用组件了,设计好即插即用机制就好。

大型框架实现比较繁杂,可以找一些简单的框架入手,再慢慢的体会大型框架的优点。

顺便贴一个我写的框架:https://github.com/easychen/lazyphp/tree/3.1

一般框架 单一入口->路由->分发->渲染,加一些扩展性,给路由,分发和渲染加上接口或者抽象类,再方便点加上composer,再好维护点加模块,然后改BUG。。
吐槽:一般正式项目用较成熟的开源框架比较好,我已领教自主开发框架对程序员的迫害T_T,优秀自主框架除外。

一般性质的PHP框架最基础部分要包含URL路由与请求分发、数据库连接和操作、模板引擎、常见字符串数组操作、自动加载等功能和模块,可以参考一些实现的不那么晦涩难懂的框架学习,一步步的实现,但是优质的框架并不是类库和功能的封装,还要有机的合理的将上述的功能模块结合在一起才能发挥巨大作用。

找一個框架照著寫一遍
然後你不用再問這個問題了

如果你的目的是“做个东西”,那么最合理/常见的应该是写个博客程序

  • 没有业务空写框架是需要大量经验做基础(知道各种不同项目的异同点,开发的痛点),而博客程序是实实在在的业务
  • 博客业务的弹性十足,可以从非常小开始几乎无限做大做复杂。而且可以涉及一个web的几乎所有方面。
  • 博客自用自己部署上线,至少有1个管理用户(自己)和若干游客。而写框架的话,还是绕不过“项目没人用”的尴尬

广告时间 - 我的PHP框架 LitPHP

虽然0.2版本长了10几行,但289行的代码行数应该还是全球最小的PHP框架

http://litphp.github.io/

粗看看代码半小时,仔细看也就半天最多,应该能给写框架提供一些思路。

php 社区已经非常成熟,各种模式和风格的框架都已经有实现了,私以为,你再去开发一个PHP框架,纯粹是为了重复造轮子的乐趣和成就感。当然,如果有足够的时间和经历,可以尝试去开发一个符合自己习惯的框架,一方面理解框架设计,一方面锻炼自己的能力。不过,这一切都是在你用过,至少了解过很多不同风格的框架之后

但是,其它的新兴的技术,例如Node.js,还很年轻,各种包和框架都不十分成熟,还有很多待填补的空白,无限的可能性,这时候去开发一个框架,才有社区贡献的意义。

发一个我的Node.js框架吧:Codekart官网文档手册

我不赞同,如果是我刚开始以前,肯定也会有这样的想法。但是现在我会选择用主流开源的框架。
自己写框架,当然可以运行,但没有经历过时间的考验,终究是需要不断的重构!

你终究赶不上php的进化,php升级、框架升级会让你抓狂

web的mvc框架太多了,推荐楼主转向一些冷门的框架,例如 socket服务器框架,异步框架,移动应用框架等

“使用PHP有段时间了,好吧,只是使用而已”。使用的时间估计还是有点短,接触PHP三年以内建议先熟悉一些常用的PHP框架,CI,YII,thinkphp,Laravel,symfony等等,等火候到了再考虑写自己的框架吧。其实用现有框架也好,自己开发框架也好各有道理。前提是你在开发框架前已经了解了其他一些框架的优势和劣势,这样才能开发出更好的框架。如果只是想用框架快速开发产品,建议使用现有框架。

自己开发框架主要的好处是能够让你学习框架怎么写。如果想问如何编写的话,我建议还是从定制某一款框架开始,改成自己需要的或者想要的,学习其中主要的实现流程以及用到了语言的哪些特性。不断的定制修改之后直到最后你把他的核心部分代码也改掉就成了你想要的了。

当然这个过程中也有很多可以思考和借鉴的东西,比如如何支持多线程、多进程、异步日志之类的,如何针对cli模式做优化

(看完/读完)这篇文章有何感想! 唯一授权官网的分享…

SBF888胜博发娱乐如何实现无限分类 点击一个商品分类 显示本分类以及所有子分类的商品?

( SBF888胜博发娱乐 )

            function isHaveChildCategory($cid){
                $m=M('goods_category');
                $con['goodscategory_pid']=$cid;
                $result=$m->where($con)->getField('goodscategory_id',true);




                foreach($result as $key=>$value){
                   isHaveChildCategory($value);

                }




                return $result;

            }

建议你下载ecshop的代码来看 说简单点他就是个树 当然像ecshop那样自己写代码用缩进拼出一个树来也是可以的

无限分类的实现一般情况下使用 parent_id / son_id 作为外键关系遍历一次就行了。分类太多性能跟不上的情况下换成预排序遍历树算法,实现上要复杂一些。
至于点击父类别显示所有子孙类别这种前端需求还是看看书好好学学吧。

ecstore 看看

(看完/读完)这篇文章有何感想! SBF888胜博发娱乐的分享…

胜博发娱乐游戏导航签到功能的数据库怎么设计

( 胜博发娱乐游戏导航 )

具体的签到规则是
用户在后台配置,每次连续签到的天数 然后赠送积分或者其他一些优惠,还要设置每人是否领取一次。

主表是签到基本设置
规则是副表
然后用户签到是一张表。现在纠结在如何去判断用户是否领取过。
是否还要添加一张表?

参考这个:

(看完/读完)这篇文章有何感想! 胜博发娱乐游戏导航的分享…

SBF888胜博发娱乐php提取html中指定div下a标签的text和href问题

( SBF888胜博发娱乐 )

已解决,有点凌乱,速度就行。

<?php
header('content-type:application/json;charset=utf8');
$url='http://www.hkxy.edu.cn/'; 
$ch = curl_init(); 
curl_setopt($ch, CURLOPT_URL, $url); 
curl_setopt($ch, CURLOPT_HEADER, 0); 
curl_setopt($ch, CURLOPT_NOBODY, 0); // remove body 
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE); 
curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36'); 
$response = curl_exec($ch); // 检查是否有错误发生 
if(curl_errno($ch)) { 
    echo 'Curl error: ' . curl_error($ch); 
} else{ 
    echo htmlspecialchars($response); 
} 
curl_close($ch);
$response=iconv('gbk', 'utf-8', $response);
$response=str_replace('&nbsp;','',$response);
$pa = '%<div class="column4">(.*?)</div>%sim';
preg_match_all($pa,$response,$arr);
$pa = '%<a class="" href="(.*?)" title="(.*?)" target="_blank">(.*?)</a>%sim';
preg_match_all($pa,$response,$arr);

$result=array();
$number=count($arr[1]);
for($i=0;$i<$number;$i++){
    $temp=explode('/',$arr[1][$i]);
    //print_r($temp);exit();
    $result[$temp[2]][$i]['src']='http://www.hkxy.edu.cn'.$arr[1][$i];
    $result[$temp[2]][$i]['title']=$arr[2][$i];
}

echo JSON($result);

function arrayRecursive(&$array, $function, $apply_to_keys_also = false)
{
    static $recursive_counter = 0;
    if (++$recursive_counter >1000 ) {
        die('possible deep recursion attack');
    }
    foreach ($array as $key => $value) {
        if (is_array($value)) {
            arrayRecursive($array[$key], $function, $apply_to_keys_also);
        } else {
            $array[$key] = $function($value);
        }
        if ($apply_to_keys_also && is_string($key)) {
            $new_key = $function($key);
            if ($new_key != $key) {
                $array[$new_key] = $array[$key];
                unset($array[$key]);
            }
        }
    }
    $recursive_counter--;
}
/**************************************************************
 *
 *  将数组转换为JSON字符串(兼容中文)
 * @param  array $array 要转换的数组
 * @return string      转换得到的json字符串
 * @access public
 *
 *************************************************************/
function JSON($array)
{
    arrayRecursive($array, 'urlencode', true);
    $json = json_encode($array);
    return urldecode($json);
}


URL:http://www.hkxy.edu.cn/

如图所示:
我想提取.offer_box_wide1下a元素的text和href怎么破?求教

最简单的办法是phpQuery

参考PHP Simple HTML DOM Parser
http://simplehtmldom.sourceforge.net/
可以像jquery选择器一样灵活操作html。

(看完/读完)这篇文章有何感想! SBF888胜博发娱乐的分享…

SBF888胜博发娱乐php error_log 提示文件不存在

( SBF888胜博发娱乐 )

[01-Oct-2015 13:41:29 PRC] PHP Warning: error_log(/tmp/logs/weixin/asss.txt): failed to open stream: No such file or directory in /usr/share/nginx/html/test2.php on line 3

如上面的 php-fpm 错误日志记录 , 明明有这个文件和 目录呀 , 为何它还提示 No such file or directory , (/usr/share/nginx/html/ 这个目录能写进去)

谁给差评的 , 我艹 , 天天有人给差评 .. 我要投诉 !!

你以为是 改个 777 就能解决的白痴问题么 .

今天我才发现是 systemd服务管理 里的 PrivateTmp 问题.
日狗了 .

提示的是这个路径不存在:

/tmp/logs/weixin/asss.txt

看下文件的权限,如果文件确实存在的,可能是没有读写权限。

(看完/读完)这篇文章有何感想! SBF888胜博发娱乐的分享…

胜博发娱乐游戏导航他们经常说的中间件,这里的中间件如何理解?

( 胜博发娱乐游戏导航 )

他们经常说的中间件,这里的中间件如何理解?

其实很多东西可以称为中间件,只要它通过接口形式连接了上下的两层系统

比如说,RPC调用,你用的RPC调用的组件就可以称为中间件,因为它连接了背后的RPC服务和你这里的客户端
再比如说,数据库的负载均衡代理,你访问到的是这个代理,由它去调用背后的数据库

起到系统间传输、连接的作用的都可以理解为中间件 譬如:mima、hessian、hsf等

(看完/读完)这篇文章有何感想! 胜博发娱乐游戏导航的分享…

SBF888胜博发娱乐在业务型的公司里面同事写的代码质量比较差,而且安全性,重用性太低,我该走吗?

( SBF888胜博发娱乐 )

在业务型的公司里面同事写的代码质量比较差,而且安全性,重用性太低,我该走吗?我在这待了2年,同事的代码根本不考虑安全性和重用性,维护性,每次看到他的代码,心里就暗暗说:这个傻-逼,哪有这样写代码的.团队才3个人,你们觉得该不该找个中型团队,去试试自己的能力.

给出建议一起成才,才显出你的能力

我们都会经历眼高手低的过程,这再正常不过了,当然我不知道你目前的能力状况,所以只是泛泛而谈,并不针对你。

有的人就是眼界涨的比能力要快,在一个相对水平低的团队里呆不久就会觉得心好累,因为身边的人达不到你所了解和期望的水准。

可是,真的把自己丢到一个跟高水平的团队去就能达到他们期望的水平吗?在你决定走之前应尽可能问问自己清楚这个问题。

如何判断自己的水平到了该走的阶段?比方说,去一些 meetup 或 conference,看看那些高水平的玩家在说些什么做些什么,评估一下自己的适应能力和理解程度。如果感觉只要再稍微加把油就可以赶得上,那么时候就差不多到了。

如果火候不够怎么办?前面认识了那些人了对吗?看看他们的社交账号(我指得是 Github),follow 他们的项目,做一些 contribution,这就等同于和他们一起工作了,经验值涨的很快。

另外,要多花些时间写博客,回答问题,发表见解。这有助于你能力的提升同时获得圈子内的“声望”,如果你言之有物,用不了多久就会收到主动的 offer(我编程五年,发表文章不计其数,每月平均收到电邮 offer 三份左右),这时候就不是犹豫要不要离开,而是离开后去哪儿的问题了。

在你还没有做好离开的准备前,别浪费时间,要成为团队的大腿这样走了也不留遗憾。比方说你的队友从不 handle ajax 除了 success 之外的情况,也许不是他们不懂,而是觉得麻烦为了赶时间才只考虑 happy path。那好,你可曾想过如何帮他们减去这些负担,一两行的代码就可以自动处理这些问题?callback 是地狱,那能不能教教大家 promise?generator?async?归根结底,UI 编程就是异步编程的各种体现和挑战,生产工具落后自然谈不上生产力。在走之前让大家至少明白这些事情也会很有成就感吧?

工作需要让你感到快乐和满足,即使条件不能满足你的期望也不要紧,别迷茫也别抱怨,因为你可以做到更多,然后潇洒的离开,向着下一个目标前行。

走咯~ 我上个公司因为代码太恶心 走了一个java
然后我也走了~ 虽然我是前端~ 因为前端代码也写的很恶心

你同事咋想的呢?

直接说不就行了,别人也会感激你的

组织一下代码审查或者技术分享会,如果组织不起来或者上级不认可,那就走吧。

因为你永远叫不醒一个装睡的人

简单啊,成为他的领导,我就是这样做的,现在看到写的不好的直接打回去重构。

楼主,我也有类似的经历,这个是不可避免的。

其实很简单: 要么走,要么留

如果这个业务系统太庞大,单靠你一个人的能力搞不定的话,还是趁早走,因为这里不适合你的发展。
如果你能搞得定,那就把这个坑填好。

像我现在这样,能干就不走,做了这么10多年了哪个地方都一样,当然如果碰到非常好的机会就走呗,不然无非就是在这里填坑或在其他地方擦屁股的问题而已

建议还是向高层提出建议,整改目前的现状,如果领导不予采纳,按自己的计划走即可。

不开心就撤,你不走怎么能看到新的世界。每次面试都有人问我跳槽频繁,我心里暗问,你丫大傻逼,我不多闯闯怎么能认清这个世界,我不认清这个世界我怎么能成长,我不成长我又如何为这个世界做出我的贡献。每个人都在一个公司不摞动,这个世界岂不是一潭死水。哦,不好意思,说得有点多了。

走!
分析当前情况:
你是否有权利和决心信心带领几个同事将这个项目重构?
当前的手上的工作是否有多余的时间去重构?
老板是否同意?
重构的工程量,工期,是否对现有业务造成影响?
要重构成什么样的结果,其他同事是否形成一个统一重构的概念和认识?
云云……
我们学会要去堵住“破风窗”,但是有些东西又不是我们能拿定主意。

普通人适应环境,牛逼的人改变环境。
虽为一句鸡汤,但也有其道理。

首先你要问自己是否有改变这个环境的能力?能力主要包括扎实的技术、优秀的管理能力、威信力、BOSS是否信任你等,如果不具备这些,你很难改变一个团队的做事风格(性格),当然具备了也会有难度,但完全可以一试。

答案很明确了,有,那就搞,你真的很难得有这样的练手机会。
没有,那就算了,不想难为自己就跳槽吧,对于IT来说,跳槽 = 加薪。

兄弟,换哪都一样的,有时候可能不是别人的问题,你想走的时候总是有千种理由。
所以调整自己的心态,清醒的判断下到底走不走。


很有可能 他们挖的坑最终要你来填。
到时更难受

(看完/读完)这篇文章有何感想! SBF888胜博发娱乐的分享…

SBF888胜博发娱乐lamp服务器,html设置了meta charset=gb2312,浏览器请求还是utf-8,什么原因

( SBF888胜博发娱乐 )

php默认编码注释掉了,apache的默认编码也改掉了,然而网站打开的时候还是乱码?是什么原因
如果给界面加上php header,浏览器能够正常访问,但是程序是以前人写的旧程序,连统一入口都没有,每个文件去改不现实
环境是php5.6,centos6.5
程序在另外一台服务器上没问题,windows本机环境也没问题

meta设置 charset后,还需要把文件的编码改成 ansi才行。改文件的编码的工具很多,一般的编辑器都支持。我使用的是 Editplus,在菜单“文档”下面有个“文件编码”,可以修改。如果 charset=utf-8,那文件的编码也要是 utf-8。浏览器默认是读取文件的编码,meta的设置一般不是优先考虑的。

html 不应该是设置成 utf-8吗??

不是meta咩⊙▽⊙

浏览器编码是什么呢?现在浏览器默认的估计都是utf-8了吧
比如,我新写一个编码为gbk的网页,用浏览器打开就是乱码,chrome和Firefox都是乱码。

Chrome或者ff中 f12查看响应头中的content-type中是否包含了你需要的字符集 没有的话检查下apache设置是否恰当

(看完/读完)这篇文章有何感想! SBF888胜博发娱乐的分享…

胜博发娱乐游戏导航django1.9.5 的manage.py为什么没有 syncdb命令?

( 胜博发娱乐游戏导航 )

视频里的老师不知道用的什么版本,我用的1.9.5没有syncdb命令是怎么回事?改了吗?

1.8还是哪个版本开始,django移除了syncdb命令,同步(迁移)数据库用如下两个命令:

python manage.py makemigrations
python manage.py migrate

(看完/读完)这篇文章有何感想! 胜博发娱乐游戏导航的分享…

唯一授权官网新手问题 Python 判断Set中的对象是否相等

( 唯一授权官网 )

python2.7, 新手问题, 代码如下:

class A(object):
    def __init__(self):
        pass
a = A()
b = A()

为什么a == A(),a == b 的返回结果都为False?
感觉很不合逻辑啊? 这是为什么?

收到解答, 那么又有了新的问题, 代码如下:

class A(object):
    def __init__(self, *args):
        self.args = args
    def __eq__(self, another):
        if type(self) == type(another) and self.__dict__ == self.__dict__:
            return True
        return False

a = A(1)
b = A(1)
print a==b
print [a] == [b]
print set([a]) == set([b])

结果为 True, True, False 为什么set会出现不一样的情况?

a == A()
a == b

实际上是调用__eq__操作符重载来监测对象是否相等,可见

class A(object):
def __init__(self):
    pass

def __eq__(self, other):
    print "__eq__ called"
    return True

a = A()
b = A()
print (a == A())
print(a == b)

监测对象地址用id()函数,比如 id(a) == id(b) 打印a和b是否指向一个地址, 比较对象内容和对象地址是2个意思,见

class A(object):
    def __init__(self, _id, _name, _age):
        self.mID = _id
        self.mName = _name
        self.mAge = _age

    def __eq__(self, other):
        return self.mID == other.mID

a = A(123, "tom", 23)
b = A(123, "jerry", 23)
c = A(234, "jerry", 23)
print a == b
print a == c
print id(a) == id(b)

附加,更新后的代码有几个问题
1) 判断语句应该是if type(self) == type(another) and self.__dict__ == another.__dict__,后面不是self,笔误
2) 你可以在__eq__里加上print “__eq__ called”,明显是转换成set之后比较不是用这个__eq__,而是__hash__方法
3) 尽量不要用__dict__吧,个人觉得你显式用args已经很好了
4) 我个人不太喜欢用type来检查类型,更喜欢下面的方式

def __eq__(self, another):
    assert isinstance(another, self.__class__)
    return self.args == another.args

List 比较用的是 __eq__
Set 比较用的是__hash__ , 因为本质上 set 是个建立在 dict(哈希表)上的结构.
你需要重载__hash__.
See more http://stackoverflow.com/questions/15326985/how-to-implement-eq-for-set-inclusion-test

(看完/读完)这篇文章有何感想! 唯一授权官网的分享…

胜博发娱乐游戏导航用 flask 做网站 如何做页面加载时间?

( 胜博发娱乐游戏导航 )

很多网站最下面都会显示 XXms 这类加载时间,我是用 flask 搭的网站,请问有这类的插件或者这类是如何实现的?

从网页头部就加载一个脚本,从网页头部就加载一个脚本,完成后记录时间就行,但顶部Js会少计算请求解析HTML和那条js的时间。chrome有自己的api,可以很清楚得看到加载时间的各种信息。另外,知乎上也有这个的专门的回答https://www.zhihu.com/question/24889192/answer/29370267

自己写一个装饰器即可把~

(看完/读完)这篇文章有何感想! 胜博发娱乐游戏导航的分享…

SBF888胜博发娱乐Flask-Login如何解决两个不同浏览器登录,在其中一个修改密码,另一个刷新仍是已经登录状态的问题

( SBF888胜博发娱乐 )

尝试过清除session,没有效果牙

你清除的session估计不是另外那个浏览器账号使用的session,骚年,贴出你的代码来。

你是不是在用户刷新的时候并没有判断session有没有失效呢?

你当前登录的用户有一个session_key,通过request.session.session_key可以取到
然后到你存放session的地方,内存/数据库,找到这个session_key相对应的session_data

删除里面所有的session_data值记录

(看完/读完)这篇文章有何感想! SBF888胜博发娱乐的分享…