Debian中国 为您找到相关结果 51

Python的闭包和装饰器

什么是装饰器? 装饰器(Decorator)相对简单,咱们先介绍它:“装饰器的功能是将被装饰的当作参数传递给与装饰器对应的(名称相同的),并返回包装后的被装饰的”,听起来有点绕,没关系,直接看示意图,其中 a 为与装饰器 @a 对应的, b 为装饰器修饰的,装饰器@a的作用是: 简而言之:@a 就是将 b 传递给 a(),并返回新的 b = a(b) 栗子: 上面使用@dobi来表示装饰器,其等同于:qinfeng = dobi(qinfeng)因此装饰器本质上就是个语法糖,其作用为简化代码,以提高代码可读性,运行上段代码的结果为: 解析过程是这样子的: 1.python 解释器发现@dobi,就去调用与其对应的( dobi ) 2.dobi 调用前要指...阅读全文

博文 2014-07-23 17:06:38 debian.cn

Rust 1.39.0 发布,async/.await 稳定了

Rust 1.39.0 已经发布。此版本的亮点包括 async/.await,对 match 守卫 by-move 绑定的共享引用,以及参数的属性。 async/.await 稳定 此版本 async/.await 特性已经稳定,这意味着现在可以定义 async 和块,并进行 .await 操作。 async 通过 async fn 引入,被调用时会返回一个 Future,该 Future 是一个会挂起的计算,可以使用 .await 运行并完成计算。而除了 async fn,async{…} 和 async move{…} 块也可以用来定义“异步文字”,它们的行为像闭包。 match 守卫引用 by-move 绑定 在 Rust 中进行模式匹配时,一个变量,也就是“绑定”,可以...阅读全文

博文 2019-11-11 09:44:43 debian.cn

Kubernetes调度算法浅析

给每个节点和待分配的pod进行打分。1.首先可用的node和pod会被打分进行打分,分数在0-10分之间。并且每个打分还有一个权重值。那么一个可用的node节点最后的总分就是:Σ打分*的权重值。 node节点总分 =(1的打分 * 1权重值)+......+(n的打分 * n的权重值) 2.打分即优先级的种类: 这里只介绍了一部分的优先级算法,还有许多算法在这里未解释有兴趣的小伙伴可以上网查一下哦。 小结 kube-scheduler组件将整个集群资源调配变得很科学。比如该如何分配pod的副本到其他的node节点中,或者如何分配pod使得集群运转的更加高效。此外kube-scheduler还支持第三方的调度器进行扩展,所以是一种插件化的实现。...阅读全文

博文 2020-12-20 11:01:10 debian.cn

WebAssembly时代 Rust也想成为Web语言

-bindgen 的高级功能包括: 导入 JavaScript 结构、和对象以在 WebAssembly 中调用。开发人员可以调用结构中的方法和访问属性。 将 Rust 结构和导出到 JavaScript。可以导出一个 Rust struct,它会变成一个 JavaScript class,之后就可以传递结构而不是整型。 目前,WebAssembly 仅支持四种类型:两种整型和两种浮点型。但 JavaScript 和 Rust 开发人员经常使用更丰富的类型,例如 Rust 开发人员使用 Result 类型进行错误处理,这样,使用 wasm-bindgen 的时候,JavaScript 可以使用字符串或 Rust 调用 Rust API 来捕获 JavaScript 异常。通过消除...阅读全文

博文 2018-04-10 12:38:26 debian.cn

linux - Go语言中文网

是对于字符设备来说,执行直接 I/O 是不可行的,Linux 2.6 提供了 get_user_pages() 用于实现直接 I/O。本小节会分别对这两种情况进行介绍。 内核为块设备执行直接 I/O 提供的支持 要在块设备中执行直接 I/O,进程必须在打开文件的时候设置对文件的访问模式为 O_DIRECT,这样就等于告诉操作系统进程在接下来使用 read() 或者 write() 系统调用去读写文件的时候使用的是直接 I/O 方式,所传输的数据均不经过操作系统内核缓存空间。使用直接 I/O 读写数据必须要注意缓冲区对齐( buffer alignment )以及缓冲区的大小的问题,即对应 read() 以及 write() 系统调用的第二个和第三个参数。这里边说的对齐指的是文件系统块大小...阅读全文

博文 2021-01-26 18:17:30 Golang中文社区

Go 1.9 的新特性介绍

可能有问题。自go 1.6之后, 并发地读写map会报错,这在一些知名的开源库中都存在这个问题,所以go 1.9之前的解决方案是额外绑定一个锁,封装成一个新的struct或者单独使用锁都可以。 群众的呼声是响亮的,并发map在项目中大量使用,所以Go 1.9中在包sync加入了新的map, 查询、存储和删除都是平均常数时间,可以并发访问。 Monotonic Time 先前的time包的实现都是基于wall time的,但是当机器的时钟调整后会有问题。 比如在计算duration的时候,如果时钟往回拨,可能导致end时间比start时间还早。 所以Go 1.9使用monotonic Time来实现大部分的time中的,在计算duration的时候不会出现因为时钟调整出现的误差了。 设计文...阅读全文

