学习
实践
活动
工具
TVP
写文章

在PHP中strpos函数的正确使用方式

echo '存在'; }else{ // 如果不存在执行此处代码 echo '不存在'; } 这段代码输出的是’存在’;没什么问题;但是再看下面这段代码 // 判断‘沈唁志博客 ’中是否存在‘沈’这个字 if (strpos('沈唁志博客', '沈')) { // 如果存在执行此处代码 echo '存在'; }else{ // 如果不存在执行此处代码 no,no,no,这家伙还有个隐藏坑,来换个词 // 判断‘沈唁志博客 1’中是否存在‘1’这个数字 if (strpos('沈唁志博客1', 1)===false) { // 如果不存在执行此处代码 echo '不存在'; }else{ // 如果存在执行此处代码 echo '存在'; } 如果你脑算出来的上面这段代码输出的是‘存在’,那你这完全没跟上的套路啊,不是技能的问题了 是时候为智商讨个说法了,事实上输出的是’不存在’,细心的童鞋会发现这个 1 是不带引号的,strpos 的第二个参数必须是字符串型的,因此,如果你是在循环或者其他情况下调用的 strpos 函数,而且不确定第二个参数的类型

28130

10 个内存引发的大坑,你能躲开几个?(1)

对程序员来说内存相关的 bug 排查难度几乎和多线程问题并驾齐驱,当程序出现运行异常时可能距离真正 bug 的那行代码已经很远了,这就导致问题定位排查非常困难,这篇文章将总结涉及内存的一些经典 bug *p = 20; } 这段代码非常简单,func 函数返回一个指向局部变量的地址,main 函数中调用 fun 函数,获取到指针后将其设置为 20。 你能看出这段代码什么问题吗? 解引用问题的指针 C语言初学者常会犯一个经典错误,那就是从标准输入中获取键盘数据,代码是这样写的: int a; scanf("%d", a); 很多同学并不知道这样写会有什么问题,因为上述代码有时并不会出现运行时错误 这时接下来程序的表现就取决于a的值了,而上述代码中局部变量a的值是不确定的,那么这时: 如果a的值作为指针指向代码区或者其它不可写区域,操作系统将立刻kill掉该进程,这是最好的情况,这时发现问题还不算很难

