自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(24)
  • 收藏
  • 关注

原创 Redis系列之sorted set

前言上节我们介绍了Redis的set集合类型,今天来介绍另一个集合类型,sorted set有序集合,一个可以用于排序的集合,我们赶紧来认识下吧。命令向指定有序集合中添加一个或多个元素:zadd key score1 value1 score2 value2 ...获取有序集合中的成员总数:zcard key计算在有序集合中指定分数之间的元素数量:zcount key minscore maxscore对指定集合中某个元素的分数值增量增...

2020-05-31 22:08:26 22374

原创 Redis系列之set

前言上节我们介绍了Redis的列表,接下来我们继续Redis的数据类型,今天讲的是set集合,上节我们知道List中是可以允许重复元素出现的,而在今天的set集合中是不允许重复的元素出现的,下面我们就一起来认识下Redis的set吧。命令向指定集合中添加一个或多个元素(重复的元素会被忽略):sadd keyset value1 value2 ...获取指定集合中元素的总个数:scard keyset返回指定集合中所有元素:smembers keyset...

2020-05-31 22:07:12 22282

原创 Redis系列之List

前言上节我们了解了Redis的哈希表类型,接下来我们讲讲Redis的List类型,Redis按照插入顺序排序,先进后出。命令将一个或多个值插入到列表头部:lpush keyList value1 value2 ...将一个值插入到已存在的列表头部(当list不存在时,插入失败):lpushx keyList value将一个或者多个值插入列表尾部:rpush keyList value1 value2 ...将一个或者多个值插入...

2020-05-28 13:13:25 24124

原创 Redis系列之Hash

前言上节我们介绍了Redis的String类型,今天我们聊聊Hash类型,从上节的学习我们知道要存储一个值对应的属性特别方便,但是如果要像Mysql数据库那样存储一条数据就比较麻烦了,或者说像Java的Model一样存储一个实体对象,该怎么存储呢?所以今天我们来聊聊Hash存储,它就可以满足这种类型的数据存储。首先我们来看下存储一个User对象的属性值,包含name、age、job属性:下面我们开始讲解Hash的命令将Hash表中key的字段赋值:hset key file ..

2020-05-28 12:02:11 25020

原创 Redis系列之String

前言上节我们介绍了Redis的key相关操作,前面也谈到Redis中有5大数据类型,今天我们就来谈谈5大数据类型之一:String类型,我们主要介绍Redis中String的用法。基本语法String的基本语法:command keyname常见命令设置指定 key 的值:set keyname value获取指定key的值:get keyname按范围返回字符串中值:getrange keyname startindex endindex...

2020-05-27 11:10:45 25578

原创 Redis系列之Key操作

前言之前我们在介绍Redis时就说过Redis是以K-V键值对形式存储的,那么对于Redis而言,这个Key无疑就显得十分的重要和关键,对于数据的检索获取都得以它为基础去操作,那么我们就来看看Redis中那些关于Key的操作。语法Redis key的语法格式如下:command keynameRedis keys 命令讲key之前我想先对Redis数据存储做个说明,Redis中默认把内存空间分成16份独立的区域,可以理解为分为16个数据库,默认情况下使用的第0个数据库,例如:..

2020-05-27 10:34:26 26432

原创 Redis系列之数据类型

Redis支持数据类型有以下5种:string(字符串),hash(哈希),list(列表),set(集合)及zset(sorted set:有序集合),下面我们将一一介绍。String(字符串)string是redis最基本的类型:一个key对应一个value,一个key最大能存储512MB;string类型是二进制安全的:意思是redis的string可以包含任何数据。比如jpg图片或者序列化的对象 ,为什么说S听类型是二进制安全的呢?这是由于Redis内部对String的定义是一.

2020-05-26 20:11:10 25814

原创 大型网站架构之总结:秒杀案例与小结

前言目前为止,我们就已经将大型网站架构设计介绍了一遍,主要都是从大方向上去涵盖的,具体细分后每个细节,还是有很多东西需要我们去深入研究的,当然,今天我们就不去做深入研究各个细节了,后期再慢慢讲到。今天我们主要是讲个互联网电商中常见的一个案例:秒杀,然后对我们之前讲的内容做个简单的总结概括。接下来我们先谈谈秒杀的设计吧。什么是秒杀?秒杀是电商常见的一种营销手段:将少量的商品,以极低的价格,在特定的时间点开始出售,网站通过这种营销手段,制造某种轰动效应,从而达到网站推广的目的,秒杀虽然对网站推.

2020-05-26 20:04:29 26654

原创 大型网站架构之安全性:高安全架构

前言大型网站核心要素之前我们介绍了4个,今天讲讲这最后一个:安全性,从互联网诞生开始,安全威胁就一直伴随着网站的发展,各种web攻击和信息泄露也从未停止,那么我们今天就从下面这几点谈谈网站架构的安全性:网站应用与防御、信息加密及秘钥安全管理、信息过滤与反垃圾。网站应用与防御 XSS攻击:站点脚本攻击,指黑客通过篡改网页,注入恶意HTML脚本,在用户浏览网页时,控制用户浏览器进行恶意操作的一种攻击方式;常见的XSS攻击类型主要有2种:反射型和持久型XSS攻击。 反射型:攻击者诱使用户点.