博文 2021-01-28 17:50:34 debian.cn

MySQL 8 第一个正式版发布:更好的性能

("hot spot"热点竞争问题)工作负载。 2. NoSQL:MySQL 从 5.7 版本开始提供 NoSQL 存储功能,目前在 8.0 版本中这部分功能也得到了更大的改进。该项功能消除了对独立的 NoSQL 文档数据库的需求,而 MySQL 文档存储也为 schema-less 模式的 JSON 文档提供了多文档事务支持和完整的 ACID 合规性。 3. 窗口(Window Functions):从 MySQL 8.0 开始,新增了一个叫窗口的概念,它可以用来实现若干新的查询方式。窗口与 SUM()、COUNT() 这种集合类似,但它不会将多行查询结果合并为一行,而是将结果放回多行当中。即窗口不需要 GROUP BY。 4. 隐藏索引:在 MySQL 8.0 中,索引可以被...阅读全文

博文 2018-04-20 10:40:18 debian.cn

SQLite 3.30.0 发布,使用最广泛的数据库引擎

SQLite 3.30.0 发布了,SQLite 是一个 C 实现的 SQL 数据库引擎,它的特点是小型、快速、自包含、高可靠性和功能齐全。SQLite 嵌入在所有手机和大多数计算机中,也捆绑在为数众多的其它应用中,是世界上使用量最大的数据库引擎。 此版本更新内容包括: 添加对聚合的 FILTER 子句的支持添加对 ORDER BY 子句中的 NULLS FIRST 和 NULLS LAST 语法的支持增强了 index_info和index_xinfo 编译指示,以提供有关 WITHOUT ROWID 表在磁盘上的表示形式的信息新增 sqlite3_drop_modules() 接口,使应用程序可以禁用不需要的自动加载的虚拟表改进 CLI 中的 .recover dot...阅读全文

博文 2019-10-06 12:03:42 debian.cn

PHP 7.4 有哪些新特性

