背景 在Java中,如果你尝试对null做函数调用,就会引发NullPointerException(NPE),NPE是Java程序开发中的最典型的异常,对于Java开发者来说,无论你是初出茅庐的新人和还工作多年的老司机...,NPE经常让他们翻车。...为了避免NPE,他们会加很多if判断语句,使得代码的可读性变得很差。 从软件设计的角度来看,null本身是没有意义的语义,这是一种对缺失变量值的错误的建模。...对象 map 如果值存在,就对该值执行提供的mapping函数调用 flatMap 如果值存在,就对该值执行提供的mapping函数调用,返回一个Optional类型的值,否则就返回一个空的Optional...对象 ifPresent 如果值存在,就执行使用该值的方法调用,否则什么也不做 of 将指定值用Optional封装之后返回,如果该值为null,则抛出一个NPE ofNullable 将指定值用Optional
最近我做了很多项目经常会碰到的“噩梦”之一就是NullPointerException(NPE),因为Java允许变量为null,而在调用对象方法或属性时未做null检查,就会抛出NPE。...一、Kotlin 的可空类型和编译时检查几乎所有对象都可以为null,意味着我在调用任何方法时,都需要小心检查对象是否为空。...,编译时检查避免NPE所有类型默认都是不可空的,除非特意用?...: "未找到客户")这种情况下,Kotlin调用Java方法时不会做null检查,需要在使用平台类型变量前加上安全调用(?.),避免意外的NPE。...六、Kotlin 的优势总结综上总结,Kotlin通过编译时的空检查、可空类型支持和安全调用等功能,几乎不会发生了NPE的发生。Java虽然引入了Optional类解决空值问题,但整体语法很繁琐。
小心调用 subprocess,避免因 shell=True 而命令行解析错误 Python 中的 subprocess 模块可以轻松实现执行外部命令和进程的功能。...我们经常会用它来调用一些命令行工具的功能。但是在使用 subprocess 调用复杂命令时,有一个容易犯但影响比较大的错误 - 使用shell=True参数,导致命令行解析错误,子进程执行失败。...举例1 第一次遇到这个问题的场景是,我在一个项目中需要使用 Airtest 框架生成测试报告。...总结 综上,调用 subprocess 执行复杂命令时,如果不必要,最好避免使用 shell=True。直接传入命令列表,可以最大限度避免命令行解析错误的问题。...只有当命令必须由 shell 处理时,例如需要变量替换,才使用 shell=True。记录这个教训,在将来调用 subprocess 时多加注意,可以避免很多定制错误和调试时间,让代码更稳定。
就是使用selenium打开赶集网的页面,由于业务需求需要禁用掉flash。...代码是这样的: CHROME_NO_FLASH_ARG = ['--disable-component-update','--allow-outdated-plugins','--disable-bundled-ppapi-flash...整了一整天,最终发现是因为我是用的flash官网的安装包安装的,是ppflash,该flash被安装到了system32目录下而’—disable-bundled-ppapi-flash’只能禁用用户目录下的...google文件夹下的flash,只有卸载了ppflash,而使用用户目录下的flash,才能被成功禁用。
前言 对于 Java 开发者来说,null 是一个令人头疼的类型,一不小心就会发生 NPE (空指针) 问题。也是 Java 语言为人诟病的一个重要原因之一。...在我们消除可恶的 NPE 问题之前我们要回顾一下 Java 中 null 的概念。 2....这也是我们在没有引用的对象上调用方法出现空指针的根本原因。大多数情况下 Java 开发者使用 null 是为了表示某种不存在的意思。 3....NPE 问题的解决 很多时候我们对数据是否存在有自己的期望,但是这种期望并不能直接被我们掌控,一个返回值为 null 所表达的意思并不明确过于模糊,往往通过是否判断为 null 来规避空指针问题。...Java 8 中的 Optional Java 8 中的 Optional 是一个可选值的包装类。它的意义不仅仅帮我们简化了 NPE 问题的处理,同时也是 Java 函数式编程的一个重要辅助。
由于工作原因,调用耗时的问题,对我来说,已经见怪不怪了,经常会帮业务解决内部 RPC 框架调用超时的相关问题,但是 HTTP 调用耗时第一次遇到。不过,排查问题的套路是一样的。...不过本地确实也是存在问题的,因为ping 时延是 26ms,后端 HTTP 服务逻辑简单,几乎不耗时,因此本地调用平均耗时应该在 26ms 左右,为什么是 55ms?...为什么加了 TCP_NODELAY ,时延就从 39.2ms 降低到 2.8ms? 为什么本地测试的平均时延是 55ms,而不是 ping 的时延 26ms? TCP 协议究竟是怎么发送数据包的?...但是本地复现时,为什么本地测试的平均时延是 55ms,而不是 ping 的时延 26ms?我们也来抓个包吧。...总结 本文是从一个简单的 HTTP 调用,时延比较大而引发的一次问题排查过程。过程中,首先由外而内的分析了相关问题,然后定位问题并验证解决方案。
做内部接口转发时加token验证需要传token值过去,有如下两种方式: string jsonContent = JsonConvert.SerializeObject(args); using(var...clientUrl = new HttpClient()) { var token = "token的值"; // 法① clientUrl.DefaultRequestHeaders.Add
公司的手游项目,使用的是基于cocos2d-x绑lua的解决方案(参数quick-x的绑定),虽然使用了lua进行开发,更新很爽了,但是崩溃依然较为严重,从后台查看崩溃日志时,基本上只能靠“猜”来复现bug...更为郁闷的是很多时候并没有使用log输出,在崩溃日志里还无法查看大概在哪一步操作崩溃的… 后来在网上搜索了一下,受到一点启发,lua代码在执行的时候可随时调用debug.traceback()方法来获得调用栈的字符串信息...而c++导出方法给lua调用,是使用tolua++工具实现的,通过ant实现将多个pkg文件生成一个cpp文件。...所以只能在ant的build.xml配置中想办法了,好在ant本身就支持正则的任务“ReplaceRegExp”,在调用的方法前面添加打印堆栈的方法即可。...C++函数崩溃时,查看lua的调用栈信息 (特别适用于tolua++) cocos2d-x集成lua 导出 C/C++ API 给 Lua 使用 build.xml示例 Ant-Tasks
实参:在函数调用时,传入函数的值叫做实参。 形参:形参出现在 函数定义 中,在整个函数体内都可以使用, 离开该函数则不能使用。...最重要的是:当实参传递给形参的时候,形参只是实参的一份临时拷贝,通过改变形参不能使实参发生改变!!! ---- 二、函数调用时的处理 1.传值 看到传值,那么就是调用函数时的实参是具体的值。...2.传址 看到传址,那么就是调用函数时的实参是变量的地址。...所以,只有调用函数时,函数要改变实参的值的时候,才需要传址过去。...---- 二、传参时,实参为数组arr[ ]的情况 当实参需要把整个数组传给形参时,因为形参是实参的一份临时拷贝,如果数组较大,会占据大量空间资源。
前面在配置一个Java应用程序的API调用功能,可当启用此功能参数后,发现API调用没能成功,跟进下后台的日志报错信息,找到如下三行关键栈日志: 1 2 3 4 5 6 7 java.lang.RuntimeException...重新思考可能发生的问题环节,回想起来当时构建Docker镜像的时候,使用的OpenJDK只是JRE解压版本(为了减小Docker镜像的大小),猜测大概是这个有相关的影响,找了其他非Docker环境下可正常运行的节点...个条目 然后再切换回Docker环境中,检查了下解压版本JRE的安全证书,果然这里的密钥库是空的,但至于为何会是空的暂且不讨论,想的办法就是从系统中链接一个密钥库过去。.../jre/lib/security/cacerts 然后再尝试重新启动Java应用程序,发现API调用服务是可以正常的开始工作啦,这不知道算不算一种幸运的解法。...不过需要注意的是,上面提到的CA证书文件并不是所有Linux发行版本系统中默认存在,请根据自己系统的实际情况直接查找。另外也可尝试从其它类似环境中拷贝过来,但需要具体测试才知道能否使用。
NPE场景虽然说NPE场景容易排查容易解决,但是在Java编程实践中,空指针异常(NPE)是开发过程中常见的障碍,它不仅阻碍了代码的正常运行,还常常成为系统不稳定性的根源。...先来说说NPE 空指针异常...NPE可以说,在日常开发中或多或少的都会遇到NPE的场景,即便你在开发过程中很谨慎,但是导致NPE的场景并不完全是由代码决定的,也可能是数据导致的。...通常情况下触发NPE的场景比如你没有初始化对象,但是直接调用该对象取参数就会报NPE,比如或者是你调用的方法在未查询到数据时直接返回null,但是在后续的逻辑处理中并没有对对象判空导致再取属性值时报NPE...或者是你的代码中需要获取外部资源,包括但不限于下载图片读取图片内容等操作,那么由于网络导致获取图片内容失败时,此时再处理图片内容就会报NPE。...当然 try catch并不是适用所有的场景,有的场景当发生NPE时,确实需要程序无法执行下去,这个时候就不能使用 try catch 来处理异常,而是需要抛出异常显现问题。
GO中调用redis时,实始化一个连接池,做法也是一般的用户: &redis.Pool{ MaxIdle: beego.AppConfig.DefaultInt("redis::maxidle...c.Do("SELECT", REDIS_DB) return c, nil }, } 类似于以上,MaxActive曾调为100,或几K,大小,当一秒请求数据量,达到5000次以上时,...= nil { log.Println(err) } return value, err } 这样的一个接口时,会导致CPU达到100%以上,同时出现redigo: connection...pool exhausted这样的错误,发现是不断地调用Dial: func() (redis.Conn, error),他不是有连接池吧为什么要不断地调用DIAL?...,一般这样大量数据请求时,做法如何?
,却输出了一个null 之后 加上语句 u2.pwd=“123”; System.out.println(u2.pwd); 确实能输出123,发现编译器实际上对于u2.pwd是分配了内存空间的
有时候在打印日志的时候,在频繁的操作中,会被日志刷屏,但又想定期打印查看状态。这个时候可以利用time.Timer实现一个可指定最小执行间隔的函数,具体看代码吧。
Python 执行 JAR 即可 本篇文章将聊聊 Python 如何调用 JAR 中的方法 2....JAR 中的方法分为 3 步: 启动 JVM 实例化 JAVA 对象,调用对应方法 关闭 JVM 3-1 启动 JVM import jpype # JAR本地路径 jar_path = os.path.join...根据被调方法所在的包名,使用 jpyte 中的 JClass() 方法实例化类 JAVA 对象,最后调用 JAVA 对象的方法即可 需要注意的是,由于 JAVA 中是实例方法,需要先进行对象实例化,...= EncryClass() # 调用JAVA中的加密方法 content_encry = encryClass.encrypt("xag") print(content_encry) 3-3...最后 Python 直接调用 JAR 中方法,可以帮我我们复用轮子,减轻爬虫的工作量!
Python 执行 JAR 即可 本篇文章将聊聊 Python 如何调用 JAR 中的方法 2....JAR 中的方法分为 3 步: 启动 JVM 实例化 JAVA 对象,调用对应方法 关闭 JVM 3-1 启动 JVM import jpype # JAR本地路径 jar_path = os.path.join...根据被调方法所在的包名,使用 jpyte 中的 JClass() 方法实例化类 JAVA 对象,最后调用 JAVA 对象的方法即可 需要注意的是,由于 JAVA 中是实例方法,需要先进行对象实例化,然后调用方法...= EncryClass() # 调用JAVA中的加密方法 content_encry = encryClass.encrypt("xag") print(content_encry) 3-3 关闭...最后 Python 直接调用 JAR 中方法,可以帮我我们复用轮子,减轻爬虫的工作量!
本文记录,外部系统调用salesforce时两种认证方式。这两种认证方式都是salesforce提供的标准接口oauth2。 1....账号密码认证,直接拿到token 接口地址: https://test.salesforce.com/services/oauth2/token 调用方式: POST 参数: grant_type:...code,可以调用services/oauth2/token接口换取token 接口地址: https://test.salesforce.com/services/oauth2/token 调用方式:...code_verifier在后续的流程中会用到 两种认证方式的区别: 1. 账号密码方式更简便,回调地址方式更安全。 2. 账号密码方式拿到的token无法refresh。...回调地址拿到的token可以继续调用refresh接口,做到刷新token,可以实现登录状态持久化的效果。 3.
现在项目已经完成,还是要陆陆续续总结一下的,总结的过程也是对知识梳理和清晰的过程!...2)对于接口调用http和https的问题 对于这一个问题,在之前来说,微信公共平台支持使用http测试项目,但是正式发布需要使用https的域名, 但是前几天看到了微信公众平台发的一则公告: 应该是要封杀...http方式调用了,公告链接:为保证数据传输安全,提高业务安全性,公众平台将不再支持HTTP方式调用(时间2017年9月21日) 3)关于method以及data数据 微信小程序多地方都严格区分大小写,...所以要注意method的value需要为大写,request的默认的超时时间都是60s; 对于data数据,上次我们从接口中拿到的数据是json格式的,最终发送给服务器的数据是String类型,如果传入的...POST请求中不好使了,content-type 默认为 'application/json'; 所以使用post请求时,将content-type设置为 application/x-www-form-urlencoded
Administrator\Desktop\湖南\dzswj.cer -storepass changeit -keystore cacerts 注:-alias 证书别名 -file 要导入的证书目录位置... -storepass jdk的默认密码 -keystore cacerts此处是jdk的证书存放文件,无需更改 3.上一步命令制定完会出现 是否信任此证书?...sxdzswj -file /www/dzswj.cer -storepass changeit -keystore cacerts 1.查看某个证书,注grep 后面的 sxdzswj 即为上面导入证书时的别名...keytool -list -keystore cacerts | grep sxdzswj 2.查看目前环境下的证书 keytool -list -keystore cacerts 3....删除某个已安装的证书 sxdjswj :即为上面导入证书时的别名 keytool -delete -alias sxdzswj -keystore cacerts
领取专属 10元无门槛券
手把手带您无忧上云