自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Django 开发 web 后端,好用过 SpringBoot ?

这些例子展示了在不同场景下 Django 和 Spring Boot 的优势和局限性,希望这能帮助你更好地理解它们的适用范围和选择哪个框架更适合你的项目。:以简洁和直观著称。:Java生态庞大,Spring Boot得益于其广泛的生态系统,提供了大量的集成和扩展。对于需要高并发和实时处理的数据平台,Spring Boot的响应速度和性能更有优势。:有一个非常活跃的社区,插件和扩展丰富,但相对于Java生态系统,数量可能略少。:适用于大型、复杂的应用,特别是在需要高性能和高并发处理的情况下。

2023-12-06 01:01:36 804

原创 源码剖析 Spring Security 的实现原理

是一个轻量级的安全框架,可以和 Spring 项目很好地集成,提供了丰富的身份认证和授权相关的功能,而且还能防止一些常见的网络攻击。我在工作中有很多项目都使用了 Spring Security 框架,但基本上都是浅尝辄止,按照说明文档配置好就完事了,一直没有时间深入地研究过。,写得非常全面仔细,感觉是一篇不错的 Spring Security 入门文章,于是花了一点时间拜读了一番,结合着。其实,如果仔细观察我们的程序输出的日志,也可以看到 Spring Security 默认的过滤器链为。

2023-11-28 23:49:34 384

原创 Java里的MethodHandles是什么? 和反射有什么区别?

然而,考虑到性能并不是任务的唯一适用性度量,我们还必须考虑到,由于缺乏成员类枚举、可访问性标志检查等机制,MethodHandles API更难使用。特别是,查找工厂提供了一组方法,使我们能够在考虑方法范围的情况下以适当的方式找到方法句柄。当我们想要创建方法句柄时,要做的第一件事是检索查找Lookup,即负责为查找类可见的方法、构造函数和字段创建方法句柄的工厂对象。在本文中,我们将探讨一个重要的API,它是在Java7中引入的,并在以后的jdk版本中得到了增强,即。

2023-11-27 20:52:53 565

原创 人人自媒体的时候,Ai绘画还值得踏入吗?

去年以来,AI的高速发展让各行各业都发生了翻天覆地的变化,首当其冲的就是内容创作领域,网上褒贬不一。MJ的模式是社区性质的,所有人的关键词都是公开的,你可以充分的学习其他人是怎么使用prompt,在这种环境下,大家都会快速成长不断的去迭代尝试这个软件的边界。无限制数量生成图片畅玩至今的感受,就是真的很牛,未来几年,拥抱AI与远离AI的人,区别一定会越来越明显。MJ是一款搭载在discord上的人工智能绘画聊天机器人,与其他AI绘画需要一定的代码基础不同,mid基本上是零成本学习,操作比较的简单。

2023-10-21 22:31:39 302

原创 李彦宏:不逊色于GPT4!文心一言4.0重磅发布,AI下半场开始加速

大会上李彦宏表示,4.0模型是迄今为止最强大的文心大模型,相比3.5版本,实现了基础模型的全面升级,在理解、生成、逻辑和记忆能力上都有着显著提升,综合能力“与GPT-4相比毫不逊色”。从现场提问北京工作是否可以回河北承德买房,到请它快速生成一段展示汽车性能带有“数字人”口播的视频,再到请它帮忙解答数学题,新版文心一言都能够顺利地完成任务。期待国内的AI模型越来越强,群雄逐鹿的时代,保持学习,拥抱AI!除了以上的模型升级,百度还针对其系统内产品进行了全面的“AI升级”,如百度文库、百度网盘、百度地图等。

2023-10-19 17:55:27 417

原创 GitHub 3个初中生开源了windows 12网页版,目前5k+ star!