PHP 7.4 的GA版今天正式发布了。PHP 7.4发布后,PHP 7.3或其它的PHP 7版本都可以升级到PHP 7.4版。 PHP 7.4 的主要特性包括以下几个, 短闭包(short closure)预加载提交性能属性类型限定Improved type variance(不会翻译)三元运算简写数组展开运算新增类的魔术方法:serialization数字分隔符运算优先顺序允许在__toString中抛出异常支持反射引用新增字节分割移除php短标签弃用左关联运算符不再向后兼容的变更 短闭包 短闭包可以减少冗余代码: array_map(function (User $user) { return $user->id; }, $users) array_map(fn...阅读全文

博文 2019-11-29 20:45:16 debian.cn

Web前端知识体系精简

和undefined是JS中的两个特殊类型,object是引用类型。 Javascript可以通过typeof来判断基础数据类型,但不能够准确判断引用类型, 因此需要用到另外一个方法,那就是Object的toString,关于数据类型及其判断可以参考以下博客:数据类型详解 和 判断JS数据类型的四种方法 JS常用的内置对象有Date、Array、JSON,RegExp等。 一般来讲,Date和Array用的最频繁,JSON可以对对象和数组进行序列化和反序列化,还有一个作用就是实现对象的深拷贝。 RegExp即正则表达式,是处理字符串的利器。 关于数据类型和正则表达式的介绍可以参考博客:ES5对数组增强的9个API 和 JS正则表达式精简 1、原型链 Javascript虽然没有继承概念...阅读全文

博文 2021-01-28 17:50:33 debian.cn

Kiwi TCMS 7.1 发布:开源测试用例管理系统

新方法 Bug.emove() Bug fixes 在 Bugs 页面中添加“删除”菜单项 Fixes #1153 Issue #1153从 TestExecution 删除超链接时,隐藏页面中的 UI 元素修复 TP 内 TC 数目大于 100 时删除 TC 失败 Refactoring 从表单字段中删除标签将多个视图从基于的视图重构为基于类的视图更新 TCMs/core/test/ 中的旧测试,并确保它们不会被测试运行程序忽略删除空类 XMLRPCBaseCaseForm删除 rpc.forms.UpdateCaseForm,以支持 XMLRPCUpdateCaseForm 完整更新列表请见发布说明。...阅读全文

博文 2019-10-31 09:34:07 debian.cn

2017 年会是 Serverless 爆发之年吗

务(Backend-as-a-Service,BaaS),或移动后端即服务(MobileBackend-as-a-service,MBaaS)。 现在,无服务器架构是指大量依赖第三方服务 (也叫做后端即服务,即“BaaS”) 或暂存容器中运行的自定义代码 (即服务,即“FaaS”) 的应用程序,是无服务器架构中抽象语言运行时的最小单位,在这种架构中,我们并不看重运行一个需要多少 CPU 或 RAM 或任何其他资源,而是更看重运行所需的时间,我们也只为这些的运行时间付费。无服务器架构中可以多种方式触发,如定期运行的定时器、HTTP 请求或某些相关服务中的某个事件。 Serverless 案例 以带有服务功能逻辑的传统面向客户端的三层应用为例(一个典型的电子商务应用网...阅读全文

博文 2021-01-28 17:50:27 debian.cn

Golang 中的 channel 通道详解

shrinking. lock mutex } 创建一个channelvar name chan elemType //声明中需要指定channel的具体类型 eg. var c chan int 声明了一个int的channel 我们使用make()方法创建,可以指定chan的缓存区大小。c := make(chan int, 10) //make创建一个int类型的channel,容量大小为10 c1 := make(chan int) // 无缓存的channel make()最后会调用底层的makechan(),返回一个通道的指针。当我们复制一个channel或用于参数传递时,我们只是拷贝了一个channel引用,因此调用者和被调用者将引用同一个channel对象。和其它的引用类型一样...阅读全文

Kubernetes源码探疑:Pod IP泄露排查及解决方法

。 syncLoop收到pleg channel传来事件后,进入相应的sync同步处理流程。对于PLEG事件来说,对应的处理是HandlePodSyncs。这个开启一个新的pod worker goroutine,获取pod最新的podCache信息,然后进入真正的同步操作:syncPod。 syncPod将podCache中的pod最新状态信息(podStatus)转化成Kubernetes API PodStatus结构。这里值得一提的是,syncPod会通过podCache里各个容器的状态,来计算出Pod的状态(getPhase),比如Running,Failed或者Completed。然后进入Pod容器运行时同步操作:SyncPod,即将当前的各个容器状态与Pod API定义的...阅读全文

Rust的模块化系统: 包Packages, 箱Crates, 和模块Modules

包 Packages: Cargo提供的让我们创建, 测试和分享Crates的工具.箱 Crates: 提供类库或可执行文件的模块树模块 Modules and use: 管理和组织路径, 及其作用域和访问权限路径 Paths: 如结构体(structs), (function), 或模块(module)等事物的命名方式包(Packages)和箱(Crates)包(Package)通过Cargo创建. 每一个包(Package)都有一个Cargo.toml文件. 包(Package)包含箱(Crates)的规则如下:只能包含0或1个类库箱(library crates)可以包含任意多个二进制箱(binary crates)至少有一个箱(Crate), 可以是类库箱(library...阅读全文

博文 2021-02-20 08:49:51 知乎

nsenter 及 Linux命名空间 简介

] lrwxrwxrwx 1 root root 0 Nov 27 05:02 pid -> pid:[4026531836] lrwxrwxrwx 1 root root 0 Dec 15 11:11 user -> user:[4026531837] lrwxrwxrwx 1 root root 0 Dec 15 11:11 uts -> uts:[4026531838] 系统调用 clone clone是Linux的系统调用,用于创建一个新的进程。 clone 和 fork 比较类似,但更为精细化,比如说使用 clone 创建出的子进程可以共享父进程的虚拟地址空间,文件描述符表,信号处理表等等。不过这里要强调的是,clone 还能为新进程指定命名空间。clone的语法: #define...阅读全文

博文 2020-12-15 11:22:44 debian.cn

Golang Context 探究

在用 Golang 开发过程中,我们一定能在代码里很多或方法都会传递 context, 也会经常遇到这样的报错 context deadline exceeded。你有想过或去探究过 context 到底是什么吗,为什么会遇到上述的报错。在这里我们就分析一下 context 是什么及用途。 首选 Golang 中的 context 值得是 context.Context 接口,Golang 在 1.7 版本中引入标准库的接口。context 主要用来在 goroutine 之间传递上下文信息,包括:取消信号、截止时间、key-value 等。 Context 定义 Context 接口定义如下 1 2 3 4 5 6 7 8 9 10 type Context interface...阅读全文

博文 2021-02-25 09:27:27 lxkaka

Prometheus 常用 PromQL 语句样例

PromQL 是 Prometheus 提供的一个式的表达式语言,可以使用户实时地查找和聚合时间序列数据。表达式计算结果可以在图表中展示,也可以在 Prometheus表达式浏览器中以表格形式展示,或者作为数据源,以 HTTP API 的方式提供给外部系统使用。PromQL 虽然以 QL 结尾,但是它不是类似 SQL 的语言,因为在时间序列上执行计算类型时,SQL 语言相对缺乏表达能力。而 PromQL 语言表达能力非常丰富,可以使用标签进行任意聚合,还可以使用标签将不同的标签连接到一起进行算术运算操作。内置了时间和数学等很多可以使用 选择序列选择指定指标名称的序列最新样本: my_metric_name选择指定指标名称序列5分钟的样本范围: my_metric_name[5m]筛...阅读全文

博文 2021-02-09 11:07:15 51CTO博客

Node.js 10.0.0 正式版发布 大量改进和修复

Node.js 10.0.0 正式发布,这是自 Node.js Foundation 开展以来的第七个主要版本,并将在 2018 年 10 月成为下一个 LTS 分支。 新版本自带定制化的 Node-ChakraCore 引擎,其功能亮点包括: 全面支持 N-API 可轻松通过新的 Visual Studio Code Extension 进行 Time-Travel 调试 支持 TTD 的生成器和异步 支持 Inspector 协议 增强稳定性和其他各种改进 Node.js 10.0.0 还包含以下更新: N-API native addons API 已从实验状态毕业 Async_hooks 过时的实验性 async_hooks API 已被删除 Child Process 忽略未...阅读全文

博文 2018-04-25 14:24:27 debian.cn

ThinkPHP v5.1.0 发布 — 新年献礼

ThinkPHP V5.1 —— 12 载初心不改,你值得信赖的 PHP 框架。期盼已久的 V5.1.0 版本今日正式发布,祝大家 2018 年新年快乐! ThinkPHP 自诞生以来一路走来已经 12 载,初心不改,并将继续努力,感谢大家的一路支持和贡献! 特性 5.1 版本主要特性包括: 引入容器和 Facade 支持 依赖注入完善和支持更多场景 重构的(对象化)路由 路由跨域请求支持 支持注解路由 配置和路由目录独立 取消系统常量 助手增强 类库别名机制 模型和数据库增强 验证类增强 模板引擎改进 支持 PSR-3 日志规范 安装 5.1 版本开始官方不提供下载包,请使用 composer 安装: composer create-project topthink/think tp...阅读全文

博文 2018-01-03 08:03:24 debian.cn

Postgres 10 开发者新特性

),但是这些选项可以根据需要进行配置。 Postgres 10另一个重要的新特性是支持JSON和JSONB类型列的全文搜索。一旦我们创建了一个特定语言的全文索引,我们就可以通过JSON字段对值进行直接搜索。在JSON列上的全文索引与其他列是类似的,因此我们的查询需要使用to_tsquery和to_tsvector的文本搜索的语法。 标识列(Identity columns)和自增列(Auto-increment columns)也是Postgres 10进行改进的一个地方。新的实现方法会有一点冗长,但是它是符合SQL标准的,使得在不同数据库之间的迁移会更加容易。最重要的是,使用Postgres 10时,我们在从一个不同的id重启时,不再需要修改序列(alter sequences)了,但...阅读全文