14820
  • 广告
    关闭

    【11.11特惠】CODING DevOps免费试用

    代码托管、项目管理、CI/CD、制品库等多种CODING DevOps产品和服务开箱即用,千行代码 5 分钟完成构建,个人开发者或小规模团队免费使用,企业资源包7折起…

  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    谷歌工程师写的这段代码什么水平?

    源 / 菜鸟教程 代码,正在改变世界。正是因为代码的存在,才有了阿里巴巴、百度、京东、天猫等的存在。 网友分享了一篇名为 “看看牛B的程序员是如何写好看的代码”的文章。 整篇文章只有放了一段代码,而且这段代码据说是前谷歌工程师写的,大家快来看看什么水平? ? 在这段代码的下面,很多网友跟帖,下面精选一些网友的回答: 网友一:不是说不要嵌套太多的if么? 网友六:觉得这个问题得看看这段代码解决的是什么问题,然后我们再基于这个问题考虑,就会体会到这段代码的厉害之处了,相同之处参见刷算法题时费尽千辛万苦解决了一个问题,看答案排行,发现第一名的代码量能只有自己的十分之一运算性能还强的令人发指 看来大家对谷歌前程序员写的代码,不是很满意,认为问题很多。其实不一定大牛写的代码就很牛逼,有些时候,也会出现一些小问题。曾经因为一行代码错误,日本价值18亿的卫星就失控了。 这样做的后果是,自身旋转变得更加严重,最后也彻底失控。 据悉,“瞳”卫星造价是2.86亿美元,也就是人民币18.6亿元。“瞳”卫星曾经被寄予了很大的厚望,它代表的是新一代X射线天文学的未来。

    24330

    13.程序编程进阶:函数

    请输入圆的半径:")); # 执行计算功能,求取圆的面积 area = pi * (r ** 2); print("您要求的半径为" + r + "的圆的面积为:" + str(area)); 上面这段程序相信大家都能看懂 ,就是求取用户输入一个指定半径的圆的面积 如果我们在不确定的某个时刻,又需要求取另一个圆的面积,应该怎么做呢? 思考中....没事,重新写一下这段代码! 这样,合适吗?! 合适,但是存在问题,什么问题呢…就是代码重复,工作重复,如果每天这样大量重复的工作出现,程序就不再是编程,而是搬砖了。 此时,我们python和其他编程语言一样,可以将这段程序封装成函数,通过一个定义的函数封装好这些代码,在某些需要的时候,通过函数的名称直接调用即可。 1.1. ,在python中,通过缩进的方式来确定不同的代码块,临近的相同缩进的代码为一个整体代码块。

    21220

    100%代码覆盖率的悲剧

    “而不是“这段代码应该进行测试”。 背景 一天,一位开发人员找我帮忙,他在进行单元测试时,确切的说是他在使用Mockito测试以下代码时遇到了麻烦: ? 当我跟他说:“这里不需要测试。” “不测试怎么知道这段代码能运行啊?” “这段代码的功能看起来很简单,没有条件,没有循环,没有转换,没有任何复杂的东西,只是一段简单的代码。” Mockito在这种情况下不仅没有帮助,恰恰相反,如果用了它,反而会使测试变得更复杂,更难读懂。” “但是得使用Mockito进行所有的测试!” 另一个例子 一个应用程序,覆盖率非常高(开发模式为BDD—“”行为驱动设计”),这引起了的注意。通过观察代码发现以下Cucumber测试: ? 但我们很少人意识到另一个极端会带来什么问题:即达到100%代码覆盖率或者一切项目都是TDD模式开发。单元测试是一个非常好的做法,但我们应该分辨哪些测试是有用的,哪些是适得其反的。

    59570

    一段代码搞崩Java,坑都埋到胸了!

    如果连1+1都变得不可信了,整个程序就会变得不可信。 下面这段代码,将会改变一些基本运算的执行逻辑,理所当然属于埋坑的范畴之一。我们还是先看一下它的行为。 考虑到下面这段小小的代码,它的运算就经历了多次装箱拆箱。 下面这段代码,即使我们不做反射魔改,它的输出依然是不确定的。 End 看着这个齐胸小坑,的感情真的是难以言表。这段代码整体看来,如果进行了正常的review,还是很容易看出问题的,但凡是总有万一。

    28451

    ——度量神经网络的不确定

    随着模糊系统逐渐成为我们模糊生活的一部分,测量预测不确定变得越来越重要。 值得庆幸的是:在神经网络中有几种测量不确定性的技术,其中一些非常容易实现!首先,让我们来感受一下我们要测量什么。 ? 有些事情是随机发生的,这种随机性也是模型预测不确定性的一个来源。 预测不确定三种方式: 1. 模型的不确定性 模型的不确定性来自于对问题的“无知”。 以一种简单的方式概述了这些想法,但这只是这些深层次话题的皮毛。 ? 实施不确定性 此时,您可能会想:“这听起来不错,但我如何在的模型中实现不确定性呢?“。 如果你想分享关于这里出了什么问题的分析的想法,将非常有兴趣阅读你的回复! 结论 首先,我们研究了为什么量化机器学习模型中的不确定性很重要。 在机器学习中集成贝叶斯概率在未来只会变得更加重要,期待看到更多的概率技术成为工具链的一部分。

    2K30

    4个编码好习惯,让你的代码更优雅

    我们再来看看具体的代码: 从上面可以看出,光这一小段代码里就有许多写死的“1、2、3”。也许代码刚写好时不会暴露出什么问题。 一段优秀的代码应该像下面演示一样: 通过这段代码我们不难发现,问题就出在魔术字符串上,我们要学会及时消除它。 03 return取代if…else 照例我们先来看一段实际场景下的代码: 是不是没有看出什么问题呢?确实,这段代码逻辑是没有问题的。 但就跟上一种情况类似,如果今后出现了需要增删修改的情况时,就会变得复杂和费劲。 可能增加if条件还好,只是越来越多的if else会让人几乎产生阅读障碍。 面对这种情况,我们其实可以参考下面的代码来编写: 这些修改都很简单,但就是因为简单反而被很多人忽略忘记。熟练地使用之后,对于今后的代码编写是很大的帮助的。

    8630

    零基础学习 Python 之 while 循环语句

    同时写这个教程也算是对自己之前所学知识的一个巩固和提高,喜欢的朋友们可以点个关注,问题欢迎随时和我交流。本文所有的代码编写均是Python3 版本。 使用 while 进行循环 while 是 Python 中最简单的循环机制,翻译成中文是 “当…的时候”,这个条件成立在一段范围或时间间隔内,从而在这段时间间隔内让 Python 做好多事情。 使用 break 跳出循环 如果你想让循环在某一条件下停止,但是不确定在哪次循环跳出,可以在无限循环中声明 break 语句,其含义就是要在这个地方终端循环,跳出循环体。 写在最后 最后感谢你能看到这里,希望写的东西能够让你到收获,但是还是希望在文章里插入的代码,你们能自己动手试一下,都很简单。 原创不易,每一个字,每一个标点都是自己手敲的,所以希望大家能多给点支持,该关注关注,该点赞点赞,该转发转发,什么问题欢迎在后台联系,也可以在公众号找到我的微信加我。

    17110

    java泛型之泛型边界

    return weWantFloatFilled; }  注:试了一下,以上代码执行looksGood()时会出错,第4行报java.lang.ArrayStoreException。 看成Object,往一个Object类型的列表加一个String什么问题?况且其实际就是String类型。其实并不能通过编译,这并不是编译器出现了错误。 这里个逻辑漏洞,我们仔细考虑无界通配符的意义。无界通配符代表其接受任何的实际类型,但这并不意味着任何的实际类型都可以作为其输入和输出。其语义上有微妙的但巨大的区别。其含义是不确定到底是哪个实际类型。 往一个EntityLiving的列表里加EntityPlayer什么问题?放肆!12450!好不闹/w\。这里的问题在于如果实际上是EntityPig的列表呢。 对了,就是超威蓝猫!

    21710

    javascript 返回数组中 最大 最小 平均值多种方法分析比较 by FungLeo

    Math.max.apply(null,arr) 这段代码同事给我解释过,大概其能够理解,但是不能阐述其具体的原理. 但是eval(arr.join("+"))这段代码给看蒙了.立即百度搜索 eval 最终搞明白了是怎么回事. 现在不确定其是在一个什么样指定的数字会出错.但是,看图不解释: 别人的方法二 给数组绑定方法 此处为转载于别人的代码,原文地址:js获取数组最大值、最小值和平均数代码实例 文章代码如下: function 反正这是一段很值得玩味的代码. 总结 实现所需要的功能,简单粗暴的方法.如我的代码. 或者使用程序的一些高级功能去实现,如第二种方法. 使用高级的方法可能有未知的风险,一定需要对这种方法深刻的理解. 让代码变得优雅,需要更加高的视野,更加细致的规划. 每一天都进步.尽快让自己的JS水平提升到主流.

    12810

    Redis 之父 antirez 退休了

    宁可大家认为是一个糟糕的艺术家,也不希望只被看成一个优秀的程序员。但是现在被要求这要求那,就因为这个项目变得如此重要。 不能随意表达自己(艺术创作,大刀阔斧的改代码),而只能在现有的代码基础上维护(小打小闹)。并不是说这样不对,这只是现阶段的 Redis 必须要接受的方式。 但是个人有点受不了,最近几年感到很憋屈(Linus 也会是这种感觉么?)。 所以呢,社区里面的同志们啊,告诉你们要退居幕后了。至于做什么还没有想好,会不会继续写代码不确定比较怀疑自己是否能够完全放弃写代码,只是因为写代码实在是太好玩了(此处个调皮的表情)。 Redis 是职业生涯中压力最大的项目,可能也是最重要的项目。 最近这些年编程世界的变化并不是特别喜欢(不知道说的是哪方面的变化),虽然这段旅程非常艰辛,能够有机会和很多特别的人一起工作交流也让感觉非常知足。

    45710

    Spark Streaming 误用.transform(func)函数导致的问题解析

    问题描述 今天朋友贴了一段 gist,大家可以先看看这段代码什么问题。 另外还有一个问题,也是相同的原因造成的:通过KafkaInputStream.transform 方法获取Kafka偏移量,并且保存到HDFS上。 这样做恢复就变得困难了。 正常情况下不会有什么问题,比如.map(func) 产生的MappedDStream里面在compute执行时,func 都是被记住而不是被执行。 但是TransformedDStream 是比较特殊的,对应的func是会被执行的,在对应的compute方法里,你会看到这行代码: val transformedRDD = transformFunc

    20430

    了 GC 还会不会发生内存泄漏?

    对象关系的问题 占有 与 非占有 好吧,这两个词是自己发明的。 这里用C#实现观察者模式作为示例: ? ? ? 这段代码什么问题吗? 但是GC的运行时间是不确定的,现在计算机的内存也都足够大,内存迟点回收不会有什么问题,但托管对象内部包装的其它资源可能属于“紧张的资源”,比如非托管内存、文件句柄、socket连接,这些资源是必须要被及时回收的 伪代码示例: ? 这样就够了吗?如果close前发生异常或直接return了怎么办? 结语 其实以上所列举的种种情况,大多数情况资源最终都会得到回收,只是回收不够及时,但这种回收不及时在资源紧张或出现极端情况时,还是可能会发生内存泄漏的,所以说不是了GC就可以高枕无忧了。

    62830

    你有成为互联网团队管理者的潜力吗?

    都一年多了,没见你们公司业务啥增长呀,你们天天都在瞎忙啥呢?” 通过亲身经历的案例来进行下解读: 在某通讯行业软件公司,A团队与B团队,在局方的项目中都很努力,但得到的评价却不同。 先说A团队,做的非常好,也没出什么问题,A团队的局方也没对他们留下什么印象。 面对目标的不确定性,团队也会变得不确定。用什么方式工作才能达到最佳?用什么方式用户才会满意?因此大家产出要快,反馈也要快,最终让这个不确定变得更好,或让猜的能力变得更强。 再来说心态,觉得绝大多数人是厌恶不确定性,并且希望自己的目标能够被确定的,所以互联网管理者也经常会遇到下属来找你,不断的来找你询问下一步该如何做,下一阶段目标该如何制定,而此时,互联网管理者要帮助大家打破边界 ,帮助团队去应对这种不确定性。

    44600

    谷歌程序员哪些高效的编程习惯?

    那么他们在写代码的过程中,哪些非常可贵值得我们借鉴的套路呢。 这么做能使得步骤变得很具体,以便我们在后续敲代码的时候进行参考。 从字符串的首位开始读。 查看由3个字符(或是searchString中的字符数)组成的子集。 是故意的,因为不确定在JavaScript语言中给字符串切片的语法,所以我会在下一步中查询该语法。 随着你不确定的内容增加,你的程序出错的方式会呈指数式增加。当你1处不确定的时候,你程序确实只会因为这1个原因而出错。 但是如果有2处不确定,出错就有3种情况(A处出错,B处出错,或者AB都出错)。 w3schools: https://www.w3schools.com/jsref/jsref_substr.asp 在这基础上,假设每次用这段代码 substr(index, searchString.length

    26430

    Asp.Net Core 轻松学-经常使用异步的你,可能需要看看这个文章

    前言 事情的起因是由于一段简单的数据库连接代码引起,这段代码从语法上看,是没有任何问题;但是就是莫名其妙的报错了,这段代码极其简单,就是打开数据库连接,读取一条记录,然后立即更新到数据库中。 异常的发生来得太突然 1.1 引起不舒适的代码片段 [HttpPut] public async void Put([FromBody] TopicViewModel model) var affrows = await this.context.SaveChangesAsync(); } 这是一段不太标准的异步接口,可能你也这么写过, 从结构和语法上看,这段代码没有任何问题 问题所在 那到底是什么问题引起了程序执行的不确定性呢,答案就是 async/await,我们先来尝试改进一下最初的代码 2.1 改进后的代码 [HttpPut] public async this.context.SaveChangesAsync(); Console.WriteLine("affrows:{0}", affrows); } 细心的你已经发现,这段代码

    25630

    一日一技:亲眼所见,也非真实,如何明目张胆架设后门程序

    这样的言论显然非常天真,一来,并不会有很多人真的去看源代码;二来,一些缺陷隐藏得很深,光看源代码看不出来,例如 log4j2;第三,办法把后门藏在一段非常安全的代码里面,你即使看源代码也看不出哪里问题 你也可以设置参数timeout=xxx来限定这两个测试必需在多长时间内完成,否则视为网络问题。 这个功能简单得不能再简单了,能有什么问题呢? 现在就把代码放到你的面前让你来Review,你能说代码问题? 但实际上,上面这段代码确实有一个后门,可以让在部署了这个接口的机器上执行任意命令,包括但不限于下载木马或者rm -rf *。 这段代码的问题,就出现在图中画箭头的这两个地方: 这两个地方的逗号后面,并不是空格,而是一个看不见的符号:\u3164。 现在,这段后门的代码,其实会接收两个参数,分别是timeout和ㅤ,其中后者这个看起来像是空格的就是\u3164,也就是变量名。

    18410

    扫码关注腾讯云开发者

    领取腾讯云代金券