Pratt Parsing 算法
什么是 Pratt Parsing 算法 Pratt parsing 算法是一种通用的解析方法,用于将程序代码或其他结构化文本转换为抽象语法树(Abstract Syntax Tree)。主要用于解析算术表达式、布尔表达式和类似的语言结构。算法的核心思想是将操作符根据它们的优先级(Precedence)和结合性(Associativity)来分类,然后使用不同的解析函数处理不同类型的操作符...
什么是 Pratt Parsing 算法 Pratt parsing 算法是一种通用的解析方法,用于将程序代码或其他结构化文本转换为抽象语法树(Abstract Syntax Tree)。主要用于解析算术表达式、布尔表达式和类似的语言结构。算法的核心思想是将操作符根据它们的优先级(Precedence)和结合性(Associativity)来分类,然后使用不同的解析函数处理不同类型的操作符...
「在我这是好的,不信你来看看」这是个程序员都明白的梗,背后反映出来的其实是软件开发环境与运行环境不一致的问题,基础设施、操作系统、版本、配置的差异都有可能导致异常情况的产生。避免各个环境的差异的关键点在于实现软件交付的可重复性,简单而言就是将每个步骤都像流水线一样记录下来形成脚本,这样无论脚本执行多少次,其结果都是可预测的。那么如何实现这种可重复性呢? 按照我的经验大概总结出以下: ...
有段时间没有更新文章了,打开网站忽然就有了换个主题的念头,当时选择 White-Paper 是因为考虑到它足够简单,毕竟「less is more」,但是在使用过程中发现它对中文的支持有些水土不服,总结来看主要存在以下问题: h2,h3,h4 标题以及正文的中文大小显示差强人意 正文中列表显示效果差 正文中代码部分显示字体过小,且不提供粘贴按钮 文章的标签归档需要手动执行...
本文记录 tanzu community 版本在 vSphere7 环境的安装部署以及功能测试。 环境信息 因为资源受限,本文将在一台物理服务器上部署所有 TKG(Tanzu Kubernetes Grid)环境。 cpu: 8核 内存: 40G 硬盘: 500G 网卡: 千兆网卡 enp0s31f6 系统: Ubuntu 20.04 LTS 通过 kvm 创建 ESXi 虚...
云原生(cloud native)应用其中有一条就是能够快速迭代,应用不断升级过程中不可避免就是启停操作,删除旧版本,更新新版本,如果应用是部署在 kubernetes 上面的,那么 update deployment 过程中 kubelet 会发送 SIGTERM 信号给容器 PID 1 的进程,做为应用程序应当捕获这个信号,可以在真正退出之前做一些清理工作,例如通知注册中心自己已消亡。 ...
命令行解析几乎是所有程序的标准功能,go 语言标准库中提供了 flag 模块,而 kubernetes 中则使用了 pflag 和 cobra 来构建。 flag 标准库 flag 包内置了常用的几种参数类型:string,int,bool,time.Duration,如果需要自定义类型,例如以 , 分割的字符串数组,就需要实现 flag.Value 接口。 基本类型 基本的使用方法...
开始新项目之前我总是会习惯先设计好日志模块,这样可以避免在开发过程中代码行中充斥着大量且临时的 print 输出语句。kubernetes 的日志模块是 C++ 版本 google/glog 的 Go 语言实现,基本实现了原生 glog 的日志格式,早期版本中是 golang/glog,目前已经迁移到 klog 作为日志库,被替换的原因总结下来有以下几条: glog 默认会在 ini...
写在前面:本系列是在阅读 kubernetes 源码过程中逐渐整理的一些值得借鉴的编程范式(recipe),汇集起来也就有了这个 cookbook,所以内容展示的更多的可能是 code snippet,而不是 How to use Kubernetes。 Kubernetes Project Layout Go 语言社区提供了一套标准的工程目录结构方案,详细参考:https://gith...
本文记录了如何使用 kickstart PXE 批量部署服务器。 安装步骤 1. 配置 dnsmasq yum install dnsmasq /etc/dnsmasq.conf domain=jfbrother.centos7.lan # DNS server=114.114.114.114 #bind-interfaces interface=eth0 # DHCP rang...
最近在做高校大数据实验室项目过程中发现,就场景而言相比较容器老师更容易接受虚拟机的模式,例如想让学生搭个 hadoop 集群,然后在此基础上做实验,就需要有一个直观的网络拓扑让学生理解。kubernetes 只暴露应用入口的设计原则显然不适合。因此,kubernetes on openstack 兴许是个好的解决方案。 openstack 已经发布到 rocky 版本了,各个核心组件已经相...