博文 2017-12-30 11:46:16 debian.cn

不与版本帝争,16 年后 SciPy 1.0 版终发布

SciPy 是一个开源的 Python 算法库和数学工具包。SciPy 包含的模块有最优化、线性代数、积分、插值、特殊、快速傅里叶变换、信号处理和图像处理、常微分方程求解和其他科学与工程中常用的计算。 10月25日,SciPy 团队成员 Ralf Gommers 在 Python 官方邮件组发文宣布 SciPy 1.0 终于发布了。 Ralf 称,很高兴宣布 SciPy 1.0 的发布,自从 0.1 版面世 16 年后,1.0 版姗姗来迟。这是一次漫长而富有成效的旅程,期待在未来有更多令人激动的特性。 为什么现在才发布 1.0 版呢? Ralf 认为版本号应当体现出项目的成熟程度,SciPy 是一个成熟且稳定的库,已经在生产环境长期大量使用很久了。从这个角度来说,1.0 版来晚了。 最...阅读全文

博文 2017-10-26 13:54:33 debian.cn

王垠:如何掌握所有的程序语言

吗?你不能。你得看看它里面装的是什么型号的处理器,有多少个核,主频多少,有多少 L1 cache,L2 cache……,有多少内存和硬盘,显示器分辨率有多大,显卡是什么 GPU,网卡速度,等等各种“配置”。有时候你还得看各个组件之间的兼容性。 这些配置对应到程序语言里面,就是所谓“语言特性”。举一些语言特性的例子: 变量定义 算术运算 for 循环语句,while 循环语句 定义,调用 递归 静态类型系统 类型推导 lambda 面向对象 垃圾回收 指针算术 goto 语句 这些语言特性,就像你在选择一台电脑的时候,看它里面是什么配置。选电脑的时候,没有人会说 Dell 一定是最好的,他们只会说这个型号里面装的是 Intel 的 i7 处理器,这个比 i5 的好,DDR3 的内...阅读全文

博文 2017-07-10 10:13:17 debian.cn

Go 1.8 正式发布 标准库有显著变化和性能提升

