之所以有这个想法,是因为部分第三方库版本约束没有做好,导致版本不匹配的库也可以安装,库版本不兼容到运行时才得以暴露,影响很大。
$ docker run -d --name emqx -e EMQX_DASHBOARD__DEFAULT_PASSWORD=admin --network=lnmp -ti -p 18083:18083 -p 1883:1883 -p 8083-8084:8083-8084 -p 4370:4370 -p 5369:5369 emqx/emqx:5.8
像Java这类语言,编译器会把代码预先编译为字节码,JVM直接解释执行这些字节码,程序就可以运行起来了。PHP使用者在性能优化时可能也会遇到OPcache这个名词,所谓OPcache其实就是opcode的cache,opcode其实类似于字节码,虽然本质上有点差异,但可以类比为同一种事物。
之前写过Selenium是怎么指挥浏览器运行的,其中提到过通过CDP(Chrome DevTools Protocol)协议可以直接绕过浏览器驱动来控制浏览器。CDP本质上就是通过WebSocket协议传输JSON格式的命令。
写过爬虫或者做自动化测试的相信对Selenium不会陌生,但Selenium 官方只提供少数几种语言的库,使用其它“小众”语言的只能眼馋。既然如此,那就自己琢磨一下能不能搞个类似的吧,毕竟大家都是图灵完备的语言,除了少数一些领域实在没办法或者几乎不可能做到之外,其它的都大差不差。