Taming the C++ Filter View©2024 by josuttis.com 1 C++ Nicolai M. Josuttis josuttis.com @NicoJosuttis Taming the C++ Filter View September 17, 2024 16:45 - 17:45 MDT ©2024 by josuttis.com 2 C++ Nicolai M. Josuttis • Independent Topics: – Systems Architect – Technical Manager – SOA – X and OSF/Motif Nico Josuttis C++ Filter View @cppcon 2024-09-17 1©2024 by josuttis.com 3 C++ Views C++20 ©2024 by josuttis.com 4 C++ C++20: Output: 0 8 15 47 11 42 1 0 1 8 11 15 42 47 C++20 templateNico Josuttis C++ Filter View @cppcon 2024-09-17 2©2024 by josuttis.com 5 C++ C++20: Views void print(const auto& coll) { for 0 码力 | 43 页 | 2.77 MB | 6 月前3
Unraveling string_view: Basics, Benefits, and Best PracticesC++: string_view: Deep dive Jasmine Lopez Prithvi Okade 1Topics • Motivation • Performance benefits & basics • string_view: Constructors, useful functions • string vs. string_view and their interoperability interoperability • When to use string_view • Using string_view safely • Intro to span • span vs. string_view • Case study of an optimization using string_view. 2Motivation • Consider a function foo will end up calling “2”. And the code will miss the niceties of using the string API set. string_view helps in resolving this problem elegantly.Motivation 4 void foo(const std::string& str); void foo(const0 码力 | 61 页 | 1.11 MB | 6 月前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 年前3
1-Noah-Chen-连接世界的Python社区0 码力 | 24 页 | 2.98 MB | 1 年前3
Golang在接入层长连接服务中的实践-黄欣Golang 在接入层长连接服务中的实践 黄欣 基础平台-架构部 目录 • 背景 • 架构 • 心得 目录 • 架构 • 心得 背景—why 长连接? • 业务场景 – 大量实时计算 • 司机乘客撮合 • 实时计价 – 高频度的数据交互 • 坐标数据 • 计价数据 – App和服务端双向可达 • 上行(抢单) • 下行(派单) 背景—why golang? • 开发效率 rsp || nil So easy, So efficient 心得—coding—实现 • what’s diff? – conn svr • 常驻内存,内存中有个大连接对象map(资源问题) • 请求都是基于连接的(如果模块间存在资源的互相引用,当资源变更的情况 下,容易发生panic)(竟态问题) • 对象编程 – 封装:conn资源(包括goruntine)作为结构体封装起来,保证所有资源 statusLoop() 心得—profiling • Timer优化 • Channel使用优化 心得—timer优化 • 为什么需要优化? – 万级别的连接 – 每个连接上大量的定时任务(心跳检测,注册检测,认证检测) 实际情况:当10w左右连接,什么数据不收发,只有定时器检测心跳超时,cpu 能耗掉一个core • 怎么优化? – 特点: • 秒级别定时任务 • 范围最多60s – 方案:0 码力 | 31 页 | 1.67 MB | 1 年前3
基于 Rust 语言编写的可编程的全球分布式 MQTT 服务器 王文庭0 码力 | 31 页 | 3.95 MB | 1 年前3
Laravel 5.6 中文文档注:要使用这个新特性,必须使用 memcached 或 redis 缓存驱动作为应用默认缓存驱动。此外,所有服务器必须和同一个中心缓存服务器进行通 信。 如果你的应用运行在多个服务器上,现在可以限定只在一台机器上运行调度任务。例如,假设你有一个在每周五晚上生成新报告的调度任务,如果任 务调度器运行在三个服务器上,这个调度任务就会在三台机器上运行并生成同样的报告三次,这样很不优雅,甚至很糟糕! 要指定任 要指定任务只在一台机器上运行,可以在定义调度任务时使用 onOneServer 方法,第一台获取到任务的机器会给这个任务上一把原子级别的锁来阻 止其他服务器同时运行同一个任务: $schedule->command('report:generate') ->fridays() ->at('17:00') 了,但是还有很多其他的小更新比如配置文件或注释的微调,就不会一一指出。你可以通 过 GitHub 比较工具 轻松查看变更以便选择那些对你而言更为重要的更新。 二、快速入门 安装配置 服务器要求 Laravel 框架对 PHP 版本和扩展有一定要求,不过这些要求 Laravel Homestead 都已经满足了,不过如果你没有使用 Homestead 的话(那真是一件 很遗憾的事情0 码力 | 377 页 | 14.56 MB | 1 年前3
Laravel 6.0 中文文档Laravel 的发布周期将保持不变。 兼容 Laravel Vapor Laravel 6.0 提供了对 Laravel Vapor 的兼容,这是一个针对 Laravel 应用的自动扩容无服务器部署平台。Vapor 对在 AWS Lambda 上 管理 Laravel 应用以及与 SQS 队列、数据库、Redis 集群、网络、 CloudFront CDN 进行交互的复杂性进行了抽象。 * * @param \App\User $user * @param \App\Flight $flight * @return mixed */ public function view(User $user, Flight $flight) { return $this->deny('Explanation of denial.'); } 本文档由学院君提供 学院君致力于提供优质 接下来我们可以通过 Gate::inspect 方法获取授权策略的响应,然 后再通过响应示例的 message() 方法获取授权消息: $response = Gate::inspect('view', $flight); if ($response->allowed()) { // 用户被授权可以访问航班... } if ($response->denied()) { echo0 码力 | 1442 页 | 14.66 MB | 1 年前3
Go Web编程s 转换为 []byte 类型 c[0] = 'c' s2 := string(c) // 再转换回 string 类型 fmt.Printf("%s\n", s2) Go中可以使用+操作符来连接两个字符串: s := "hello," m := " world" a := s + m fmt.Printf("%s\n", a) 修改字符串也可写为: s := "hello" s 求 DNS服务器,通过DNS获取相应的域名对应的IP,然后通过IP地址找到IP对应的服务器后,要求建立TCP连接,等浏览 器发送完HTTP Request(请求)包后,服务器接收到请求包之后才开始处理请求包,服务器调用自身服务,返回HTTP Response(响应)包;客户端收到来自服务器的响应后开始渲染这个Response包里的主体(body),等收到全部的内 容随后断开与该服务器之间的TCP连接。 容随后断开与该服务器之间的TCP连接。 图3.1 用户访问一个Web站点的过程 一个Web服务器也被称为HTTP服务器,它通过HTTP协议与客户端通信。这个客户端通常指的是Web浏览器(其实手机端 客户端内部也是浏览器实现的)。 Web服务器的工作原理可以简单地归纳为: 客户机通过TCP/IP协议建立到服务器的TCP连接 客户端向服务器发送HTTP协议请求包,请求服务器里的资源文档 服务器向客户机发送HTT0 码力 | 295 页 | 5.91 MB | 1 年前3
Python3 基础教程 - 廖雪峰用记事本编辑的时候,从文件读取的 UTF-8 字符被转换为 Unicode 字符 到内存里,编辑完成后,保存的时候再把 Unicode 转换为 UTF-8 保存到 文件: 浏览网页的时候,服务器会把动态生成的 Unicode 内容转换为 UTF-8 再 传输到浏览器: 所以你看到很多网页的源码上会有类似的信息, 表示该网页正是用的 http://www.yeayee.com/ 212/531 但是如果我们想创建出类呢?那就必须根据 metaclass 创建出类,所以: 先定义 metaclass,然后创建类。 连接起来就是:先定义 metaclass,就可以创建类,最后创建实例。 所以,metaclass 允许你创建类或者修改类。换句话说,你可以把类看成 是 metaclass 创建出来的“实例”。 ARGS: ['my-pwd', 'test@orm.org', 'Michael', 12345] 可以看到,save()方法已经打印出了可执行的 SQL 语句,以及参数列表, 只需要真正连接到数据库,执行该 SQL 语句,就可以完成真正的功能。 不到 100 行代码,我们就通过 metaclass 实现了一个精简的 ORM 框架。 小结 metaclass 是 Python0 码力 | 531 页 | 5.15 MB | 1 年前3
共 1000 条
- 1
- 2
- 3
- 4
- 5
- 6
- 100