该项目全部采用前端技术开发,并集成了类似微软的 Windows 12 Copilot,可以在你给系统下达指令的时候,快速处理各种工作任务,提升生产效率。整体而言,目前该项目仍处于早期阶段,更多的在于 UI 层面的模仿与展示,一些应用与组件的功能还有待完善,但作者开了个好头。有意思的是,项目的几位核心开发者,主要是在读初中生,当中有一位出生于 2009 年,年仅 14 岁,将在今年升初三。操作系统的 UI 界面优雅简洁,并附带各种流畅丝滑的动画效果,以及各种仿原生系统的实用工具与应用。

2023-10-15 18:34:16 232

原创 宝藏AI绘画工具,国内能打开使用Midjourney接口,无限制数量,新手免费体验!

好用是好用,绘画领域公认的第一,可是最便宜的版本都要10美元/月(人民币72元),而且限制数量200张/月,用的多的话200张不一两天就用完了嘛!这几天无限畅玩了一把,普通用户可以中文描述,如果是专业的绘画师,MJ咒语必不可少,这个我也整理了很多出来交流,后续持续分享下我的咒语!登录,选择绘画功能 ,输入MJ咒语,或者中文描述也可以,设置画布尺寸、图片数量,可以上传风格参考图,点击生成很快便可完成创作。网上超级多的博主打着免费的幌子推荐各种杂七杂八的AI网站,结果都是收费的而且有些还打不开,巨坑!

2023-10-13 00:17:26 544

原创 工作这么多年,还分不清truncate、delete和drop?

与delete语句不同的是,truncate语句不会将数据放入回收站或事务日志中,而是直接删除数据,使表恢复到初始状态。也就是说,truncate语句将表中的所有行都删除,并重置表的自增ID计数器。当我们使用drop语句时,不仅会删除表中的所有数据,还会连同表结构一起删除,包括索引、约束等。truncate语句适用于需要删除整个表中的所有数据,并且不需要后续的数据恢复或回滚操作的场景。值得注意的是,truncate语句无法满足条件删除的需求,因为它只能删除整个表中的所有数据。

2023-09-17 22:33:06 70

原创 Mysql存储引擎,你了解几个?

Memory 同时支持散列索引和 B 树索引, B树索引可以使用部分查询和通配查询,也可以使用<,>和>=等操作符方便数据挖掘,散列索引相等的比较快但是对于范围的比较慢很多。数据库引擎是用于存储、管理和检索数据的核心组件,它们直接影响着数据库的性能、可靠性和功能,接下来本文介绍下一些常见的MySQL数据库引擎。InnoDB 是MySQL默认的事务性数据库引擎,底层存储结构为B+树, B树的每个节点对应innodb的一个page, page大小是固定的,一般设为 16k。

2023-09-14 17:52:40 51

原创 后端常用的Linux命令大全,建议收藏

学会Linux 常用命令是后端程序员的必备技能,本文介绍了一部分后端开发人员常用的Linux命令,每个命令都有更多的选项和用法。作为一名后端工程师,使用终端是一种常见的做法,也是你应该学习的技能。如果你执行此命令,你必须有权在目录中创建新文件夹,否则你可能会收到权限被拒绝的错误。sudo 是最常用的命令之一,可让你执行需要管理或 root 特权和权限的任务。如果运行此命令时不带标志、参数或选项,它将显示当前工作目录的内容。最后,你还可以使用带有标志的命令将包括所有文件和子目录的完整目录移动到新目标,

2023-09-14 17:41:58 90

原创 技术人员该读什么书?--- 并发编程篇

此外,本书还介绍了设计并发应用程序的方法论、设计模式、实现良好并发应用程序的提示和技巧、测试并发应用程序的工具和方法,以及如何使用面向Java 虚拟机的其他编程语言实现并发应用程序。并发编程领域的扛鼎之作,作者是阿里和1号店的资深Java技术专家,本书内容涵盖Java并发编程机制的底层实现原理、Java内存模型、Java并发编程基础、Java中的锁、并发容器和框架、原子类、并发工具类、线程池、Executor框架等主题,每个主题都做了深入的讲解,同时通过实例介绍了如何应用这些技术。

2023-09-02 18:10:09 322

