5 刘知杭 静态类型的Python
静态类型的Python Lyzh(刘知杭) 目录 CONTENTS 有关类型的概念 使用mypy对Python源 代码进行静态分析 代数数据类型 拓展知识 关于类型的一些基本概念 有类型不等于有类型系统 动态语言类型化的必要性 不久前的一个案例 正文 类型的概念 CPython定义了PyObject这个 结构体作为对象头。 CPython中的类型,是指在对 象头中指向类型元信息的指针。 象头中指向类型元信息的指针。 CPython有类型,但CPython没有类型系统。这就是CsPython中诸多问题的由来。 类型系统是什么? 类型系统(type system)的基本目标是防止程序在运行时发生类型错误。当且仅当语言运行时 不存在任何形式的类型错误,那么它就是sound的。soundness是类型系统研究的重要目标。 类型系统(type system)是一种编译期(Compile-time)的类型推导检查规则。 ime)的类型推导检查规则。 类型系统就是一种轻量级的形式化方法,它通常被植入编译器或程序分析器中进行自动校验。 从而让那些不熟悉底层理论的程序员也可以使用它们。 这类轻量级技术中还包括模型检测(Model checking),运行时验证(Runtime verification)和类型系统(Type system)等等。其中类型系统最流行,发展最完善。 在计算机科学中,形式化方法(Formal0 码力 | 42 页 | 6.87 MB | 1 年前3用Go语言实现推送服务器
用Go语言实现推送服务器 陈叶皓 chen.yh@ctrip.com 议程 • 推送服务器介绍 • Golang特点 • 推送服务架构 • 部分代码 • 上线效果 议程 • 推送服务器介绍 • 推送服务架构 • 部分代码 • 上线效果 什么是推送服务器 • 推送业务信息到手机端 • 始终保持连接 推送服务器要求 • 高并发 • 可靠性 • 高性能 • 支持水平扩展 • 无单点故障 无单点故障 Go语言特性 • 静态的、编译的 • 自动内存回收 • 命令式编程 • 函数可以作为值 • 面向并发 • 内置RPC支持 推送服务器要求的应对 • 高并发 – goroutine • 可靠性 – 使用Redis暂存消息 • 高性能 – 静态编译语言 • 支持水平扩展 – 使用RPC组成集群 • 无单点故障 – 使用Redis实现数据共享 Go语言的并发模型 • 事件驱动,共享线程池 包含一 个获取返回值的channel 议程 • 推送服务器介绍 • 推送服务架构 • 部分代码 • 上线效果 逻辑架构 去中心化设计 • 客户端随机连接 • Redis集中存储地址表 • 信息发送2跳到达 消息缓存设计 • 消息预存(Redis) • 尝试发送 • 发送成功后删除 客户端注册时序图 议程 • 推送服务器介绍 • 推送服务架构 • 部分代码 • 上线效果 串行场景-Socket0 码力 | 25 页 | 260.04 KB | 1 年前3MoonBit月兔编程语言 现代编程思想 第四课 多元组, 结构体,枚举类型
现代编程思想 多元组,结构体与枚举类型 Hongbo Zhang 1 基础数据类型:多元组与结构体 2 回顾:多元组 多元组:固定⻓度的不同类型数据的集合 定义: (<表达式>, <表达式>, ...) 类型: (<表达式类型>, <表达式类型>, ...) 例如: 身份信息: ("Bob", 2023, 10, 24): (String, Int, Int, Int) 成员访问: (2023, 10, 24).0 == 2023 列表:任意⻓度的相同类型数据的集合 例如: 字符的序列: Cons('H', Cons('i', Cons('!', Nil))) Cons : construct 的缩写 3 笛卡尔积 ⼀个多元组类型的元素即是每个组成类型的元素构成的有序元素组 集合的笛卡尔积,⼜称积类型 例:扑克牌的所有花⾊:{ } 4 结构体 元组的问题在于,难以理解其所代表的数据 address: String; postal: Int } 通过名称,我们能明确数据的信息以及对应字段的含义 5 结构体的定义 结构体的定义形如 struct <结构体名称> { <字段名>: <类型> ; ... } struct PersonalInfo { name: String; age: Int} 定义结构体的值时,形如 { <字段名>: <值> , ... } let info:0 码力 | 26 页 | 435.86 KB | 1 年前3基于 Rust 语言编写的可编程的全球分布式 MQTT 服务器 王文庭
0 码力 | 31 页 | 3.95 MB | 1 年前3C++高性能并行编程与优化 - 课件 - 10 从稀疏数据结构到量化数据类型
从稀疏数据结构到量化数据类型 by 彭于斌( @archibate ) 往期录播: https://www.bilibili.com/video/BV1fa411r7zp 课程 PPT 和代码: https://github.com/parallel101/course 本课涵盖:稀疏矩阵、 unordered_map 、空间稀 疏网格、位运算、浮点的二进制格式、内存带宽优 化 面向人群:图形学、 >> 3 。 >> 2 = 位运算 >> 对负数的处理 signed 类型的 >> n 会把最高位复制 n 次。 因为补码的特性,这导致负数 >> 的结果仍是负 数。 这样就实现了和 Python 一样的始终向下取整除 法。 >> 2 = unsigned 类型的位运算 >> 不一样 而 unsigned 类型的 >> n 会不会复制最高位, 只是单纯的位移,这会导致负数的符号位单独被位 只是单纯的位移,这会导致负数的符号位单独被位 移,补码失效,造成结果不对。 unsigned 类型的 >> 会生成 shr 指令, signed 类型的 >> 会生成 sar 指令。 我们需要负方向无限延伸的稀疏数据结果,那就只 要 signed 那个就行。 >> 2 = 没有重合时可以用高效的加法:位运算 | • 如果可以保证 a 和 b 满足 a & b = 0 , 如: • 1011000 和 00001100 码力 | 102 页 | 9.50 MB | 1 年前3MoonBit月兔编程语言 现代编程思想 第五课 数据类型:树、二叉树、二叉搜索树、AVL树
B-Tree:适合顺序访问,利于硬盘存储数据 R-Tree:存储空间⼏何结构 …… 8 数据结构:⼆叉树 ⼆叉树要么是⼀棵空树,要么是⼀个节点;它最多具有两个⼦树:左⼦树与右⼦树 叶节点的两个⼦树都是空树 基于递归枚举类型的定义(本节课默认存储数据为整数) 1. enum IntTree { 2. Node(Int, IntTree, IntTree) // 存储的数据,左⼦树,右⼦树 3. Empty 40 码力 | 29 页 | 1015.26 KB | 1 年前3Go Web编程
件与库的开头。 Go是静态类型的语言,它的类型系统没有层级。因此用户不需要在定义类型之间的关系上花费时间,这样感 觉起来比典型的面向对象语言更轻量级。 Go完全是垃圾回收型的语言,并为并发执行与通信提供了基本的支持。 按照其设计,Go打算为多核机器上系统软件的构造提供一种方法。 Go是一种编译型语言,它结合了解释型语言的游刃有余,动态类型语言的开发效率,以及静态类型的安全性。它也打 算成为现代 算成为现代的,支持网络与多核计算的语言。要满足这些目标,需要解决一些语言上的问题:一个富有表达能力但轻 量级的类型系统,并发与垃圾回收机制,严格的依赖规范等等。这些无法通过库或工具解决好,因此Go也就应运而生 了。 在本章中,我们将讲述Go的安装方法,以及如何配置项目信息。 目录 目录 links links 目录 下一节: Go安装 6 1.1 Go 安装 1.1 Go 安装 PATH=$PATH:$GOROOT/bin 如何判断自己的操作系统是32位还是64位? 如何判断自己的操作系统是32位还是64位? 我们接下来的Go安装需要判断操作系统的位数,所以这小节我们先确定自己的系统类型。 Windows系统用户请按Win+R运行cmd,输入systeminfo后回车,稍等片刻,会出现一些系统信息。在“系统类 型”一行中,若显示“x64-based PC”,即为64位系统;若显示“X86-based0 码力 | 295 页 | 5.91 MB | 1 年前3《Java 应用与开发》课程讲义 - 王晓东
. . . . . . . . . . . . . . . . . . . . . . . 10 2.1.1 数据类型 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 2.1.2 数据类型转换 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78 7.5 枚举类型 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80 iv 7.5.1 枚举类型的概念 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80 7.5.2 遍历枚举类型常量值 . . . . . . . . . . . . . . . . . . . . . . . . . . 81 7.5.3 组合使用枚举类型与 switch . . . . . . . . . . . . . . . . . . . . . . 81 7.6 课后习题 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 820 码力 | 330 页 | 6.54 MB | 1 年前3Python3 基础教程 - 廖雪峰
........................................................................................... 32 数据类型和变量 ............................................................................................... 总的来说,Python 的哲学就是简单优雅,尽量写容易看明白的代码,尽 量写少的代码。如果一个资深程序员向你炫耀他写的晦涩难懂、动不动 就几万行的代码,你可以尽情地嘲笑他。 那 Python 适合开发哪些类型的应用呢? Python3 基础教程【完整版】 http://www.yeayee.com/ 10/531 首选是网络应用,包括网站、后台服务等等; 其次是许多日常需要的小工具,包括系统管理员需要的脚本任务等等; Tab 和空格。 数据类型和变量 数据类型 Python3 基础教程【完整版】 http://www.yeayee.com/ 34/531 计算机顾名思义就是可以做数学计算的机器,因此,计算机程序理所当 然地可以处理各种数值。但是,计算机能处理的远不止数值,还可以处 理文本、图形、音频、视频、网页等各种各样的数据,不同的数据,需 要定义不同的数据类型。在 Python 中,能够直接处理的数据类型有以0 码力 | 531 页 | 5.15 MB | 1 年前3Java 应用与开发 - HTTP 会话跟踪技术
中国海洋大学 November 25, 2018 大纲 会话基本概念 会话跟踪技术 本节习题 学习目标 1. 掌握会话的基本概念,理解会话不是仅仅使用 HTTP 协议 就能够保证的,而是客户端浏览器和服务器端在 HTTP 协 议之上采用额外的技术协同的结果。 2. 掌握常用的会话跟踪技术,了解采用 URL 重写维持会话跟 踪的方法;理解 Cookie 和 Session 的协同机制,掌握使用 Cookie 会话基本概念 会话跟踪技术 本节习题 什么是会话 ▶ 在 Web 应用中把客户端浏览器开始请求 Web 服务器,访问 不同 Web 文档进行请求/响应,到结束访问的一系列过程称 为会话,即一次会话(Session)。 ▶ 当用户访问第一个 Java Web 组件时,Java EE Web 服务器 自动为用户创建一个会话对象。 例如,当当网进行图书浏览、购买、完成结算的全过程可能是一 次会话;登录 协议的会话跟踪技术,用 于记录会话的状态信息。 O 什么是会话跟踪 ▶ 在一个会话内,当用户在次访问时,服务器需要能够定位是 先前访问的同一个用户。 ▶ Web 应用需要在用户访问的一个会话内,让 Web 服务器保 存客户的信息(如客户的账号或客户的购物车),称为会话 跟踪,即 Web 服务器必须使用某种技术保存客户的信息。 大纲 会话基本概念 会话跟踪技术 本节习题 Java EE Web0 码力 | 54 页 | 824.47 KB | 1 年前3
共 476 条
- 1
- 2
- 3
- 4
- 5
- 6
- 48