2020-05-26 17:26:08 28022

原创 大型网站架构核心要素之扩展性:可扩展架构

前言续上节大型网站架构核心要素性能之后,我们今天要讲的是第四个要素:扩展性,什么叫扩展性呢?简单的说就是在对现有系统影响最小的情况下,系统功能可持续扩展及提升的能力,讲扩展性之前,我先讲下扩展性和伸缩性的区别,因为这两个点经常有人会混淆;扩展性:指对现有系统影响最小的情况下,系统功能可持续扩展或提升的能力,表现在系统基础设施稳定,不需要经常变更,应用之间较少依赖和耦合,对需求变更可以快速敏捷响应。它是系统设计层面的开闭原则(对扩展开放,对修改关闭),架构设计考虑未来功能扩展,当系统增加新功能时,不需

2020-05-26 15:30:40 28248

原创 大型网站架构核心要素之伸缩性:伸缩性架构

前言续上节大型网站架构核心要素性能之后,我们今天要讲的是第三个要素:伸缩性,所谓的网站伸缩性是指不需要改变网站的软硬件设计,仅仅通过改变部署的服务器数量就可以扩大或者缩小网站的服务处理能力。前面我们已经介绍过一个大型网站都是从小网站一步步演变过来的,在这个渐进式的演化过程中,最重要的手段就是使用服务器集群,通过不断向集群中添加新的服务器来增强整个集群的处理能力,这就是网站系统的伸缩性架构,只要技术上能够做到向集群中加入服务器的数量和集群的处理能力成线性关系,那么网站就可以以此手段不断提升自己的规模和

2020-05-26 11:51:01 26492

原创 大型网站架构核心要素之可用性:高可用架构

前言上节我们讲了网站核心要素之性能,这节我们接着讲第二个核心要素可用性,网站的可用性,描述的是一个网站是否可以正常使用的特性,这个特性是比较关键的,直接影响公司形象和利益,因此也有很多大公司把这点作为技术人员的绩效考核之一。既然那么重要,那么我们就好好的谈一谈如何构建一个高性能网站架构,我们将从如下几个大方面展开讨论:度量与考核、网站架构高可用、应用高可用、服务高可用、数据高可用、软件质量保证、运行监控。网站可用性的度量与考核 网站可用性度量:网站不可用又称为网站故障,通常用多少个9来衡.

2020-05-24 10:04:07 905

原创 大型网站架构核心要素之性能:高性能架构

前言上节我们讲了架构设计的五大核心要素,今天我们就讲第一个核心要素:性能,性能是一个网站给用户最直接的感受,是一个网站的灵魂。下面我们将从以下几个方面谈谈如何构建一个高性能架构:网站性能测试、web前端优化、应用服务器优化、存储性能优化。网站性能测试性能测试是性能优化的前提和基础,也是性能优化结果的检验和度量标准,不同视角下的网站有不同的标准,也对应不同的优化。下面我们将依次展开:不同视角下的网站性能 用户视角:对于用户而言,发出一个请求,到响应结束所用的时间就是最直观的性能表现.

2020-05-23 22:27:21 27425

原创 大型网站架构之核心要素

上节我们讲了架构的演变和模式,那到底什么是架构呢?架构的核心又是什么呢?带着这写疑问,我们开启今天的旅途。什么是架构?比较通俗的概括就是:最高层次的规划,难以改变的决定;这些规划和决定,影响着事物未来发展的方向和蓝图。定位到软件架构层次,引用维基百科中的定义是这样的:有关软件整体结构与组件的抽象描述,用于指导大型软件系统各个方面的设计。那么一般来说,我们的系统除了要关注当前系统需求之外,还需要关注以下几个方面:性能、可用性、伸缩性、扩展性和安全性,架构过程中通过平衡这5个方面之间的关系来实现需.

2020-05-23 22:22:14 26920

原创 大型网站架构之架构模式

上节讲了大型网站的演变,今天讲下架构的模式,什么是模式呢?每一个模式描述了一个再我们周围不断重复发生的问题及问题解决方案的核心,这样你就能一次次重用该方案而不必去做重复的工作,可见模式的关键在于可重复性。网站架构模式的目标:面临高并发访问,海量数据处理,高可靠运行等问题和挑战,我们在实践中提出很多解决方案,主要为了实现网站的高性能、高可用、易伸缩、可扩展、安全等架构目标。网站架构模式具体方案分层:分层是一种常见的架构模式,将系统在横向维度上切分为几个部分,每个部分负责单一的职责...

2020-05-22 13:14:53 27036

原创 并发编程系列之并发编程的认识

前言今天我们开始接触并发编程的讲解,首先我们要知道并发编程的目的是什么?一个目的,为了让程序员运行的更快,但是有一点我们要知道,并不是启动越多的线程就能让程序更大限度的并发执行,在并发编程的开发中,如果希望使用更多的线程来加快程序的运行,一般我们会面临下面几种挑战:上下文切换问题,死锁、以及受硬件和软件资源的限制问题,那么我们一个个来说下吧,让我们开始今天的并发编程之旅吧。上下文切换什么是上下文切换?即使是单核处理器,也支持多线程执行代码,CPU通过给每个线程分配CPU时间片来实现这个机

