![](https://img-blog.csdnimg.cn/20201014180756757.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
后端
文章平均质量分 85
码云笔记
Hello World!
展开
-
基于Redisson实现自定义限流注解,防刷接口!
如登录接口,当用户使用手机号+验证码登录时,一般我们会生成6位数的随机验证码,并将验证码有效期设置为1-3分钟,如果对登录接口不加以限制,理论上,通过技术手段,快速重试100000次,即可将验证码穷举出来。解决思路:对登录接口加上限流操作,如限制一分钟内最多登录5次,登录次数过多,就返回失败提示,或者将账号锁定一段时间。在日常开发中,一些重要的对外接口,需要加上访问频率限制,以免造成不可估量的损失。ok,通过以上两步,即可完成我们的限流注解了,下面通过一个接口验证下效果。原创 2024-07-20 16:32:18 · 875 阅读 · 0 评论 -
MySQL 哈希索引、空间数据索引、全文索引
InnoDB 存储引擎也能支持哈希索引,但它所支持的哈希索引是自适应的。InnoDB 存储引擎会根据表的使用情况,在内存中基于 B-Tree 索引之上再创建一个哈希索引,这种行为是自动的、内部的行为,不能人为去干预是否在一张表中生成哈希索引。哈希索引仅支持精确匹配所有列的查询,在这种查询中,哈希索引是非常高效的,因为哈希索引存储的是哈希值,存储结构非常紧凑。哈希索引将所有的哈希码存储在索引中,同时保存指向每个数据行的指针。全文索引查找的是文本中的关键词,并不是直接比较索引中的值,它是一种特殊类型的索引。原创 2024-07-11 12:58:36 · 741 阅读 · 0 评论 -
SQL常用语句汇总 收藏不迷路!
当今信息化时代,数据已经成为了各行各业发展的基础,而SQL(Structured Query Language,结构化查询语言)则是数据库管理系统中最重要的编程语言之一。无论是在数据存储还是数据分析方面,SQL都是必不可少的。本文将为您介绍SQL语句汇总有哪些。原创 2024-05-09 12:15:22 · 442 阅读 · 0 评论 -
设计表时,如何选择正确的数据类型
假设现在有一个需求,需要创建一张orders表来存储客户的订单信息。order_id INT AUTO_INCREMENT PRIMARY KEY, -- 订单ID,主键,自增customer_id INT NOT NULL, -- 客户ID,假设已在其他表中定义order_date DATETIME NOT NULL, -- 订单日期和时间total_amount DECIMAL(10, 2) NOT NULL, -- 订单总金额,保留两位小数。原创 2024-03-15 15:27:01 · 817 阅读 · 0 评论 -
异步编程详解!异步编程的作用是什么?
异步设计在处理并发和提高系统性能方面具有优势,但也带来了一些可能的问题。以上提供的场景和方案仅供参考。使用过程中应当根据业务特征合理选择具体方案。原创 2024-01-30 00:21:58 · 1186 阅读 · 0 评论 -
Node.js如何处理多个请求?
这个事件循环是单线程的,也就是说,事件循环是事件队列的监听器。当从2号桌子接订单时,1号桌子的食物已经准备好了,但是服务员不能立即过去将食物送到1号桌子,服务员必须先完成2号桌子的订单,然后将其交给厨房,然后再将准备好的餐点送到1号桌子。例如:你正在做饭的同时,接到一通电话,你的家人接听了电话,你继续做饭,你和你的家人谁也不会干扰谁,两个不同的事情发生在两个人身上,这个就是并行。这个服务员完成第一桌客人的点单后,再前往下一桌的2号客人处,接受订单,并前往厨房等待准备完成,等饭做好后再将点餐的餐点交给客人。原创 2023-11-08 22:02:41 · 297 阅读 · 0 评论 -
Java开发中的工作流程和步骤
随着环境的变迁,大家总会更换工作,有裁员的,有跳槽的,除了进进出出的老人,还有源源不断入坑的新人。很多人入职之后还不知道怎么快速适应工作,对我而言,除去寥寥可数的同事感情,对我而言,更换工作更像是换个环境办公。今天记录一下每次功能开发的工作流程,当然这个流程并不具有代表性,特别是与"大公司"完善的制度相比,这只能算是给新人指路而已。每个公司的需求开发步骤都不相同,让我们一起完善这个开发步骤,给后来者指明方向。注:步骤是死的,人是活的,不清楚的地方及时提问,毕竟向同事提问是不收费的。原创 2023-11-02 23:17:58 · 564 阅读 · 0 评论 -
Redis 7.0 源码环境搭建与阅读技巧
天下武功,无坚不摧,唯快不破!我的名字叫 Redis,全称是 Remote Dictionary Server。有人说,组 CP,除了要了解她外,还要给机会让她了解你。那么,作为开发工程师的你,是否愿意认真阅读此心法抓住机会来了解我,运用到你的系统中提升性能。我遵守 BSD 协议,由意大利人 Salvatore Sanfilippo 使用 C 语言编写的一个基于内存实现的键值型非关系(NoSQL)数据库。我是一个内存数据结构存储、可作为数据库、缓存、消息队列、流处理引擎,速度快是我的特点。原创 2023-10-28 22:49:28 · 241 阅读 · 0 评论 -
java后端操作树结构
使用场景:当我们得到一个树形结构数据时,可能需要在树形结构上对数据进行筛选,例如通过文件夹(文件)名称模糊查询相关的文件夹并展现其父级。缺点:需要查询出完整的树形结构才能用作筛选,在数据量非常庞大的时候并不适用。stream流递归方法。(2)双层for循环。原创 2023-10-24 14:59:51 · 483 阅读 · 0 评论 -
值得收藏!超详细MySQL下载安装教程
数据库可以存储数据、优化读写,关系型数据库由大量表格组成,表与表之间有关联;Mysql、SqlServer、Oracle等都属于关系型数据库管理系统。作为自学选手在安装MySQL过程中遇到了好多乱七八糟的问题,在经历了各种平台搜索乃至付费咨询之后终于摸索出一套完整的安装方法,献给入门小白。安装mysql前需要了解一下安装注意事项:如果对版本没多少需求,建议安装 5.0 版本,8.0 在启动章节可能会出现问题;原创 2023-10-18 22:52:34 · 15462 阅读 · 3 评论 -
最常见的跨域问题?如何解决?
在当今互联网时代,前端开发中经常会遇到跨域问题,即浏览器禁止向不同源的服务器发送请求。这意味着在开发过程中,如果我们的前端代码需要与其他域名下的接口进行通信,我们将面临无法直接发送请求的困境。跨域问题的存在给开发带来了不少麻烦,然而,在跨域问题之下,我们也发现了解决的方法。本篇博客将为大家介绍如何解决跨域问题的一些有效策略和技巧。原创 2023-10-08 01:12:38 · 70 阅读 · 0 评论 -
关于Word转PDF的几种实现方案
如果在列表中找不到"Kingsoft Office"或"WPS Office",那可能是你没有安装WPS Office,或者你的WPS Office版本不支持COM组件。这种方法同样需要在运行代码的机器上安装WPS Office,并且需要在项目中添加对KWPS和KWPS.Application的引用。请注意,使用此方法需要在运行代码的机器上安装WPS Office,并且需要确保你的项目已经添加了对KWPS的引用。首先,需要在项目中添加对KWPS和KWPS.Application的引用。原创 2023-10-08 01:09:34 · 277 阅读 · 0 评论 -
java实现 微信公众号推送消息 ,cv 就可运行!!!
发送消息和推送消息都是需要 token 的,所以第一步就可以获取token,再拿获取的token 进行发送消息,每天获取token的是有次数限制的(2000次)这里就两个部分,getToken() 方法 是获取token, pushMessage() 是推送消息(这里代码中没有模板id,需要修改成上面自己创建的模板id)我这里是把地址都变成枚举,因为后面地址会比较多,便于维护,当然也可以配置在yaml ,或者定义在使用处。这个是推送消息vo,给那个用户推送消息,并带上token。手机端:接收到的消息。原创 2023-10-08 01:04:12 · 670 阅读 · 1 评论 -
什么是负载因子?为什么是0.75?
HashMap 负载因子 load factor,也叫做扩容因子和装载因子,它是 HashMap 在进行扩容时的一个阈值,当 HashMap 中的元素个数超过了容量乘以负载因子时,就会进行扩容。默认的负载因子是 0.75,也就是说当 HashMap 中的元素个数超过了容量的 75% 时,就会进行扩容。原创 2023-10-05 17:18:06 · 734 阅读 · 0 评论 -
浅克隆和深克隆有什么区别?
在编程中,克隆是指创建一个与原始对象相同的新对象。这个新对象通常具有与原始对象相同的属性和方法,但是它们是两个不同的对象,它们在内存中的位置不同。在 Java 中,可以通过实现 Cloneable 接口和重写 clone() 方法来实现对象的克隆。在 Java 中,克隆可以分为深克隆和浅克隆两种。它们的区别在于克隆出来的新对象是否与原始对象共享引用类型的属性。浅克隆:克隆出来的新对象与原始对象共享引用类型的属性。也就是说,新对象中的引用类型属性指向的是原始对象中相同的引用类型属性。原创 2023-10-05 17:16:15 · 312 阅读 · 0 评论 -
Java各种数据结构-源码与应用
列表(List,一维ordered容器,有多种实现)Set(一维无重复集合,有多种实现)HashSet和TreeSet(用HashMap和TreeMap实现的set)栈(Stack,后进先出的容器)队列(Queue,先进先出的容器)优先队列(PriorityQueue,又称堆,英文叫Heap,注意这玩意儿不是队列)原创 2023-10-02 17:26:35 · 157 阅读 · 0 评论 -
Java多线程与线程池技术
尽量使用手动的方式创建线程池,避免使用Executors工厂类根据场景,合理设置线程池的各个参数,包括线程池数量、队列、线程工厂和拒绝策略作者:赛先生和泰先生链接:https://www.jianshu.com/p/e211641e60c4来源:简书著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。原创 2023-10-02 17:24:58 · 130 阅读 · 0 评论 -
运用API创建多线程
在Windows平台下创建多线程有两种方式,读者可以使用函数,或者使用函数均可,两者虽然都可以用于创建多线程环境,但还是存在一些差异的,首先函数它是Win32 API的一部分,而是C/C++运行库的一部分,在参数返回值类型方面,返回线程句柄,而返回线程ID,当然这两者在使用上并没有太大的差异,但为了代码更加通用笔者推荐使用后者,因为后者与平台无关性更容易实现跨平台需求。原创 2023-10-01 15:36:14 · 182 阅读 · 0 评论 -
怎么部署微服务项目?新手必看
随着云计算和微服务架构的普及,越来越多的企业开始采用微服务架构来构建他们的应用程序。然而,部署微服务项目并不是一个简单的过程,需要一定的技术知识和实践经验。本文将详细介绍如何部署一个微服务项目,包括项目结构、环境配置、Docker容器化、Kubernetes部署、监控和调试等方面。原创 2023-09-30 21:09:10 · 1763 阅读 · 0 评论 -
如何实现简单的分布式链路功能?
nginx:配置,转发时配置headerzuul:配置前置过滤器,进行 traceId 向下游透传服务层:log 日志文件配置,用到 MDC 来打印输出 traceId;用到了过滤器和 Feign 拦截器来实现 traceId 透传mq:消息队列要想实现 traceId 传递,如 rocketmq 需要用到 UserProperty。原创 2023-09-30 20:28:10 · 136 阅读 · 0 评论 -
用Rust手把手编写一个Proxy(代理), TLS加密通讯
ClientServerTLS协议版本、随机数、支持的加密套件和对应公钥A生成随机数B,根据信息生成密钥选用加密套件,服务端随机数,服务端证书使用的P、G、公钥B与签名握手报文的信息(服务端加密)验证证书,使用a、B计算出K,得到密钥握手报文的信息(客户端加密)应用数据(客户端加密)应用数据(服务端加密)ClientServer。的文件,这里面包含的信息有n, e, d, p, q等完整的RSA信息,也是保证安全最重要的信息,格式类似如下。指定证书的域名,如果不指定,则默认用自带的证书参数。原创 2023-09-25 17:07:51 · 258 阅读 · 0 评论 -
数据库sql中判断时间冲突
总体思路清晰, 逐步分析得到, 但不巧妙分两段存, 跨天时候24截取. 不跨天时候存两遍。原创 2023-09-21 21:26:16 · 207 阅读 · 0 评论 -
java设计模式之单例模式
单例模式:是指在内存中有且只会创建一次对象的创建型-设计模式,在程序多次使用同一个对象作用相同的时候,为了防止频繁创建和消费对象,单例模式可以让程序中只创建一个对象。原创 2023-09-21 21:14:56 · 41 阅读 · 0 评论 -
跨域和解决方案
例如:a页面想获取b页面资源,如果a、b页面的协议、域名、端口、子域名不同,所进行的访问行动都是跨域的,而浏览器为了安全问题一般都限制了跨域访问,也就是不允许跨域请求资源。注意:跨域限制访问,其实是。理解这一点很重要!!!无法读取非同源网页的cookie、localStorage、IndexedDB无法接触非同源网页的DOM无法向非同源地址发送 AJAX 请求。原创 2023-09-20 23:28:06 · 56 阅读 · 0 评论 -
如何实现流量控制和熔断降级?
在 Sentinel 中,资源是你想要保护的对象,可以是接口、方法、HTTP 路由等。你需要为你的资源定义流量控制规则。假设你要保护一个函数myFunction// 你的业务逻辑你可以定义一个 Sentinel 资源,如下所示:你可以在初始化代码中定义流量控制规则,以控制资源的访问速率。例如,你可以设置每秒允许的最大请求数量:// 定义流量控制规则Count: 100, // 允许的最大 QPSControlBehavior: base.Reject, // 超出限制后的处理行为。原创 2023-09-18 22:52:12 · 74 阅读 · 0 评论 -
JDK21来了!附重要更新说明
JDK21 计划23年9月19日正式发布,虽然一直以来都是“版本随便出,换 8 算我输”,但这么多年这么多版本的折腾,如果说之前的 LTS版本JDK17你还觉得不香,那 JDK21还是有必要关注一下,因为会有一批重要更新发布到生产环境中,特别是千呼万唤的虚拟线程,虽然说这东西我感觉不需要的用不到,需要的早都转go了,哈哈,但作为近几年JDK一个“重大”的更新,在实际开发应用中还是是有很大价值的。所以这篇文章主要提取了这次更新中个人感觉比较有价值的几点做个基本的介绍,想要尝鲜的同学可以看下。原创 2023-09-18 22:39:17 · 1092 阅读 · 0 评论 -
.NET中测量多线程基准性能
多线程基准性能是用来衡量计算机系统或应用程序在多线程环境下的执行能力和性能的度量指标。它通常用来评估系统在并行处理任务时的效率和性能。测量中通常创建多个线程并在这些线程上执行并发任务,以模拟实际应用程序的并行处理需求。在此,我们用多个线程来完成一个计数任务,简单地测量系统的多线程基准性能,以下的5种测量代码(代码1,代码4,代码5,代码6,代码7)中,都设置了计数器,每一秒计数器的计数量体现了系统的性能。原创 2023-09-16 16:30:23 · 77 阅读 · 0 评论 -
MySQL 分表查询
分表是一种数据库分割技术,用于将大表拆分成多个小表,以提高数据库的性能和可管理性。在MySQL中,可以使用多种方法进行分表,例如基于范围、哈希或列表等。下面将详细介绍MySQL如何分表以及分表后如何进行数据查询。原创 2023-09-16 16:28:55 · 813 阅读 · 0 评论 -
使用MySQL存储过程提高数据库效率和可维护性
MySQL存储过程是一组预编译的SQL语句,它们以一个名称存储在数据库中,可以随时被调用执行。存储过程可以接受输入参数、执行一系列操作,并返回结果。这些特性使得存储过程成为处理复杂查询、数据操作和事务管理的理想工具。原创 2023-09-16 16:21:55 · 137 阅读 · 0 评论 -
Redis常见命令大全
贴心小建议:命令不要死记,学会查询就好啦Redis为了方便我们学习,将操作不同数据类型的命令也做了分组,在可以查看到不同的命令:当然我们也可以通过Help命令来帮助我们去查看命令。原创 2023-09-16 16:20:58 · 7818 阅读 · 0 评论 -
Redis 之分布式锁的实现
Redis 以高性能著称,但使用其实现分布式锁来解决并发仍存在一些困难。Redis 分布式锁只能作为一种缓解并发的手段,如果要完全解决并发问题,仍需要数据库的防并发手段。原创 2023-09-16 16:18:24 · 57 阅读 · 0 评论 -
后端常用的Linux命令大全,建议收藏
学会Linux 常用命令是后端程序员的必备技能,本文介绍了一部分后端开发人员常用的Linux命令,每个命令都有更多的选项和用法。原创 2023-09-16 16:16:30 · 46 阅读 · 0 评论 -
提高 MySQL查询效率的方法
请注意,MySQL性能优化通常是一个持续的过程,需要根据应用程序的需求和数据库的变化来调整。每个应用程序和数据库都有其独特的性能挑战,因此需要综合考虑上述方法,并根据具体情况进行调整。性能优化需要仔细的计划、监控和测试,以确保所做的更改不会导致其他问题。当涉及到提高MySQL查询效率时,以下是一些重要的策略和技巧,可以帮助你优化数据库性能。无论你是一个Web开发者、数据工程师还是系统管理员,这些方法都可以帮助你确保你的MySQL数据库运行得更快、更有效。原创 2023-09-14 17:09:28 · 251 阅读 · 0 评论 -
分布式锁的3种实现!附实现代码
分布式锁是一种用于保证分布式系统中多个进程或线程同步访问共享资源的技术。同时它又是面试中的常见问题,所以我们本文就重点来看分布式锁的具体实现(含实现代码)。在分布式系统中,由于各个节点之间的网络通信延迟、故障等原因,可能会导致数据不一致的问题。分布式锁通过协调多个节点的行为,保证在任何时刻只有一个节点可以访问共享资源,以避免数据的不一致性和冲突。原创 2023-09-14 17:05:28 · 142 阅读 · 0 评论 -
java中有哪些并发的List?
Java提供了多种支持并发的容器,如ArrayList、CopyOnWriteArrayList、ConcurrentLinkedDeque。了解它们的用法和性能特点对于编写高效的多线程程序至关重要。选择正确的容器可以显著提高应用程序的性能和可靠性。原创 2023-09-14 17:00:59 · 359 阅读 · 0 评论 -
HTML图片热区map area的用法
area>标记主要用于图像地图,通过该标记可以在图像地图中设定作用区域(又称为热点),这样当用户的鼠标移到指定的作用区域点击时,会自动链接到预先设定好的页面。shape和coords:是两个主要的参数,用于设定热点的形状和大小。原创 2023-09-12 18:11:19 · 631 阅读 · 0 评论 -
用户总是频繁被盗号?自查下是不是缺少这些设计
今天主要讲了几种预防用户账号被盗的手段以及简单的实现,相信大家在使用各种产品的时候也有碰到过对应的功能,我们在做用户体系设计的时候,前期可能用户量比较少,但是也可以尽量的考虑安全相关的设计,体量小有小的做法,大有大的做法,但是做了总比没做好。希望读完这篇文章大家有所收获~ #发文福利# #创作灵感#原创 2023-08-24 20:29:20 · 87 阅读 · 0 评论 -
基于跳表实现的轻量级KV存储引擎 项目总结
KV存储引擎 众所周知,非关系型数据库redis,以及levedb,rockdb其核心存储引擎的数据结构就是跳表。本项目就是基于跳表实现的轻量级键值型存储引擎,使用C++实现。插入数据、删除数据、查询数据、数据展示、数据落盘、文件加载数据,以及数据库大小显示。原创 2023-08-20 12:09:23 · 601 阅读 · 1 评论 -
互联网公司经常问到的redis系列面试题【附答案】
与传统数据库不同的是 Redis 的数据是存在内存中的,所以读写速度非常快,因此 redis 被广泛应用于缓存方向,每秒可以处理超过 10万次读写操作,是已知性能最快的Key-Value DB。注意,如果采用了主从架构,那么建议必须开启 master node 的持久化,不建议用 slave node 作为 master node 的数据热备,因为那样的话,如果你关掉 master 的持久化,可能在 master 宕机重启的时候数据是空的,然后可能一经过复制, slave node 的数据也丢了。原创 2023-08-20 12:06:31 · 74 阅读 · 0 评论 -
怎么用代码实现订单30分钟未支付自动取消?
这样可以看出定时轮由个 3 个重要的属性参数,ticksPerWheel(一轮的 tick 数),tickDuration(一个 tick 的持续时间)以及 timeUnit(时间单位),例如当 ticksPerWheel=60,tickDuration=1,timeUnit=秒,这就和现实中的始终的秒针走动完全类似了。结合以上两个特性,就可以模拟出延迟消息的功能,具体的,我改天再写一篇文章,这里再讲下去,篇幅太长。因此,方案二不是太推荐。对上述的任务,我们给一个专业的名字来形容,那就是延时任务。原创 2023-07-09 23:01:35 · 227 阅读 · 0 评论