使用Markdown语法写文章这是从掘金抄的。一份简要的 Markdown 引导指南,希望可以帮助您顺利的开始使用 Markdown 编辑器。
丰富的快捷键本 Markdown 编辑器支持丰富的格式快捷键,可以非常便捷、轻松的使用 Markdown 语言,形成优美的排版和内容格式。
支持的快捷键有:
加粗: Ctrl/Cmd + B
标题: Ctrl/Cmd + H
插入链接: Ctrl/Cmd + K
插入代码: Ctrl/Cmd + Shift + C
行内代码: Ctrl/Cmd + Shift + K
插入图片: Ctrl/Cmd + Shift + I
无序列表: Ctrl/...
简单介绍redis
Redis是 C 编写的,高性能非关系型数据库。
Redis 键只能为字符串,值支持五种数据类型:string、has、list、set、zset。
Redis 的数据存在内存中的,读写速度非常快, redis 被广泛应用于缓存方向,每秒可以处理超过 10万次读写操作,是已知性能最快的Key-Value DB。
支持数据持久化,支持AOF(Append Only File)和RDB(Redis DataBase)两种持久化方式。
支持主从复制,主机会自动将数据同步到从机,可以进行读写分离。
Redis 也经常用来做分布式锁和分布式事务。
不能用作海量数据的高性能读写
...
0. 基于Redis集群解决单机Redis存在的问题单机的Redis存在四大问题:
数据丢失问题–解决:实现redis数据持久化
并发能力问题–解决:搭建主从集群,实现读写分离
故障恢复问题–解决:利用redis哨兵,实现健康检测和自动恢复
存储能力问题–解决:搭建分片集群,利用插槽机制实现动态扩容
1. Redis持久化Redis有两种持久化方案:
RDB持久化
AOF持久化
1.1 RDB持久化RDB全称Redis Database Backup file(Redis数据备份文件),也被叫做Redis数据快照。简单来说就是把内存中的所有数据都记录到磁盘中。当Redis实例故障...
多线程-并发②16. 数据并发操作可能的问题?
丢失的修改
不可重复读,读第二次,数据就不对了
读脏数据
幻影读
17. 消息等待通知wait/notify具体的应用
一个线程修改了一个对象的值,另外一个线程需要感知到这个变化
Java中我们使用的对象锁以及wait/notify方法进行线程通信
等待方遵循的原则:
获取对象的锁
不满足条件 就调用wait()方法
条件满足继续执行
通知方原则:
获取对象的锁
改变条件, 然后notify
18. 线程池中 submit() 和 execute() 方法有什么区别?
execute() 参数 Runna...
多线程-并发①1.Java中的锁
乐观锁/悲观锁
共享锁/独享锁
公平锁/非公平锁
互斥锁/读写锁
可重入锁
自旋锁
分段锁
偏向锁/轻量级锁/重量级锁
2. Java线程的状态|生命周期
Java的线程状态被定义在公共枚举类java.lang.Thread.state中。一种有六种状态
新建(NEW):表示线程新建出来还没有被启动的状态,比如:Thread t = new MyThread();
就绪/运行(RUNNABLE):该状态包含了经典线程模型的两种状态:就绪(Ready)、运行(Runnin...
1. nginx介绍
Nginx是一款轻量级的Web服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器。其特点是占有内存少,并发能力强,事实上nginx的并发能力在同类型的网页服务器中表现较好,中国大陆使用nginx的网站有:百度、京东、新浪、网易、腾讯、淘宝等。
Nginx是由伊戈尔·赛索耶夫为俄罗斯访问量第二的Rambler.ru站点(俄文:Рамблер)开发的,第一个公开版本0.1.0发布于2004年10月4日。nginx官网
2. 安装一般推荐安装在linux服务器,其他操作系统可查看官网网站
2.1 联网使用包管理器安装方式最简单即使用包管...
Proxmox VEProxmox VE(PVE),开源虚拟化解决方案,如果觉得VMware的ESXI过于庞大复杂,可以尝试以下,普通PC就可安装,支持分布式。据说基于KVM,操作系统是万能的Debian。
官网:https://www.proxmox.com/en/
中文社区:https://www.proxmox.wiki/
很多资料都可以在社区找到,安装也及其简单快捷,只需下载镜像,刻录到U盘,在需要安装的主机引导U盘启动,安装镜像的安装指导,一步一步安装即可,安装成功后,在界面会有管理网址弹出,直接web访问管理网址即可。目前的版本是6.4,开源产品,迭代还是很快的,据说是采用的...
Java算法基础-数据结构-设计模式1. 动态代理有几种实现?
java的动态代理技术的实现主要有两种方式:
JDK原生动态代理
CGLIB动态代理
JDK原生动态代理是Java原生支持的,不需要任何外部依赖,但是它只能基于接口进行代理(需要代理的对象必须实现于某个接口)
CGLIB通过继承的方式进行代理(让需要代理的类成为Enhancer的父类),无论目标对象有没有实现接口都可以代理,但是无法处理final的情况。
2. 堆和栈的区别?
栈内存
栈内存首先是一片内存区域,存储的都是局部变量
凡是定义在方法中的都是局部变量(方法外的是全局变量),for循环内部定义的也是局部...
数组基础1.ArrayList和LinkedList区别?
都是List接口的实现类
ArrayList基于数组,LinkedList基于链表
ArrayList3.1 查询快,增删慢3.2 往数组尾部添加元素的效率高,也就是调用add(obj),但是还是比LinkedList慢。
LinkedList4.1 数据添加删除效率高,只需要改变指针指向即可4.2 查询数据的平均效率低,需要对链表进行遍历
2.ArrayList扩容机制怎样?
ArrayList每次扩容是原来的1.5倍。
数组进行扩容时,会将老数组中的元素重新拷贝一份到新的数组中,每次数组容量的增长大约是其原容量的1.5倍。...
服务器本质上也是就是加强版的计算机,服务器主要对外提供服务。但这有什么好谈论的呢?现代网络条件下,随着物联网的进一步发展,万物互联成为了趋势,那这一切服务的背后,是无数的服务器的支撑。
我曾经一度很好奇,各种云厂商,如阿里云等,巨量的服务器是如何运维的?他们的服务器安装的是什么系统,不同的架构(如X86或ARM)对前端服务有何影响?网上资料很少,我的见解也是一知半解,只当记录,留作参考。
磁盘阵列RAID谈论服务器绕不开磁盘阵列,本质上磁盘阵列是硬盘的一种冗余方式,从接触的服务器来看,大多服务器自带raid卡,可以进行硬件层面的磁盘阵列,牺牲性价比的raid1,两个磁盘互备,损失一半容量...