自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Http三种常见状态码的区别(401、403、500)

这三种常见的状态码用于返回error的时候,401更偏向于当前用户的信息是否都齐全,403更偏向根据当前用户齐全的信息去判断是否有权限访问,500是系统db查询出错、redis出错的system的错误。可以用人的身份证做类比,身份证上的信息不齐全就是401错误(缺少名字,地址啥的、国籍),403就像你是国外的国际地址是不允许进入中国的。500就像你是偷渡的没有身份信息。

2024-01-15 17:59:23 839

原创 JWT令牌(Token)设计

要在JWT中设置过期时间,可以在Payload(载荷)中添加一个名为"exp"的标准声明(Claim),表示JWT的过期时间。"exp"声明的值是一个数值类型,表示某个时间点的UNIX时间戳,单位为秒或毫秒。在生成JWT时,需要计算当前时间和过期时间,确保生成的JWT在当前时间之后,且在过期时间之前使用。在验证JWT时,需要检查"exp"声明,确保当前时间未超过JWT的过期时间,以确保JWT未失效。设置过期时间可以增强JWT的安全性,避免长时间使用老旧的令牌造成潜在的安全风险,例如未经授权的访问。

2024-01-08 16:09:41 527

原创 函数式编程的优势和使用场景

综上所述,如果你面临处理集合、异步编程、并发和并行、模块化和可测试性等需求时,函数式编程是一个值得考虑的选择。:通过将函数作为参数传递,可以将通用的逻辑代码抽象出来,避免在多个地方重复编写相似的代码。:通过将函数作为参数传递,可以将复杂的逻辑封装成一个函数,使代码更加模块化和可复用。总而言之,将函数作为参数进行传递可以提高代码的模块化、可读性和可维护性,同时也增加了代码的灵活性和重用性。通过使用函数式编程的特性,如高阶函数、映射、过滤和归约等,可以更加方便地对集合进行处理和转换。

2024-01-04 22:21:45 398

原创 grpc微服务模块不同模块之间的校验权重

User 模块作为处理核心逻辑的模块,可以对接收到的参数进行更深入的业务校验和验证。它可以验证参数的合法性、关联性以及更复杂的业务逻辑。API 模块负责接收请求,并起到验证和转换请求参数的作用。它可以校验请求的参数格式、类型、必填性等,确保请求的参数符合预期和规范。在你的 gRPC 架构中,根据最佳实践,建议在 API 模块和 User 模块之间合理分配参数校验的责任。

2023-12-27 22:15:51 381

原创 数据库中锁冲突

当一个事务或线程持有一个锁时,其他事务或线程如果希望对同一个资源进行修改或读取操作,则需要等待锁的释放。如果多个事务或线程同时持有了不同的锁,并且这些锁之间存在依赖关系,那么就可能导致锁冲突。:当并发冲突增多时,系统可能不得不不断地回滚事务、重新执行事务或等待锁的释放,这会导致额外的开销和延迟。:一个事务等待另一个事务持有的锁,会导致等待的事务被阻塞,无法继续执行,从而降低了系统的并发度和性能。通过合理的锁管理和并发控制机制,可以减少锁冲突的概率,提高系统的并发度和性能。

2023-12-18 14:40:47 91

原创 如何配置git与github关联?

什么是git?怎么安装git?git有什么用?为什么要安装?新人疑问三连!一个一个说吧。GitHub大家都知道,是世界上最大的软件远程仓库,是一个面向开源和私有软件项目的托管平台,使用Git做分布式版本控制。而Git是实现分布式版本控制的一个工具,简单的来说就是实现文件历史管理的工具。举一个例子,说明Git的作用。print(“你好呀世界”)3)老板看了以后,又觉得不行,让你留下来加班,把代码改回到上一次的状态。

2023-12-14 17:29:27 63

原创 MTP意义

在敏捷开发中,最小可测试产品(Minimum Testable Product)指的是具备基本功能并经过测试的最小产品版本。通常情况下,最小可测试产品并不是最终上线的版本。完成最小可测试产品测试后,团队可以获得有关用户反馈和产品功能的更多信息。一般来说,只有当产品通过了最小可测试产品阶段,并经过团队认可后,才会考虑将其上线。因此,最小可测试产品仅是开发过程中的一个里程碑,说明产品已经具备基本的功能和稳定性。:最小可测试产品,通常用于敏捷开发中,指开发团队可以展示给用户并进行测试的最小功能集合。

2023-12-14 10:24:00 40

原创 Git临时储存,切换分支

