文章目录 一、Kotlin 的空安全机制 二、变量可空性 1、默认变量不可赋空值 2、声明可空类型变量 一、Kotlin 的空安全机制 ---- Java 中的空指针问题 : 在 Java 语言...编写的程序中 , 出现最多的崩溃就是 NullPointerException 空指针异常 , 该异常是 运行时 才爆出的 , 在 代码编写时 以及 编译期 很难提前排查出来 ; Kotlin 的空安全机制...Kotlin 程序的 代码健壮性 ; 二、变量可空性 ---- 1、默认变量不可赋空值 在 Java 中 , 引用类型的变量 默认为 null 空值 ; 但是在 Kotlin 中 , 变量默认不可为...赋值一个空值 , 除非 将该变量声明为 可空类型 ; 2、声明可空类型变量 声明可空类型变量 : 如果要声明一个 可空类型的变量 , 必须 声明该变量的具体的类型 , 并在该类型后添加 ?...可空类型 , 此时就可以为 该变量 赋值 null 值 ; fun main() { var name: String?
在日常使用委托时,有以下常用方法 方法名称 说明 Clone 创建委托的浅表副本。 GetInvocationList 按照调用顺序返回此多路广播委托的调用列表。...RemoveImpl 调用列表中移除与指定委托相等的元素 ---- GetInvocationList() 的用途 当委托有多个返回值时 当你编写一个 delegate委托 或 Func泛型委托...,并为实例绑定多个方法时,每个方法都有一个返回值。...调用委托后,只能获取到最后一个调用方法的返回值。 ---- 使用 GetInvocationList() GetInvocationList() 能够返回 这个委托的方法链表。...通过使用循环,把每个方法顺序调用一次,每次循环中都会产生当前调用方法的返回值。
关于WWWGrep WWWGrep是一款针对HTML安全的工具,该工具基于快速搜索“grepping”机制实现其功能,并且可以按照类型检查HTML元素,并允许执行单个、多个或递归搜索。...Header名称和值同样也可以通过这种方式实现递归搜索。 功能介绍 使用递归选项在目标站点上搜索名为“username”或“password”的输入字段,快速定位登录页面。...快速检查Header以了解特定技术的使用情况。 通过搜索响应Header快速定位Cookie和JWT令牌。 与代理工具一起使用可通过一组链接快速自动执行递归。...识别页面代码中存在的API令牌和访问密钥。 快速测试管理下的多个站点是否使用了易受攻击的代码。 快速测试管理下的多个站点是否使用了易受攻击的框架/技术。...搜索响应Header值以查找与搜索规范的特定匹配项 工具使用样例 递归查找站点上名为login的所有输入字段,匹配不区分大小写: wwwgrep.py -t https://www.target.com
传统意义上,linter 更注重的是检查代码中编码问题、bug、代码风格之类的问题,它们可能不会发现代码中的安全问题。...例如,Coverity 是一个很流行的工具,它可以帮助寻找 C/C++ 代码中的问题。然而,也有一些工具专门用来检查源码中的安全问题。例如,Bandit 可以检查 Python 代码中的安全缺陷。...无论什么时候,使用软件和库的最新版本都是确保它更新及时、没有安全问题的最好的方法。...如果恶意使用者能访问这个变量,那么他们就可以改变变量的值去读其他文件。...这里,gosec 报出了一个可能需要你检查目录的权限是否安全的问题。
今天遇到一个很狗血的问题,一个功能在开发环境没有问题,但在生产环境出错了。 代码如下: ......File(fileTmpPath); File newFileTarget = new File(filePath); tmpFile.renameTo(newFileTarget); // 修改新文件的权限...仔细查找原因发现jdk的renameTo方法介绍如下: /** * Renames the file denoted by this abstract pathname....to another 也就是说如果文件是从一个文件系统将文件move到另一个文件系统有可能失败,正好开发环境上tmpFile与newFileTarget在同一个文件系统中,而在生产环境中由于HA方案的原因这两个文件在不同的文件系统...教训:一定要检查File的相关操作的返回值,如setLastModified, setReadOnly, setWritable, setReadable, setExecutable, createNewFile
另一种更为主动的方法就是将网络安全实践整合到更广泛的业务策略中去,这可以大大减少数据丢失,并使安全团队能够更迅速、更准确地应对任何真实存在的威胁。...因此,采用一种系统的、基于风险的方法在软件开发生命周期(SDLC)的早期评估和解决网络安全漏洞,而不是出现漏洞后才这样做。 业务和安全目标必须保持一致 安全方法与整个组织的方法结合才是最有效的。...这既需要对应用程序的预期业务目标有扎实的理解,又需要有以决策者能够理解的方式来构成论点的能力,而不是给他们一堆的安全术语。最好的方法之一是基于风险的方法,该方法有两个主要阶段。...在此阶段进行彻底检查至关重要,因为如果只是遗漏了一个应用程序,或者一个系统没有安全保护,那么它将为网络罪犯创造一个新的潜在风险。 完成第一阶段后,便可以开始第二阶段,将业务影响纳入战略规划过程。...采用基于SaaS的方法进行应用程序扫描 在整个SDLC中采用基于SaaS的方法进行应用程序扫描,安全团队可以持续评估生产过程中的风险,而不仅仅是几个关键点。
根据借用检查规则,以下代码会报错 let mut v = vec!...2020-02-25 10:28 third 的借用时间持续到你最后一次使用它。...roadhoghook 2020-02-25 10:32 以下内容来自Rust 程序设计语言(第二版) 注意一个引用的作用域从声明的地方开始一直持续到最后一次使用为止。...("{}", r3); 不可变引用 r1 和 r2 的作用域在 println! 最后一次使用之后结束,这也是创建可变引用 r3 的地方。它们的作用域没有重叠,所以代码是可以编译的。...Krysme 2020-02-25 18:44 这样的设定是对的,因为野指针不去使用它,并不算有内存问题,这样的设定可以降低false positive zydxhs 2020-02-25 20:25
wry" b = "zjl" c = "xxx" print "a=%s, b=%s, c = %s" %(a,b,c) 输出 a=wry, b=zjl, c = xxx 参考: 格式符 格式符为真实值预留位置...,并控制显示的格式。...格式符可以包含有一个类型码,用以控制显示的类型,如下: %s 字符串 (采用str()的显示) %r 字符串 (采用repr()的显示) %c 单个字符 %b 二进制整数 %d
Android代码静态检查(lint、Checkstyle、ktlint、Detekt) 在Android项目开发过程中,开发团队往往要花费大量的时间和精力发现并修改代码缺陷。...Android目前主要使用的语言为kotlin、java,所以我们需要尽可能支持这两种语言。 Lint Android Studio 提供的代码扫描工具。...通过进行 lint 检查来改进代码 能检测什么?是否包含潜在错误,以及在正确性、安全性、性能、易用性、便利性和国际化方面是否需要优化改进,帮助我们发现代码结/质量问题,同时提供一些解决方案。...API 等; Performance:对性能有影响的编码,比如:静态引用,循环引用等; Internationalization:国际化,直接使用汉字,没有使用资源引用等; Security:不安全的编码...checkstyle-result-preview.png 支持Kotlin 怎么实现Kotlin的代码检查校验呢?我找到两个富有意义的方法。 1.
查找重复值、移除重复值,都是Excel中的经典问题,可以使用高级筛选功能,也可以使用复杂的公式,还可以使用VBA。...在VBA中,也有多种方式可以移除重复值,这里介绍RemoveDuplicates方法,一个简洁实用的方法。 示例数据如下图1所示,要求移除数据区域A1:D7中第3列(列C)中的重复值。...如果想要指定多个列,使用Array函数: Range("A1:E15").RemoveDuplicates Columns:=Array(3, 5), Header:=xlYes 此时,如果这两列中的值组合是重复的...参数Header可选,默认值是xlNo,即不包含标题行。也就是说,该参数告诉RemoveDuplicates方法数据区域是否包含标题行。可以使用3个值:xlYes,xlNo和xlGuess。...图2 这种情形使用RemoveDuplicates方法是再合适不过了。
本文: 定义了可重入性,并包含一个可重入函数的 POSIX 清单。 给出了示例,以说明不可重入性所导致的问题。 指出了确保底层函数的可重入性的方法。...不返回指向静态数据的指针;所有数据都由函数的调用者提供。 使用本地数据,或者通过制作全局数据的本地拷贝来保护全局数据。 绝不调用任何不可重入函数。 不要混淆可重入与线程安全。...在程序员看来,这是两个独立的概念:函数可以是可重入的,是线程安全的,或者二者皆是,或者二者皆非。不可重入的函数不能由多个线程使用。另外,或许不可能让某个不可重入的函数是线程安全的。...避免在处理器中释放内存的最好方法是,标记或记录将要释放的对象,让程序不间断地检查是否有等待被释放的内存。...不过,如果您知道当信号可能到达时,程序不可能使用处理器那个时刻所使用的流,那么就是安全的。如果程序使用的是某些其他流,那么也不会有任何问题。
本文介绍了 Kotlin 代码扫描工具 Detekt 的基本使用方法,并在此基础上总结了一套 Kotlin 代码规范治理技巧。...扫描结果即可在终端直接查看,并可以直接定位到问题代码处: 也可以在build/reprots/路径下查看输出的报告文件: 在子模块中应用 detekt 对于包含多个子模块的工程来说,如果想要分模块对代码进行扫描...第一种方式是使用 @Suppress 注解[12]: 在类名或者方法名前添加诸如 @Suppress("LargeClass") 这样的注解,可以有针对性地忽略这个文件中的某些告警。...可以定义适合团队的代码规范 使用 detekt 提供的 autoCorrect 特性,可以快速地格式化代码 使用 detekt 提供的 CLI 接口,可以在 IDE 中对单个文件执行检查,实时反馈问题整改进度...detekt 的使用方法,可以一定程度上提升整改的效率。
Kotlin 代码调用写入 Java 语言中的 API 时,会依靠上述 API 中的可空性注解来决定每个参数的可空性,以及返回值类型。...未注解的参数和返回值类型将被视为平台类型,从而弱化 Kotlin 的空值安全保证。 最新的 Android 9 包含了 Android SDK 的更新,为一系列最常用的 API 加上了可空性注解。...您的 Kotlin 代码在调用 SDK 中任一已注解的 API 时,可完好保留空值安全保证。...新的 Android SDK 作为 Android 9 连带发布的一部分,包含了一些常用 API 的可空性注解,当 Kotlin 调用了 SDK 中任何带有注解的 API 时,它能预留出空安全性 (null-safety...如果您使用的是 Java 编程语言,违反可空性协议的将不会产生任何编译器警告或报错。仅 IDE 的代码检查功能可检示这些问题。 此外,您可在整个项目中检查代码,并审阅总体结果。
4.7 使用可浏览的意图 原书:Android Application Secure Design/Secure Coding Guidebook 译者:飞龙 协议:CC BY-NC-SA 4.0...此外,使用 URI 模式从浏览器启动相应应用的方法不仅支持 Android,也支持 iOS 和其他平台,这通常用于 Web 应用与外部应用之间的链接等。...使用“可浏览的意图”来对付这些风险时有一些要注意的地方。 4.7.1 示例代码 使用“可浏览的意图”的应用的示例代码如下: 要点: 1) (网页侧)不得包含敏感信息。...“可浏览的意图”时,需要遵循以下规则: 4.7.2.1 (网页端)敏感信息不得包含在相应链接的参数中(必需) 当点击浏览器中的链接时,会发出一个意图,该意图的数据中有 URL 值(可以通过Intent#...另外,没有方法可以验证 URL 参数是否从有效网页发送。 因此,在使用 URL 参数之前,有必要验证 URL 参数的安全性,例如,检查是否包含意外值。
大家好,又见面了,我是你们的朋友全栈君。 在Java中可以使用Math.abs()方法来方便的进行绝对值计算,例如: 输入的是正数的时候直接返回即可,当是负数的时候返回它的相反数即可。...使用三目运算符可以使用一行代码就能做到 int value = Math.abs(-90); System.out.println(value); System.out.println("**
本章内容包括: 处理 null 的可空类型和语法 基本数据类型和它们对应的Java类型 Kotlin 的集合,以及它们和Java的关系 6.1 可空性 /**------------...这意味着使用Kotlin的可空类型并不会在运行时带来额外的开销 */ /**-------------------- 6.1.3 安全调用运算符: ?....结尾)定义扩展函数时,这意味着你可以对可空的值调用这个函数; // 并且函数体中的this可能为null,所以你必须显示的检查。...Kotlin编译器不知道可空性,需要自己处理它 //代码清单6.16 不使用null检查访问Java类 fun yellAt(person: JavaCode.PersonJava...* 集合中的元素是否可空? * 你的方法会不会修改集合?
返回集合或可迭代对象的存储库方法 查询方法,返回多个结果可以使用标准的Java Iterable,List和Set。...可空性注释 您可以使用Spring Framework 的可空性注释来表达存储库方法的可空性约束。...它们null在运行时提供了一种工具友好的方法和选择加入检查,如下所示: @NonNullApi: 在包级别上用于声明参数和返回值的默认行为分别是既不接受也不产生null值。...要为查询方法启用可空性约束的运行时检查,您需要使用 Spring 的@NonNullApiin在包级别激活非可空性package-info.java,如以下示例所示: 示例 22....Spring Data 存储库使用语言机制来定义这些约束以应用相同的运行时检查,如下所示: 示例 24.在 Kotlin 存储库上使用可空性约束 interface UserRepository : Repository
(之前我们在 4.2.3 节的示例中看到过这种行为。)由于移动的语义特点,我们只是想把它打印出来,却完全破坏了整个结构。Rust,你可“真行”! 处理这个问题的正确方式是使用引用。...类似地,如果有某个值的可变引用,那么它就会独占对该值的访问权,在可变引用消失之前,即使拥有者也根本无法使用该值。事实证明,让共享和修改保持完全分离对于内存安全至关重要,本章会在稍后内容中讨论原因。...在机器码级别,Rust 会将 None 表示为空指针,将 Some(r) 表示为非零地址(其中 r 是 &T 型的值),因此 Option 与 C 或 C++ 中的可空指针一样高效,但更安全:它的类型要求你在使用之前必须检查它是否为...可变静态变量本质上不是线程安全的(毕竟,任何线程都可以随时访问静态变量),即使在单线程的程序中,它们也可能成为一些另类可重入性问题的牺牲品。由于这些原因,你只能在 unsafe 块中访问可变静态变量。...如果函数的参数有多个生命周期,那么就没有理由选择某一个生命周期作为返回值的生命周期,Rust 会要求你明确指定生命周期。
本文将带您了解 Android 11 SDK 引入了哪些变更,以便在 API 中显示更多的可空性信息。此外,我们还将介绍一些实用方法与技巧,帮助您做好准备,顺利应对 Kotlin 中的可空性问题。...浅谈 Kotlin 中的可空性 使用 Kotlin 编写代码时,您可以使用问号操作符来指明可空性: KOTLIN var x: Int = 1 x = null // compilation error...= 1 y = null // okay Kotlin 的这个特性能够让您的代码更安全。即使您随后调用一个方法或试图访问 x 等非空变量属性,也不会面临空指针异常的风险。...return currentName; } 复制代码 添加 @Nullable 注释后,当您在 Kotlin 文件中使用 getCurrentName 的结果时,您必须先进行 null 值检查,...您可以通过在代码中添加空值检查来解决这些警告或报错。
对这种类型的空检查要求会放宽,因此对它们的安全保证与在Java中相同。...(或者它的其他别称,如 @CheckForNull),那么该注解类型自身将用于 检索精确的可空性,且具有与该可空性注解相同的含义。...当类型并未标注可空性注解时使用默认可空性,并且该默认值是由最内层标注有带有与所用类型相匹配的 ElementType 的类型限定符默认注解的元素确定。...函数,在 Java 中只会有一个所有参数都存在的完整参数签名的方法可见,如果希望向 Java 调用者暴露多个重载,可以使用 @JvmOverloads 注解。...Kotlin在JVM虚拟机中运行时会检查所有的公共函数,可以检查非空值,这时候就可以通过NullPointerException得到Java中的非空值代码。
领取专属 10元无门槛券
手把手带您无忧上云