自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(14)
  • 收藏
  • 关注

原创 算法-哈希

常见算法题的哈希解决方案

2023-12-24 20:05:40 917

原创 lua学习

Lua 是一种轻量小巧的脚本语言,用标准C语言编写并以源代码形式开放, 其设计目的是为了嵌入应用程序中,从而为应用程序提供灵活的扩展和定制功能。1. Lua简介Lua具有以下特性:轻量级: 它用标准C语言编写并以源代码形式开放,编译后仅仅一百余K,可以很方便的嵌入别的程序里。 可扩展: Lua提供了非常易于使用的扩展接口和机制:由宿主语言(通常是C或C++)提供这些功能,Lua可以使用它们,就像是本来就内置的功能一样。 其它特性:1. 支持面向过程(procedure-oriented)编

2021-04-11 19:51:50 1055

原创 容器基础

1. 从进程说起Docker 容器这个听起来玄而又玄的概念,实际上是在创建容器进程时,指定了这个进程所需要启用的一组 Namespace 参数。这样,容器就只能“看”到当前 Namespace 所限定的资源、文件、设备、状态,或者配置。而对于宿主机以及其他不相关的程序,它就完全看不到了。所以说,容器,其实是一种特殊的进程而已。1.1 容器与虚拟机对比这幅图的左边,画出了虚拟机的工作原理。其中,名为 Hypervisor 的软件是虚拟机最主要的部分。它通过硬件虚拟化功能,模拟出了运行一个操作

2021-02-27 21:41:19 298

原创 校验注解

在项目的接口定义中,需要对接口的入参做必要的校验,以拦截不合法的请求。简单粗暴的使用if else校验虽然可以达到目的,但是代码看起来会繁琐、冗余,不直观,所以推荐使用注解进行校验,使得代码简单、优雅、方便维护。可以使用现成的校验组件,也可以进行自定义的注解校验。本篇文章主要讲解spring提供的Validated校验使用方式。

2021-01-30 21:11:09 1114

转载 Mysql知识点总结

存储引擎MySQL常见的两种存储引擎:MyISAM与InnoDBMySQL中myisam与innodb的区别InnoDB支持事物,而MyISAM不支持事物 InnoDB支持行级锁,而MyISAM支持表级锁 InnoDB支持MVCC, 而MyISAM不支持 InnoDB支持外键,而MyISAM不支持索引Mysql索引使用的数据结构主要有BTree索引和哈希索引。对于哈希索引来说,底层的数据结构就是哈希表,Hash索引只能用于对等比较,例如=,<=>(相当于=)操作符...

2020-12-06 16:27:23 166

原创 RabbitMQ知识点总结

什么是 rabbitmq采用 AMQP 高级消息队列协议的一种消息队列技术,最大的特点就是消费并不需要确保提供方存在,实现了服务之间的高度解耦消息队列的作用与使用场景异步:批量数据异步处理(批量上传文件)削峰:高负载任务负载均衡(电商秒杀抢购)解耦:串行任务并行化(退货流程解耦)广播:基于Pub/Sub实现一对多通信消息如何路由?消息 -> 交换器 -> 队列,消息携带Routing-key至交换器。交换器根据交换器的路由规则和交换器和队列的Binding-key绑定关

2020-12-05 16:53:06 237

原创 RabbitMQ安装部署与使用

1. 基本概念RabbitMQ是一个由erlang开发的AMQP(Advanced Message Queue )的开源实现。1.1 消息模型 Broker:简单来说就是消息队列服务器实体。 Exchange:消息交换机,它指定消息按什么规则,路由到哪个队列。 Queue:消息队列载体,每个消息都会被投入到一个或多个队列。 Binding:绑定,它的作用就是把exchange和queue按照路由规则绑定起来。 Routing Key:路由关键字.

2020-12-01 23:28:47 614

原创 Redis知识点总结