如果你需要切换分支,但又不想提交当前的修改,你可以使用 Git 的 "存储"(stash)功能来保存当前的修改,然后在切换到其他分支后再恢复这些修改。这样你就可以在不提交修改的前提下切换到其他分支,并在切换回来后恢复之前的修改。在目标分支上进行工作。

2023-12-11 14:09:51 150

原创 写代码的标准流程-优雅永不过时

在编写代码时,注重代码的可读性、可维护性和可测试性,采用良好的命名规范,并遵循相关的编码风格指南。根据需求,确定整体的代码结构、模块和组件的划分以及它们之间的关系。仔细阅读需求文档、与相关人员进行讨论,确保对需求的目标、功能和约束有清晰的理解。:在开始实际编写代码之前,你可以先根据需求和架构设计,编写伪代码或者简要列出代码的设计思路。通过分析性能瓶颈和代码质量问题,对代码进行优化和重构,提高代码的性能、可读性和可维护性。:在代码编写完成后,编写相应的文档,包括代码注释、使用方法、API文档等。

2023-12-01 09:33:01 162

原创 json格式数据如何比较两个key值中的差异

然后,我们通过遍历两个数据的键来找出差异,将存在于一个数据中而不存在于另一个数据中的键放入。类型,然后比较两个数据的键(key)来找出差异。在 Golang 中,我们可以使用。将两个 JSON 数据分别解析为。包将 JSON 格式的数据解析。在这个示例代码中,我们首先使用。

2023-11-24 11:05:05 230

原创 项目开发的五种环境以及它们的联系

开发环境

2023-10-13 14:47:57 1279

原创 golang项目中指针类型有什么用,什么情况下需要使用指针类型

需要注意的是,对于一些基本类型和小型数据对象,直接使用值类型即可,而不需要使用指针类型。只有在涉及到大型数据对象的传递、需要修改参数值、动态内存分配和与nil值的比较等情况下,才需要使用指针类型。修改函数参数:使用指针类型作为函数参数,可以在函数内部对参数进行修改,以便将更改后的值传递到函数的调用者。通过将变量的指针设置为nil,可以在需要时判断变量是否已经被初始化,避免访问未初始化的变量。传递大型数据对象:当函数需要传递一个大型的数据对象时,使用指针类型可以避免对该数据对象进行复制,提高程序的性能效率。

2023-09-13 16:25:59 292

原创 golang用于计算金钱计算类型,防止计算误差

使用整数类型表示最小货币单位:一种常见的方法是使用以最小货币单位(如分)为基准的整数类型来表示金钱值。当然这仅仅是一个示例,实际上关于金钱计算,需求比较复杂,包括货币精度、汇率等一些复杂操作,需要根据实际情况进行仔细设计和处理。在Go语言中,为了确保准确且可靠的金钱计算,通常不直接使用浮点数类型。这些类型可以用来表示和计算精确的货币值,通过使用精确的小数类型,可以避免浮点数计算中的舍入误差。使用专用的货币库:还可以使用一些第三方库来处理金钱计算,这些库提供了特定于金融计算的数据类型和功能,如。

2023-09-13 16:10:52 957

原创 Graphql框架整合jin框架(go语言)

最后,我们实现了一个graphqlHandler结构体,来处理Gin中的GraphQL请求,并将其转换为JSON格式返回到客户端。在Gin中,我们可以使用第三方的GraphQL库来实现对GraphQL的支持,下面是一个完整的示例,展示了如何使用Gin框架和Graphql进行整合。根据上面代码的设置,在本地启动这个应用程序后,我们可以在浏览器中访问http://localhost:8080并打开GraphiQL界面,在界面中输入GraphQL查询语句,并执行查询。系统会自动返回计算得出的结果。

2023-09-07 17:34:17 374

原创 go企业级开发,为什么每编写一个功能函数,需要写一个对应test函数(UT)?

如果你按照测试驱动开发(TDD)的方法,先写测试再写代码,也可以更好地指导你实现功能,并确保代码的质量。这有助于防止代码回退,确保你的代码库保持可靠和可维护的状态。提高代码的可读性和可维护性:编写测试函数可以促使你更加关注代码的设计和实现。编写可测试的代码往往需要更好的模块化、封装和解耦,这能提高代码的可读性和可维护性。测试函数可以作为代码的使用示例和文档,让其他人更容易理解代码的预期行为和用法。所以,虽然编写测试函数不是强制性的,但是它是一个推荐的做法,可以帮助你创建健壮、可靠和可维护的代码库。

2023-08-28 13:53:36 40

原创 并发和异步的区别

