暂无个人介绍
!> 在企业开发中,拿到设计师设计的750设计图之后,我们只需要将模拟器调整为 iphone6,然后将设计图上标注的 px 乘以2,写到样式中,单位使用 rpx 即可。
编写在当前页面文件夹当中的 WXML 的 WXSS 文件当中:
什么是 WXSS • WXSS (WeiXin Style Sheets)是一套样式语言,用于描述 WXML 的组件样式。 • WXSS 用来决定 WXML 的组件应该怎么显示。 • 为了适应广大的前端开发者,WXSS 具有 CSS 大部分特性。同时为了更适合开发微信小程序,WXSS 对 CSS 进行了扩充以及修改。
在开发应用时正确使用一些开源第三方工具包可以极大的提升开发效率,本章主要介绍运用极为广泛的工具包,比如Apache Common,Google Guava,Hutool等。
能说下myisam 和 innodb的区别吗? • myisam引擎是5.1版本之前的默认引擎,支持全文检索、压缩、空间函数等,但是不支持事务和行级锁,所以一般用于有大量查询少量插入的场景来使用,而且myisam不支持外键,并且索引和数据是分开存储的。 • innodb是基于B+Tree索引建立的,和myisam相反它支持事务、外键,并且通过MVCC来支持高并发,索引和数据存储在一起。
事务指的是满足 ACID 特性的一组操作,可以通过 Commit 提交一个事务,也可以使用 Rollback 进行回滚。
调用 Java.exe 时, 需要把类给加载到 JVM 中,使用类加载器进行加载
在我们平时引入第三方自定义的 starter 里面会包含一些自动装配配置,而我们这个时候并没有给定对应的数据库或者数据源的信息,这个时候我们启动项目是不行的,这个时候就需要关闭一下自动装配,等我们想用到对应的数据源的时候在配置好。所以我们需要在 application.yml 里添加配置来关闭数据库自动装配, 关闭的条件是需要自动他们自动装配的类名然后添加到 exclude 列表即可:
在权限系统中,最核心的三张表为:用户表、角色表和菜单表(权限表),它们间的关系通常采用经典的 RBAC(Role-Based Access Control,基于角色的访问控制)模型。简单来说就是一个用户拥有若干角色,每一个角色拥有若干权限。这样就构造成 “用户-角色-权限” 的授权模型。在这种模型中,用户与角色之间,角色与权限之间,一般都是多对多的关系,如下图所示:
前后分离架构下肯定会遇到跨域的问题,因为我们的请求都是通过微服务网关来转发的,所以我们可以在网关处, 统一处理跨域。
数据结构
注册服务
待确定推荐 • Grazie Professional
● 因为它所有的数据都在内存中,所有的运算都是内存级别的运算,而且单线程避免了多线程的切换性能损耗问题。 ● Redis 利用 epoll 来实现 IO 多路复用 ● 将连接信息和事件放到队列中,依次放到文件事件分派器 ● 事件分派器将事件分发给事件处理器
搭建配置服务器复制集: • 早期版本的配置服务器只要一台即可 • 最新版本 MongoDB 要求配置服务器必须是一个复制集
用户的请求会发送给 mongos 路由服务器, 路由服务器会根据查询条件去配置服务器查询对应的数据段和属于哪个分片服务器, 如果用户查询的条件是分片片键字段, 那么路由服务器会返回保存在那一台分片服务器上, 路由服务器就会去对应的分片服务器获取数据, 并将取到的数据返回给用户。
分片的主要目的就是将数据分配到不同的服务器中保存, 提升服务器的容量, 让数据更加的均衡, 更有效的降低服务器的压力, 但是随着时间推移, 某些数据段中保存的数据会越来越多, 所以为了保证个分片均衡, 当某个数据段数据过多或体积过大的时候, 系统就会自动在下一次操作这个数据段时(新增/更新), 将一个大的数据段分裂成多个小的数据段。
使用分片的目的是为了将数据存储到不同的服务器上, 所以在选择片键的时候,应该选择取值范围更广的字段作为片键,因为如果取值范围太小, 那么划分出来的数据段就太少, 那么分配到不同服务器的概率就越小, 例如:取值如果只有 true 或 false, 那么就只能划分出两个数据段, 那么也就最多只能保存到两台服务器上。
?> 那么紧接着上一篇的文章内容,如何将数据存储到不同的分片服务器上的? 答:通过分片片键
分片集群结构 • 分片服务器: 用于保存集合中的一部分数据 • 配置服务器: 用于保存分片数据的数据段和数据范围 • mongos 路由(路由服务器): 用于分发请求到保存对应数据的分片服务器上
什么是复制集 ‘多台’,‘保存了相同数据’ 的MongoDB服务器组成
在安装目录下新建 data/conf/log 3个文件夹,在conf文件夹下新建 mongo.config,在mongo.config中配置如下内容:
?> 投票节点就是不保存任何数据, 只参与投票的节点
初始化同步 • 将一个新的节点加入到复制集中时, 就需要进行初始化同步 • 初始化同步会先清空自己所有的内容, 保证将来自己和主节点一模一样 • 初始化同步会将主节点中现有所有的 ‘数据库’, ‘集合’, ‘文档’, ‘索引’ 全部拷贝过来 • 但是在拷贝的过程中主节点仍然可能会做一些其它操作, 新增一些其它的数据等
选举规则 • 一旦发现主节点没有响应 / 发送心跳请求, 那么副节点就会认为主节点挂了 • 一旦发现主节点挂了, 任意一个副节点都可以发起选举 • (发起选举的节点我们称之为 候选节点, 每一个节点内部都有一个 选举计数器) • 发起选举的节点会给自己先投一票, 然后将自己的票数依次发送给其它节点
MongoDB 复制集特点 !> 复制集中必须有一个主节点 • 主节点主要负责写入数据和读取 • 复制集中除了主节点以外的节点我们称之为 副节点: • 副节点默认情况下只能读取数据, 不能写入数据 • 副节点主要负责从主节点不断复制数据
有时候我们为了统一管理会把一些变量放到 yml 配置文件中,例如:
在平时的业务场景中,经常有一些场景需要使用定时任务。
定义一个静态方法 • 我给它的快捷键是 sfn,s 代表static,fn 是function 的含义,然后在以后需要定义一个静态的方法直接 sfn + tab 即可, 在idea当中我给它的分区为 java 分区:
字体分为,编辑器字体与代码的字体,这里我编辑器的字体使用的是编辑器本身的,代码的字体也是,只不过相对于代码的注释的字体和代码文件默认打开的显示大小我是有微调的,代码的注释字体为 KaiTi,代码默认打开的大小为 16,那么为啥是 16 呢而不是其它的数值呢,原因就是如果默认 16 的话,打开的代码片段刚好是在编辑器的纵坐标的分界线内,这个分界线自行去发现这里不介绍为界限是什么东西,如果有以为则在下方评论区留言即可我来解答(然后再往后的日子我发现设置 16 也不是非常的合理,自己根据自己的个人喜好来决定吧,反正我是设置的比较大字体)。
本文是紧接着 Mongoose 的增加与查询的下集,所以在这里废话不多说直接上内容。
本文的内容是基于 Mongoose 开篇继续延续的,需要将 mongoose 的环境搭建好,我这里就直接上的是进行操作 MongoDB 的代码。
Mongoose 概述 • Mongoose和MySQL的Sequelize一样, 都是NodeJS中操作数据库的对象模型工具 • Mongoose使用面向对象的思想对原生的mongoDB命令进行了封装
在 MongoDB 中我们除了可以使用 ‘内嵌式结构’ 和 ‘规范式结构’ 来表示数据的关系以外, 由于MongoDB数据的灵活性, 我们还可以使用’树形结构’来表示数据之间的关系。
优势 一次查询就能得到所有数据
MongoDB对于文档的格式并没有强制性的要求, 但不等于我们不能在文档中表达数据的关系,在MongoDB中我们可以通过 ‘内嵌式结构’ 和 ‘规范式结构’ 来表达文档之间的关系。
优势 一次查询就能得到所有数据 劣势
查看索引的名称, 通过 getIndexes() 获得:
针对日期字段或者包含日期的数组字段, 我们可以在创建索引的时候, 指定索引的生存时间, 一旦索引超过了指定的生存时间, 那么 MongoDB 会自动删除超过生存时间的文档。
默认情况下 MongoDB 会给每一个文档都创建索引, 哪怕这个文档中没有指定索引的字段或者字段的取值是 Null,但是这样大大增加了索引的体积, 所以为了进一步优化索引占用的存储空间, 我们可以创建稀疏索引,也就是只会为存在索引字段, 并且索引字段取值不是 null 的文档创建索引。
默认情况下 MongoDB 和 MySQL 一样, 都会自动为主键创建索引, 这个索引就是一个唯一索引,除了主键可以作为唯一索引以外, 只要某个字段的取值是唯一的, 我们也可以手动给这个字段添加唯一索引。
如果排序的字段, 正好是索引的字段, 那么会大大提升排序效率。
多键索引是专门针对数组字段的, 会为数组字段的每一个元素都创建一个索引。
和 MySQL 一样, MongoDB 也支持复合索引, 也就是将多个字段的值作为索引。 ?> 插入测试数据:
什么是索引 • 索引就相当于字典中的目录(拼音 / 偏旁部首手) • 有了目录我们就能通过目录快速的找到想要的结果 • 但是如果没有目录(拼音 / 偏旁部首手), 没有索引 • 那么如果想要查找某条数据就必须从前往后一条一条的查找 • 所以, 索引就是用于提升数据的查询速度的
?> MongoDB 对于文档的格式并没有强制性的要求, 同一个集合中存储的文档, 字段的个数和数据类型都可以不同, 对与文档的格式没有强制性的要求是 MongoDB 的一大优势, 但是同时也增加了数据消费端的使用难度, 因为我们在使用数据的时候, 有可能同一个字段取出来的数据类型是不同的, 这样非常不利于我们后续操作, 所以也正是因为如此, MongoDB 在 4.0 中 推出了 $convert 数据类型转换操作符, 通过 $convert 数据类型转换操作符, 我们可以将不同的数据类型转换成相同的数据类型, 以便于后续我们在使用数据的过程中能够统一对数据进行处理
什么是聚合操作 • 聚合操作就是通过一个方法完成一系列的操作 • 在聚合操作中, 每一个操作我们称之为一个阶段 • 聚合操作会将上一个阶段处理结果传给下一个阶段继续处理 • 所有阶段都处理完毕会返回一个新的结果集给我们
字段路径表达式 $<filed>: 使用 $ 来指示字段路径 $<filed>.<sub-field>: 使用 $ 和 . 来指示内嵌文档字段路径
allowDiskUse 默认取值是 false, 默认情况下管道阶段占用的内存不能超过 100M,如果超出 100M 就会报错, 如果需要处理的数据比较多, 聚合操作使用的内存可能超过 100M, 那么我们可以将 allowDiskUse 设置为 true 如果 allowDiskUse 设置为 true, 那么一旦 超出 100M 就会将操作的数据写入到临时文件中, 然后再继续操作
聚合管道阶段 $out: 将前面阶段处理完的文档写入一个新的集合