自定义博客皮肤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)
  • 收藏
  • 关注

原创 2021-03-18

java zip解压压缩碰到坑String dzFile = jsonObject.getString("dzFile"); try { File zipFileName = new File("D://" + jsonObject.getString("fileName")); BASE64Decoder decoder = new BASE64Decoder(); byte[] bytes = decoder.de

2021-03-18 18:43:09 92

原创 什么是CAS?

什么是CAS?CAS是英文单词Compare And Swap的缩写,翻译过来就是比较并替换。CAS机制当中使用了3个基本操作数:内存地址V,旧的预期值A,要修改的新值B。更新一个变量的时候,只有当变量的预期值A和内存地址V当中的实际值相同时,才会将内存地址V对应的值修改为B.乐观锁乐观锁( OptimisticLocking)其实是一种思想。相对悲观锁而言,乐观锁假设认为数据一...

2020-05-05 20:21:46 925 1

原创 TCP三次握手四次挥手

TCP三次握手四次挥手三次握手过程理解第一次握手:建立连接时,客户端发送syn包(syn=x)到服务器,并进入SYN_SENT状态,等待服务器确认;SYN:同步序列编号(Synchronize Sequence Numbers)。第二次握手:服务器收到syn包,必须确认客户的SYN(ack=x+1),同时自己也发送一个SYN包(syn=y),即SYN+ACK包,此时服务器进入SYN_RECV...

2020-04-30 20:38:12 122

原创 session和cookie的区别

session和cookie的区别一·概念理解首先呢,要了解session和cookie的区别先要了解以下几个概念:1、无状态的HTTP协议: 协议,是指计算机通信网络中两台计算机之间进行通信所必须共同遵守的规定或规则,超文本传输协议(HTTP)是一种通信协议,它允许将超文本标记语言(HTML)文档从Web服务器传送到客户端的浏览器。HTTP协议是无状态的协议。一旦数据交换完毕,客户...

2020-04-30 20:35:48 128

原创 SQL连接查询的几种方式

一、交叉连接(cross join)交叉连接(cross join):有两种,显式的和隐式的,不带on子句,返回的是两表的乘积,也叫笛卡尔积。例如:下面的语句1和语句2的结果是相同的。语句1:隐式的交叉连接,没有cross join。select o.id, o.order_number, c.id, c.name from orders o , customers c where o.i...

2020-04-28 19:07:35 1197

原创 linux常用命令

系统信息arch 显示机器的处理器架构uname -m 显示机器的处理器架构uname -r 显示正在使用的内核版本dmidecode -q 显示硬件系统部件 - (SMBIOS / DMI)hdparm -i /dev/hda 罗列一个磁盘的架构特性hdparm -tT /dev/sda 在磁盘上执行测试性读取操作cat /proc/cpuinfo 显示CPU info的信息ca...

2020-04-28 19:04:52 218

原创 SpringMVC主要流程和主要注解

SpringMVC工作流程1、用户发送请求至前端控制器DispatcherServlet(前端控制器)。2、DispatcherServlet收到请求调用HandlerMapping处理器映射器。3、处理器映射器找到具体的处理器(可以根据xml配置、注解进行查找),生成处理器对象及处理器拦截器(如果有则生成)一并返回给DispatcherServlet。4、 Dispatcher...

2020-04-28 19:00:53 183

原创 nginx简介(http服务器,虚拟主机,反向代理,负载均衡)

Nginx简介Nginx是一个高性能的Http反向代理服务器,也是一个IMAP/pop3/SMTP服务器。官方测试Nginx能够支撑五万并发请求,并且CPU、内存等资源消耗非常低,运行非常稳定,这也是国内外各大互联网使用nginx的原因。nginx四个作用!1.http服务器。2.虚拟主机。3.反向代理。4.负载均衡。HTTP服务器NGINX本身也是一个静态资源的服务器,当...

2020-04-27 20:42:52 237

原创 redis的缓存过期策略和内存淘汰机制

一、redis的过期策略:redis的过期策略是:定期删除+惰性删除redis在存储数据时,可能会设置过期时间,而所谓的定期删除,指的是redis默认是每隔100ms就随机抽取一些设置了过期时间的key进行检查,如果过期了就会删除。至于为啥是每隔100ms随机抽取一些数据进行检查而不是全部检查,这就与cpu负载有关了,如redis中的数据十分庞大,并且全部都设置了过期时间,依次全部检查并...

2020-04-26 21:27:43 130

原创 redis持久化方案

redis的持久化方案Redis的高性能是由于其将所有数据都存储在了内存中,为了使Redis在重启之后仍能保证数据不丢失,需要将数据从内存中同步到硬盘中,这一过程就是持久化。 Redis支持两种方式的持久化,一种是RDB方式,一种是AOF方式。可以单独使用其中一种或将二者结合使用。RDBRDB方式的持久化是通过快照(snapshotting)完成的,当符合一定条件时Redis...

2020-04-26 21:21:32 147

原创 Redis简介*(数据类型,与memcache的比较,命令,单线程模型)

Redis 简介Redis 是完全开源免费的,遵守BSD协议,是一个高性能的key-value数据库。Redis 与其他 key - value 缓存产品有以下三个特点:Redis支持数据的持久化,可以将内存中的数据保存在磁盘中,重启的时候可以再次加载进行使用。Redis不仅仅支持简单的key-value类型的数据,同时还提供list,set,zset,hash等数据结构的存储。Red...

2020-04-26 06:31:08 163

原创 分布式锁 setnx实现方式,布隆过滤

分布式锁分布式锁是控制分布式系统之间同步访问共享资源的一种方式。在分布式系统中,常常需要协调他们的动作。如果不同的系统或是同一个系统的不同主机之间共享了一个或一组资源,那么访问这些资源的时候,往往需要互斥来防止彼此干扰来保证一致性,在这种情况下,便需要使用到分布式锁。SETNX命令简介命令格式 SETNX key value将 key 的值设为 value,当且仅当 key 不存在。...

2020-04-26 06:30:00 180

原创 HashMap的数据结构,哈希冲突,JDK1.7和JDK1.8 HashMap的区别

数据结构如下图所示,HashMap是利用数组与链表结合的形式构建的。竖列为数组结构,默认初始数量为16(1<<4)个,横列为链表结构用于解决散列冲突的问题。当数组中有值得元素超过了装载因子的比例(默认为0.75)时,会引发扩容的操作。此操作是为了避免元素过满时引起的链表长度过长,从而影响查找性能。上图为jdk1.7之前的实现,jdk1.8实现方法是当某一个桶中的元素个数超过了8时...

2020-04-24 22:01:14 210

原创 CAP 理论与BASE理论

①选择CA放弃分区容错性,比较简单的方式就是把所有的数据都放在一个分布式节点上。那不就又成为了单机应用了吗?②选择CP放弃可用性,一旦出现网络故障,受到影响的服务需要再等待一定时间,因为系统处于不可用的状态。③选择AP 放弃一致性,这里所指的一致性是强一致性,但是确保最终一致性。是很多分布式系统的选择。 小结:从cap的定理可以看出,分区容错性是一个最基本的要求,因为既然是一个分布式系统,必然要部署到两个或两个以上的节点上,否则,就不是分布式系统,因此我们只能在一致性和可用性寻求平衡

2020-04-24 21:55:39 150

原创 分布式事务 解决方案:2PC,TCC以及基于消息的最终一致性

分布式事务什么是分布式事务?分布式事务指事务的参与者、支持事务的服务器、资源服务器以及事务管理器分别位于不同的分布式系统的不同节点之上。简单的说,就是一次大的操作由不同的小操作组成,这些小的操作分布在不同的服务器上,且属于不同的应用,分布式事务需要保证这些小操作要么全部成功,要么全部失败。本质上来说分布式事务用于在分布式系统中保证不同节点之间的数据一致性。分布式事物的实现有很多种,最具代...

2020-04-24 21:47:21 653

原创 数据库锁(行锁,表锁,共享锁,排他锁)脏读、不可重复读、幻读和事物隔离级别

数据库锁(行锁,表锁,共享锁,排他锁)行锁我们知道mysql的Innodb引擎是支持行锁的,与Oracle不同,mysql的行锁是通过索引加载的,即行锁是加载索引响应的行上的,要是对应的SQL语句没有索引,则会走表锁。行锁无法实现,取而代之就是表锁。行锁特点:1.行锁必须有索引才能实现,否则会自动锁全表,那么就不是行锁了。2.两个事务不能锁同一个索引。3.锁冲突概率低,并发性高,...

2020-04-23 21:56:57 1258 1

原创 数据库的优化,结构 优化

数据库的优化为什么要进行数据库的优化避免网站页面出现访问错误1.由于数据库练级timeout产生页面5xx错误2.由于慢查询造成页面无法加载6.由于阻塞造成数据无法提交增加数据库的稳定性1.很多数据库问题都是由于低效的查询引起的优化用户的体验1.流畅页面的访问速度2.良好的网站功能体验怎么优化数据库> 1、选取最适用的字段属性MySQL可以很好的支持大数据量...

2020-04-22 21:39:38 153 1

原创 什么是索引?如何创建索引,索引的类型

索引什么是索引?在关系数据库中,索引是一种单独的、物理的对数据库表中一列或多列的值进行排序的一种存储结构,它是某个表中一列或若干列值得集合和相应的指向表中物理标识这些值得数据页的逻辑指针清单。索引的作用相当于图书的目录,可以根据目录中页码快速找到所需的内容。如何创建索引在执行CREATE TABLE语句时可以创建索引,也可以单独用CREATE INDEX 或 ALTER TABLE来...

2020-04-21 22:47:14 2084

原创 Tomcat类加载器

Tomcat类加载器Tomcat的类加载机制是违反了双亲委托原则的,对于一些未加载的非基础类(Object,String等),各个web应用自己的类加载器(WebAppClassLoader)会优先加载,加载不到时再交给commonClassLoader走双亲委托。 对于JVM来说:因此,按照这个过程可以想到,如果同样在CLASSPATH指定的目录中和自己工作目录中存放相同的class,会优...

2020-04-21 18:27:40 93

原创 JAVA类加载器

JAVA类加载器Java类加载器是Java运行环境的一部分,负责动态加载JAVA类到Java虚拟机的内存空间中。介绍Java类加载器是Java运行环境的一部分,负责动态加载JAVA类到Java虚拟机的内存空间中。类通常是按需加载,即第一次使用该类时才加载。由于有了类加载器,Java运行时系统不需要知道每个问价与文件系统。学习类加载是。掌握Java的委派概念很重要。委派模式双亲委派...

2020-04-17 20:29:12 115

原创 Springboot的介绍与优点

Spring BootSpring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程。该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置。通过这种方式,Spring Boot致力于在蓬勃发展的快速应用开发领域(rapid application development)成为领导者。面试小问题@SpringBoo...

2020-04-14 23:07:03 1912

原创 JVM的内存模型、结构和垃圾GC收集

JVM为什么要优化?如果说JVM初始堆内存小,报了OOM(内存溢出),可以先调大堆内存,如果调大还不行,就要定位占用的资源的线程,优化改该线程代码。总的来说就是优化JVM第一是可以提高效率,第二是可以减少服务器CPU的负载。JVM内存模型JDK1.7与JDK1.8JVM的内存模型主要就是1.7和1.8,但是这两个的模型区别很大。虽然我们现在使用的是1.8的,但是我们也需要对1.7的内存...

2020-04-12 22:20:34 76

原创 MQTT协议特点QOS例子遗嘱模式

MQTT入门介绍简述MQTT(message Queuing Telemetry Transport,消息队列遥测传输协议),是一种基于发布/订阅(publish/subscribe)模式的“轻量级”通讯协议,该协议构建TCP/IP协议上,由IBM在1999年发布。MQTT最大的优点在于,可以以极少的代码和有限的宽带,为连接远程设备提供实时可靠的消息服务,作为一种低开销、低宽带占用的即时通...

2020-04-12 21:42:25 701

原创 NGINX,rabbit,Redis主要功能及功能介绍

@[TOC]4.10NGINX介绍Nginx (engine x) 是一个高性能的HTTP和反向代理web服务器,同时也提供了IMAP/POP3/SMTP服务。Nginx是由伊戈尔·赛索耶夫为俄罗斯访问量第二的Rambler.ru站点(俄文:Рамблер)开发的,第一个公开版本0.1.0发布于2004年10月4日。其将源代码以类BSD许可证的形式发布,因它的稳定性、丰富的功能集、示例配置...

2020-04-10 23:28:52 628

空空如也

空空如也

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

TA关注的人

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