异步是指一个任务的完成不会阻塞其他任务的执行。在Java程序中,可以使用异步编程的方式来实现异步操作,例如使用CompletableFuture或Reactive编程模型。异步操作可以利用非阻塞的方式处理任务,当任务在执行时,可以继续执行其他任务,当任务完成时,可以通过回调或事件通知来处理任务的结果。多个线程可以同时执行,每个线程都有自己的执行上下文和指令流,并且可以在共享的内存空间中进行通信和同步操作。例如,可以通过异步方式执行一些耗时的任务,使得主线程可以继续执行其他任务,从而提高程序的并发性能。

2023-06-27 15:44:49 1205

原创 沙箱数据和生产环境数据库的区别

生产数据库和沙箱数据库虽然存在一定的联系,但它们是具有不同目的和使用场景的两个不同的数据库环境。用途:生产数据库是用于实际的业务操作和数据存储的,它承载着正式的业务流程和实时的数据变动。数据隔离:沙箱数据库通常是一个完全独立的数据库实例,它有自己的数据集合和架构。隔离环境:沙箱数据库使得开发人员能够在独立的环境中进行实验和测试,不会影响生产数据库中的真实数据和业务流程。沙箱数据库的主要作用是提供一个安全的环境,供开发人员在其中进行新功能开发、代码测试和错误排查,而不会对生产数据库产生影响。

2023-06-27 10:41:35 981

原创 HTTPS、TRTC 、数据迁移、CSV概念

需要注意的是,CSV文件不是标准化的格式,因此在处理CSV文件时,应注意字段值中是否包含特殊字符(如逗号、引号等),需要进行适当的转义或处理,以确保数据的准确性和一致性。丰富的功能和定制化能力:TRTC 提供了丰富的功能和扩展接口,开发者可以根据自身需求定制音视频通信功能,如美颜、滤镜、屏幕分享等。综上所述,TRTC 提供了实时音视频通信的解决方案,支持跨平台开发和多种应用场景,具有高性能、可扩展性和稳定性。数据迁移过程涉及多个步骤,如数据提取、转换和加载(ETL),为目标环境做好准备,数据验证和测试等。

2023-06-26 17:40:33 144

原创 CDN作用是什么?

综上所述,CDN 的作用是通过在全球各地部署服务器节点,就近获取和分发静态内容,从而加速内容传输、提高可用性、减少带宽消耗,并提供额外的安全性和负载均衡。加速内容传输:CDN 部署了分布在全球各地的服务器节点,使得用户可以从最近的节点获取所需的内容,从而减少了网络延迟。减少带宽消耗:由于 CDN 可以提供就近的内容,用户从最近的节点获取所需内容的机会更大。CDN(内容分发网络)的作用是将网站或应用的静态内容(如图片、脚本、样式表等)复制到位于世界各地的服务器节点上,以便就近提供给用户。

2023-06-26 17:09:34 775

原创 java多线程并发执行中保证关键代码线程安全

使用多线程和锁的矛盾在于,多线程可以提高程序的处理效率,而锁的加入会对程序产生一定的性能影响。锁是一种同步工具,用于保护临界区,避免多个线程同时访问临界区产生的问题。需要注意的是,尽管多线程可以大大提升程序的处理效率,但在多线程编程时还需要注意线程安全问题,如避免竞态条件和死锁问题等。ThreadPoolExecutor是Java多线程中提供的线程池,它可以很方便地创建一个固定大小的线程池,将多个Runnable任务或Callable任务分配给线程池中的多个线程来并发执行,从而提高程序的处理效率。

2023-06-26 16:01:49 305 1

原创 java根据不同场景选择集合

需要注意的是,以上只是一些常见的场景示例,实际应用中可能会使用多个不同的集合类来满足复杂的需求。在选择集合类时,需要综合考虑数据的特性、操作的效率和内存的消耗等方面的因素。当选择使用哪种集合类时,需要根据具体的场景和需求来决定。

2023-06-25 10:19:27 41

原创 Array有哪些方法,在java中!

在Java中,数组是一个固定长度的、存储相同类型元素的对象。它是Java语言的一种基本数据结构,没有提供内置方法来操作数组。然而,Java提供了一些通过Array类静态方法对数组进行常见操作的工具类。除了上述方法,还可以使用循环遍历数组,以及根据索引访问和修改数组的元素。类中定义的静态方法。在使用这些方法之前,确保已经导入了。需要注意的是,以上方法都是在。

2023-06-20 14:08:56 217 1

原创 JSON格式和java对象的转化