务器现在还支持正常关机了,允许服务器通过在服务所有正在运行的请求之后关闭,而最小化停机时间。 上下文(添加到Go 1.7中的标准库)提供了取消和超时机制。Go 1.8在标准库中添加了更多对上下文的支持,包括数据库/ sql和net包以及net / http包中的Server.Shutdown。 现在使用新添加的Slice在排序包中对切片进行排序更简单。例如,要通过“名称”字段对结构体片段进行排序: sort.Slice(s,func(i,j int)bool {return s [i] .Name 更多新版本的添加、改进和修复内容,以及上面列出的改进的详细信息请查看Go 1.8发行说明。 为了庆祝发布,世界各地的Go用户组都在本周举办发布会,这已经成为Go社区的一个传统,所以如果你错过了...阅读全文

博文 2021-01-28 17:50:22 debian.cn

Go 1.10 发布说明草案:预计于 2018 年 2 月发布

) 也已进行更新,它将会放松语法 (syntax) 的规则来允许任何类型表达式作为接收方,这与编译器已经实现的特性相匹配。例如 struct{io.Reader}.Read,如果编译器已经接受并且现在被语言语法所允许,它是一个有效的表达式。 运行时 TODO:不从 Go 没有创建的锁定线程或线程中启动新线程。LockOSThread/UnlockOSThread 现在是嵌套的。LockOSThread + return 可杀掉线程。 堆栈跟踪不再包含隐式封装(以前被标记为 ),除非封装本身出现错误。 GOMAXPROCS 设置不再有限制(在 Go 1.9 中,限制是 1024) 性能 性能方面的改变较多。由于垃圾收集器的加速,将会生成更好的代码以及核心库中的优化...阅读全文

博文 2017-11-18 13:59:12 debian.cn

gRPC 1.23.0 发布,Google高性能 RPC 框架

器支持)移动到 Grpc.Core.Api(对于 v1.23.x 分支)(#19853)重构 ChannelCredentials 并移到 Grpc.Core.Api (#19712)C# 将主要版本提升为 2.x (#19796)添加 ChannelBase,更改 ClientBase 构造参数 (#19599)删除 System.Interactive.Async 依赖项 (#19059)不要将 shutdownRef 计数用于同步完成队列 (#19629)C# – 从取消注册中删除 allocation 和 boxing (#19610)csharp:删除 Timespec 上的双框 (#19525)C#:添加 System.Memory 依赖项并在内部对所有目标框架使用 Span...阅读全文

博文 2019-08-18 18:31:20 debian.cn

SonarQube 8.4 发布,分析时间最多可减少 80%

类别的覆盖范围:A2-身份验证失败、A3-敏感数据暴露、A4-XML 外部实体(XXE)和 A6-安全性错误配置。 XXE for C、C++ 和不安全的使用 除了 Python,C 和 C++ 中也添加了 XXE 检测功能。 Java 和 C# 不安全反序列化检测 添加了针对 C# 和 Java 的反序列化漏洞的检测。不过针对 Java,这是一项商业功能。 22 条新的 Python 规则,更好的类型处理、Flake8 支持 Python 增加了 14 条新的 Bug 规则和 8 条新的 Code Smells,其中包括 4 条有关类型检查的规则。此外,Python 分析现在可以理解 TypeShed 类型,因此现有规则变得更加智能。同时,Flake8 用户现在可以轻松导入这些问题...阅读全文

博文 2020-07-13 12:55:22 debian.cn

linux下查看系统socket读写缓冲区_eyucham的专栏

系统提供的socket缓冲区大小为8K,你可以将之设置为64K,尤其在传输实时视频时。 socket发送数据时候先把数据发送到socket缓冲区中,之后接受再从缓冲区中取数据,如果发送端特别快的时候,缓冲区很快就被填满(socket默认的是1024×8=8192字节),这时候我们应该根据情况设置缓冲区的大小,可以通过setsockopt实现 #include #include #include #include #include #include #include #include int main...阅读全文

博文 2021-01-26 16:21:35 CSDN博客

PostgreSQL 13 正式版发布

-ahead logs)之前将其删除,现在可在 PostgreSQL 13 中进行调整,以指定要保留的 WAL 文件的最大数量, 有助于避免磁盘空间不足错误。 PostgreSQL 13 还增加了更多让管理员可以监控数据库活动的方法,包括从 EXPLAIN 中查看 WAL 使用情况的统计信息、流式基础备份的进度,以及 ANALYZE 命令的进度。此外,可以使用新的 pg_verifybackup 命令验证 pg_basebackup 命令输出的完整性。 应用开发 PostgreSQL 13 对来自不同数据源的 PostgreSQL 数据类型进行了优化。此版本在其 SQL/JSON 路径支持中增加了datetime(),它可以将有效的时间格式(如 ISO 8601 字符串)转换为...阅读全文

博文 2020-10-04 20:07:23 debian.cn

深入了解Docker背后的namespace技术

namespace上挂载点东西。比如在/mytmp下挂载新的 tmpfs。我们在C代码中执行mount命令,并把需要新挂载的挂载点作为参数写进去。为了达到这个目标,我们需要在 child_exec中调用execvp之前增加代码,代码如下: // child_exec is the func that will be executed as the result of clone static int child_exec(void *stuff) { struct clone_args *args = (struct clone_args *)stuff; if (mount("none", "/mytmp", "tmpfs", 0, "") != 0) { fprintf(stderr...阅读全文

博文 2015-05-17 10:03:00 debian.cn

UCloud 叶理灯 谈:Docker、K8S 和 Serverless