原创 MySQL InnoDB 的所有锁

分别尝试插入值 5 和 6 的单独事务,在获得对插入行的排他锁之前,每个事务都使用插入意向锁锁定 4 和 7 之间的间隙,但不要互相阻塞,因为这些行是不冲突的。如果一个会话在索引中的记录上具有共享锁或独占锁 R,则另一个会话无法 R在索引顺序之前的空隙中插入新的索引记录。间隙锁是在索引记录之间的间隙上的锁,或者是在第一条索引记录之前或最后一条索引记录之后的间隙上的锁。在最简单的情况下,如果一个事务正在向表中插入值,则任何其他事务必须等待自己向该表中插入,以便第一个事务插入的行接收连续的主键值。

2023-09-02 17:49:41 74

原创 Redis 分布式锁

当客户端 A 成功加锁,指令还未同步,此时主节点挂掉,从节点提升为主节点,新的主节点没有锁的数据,当客户端 B 加锁时就会成功。可以通过客户端轮询的方式解决该问题,当未获取到锁时,等待一段时间重新获取锁,直到成功获取锁或等待超时。如果线程 A 成功获取锁并设置过期时间 30 秒,但线程 A 执行时间超过了 30 秒,锁过期自动释放,此时线程 B 获取到了锁,线程 A 和线程 B 并发执行。另一种方式是使用 Redis 的发布订阅功能,当获取锁失败时,订阅锁释放消息,获取锁成功后释放时,发送锁释放消息。

2023-08-06 14:14:56 91

原创 redis 如何解决缓存雪崩、击穿、穿透难题

发生缓存雪崩时,为了防止引发连锁的数据库雪崩,甚至是整个系统的崩溃,我们暂停业务应用对缓存系统的接口访问。通常为了保证缓存中的数据与数据库中的数据一致性,我们会给 Redis 里的数据设置过期时间,当缓存数据过期后,用户访问的数据无法命中缓存,业务系统需要重新生成缓存,因此就会访问数据库,并将数据更新到 Redis 里。: 指的是缓存中的某个热点数据过期了,但是此时大量的并发请求访问这个key的值,此时因为缓存过期无法从缓存中获取,直接访问数据库,数据库很容易就会被这些高并发的请求冲垮,这就是缓存击穿。

2023-08-06 14:07:24 64

原创 深入解析Redis持久化机制

但是 AOF 是存在一定的风险的,首先是如果刚执行一个命令,但是 AOF 文件中还没来得及保存就宕机了,那么这个命令和数据就会有丢失的风险,另外 AOF 虽然可以避免对当前命令的阻塞(因为是先写入再记录日志),但有可能会对下一次操作带来阻塞风险(可能存在写入磁盘较慢的情况)。我们上面说过, AOF 属于日志追加的形式来存储 Redis 的写指令,虽然有一定的写回策略,但毕竟 AOF 是通过文件的形式记录所有的写命令,但如果指令越来越多的时候,AOF 文件就会越来越大,可能会超出文件大小的限制。

2023-08-06 13:57:49 67

原创 redis 如何保证数据一致性

假设线程 A 删除了数据库中的值,但还没来得及删除缓存,线程 B 就开始读取数据了,那么此时,线程 B 查询缓存时,就会直接从缓存中读取到旧值。并且线程 A 一般也会很快删除缓存值,这样其他线程再次读取时,就会发生缓存缺失,然后去数据库中获取最新的值,因此这种情况对业务的影响较小。而且如果数据不一致,那么应用从缓存中读取的数据就不是最新数据,可能会导致严重的业务问题。有了sleep 的这段时间,即使有其他缓存从数据库读取到旧的值并重新放到缓存中,我们也能再次删除,保证缓存中会是新的值。

2023-08-02 10:05:48 953

原创 一文搞懂什么是零拷贝

