前端框架
webpack 构建 Vue3项目 1.初始化项目结构(跟cli 结构保持一致) 2.安装所需要的依赖包 12345678910111213141516171819202122232425262728293031{ "name": "webpack-vue", "version": "1.0.0", "description": "", "main": "webpack.config.js", "scripts": { "test": "echo \"Error: no test specified\" && exit 1", "dev": "webpack-dev-server", "bui ...
gitignore文件
在本地的代码目录中,有些文件或者目录我们并不想提交到仓库中,比如一些运行日志等文件。这样的话,我们提交代码时,就只能一个一个文件去git add,太麻烦了。 为了解决这个问题,Git里面有一个.gitignore文件。可以指定Git需要忽略哪些文件。配置好之后,Git就会自动忽略满足配置的文件。这样,我们就可以尽情的使用git add .来添加文件了。 Git 忽略规则优先级 在 .gitingore 文件中,每一行指定一个忽略规则,Git 检查忽略规则的时候有多个来源,它的优先级如下(由高到低): 从命令行中读取可用的忽略规则 当前目录定义的规则 父级目录定义的规则,依次递推 $GIT_DIR/info/exclude 文件中定义的规则 core.excludesfile中定义的全局规则 Git 忽略规则匹配语法 在 .gitignore 文件中,每一行的忽略规则的语法如下: 空格不匹配任意文件,可作为分隔符,可用反斜杠转义 开头的文件标识注释,可以使用反斜杠进行转义 !开头的模式标识否定,该文件将会再次被包含,如果排除了该文件的父级目录,则使用!也不会再次被包含。可以使用反斜 ...
sass
前言 说到css,相信大家都知道,css样式是用来修饰网页页面结构的。对于一名前端来说写好css并不难,但如何写出优雅可复用、易重构的css代码并不容易。 于是css预处理器便出现在大家的视线里,分别是 stylus、less、sass。它们的出现让编写css更加像JavaScript一样具有严谨性、编程性。 在此对Stylus、Less就不做多叙述了,如果小伙伴对其他两种感兴趣,可以访问 Stylus官网 、Less官网了解更多哦。 Sass背景 Sass(Syntactically Awesome Style Sheets),套用sass官网的牛逼介绍:“Sass是世界上最成熟、最稳定、最强大的专业级CSS扩展语言!”。是一个相对新的css预编译框架,为前端开发而生。 为什么使用Sass? 通过Sass编写css代码,你可以减少冗余的css代码,编写更加语义化的css,它扩展了css的能力,增加变量、嵌套css规则、混合器、继承、函数等新特性。 .sass vs .scss ? 早已Sass出现的时候,是没有Scss的,Sass语法跟原生css不尽相同。使用缩进代替括号,没有分号。 ...
less
前言 CSS的短板 作为前端学习者的我们 或多或少都要学些 CSS ,它作为前端开发的三大基石之一,时刻引领着 Web 的发展潮向。 而 CSS 作为一门标记性语言,可能 给初学者第一印象 就是简单易懂,毫无逻辑,不像编程该有的样子。在语法更新时,每当新属性提出,浏览器的兼容又会马上变成绊脚石,可以说 CSS 短板不容忽视。 问题的诞生往往伴随着技术的兴起, 在 Web 发展的这几年, 为了让 CSS 富有逻辑性,短板不那么严重,涌现出了 一些神奇的预处理语言。 它们让 CSS 彻底变成一门 可以使用 变量 、循环 、继承 、自定义方法等多种特性的标记语言,逻辑性得以大大增强。 预处理语言的诞生 其中 就我所知的有三门语言:Sass、Less 、Stylus 。 Sass 诞生于 2007 年,Ruby 编写,其语法功能都十分全面,可以说 它完全把 CSS 变成了一门编程语言。另外 在国内外都很受欢迎,并且它的项目团队很是强大 ,是一款十分优秀的预处理语言。 Stylus 诞生于 2010 年,来自 Node.js 社区,语法功能也和 Sass 不相伯仲,是一门十分独特的创新型语言。 ...
MongoDB Realm
使用Realm 引用站外地址 Realm官方文档 https://www.mongodb.com/docs/realm/sdk/kotlin/ 添加依赖 在build.gradle(app)文件中添加 123456789101112plugins { ... id 'io.realm.kotlin'}...dependencies { ... //MongoDB Realm implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-core:1.6.4' implementation 'io.realm.kotlin:library-base:1.6.1'} 在build.gradle(项目)文件中添加 1234plugins { . ...
小型录音机
record相关 AudioRecorder.kt 123456import java.io.Fileinterface AudioRecorder { fun start(outputFile: File) fun stop()} AndroidAudioRecorder.kt 123456789101112131415161718192021222324252627282930313233343536373839import android.content.Contextimport android.media.MediaRecorderimport android.os.Buildimport android.provider.MediaStore.Audio.Mediaimport java.io.Fileimport java.io.FileOutputStreamclass AndroidAudioRecorder( private val context: Context): AudioRecorder { priva ...
Redis(十二)拓展:Redis的面试题整理和解答
概述 什么是Redis Redis(Remote Dictionary Server) 是一个使用 C 语言编写的,开源的(BSD许可)高性能非关系型(NoSQL)的键值对数据库。 Redis 可以存储键和五种不同类型的值之间的映射。键的类型只能为字符串,值支持五种数据类型:字符串、列表、集合、散列表、有序集合。 与传统数据库不同的是 Redis 的数据是存在内存中的,所以读写速度非常快,因此 redis 被广泛应用于缓存方向,每秒可以处理超过 10万次读写操作,是已知性能最快的Key-Value DB。另外,Redis 也经常用来做分布式锁。除此之外,Redis 支持事务 、持久化、LUA脚本、LRU驱动事件、多种集群方案。 Redis有哪些优缺点 优点 读写性能优异, Redis能读的速度是110000次/s,写的速度是81000次/s。 支持数据持久化,支持AOF和RDB两种持久化方式。 支持事务,Redis的所有操作都是原子性的,同时Redis还支持对几个操作合并后的原子性执行。 数据结构丰富,除了支持string类型的value外还支持hash、set、zset、list等 ...
Redis(十一)进阶:Redis缓存穿透、击穿和雪崩的理解和学习
Redis的缓存穿透 1、概念: 用户需要查询一个数据,但是redis中没有(比如说mysql中id=-1的数),直接去请求MySQL,当很多用户同时请求并且都么有命中!于是都去请求了持久层的数据库,那么这样会给持久层数据库带来非常大的压力。一般出现这样的情况都不是正常用户,基本上都是恶意用户! 2、解决方案 ①布隆过滤器: 布隆过滤器是一种数据结构,对所有可能查询的参数以hash形式存储,在控制层先进行校验,不符合则 丢弃,从而避免了对底层存储系统的查询压力; ②缓存空对象: 当存储层查不到,即使是空值,我们也将其存储起来并且在Redis中设置一个过期时间,之后再访问这个数据将会从Redis中访问,保护了持久层的数据库! ③存在的问题: 1)如果空值能够被缓存起来,这就意味着缓存需要更多的空间存储更多的键,因为这当中可能会有很多的空值的键; 2)即使对空值设置了过期时间,还是会存在缓存层和存储层的数据会有一段时间窗口的不一致,这对于需要保持一致性的业务会有影响。 注意:缓存穿透前提是:Redis和MySQL中都没有,然后不停的直接请求MySQL。 Redis的缓存击穿 1、概 ...
Redis(十)进阶:Redis集群之哨兵模式的学习和理解
前言 在Redis集群中我们讲到了,主机断开后,我们得手动设置另一个从机变成主机!这是不智能的!在实际工作中,我们都是用哨兵模式来自动切换主机。通俗点讲,就是自己去选择‘大哥’! 概述 主从切换技术的方法是:当主服务器宕机后,需要手动把一台从服务器切换为主服务器,这就需要人工干预,费事费力,还会造成一段时间内服务不可用。这不是一种推荐的方式,更多时候,我们优先考虑 哨兵模式 。Redis从2.8开始正式提供了Sentinel(哨兵) 架构来解决这个问题。 谋朝篡位 的自动版,能够后台监控主机是否故障,如果故障了根据投票数自动将从库转换为主库。 哨兵模式是一种特殊的模式,首先Redis提供了哨兵的命令,哨兵是一个独立的 进程 ,作为进程,它会独立运行。其原理是哨兵通过发送命令,等待Redis服务器响应,从而监控运行的多个Redis实例。 配置哨兵 1、添加哨兵配置文件 sentinel.conf 内容如下: 12# sentinel monitor 被监控的名称 host port 1 (代表自动投票选举大哥!)sentinel monitor myredis 127.0.0.1 63 ...
Redis(九)进阶:Redis集群之如何配置主从复制模式?
前言 默认情况下,每台Redis服务器都是主节点; 由于个人服务器性能原因,以下的所有操作都是单机集群的概念!在实际工作中并不会这样配置,而是使用哨兵模式来监控!这篇文章的意义主要就是为了让大家了解主从复制这个概念! 概念 主从复制,是指将一台Redis服务器的数据,复制到其他的Redis服务器。前者称为主节点(master/leader),后者称为从节点(slave/follower);数据的复制是单向的,只能由主节点到从节点。Master以写为主,Slave 以读为主。 主要作用: ①数据冗余:主从复制实现了数据的热备份,是持久化之外的一种数据冗余方式。 ②故障恢复:当主节点出现问题时,可以由从节点提供服务,实现快速的故障恢复;实际上是一种服务的冗余。 ③负载均衡:在主从复制的基础上,配合读写分离,可以由主节点提供写服务,由从节点提供读服务(即写Redis数据时应用连接主节点,读Redis数据时应用连接从节点),分担服务器负载;尤其是在写少读多的场景下,通过多个从节点分担读负载,可以大大提高Redis服务器的并发量。 ④高可用(集群)基石:除了上述作用以外,主从复制还是哨兵和集群能 ...
Redis(八)进阶:Redis如何实现发布订阅功能?
前言 Redis发布订阅(pub/sub)是一种消息通信模式:发送者(pub)发送消息,订阅者(sub)接受消息。 Redis客户端可以订阅任意数量的频道! 实现方式: ①命令: 这些命令被广泛用于构建即时通信应用,比如网络聊天室(chatroom)和实时广播、实时提醒等。 ②发布订阅的实现: 1、订阅端: 1234567891011121314127.0.0.1:6379> pingPONG127.0.0.1:6379> SUBSCRIBE dingdada #订阅名字为 dingdada 的频道Reading messages... (press Ctrl-C to quit)1) "subscribe"2) "dingdada"3) (integer) 1#等待推送的信息1) "message" #消息2) "dingdada" #来自哪个频道的消息3) "hello world\xef\xbc\x81" # 消息的具体内容1) "message& ...
Redis(七)进阶:Redis持久化之RDB和AOF
前言 Redis 是内存数据库,如果不将内存中的数据库状态保存到磁盘,那么一旦服务器进程退出,服务器中的数据库状态也会消失。所以 Redis 提供了持久化功能 ! RDB(Redis DataBase) ①首先我们进入服务器找到dump.rdb文件: ②测试触发rdb操作:vim打开redis.conf配置文件 为了方便测试,我们将其改为 : 1save 60 5 #意思是在60秒内进行了5次操作,即写入rdb文件中进行持久化保存 如下图所示: ③触发机制: 1、save的规则满足的情况下,会自动触发rdb规则,测试如下: 先手动删除dump.rdb文件,实验触发规则! 在Redis中操作5次命令! 查看是否生成dump.rdb文件! 2、执行flushall命令,也会触发rdb规则 再次删除dump.rdb文件! 执行flushall操作命令! 正常生成成功! 3、退出Redis,也会触发rdb规则 删除: 退出: 生成成功! ④恢复rdb文件 1、只需将备份的rdb文件放在我们的redis启动目录即可,Redis启动的时候会自动检查dump.rdb文件并恢 ...