FaaS,有一个对标的产品叫 Lambda。 Serverless 出现的动力是,由于云计算的发展,带来了如对象存储等很多丰富的中间件,Serverless 概念的提出是希望应用开发者可以不用写后端逻辑,直接把逻辑写在客户端,组合云上的一些服务来完成业务逻辑,这样就没有管理后端资源的负担了。但是后来发现很多时候还是需要后端代码的,所以就演变成如果有后端代码,就拆成,托管在 FaaS 服务中,这样的话,你依然是不用管理服务器的,你用的还是一个个服务,没有服务器管理负担。 这个概念在不断进步,2017 年的时候 AWS 提出了一个新的概念,重新定义了什么叫 Serverless,只要一个服务具备了四方面特性:免运维、按需付费、高可用和自动扩容,这个服务就是个 Serverless 的服务。所以...阅读全文

博文 2019-06-14 08:28:49 debian.cn

聊聊很重要的内核技术eBPF

查是BPF程序的空运行。这意味着验证者将尝试分析程序将要执行的每条指令,以确保它不会执行任何无效的指令。此执行还将检查所有内存指针是否均已正确访问和取消引用。最后,空运行向验证程序通知程序中的控制流,以确保无论程序采用哪个控制路径,它都会到达BPF_EXIT指令。为此,验证程序会跟踪堆栈中所有访问过的分支路径,并在采用新路径之前对其进行评估,以确保它不会多次访问特定路径。经过这两项检查后,验证者认为程序可以安全执行。 3) hook : 由于eBPF是事件驱动的,所以ebpf是作用于具体的hook的。根据不同的作用,常用的有XDP,trace,套接字等。 4)帮助:eBPF程序无法调用任意内核功能。允许这样做会将eBPF程序绑定到特定的内核版本,并使程序的兼容性复杂化。取而代之的是...阅读全文

博文 2020-08-16 11:08:44 debian.cn

五种绕过 Linux 命令别名的方法

或显示关于命令的信息。它带参数运行命令,会阻止 shell 查询或者别名,或者显示有关给定命令的信息。 方法 5 - 使用 unalias 命令的说明 要从当前会话的已定义别名列表中移除别名,请使用 unalias 命令: unalias mount 要从当前 bash 会话中删除所有别名定义: unalias -a 如果要永久删除定义的别名,则必须删除别名的定义语句,确保你更新你的 ~/.bashrc 或 $HOME/.bash_aliases : vi ~/.bashrc #或者执行 vi $HOME/.bash_aliases 想了解更多信息,参考这里的在线手册,或者输入下面的命令查看: man bash help command help unalias help alias...阅读全文

博文 2018-03-08 13:33:02 debian.cn

钉钉发送报警消息的Python实现

] else: return '' 需要先上传文件获得media_id,然后使用media_id将文件发送给用户。另外,这里用到了poster,可使用pip安装: pip install poster 之后引入multipart_encode和register_openers: from poster.encode import multipart_encode from poster.streaminghttp import register_openers 给群会话发送消息 与给用户发送信息类似,区别是需要群会话id,而不是用户列表,以发送文本消息为例,代码如下: def send_text_to_chat(access_token, chat_id, text): msg_type, msg...阅读全文

博文 2018-04-27 08:51:33 debian.cn

Go 公布 2.0 设计草案:规模化和扩展性、支持泛型

,Go 1 更多的是确保能快速构建包含很多独立软件包的程序。Go 2 的目标是通过允许带有类型参数的参数多态来解决编写 Go 库的问题,这些问题抽象出了不必要的类型细节。 此外,除了预期的容器类型之外,开发团队还希望能编写有用的库来操作任意的 map 和 channel 值。理想方案是编写能够同时操作 [ ]byte 和 string 值的多态。 type List(type T) []T func Keys(type K, V)(m map[K]V) []K 更多细节请查阅Golang 2 设计草案页面。...阅读全文

博文 2018-09-01 18:39:47 debian.cn

Golang 面试题搜集

