- 博客(31)
- 收藏
- 关注
原创 什么是nginx
Nginx是一款自由的、开源的、高性能的HTTP服务器和反向代理服务器;同时也是一个IMAP、POP3、SMTP代理服务器;Nginx可以作为一个HTTP服务器进行网站的发布处理,另外Nginx可以作为反向代理进行负载均衡的实现。Nginx虚拟主机虚拟主机,就是把一台物理服务器划分成多个“虚拟”的服务器,每一个虚拟主机都可以有独立的域名和独立的目录。nginx虚拟主机的配置:nginx的虚拟...
2020-09-18 14:51:55
207
原创 乐观锁 CAS
悲观锁与乐观锁的区别悲观锁会把整个对象加锁占为已有后才去做操作,Java中的Synchronized属于悲观锁。悲观锁有一个明显的缺点就是:它不管数据存不存在竞争都加锁,随着并发量增加,且如果锁的时间比较长,其性能开销将会变得很大。乐观锁不获取锁直接做操作,然后通过一定检测手段决定是否更新数据,这种方式下,已经没有所谓的锁概念了,每条线程都直接先去执行操作,计算完成后检测是否与其他线程存在共享...
2020-05-05 20:15:06
176
原创 Cookie和Session的区别
Cookie1、服务器通过Set-Cookie头信息指示客户端保存Cookie2、客户端通过Cookie头信息传送cookie到服务器Cookie是客户端的存储空间,由浏览器来维持。具体来说Cookies是服务器在本地机器上存储的小段文本并随每一个请求发送至同一个服务器,是一种在客户端保持状态的方案。Cookie指某些网站为了辨别用户身份、进行session跟踪而存储在用户本地终端上的数据...
2020-04-30 22:03:51
162
原创 HTTP的介绍
定义:超文本传输协议(HTTP,HyperText Transfer Protocol)是互联网上应用最为广泛的一种网络协议。所有的WWW文件都必须遵守这个标准。设计HTTP最初的目的是为了提供一种发布和接收HTML页面的方法。什么是Http协议无状态协议?怎么解决Http协议无状态协议?无状态协议对于事务处理没有记忆能力。无状态是指没有对本次客户端在和服务器会话设置一个缓存区,用来记录这次...
2020-04-30 21:56:29
218
1
原创 TCP三次握手和四次挥手
TCP三次握手所谓三次握手(Three-way Handshake),是指建立一个TCP连接时,需要客户端和服务器总共发送3个包。三次握手的目的是连接服务器指定端口,建立TCP连接,并同步连接双方的序列号和确认号并交换 TCP 窗口大小信息.在socket编程中,客户端执行connect()时。将触发三次握手。第一次握手:客户端发送一个TCP的SYN标志位置1的包指明客户打算连接的服务器...
2020-04-30 20:59:27
124
原创 SQL的连接查询
01 内连接inner join作用:查询两张表的共有部分02 左连接 left join作用:把左边表的内容全部查出,右边表只查出满足条件的记录03 右连接 right join作用:把右边表的内容全部查出,左边表只查出满足条件的记录04 完全外连接 full outer join完全外连接包含full join左右两表中所有的行,如果右表中某行在左表中没有匹配,则结果...
2020-04-28 20:27:09
162
1
原创 Linux常用命令
查看当前所在的工作目录的全路径 :pwd查看当前系统的时间: date清屏 : clear查看目录信息 : ls切换工作目录 : cd创建文件夹 : mkdir删除文件夹 : rmdir / rm创建文件 : touch拷贝/删除/移动 : cp / rm / mv解压压缩 : tar -zcvf tar -zcvf查看ip : ifconfig网络统计信息 : netst...
2020-04-28 19:12:03
124
原创 SpringMVC的工作流程和常用注解
SpringMvc处理流程具体步骤:第一步:发起请求到前端控制器(DispatcherServlet)第二步:前端控制器请求HandlerMapping查找 Handler (可以根据xml配置、注解进行查找)第三步:处理器映射器HandlerMapping向前端控制器返回Handler,HandlerMapping会把请求映射为HandlerExecutionChain对象,通过这种策略...
2020-04-28 18:49:36
450
原创 Redis的过期策略和内存淘汰策略
Redis的过期策略过期策略通常有以下三种:定时过期:每个设置过期时间的key都需要创建一个定时器,到过期时间就会立即清除。该策略可以立即清除过期的数据,对内存很友好;但是会占用大量的CPU资源去处理过期的数据,从而影响缓存的响应时间和吞吐量。惰性过期:只有当访问一个key时,才会判断该key是否已过期,过期则清除。该策略可以最大化地节省CPU资源,却对内存非常不友好。极端情况可能出现大量的...
2020-04-26 13:09:27
214
原创 redis的持久化方案
持久化,就是将数据保存到磁盘,机器宕机或者重启数据不丢失,如果存储到内存中的数据,会丢失。Redis支持两种方式的持久化,一种是RDB方式,一种是AOF方式。可以单独使用其中一种或将二者结合使用。RDBRDB持久化是通过快照方式来完成的。当达到触发条件时,Redis会自动将内存中所有数据以二进制方式生成一份副本并存储在硬盘上。 RDB是Redis默认采用的持久化方式,在redis.con...
2020-04-26 13:01:45
160
原创 布隆过滤器
布隆过滤器(Bloom Filter)是1970年由布隆提出的。它实际上是一个很长的二进制向量和一系列随机映射函数。布隆过滤器可以用于检索一个元素是否在一个集合中。它的优点是空间效率和查询时间都比一般的算法要好的多,缺点是有一定的误识别率和删除困难。优点相比于其它的数据结构,布隆过滤器在空间和时间方面都有巨大的优势。布隆过滤器存储空间和插入/查询时间都是常数。另外,Hash函数相互之间没有关系...
2020-04-25 21:10:01
152
原创 redis的分布式锁
分布式锁是控制分布式系统之间同步访问共享资源的一种方式。在分布式系统 中,常常需要协调他们的动作。如果不同的系统或是同一个系统的不同主机之间共享了一个或一组资源,那么访问这些资源的时候,往往需要互斥来防止彼此干扰来保证一致性,在这种情况下,便需要使用到分布式锁。分布式锁的由来在传统单机部署的情况下,可以使用Java并发处理相关的API(如ReentrantLcok或synchronized...
2020-04-25 21:03:02
719
原创 Redis介绍
Redis是以键值对存储数据的NoSQL数据库。一、redis的数据类型,以及每种数据类型的使用场景String这个其实没啥好说的,最常规的set/get操作,value可以是String也可以是数字。一般做一些复杂的计数功能的缓存。hash这里value存放的是结构化的对象,比较方便的就是操作其中的某个字段。博主在做单点登录的时候,就是用这种数据结构存储用户信息,以cookie...
2020-04-25 20:29:39
189
原创 HashMap的数据结构,哈希冲突,JDK1.7和JDK1.8 HashMap的区别
HashMap的底层主要是基于数组和链表来实现的,它之所以有相当快的查询速度主要是因为它是通过计算散列码来决定存储的位置。HashMap中主要是通过key的hashCode来计算hash值的,只要hashCode相同,计算出来的hash值就一样。如果存储的对象对多了,就有可能不同的对象所算出来的hash值是相同的,这就出现了所谓的hash冲突。解决hash冲突的方法有很多,HashMap底层是通...
2020-04-24 21:16:53
169
原创 CAP 理论与BASE理论
CAP定理CAP 理论为:一个分布式系统最多只能同时满足一致性(Consistency)、可用性(Availability)和分区容错性(Partition tolerance)这三项中的两项。一致性(Consistency): 一致性指 (all nodes see the same data at the same time),即更新操作成功并返回客户端完成后,所有节点在同一时间的数据完全...
2020-04-24 20:44:28
215
原创 各种形态的分布式事务:2PC,TCC以及基于消息的最终一致性
分布式事务是为了解决微服务架构(形式都是分布式系统)中不同节点之间的数据一致性问题。这个一致性问题本质上解决的也是传统事务需要解决的问题,即一个请求在多个微服务调用链中,所有服务的数据处理要么全部成功,要么全部回滚。当然分布式事务问题的形式可能与传统事务会有比较大的差异,但是问题本质是一致的,都是要求解决数据的一致性问题。而分布式事务的实现方式有很多种,最具有代表性的是由Oracle Tuxed...
2020-04-24 20:37:08
607
原创 数据库的锁分类
数据库是一个多用户使用的共享资源。当多个用户并发地存取数据时,在数据库中就会产生多个事务同时存取同一数据的情况。若对并发操作不加控制就可能会读取和存储不正确的数据,破坏数据库的一致性。一、按锁的粒度分表锁表锁就是一锁锁一整张表,在表被锁定期间,其他事务不能对该表进行操作,必须等当前表的锁被释放后才能进行操作。表锁响应的是非索引字段,即全表扫描,全表扫描时锁定整张表,sql语句可以通过执行计...
2020-04-23 21:10:20
560
原创 什么是分布式事务,什么是本地事务
1、什么是分布式事务分布式事务就是指事务的资源分别位于不同的分布式系统的不同节点之上的事务;指一次大的操作由不同的小操作组成的,这些小的操作分布在不同的服务器上,分布式事务需要保证这些小操作要么全部成功,要么全部失败。从本质上来说,分布式事务就是为了保证不同数据库的数据一致性。2、分布式事务产生的原因2.1、数据库分库分表在单库单表场景下,当业务数据量达到单库单表的极限时,就需要考虑分库...
2020-04-23 20:26:24
561
原创 数据库结构的优化
1、选择合适的数据类型数据类型的选择,重点在于“合适”二字,如何确定选择的数据类型是否合适了?1、使用可以存下你的数据的最小的数据类型。(时间类型数据:可以使用varchar类型,可以使用int类型,也可以使用时间戳类型)2、使用简单的数据类型,int要比varchar类型在mysql处理上简单。(int类型存储时间是最好的选择)3、尽可能的使用not null定义字段。(innodb的特...
2020-04-22 20:05:51
242
原创 什么是索引
索引的作用相当于图书的目录,可以根据目录中的页码快速找到所需的内容。数据库使用索引以找到特定值,然后顺指针找到包含该值的行。在表中建立索引,然后在索引中找到符合查询条件的索引值,最后通过保存在索引中的ROWID(相当于页码)快速找到表中对应的记录。索引的建立是表中比较有指向性的字段,相当于目录,比如说行政区域代码,同一个地域的行政区域代码都是相同的,那么给这一列加上索引,避免让它重复扫描,从而达...
2020-04-21 21:02:15
230
原创 Tomcat类加载器
Tomcat的类加载机制是违反了双亲委托原则的,对于一些未加载的非基础类(Object,String等),各个web应用自己的类加载器(WebAppClassLoader)会优先加载,加载不到时再交给commonClassLoader走双亲委托。对于JVM来说:因此,按照这个过程可以想到,如果同样在CLASSPATH指定的目录中和自己工作目录中存放相同的class,会优先加载CLASSPATH...
2020-04-20 20:40:18
235
原创 Java的类加载器
Java类加载器( 英语:Java Classloader)是Java运行时环境(Java Runtime Environment)的一部分,负责动态加载Java类到 Java虚拟机的内存空间中。类通常是按需加载,即第一次使用该类时才加载。由于有了类加载器,Java运行时系统不需要知道文件与文件系统。学习类加载器时,掌握Java的委派概念很重要。Java中的类加载器大致可以分成两类,一类是系统提...
2020-04-17 21:57:32
272
原创 微信小程序登录流程
小程序端执行wx.login后在回调函数中就能拿到下图的code,然后把这个code传给我们后端程序,后端拿到这个这个code后,可以请求code2Session接口拿到用的openid和session_key,openid是用户在微信中唯一标识,我们就可以把这个两个值(val)存起来,然后返回一个键(key)给小程序端,下次小程序请求我们后端的时候,带上这个key,我们就能找到这个val,就可以...
2020-04-15 21:27:07
503
原创 理解spring的ioc和aop
一、什么是IOC(DI)?IOC,即控制反转(Inversion of Control),他与依赖注入(Dependecy Injection)是同一个概念。具体的讲:当某个角色需要另外一个角色协助的时候,在传统的程序设计过程中,通常由调用者来创建被调用者的实例。但在spring中 创建被调用者的工作不再由调用者来完成,因此称为控制反转。创建被调用者的工作由spring来完成,然后注入调用者因...
2020-04-14 22:07:25
176
原创 G1垃圾收集器
G1垃圾收集器是在jdk1.7中正式使用的全新的垃圾收集器,oracle官方计划在jdk9中将G1变成默认的垃圾收集器,以替代CMS。G1的设计原则就是简化JVM性能调优,开发人员只需要简单的三步即可完成调优:1.第一步,开启G1垃圾收集器2.第二步,设置堆的最大内存3.第三步,设置最大的停顿时间G1中提供了三种模式垃圾回收模式,YoungGC、MixedGC和FullGC,在不同的条件...
2020-04-12 21:57:39
365
原创 什么是垃圾回收,以及垃圾回收的常见算法
程序的运行必然需要申请内存资源,无效的对象资源如果不及时处理就会一直占有内存资源,最终将导致内存溢出,所以对内存资源的管理是非常重要了。1、C/C++语言的垃圾回收在C/C++语言中,没有自动垃圾回收机制,是通过new关键字申请内存资源,通过delete 关键字释放内存资源。如果,程序员在某些位置没有写delete进行释放,那么申请的对象将一直占用内存资源,最终可能会导致内存溢出。2、Jav...
2020-04-12 21:46:59
431
原创 VisualVM工具的使用
监控远程的jvmVisualJVM不仅是可以监控本地jvm进程,还可以监控远程的jvm进程,需要借助于JMX技术实现。什么是JMX?JMX(JavaManagementExtensions,即Java管理扩展)是一个为应用程序、设备、系统等植入管理功能的框架。JMX可以跨越一系列异构操作系统平台、系统体系结构和网络传输协议,灵活的开发无缝集成的系统、网络和服务管理应用。监控远程的tomca...
2020-04-12 21:39:17
266
原创 线程的状态
在Java中线程的状态一共被分成6种:1、初始态(NEW)创建一个Thread对象,但还未调用start()启动线程时,线程处于初始态。2、运行态(RUNNABLE),在Java中,运行态包括就绪态和运行态。就绪态该状态下的线程已经获得执行所需的所有资源,只要CPU分配执行权就能运行。所有就绪态的线程存放在就绪队列中。运行态获得CPU执行权,正在执行的线程。由于一个CPU同一时刻...
2020-04-12 21:33:10
142
原创 如何通过jstat命令进行查看堆内存使用情况,以及jstack的使用
jstat命令可以查看堆内存各部分的使用量,以及加载类的数量。命令的格式如下:jstat[-命令选项][vmid][间隔时间/毫秒][查询次数]1、查看class加载统计[root@node01 ~]# jps7080 Jps6219 Bootstrap[root@node01 ~]# jstat ‐class 62192、查看编译统计[root@node01 ~]# jstat ...
2020-04-12 21:30:11
894
原创 为什么要对jvm做优化,以及jvm的内存模型
在本地开发环境中我们很少会遇到需要对jvm进行优化的需求,但是到了生产环境,我们可能将有下面的需求:1、运行的应用“卡住了”,日志不输出,程序没有反应2、服务器的CPU负载突然升高jvm的内存模型1、jdk1.7的堆内存模型① Young年轻区(代)Young区被划分为三部分,Eden区和两个大小严格相同的Survivor区,其中,Survivor区间中,某一时刻只有其中一个是被使...
2020-04-12 21:18:46
678
原创 事务的四大特性,隔离级别的作用?
事务的四大特性,隔离级别的作用?事务(Transaction):是数据库操作的最小工作单元,是作为单个逻辑工作单元执行的一系列操作;这些操作作为一个整体一起向系统提交,要么都执行、要么都不执行;事务是一组不可再分割的操作集合(工作逻辑单元);四大特性:原子性(atomicity):事务是一个完整的操作。事务的各步操作是不可分的;要么都执行、要么都不执行。一致性(consistency):当...
2020-04-10 21:25:35
1240
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人