其名字中的”直接”二字用于区分使用 page cache 机制的缓存 I/O,其他所有技术中,数据至少需要在内核空间存储一份,但是在 Direct I/O 技术中,数据直接存储在用户空间中,绕过了内核。sendfile() 是一种特殊的系统调用,它允许在内核空间和用户空间之间直接传输数据,避免了数据在内核和用户空间之间的额外拷贝。splice() 的主要优势在于减少了数据拷贝的次数和数据在用户空间和内核空间之间的来回传输,从而显著提高了数据传输的效率。splice() 是一种在管道传输中实现零拷贝的方式。

2023-08-01 16:06:06 2077

原创 IDEA,Pycharm,Goland,Webstorm 最新发布2023.2版本,亲测好用!

具体的改变相信大家已经提前有所了解的了,我迫不及待的就下载体验了下,UI变好看了,使用起来感觉更流畅,好用推荐!我这边主要装了其中三款试用了下,感觉工具使用起来更加的流畅好用了,推荐大家也更新到最新版使用。Pycharm 2023.2 最新版。终于正式发布了,同时发布的还有。GoLand 2023.2 最新版。请仔细看每一个工具激活成功的图片。IDEA 2023.2 最新版。

2023-07-31 15:47:01 756

原创 带你入门 Redis

它的数据结构十分丰富,基础数据类型包括:string(字符串)、list(列表,双向链表)、hash(散列,键值对集合)、set(集合,不重复)和 sorted set(有序集合),这使得它不仅仅是一个简单的键值存储,还可以用于存储和处理复杂的数据。虽然 Redis 在单个命令的执行上是原子性的,但是多个命令的组合并不是原子性的,通过事务可以实现一组命令的原子性执行。:作为缓存数据库,Redis 可以将经常访问的数据存储在内存中,避免频繁读写数据库,提高应用的响应速度。

2023-07-28 00:48:32 51

原创 看完这篇,SpringBoot再也不用写try/catch了

本文介绍了使用 SpringBoot 时,如何通过配置全局异常处理器统一处理项目中的一些通用的异常,避免程序员不断的写try/catch导致的代码冗余,有利于代码的维护。如果我们不统一的处理异常,开发人员经常会在代码中东一块的西一块的写上 try catch代码块,长久以往容易堆积成屎山。value 的值为需要处理的异常类的 class 文件。在业务中,遇到业务异常的地方,我们直接 throw 抛出对应的业务异常即可。本篇主要讲述在SpringBoot 中,如何用全局异常处理优雅的处理异常。

2023-07-28 00:41:11 283

原创 一文读懂ThreadLocal的原理及使用场景

通过当前线程对象 thread 获取该 thread 所维护的 ThreadLocalMap,如果 ThreadLocalMap 不为 null,则以 ThreadLocal 实例为 key,值为 value 的键值对存入 ThreadLocalMap,若 ThreadLocalMap 为 null 的话,就新建 ThreadLocalMap,然后再以 ThreadLocal 为键,值为 value 的键值对存入即可。在 ThreadLocalMap 中的散列值分散的十分均匀,很少会出现冲突。

2023-07-20 23:42:38 160

原创 刚入职,项目背负技术债怎么办

一旦技术框架基础已经奠定,会逐渐缩减在技术侧的投入,这其实也是大部分产品的软件系统技术债逐渐增多的一个非常重要的原因,产品的快速演进,进度的压力无疑是技术债产生的最大元凶。但要注意的事,技术债粒度可大可小,优先级也各有不同,并不是所有的技术债都需要立即修复,技术债的产生在某些情况下就是为了快速的追求产品的市场价值而存在的,需要不断的权衡。新入职一个公司后,加入的项目往往或多或少的都会存在技术债,有些是以前的工程师留下的债务,有些是当下开发的需求新产生的,接下来本篇就让我们详细的探索一下技术债这个话题。

2023-07-17 09:24:15 54

原创 2023年大语言模型神器 - LangChain

