分类 技术 下的文章

快年末了,作为一个程序猿人生中在不断的解决旧的BUG和创造新的BUG,那么有什么东西可以在我们检测BUG中让数据更加直观(头发掉的不那么快)呢?

安装方式

[scode type="yellow"]本次安装XDebug插件基于Windows环境,其他平台会在之后更新

或查看XDebug官方安装文档:直达连接[/scode]

Windows环境

手动安装

一般来说在Windows环境下都是使用集成环境,但是我们要针对集成环境的PHP编译版本号来安装。

[scode type="red"]严重警告:每一个PHP编译环境并非相同,请不要下载一个到处使用,会造成无法启动等情况[/scode]

检测编译版本和下载扩展

准备要检测的内容:

在CMD或者PowerShell中输入下方命令

php -i

将响应数据复制到XDebug检测网站(点我跳转)输入框点击分析。

XDebug分析PHPINFO数据

一般来说不出意外都是会有成功的分析结果。

分析的结果会告诉你正确下载扩展包文件和需要修改的配置文件位置。

XDebug分析结果

在php.ini找到XDebug添加或修改扩展配置

[XDebug]
xdebug.profiler_append = 0
xdebug.profiler_enable = 1
xdebug.profiler_enable_trigger = 0
xdebug.profiler_output_dir ="You Loacl Temp Folder"
xdebug.trace_output_dir ="You Loacl Temp Folder"
xdebug.profiler_output_name = "cache.out.%t-%s"
xdebug.remote_enable = 1
xdebug.remote_handler = "dbgp"
xdebug.remote_host = "127.0.0.1"
zend_extension=php_xdebug.dll #注意:请根据你自己文件路径决定
#添加远端请求端口,用于Postman请求工具使用
xdebug.remote_port = 9000
xdebug.remote_mode = "req"

编辑器设置

PHPStorm

在PHPStorm下需要设置软件中的所使用的PHP版本,并且检查XDebug是否安装成功。

PHPStorm设置PHP环境

开始调试

在开始调试前我们还需要做一些小小的操作。

PHP打断点和开启调试模式

Postman

在请求头中添加Cookie让PHPStorm能够监听到需要调试需求。

Cookie:XDEBUG_SESSION=PHPSTORM;

Postman请求设置

首次响应Debug,IDE会进行确认操作

第一次响应Debug

点击“Accept”同意Debug响应操作,编辑器会在下方开启Debug视图,此时你可以完整观看程序数据情况,也可以使用不同工具来进行调试程序代码走向。

断点操作

最后提示

[scode type="red"]在线上环境中,请不要安装XDebug[/scode]

在很多情况下,测试人员在反馈的示例中,使用var_dump函数只能正对操作后的元素值得情况,在计算的场景下仍需要XDebug这类扩展来帮助我们更加深入的了解程序走向,了解程序背后深度。

如果需要转载文章或商务合作,请关注公众号取得联系!

2020终于来到了一个小长假,趁着这个小长假来对自己的家庭网络安装广告和防止隐私追踪。

什么是AdGuard

Adguard 是目前最好的过滤广告和阻止隐私追踪程式,它可以安装Windows,Mac,Linux,手机端,路由器等各种设备上。

大家可能对于过滤广告还算是熟悉,但是防止隐私追踪可能有些陌生,那么我先贴一张Adguard官方介绍图。

隐私介绍图

通过这个张图,大家初步的了解在背后的一些操作。试着试着想一下为什么有时候我们在某宝搜索了一些商品,然后在其他的网站上可以看到广告在推荐与你近期搜索的关键词极其相似。

这其实就是一些软件和广告商进行数据共享,分享你近期的内容,建立关于你的用户画像,例如:你买过什么,看过什么,喜欢什么,然后给你推送和你同类人的东西(请注意这里并不是使用AI来猜你喜欢什么,此处涉及相关内容推荐机制,有兴趣可以单独了解一下)

更加深层次的什么行为分析,隐私侵犯,监视(运营商可能做浏览记录)一般如果你是接入非法网络或者私有运营商可能会有这种违规行为,正规的运营商一般不会做出此行为,但出于安全考虑,能防止我们都阻止被侦查。

原理篇

AdGuard几乎适用于全部不同设备,但是为了方便家人使用,我是在路由上安装Adguard Home,因为搭建自己的DNS解析器不需要付费,而且设备上不需要额外安装软体,连接家里WiFi就可以使用Adguard Home服务。

AdGuard Home Install For Web Info

那么AdGuardHome的原理究竟是什么呢?

大家试着想一下我们平时上网的时候,我们需要打开知乎,就在地址栏输入zhihu.com,如果细心的你就会发现在浏览器的左下角会显示“正在等候zhihu.com”