/interview-go/blob/master/question/q011.md) - [定时与 panic 恢复](https://github.com/lifei6671/interview-go/blob/master/question/q012.md) - [为 sync.WaitGroup 中Wait支持 WaitTimeout 功能.](https://github.com/lifei6671/interview-go/blob/master/question/q013.md) - [七道语法找错题目](https://github.com/lifei6671/interview-go/blob/master/question/q014.md) - [golang 并发题目测试...阅读全文

分布式 NewSQL 数据库 TiDB

#2342TiFlash添加上报 DeltaTree 引擎读写负载相关 metrics 信息支持 fromUnixTime 和 dateFormat 下推默认禁用粗粒度索引过滤器TiDB Ansible新增 TiFlash 监控 #1253 #1257优化 TiFlash 配置参数 #1262 #1265 #1271优化 TiDB 启动脚本 #1268 Bug 修复 TiDB修复 merge join 在某些场景下 panic 的问题 #15920修复在计算选择率时重复考虑某些表达式的问题 #16052修复极端情况下 load 统计信息可能出现的 panic 的问题 #15710修复 SQL query 中存在等价表达式在某些情况下无法识别导致报错的问题 #16015修复从一个数据库中查询另一个数据库的...阅读全文

博文 2020-04-18 22:05:02 3.1.0 发布

Golang 之禅: 如何写优质代码

。 明确处理错误 健壮的程序其实是由处理故障案例的片段组成的,并且需要在故障出现之前处理好。冗余的if err != nil { return err }比出了故障再一个个去处理更有价值。panic 和 recover 也一样。 尽早 return,不要深陷 每次缩进时都会在程序员的堆栈中添加另一个先决条件,这会占用他们短期内存中的 7±2 个片段。避免需要深层缩进的控制流。与其深入嵌套,不如使用守卫子句将成功路径保持在左侧。 并发权留给调用者 让调用者选择是否要异步运行你的库或,不要强制他们使用异步。 在启动 goroutine 之前,要知道它什么时候会停止 goroutines 拥有资源、锁、变量与内存等,释放这些资源的可靠方法是停止 goroutine。 避免包级别的状态 要完成明确和...阅读全文

博文 2020-02-25 20:48:33 debian.cn

Linux Systemd被爆远程漏洞 CVE-2017

"dns_packet_new" 中, 它是一个 dns 响应处理程序组件, 它为本地应用程序提供网络名称解析。 根据星期二发布的一个公告, 当系统试图在攻击者控制的 dns 服务上查找主机名时, 经过精心构造的恶意 dns 响应,可以远程崩溃 " systemd-resolved " 程序。 最终, 大量 dns 响应会溢出目标计算机的缓冲区, 从而使攻击者改写其内存,引发远程代码执行。这意味着攻击者可以通过其恶意的 dns 服务,在目标系统或服务器上,远程执行任何恶意软件。 ubuntu 开发者Chris Coulson在开发规范中这样描述, “直到 233版本的 systemd , certain sizes passed to dns_packet_new in systemd-resolved can...阅读全文

博文 2017-07-02 09:39:36 9445 影响多种Linux系统

Go 泛型的括号选择:[ ] or ( )

Go 语言设计者 Robert Griesemer 和 Ian Lance Taylor 近日在 Golang 官方论坛发帖讨论关于泛型及其括号使用的问题。 他们提到很多人表达了对泛型语法的担忧,特别是在类型参数声明和实例以及泛型的括号选择方面。 常见的计算机键盘提供了四对单字符对称括号,分别是小括号 ( )、方括号 [ ]、花括号 { } 以及尖括号 < >。基于此,他们解释了目前泛型草案在示例代码中使用小括号的原因。首先,Go 使用花括号来划分代码块、复合字面量(composite literals)和一些复合类型,因此几乎不可能在没有严重语法问题的情况下将花括号用于泛型。至于尖括号,解析器在某些情况下要求 <> 需要 unbounded lookahead。 所以只剩下...阅读全文

博文 2020-07-16 10:38:01 debian.cn

Linux Kernel 5.10本周末发布 十个功能盘点

天堂 Switch Joy-Cons 和 Pro 手柄均能在 Linux 平台上通过 USB 和蓝牙模式连接,并支持震动和陀螺仪数据。 9.在安全性方面改进 在安全性方面进行了许多改进,以抵抗外部 PCI Express 设备可能发生的 DMA 攻击;“nosymfollow”安装选项类似于多年来BSD上提供的安装选项; Linux 5.10包括新的static_call(),可帮助您在受Retpolines影响的情况下,ARM Spectre缓解措施已被改写为“ Ghostbusters”工作的一部分。 10.英特尔处理器支持 持续开发并添加对英特尔即将推出的 Rocket Lake 和 Alder Lake 硬件支持。英特尔 Meteor Lake 在 Linux 5.10 中也会包...阅读全文

博文 2020-12-09 10:30:48 debian.cn

Node.js Vs. PHP:你应该选择哪一个

Node.js 早诞生将近20年,所以在文档,API 和代码库等在线资源方面更为丰富。所以很有可能其他人也尝试了你想要用代码完成的事情并从中获得了帮助。另一方面,Node.js 虽然已经得到了开发者和组织的广泛关注,但是它支持开发者开发的资源缺相当少。 8.学习曲线: 编写 Node.js 代码对于新手甚至是专业的 JavaScript 开发人员来说都不是件容易的事情,因为他们需要在入门之前理解一些复杂的概念,比如 web worker 和回调。相反,PHP是一门非常友好的编程语言对于开发 Web 应用程序的新手来说。 Node.js 和 PHP 战斗的结果是相辅相成的,因为这两种技术都有各自的优点和缺点。这大多是相似的情况在比较或选择用于 Web,桌面和移动开发的其他技术时。Node.js 有前途...阅读全文

博文 2017-12-23 23:15:39 debian.cn

Go1.16 新特性:一文快速上手 Go embed

" //go:embed hello.txt var s string func main() { print(s) } 我们首先在对应的目录下创建了 hello.txt 文件,并且写入文本内容 “吃煎鱼”。 在代码中编写了最为核心的 //go:embed hello.txt 注解。注解的格式很简单,就是 go:embed 指令声明,外加读取的内容的地址,可支持相对和绝对路径。 输出结果: 吃煎鱼 读取到静态文件中的内容后自动赋值给了变量 s,并且在主中成功输出。 而针对其他的基础类型,Go embed 也是支持的: //go:embed hello.txt var s string //go:embed hello.txt var b []byte //go:embed hello.txt var f...阅读全文

博文 2021-02-17 08:44:12 CSDN

Go 1.16 即将发布,这些变更你需要知道

bytes, 0 allocs init errors @0.22 ms, 0.004 ms clock, 0 bytes, 0 allocs init strconv @0.24 ms, 0.002 ms clock, 32 bytes, 2 allocs init sync @0.28 ms, 0.003 ms clock, 16 bytes, 1 allocs init unicode @0.44 ms, 0.11 ms clock, 23328 bytes, 24 allocs ... 主要作用是 init 跟踪的支持,以用于 init 调试和启动时间的概要分析,算是一个 GODEBUG 的补充功能点。 简化结构体标签 在 Go 语言的结构体中,我们常常会因为各种库的诉求,需要对结构体的...阅读全文

博文 2021-02-17 08:52:12 CSDN博客

TLS1.3 正式版发布 — 特性与开启方式科普

。TLS1.2具有很强的可配置性,因此一些有安全漏洞的站点为兼容老版本的浏览器而没有关闭那些旧的属性。 TLS1.3信奉“少即是多”哲学,取消了对一些老旧而衰弱的加密方式的支持。这意味着你无法打开那些潜在的漏洞。TLS1.2中原有的大量特性都被删除了,其中大部分特性与那些著名的攻击有关,这些特性包括: RSA 密钥传输 —— 不支持前向安全性 CBC 模式密码 —— 易受BEAST和Lucky 13攻击 RC4 流密码 —— 在HTTPS中使用并不安全 SHA-1 哈希 —— 建议以SHA-2取而代之 任意 Diffie-Hellman 组 —— CVE-2016-0701漏洞 输出密码——易受 FREAK 和 LogJam攻击 TLS1.3 消除了旧版本中糟糕的加密方式,同时降低了旧的攻击方式对其...阅读全文

博文 2018-08-14 14:40:05 debian.cn

深入学习golang — channel

" }() go func() { time.Sleep(time.Second * 2) c2 <- "two" }() for i := 0; i < 2; i++ { select { case msg1 := <-c1: fmt.Println("received", msg1) case msg2 := <-c2: fmt.Println("received", msg2) } } 在C中,我们一般都会传一个超时时间给select,go语言中的select没有该参数,相当于超时时间为0。 主要参考 https://golang.org/doc/effective_go.html 作者:YY哥 出处:http://www.cnblogs.com/hustcat/ 本文版权归作者和博客园共有,欢...阅读全文

博文 2021-01-25 12:39:17 博客园

深入理解Golang之context

available (because the // surrounding function has not yet been extended to accept a Context // parameter). Background和TODO只是用于不同场景下: Background通常被用于主、初始化以及测试中,作为一个顶层的context,也就是说一般我们创建的context都是基于Background;而TODO是在不确定使用什么context的时候才会使用。下面将介绍两种不同功能的基础context类型:valueCtx和cancelCtx。valueCtxvalueCtx结构体type valueCtx struct { Context key, val interface...阅读全文

博文 2021-01-27 09:05:27 知乎

架构师详解 Nginx 架构

线程启动和执行的流程如下:主程序 Master process 启动后,通过一个 for 循环来接收和处理外部信号;主进程通过 fork() 产生子进程,每个子进程执行一个 for 循环来实现 Nginx 服务器对事件的接收和处理。 一般推荐 worker 进程数与 cpu 内核数一致,这样一来不存在大量的子进程生成和管理任务,避免了进程之间竞争 CPU 资源和进程切换的开销。而且 Nginx 为了更好的利用多核特性,提供了 cpu 亲缘性的绑定选项,我们可以将某一个进程绑定在某一个核上,这样就不会因为进程的切换带来 cache 的失效。 对于每个请求,有且只有一个工作进程对其处理。首先,每个 worker 进程都是从 master 进程 fork 过来,在 master 进程里面,先建...阅读全文

博文 2018-05-01 23:10:47 debian.cn

Linux下多线程程序为什么消耗大量虚拟内存

,跑至内存不再增加,果然valgrind显示没有任何内存泄露。反复试验了很多次,结果都是这样。 在多次使用valgrind无果以后,我开始怀疑程序内部是不是用到mmap之类的调用,于是使用strace对mmap,brk等系统的检测: strace -f -e"brk,mmap,munmap" -p $(pidof AuthServer) 其结果如下: [pid 19343] mmap(NULL, 134217728, PROT_NONE, MAP_PRIVATE|MAP_ANONYMOUS|MAP_NORESERVE, -1, 0) = 0x7f53c8ca9000 [pid 19343] munmap(0x7f53c8ca9000, 53833728) = 0 [pid 19343...阅读全文

博文 2015-01-28 10:35:39 debian.cn