简单来说,可以理解 LangChain 相当于开源版的GPT插件,它提供了丰富的大语言模型工具,支持在开源模型的基础上快速增强模型的能力。LangChain 可以轻松管理与语言模型的交互,将多个组件链接在一起,并集成额外的资源,例如 API 和数据库。理解了上面的这些核心概念之后,你就可以利用 LangChain 的强大功能来构建适应性强、高效且能够处理复杂用例的高级语言模型应用程序。整个过程基本上没怎么写代码,只要了解LangChain的组件的功能,基本上就可以搭建出一款简单的聊天机器人。

2023-07-12 10:39:58 235

原创 GPT-4 全面开放使用!

与此同时,OpenAI 表示,希望在 2024 年 1 月 4 日之后继续使用他们的微调模型的开发者,需要在新的基于 GPT-3 模型(ada-002、babbag-002、curie-002、davinci-002)或更新后的模型(gpt-3.5-turbo、gpt-4)之上进行微调替换。即从 2024 年 1 月 4 日开始,某些旧的 OpenAI 模型,特别是 GPT-3 及其衍生模型都将不再可用,并将被新的 "GPT-3 基础"模型所取代,新的模型计算效率会更高。

2023-07-12 09:58:54 175

原创 技术人员读什么书?年度Top10榜单推荐

本书原名The Practical Programmer,亦即注重实效的程序员,全书围绕注重实效展开讨论,包括注重实效的哲学(负责、变化、权衡、管理知识、交流)、途径(避免重复、随时记录、估计)、工具(文本、shell、游戏、源码控制)、偏执或者说讲究(规范合约、断言、异常使用)等等等等。悉达多一生追求的是生命的圆融统一,看似宏大,确是每个人都无法回避的问题。这本书内容丰富,是编译原理的权威经典。读书是一件充实生活、丰富精神的事情,世界是复杂的,我们可以从书中获得包罗万象的知识,精神体验从未有过的人生。

2023-07-11 21:45:28 116

原创 Spring Cloud Gateway与Apache APISIX的对比

Spring Cloud Gateway 源于 Spring 框架和 Spring Boot 平台,本质上专注于已经熟悉 Spring 的开发人员。对于常见的功能,Spring的方式更加细化,每个操作都有一个专门的过滤器。相比之下,APISIX 提供了一个带有许多配置选项的插件,但用于速率限制。Spring Cloud Gateway 使用相同的端口,但使用特定的路径 ,这是 GitOps 从业者的方法:您将配置存储在 Git 存储库中,通过您最喜欢的工具(例如,Argo CD 或 Tekton)观看它,

2023-07-10 18:18:39 243

原创 Effective Java 集合框架:最佳实践和技巧

Java 集合框架提供了广泛的集合类型,但在某些情况下,Guava 或 Apache commons-collections 等替代库可以为特定用例提供附加功能和更好的性能。Java集合框架提供了各种类和接口,例如列表、集合、队列和映射,用于管理和存储相关对象的集合。为了有效地使用 Java 集合框架,请考虑利用增强的 for 循环、泛型、避免原始类型以及选择正确的集合等因素。这将提高代码的有效性和效率。Java集合框架提供了广泛的数据结构,但是第三方库和框架可以提供更高级的功能和独特的数据结构。

2023-07-10 17:28:09 184

原创 一文讲清DDD的好处与案例实践

领域建模时,我们会根据场景分析过程中产生的领域对象,比如命令、事件等之间关系,找出产生命令的实体,分析实体之间的依赖关系组成聚合,为聚合划定限界上下文,建立领域模型以及模型之间的依赖。开发小B:总感觉不对,因为新增一个自动化分单需求,履约单就依赖了分单规则,履约单应该是一个独立的域,分单不是履约的能力,履约单实际只需要知道处理人是谁,至于怎么分配的他不太关心。开发小B:获取小二的逻辑越来越复杂了,实际技能组才是找小二的核心,分单规则核心是通过履约单特征得到一个规则结果(技能组ID,分单策略,特征规则)。

2023-07-08 19:09:38 378

原创 关于Java类加载问题我竟让面试官哑口无言