2020-05-21 14:36:46 27451

原创 大型网站架构之架构演变

处于这个互联网开发时代,作为一名软件工程师,我们经常会听到大型网站架构这个字眼,那到底什么是大型网站呢,这样的网站又是一种什么样的架构设计呢?今天我们就开始谈谈大型网站架构设计系列,首先我们今天讲讲大型网站架构设计是如何演变的,跟着我一起出发吧。大型网站系统的特点 高并发,大流量:需要面对高并发用户,大流量访问; 高可用:系统24小时不间断的提供服务; 海量数据:需要存储、管理海量的数据,需要使用大量的服务器; 用户分布广泛,网络情况复杂:很多大型网站都是为全球.

2020-05-21 14:34:02 27524

原创 SpringBoot配置多数据源

配置文件配置多个数据源:spring: datasource: druid: # DB1 db1: url: jdbc:mysql://XXXXXX?useUnicode=true&characterEncoding=UTF-8&serverTimezone=GMT%2B8&allowMultiQueries=true username: xxxx password: ******** .

2020-05-19 12:54:35 27970

原创 Redis系列之安装配置

前言缓存Redis的讲解,作为第一个开篇文章,我们不谈高深的东西,从以下几个方面介绍下Redis:简介、安装、配置、启动,OK,下面我们就开始今天的缓存之旅吧。什么是Redis?Redis是以Key-value形式存储,和传统的关系型数据库不一样,不一定遵循传统数据库的一些基本要求(非关系型的、分布式的、开源的、水平可扩展的)。它是以Key-value 形式存储,非关系型数据结构服务器。键可以包含:(string)字符串,哈希,(list)链表,(set)集合,(zset)有序集合。这些数据集合

2020-05-18 20:52:46 28212 1

原创 面试系列之线程篇

线程和进程?进程是资源分配和调度的最小独立单元,线程是CPU调度的基本单元;一个进程可以包含多个线程,多个线程共享该进程的资源;线程可以看作是轻量级的进程;进程间通信的方式?volatile,synchronized,wait/notifyAll,管道输入/输出流,thread.join(),ThreadLocal聊聊synchronized和lock?synchronized是Java中的一个关键字,通过该关键字修饰来达到同步的效果,被synchronized修饰的..

2020-05-17 20:54:32 28484

原创 算法入门之基本数据结构:链表

前面我们简单的对队列和栈有了个了解,今天我们还要将一种数据结构,Java中很多集合类都是由这几种数据结构演变而来的,除了队列和栈还有我们今天要说的链表,链表其实还是蛮复杂的,在C中有个指针用来实现,很多人说java不存在指针概念,是不是就不能实现链表呢,答案是否,java虽然没有指针但是有对象的引用,我们先看看java中怎么实现链表,然后再来具体分析链表到底是一种怎样的数据结构代码模拟链表:public class MyLinkList { // 使用数组模拟单向链表 pub...

2020-05-16 20:30:19 28657

原创 算法入门之基本数据结构:队列和栈

大家都知道,算法和数据结构是息息相关,学习数据结构能帮助我们更好的理解算法,理解编程,这是一种编程思想的培养;今天我们要介绍的数据结构是:队列,可以把队列想象成一个双向管道,一边进另一边出代码示例public class QueueDemo { public static void main(String[] args) { //1.初始化一组数据 int[] start = {1,2,3,4,5,6,7,8,9}; //2.初始化一个...

2020-05-16 20:00:44 28762 1

原创 面试系列之JVM

说说JVM的内存模型?方法区:存储已被虚拟机加载的类信息、常量、静态变量、即时编译后的代码等数据堆:存放对象实例,几乎所有的对象实例都要在堆上分配程序计数器:当前线程所执行的字节码的行号指示器虚拟机栈:描述的是Java方法执行的内存模型本地方法栈:为虚拟机使用到的native方法服务讲讲什么情况下回出现内存溢出,内存泄漏?内存溢出 out of memory:指程序在申请内存时,没有足够的内存空间供其使用,出现out of memory(比如申请了一个integer,但给它.

2020-05-16 19:57:42 28603

原创 面试系列之基础篇

强引用 、软引用、 弱引用、虚引用?一般面试官会这样问:你知道Java中对象的引用类型有哪几种吗?分别讲讲这几种之间的区别?强引用:只要强引用还存在,垃圾收集器永远不会回收被引用的对象;软引用:描述一些还有用但是并非必需的对象,将要发生内存溢出之前,会被列进回收范围之中进行第二次回收,如果在此次回收中还是没有足够的内存,就会抛出内存溢出异常(SoftReference);弱引用:只能存活到下一次垃圾回收之前,当垃圾收集器回收时,无论当前内存是否足够,被弱引用关联的对象都会被回收掉;虚引用

2020-05-15 19:54:54 28857

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除