自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 缓存失效、穿透和雪崩的处理总结

1. 缓存失效问题描述:缓存第一个经典问题是缓存失效。服务系统查数据、首先会查询缓存,如果缓存数据不存在,就进一步查DB,最后查到数据后回种到缓存并返回。缓存的性能比DB高50~100倍以上,所以希望数据在查询的时候尽可能命中缓存,这样系统符合最小,性能最佳。缓存里的数据存储基本上都是以key为索引进行存储和获取的。业务访问的时候,如果大量的key同时过期,很多缓存数据访问都会miss,进...

2020-02-09 18:49:05 331

原创 设计缓存架构时需要考虑的因素总结

1. 缓存组件的选择在设计架构缓存的时候,首先要选定缓存组件,比如要用Local-Cache,还是Redis、Memcached、Pika等开源缓存组件。如果业务缓存需求比较特殊,还要考虑是直接定制开发一个新的缓存组件,还是对开源缓存进行二次开发,来满足业务需要。2. 缓存数据结构设计确定好缓存组件后,要根据业务访问的特点,进行缓存数据结构的设计。对于简单的KV读写的业务,将这些业务数据...

2020-02-09 16:32:55 483

原创 如何根据业务来选择缓存模式和组件

如上图,业务系统读写缓存有三种模式:Cache Aside(旁路缓存)Read/Write Through(读写穿透)Write Behind Caching(异步缓存写入)1. Cache Aside (旁路缓存)如上图所示,在Cache Aside中:读/写对于写,是更新 DB 后,直接将 key 从 cache 中删除,然后由 DB 驱动缓存数据的更新。对于读,是先...

2020-02-09 13:57:24 292

原创 什么是缓存

缓存的定义**狭义缓存:**缓存最初的含义,用于加速CPU数据交换的RAM,即随机存取存储器,通常这种存储器使用昂贵但快速的静态RAM(SRAM)技术,用于对DRAM进行加速。**广义缓存:**任何可以用于数据高速交换的存储介质都是缓存,可以是硬件也可以是缓存。缓存的意义缓存存在的意义就是通过开辟一个新的数据交换缓冲区,来解决原始数据获取代价太大的问题,让数据得到更快的访问。缓存原理缓...

2020-02-09 13:28:27 629

原创 一探究竟:为什么需要JVM,它处在什么位置

作为一名软件工程师,在日常工作中除了Java这个关键词之外,还有另一个名词经常提及,那就是JVM。提到JVM经常会在面试中遇到下面的问题:为什么Java研发系统需要JVM?对JVM的运行原理了解多少?Java代码到底是如何运行起来的?想要完美的回答者三个问题,就需要首先了解JVM是什么?它和Java有什么关系?又与JDK有什么渊源?要想拨开这些问题的层层迷雾,需要从三个方面问题去思考:...

2020-02-04 17:28:24 707

原创 总结各种设计模式之间的关联

不要生搬硬套,根据业务场景选择。不要把简单的事情搞复杂,设计模式用来解决复杂问题。把复杂的问题变得简单起来(总结利用好前任经验)。创建型:(只对结果负责,不要三无产品)工厂模式 原始社会 --> 农耕社会 --> 小作坊 --> 工厂 --> 流水线生成 Spring: BeanFactory FactoryBean 单例模式(保证独一无二)...

2020-02-03 23:24:01 423

原创 本质上,实现线程的方式只有一种

实现线程是并发编程中基础的基础,因为只有先实现多线程,才可以继续后续一系列操作。虽然实现线程看似简单,但实际上却暗藏玄机。实现线程的的方式到底有几种?2种、3种或是4种,很少人说只有1种。接下来看看它们具体指什么?2种实现方式的描述是最基本的,也是最熟知的,就先以2种线程实现方式的源码为例。实现Runnable接口// 代码1public class RunnableThrea...

2019-11-13 21:38:57 234

原创 浏览器页面渲染机制

浏览器的内核是指支持浏览器运行的最核心的程序,分为两个部分的,一是渲染引擎,另一个JS引擎。渲染引擎在不同的浏览器中也不尽相同。目前市面上常见的浏览器内核可以分为这四种:Trident(IE)、Gecko(火狐)、Blink(Chrome、Opera)、Webkit(Safari)。这里面俺最熟悉的是Webkit内核了,Webkit内核是当下浏览器世界的老大。俺就以Webkit位栗子,对现代浏览器...

2019-08-28 16:53:43 193

原创 Java基本数据类型

变量是申请内存来存储值。当创建变量的时候,需要在内存中申请空间。内存管理系统根据变量的类型分配存储空间,分配的空间只能用来存储该类型数据。于是,通过定义不同类型的变量,可以在内存中存储整数、小数或着字符。Java中有两大数据类型:内置数据类型 引用数据类型内置数据类型Java语言提供了八种基本数据类型。其中包括:六种数字类型(四个整数型,两个浮点型),一种字符类型,一种布尔...

