bookshelf

设计模式——迭代器(Iterator)模式

谁说胖子不能爱 提交于 2020-11-22 04:34:59
概述   迭代器模式简单的说(按我目前的理解)就是一个类提供一个对外迭代的接口,方面调用者迭代。这个迭代接口至少包括两个方法:hasNext()--用于判断是否还有下一个,next()--用于取出下一个对象(或值)。而外部使用这个类(取出这个类中的对象或值)时,不用关心这个类存储对象或数据的具体数据结构,即使这个类的存储数据结构临时发生改变,调用者不作任何代码修改仍然可以正常工作。从而实现代码的可重用性和低耦合性。下面以实例说明。 实例   假设有两个书架(BookShelf),一个书架用数组Array的形式存放书,另一个书架用ArrayList的形式存放书,两个书架可以存放多本书(Book)的名字,Main方法通过书架取出书名打印出来。   传统模式:很容易想到第一个书架通过一个方法返回存放书的数组,另一个书架返回存放书的ArrayList。就像下面这样: // 传统模式: public Book[] getBooks(){ return books; } //传统 模式 public ArrayList<Book> getBooks(){ return books; }   这样的缺点是什么呢?缺点在于当我们同时获取到这两个书架时,迭代输出的方式就有所不同,因为一个是数组,一个是List,这个很容易想到吧,可能你觉得很简单,但是如果有十个,有几十个用不同的数据结构存储呢

「苹果小程序」App Clips 和微信小程序区别在哪?我们做了一次上手实操

▼魔方 西西 提交于 2020-08-13 19:50:10
作者|何世友、彭权华 阅读原文 6 月 23 日,Apple Park 的观众席上空无一人,但此时一场特别的「科技春晚」正在上演。 在 2020 年的 WWDC 大会中,自 iOS 7 以来变动最大的一次更新——iOS 14 来了,AirPods Pro 有了黑科技,ARM Mac 也来了。但对小程序开发者来说,他们最关心的应该还是此次 WWDC 发布的 App Clips 了。 「一个无需下载应用,就能使用 app 的功能。」这听上去是不是和小程序有点相似,但这是 App Clips,也被一部分人称为「苹果小程序」。它是什么?它和小程序有什么不同?我们该怎么开发 App Clips? 别急,一篇文章给你解答。 App Clips 从哪里来? App Clips(应用片段) 作为 WWDC2020 上最值得关注的特性之一,由于缺乏官方示例,是用户感知度最低的新功能。同时,因为和微信小程序过于相似的产品形态设定,也被部分开发者冠以「苹果牌小程序」的昵称。 官方对其的定义是—— App clips are a great way for users to quickly access and experience what your app has to offer. An app clip is a small part of your app that’s discoverable

DP从入土到入门

不羁的心 提交于 2020-08-07 11:21:12
目录 练习题 P5017 摆渡车 P4910 【帕秋莉的手环】 P4933 大师 P1439 【模板】最长公共子序列 P5858 「SWTR-03」Golden Sword P5664 Emiya 家今天的饭 P1973 [NOI2011]NOI 嘉年华 P1270 “访问”美术馆 P2577 [ZJOI2005]午餐 P2501 [HAOI2006]数字序列 P4158 [SCOI2009]粉刷匠 P1295 [TJOI2011]书架 P1052 过河 P2051 [AHOI2009]中国象棋 CF79D Password P1040 加分二叉树 P1273 有线电视网 P3287 [SCOI2014]方伯伯的玉米田 学到了什么 去世选手请求重生。 练习题 P5017 摆渡车 详见 P5017 摆渡车 - Luckyblock 算法一 设 \(f_i\) 在 \(i\) 时间发车,发车时等待的时间和的最小值。则显然有: \[f_i = \min_{j\le i-m}(f_j + \sum_{j < t_k \le i}^{n}{(i-t_k)}) \] 对于每个 \(f_i\) ,当在 \(i\) 时刻时发第一班车, \(f_i\) 最大,则其初始值为: \[f_i = \sum_{t_k<i}^{n} {(i-t_k)} \] 为保证载上所有人,最后一班车需在 \([t_

【C++养成计划】深入数组和字符串(Day8)

一曲冷凌霜 提交于 2020-07-23 23:52:28
写在前面:大家好!我是【AI 菌】,一枚爱弹吉他的程序员。我 热爱AI、热爱分享、热爱开源 ! 这博客是我对学习的一点总结与记录。如果您也对 深度学习、机器视觉、算法、Python、C++ 感兴趣,可以关注我的动态,我们一起学习,一起进步~ 我的博客地址为: 【AI 菌】的博客 上一篇: 【C++养成计划】玩转数字——数学运算函数/随机数(Day7) 昨天,我们学习了对有关数字的一常用些操作;今天来一起探索C++中两种最基本的数据结构:数组和字符串。 文章目录 1. 初探数组 (1) 什么是数组 (2) 数组的存储方式 (3) 声明和初始化数组 (4) 访问数组中的数据 2. 多维数组 (1) 声明和初始化 (2) 访问多维数组的元素 3. 动态数组 4. C风格字符串 (1) C风格字符串中的风险 (2) C风格的字符串函数 5. C++中的String类 1. 初探数组 (1) 什么是数组 在C++中,数组让你可以按照顺序将一系列相同类型的数据存储到内存中。 数组具有如下几个特点: 数组是一系列元素 数组中所有元素的类型都相同 这组元素组成一个完整的集合 (2) 数组的存储方式 数组的存储方式和图书馆中存放书的方式是类似的。想想书架上某一排上存放的书籍,这就是一个一维数组,因为它只沿着一个维度延伸。每本书都是一个数组元素,而书架就是为存储这些书籍而预留的内存。 同样的道理

nodejs ORM框架对比

浪尽此生 提交于 2019-11-30 01:46:05
name star sequelize 19.9k knex 10.5k Bookshelf 5.7k 以上数据截止2019.9.18 ​​​​​​​ sequelize 文档齐全,Star最多。 支持数据库:postgresql、mysql、sqlite和sqlserver 支持原生SQL 连接池 事务 迁移 CLI knex knex本身不是ORM框架,它的升级是bookshelf,bookshelf是ORM 支持数据库:MSSQL, MySQL, PostgreSQL, SQLite3, Oracle bookshelf bookshelf是基于knex的ORM框架。 支持数据库:mysql & mariadb、postgresql、sqlite3和Oracle 特性: 事务 连接池 流式查询 promise和callback API 原生SQL语句 使用 sequelize 来源: https://my.oschina.net/u/3336230/blog/3107655