C++20 镶 SQLC++20 ❤ SQL John R Bandela, MDOverview u SQL u C++ Example u Implementation techniques u fixed_string u meta_struct u Parsing compile time strings into meta_structsOverview v SQL v C++ Example {price_from_user};Avoiding SQL Injection Attacks SELECT orders.id, name, item, price, discount_code FROM orders JOIN customers ON customers.id = customerid WHERE price > ?;SQL Library Options u Traditional Lots of information available u Vulnerable to sql injection of developer not careful u Use dynamic typingDomain Specific Language u Use types to encode SQL u Looks more like regular C++ u Typically requires0 码力 | 46 页 | 775.02 KB | 6 月前3
⽤ egg 孵化你的 SQL 优化器 - 王润基第三届中国Rust开发者⼤会 ⽤ egg 孵化你的 SQL 优化器 王润基 RisingWave 内核开发⼯程师 ? Parser Binder Optimizer Executor SQL AST Logical Plan Physical Plan Table Catalog Storage RisingLight 查询引擎的整体结构 SELECT name, url url FROM t1 JOIN t2 WHERE t1.id = t2.id AND name = ‘Bob’ SQL Logical Plan Physical Plan Projection name, url Filter t1.id = t2.id name = “Bob” Join Scan t1(id, name) Scan t2(id, url) Filter #1 = “Bob” Hash Join #0 = #2 Scan $1.1, $1.2 Scan $2.1, $2.2 Projection #1, #3 ⼀个 SQL 语句优化的例⼦ 基于规则的优化 (RBO) 基于代价的优化 (CBO) 谓词下推 Join Filter A B Join Filter A B Filter Join A Join0 码力 | 39 页 | 6.48 MB | 1 年前3
5.cgo 原理解析及优化实践cgo 原理解析及优化实践 朱德江 蚂蚁集团 MOSN 核心成员 Golang contributor Envoy Golang extension maintainer 公众号 • 开源爱好者 • 十余年网关研发 • OpenResty 老司机(NGINX + LuaJIT) • MOSN 核心成员 • Envoy Golang extension maintainer •0 码力 | 45 页 | 5.74 MB | 1 年前3
MoonBit月兔编程语言 现代编程思想 第十一课 案例:语法解析器与Tagless Final现代编程思想 案例:语法解析器 Hongbo Zhang 1 语法解析器 案例⽬标 解析基于⾃然数的数学表达式: "(1+ 5) * 7 / 2" 转化为单词列表 LParen Value(1) Plus Value(5) Multiply Value(7) Divide Value(2) 转化为抽象语法树 Division(Multiply(Add(Value(1), Value(5)) Value(5)), Value(7)), Value(2)) 计算最终结果:21 语法分析 对输⼊⽂本进⾏分析并确定其语法结构 通常包含词法分析和语法分析 本节课均利⽤语法解析器组合⼦(parser combinator)为例 2 词法分析 将输⼊分割为单词 输⼊:字符串/字节块 输出:单词流 例如: "12 +678" -> [ Value(12), Plus, Value(678) Value(Int); LParen; RParen; Plus; Minus; Multiply; Divide 3. } derive(Debug) 5 解析器组合⼦ 构造可组合的解析器 1. // V 代表解析成功后获得的值 2. // Lexer[V] == (String) -> Option[(V, String)] 3. type Lexer[V] (String) ->0 码力 | 25 页 | 400.29 KB | 1 年前3
ThinkJS 2.2 中文文档项目需要进行扩展。 支持丰富的数据库 ThinkJS 支持 mysql , mongodb , sqlite 等常见的数据库,并且封装了很多操作数据库的接口, 无需手动拼接 SQL 语句,还可以自动防止 SQL 注入等安全漏洞。同时支持事务、关联模型等高级 功能。 代码自动更新 ThinkJS 内置了一套代码自动更新的机制,文件修改后立即生效,不用重启 Node.js 服务,也不用 借助第三方模块。 模块是个通用模块,该模块下存放一些通用的功能,如: 通用的配置,runtime 目录, 启动文件,错误处理控制器等。 注 :该模块下的控制器不能响应用户的请求。 默认模块 默认模块为 home 模块。当解析用户的请求找不到模块时会自动对应到 home 下。 可以通过配置 default_module 来修改默认模块,修改配置文件 src/common/config/config.js : //将默认模块名改为 些通用 的处理。 多级控制器 对于很复杂的项目,一层控制器有时候不能满足需求。这个时候可以创建多级控制器,如: src/home/controller/group/article.js ,这时解析到的控制器为二级,具体为 group/article ,Logic 和 View 的目录与此相同。 使用 async/await 借助 Babel 编译,还可以在控制器里使用 ES7 里的 async/await0 码力 | 277 页 | 3.61 MB | 1 年前3
Go Web编程ks节,包含“目录”,“上一节”和“下一 节”的链接。 代码 代码 代码要go fmt后提交。注释文件注明其所属章节。 如何编译 如何编译 build.go依赖markdown的一个解析包,所以第一步先 go get github.com/russross/blackfriday 这样读者就可以把相应的Markdown文件编译成html文件,执行go build build 4.表单 4.1 处理表单的输入 4.2 验证表单的输入 4.3 预防跨站脚本 4.4 防止多次递交表单 4.5 处理文件上传 4.6 小结 5.访问数据库 5.1 database/sql接口 5.2 使用MySQL数据库 5.3 使用SQLite数据库 5.4 使用PostgreSQL数据库 5.5 使用beedb库进行ORM开发 5.6 NOSQL数据库操作 5.7 小结 6.session和数据存储 Socket编程 8.2 WebSocket 8.3 REST 8.4 RPC 8.5 小结 9.安全与加密 9.1 预防CSRF攻击 9.2 确保输入过滤 9.3 避免XSS攻击 9.4 避免SQL注入 9.5 存储密码 9.6 加密和解密数据 9.7 小结 10.国际化和本地化 10.1 设置默认地区 10.2 本地化资源 10.3 国际化站点 4 10.4 小结 11.错误处理,调试和测试0 码力 | 295 页 | 5.91 MB | 1 年前3
ThinkJS 3.0 中文文档处理用户上传的数据,包含:表单数据、文件等。解析完成后将数据放在 request.body 对象上,方便后续读取。 router 解析路由,解析出请求处理对应的 Controller 和 Action,放在 ctx.controller 和 ctx.action 上,方便后续处理。如果项目是多模块结构,那么还有 ctx.module 。 logic 根据解析出来的 controller 和 action,调用 方法不存在,则试图执行 __call 方法 执行 __after 方法,如果返回 false 则不再执行后续所有的逻辑 通过方法返回 false 来阻断后续逻辑的执行 controller 根据解析出来的 controller 和 action,调用 controller 里的对应的方法。 具体的调用策略和 logic 完全一致 如果不存在,那么当前请求返回 404 action 执行完成时,可以将结果放在 处理报错,开发环境将详细的报错信息显示处理,也可以自定义显示错误页面。 payload 处理表单提交和文件上传,类似于 koa-bodyparser 等 middleware router 路由解析,包含自定义路由解析 logic logic 调用,数据校验 controller controller 和 action 调用 项目中自定义的 middleware 有时候项目中根据一些特定需要添加0 码力 | 129 页 | 2.12 MB | 1 年前3
ThinkJS 1.2 中文文档app_init 应⽤用初始化 path_info 解析 path 路径 resource_check 静态资源请求检测 route_check 路由检测 app_begin 应⽤用开始 action_init action 初始化 view_init 视图初始化 view_template 模版定位 view_parse 模版解析 view_filter 模版内容过滤 view_end { // 应⽤用初始化 app_init: [], //pathinfo 解析 path_info: [], // 静态资源请求检测 resource_check: // 模版解析初始化 view_init: [], // 定位模版⽂文件 view_template: ["LocationTemplate"], // 模版解析 view_parse:0 码力 | 104 页 | 1.29 MB | 1 年前3
Nim 2.0.2 中文手册个可选的 a ,圆括号⽤来 分组元素。 & 是预先运算符; &a 表示期望⼀个 a ,但没有⽤掉,⽽在之后的规则中被消耗。 | 和 / 符号⽤来标记备选项,优先级最低。 / 是有序选择,要求解析器按照给定的顺序来尝试备选项, / 常⽤来消除语法⼆义 性。 ⾮终结符号以⼩写字⺟开头,抽象终结符号字⺟全⼤写,逐字的终结符号(包括关键词)⽤ ' 引起来。例如: ⼆元的 ^* 运算符表示为 identi�er "标识符"是变量、类型、过程等的名称声明符号,⼀个声明所适⽤的程序区域被称为该声明的 scope "作⽤域", 作⽤域 可以嵌套,⼀个标识符的含义由标识符所声明的最⼩包围作⽤域决定,除⾮重载的解析规则另有建议。 ⼀个表达式特指产⽣值或地址的计算,产⽣地址的表达式被称为 l-values "左值",左值可以表示地址,也可以表示该地址包含的 值,这取决于上下⽂。 Nim program "程序"由⼀个或多个包含 Nim 程序。 编译期执⾏⽀持 Nim 语⾔的⼤部分,但有限制 -- 详情查看编译期执⾏限制。 其术语 runtime "运⾏ 时"涵盖了编译期执⾏和可执⾏⽂件的代码执⾏。 编译器将 Nim 源码解析成称为 abstract syntax tree (AST) "抽象语法树"的内部数据结构,在执⾏代码或将其编译为可执⾏⽂件之 前,通过 semantic analysis "语义分析"对AST进⾏0 码力 | 127 页 | 7.05 MB | 1 年前3
跟我学Shiro - 张开涛指定用户 名/密码及其角色;role.role1=permission1,permission2 指定角色及权限信息; org.apache.shiro.realm.jdbc.JdbcRealm:通过 sql 查询相应的信息,如“select password from users where username = ?”获取用户密码,“select password, password_salt from 获取用户角色;“select permission from roles_permissions where role_name = ?”获取角色对 应的权限信息;也可以调用相应的 api 进行自定义 sql; JDBC Realm 使用 1、数据库及依赖 跟我学 Shiro——http://jinnianshilongnian.iteye.com/ 16 下建三张表:users(用户名/密码)、user_roles(用户/角色)、roles_permissions (角色/权限),具体请参照 shiro-example-chapter2/sql/shiro.sql;并添加一个用户记录,用 户名/密码为 zhang/123; 3、ini 配置(shiro-jdbc-realm.ini) 1、变量名=全限定类名0 码力 | 219 页 | 4.16 MB | 10 月前3
共 1000 条
- 1
- 2
- 3
- 4
- 5
- 6
- 100













