202003-12 PHP是生还是死? 有关PHP已死的传言满天飞,然而事实却并非如此,只要WordPress还活着并正常运行,PHP就不会消亡,况且如今的WordPress依然生龙活虎。不幸的是,许多遗留的PHP代码与旧版的WordPress捆绑在一起,而这些网站的所有者未能完全更新这些旧版本。 继续阅读 >
202003-12 PHP已不再是当年那个“设计糟糕”的语言 在5.X版本时代,PHP的性能平均而言是最好的。而在7.0时代,大部分的PHP核心都从零开始重写了,其性能能够达到之前的23倍。口说无凭,幸运的是,有人花了大量时间来测量PHP的性能,Kinsta提供了一个很好的更新列表。 从7.0版本以来,PHP性能就只升不降。PHP web应用的性能可以和其他语言web框架的性能相提并论,甚至更高。 继续阅读 >
202003-12 重要的PHP面试问题及答案 Q1.描述PHPAns:PHP是一种服务器端脚本语言,最常用于Web应用程序。PHP附带了各种框架和CMS,可以帮助创建网站。面向对象,PHP类似于Java和C#等语言,这使得它易于学习和实现。一些基于PHP的流行应用程序是WordPress和osCommerce。Q2.显示在PHP中使用“echo”的内容Ans:PHP中echo的主要目的是帮助在网页中打印数据。例如,以下代码从网页打印此项目的文本:<?phpecho'Brandedshirts';?>Q3.PHP页面中包含文件的方式是什么... 继续阅读 >
202003-12 使用 Go 和 LLVM 进行 Web Assembly 的高效前端开发 HOT 总的来说,我很高兴在我的工具箱中再添加一个工具来更加简单方便的创建 Web assembly。也许通过一些工作,tinygo 可以生成的更简洁,并像 Rust 一样在网络的下一个技术平台上坚实可靠。 继续阅读 >
202003-12 一个零 GC 的缓存库:freecache HOT 今天给大家推荐一个零 GC 开销、高并发性能的缓存库:FreeCache,项目地址:https://github.com/coocood/freecache,Star 数:2.5k+。 继续阅读 >
202003-12 Micro In Action(一):入门 HOT 这个系列聊一聊 Micro, 我们将以实际开发微服务为主线,顺带解析相关功能。从最基本的话题开始,逐步转到高级特性。 Micro 很强大,掌握后使用起来也相当便利。但它的演进速度非常快, 导致其文档有严重缺失和滞后。 很多功能没有文档;很多基本问题不得不去 GitHub 上提 issue 或去 Slack 里面问,又得不到什么反馈。最后, 查看源码成了唯一的学习途径。这对于使用者来说非常不友好,阻碍了 Micro 被更多人所采用。 继续阅读 >
202003-12 “网红” WebAssembly 与 K8s 如何实现双剑合璧? HOT WebAssembly 技术已经走出浏览器,让计算无处不在。本文利用 containerd 的扩展机制,可以为 WebAssembly 应用提供与其他容器应用一致的、抽象的、应用分发、交付和运维模型,可以在 Kubernetes 集群中进行统一调度和管理。 继续阅读 >
202003-11 Golang源码系列四:Interface实现原理分析 HOT 接口是一种抽象类型,它没有暴露所含数据的布局或者内部结构,当然也没有哪些数据的基本操作,所提供的仅仅是一些方法。当你拿到一个接口类型的变量,你无从知道它是什么,但你能知道它能做什么,或者更精确地讲,仅仅是它提供了哪些方法。 继续阅读 >
202003-11 Golang源码系列三:Channel实现原理分析 HOT channel可以在两个或者多个goroutine之间传递消息。在Go中,goroutine和channel是并发编程的两大基石,goroutine用来执行并发任务,channel用来在goroutine之间来传递消息。 继续阅读 >
202003-11 Golang 源码系列二:Slice实现原理分析 HOT 众所周知,在golang中,slice(切片)是我们最常使用到的一种数据结构,是一种可变长度的数组,本篇文章我们主要结合源码来介绍一下slice的底层实现,以及在使用slice时的一些注意事项。 继续阅读 >
202003-11 Golang源码系列一:Map实现原理分析 HOT 每个map的底层结构是hmap,是有若干个结构为bmap的bucket组成的数组。每个bucket底层都采用链表结构。 继续阅读 >
202003-10 除了标准库 sync 包外,这个官方包(golang.org/x下的)你应该了解 HOT go 语言里使用 go 关键字就可以轻松搞定并发的问题,它讲究的是“不要通过共享内存来通信,而应该通过通信来共享内存”的原则,在 Go 里 channel 是个线程安全的多线程通讯介质。Go 本身的这些原语基本上可以解决常见的各种需求了。 继续阅读 >
202003-10 Go 如何防止缓存穿透 HOT 事实上不止于防止 缓存穿透, do-once-while-concurrent 更准确的定位是 重复资源过滤 ,,在某讲座业务中,使用 do-once-while-concurrent 来避免同一时刻同一用户id 重复解析 、列表页 重复检索 、排序 等,减少了资源竞争,提高了整体的qps和稳定性。 继续阅读 >
202003-10 一文掌握 Go 语言 Select 的四大用法 HOT 本文带大家认识 Go 语言的 Select 用法,相信大家对于 switch 并不陌生,然而 select 跟 switch 有个共同特性就是都通过 case 的方式来处理,但是 select 跟 switch 处理的事情完全不同,也完全不相容。来看看 switch 有什么特性: 各种类型及型别操作,接口 interface{} 型别判断 variable.(type),重点是会依照 case 顺序依序执行。 继续阅读 >
202003-10 图解kubernetes容器探活机制核心实现 HOT 在k8s中通过kubelet拉起一个容器之后,用户可以指定探活的方式用于实现容器的健康性检查,目前支持TCP、Http和命令三种方式,今天介绍其整个探活模块的实现, 了解其周期性探测、计数器、延迟等设计的具体实现 继续阅读 >
202003-09 一文看懂 K8s 日志系统设计和实践 HOT 上一篇文章《6 个 K8s 日志系统建设中的典型问题,你遇到过几个?》中我们介绍了为什么需要一个日志系统、为什么云原生下的日志系统如此重要以及云原生背景下日志系统的建设难点,相信 DevOps、SRE、运维等同学看了之后深有体会。本篇文章单刀直入,会直接跟大家分享一下如何在云原生的场景下搭建一个灵活、功能强大、可靠、可扩容的日志系统。 继续阅读 >
202003-09 Go Modules 处理私有 Git Repository 的流程 HOT Golang[1] 在 1.14[2] 正式說明可以將 Go Modules[3] 用在正式環境上了,還沒換上 Go Modules 的團隊,現在可以開始轉換了,轉換方式也相當容易啦,只要在原本的專案底下執行底下指令,就可以無痛轉移 继续阅读 >
202003-09 深度解密Go语言之unsafe HOT uintptr 可以和 unsafe.Pointer 进行相互转换,uintptr 可以进行数学运算。这样,通过 uintptr 和 unsafe.Pointer 的结合就解决了 Go 指针不能进行数学运算的限制。 通过 unsafe 相关函数,可以获取结构体私有成员的地址,进而对其做进一步的读写操作,突破 Go 的类型安全限制。关于 unsafe 包,我们更多关注它的用法。 继续阅读 >
202003-09 换个角度看:Go里的unsafe包是什么? HOT 总结下, unsafe包是非常有意思并且很强大的,但是使用它时候一定要多加小心。如果需要更新包的特性,可以参考这里的升级指南 继续阅读 >
202003-07 又一个Go绘图和可视化库:plot HOT 前两天介绍了一款 Go 语言绘图工具:go-chart。今天发现了另外一款类似的工具,但更强大。不过还没发布稳定版。 项目地址:https://github.com/gonum/plot,Star 数 1.4k 继续阅读 >
202003-07 Go:大切片一定比小切片代价大吗? HOT 特别是,当程序员听到拷贝很昂贵时,他们开始在各处看到它们,尤其是当他们得知在 Go 中每个赋值都是拷贝时。 考虑下面的代码;x 比 y 大三个数量级,将 x 分配给 a 比将 y 分配给 b 更昂贵吗? 继续阅读 >
202003-07 TIOBE 发布 2020 年 3 月编程语言排行榜,Go 语言的表现令人惊叹! HOT 值得注意的是,TIOBE指数并不代表语言的好坏,开发者可以使用该榜单检查自身的编程技能是否需要更新,或者在开始构建新软件时对某一语言做出选择。 继续阅读 >
202003-06 Golang WaitGroup实现原理和源码解析 HOT 方便的并发,是Golang的一大特色优势,而使用并发,对sync包的WaitGroup不会陌生。WaitGroup主要用来做Golang并发实例即Goroutine的等待,当使用go启动多个并发程序,通过waitgroup可以等待所有go程序结束后再执行后面的代码逻辑 继续阅读 >