避免类的重复加载,JVM 中区分不同类,不仅仅是根据类名,相同的 class 文件被不同的 ClassLoader 加载就属于两个不同的类(比如,Java中的Object类,无论哪一个类加载器要加载这个类,最终都是委派给处于模型最顶端的启动类加载器进行加载,如果不采用双亲委派模型,由各个类加载器自己去加载的话,系统中会存在多种不同的 Object 类)如果一个类型是由用户类加载器加载的,那么 JVM 会将这个类加载器的一个引用作为类型信息的一部分保存在方法区中。符号引用就是一组符号来描述所引用的目标。

2023-07-07 00:24:41 45

原创 还分不清bin log 、redo log 跟 undo log?

MySQL 日志包含了错误日志、查询日志、慢查询日志、事务日志、二进制日志等,如果存储引擎使用的是 InnoDB ,二进制日志(binlog)和事务日志(包括redo log和undo log) 是肯定绕不过去的,本篇接下来详细为大家介绍这三种日志。undo log主要记录了数据的逻辑变化,比如一条UPDATE语句,对应一条相反UPDATE的undo log,一条INSERT语句,对应一条DELETE的undo log,这样在发生错误时,就能回滚到事务之前的数据状态。redo log是InnoDB的日志。

2023-07-05 09:52:31 32

原创 深入理解不可变对象

如果 String 是可变的,试想一下,当字符串常量池中的某个字符串对象被很多地方引用时,此时修改了这个对象,则所有引用的地方都会改变,这可能会导致预期之外的情况。String 类的数据存储在 char[] 数组中,而这个数组也被 final 关键字修饰了,这就表示 String 对象是没法被修改的,只要初始化一次,值就确定了。String 对象是不可修改的,如果线程尝试修改 String 对象,会创建新的 String,所以不存在并发修改同一个对象的问题。但是实际上,我们得到的已经是一个新的字符串。

2023-07-04 23:35:41 44

原创 现代企业架构-技术架构

我们以上面提到的中台如何提供一致的服务等级这个问题为例,经过分析,背后的技术问题定义是如何处理接入前台之间的跨功能需求 (安全、存储、性能、可靠性等)隔离问题,由此可以快速确定对应的基础架构是多租户(Multi-tenancy)架构。模式是通过对问题和上下文的分析,快速映射到的业界或企业内的最佳实践。多租户架构在业界有标准化的成熟模型可以参考,因此我们可以将其作为参考架构,再结合上下文中的需求背景做架构细化,最后引入技术策略模型进行技术选型、实施规划等方面的技术决策,产出最终技术架构方案.

2023-07-03 23:55:28 1287

原创 一文看懂什么是fork/join

Fork/Join 是JUC并发包下的一个并行处理框架,实现了ExecutorService接口的多线程处理器,它专为那些可以通过递归分解成更细小的任务而设计,最大化的利用多核处理器来提高应用程序的性能。被窃取的任务线程都从双端队列的头部拿任务执行,而窃取其他任务的线程从双端队列的尾部执行任务。如果是窃取其他队列的任务时,窃取的任务位于所属任务队列的队尾(LIFO)。工作窃取算法指的是在多线程执行不同任务队列的过程中,某个线程执行完自己队列的任务后从其他线程的任务队列里窃取任务来执行。

2023-07-01 22:56:12 147

原创 你真的了解线程池吗?

真实高并发场景下,项目一般不会直接使用 Thread 类创建线程,而是使用线程池来创建并管理线程。频繁的创建/销毁线程需要消耗系统资源,线程需要重新被cpu从就绪到运行状态调度,需要发生cpu的上下文切换,效率非常低。本文详解了线程池的概念以及执行流程,在生产过程中如何合理的使用还需要线上的验证,希望本文对大家有帮助!合理地设置核心线程数和最大线程数可以优化线程池的性能和响应时间。当线程数大于等于核心线程数,且任务队列未满时,将任务放入任务队列。当线程数小于核心线程数时,创建线程。

2023-07-01 19:38:02 36

