应用性能管理

PHP 中的随机数——你觉得可靠么?

廉价感情. 提交于 2020-03-17 18:02:49
某厂面试归来,发现自己落伍了!>>> 本文主要分析以加密为目的的随机数生成问题。PHP 5 并未提供生成强加密随机数的简便机制,但是,PHP 7 引入了两个 CSPRNG 函数以解决该问题。系 OneAPM 工程师编译整理。 什么是 CSPRNG? 引用 维基百科 的定义,密码安全的虚拟随机数生成器(Cryptographically Secure Pseudorandom Number Generator,CSPRNG)是带有特定属性使之在密码学中适用的虚拟随机数生成器(pseudo-random number generator,PRNG)。 CSPRNG 主要用于: 生成键(比如:生成复杂的键) 为新的用户账号生成随机密码 加密系统 保证高安全水准的一个重要因素便是高质量的随机数。 PHP 7 中的 CSPRNG PHP 7 为 CSPRNG 引入了两种新函数: random_bytes 与 random_int 。 random_bytes 函数返回 string 类型,并接受一个 int 类型为参数,该参数规定了所返回字符串的字节长度。 例如: $bytes = random_bytes('10'); var_dump(bin2hex($bytes)); //possible ouput: string(20) "7dfab0af960d359388e6" random

优化函数式编程:向 PHP 移植 Clojure 函数

柔情痞子 提交于 2019-12-07 21:21:43
许多通用程序设计语言试图兼容大多数编程范式,PHP 就属于其中之一。不论你想要成熟的面向对象的程序设计,还是程序式或函数式编程,PHP 都可以做到。但我们不禁要问,PHP 擅长函数式编程吗?本文系国内 ITOM 管理平台 OneAPM 工程师编译整理。 笔者在今年冬天开始时,在 Recurse Center 致力于学习 Clojure,更加深入地了解了函数式编程,并重新拾起 PHP 的客户端工作。但笔者仍然希望运用一些高阶函数和概念,并对它们进行研究。 笔者已经在 PHP 中实施了 模拟 LISP 语言 ,并看到了一些在 PHP 中通过使用 underscore 类库以兼容某些关键函数方法的尝试。但为了使 Clojure 在写入其它编程语言时仍然保有较高的速度,笔者特意镜像 Clojure 的标准库,以使自己能在编写真正的 PHP 代码时,以 Clojure 的方式思考。虽然在学习的过程中绕了一些弯路,笔者仍然愿意向各位展示自己是如何实现 interleave 函数的。 幸运地是, 已经有人执行了 array_some 和 array_every,并且非常地道(至少笔者这么认为)。 /** * Returns true if the given predicate is true for all elements. * credit: array_every and array

为什么 APM 能提升 IT 团队工作质量?

纵然是瞬间 提交于 2019-11-27 11:57:05
“有必要吗?”这是很多 IT 专业人员在尝试向团队内部推荐应用程序性能管理价值时所面临的问题。APM(应用程序性能管理)能为公司节约成本,提高内部工作效率,并真实了解用户对公司的系统和产品是否满意。除此之外,APM 明确了每个利益相关者自身业务运行是否良好,以及谁需要采取措施解决出现的问题。 我们总结了7个理由,让你一目了然的知道为什么需要 APM? 为什么 APM 能成就一个更好的IT团队。 1、帮助了解应用程序环境 这是任何 APM 实施的第一步。APM 帮助你了解应用程序流程,应用程序的运行方式以及使用方法,并且可以帮助IT和管理人员清楚洞察用户系统的高低峰期 (例如,下午和午夜,周内和周末)。 它有助于调度资源密集型工作和其他一些工作的安排规划。 2、积极主动的系统管理方法 管理层喜欢“主动性”。一旦你了解了你的系统环境如何运行,你就可以开始积极地阻止问题发生了。 3、减少人员配置 一旦了解了系统环境并进行了适当的监控和告警,你将不再需要多人验证/监控系统。虽然仍然需要相关人员对警报作出反应,但执行这些操作所需的人员应该很少。这也可以让你的资深员工把重点放在项目工作上,而让更多的初级员工留下处理日常的工作。 4、发现系统效率低下并进行优化 一旦你达到积极主动的阶段,你会发现你的系统环境效率低下。可能包括循环代码,甚至是你不知道的多余的数据库调用