- 博客(23)
- 收藏
- 关注
原创 CAS,乐观锁,悲观锁
CASCAS(Compare-and-Swap),即比较并替换,是一种实现并发算法时常用到的技术,Java并发包中的很多类都使用了CAS技术。CAS乐观锁与悲观锁的区别悲观锁会把整个对象加锁占为已有后才去做操作,Java中的Synchronized属于悲观锁。悲观锁有一个明显的缺点就是:它不管数据存不存在竞争都加锁,随着并发量增加,且如果锁的时间比较长,其性能开销将会变得很大。乐观锁不获取...
2020-05-05 23:43:29 244 1
原创 SQL连接查询
一、外连接表1(user)表2(clazz)外连接可分为:左连接、右连接、完全外连接。1、左连接 left join 或 left outer joinSQL语句:select * FROM user left join clazz on user.id=clazz.id效果如下:左外连接包含left join左表所有行,如果左表中某行在右表没有匹配,则结果中对应行右表的部分...
2020-04-28 22:25:01 317
原创 Linux的常用命令
常用命令1、cd命令这是一个非常基本,也是大家经常需要使用的命令,它用于切换当前目录,它的参数是要切换到的目录的路径,可以是绝对路径,也可以是相对路径。如:cd /root/Docements # 切换到目录/root/Docementscd ./path # 切换到当前目录下的path目录中,“.”表示当前目录cd …/path # 切换到上层目录中的path目录中,“…”表示上一层目...
2020-04-28 21:53:03 122
原创 SpringMVC的工作流程与主要注解
SpringMVC运行流程SpringMVC常用注解一、组件型注解:@Component 在类定义之前添加@Component注解,他会被spring容器识别,并转为bean。@Repository 对Dao实现类进行注解 (特殊的@Component)@Service 用于对业务逻辑层进行注解, (特殊的@Component)@Controller 用于控制层注解 , (特殊的@C...
2020-04-28 21:46:45 209
原创 Nginx介绍
什么是NginxNginx 是异步框架的网页服务器,也可以用作反向代理、负载平衡器和 HTTP 缓存。大部分 Web 服务器使用 Nginx,通常作为负载均衡器。Nginx 是免费的开源软件,根据类 BSD 许可证的条款发布。Nginx应用场景Nginx是一款自由的、开源的、高性能的HTTP服务器和反向代理服务器;同时也是一个IMAP、POP3、SMTP代理服务器;Nginx可以作为一个HT...
2020-04-27 21:52:29 149
原创 redis的缓存过期策略与内存淘汰机制
Redis缓存过期策略Redis是key-value数据库,我们可以设置Redis中缓存的key的过期时间。Redis的过期策略就是指当Redis中缓存的key过期了,Redis如何处理。过期策略通常有以下三种:定时过期:每个设置过期时间的key都需要创建一个定时器,到过期时间就会立即清除。该策略可以立即清除过期的数据,对内存很友好;但是会占用大量的CPU资源去处理过期的数据,从而影响缓存的...
2020-04-26 21:40:42 152
原创 Redis持久化方案
一、Redis高可用概述高可用在介绍Redis高可用之前,先说明一下在Redis的语境中高可用的含义。我们知道,在web服务器中,高可用是指服务器可以正常访问的时间,衡量的标准是在多长时间内可以提供正常服务(99.9%、99.99%、99.999% 等等)。但是在Redis语境中,高可用的含义似乎要宽泛一些,除了保证提供正常服务(如主从分离、快速容灾技术),还需要考虑数据容量的扩展、数据安全...
2020-04-26 21:34:18 194 1
原创 布隆过滤器
什么是布隆过滤器本质上布隆过滤器是一种数据结构,比较巧妙的概率型数据结构(probabilistic data structure),特点是高效地插入和查询,可以用来告诉你 “某样东西一定不存在或者可能存在”。优点相比于其它的数据结构,布隆过滤器在空间和时间方面都有巨大的优势。布隆过滤器存储空间和插入/查询时间都是常数。另外, Hash 函数相互之间没有关系,方便由硬件并行实现。布隆过滤器不...
2020-04-25 20:20:49 105
原创 分布式锁(Redis)
什么是分布式锁要介绍分布式锁,首先要提到与分布式锁相对应的是线程锁、进程锁。1.线程锁主要用来给方法、代码块加锁。当某个方法或代码使用锁,在同一时刻仅有一个线程执行该方法或该代码段。线程锁只在同一JVM中有效果,因为线程锁的实现在根本上是依靠线程之间共享内存实现的,比如Synchronized、Lock等。2.进程锁为了控制同一操作系统中多个进程访问某个共享资源,因为进程具有独立性,各个...
2020-04-25 20:16:01 88
原创 Redis简介,数据类型,与mencached区别
Redis简介Redis是现在最受欢迎的NoSQL数据库之一,Redis是一个使用ANSI C编写的开源、包含多种数据结构、支持网络、基于内存、可选持久性的键值对存储数据库,其具备如下特性:1.基于内存运行,性能高效2.支持分布式,理论上可以无限扩展3.key-value存储系统4.开源的使用ANSI C语言编写、遵守BSD协议、支持网络、可基于内存亦可持久化的日志型、Key-Value...
2020-04-25 20:09:44 163
原创 HashMap的数据结构
HashMap的底层原理hashmap底层原理:HashMap基于hashing原理,通过put和get方法储存和获取对象。当将键值对传递给put方法时,它调用键对象的hashCode方法来计算hashcode,然后找到bucket位置来储存值对象。当获取对象时,通过键对象的equals方法找到正确的键值对,然后返回值对象。HashMap使用链表来解决碰撞问题,当发生碰撞了,对象将会储存在链表...
2020-04-24 22:20:31 103
原创 分布式事务解决方案
一、两阶段提交(2PC)这个图的流程来很容易的看出中间的一些比如commit和abort的细节。两阶段提交这种解决方案属于牺牲了一部分可用性来换取的一致性。在实现方面,在 .NET 中,可以借助 TransactionScop 提供的 API 来编程实现分布式系统中的两阶段提交,比如WCF中就有实现这部分功能。不过在多服务器之间,需要依赖于DTC来完成事务一致性,Windows下微软搞的有M...
2020-04-24 22:13:26 103
原创 数据库锁分类及事务的特性
按锁的粒度划分表锁,行锁,页锁1.表锁表级锁会直接锁定整张表。表级锁是MySQL各存储引擎中最大颗粒度的锁定机制。该锁定机制最大的特点是实现逻辑简单,带来的系统负面影响最小。所以获取锁和释放锁的速度很快。由于表级锁一次会将整个表锁定,所以可以很好的避免死锁问题。当然,锁定颗粒度大所带来负面影响就是出现争用锁定资源的概率也会最高,致使并发度大大降低。总结:优点:安全,冲突少。缺点:并发小2...
2020-04-23 22:01:47 260
原创 数据库结构优化
数据库结构优化:首先要选择合适的数据类型1、使用可以存下你的数据的最小的数据类型。(时间类型数据:可以使用varchar类型,可以使用int类型,也可以使用时间戳类型)2、使用简单的数据类型,int要比varchar类型在mysql处理上简单。(int类型存储时间是最好的选择)3、尽可能的使用not null定义字段。(innodb的特性所决定,非not null的值,需要额外的在字段存储...
2020-04-22 21:49:02 106
原创 索引
什么是索引?索引:索引是与表或视图关联的磁盘上结构,可以加快从表或视图中检索行的速度。索引包含由表或视图中的一列或多列生成的键。这些键存储在一个结构(B树)中,使SQL Server可以快速有效地查找与键值关联的行。这种数据结构是需要额外的写入和存储为代价来提高表上数据检索的速度。一旦建立了索引后,数据库中查询优化器使用索引来快速定位数据,然后就无需扫描表中给定查询的每一行了。如何创建索引?...
2020-04-21 22:40:30 91
转载 类加载器和Tomcat类加载器
JVM类加载机制有哪几个部分?JVM 类加载机制分为五个部分:加载,验证,准备,解析,初始化,下面我们就分别来看一下这 五个过程1.加载加载是类加载过程中的一个阶段,这个阶段会在内存中生成一个代表这个类的java.lang.Class对 象,作为方法区这个类的各种数据的入口。2.验证这一阶段的主要目的是为了确保Class文件的字节流中包含的信息是否符合当前虚拟机的要求,并 且不会危害虚拟...
2020-04-20 23:09:32 227
原创 JAVA的类加载器
什么是类加载器Java类加载器( 英语:Java Classloader)是Java运行时环境(Java Runtime Environment)的一部分,负责动态加载Java类到 Java虚拟机的内存空间中。类通常是按需加载,即第一次使用该类时才加载。由于有了类加载器,Java运行时系统不需要知道文件与文件系统。Java类加载器的作用Java类加载器的作用就是在运行时加载类。Java 类加...
2020-04-17 23:47:04 109
转载 微信小程序登陆流程
1.调用 wx.login() 获取 临时登录凭证code ,并回传到开发者服务器。2.调用 auth.code2Session 接口,换取 用户唯一标识 OpenID 和 会话密钥 session_key。 之后开发者服务器可以根据用户标识来生成自定义登录态,用于后续业务逻辑中前后端交互时识别用户身份。注意事项:会话密钥 session_key 是对用户数据进行 加密签名 的密钥。为了应...
2020-04-16 23:38:16 248
原创 Spring的IOC与AOP理解
SpringSpring是一套为了解决企业应用开发的复杂性而创建的框架,特点是分层的架构,允许用户在不同层面使用不同的组件进行组合。同时通过IOC容器来降低耦合,简化开发。利用AOP来进行切面编程统一管理通用模块。IOCIOC:控制反转也叫依赖注入。利用了工厂模式将对象交给容器管理,你只需要在spring配置文件总配置相应的bean,以及设置相关的属性,让spring容器来生成类的实例对象...
2020-04-14 22:48:38 133
原创 垃圾回收及垃圾收集器
一、什么是垃圾回收程序的运行必然需要申请内存资源,无效的对象资源如果不及时处理就会一直占有内存 资源,终将导致内存溢出,所以对内存资源的管理是非常重要了。C/C++语言的垃圾回收在C/C++语言中,没有自动垃圾回收机制,是通过new关键字申请内存资源,通过delete 关键字释放内存资源。如果,程序员在某些位置没有写delete进行释放,那么申请的对象将一直占用内存资源, 终可能会导致内存...
2020-04-13 10:05:35 161
原创 JVM的优化及JVM的内存模型
一、JVM优化为什么做优化:程序卡住,CPU负载突然升高,二、JVM的运行参数、三种参数类型标准参数-help-version(jvm的标准参数,一般都是很稳定的,在未来的JVM版本中不会改变,可以使用java -help 检索出所有的标准参数)-X参数 (非标准参数)-Xint-Xcomp(jvm的-X参数是非标准参数,在不同版本的jvm中,参数可能会有所不同,可以通过ja...
2020-04-13 09:42:16 93
原创 Solr的简介使用与安装
1.Solr安装与配置1.1什么是Solr大多数搜索引擎应用都必须具有某种搜索功能,问题是搜索功能往往是巨大的资源消耗并且它们由于沉重的数据库加载而拖垮你的应用的性能。这就是为什么转移负载到一个外部的搜索服务器是一个不错的主意,Apache Solr是一个流行的开源搜索服务器,它通过使用类似REST的HTTP API,这就确保你能从几乎任何编程语言来使用solr。Solr是一个开源搜索平台...
2020-04-10 22:20:00 912
原创 rabbitmq的四种模式
rabbitmq的四种模式一、Work queues二、Publish(汉译英–帕布雷斯)/subscribe 模式三、Routing(汉译英–ruao 挺) 路由模式四、Topics (汉译英—汤佩克斯)模式(原6种,常用的四种)一、Work queues多个消费端消费同一个队列中的消息,队列采用轮询的方式将消息是平均发送给消费者;特点:1、一条消息只会被一个消费端接收;2、...
2020-04-10 22:19:27 1602
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人