0%

stack 容器

stack 容器的概念

stack 是一种先进后出(First In Last Out,FILO)的数据结构,它只有一个出口。stack 容器允许新增元素、移除元素、取得栈顶元素,但是除了最顶端的元素外,没有任何其他方法可以存取 stack 中的其他元素。stack 没有迭代器,容器中所有元素的进出都必须符合 “先进后出” 的规则,只有 stack 最顶端的元素,才有机会被外界取用。换言之,stack 不提供遍历功能,也不提供迭代器。deque 是双向开口的数据结构,若以 deque 为底部结构并封闭其头端开口,便轻而易举地形成一个 stack。因此,SGI STL 便以 deque 作为缺省情况下的 stack 底部结构。由于 stack 以底部容器完成其所有工作,而具有这种 “修改某物接口,形成另一种风貌” 的性质者,称为 adapter(配接器),因此,STL stack 往往不被归类为 container(容器),而被归类为 container adapter(容器配接器)

阅读全文 »

vector 容器

vector 容器的概念

vector 的数据存储以及操作方式,与 Array 非常相似,两者的唯一差别在于空间运用的灵活性。Array 是静态空间,一旦配置了就不能改变,要换大一点或者小一点的空间,可以,一切琐碎的细节得由自己来实现;首先配置一块新的空间,然后将旧空间的数据搬往新空间,再释放原来的空间。Vector 是动态空间,随着元素的加入,它的内部机制会自动扩充空间以容纳新元素。因此 vector 的运用对于内存的合理利用与运用的灵活性有很大的帮助,我们再也不必害怕空间不足而一开始就初始化一个大的 Array 了。Vector 的实现技术,关键在于其对大小的控制以及重新配置时的数据移动效率,一旦 vector 旧空间满了,如果客户每新增一个元素 vector 内部只是扩充一个元素的空间,实为不智,因为所谓的扩充空间(不论多大),一如刚所说,是 “配置新空间 - 数据移动 - 释放旧空间” 的大工程,时间成本很高,应该加入某种未雨绸缪的考虑。

vector 容器的数据结构

阅读全文 »

一、日期处理

1. 时间格式化

该方法可以用于将时间转化为 hour:minutes:seconds 的格式:

1
2
3
4
5
const timeFromDate = date => date.toTimeString().slice(0, 8);

timeFromDate(new Date(2021, 11, 2, 12, 30, 0)); // 12:30:00
timeFromDate(new Date()); // 返回当前时间 09:00:00
复制代码

2. 检察日期是否有效

该方法用于检测给出的日期是否有效:

1
2
3
4
const isDateValid = (...val) => !Number.isNaN(new Date(...val).valueOf());

isDateValid("December 17, 1995 03:24:00"); // true
复制代码
阅读全文 »

前言

VuePress v1.x 博客建议安装 vuepress-plugin-readmore-popular 插件,将 TechGrow 的免费微信公众号导流工具整合到博客中,用户扫码关注微信公众号后可以解锁全站文章,让微信公众号的粉丝数躺着增长。

提示

  1. TechGrow 开放平台的 官方文档
  2. vuepress-plugin-readmore-popular 插件只支持 VuePress v1.x,不支持 VuePress v2.x
  3. 若希望实现 VuePress v2.x 的公众号导流,建议使用 vuepress-plugin-readmore-popular-next 插件

特色功能

  • 支持随机为博客添加导流功能
  • 支持关闭某篇文章的导流功能
  • 支持查询用户解锁文章的历史记录
  • 支持自定义或者动态计算文章内容的预览高度
  • 支持自定义 CSS 样式,轻松适配不同风格的博客
阅读全文 »

配置中心

Nacos 配置中心

Maven 引入 Nacos Config 不生效

错误日志信息

Spring Cloud 项目引入 Nacos Config 的 Maven 依赖后,使用 @Value 注解无法读取 Nacos 配置中心的内容,抛出的异常信息如下

1
Caused by: java.lang.IllegalArgumentException: Could not resolve placeholder 'common.name' in value "${common.name}"
阅读全文 »

前言

本文主要介绍 Spring Boot 项目如何集成 Alibaba 的 OSS 服务(对象存储),教程内容同样适用于 Spring Cloud 项目。

提示

1、Spring Cloud 项目不建议继续使用 spring-cloud-starter-alicloud-oss 组件,尤其是较新版本的 Spring Cloud(例如 2021.0.1 版本),毕竟 Alibaba OSS 的官方文档也移除了该组件的使用说明。
2、Alibaba OSS 更多的使用教程请查看 官方文档

版本说明

Spring BootSpring Boot Alibaba
2.6.31.0.0
阅读全文 »

前言

Rsync 是一个增量备份工具,可压缩数据传输,速度快且增量备份,占用流量少。

准备工作

创建用户

1
2
3
4
5
# 创建用户组
# groupadd www

# 创建用户
# useradd -g www www -s /bin/false
阅读全文 »

前言

博客将流量导向微信公众号很简单,可以使用 TechGrow 的免费导流工具实现,用户扫码关注微信公众号后可以解锁全站文章,让微信公众号的粉丝数躺着增长。整个过程只需六步就可以搞定,适用于各类主流的博客,本文以 Hexo 的 NexT 主题博客举例。

提示

  1. TechGrow 开放平台的 官方文档
  2. 若使用的是 Hexo 静态博客,建议直接安装 hexo-readmore 插件,详细教程可点击这里
  3. 若使用的是 VuePress v1.x 静态博客,建议直接安装 vuepress-plugin-readmore-popular 插件,详细教程可点击这里

特色功能

  • 兼容主流的博客框架
  • 支持随机为博客添加引流功能
  • 支持查询用户解锁文章的历史记录
  • 支持自定义或者动态计算文章内容的预览高度
  • 支持自定义 CSS 样式,轻松适配不同风格的博客

第一步:注册博客

浏览器访问 TechGrow 的官网 ,注册并登录账号后,进入博客的后台管理页面。首先点击左侧的菜单 博客注册,然后点击 新增 按钮,添加自己博客的信息。博客注册成功后,记录下 博客 ID,后面的步骤会使用到

阅读全文 »

前言

如何在 Vue 中读取项目本地的 MarkDown 文件并展示在网页上呢?查阅资料后发现,一般的方案是在 Vue 页面中引入 Markdown 编辑器,然后利用编辑器的预览功能来展示 MarkDown 文件的内容。推荐使用开源的 MarkDown 编辑器 mavonEditor 或者 vue-meditor

vue-meditor 介绍

简介

阅读全文 »