Redis面经
Redis相关面试题缓存穿透
面试官:什么是缓存穿透 ? 怎么解决 ?
候选人:
嗯~~,我想一下
缓存穿透是指查询一个一定不存在的数据,如果从存储层查不到数据则不写入缓存,这将导致这个不存在的数据每次请求都要到 DB 去查询,可能导致 DB 挂掉。这种情况大概率是遭到了攻击。
解决方案的话,我们通常都会用布隆过滤器来解决它
面试官:好的,你能介绍一下布隆过滤器吗?
候选人:
嗯,是这样~
布隆过滤器主要是用于检索一个元素是否在一个集合中。我们当时使用的是redisson实现的布隆过滤器。
它的底层主要是先去初始化一个比较大数组,里面存放的二进制0或1。在一开始都是0,当一个key来了之后经过3次hash计算,模于数组长度找到数据的下标然后把数组中原来的0改为1,这样的话,三个数组的位置就能标明一个key的存在。查找的过程也是一样的。
当然是有缺点的,布隆过滤器有可能会产生一定的误判,我们一般可以设置这个误判率,大概不会超过5%,其实这个误判是必然存在的,要不就得增加数组的长度,其实已经算是很划分了,5%以内的误判率一般的项目也能接受,不至于高并发下压倒数据库。
缓存击穿
面试官:什 ...
Java线程
补一下线程的知识.
创建和启动线程概述JVM允许程序运行多个线程,使用java.lang.Thread类代表线程,所有的线程对象都必须是Thread类或其子类的实例
Thread类的特性
每个线程都是通过某个特定Thread对象的run()方法完成操作的,因此把run()方法体称为线程执行体
通过该Thread对象的start()方法来启动这个线程,而非直接调用run()
要想实现多线程,必须在主线程中创建新的线程对象
继承Thread类
创建一个继承Thread类的子类
重写Thread类的run()方法,将此线程要执行的操作,声明在此方法体中
创建当前Thread的子类对象
通过对象调用start()方法
创建线程,打印100以内的偶数
12345678910111213141516171819202122public class Test1 { public static void main(String[] args) { Thread1 t1 = new Thread1(); /** * start( ...
MySql搭建主从复制-读写分离
主从复制基础配置准备准备两台虚拟机,如果是克隆的虚拟机,注意修改:
修改静态的ip地址
修改mac地址
修改UUID
修改mysql的uuid
修改主机名(可选)
配置修改配置文件后要进行服务重启
主机配置文件:
这个有坑,感觉log-bin只要换成文件夹指定报错/mysql-bin,也不懂是为啥123456789101112131415#主服务器唯一IDserver-id=1###启用二进制日志log-bin=mysql-bin###设置不要复制的数据库(可设置多个)#binlog-ignore-db=mysql#binlog-ignore-db=information_schema###设置需要复制的数据库。注意:MySQL是从接入点开始复制操作的binlog-do-db=zzmr-master-slave###设置logbin格式binlog_format=STATEMENT
然后在主机中新建用户:
1234567create user 'slave'@'%' identified by '010203' ...
苍穹外卖
2023年8月25日 16点04分
这应该是写在简历上的项目了,待好好对待啊
1 项目概述&环境搭建技术选型
前端环境搭建?好像也没搭建啥,直接打开资料,双击nginx就ok了
后端环境搭建这后端代码已经写好一大部分了啊
sky-take-out:maven父工程,统一管理依赖版本,聚合其他子模块
sky-common:子模块,存放公共类,例如:工具类,常量类,异常类等
sky-pojo:子模块,存放实体类,VO,DTO等
sky-server:子模块,后端服务,存放配置文件,Controller,Service,Mapper等
sky-pojo模块介绍
Entity:实体,通常和数据库中的表对应
DTO:数据传输对象,通常用于程序中各层之间传递数据
VO:视图对象,为前端展示数据提供的对象
pojo:普通Java对象,只有属性和对应的getter和etter
使用Git进行版本控制
害,这比网,推了半天都推不到github上
推上去了,仓库地址
数据库环境搭建这个比较好哎,有一个sql外加一个数据库设计文档
各个表介绍
前后端联调后端的初始工程中已经实现了登录 ...
Hexo Algolia配置
注册Algolia账号Algolia官网
进入然后注册账号,可以用github或者gmail
新建Indices,新版网站在get Started处
新建Index,命名为hexo(随意)
在settings中找到API Keys:
_config.yml配置
首先在主题配置文件中开启algolia12345678# Algolia searchalgolia_search: enable: true hits: per_page: 6 tags: # - 前端 # - Hexo
然后将以下内容配置到_config.yml中,**注意别配置到主题配置文件中了,不然会报错12345678910111213141516# algolia搜索: https://github.com/LouisBarranqueiro/hexo-algoliasearchalgolia: appId: "your appId" apiKey: "your apiKey" adminApiKey: "your adminApiK ...
SpringCloud
2023年3月15日 20点02分
SpringCloud开始SpringCloud的学习
分布式微服务架构?所以说学这个一定要懂得SpringBoot
技术要求:java8+maven+git,github+Nginx+RabbitMQ+SpringBoot2.0
完了,两个没学
那算了,先把Nginx和RabbitMQ学完再来了
bye
2023年3月26日 11点58分
花了11天,才把RabbitMQ看完,后面的Nginx用到的时候再现学吧
绝了,阳哥建议关弹幕学习哈哈哈哈,弹幕还是太杂了
不在能知,乃在能行
1 微服务架构与SpringCloud
微服务架构的概念
微服务架构是一种架构模式,它提倡将单一应用程序划分成一组小的服务,服务之间互相协调,互相配合,为用户提供最终价值.每个服务运行在独立的进程中,服务与服务之间采用轻量级的通信机制互相协作(通常是HTTP协议的RESTful API),每个服务都围绕着具体业务进行构建,并且能够被独立的部署到生成环境,类生产环境等.另外,应当尽量避免统一的,集中式的服务管理机制,对具体一个服务而言,应根据业务上下文,选择合适的语言 ...
Github Pages绑定域名
直接看最后,前面别看了
购买域名这里以namesilo为例,因为namesilo购买的域名不需要备案就可以使用
来到namesilo官网注册账号,购买域名.
挑选自己想要的顶级域名:
可以使用支付宝支付
配置DNS解析
来到域名管理界面
点击域名后的蓝色小球:
把默认的配置全部删除
往下翻,找到Github的模板,应用该模板:
ADDRESS/VALUE填自己pages的ip地址,可以通过ping的方式来获取
再添加一个CNAME:
格式为:
Pages添加自定义域名
进入pages的仓库,点击Settings
找到Pages项,在Custom domain处添加你的域名,并在下方勾选Enforce HTTPS
此时就可以通过域名来访问Pages了
解决Hexo d更新博客后自定义域名失效的问题由于绑定了自定义域名,仓库中会自动在根目录添加一个CNAME文件,文件内里是你的域名,但是本地仓库中是没有这个文件的,所以每次执行hexo d都会使自定义域名失效
解决办法:
在博客的source目录下,新建一个CNAME文件,文件内容就是你的域名:
这样每次执行he ...
开发工具箱
Spring配置
统一异常处理
统一结果返回对象
MyBatis-Plus配置
ResultMap配置
SpringBoot配置
Docker配置
Vue配置
Swagger配置
那些难记又经常用的代码片段-待补充
Spring配置Spring核心配置文件AOP最佳实战统一结果返回对象一般的返回结果结构:
1234567891011{ "code": 200, "message": "成功", "data": ...
Shell编程
Shell学习笔记Linux马上就要考试了,我猜这个shell编程是一个考点,所以,看看吧.
1 Shell概述Shell是一个命令行解释器,它接收应用程序/用户命令,然后调用操作系统内核
或者说是shell脚本,可以一行一行解释程序
查看系统提供的shell解释器:cat /etc/shells
centos7内置的shell解释器就是bash,或者说是sh,系统内的sh链接到了bash,所以后面使用sh或者bash都是一样的效果
2 Shell脚本入门
脚本格式
脚本以#!/bin/bash开头(指定解析器)
第一个Shell脚本:hello.sh12#!/bin/bashecho "hello,world!"
执行:bash(sh) hello.sh-也可以指定目录,相对路径和绝对路径都行
还有一种执行方式就是直接输文件名:一执行就提示没有权限了,因为一个文件默认是只有读写权限的,并没有可执行的权限,所以要先授予该文件以执行权限授予权限前:执行:chmod +x hello.sh授予权限,会发现多了一个x,即代表该文件拥有了可执 ...
AnZhiYu主题自定义分类
AnZhiYu主题文档讲的很清楚
这里记录一下我创建分类页面的流程
去除categories目录下的index.md中的type: "categories"
修改该index.md,添加以下内容:123456789101112131415161718192021222324252627282930313233343536373839404142434445---title: 分类date: 2023-04-05 17:27:56aside: falsetop_img: false---<style> #libCategories .card-wrap:hover .card-info:after { width: 300%; }</style><link rel="stylesheet" type="text/css" href="https://npm.elemecdn.com/js-heo@1.0.11/3dCard/no3d.css"> ...