原创 看完这篇再也不用担心不会写正则表达式了(建议收藏)

InternetURL:[a-zA-z]+://[^\s]* 或 ^http://([\w-]+.)+[\w-]+(/[\w-./?手机号码:^(13[0-9]|14[5|7]|15[0|1|2|3|5|6|7|8|9]|18[0|1|2|3|5|6|7|8|9])\d{8}$域名:[a-zA-Z0-9][-a-zA-Z0-9]{0,62}(/.[a-zA-Z0-9][-a-zA-Z0-9]{0,62})+/.?邮政编码:[1-9]\d{5}(?日期格式:^\d{4}-\d{1,2}-\d{1,2}

2023-06-30 23:58:16 224

原创 微服务架构必读篇 - 网关

是springcloud的全新API网关项目,旨在替换zuul的网关服务,基于spring framework5.0+springboot 2.0+webFlux开发,其也实现了异步非阻塞的特性,有较高的性能,其有丰富的过滤器类型,可以根据自身需求来自定义过滤器。: 路由是微服务网关的核心能力。: 网关结合Swagger,可以将后端的微服务暴露给网关,网关作为统一的入口给接口的使用方提供查看后端服务的API规范,不需要知道每一个后端微服务的Swagger地址,这样网关起到了对后端API聚合的效果。

2023-06-29 22:49:27 228

原创 掌握这40个 SpringBoot 常用注解,开发效率翻几倍!

Spring Web MVC 与 Spring Bean 注解 Spring Web MVC 注解@RequestMapping@RequestMapping注解的主要用途是将Web请求与请求处理类中的方法进行映射。Spring MVC和Spring WebFlux都通过RquestMappingHandlerMapping和RequestMappingHndlerAdapter两个类来提供对@RequestMapping注解的支持。@RequestBody@RequestBody在处理请求方

2023-06-28 22:13:16 112

原创 谈一谈进程、线程与协程

其区别,如果一定要说有的话,是协程是语言层级的构造,可看作一种形式的控制流,而线程是系统层级的构造,可看作恰巧没有并行运行的线程。进程是程序的一次执行过程,是系统运行程序的基本单位,因此进程是动态的。线程可以看做轻量级的进程,同一个进程内的线程共享进程的地址空间,每个线程都有自己独立的运行栈和程序计数器,线程之间切换的开销小。协程(Coroutine,又称微线程),是一种基于线程之上,但又比线程更加轻量级的存在,这种由程序员自己写程序来管理的轻量级线程叫做『用户空间线程』,具有对内核来说不可见的特性。

2023-06-27 23:16:51 87

原创 详解Java反射机制

是 Java 程序开发语言的特征之一,它允许运行中的 Java 程序对自身进行检查,并能直接操作程序的内部属性和方法。其中,setAccessible 函数用于动态获取访问权限,Constructor、Field、Method 都提供了此方法,让我们得以访问类中的私有成员。动态代理:在面向切面编程中,需要拦截特定的方法,就会选择动态代理的方式,而动态代理的底层技术就是反射。它是一个封装反射类的构造方法的类。正因为反射不受类的访问权限限制,其安全性低,很大部分的java安全问题都是反射导致的。

2023-06-23 23:17:53 332

原创 聊聊布隆过滤器

如果我们需要判断某个字符串是否在布隆过滤器中时,只需要对给定字符串再次进行相同的哈希计算,得到值之后判断位数组中的每个元素是否都为 1,如果值都为 1,那么说明这个值在布隆过滤器中,如果存在一个值不为 1,说明该元素不在布隆过滤器中。布隆过滤器作为一个精巧且实用的数据结构,对于后端程序员来讲,学习和理解布隆过滤器有很大的必要性。得到值之后判断位数组中的每个元素是否都为 1,如果值都为 1,那么说明这个值在布隆过滤器中,如果存在一个值不为 1,说明该元素不在布隆过滤器中。

2023-06-21 00:06:53 207

空空如也

空空如也

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

TA关注的人

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