为什么分布式一定要有Redis?
考虑到绝大部分写业务的程序员,在实际开发中使用 Redis 的时候,只会 Set Value 和 Get Value 两个操作,对 Redis 整体缺乏一个认知。
为什么分布式一定要有Redis?“考虑到绝大部分写业务的程序员,在实际开发中使用 Redis 的时候,只会 Set Value 和 Get Value 两个操作,对 Redis 整体缺乏一个认知。
所以我斗胆以 Redis 为题材,对 Redis 常见问题做一个总结,希望能够弥补大家的知识盲点。
本文围绕以下几点进行阐述:
为什么使用 Redis
使用 Redis 有什么缺点
单线程的 Redis 为什么这么快
Redis 的数据类型,以及每种数据类型的使用场景
Redis 的过期策略以及内存淘汰机制
Redis 和数据库双写一致性问题
如何应对缓存穿透和缓存雪崩问题
如何解决 Redis 的并发竞争 Key 问题
为什么使用 Redis
我觉得在项目中使用 Redis,主要是从两个角度去考虑:性能和并发。
当然,Redis 还具备可以做分布式锁等其他功能,但是如果只是为了分布式锁这些其他功能,完全还有其他中间件,如 Zo ...
Spring Boot 集成 Lombok 让代码更简洁!
lombok的威力
IntelliJ IDEA安装lombok插件1、菜单栏 File > Settings > Plugins > Browse repositories…
2、搜索 Lombok Plugin 安装后,重启IDEA即可生效
Spring Boot项目中使用lombok.1、添加lombok依赖
2、编写一个实体类 User,使用@Data注解
3、编写测试方法,测试@Data的作用
其它简化代码的特性介绍123456789101112131415val : 最终局部变量@NonNull : 让你不在担忧并且爱上NullPointerException@CleanUp : 自动资源管理:不用再在finally中添加资源的close方法@Setter/@Getter : 自动生成set和get方法@ToString : 自动生成toString方法@EqualsAndHashcode : 从对象的字段中生成hashCode和equals的实现@NoArgsConstructor/@RequiredArgsConstructor/@AllArgsCons ...
想要做到高并发和高性能,请先真正的理解它们,以及跟CPU,内存,分布式又有什么关系呢?
互联网应用系统开发肯定经常会看到高并发和高性能这两个词,可谓是耳熟能详,而具体的含义和关系真的如你所想的,真正的理解了吗?
这次,我也结合自己的理解,来跟大家分享一下。
先来看一个例子:
一个蓄水池,是1m1m1m=1立方米大小,有一个出水口,出水口每秒钟流出0.1立方米,那么这个蓄水池的并发量是1立方米,出水速度是0.1立方米/秒。
如果增加一个出水口,都是每秒钟流出0.1立方米,那么这个蓄水池的并发量没变,但是出水速度变成了0.2立方米/秒。
同理,增大了出水口,蓄水池的出水速度也变快了。
上面我们很容易知道,并发量是一个容量的概念,性能就是出水速度,而且有下面这些结果。1 增大蓄水池的长宽高,可以增加并发能力。
2 出水口如果扩大了出口大小,则可以提高出水的速度,也就是性能提高了。
3 增加出水口的数量,则是增加了并行处理的能力,同样可以提高性能。
那么对照我们计算机中,我们的系统中,是怎么样的结果呢?1 增加服务器的内存大小,可以增加并发量。因为内存增加了,就可以开更多的进程,更多的线程,也可以扩大任务队列的大小。
2 提高cpu的主频速度,优化程序,可以提高性能。cpu更快 ...
基于Spring Boot的Elasticsearch-5.5.2伪分布式是集群
这就是我踩过的坑
我们先去官网下载elasticsearch
Windows:https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-5.2.0.zip
Linux:https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-5.2.0.tar.gz
这就是我踩过的坑我们先去官网下载elasticsearch
Windows:https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-5.2.0.zip
Linux:https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-5.2.0.tar.gz
解压后我们复制三份出来分别命名为:elasticsearch-5.5.2-noed1、elasticsearch-5.5.2-noed2、elasticsearch-5.5.2-noed3 ...
Solr空间搜索
Solr空间搜索
在fq中使用{!geofilt}
在
使用此搜索即可计算出空间搜索位置,目前可以使用空间搜索的有solr和mongodb
如此简单就可以实现空搜范围搜索
S2SH框架环境搭建
1.使用HibernateDaoSupport简化整合代码原理:HibernateDaoSupport类有一个HibernateTemplate成员变量,提供一个setSessionFactory的方法,用于注入SessionFactory,把HibernateTemplate创建出来。
1)让dao类继承HibernateDaoSupport类
123456789101112public class ProductDao extends HibernateDaoSupport implements IProductDao { @Overridepublic List<Product> findAll() {return this.getHibernateTemplate().loadAll(Product.class);} @Overridepublic void save(Product p) {this.getHibernateTemplate().save(p);}}
2)简化applicationCo ...
Spring MVC数据自动绑定
通过例子介绍几种自动绑定方式:
SpringmvcServletAPI .java
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980package com.yi.controller;import com.yi.entity.User;import com.yi.entity.Users;import org.springframework.stereotype.Controller;import org.springframework.web.bind.annotation.RequestMapping;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpSession;/** * 数据自动绑定 * Created by Adm ...
JDBC基础
学习目标
能够说出什么是JDBC
能够说出JDBC连接数据库的四个参数。
123Class.forName(“com.mysql.jdbc.Driver”);DriverManager.getConnection(url, name, password)url: jdbc:mysql://localhost:3306/数据库
能够说出JDBC的核心API
12345678DriverManager: 1) 加载驱动;2)获取数据库连接;Connection: 数据库的一个连接;Statementexecute()executeQuery() executeUpdate()ResultSet: 可滚动结果集。next() previous() first() last() absolute(int n)getXxx(int columnIndex) getXxx(String columnName)
能够运用Statement执行SQL操作
能够运用PreparedStatement执行SQL操作
第一步:获取数据库连接;
第二步:创建PreparedStateme ...
JDBC-DBUtil使用
学习目标
能够描述什么是连接池
能够实现自定义连接池
能够解决自定义Connection的close释放连接的问题
能够运用第三方连接池实现技术 DBCP C3P0
第一步:导入c3p0的jar包;
第二步:创建连接池对象(ComboPooledDataSource);
第三步:设置参数;(配置文件)
c3p0-config.xml(优先级更高)
c3p0.properties
第四步:调用getConnection获取数据库连接;
第五步:调用Connection对象的close方法释放Connection;
能够描述出三种数据库元数据
能够运用数据库表元数据
一、 数据库连接池之前我们访问数据库:
第一步:获取数据库连接
第二步:创建PreparedStatement对象;
第三步:设置参数;
第四步:遍历结果集;
第五步:关闭资源;
获取数据库连接是一个比较耗时的操作。
1.1 什么数据库连接池数据库连接池就就是一个用来存储了数据库连接的集合对象。使用数据库连接池的好处:减少在获取Connection对象的等待时间,从而可以提高访 ...