在Java中,可以使用Jackson库来实现JSON格式和对象之间的转换。下面是一个示例,展示如何在Java中进行JSON格式和对象之间的转换。这就是在Java程序中进行JSON格式和对象之间互相转换的基本步骤。使用Jackson库,可以轻松实现对象与JSON之间的转换。需要注意的是,为了使JSON字符串正确地转换为Java对象,需要确保。类,可以将Java对象转换为JSON字符串。类,可以将JSON字符串转换为Java对象。类的结构与JSON字符串的属性名称和类型一致。对象转换为JSON字符串。

2023-06-20 14:03:13 1222 1

原创 在 Java 中,基本类型和包装类型都有各自的使用场景

同时,自动装箱(Autoboxing)和拆箱(Unboxing)的特性使得基本类型和包装类型之间的转换更加方便。Java 5 及以后的版本支持自动装箱和拆箱,使得基本类型和包装类型可以在很大程度上互相替代使用。总结来说,基本类型适用于简单的数值计算和数组操作,而包装类型适用于更复杂的数据结构和需要使用对象特性的场景,同时也提供了 null 值的支持。在具体使用时,应根据需求和上下文来选择合适的类型。在 Java 中,基本类型和包装类型都有各自的使用场景。

2023-06-14 13:52:21 519

原创 集合对null进行排序的解决方法

这样,排序结果中所有的 null 值都会排在最后,而其他非空数据则会按照指定的顺序进行排序。一、方案一有十条数据需要根据一个字段排序,但是有字段数据为null,但是哟需要这十条数据不能少,该怎么实现,这样,如果字段数据为 null,它会被排在最前面,但是这 10 条数据还是都会出现在排序结果中,不会被丢弃。方法,它会将 null 值排在前面,然后使用指定的比较器对非空值进行排序。方法,它会将 null 值排在序列的最后面。如果需要将 null 值排在最后,可以将。,即按照字符串的自然顺序排序。

2023-06-09 10:24:26 1373

原创 手写sql和mybatisplus的选择!!!

相对简单易学的操作与灵活的扩展性:相对于一些 ORM 框架,使用 MyBatis Plus 编写 SQL 相对简单易学,它并不是完全的 ORM 框架,MyBatis Plus 的使用不会与 MyBatis 原有的使用方式发生大的变化,结构清晰明了,代码风格优雅。复杂 SQL 不适合使用 MyBatis Plus:对于一些复杂 SQL 或者数据量很大的查询,手写 SQL 还是会有更好的性能,用 MyBatis Plus 要写的话也会比较复杂,甚至难以实现。已经熟悉SQL语言。一、什么情况适合写sql呢。

2023-06-07 17:43:28 740

原创 当前线程,访问多个数据源的数据库和信息实现

例如,在 Spring 框架中,可以通过 ThreadLocal 来实现当前线程的多数据源,具体实现可以参考 Spring 中的 AbstractRoutingDataSource 类。具体原理是:当设置了当前线程的多数据源后,应用程序在执行 SQL 语句时会优先从当前线程所绑定的数据源中获取数据库连接。在应用程序中,如果需要访问多个数据源,那么可以通过设置当前线程的多数据源来实现。在使用多数据源时,需要在代码中动态设置当前线程的数据源,以保证每次操作都使用正确的数据源。以下是设置当前线程数据源的方式。

2023-06-07 09:39:26 189

原创 测试环境和生产环境的区别

并发程度不同 生产环境中的并发请求数可能比测试环境要高,这意味着在生产环境中需要处理更多的请求,响应更多的客户端。数据环境不同 测试环境中可能存在一些数据异常或者特殊情况,但这些情况在生产环境中很少出现,或者根本不会出现。数据规模不同 测试环境和生产环境的数据规模可能存在差异,例如生产环境中的数据规模可能比测试环境更大。环境配置不同 生产环境和测试环境的硬件、软件、操作系统等环境配置可能存在差异,这些差异可能会影响程序运行方式和效果,导致在生产环境中出现问题。

2023-05-31 10:08:49 1743

原创 mybatis的数据库表和实体的自动映射

在JFinal框架中,使用ActiveRecord模式进行数据库交互时,需要让实体类和对应的数据库表进行映射,以便框架能够自动识别实体类属性与表字段之间的对应关系。例如,定义一个User实体类,并使用@TableName注解指定数据库表名为“user”。框架会自动将实体类的name属性与数据库表的name字段进行对应,并执行相应的SQL语句。因此,@TableName注解可以省去手动配置映射关系的步骤,提高代码的开发效率。@TableName注解可以自动将实体类和数据库表进行映射。

2023-05-30 19:22:25 691

原创 数据库信息用excel表格导出