Redis是一个开源的内存中的数据结构存储系统,可以作为数据库、中间件、缓存。redis的访问数量级是多少Redis的访问数量级问10W+/s,链接数越多访问速度越慢。...

2020-12-01 21:59:12 161 1

原创 redis数据持久化

redis是内存型的nosql数据库,所以数据安全必须考虑,redis支持将数据持久化到磁盘。redis持久化的方式有两种:RDB(Snapshotting,默认方式)和AOF。1. RDB1.1 运行原理在某些时刻,redis通过fork产生子进程,一个父进程的快照,其中有和父进程当前时刻相同的数据; 父进程继续处理client请求,子进程负责将快照(数据副本)写入临时文件; 子进程写完后,用临时文件替换原来的快照文件,然后子进程退出;1.2 细节若果发生系统崩溃,则会丢失最近一次r

2020-12-01 21:19:02 249

原创 Redis缓存异常

1. 缓存雪崩缓存雪崩是指缓存同一时间大面积的失效,所以,后面的请求都会落到数据库上,造成数据库短时间内承受大量请求而崩掉。1.1解决方案缓存数据的过期时间设置随机,防止同一时间大量数据过期现象发生。 一般并发量不是特别多的时候,使用最多的解决方案是加锁排队。 给每一个缓存数据增加相应的缓存标记,记录缓存的是否失效,如果缓存标记失效,则更新数据缓存。一个过期时间均匀分布的示例:@Override public UserDetails getUserInfoById(Inte.

2020-11-28 15:39:49 249

转载 Redis集群的3种类型

redis有三种集群方式:主从复制,哨兵模式和集群1.主从复制主从模式是三种模式中最简单的,在主从复制中,数据库分为两类:主数据库(master)和从数据库(slave)。1.1 特点主数据库可以进行读写操作,当读写操作导致数据变化时会自动将数据同步给从数据库 从数据库一般都是只读的,并且接收主数据库同步过来的数据 一个master可以拥有多个slave,但是一个slave只能对应一个master slave挂了不影响其他slave的读和master的读和写,重新启动后会将数据从ma.

2020-11-27 11:14:40 1214

原创 springboot集成redis分布式锁

目前,大多数服务都是用了多实例,集群部署。传统的synchronized,ReentrantLock等锁,只能在单实例内部生效。集群服务的线程安全,需要通过分布式锁实现,当然如果是数据库访问的话,也可以通过数据库实现锁(TODO: mysql集群行锁能否在分布式服务中生效?需要再探究下)。本篇文章主要介绍在springboot项目中使用redis实现分布式锁。1.StringRedisTemplate实现分布式锁1.1pom.xml文件引入redis依赖<dependency>..

2020-11-24 17:10:46 255 1

原创 swagger集成与使用

Swagger是一个规范和完整的框架,用于生成、描述、调用和可视化RESTful风格的Web服务。简单来说,Swagger可以通过使用注解来生成接口文档,使得后端开发人员不必接口文档和代码各维护一套,代码即接口文档,代码更新接口文档可以自动更新。本篇文章主要讲解Springboot集成Swagger的配置,以及Swagger常用注解。另外,Swagger也提供了根据接口文档生成前后端代码的功能,在此不做介绍。

2020-11-20 14:28:17 1694

原创 自定义校验注解

API开发中经常会遇到一些对请求数据进行验证的情况,这时候如果使用注解就有两个好处。一是验证逻辑和业务逻辑分离,代码清晰; 二是验证逻辑可以轻松复用,只需要在要验证的地方加上注解就可以。以后开发过程中,关于参数合法性的校验,如果有已实现的注解(例如@NotNull、@NotEmpty等)可以直接使用,没有现成的可用,尽量使用自定义注解,使得业务逻辑与校验分离,校验逻辑复用,代码结构清晰。需求:接收一个Student对象,并希望对象里的age域的值是奇数。下面以此需求为例,解析自定义校验注解。

2020-11-18 16:21:21 996

空空如也

空空如也

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

TA关注的人

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