等候域名解析

这个等待操作就是由DNS服务商返回正确的IPV4或者IPV6地址(下述简称IP地址),向目标服务器获取资源。

那么IP地址是会变更的,可能有时候中心在广东,下个月在上海,下下个月就北京。

用户不会每天都要记住你的IP地址,就有域名和DNS服务商来帮你记住这些IP地址。

流程大概是这样的:

普通DNS解析流程

通常来说返回的资源不仅仅是你请求的的资源,还会创建cookie来存储你的访问记录,浏览时长等数据,然后将这些数据整合发送到发送到服务端存储,然后共享数据。

而AdGuard Home像是DNS的中间人,先帮你检查域名是否在封锁库中,如果不在向上游DNS服务商请求目标IP地址。

含有AdGuard Home DNS解析流程

简要的说AdGuard Home存储要封锁的域名,阻止你将要访问的可记录追踪的域名和广告,而上游DNS服务商是存储全国各地的IP地址,让你正常访问服务资源。

安装篇

目前主流的第三方路由控制面板都集成的AdGuard Home快速安装,也因为涉及不同的操作系统环境这里暂不赘述安装过程(也很简单)。

启用AdGuard Home设置一下控制面板端口,DNS端口和控制面板密码完成后就进入控制页面了。

Adguard Home 仪表板

这里需要设置如下几点:

上游DNS设置

DNS伺服器配置

添加过滤规则

[collapse status="false" title="常用过滤规则"]

建议规则:

HalfLife,规则合并自 EasylistChina、EasylistLite、CJX’sAnnoyance 合并规则(几乎每天更新)。

https://gitee.com/halflife/list/raw/master/ad.txt

【导航】abp规则地址指向

https://gitee.com/halflife/list/issues/I1CV06


单独规则:

EasyList China : 国内网站广告过滤的主规则。

https://easylist-downloads.adblockplus.org/easylistchina.txt

EasyPrivacy : EasyPrivacy 是隐私保护,不被跟踪。

https://easylist-downloads.adblockplus.org/easyprivacy.txt

[/collapse]

上述的过滤规则建议大家填写HalfLife过滤规则,并且选择其他外置规则建议首选中国大陆内的代码托管中心(例如Gitee,Coding),减少过多的重复规则以减轻路由压力。

过滤效果会根据你访问内容和设备缘故会产生不同效果,目前我安装后AdGuard Home内部解析速度基本控制7~15ms,目前速度和过滤效果在我个人可以接受的范围内

总结

在这个互联网的大世界,每一个人的隐私都不应该是可以各种第三方售卖和定位,虽然目前国内广告法明确说明广告机制不可以定位到个人,但我们仍然要守护我们自己最后的一寸净土,提高自己的网络安全意识,让我们每一个人都可以安全干净享受各种网络资源。

公众号二维码

无邀自来,其他的回答者应该都能解决了你很多问题, 但我现在有一个十分严重的问题。

让我们站在一个用户的角度去看这个问题。

先问一下其他答主,你们开这个网站用了多久?

测网速和打开网页不是同步操作

随手用网页工具测试一下:

太多超时

真的太久了,我就成功打开过一次,图片什么都没加载出来!

图都没出阿来..

你想想HR突然来兴致,打开你的网站,结果等了10s,还是白屏,重新打开两次,只有一个小点在左上角。

你觉得他还会要这个人吗?

我猜一下应该有这几种情况:

  1. 伺服器宽带太小。
  2. 伺服器限制访问请求。(我觉得不可能)
  3. 目前这个问题火了,你的网站太多人访问了,压力太大,没资源返回给我。

这个IP解析后得出的消息是广州腾讯云提供服务,估计你购买的是学生伺服器?

我个人建议你先更换为阿里云的轻量伺服器,因为总网路带宽有5M,这样能够输出的内容就会多很多。

或者

搭配CDN将你大量的静态数据分离出来,让你的伺服器主要输出动态数据。宽带压力就不会很大了。


其次,我个人建议你选择好一个方向,前端还是后端。

全栈虽好,但是不精通一个方向下的底层原理,你可能会在很多情况下,不清楚一个问题的最优解。

就假设你现在最大的意愿是前端,那你完全可以找一个开源的博客,为这个开源博客做皮肤套件,例如Typecho。

首先这样做你可以减轻你在后端的压力,可以将更多的精力放在前端上用户交互,界面设计等等。

而且Typecho支持插件开发,也就是说如果你想增强博客的功能,例如微信增强分享,QQ登录,评论检测,你都可以直接再开发后端,这样前后端你都可以涉猎。

对于你现在的前端设计,我个人还是觉得不错的,只是还有很多小细节需要注意,例如:手机端持续hover,阴影过大。