2019-08-26 16:38:33 237

原创 1. 数据库的四个基本概念

数据库的四个基本概念数据,数据库,数据库管理系统和数据库系统是与数据库技术密切相关的4个基本概念。1). 数据(data)描述事物的符号记录,譬如:数字、文字、图形、图像、音频、视频等,多种表现形式,均可以经过数字化存入计算机之中。数据的表现形式还不能完全表达其内容,需要经过解释,数据的解释是指数据含义的说明,数据含义称为语义,数据与其语义是密不可分的。2). 数据库(Data...

2019-05-29 15:50:34 8647 1

转载 Java性能优化(上)

Java性能优化的50个细节1. 尽量在合适的场合使用单例2. 尽量避免随意使用静态变量3. 尽量避免过多过常地创建Java对象4. 尽量使用final修饰符5. 尽量使用局部变量6. 尽量处理好包装类型和基本类型两者的使用场所7. 慎用synchronized,尽量减小synchronize的方法8. 尽量不要使用finalize方法9. 尽量使用基本数据类型代替对象10. 多线程在未发生线程安...

2019-05-06 16:54:57 196

原创 web以及网络基础总结(上)

Web是建立在何种技术之上,以及HTTP协议是如何诞生并发展的,从其背景入手,深入了解这部分内容。1. 使用HTTP协议访问web当我们在网页浏览器(Web browser)的地址栏中输入URL时,Web页面是如何呈现的吗?Web页面当然不是凭空显示出来的。根据Web浏览器地址栏中指定的URL,Web浏览器从Web服务器端获取文件资源(resource)等信息,从而显示出Web页面...

2019-03-27 17:44:59 560

原创 桥梁『桥接』模式

引子谁都梦想能够成为亿万富翁。假设你有两家公司,一家是房地产公司,另一个家是服装制造公司。这两家公司都很赚钱,天天帮你积累财富。其实你并不关心公司类型,你关心的是它们赚不赚钱,赚了多少。商人嘛,唯利是图是其本性,偷税漏税是方法,欺上瞒下,压榨员工血汗是常用的手段。使用类图表示这两个公司,如图1所示:类图很简单,首先声明了一个Crop的抽象类,定义一个公司的抽象模型,公司首要是赚钱的,做...

2019-01-30 15:08:08 264

原创 完全卸载node.js

node在安装后无法实现使用命令行卸载,需要手动删除一些文件夹。1. Mac方法一:1. 删除/usr/local/lib中所有node和node_modules的文件夹2. 如果是从brew安装的,运行brew uninstall node3. 检查~/中所有的local、lib或者include文件夹,删除里面所有node和node_modules4. 在/usr/l...

2019-01-28 11:14:47 13631

原创 shell script的默认变量($0,$1...)

Linux的命令可以带有参数,例如ls -al可以查看包含隐藏文件的所有属性与权限。那么shell script能不能在脚本文件名后面带有参数呢。举例子:重启系统注册表文件的功能:上面的命令可以重新启动/etc/init.d/network这个程序。如果在其后面加个stop呢,很明显,就可以直接关闭该服务了!如果想要依据程序的执行给予一些变量去进行不同的任务时(虽然可以使用read命令...

2018-11-25 12:08:42 1009

原创 shell script的判断式

如果想要判断一个目录是否存在,可以使用命令ls搭配数据流重定向,再配合$?来决定后续的命令进行与否。但是还有跟简单的方式开进行“条件判断”。他们是"test"命令和判断符合[]「中括号」1.利用test命令的测试功能当检测系统上面某些文件或者相关的属性时,利用test这个命令的效果非常令人满意。当我要检查“/test”是否存在时,使用:执行的结果不会显示任何信息,但是通过$...

2018-11-25 11:01:03 580

原创 script的执行方式区别(source,shscript,./script)

不同的script执行方式会造成不一样的结果。尤其对bash的环境影响很大。脚本执行方式除了sh方式之外,还可以利用source或小数点来执行。这三种执行方式有何不同,如下:1. 利用直接执行的方式(shscript,./script)利用这两种命令执行(无论是绝对路径还是相对路径甚至$PATH内),该script是在子进程的bash内执行的。根据父进程和子进程的概念可知,当子进程完成后,...

2018-11-16 12:02:37 1111

原创 Linux文件属性总结

Linux的文件权限是如何针对“用户”与“用户组”设置的呢?1. Linux文件属性查看文件属性的命令:ls命令英文原意:list[root@www ~]# ls -altotal 36dr-xr-x---. 2 root root 4096 Nov 13 14:51 .drwxr-xr-x. 18 root ro...

2018-11-13 17:36:10 451

原创 linux用户与用户组

linux用户与用户组Liunx最优秀的地方之一,在于它的多用户、多任务环境。而为了让各个用户具有有效的保密文件数据,文件的权限管理就变得非常的重要了。Liunx一般将文件可存取访问的身份分为3个类别,分别是owner、group、others,且三种身份各有read、write、execute等权限。若管理不当,Linux主机将变得非常令人不舒服!Linux下面辣么多的目录、文件...

2018-11-13 17:23:15 267

转载 大型项目架构演进过程及思考的点

转载自慕课网Geely老师的手记:大型项目架构演进过程及思考的点原文地址:https://www.imooc.com/article/17545

2018-11-13 11:40:41 289

原创 C语言解决常胜将军问题

问题描述:有21张纸牌,两个人依次取,每次每人只可以取走1~4张,不能多取,也不能不取,谁取到最后一张谁输。编写一个人机对弈程序,要求人先取,计算机后取;结果计算机为“常胜将军”。问题分析:这样思考这个问题,要想让计算机是“常胜将军”,也就是要然取到最后1张纸牌。这样只有一种可能,就是让计算机只剩1张纸牌给人,因为此时人至少取1张纸牌。其他的情况都不能保证计算机常胜。于是,问题转化...

2018-11-13 11:15:56 1199

原创 Nginx + Tomcat实现负载均衡

特此声明:文章参考自https://www.imooc.com/article/34866和https://blog.csdn.net/xlgen157387/article/details/497814871. 工具nginx/Windows-1.14.0 Apache Tomcat 8.5.332. 目标实现高性能负载均衡的Tomcat集群:3. 步骤1. 首先...

2018-11-13 09:54:57 283

原创 HTTP的状态码

HTTP状态码负责表示客户端HTTP请求的返回结果、标记服务器端的处理是否正常、通知出现的错误等工作。此文章目的是好好了解一下状态码的工作机制。1. 状态码告知从服务器端返回的请求结果状态码的职责:当客户端向服务器发送请求时,描述返回的请求结果;状态码的作用:借助状态码,用户可以知道服务器端是正常处理了请求,还是出现了错误。响应的类别有以下5种:表1:状态码的类别 状态码 ...

2018-10-01 23:33:16 234

原创 关于Navicat连接不上MySQL 8.0解决办法

安装MySQL8.0之后,使用Navicat连接,总是报错1251;具体错误信息如下:原因是Mysql 8.0版本的加密方式MySQL 5.x的不一样,连接报错。如下:因此更改加密方式,可以解决此问题。具体实现如下:1.更改加密方式:2.更改密码:3. 刷新:4.这样就解决啦!           ...

2018-09-29 11:55:45 9492 3

原创 Web应用和web.xml

JSP、Servlet、Listener和Filter等都必须运行在Web应用中,因此应该熟悉如何构建一个Web应用。1. 构建Web应用徒手创建一个Web应用,如下步骤:在任意目录下创建一个文件夹,并命名为webDemo,将其作为一个Web应用; 在第一步创建的文件夹内创建一个WEB-INF文件夹(注意大小写,这里区分大小写); 进入Tomcat或其他的Web容器内,找到任何一个...

2018-09-21 10:56:45 373

原创 Java编程思想(第四版)阅读笔记(十四)—— 类型信息

类型信息目录类型信息1. 为什么需要RTTI2. Class对象3. 类型转换前先做检查4. 注册工厂5. instanceof 与 Class的等价性6. 反射:运行时的类信息7. 动态代理8. 空对象9. 接口与类型信息 运行时类型信息可以在程序运行时发现和使用类型信息。它使从只能编译其执行面向类型的操作的禁锢中解脱了出来,并且可以使...

2018-07-24 09:10:54 251

原创 Java编程思想(第四版)阅读笔记(四)—— 控制执行流程

就像有知觉的生物一样,程序必须在执行过程中控制它的世界,并做出选择,在Java中,你要使用执行控制语句来做出选择。Java使用了C的所有流程控制语句。大多数过程型编程语言都具有某些形式的控制语句。它们通常在各种语言是交迭的。在Java中,涉及的关键字包括if-else、while 、do-while、for、return、break以及选择语句switch。但是,Java并不支持goto语句(...

2018-07-22 22:17:30 323

原创 大旗不挥,谁敢冲锋—六大设计原则之单一职责原则

单一职责原则 1. 我是“牛”类,我可以担任多职吗单一职责原则,英文名称是:Single Responsibility Principle,简称SRP。该职责备受争议,争议之处在于——对职责的定义,什么是类的职责,以及怎么划分类的职责。但是首先弄清楚什么是单一职责原则?在做项目的时,用户、机构、角色管理这些模块肯定会接触到,基本上使用的都是RBAC模型(Role-Based Acc...

2018-07-20 13:37:11 257

空空如也

空空如也

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

TA关注的人

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