SpringCloud服务拆分和调用 三、微服务消费者和提供者编写启动类,添加@EnableEurekaServer注解}添加application.yml文件,编写下面的配置:六、服务注册首选引入依赖然后配置yml文件
Redis:用户签到和UV统计 一、用户签到:BitMap功能代表某个用户某一天的签到记录;如果有1000万用户,平均没人每年签到10次,一年则为1亿条;数据庞大;也耗内存;二、用户签到:实现签到功能/** * 用户签到功能 * @return */ @Override public Result sign() { // 获取用户当前 UserDTO user = UserHolder.getUser(); Long userId
Redis:达人探店 一、点赞功能的实现private void queryIsLike(Blog blog){ Long userId = UserHolder.getUser().getId(); // key String key = RedisConstants.BLOG_LIKED_KEY + blog.getId(); Boolean isMember = stringRedisTemplate.opsForSet().isMember(key, u
Redis:优化秒杀 一、Redis优化秒杀:异步秒杀原先的步骤:1、查询优惠券2、判断秒杀库存;3、查询订单;4、校验一人一单;5、减库存、创建订单;这些 涉及到大量数据库的操作,所以在高并发 的情况下,性能并不是很好;解决方案:通过redis,先将优惠券库存信息和订单信息存入redis,用lua脚本执行,保证原子性;将用户id用set集合存到redis中,对于同一张优惠券,如果userId存在,用户不能重复下单,以此判断用户是否有资格购买,然后异步开启独立线程执行,创建订单,放入阻塞队列,线程读取队列中的
Redis:黑马点评之分布式锁 一、分布式锁基本原理和不同实现方式对比多个JVM共享同一个锁监视器;多进程可见,并且互斥;分布式锁:满足分布式系统或集群模式下多进程可见并且互斥的锁;不同的分布式锁实现方案:二、Redis锁的实现思路获取锁:通过setNx命令释放锁:DEL key 命令-----手动释放,或者超时释放,给锁添加一个超时时间;(超时时间的设置需要考量,不能太长,避免类似死锁现象的发生)...
Redid:黑马点评项目之优惠券秒杀 一、优惠券秒杀:全局唯一ID每个店铺都可以发布优惠券;当用户抢购,就会生成订单并保存在tb_voucher_order这张表中,订单表如果使用数据库自增id会让1、id的规律性太明显;2、受单表数据量的限制;全局id生成器:全局唯一id。利用redis的incre自增属性为了增加redis的安全性,也可以不直接使用redis自增的数值,而是拼接一下其他信息 public long generateOnlyId(String prefix){ // 1.生成
Redis:黑马点评项目之商品缓存 一、缓存更新策略缓存可以减轻数据库压力,但也会存在数据库与缓存不一致的问题;如果数据库数据更新,缓存没有更新,那查到的就是缓存中的旧数据;内存淘汰:不用自己维护,利用redis内存淘汰机制,当内存不足时淘汰部分数据,下次查询时更新缓存;在一定程度上可以保证一致性;但是这种一致性不是我们能控制的,淘汰哪一部分数据,什么时候淘汰,不确定;好处是没有维护成本;超时剔除:给缓存数据添加过期时间TTL,到期自动删除缓存,下次查询更新缓存;这个一致性的强度取决于时间长短;一致性一般,维护成本也低;主动更
Redis:黑马点评项目之用户短信登录 一、表结构建表sql语句:/* Navicat Premium Data Transfer Source Server : local Source Server Type : MySQL Source Server Version : 50622 Source Host : localhost:3306 Source Schema : hmdp Target Server Type : MySQL Target Se
Redis数据结构 一、Redis数据结构介绍二、redis命令官网文档:redis命令官方文档# redis常用命令# 查所有数据KEYS * # 查询以XX开头的数据KEYS a*# 删除指定的keyDEL k1 k2 k3# 批量创建数据MSET k1 va k2 v2 k3 v3# 判断一个key是否存在EXISTS# 给一个key设置有效期,有效期到期是该key会被自动删除EXPIRE# 查看一个key的剩余有效期TTL三、String 类型字符串类型:1、Strin
Redis:安装和介绍 一、Redis概述安装redis是一个开源的key-value储存系统;redis的五种存储类型:String字符串、list链表、set集合、zset有序集合、hash哈希类型;数据都是缓存在内存中。redis会周期性的把更新的 数据写入磁盘,或者把修改操作写入追加的记录文件。二、redis用于什么样的场景?配合关系型数据库(mysql)做高速缓存。高频词、热门数据的访问,降低数据库的io;分布式架构,可以做session 共享;通过list集合按照自然的时间排序的数据,最新的N个数据
Js学习一 一、JS的数据类型和变量- 5种数据类型:String 字符型;number 基本数据类型(short、int、long)boolean 布尔型funtion 函数object 对象- 3种特殊的值:undefind:未定义,所有js里未赋予初始值的时候。默认为undefindnull :空值NAN : not a number ,不是数字,也不是数值;string 类型 * 数值类型 不会报错,但是输出会是NAN- 关系运算== :等于是简单字面值的比较===:全
Java8新特性 一、java8新特性内容概述Lambda表达式;方法引用、构造器引用;stream流:并行流、串行流;接口的增强:静态方法、动态方法;Optional类;新的时间的日期API其他:重复注解、类型注解、通用目标类型判断;速度更快代码更少:增加了新的语法,lambda表达式stream流便于并行最大化减少空指针异常:OptinalNashorn引擎,允许在jvm上运行js应用二、Lambda表达式写法:6种public class Lambda { @Tes
Mybatis-plus一:MybatisPlus概述 一、Mybatis-Plus概述Mybatis-plus官方文档:乐观锁当要更新一条记录的时候,希望这条记录没有被别人更新乐观锁实现方式:取出记录时,获取当前version更新时,带上这个version执行更新时, set version = newVersion where version = oldVersion如果version不对,就更新失败乐观锁:1、先查询,获得版本号 version = 1-A线程:update user set name = “111”,versi
畅购商城项目day8:微服务网关 一、微服务网关1、微服务网关的作用:1、整合各个微服务的功能,形成一套系统;(主要作用——路由)2、微服务网关中实现日志统一记录;3、用户登录权限认证;4、限流;5、实现用户的跟踪操作2、为什么要用微服务网关?首先页面对接很多个域名(微服务),非常繁琐;安全隐患,服务端暴露过多的接口,容易受到攻击;GateWay安全,提供了统一访问的入口,降低了服务器受攻击面积;跨域问题(浏览器从一个域名的网页去请求另一个域名的资源时,域名、端口、协议任一不同,都是跨域);Gateway提
畅购商城项目day9: 用户认证 一、用户认证思想1、单点登录+第三方授权登录:SpringSecurity Oauth2.0实现2、SpringSecurity Oauth2.0认证模式有两种:授权码授权模式密码授权模式3、单点登录的实现方式:Apache ShiroCASSpring security CAS4、1:认证与授权身份认证:登录,校验用户密码、账号是否匹配,身份合法可继续访问。常见的身份认证表现形式有:用户名密码登录、指纹打卡等。用户授权:身份认证之后,系统会判断用户是否有访问系统资源的权限,就是鉴别
面试考点乱序合集一:对守护线程的理解? 一、谈谈什么是守护线程?守护线程:为所有的非守护线程提供服务的线程;任何一个守护线程都是整个JVM中所有非守护线程的保姆;守护线程依赖于整个进程而运行,哪天其他线程结束了,没有要执行的了,程序就结束了,不会理会守护线程,直接中断他;守护线程是不靠谱的,它本身的终止自己都无法控制,所以不要把io、File等重要的操作逻辑分配给它;二、守护线程的作用?举例:垃圾回收线程(GC),守护线程。当我们的线程中不再有任何线程,程序就不会再产生垃圾、垃圾回收线程无事可做,当JVM上只有GC时,就会自动离开。
Spring三:javaConfig方式的配置、AOP 一、javaConfig方式的配置1、舍弃了原来的spring.xml配置文件,用纯注解的方式实现。2、简单步骤://加这个注解,就是让这个类加载到容器中@Componentpublic class User { private String name; public String getName() { return name; } @Value("张三") public void setName(String name) {
Spring二:Spring配置说明、依赖注入、bean的作用域、Spring的自动装配 一、Spring官方文档IOC介绍:https://www.docs4dev.com/docs/zh/spring-framework/4.3.21.RELEASE/reference/beans.html#beans-introduction二、Spring的初步使用 private String str; public Hello() { } public Hello(String str) { this.str = str; }
Spring一:Spring简介、Spring组成和拓展、IOC理论推导、IOC本质、Spring初步使用 一、Spring简介1、Spring理念:使现有的技术更加实用,本身是一个大杂烩。目的是整合现有的框架技术。官网 : http://spring.io/官方下载地址 : https://repo.spring.io/libs-release-local/org/springframework/spring/GitHub : https://github.com/spring-projects2、Spring的优点:免费的框架(容器);轻量级、非入侵式;核心是:控制反转(IOC)、AOP(
Mybatis五:缓存、缓存的原理、自定义缓存 一、什么是缓存【Cache】查询:需要连接数据库,非常耗资源。一次查询的结果,可以存在一个直接取到的地方,内存。这个时候,这些临时放在内存里面的数据,叫缓存。我们再次查询相同数据的时候,直接走缓存,就不用走数据库。从而提高查询效率,解决高并发系统的性能问题。为什么使用缓存?减少用户和数据库交互次数、减少系统开销、提高系统效率。什么样的数据能用缓存? 经常查询并且不经常被改变的数据。二、Mybatis缓存mybatis中默认定义了两级缓存,一级缓存和二级缓存;一级缓存:又叫本地缓存。默认情