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
MoonBit月兔编程语言 现代编程思想 第七课 命令式编程:命令,可变数据结构,循环现代编程思想 命令式编程 Hongbo Zhang 1 函数式编程 到此为⽌,我们介绍的可以归类于函数式编程的范畴 对每⼀个输⼊,有着固定的输出 对于标识符,我们可以直接⽤它所对应的值进⾏替代⸺引⽤透明性 开发实⽤的程序,我们需要⼀些计算之外的�副作⽤� 进⾏输⼊输出 修改内存中的数据等 这些副作⽤可能导致多次执⾏的结果不⼀致 2 引⽤透明性 我们可以定义如下数据绑定和函数 引⽤透明性可以易于理解 3 命令 函数 print 允许我们输出⼀个字符串,例如 print("hello moonbit") ⽉兔中可以通过 init 代码块来定义初始化指令 可以简单理解为程序主⼊⼝ 1. fn init { 2. println("hello moonbit") // 函数名中的ln代表换⾏ 3. } 4 命令与副作⽤ 输出命令可能会破坏引⽤透明性 1. fn 4. println("hello moonbit") // <-- 我们⾸先执⾏命令,进⾏输出 5. 1 + 1 // <-- 之后,我们以表达式块最后的值作为表达式块的值 6. } 7. let z: Int = square(x) // 4, 输出⼀次 8. } 5 命令与副作⽤ 我们不⼀定可以放⼼替换,因此会增⼤程序理解难度 1. fn init { 2.0 码力 | 23 页 | 780.46 KB | 1 年前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
Go Web编程IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 3 1.Go环境配置 1.1. Go安装 1.2. GOPATH 与工作空间 1.3. Go 命令 1.4. Go开发工具 1.5. 小结 2.Go语言基础 2.1. 你好,Go 2.2. Go基础 2.3. 流程和函数 2.4. struct 2.5. 面向对象 2.6. interface 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 2.2 中文文档等常见的数据库,并且封装了很多操作数据库的接口, 无需手动拼接 SQL 语句,还可以自动防止 SQL 注入等安全漏洞。同时支持事务、关联模型等高级 功能。 代码自动更新 ThinkJS 内置了一套代码自动更新的机制,文件修改后立即生效,不用重启 Node.js 服务,也不用 借助第三方模块。 自动创建 REST 接口 使用 thinkjs 命令可以自动创建 REST 接口,不用写任何的代码即可完成 丰富的测试用例 ThinkJS 含有 1500+ 的测试用例,代码覆盖率达到 95% ,每一次修改都有对应的测试用例来保障 框架功能的稳定。 支持命令行调用执行定时任务 ThinkJS 里的 Action 除了可以响应用户的请求,同时支持在命令行下访问,借助这套机制就可以 很方便的执行定时任务。 Hook 和 Middleware ThinkJS 使用 Hook 和 Middleware 下载最新的安装包进行安装,也可以通过其他一些渠道安装。 安装完成后,在命令行执行 node -v ,如果能看到对应的版本号输出,则表示安装成功。 ThinkJS 需要 Node.js 的版本 >=0.12.0 ,如果版本小于这个版本,需要升级 Node.js,否则无法启 动服务。建议将 Node.js 版本升级到 4.2.1 或更高版本。 安装 ThinkJS 通过下面的命令即可安装 ThinkJS: npm install0 码力 | 277 页 | 3.61 MB | 1 年前3
FISCO BCOS 2.1.0 中文文档0+部署多群组区块链、构建第一个区块链应用,请 参考 教程 深入了解FISCO BCOS 2.0+功能请看 配置文件和配置项、节点准入、 并行交易、分布式存储、国密 等请参考 使用手册 控制台:交互式命令行工具,可访问区块链节点,查询区块链状态,部 署并调用合约等。 企业级部署工具(Generator):支持建链、扩容等操作,推荐构建企业级 区块链时使用,快速使用方法可参考 教程 Web3SDK:提 支持分布式存储,使存储突破单机限制,支持横向扩展。计算和存储分 离,提高了系统健壮性,即使节点执行服务器故障,数据也不会受影 响。分布式存储定义了标准的数据访问CRUD接口,可以适配多种存储 系统,同时支持SQL和NoSQL两种数据管理方式,可以更简便地支持多 种业务场景。 实现预编译合约框架,突破EVM性能瓶颈。支持交易并发处理,大幅提 升交易处理吞吐量。预编译合约采用C++实现,内置于底层系统中,区 块 持数据简便 快速地扩容; 将计算和数据隔离,节点故障不会导致数据异常; 数据在远端存储,数据可以在更安全的隔离区存储,这在很多场景中非 常有意义; 分布式存储不仅支持Key-Value形式,还支持SQL方式,使得业务开发更 为简便; 世界状态的存储从原来的MPT存储结构转为分布式存储,避免了世界状 态急剧膨胀导致性能下降的问题; 优化了数据存储的结构,更节约存储空间。 同时,2.0版本仍然兼容10 码力 | 1058 页 | 740.85 KB | 1 年前3
Python3 基础教程 - 廖雪峰3.5,有两个方法: 方法一:从 Python 官网下载 Python 3.5 的安装程序(网速慢的同学请移 步国内镜像),双击运行并安装; 方法二:如果安装了 Homebrew,直接通过命令 brew install python3 安 装即可。 在 Linux 上安装 Python 如果你正在使用 Linux,那我可以假定你有 Linux 系统管理经验,自行 安装 Python 14/531 特别要注意勾上 Add Python 3.5 to PATH,然后点“Install Now”即可完成 安装。 默认会安装到 C:\Python35 目录下,然后打开命令提示符窗口,敲入 python 后,会出现两种情况: 情况一: Python3 基础教程【完整版】 http://www.yeayee.com/ 15/531 看到上面的画面,就说明 交互式环境中了,可以输入 任何 Python 代码,回车后会立刻得到执行结果。现在,输入 exit()并回 车,就可以退出 Python 交互式环境(直接关掉命令行窗口也可以)。 情况二:得到一个错误: ‘python’ 不是内部或外部命令,也不是可运行的程序或批处理文件。 这是因为 Windows 会根据一个 Path 的环境变量设定的路径去查找 python.exe,如果没找到,就会报错。如果在安装时漏掉了勾选0 码力 | 531 页 | 5.15 MB | 1 年前3
FISCO BCOS 2.3.0 中文文档0+部署多群组区块链、构建第一个区块链应用,请 参考 教程 深入了解FISCO BCOS 2.0+功能请看 配置文件和配置项、节点准入、 并行交易、分布式存储、国密 等请参考 使用手册 控制台:交互式命令行工具,可访问区块链节点,查询区块链状态,部 署并调用合约等。 运维部署工具(Generator):支持建链、扩容等操作,推荐构建企业级区 块链时使用,快速使用方法可参考 教程 SDK:提供访问节点 支持分布式存储,使存储突破单机限制,支持横向扩展。计算和存储分 离,提高了系统健壮性,即使节点执行服务器故障,数据也不会受影 响。分布式存储定义了标准的数据访问CRUD接口,可以适配多种存储 系统,同时支持SQL和NoSQL两种数据管理方式,可以更简便地支持多 种业务场景。 实现预编译合约框架,突破EVM性能瓶颈。支持交易并发处理,大幅提 升交易处理吞吐量。预编译合约采用C++实现,内置于底层系统中,区 块 持数据简便 快速地扩容; 将计算和数据隔离,节点故障不会导致数据异常; 数据在远端存储,数据可以在更安全的隔离区存储,这在很多场景中非 常有意义; 分布式存储不仅支持Key-Value形式,还支持SQL方式,使得业务开发更 为简便; 世界状态的存储从原来的MPT存储结构转为分布式存储,避免了世界状 态急剧膨胀导致性能下降的问题; 优化了数据存储的结构,更节约存储空间。 同时,2.0版本仍然兼容10 码力 | 1227 页 | 10.79 MB | 1 年前3
FISCO BCOS 2.2.0 中文文档0+部署多群组区块链、构建第一个区块链应用,请 参考 教程 深入了解FISCO BCOS 2.0+功能请看 配置文件和配置项、节点准入、 并行交易、分布式存储、国密 等请参考 使用手册 控制台:交互式命令行工具,可访问区块链节点,查询区块链状态,部 署并调用合约等。 企业级部署工具(Generator):支持建链、扩容等操作,推荐构建企业级 区块链时使用,快速使用方法可参考 教程 SDK:提供访问节 支持分布式存储,使存储突破单机限制,支持横向扩展。计算和存储分 离,提高了系统健壮性,即使节点执行服务器故障,数据也不会受影 响。分布式存储定义了标准的数据访问CRUD接口,可以适配多种存储 系统,同时支持SQL和NoSQL两种数据管理方式,可以更简便地支持多 种业务场景。 实现预编译合约框架,突破EVM性能瓶颈。支持交易并发处理,大幅提 升交易处理吞吐量。预编译合约采用C++实现,内置于底层系统中,区 块 持数据简便 快速地扩容; 将计算和数据隔离,节点故障不会导致数据异常; 数据在远端存储,数据可以在更安全的隔离区存储,这在很多场景中非 常有意义; 分布式存储不仅支持Key-Value形式,还支持SQL方式,使得业务开发更 为简便; 世界状态的存储从原来的MPT存储结构转为分布式存储,避免了世界状 态急剧膨胀导致性能下降的问题; 优化了数据存储的结构,更节约存储空间。 同时,2.0版本仍然兼容10 码力 | 1156 页 | 10.03 MB | 1 年前3
Laravel 5.1 中文文档str_random(10), ]; }); 更多关于模型工厂的内容,请查看模型工厂一节。 Artisan 优化 Artisan 命令可以通过使用一个简单的,类似路由风格的“签名”(提供了一个非常简单的接口 来定义命令行参数和选项)来定义: /** * 命令行的名称和签名. * * @var string */ 本文档由 Laravel 学院(LaravelAcademy 学院(LaravelAcademy.org)提供 4 protected $signature = 'email:send {user} {--force}'; 更多关于 Artisan 的内容,请查看命令行一节。 目录结构 为了更好地表达意图,app/Commands 目录被重命名为 app/Jobs,此外,app/Handlers 被合 并到 app/Listeners 目录。然而这并不是破坏式改变所以使用 d')->all(); 命令&处理器 app/Commands 目录现在被重命名为 app/Jobs,但是并不需要将你的命令移动到新位置,你 可以继续使用 make:command 和 handler:command Artisan 命令生成自己的类。 同样的,app/Handlers 目录被合并到 app/Listeners 目录下,你也不必将已经存在的命令 和事件处理器进行移动和重命名,你可以继续使用0 码力 | 307 页 | 3.46 MB | 1 年前3
共 1000 条
- 1
- 2
- 3
- 4
- 5
- 6
- 100