设置响应头的response Content-Disposition值,告诉浏览器将文件下载到本地的保存名称为“日期.xls”。这段代码的功能分为两部分,第一部分是将列表数据导出为Excel文件,第二部分是将导出的文件响应给浏览器供用户下载。设置Excel文件的表头,并自定义表头的列名别名,即将Java实体类的属性名映射为Excel表头列名。总的来说,这段代码的功能就是将数据库中的用户列表信息导出成Excel文件并响应下载给用户。设置是否只输出自定义的表头别名,不输出Java实体类的属性名。

2023-05-30 16:41:27 196

原创 引用类型字段是否需要初始化问题

在这个例子中,at是一个BigDecimal类型的实例变量,如果没有进行初始化赋值,其默认值是null,而不是0。因此,为了避免后续使用时可能出现空指针异常,需要进行初始化赋值,而BigDecimal.ZERO表示值为0的BigDecimal类型实例,可以作为默认值进行赋值。另外,对于从数据库中查询到的BigDecimal类型的字段,如果该字段没有值(即为null),在Java中使用该字段时也会出现空指针异常。因此,为了避免出现这种异常,通常也需要对该字段进行判空处理,在没有值时进行默认值的赋值。

2023-05-30 10:08:04 240 1

原创 java中计算缺失精度的问题

Java中的浮点数类型为float和double,它们采用的是IEEE 754规范的浮点数编码,这种编码方式虽然能够表示大范围的实数,但存在一定的精度损失。BigDecimal类可以表示任意精度的十进制数,并提供了加减乘除等运算方法,能够避免浮点数精度问题和整数溢出问题。这是因为0.1和0.2都不能被精确表示为浮点数,它们的值会被近似表示,而相加结果的误差会积累,导致最终结果不准确。总之,在进行计算时,需要根据实际情况选择合适的数据类型,并使用正确的算法,以避免精度问题。

2023-05-29 17:57:28 3533 1

原创 根据简便的百分比计算

/ 使用 BigDecimal 类型进行数值计算,使用 setScale 方法将计算结果保留两位小数,使用 RoundingMode.HALF_UP 进行四舍五入。System.out.println("百分比为:" + percent + "%");// percent 变量即为计算得出的百分比,可以直接进行后续操作,例如输出。// 创建一个 BigDecimal 类型变量 percent。

2023-05-26 15:40:29 72 1

原创 如何保证百分比的正确性(加起来==100%)

导致这个问题的原因是 Decimalformat 格式化后的字符串不能直接转换为整数,需要先将字符串转换为 double 类型后再进行类型转换。另外,如果对于需要计算百分比的情况,由于百分比通常需要保留小数点后两位,并且需要将计算结果转化为百分比的形式,因此在计算百分比时,也可以使用。确定最后一个数的值:由于计算过程中可能存在小数点,因此最后一个数的值需要通过总和减去前面所有数的值得到,比如最后一个数的值为。需要注意的是,在计算过程中,可能存在小数点精度问题,可以通过。计算百分比:将每个数的比例。

2023-05-26 14:52:14 1458 1

原创 String类的常用方法

Java中的String类提供了很多常见字符串操作的方法,包括:除此之外,String类还提供了很多其他有用的方法,比如:

2023-05-26 13:58:10 140 1

原创 使用final修饰符和static final修饰符的区别

需要注意的是,数组的常量化仅限于数组本身是不可变的。如果数组内部引用可变对象,那么其引用的对象还是可以被修改的。定义为常量,但是其元素引用的字符串对象还是可以修改的。创建之后,其中的元素就不能再修改了。二、static final修饰。在其他类中,可以通过。来访问这个常量数组。

2023-05-26 13:47:24 55 1

原创 实现对脏字的过滤大致可以有两种方式:一种是通过自己写脏字库进行过滤,另一种是通过调用第三方的脏字过滤API进行过滤。

使用Java的HttpClient发起HTTP请求,将需要过滤的内容传给脏字过滤API,得到过滤后的结果。可以通过在配置文件中配置脏字,也可以将脏字库保存在数据库中进行读取。编写过滤方法时,需要读取脏字库,将内容中的脏字替换成特定的字符,例如 “*” 或者 “#”。以上代码实现了将脏字保存在配置文件中,并通过读取配置文件的方式进行脏字过滤。可以使用第三方的脏字过滤API,例如阿里云提供的脏字过滤API。可以类比其他内容的过滤(方式是一样的)

2023-05-24 16:34:08 330

原创 0726学习笔记

真不错

2022-07-26 22:35:52 75

原创 0725笔记

spring笔记

2022-07-25 19:40:55 110 1

空空如也

空空如也

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

TA关注的人

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