如果我是面试官,会给予机会,但个人还是需要能够知道一些快速开发的项目库。至于能有多少K,取决于你的周边范围和你目前能够知道的一个量,很多大学生会出现会使用无深度,往往就是给自己致命的一击。

毕业后找工作一时半会找不到确实会有焦虑感,但放轻松吧。(可能偏题)


这是一个可能不成熟但还在努力学习的我的回答,如果大家对于这个回答哪里需要完善的,欢迎指点,感谢!

查看原文

原文来源:脉脉-Redis 到底是单线程还是多线程?我要吊打面试官!

https://maimai.cn/article/detail?fid=1462427779&efid=1jt-7kkbTGNkYZgeOsFWow&use_rn=1

如有侵权,请在本站留言删除

最近发布的文章,其中有一道题:

Redis是多线程还是单线程?(回答单线程的请回吧,为什么请回,请往下看)

好些粉丝在后台问我:为什么请回,Redis不是单线程吗?

大家注意审题:Redis是多线程还是单线程?

这个问题你要从多个方面回答,如果你仅仅只回答 "单线程" 肯定是说不过去的,为什么呢?

所以今天,栈长利用工作时间紧急把这个问题紧急梳理了下,希望对大家有帮助。

1、Redis 单线程到底指什么?

没错,大家所熟知的 Redis 确实是单线程模型,指的是执行 Redis 命令的核心模块是单线程的,而不是整个 Redis 实例就一个线程,Redis 其他模块还有各自模块的线程的。

下面这个解释比较好:

Redis配图 (1).png

Redis基于Reactor模式开发了网络事件处理器,这个处理器被称为文件事件处理器。它的组成结构为4部分:多个套接字、IO多路复用程序、文件事件分派器、事件处理器。

因为文件事件分派器队列的消费是单线程的,所以Redis才叫单线程模型。

参考:http://www.jianshu.com/p/6264fa82ac33

2、Redis 不仅仅是单线程

一般来说 Redis 的瓶颈并不在 CPU,而在内存和网络。如果要使用 CPU 多核,可以搭建多个 Redis 实例来解决。

其实,Redis 4.0 开始就有多线程的概念了,比如 Redis 通过多线程方式在后台删除对象、以及通过 Redis 模块实现的阻塞命令等。

来源官方的解释:

Redis配图 (2).png

如果你能说到这里,对 Redis 单/多线程的理解也有你自己更多的认识了。

另外,前些天 Redis 6 正式发布了,其中有一个是被说了很久的多线程IO:
Redis配图 (3).png

这个 Theaded IO 指的是在网络 IO 处理方面上了多线程,如网络数据的读写和协议解析等,需要注意的是,执行命令的核心模块还是单线程的。

所以,你要是再把 Redis 6.0 网络处理多线程这块回答上了,你也不至于 "请回" 了。

之前有的人在后台和我杠精说:Redis 6 不是还没发布吗?

Redis 6 Beta 版本多线程这个说了多久了,作为一个程序员,如果这个还不能 get 到的话,那就有点 OUT 了,如果确实没听说还好,如果听说了,还要和我杠精,我就无言以对了,对于新技术的发展和学习不就是我们和面试官的谈资吗?!

3、为什么网络处理要引入多线程?

之前的段落说了,Redis 的瓶颈并不在 CPU,而在内存和网络。

内存不够的话,可以加内存或者做数据结构优化和其他优化等,但网络的性能优化才是大头,网络 IO 的读写在 Redis 整个执行期间占用了大部分的 CPU 时间,如果把网络处理这部分做成多线程处理方式,那对整个 Redis 的性能会有很大的提升。

网上也有对 Redis 单/多线程情况下的 get/set 操作性能做了对比:

Redis配图 (4).png

Redis配图 (5).png

参考:blog.csdn.net/weixin_45583158/article/details/100143587

从上面的性能测试图来看,多线程的性能几乎是单线程的两倍了,从该文章来看,这个只是简单的针对多线程性能的验证,并没有做很多严谨的测试,不能作为线上指标参考。

但可以知道的是,Redis 在网络处理方面上了多线程确实会让 Redis 性能上一个新台阶,不过 Redis 6.0 刚发布,不可能有企业马上上生产环境,可能还需要一段时间的优化和验证,我们再期待吧。

最后,目前最新的 6.0 版本中,IO 多线程处理模式默认是不开启的,需要去配置文件中开启并配置线程数,有兴趣的研究下吧。

总结

这篇文章只是对 Redis 单线程/多线程有个基本的认识和总结,吊打面试官可能还说不上,但是在面对面试官提问的时候,不要只是单纯的说单线程,你要回答的还要比这个更多。