- 博客(227)
- 收藏
- 关注
原创 Java程序员必看!10个让你深夜加班的开发深坑,第5个几乎人人都踩过
Java作为一门“成熟稳重”的语言,总能让开发者产生“一切尽在掌握”的错觉。然而,真实的开发战场上,无数程序员在深夜对着屏幕咬牙切齿:“这代码为什么又崩了?避开这些坑,你的Java代码将少掉50%的Bug!但记住——真正的“坑王”永远是你以为自己“这次肯定没问题”的代码。:包装类型自动拆箱时未判空,导致隐蔽的NPE。:泛型仅在编译期有效,谨慎操作原生类型集合!的月份从0开始(0=一月,1=二月)。的陷阱,附赠避坑指南,建议反复背诵!,多线程下慎用普通集合!替代,或重写线程池的。,拥抱Java 8的。
2025-02-06 14:58:22
260
原创 python 如何生成requirements.txt
在 Python 项目中,文件通常用于列出项目依赖的库及其版本号。这样可以方便地在其他环境中安装相同的依赖。以下是生成。
2025-02-06 14:57:32
564
原创 sprURL地址末尾加不加”/“有什么区别
用于唯一标识互联网资源,如网页、图片、API等。非常敏感,因此最好遵循 API 文档的规范。可能会视为两个不同的页面,导致。对于 RESTful API,带。假设 HTML 页面包含以下。,影响 SEO 排名。一些 API 服务器对。
2025-02-06 14:56:55
437
原创 变量与基本数据类型
Python采用动态类型机制,变量在赋值时自动确定类型:ini代码解读复制代码# 无需类型声明 counter = 10 # 初始为整型 counter = "次" # 变为字符串 counter = 3.14 # 再变为浮点数核心特点变量是对象的引用标签类型信息存储在对象中变量可随时指向任意类型对象。
2025-02-05 14:20:51
289
原创 .NET 开发技巧 使用客户端缓存加速 API 响应
尽管数据库已经过优化,但在实际应用中,我们仍然会遇到一些性能瓶颈。例如,当数据库中有数百万条记录时,即使添加了索引,某些查询(如对用户名的部分匹配搜索)仍可能导致响应延迟。在API集成中,每次请求都需要花费较长的时间,这不仅影响用户体验,还会增加服务器的负载。为了应对这些性能挑战,我们可以采用以下策略:利用客户端缓存:通过在客户端缓存API响应,减少重复请求,提高响应速度。使用HTTP缓存头:利用HTTP的缓存控制头信息(如、)来管理缓存,实现高效的数据更新检测。引入辅助库:使用诸如Replicant和De
2025-02-05 14:20:18
545
原创 探索Fluent风格:Java中的优雅代码构建者
Fluent风格为Java编程带来了一种新的可能性,让我们的代码更加优雅、易读。通过合理的运用和设计,我们可以写出既高效又美观的代码。现在,就让我们一起踏上Fluent的探索之旅吧!
2025-02-05 14:19:24
291
原创 如何实现最终⼀致性分布式事务?
实现最终一致性分布式事务是分布式系统设计中的一个重要问题。最终一致性意味着在事务处理过程中,系统可能暂时处于不一致状态,但最终会达到一致状态。
2025-02-01 17:13:50
159
原创 真的假的?GoooQo的动态查询生成工具可以使代码量减少80%
GoooQo的代码生成工具gooogen通过自动化生成动态查询构建代码,有效替代了反射技术,既保证了高效运行性能,又大幅提升了开发效率。开发者只需定义查询对象,便可自动生成复杂的查询条件构建器,在保证性能的同时,大幅提升开发效率。
2025-01-22 21:15:38
238
原创 探索Web3世界:算法与挖矿详解
哈希算法和挖矿是区块链技术的核心组成部分。哈希算法确保了数据的唯一性和防篡改性,而挖矿则通过工作量证明机制维护了区块链的安全性和去中心化特性。随着区块链技术的不断发展,这些基础技术也将不断演进。
2025-01-22 21:14:37
1017
原创 随机的暴力美学蒙特卡洛方法 | python小知识
蒙特卡洛方法是一类基于随机采样的计算算法。它通过重复随机采样来获得数值结果,特别适用于难以用解析方法求解的问题。历史背景蒙特卡洛方法的名称源于摩纳哥的蒙特卡洛赌场,这个名字由物理学家尼古拉斯·梅特罗波利斯在1940年代提出。该方法的正式发展始于二战期间,在曼哈顿计划中用于模拟核武器的中子扩散。斯坦尼斯拉夫·乌拉姆约翰·冯·诺伊曼恩里科·费米随着计算机技术的发展,蒙特卡洛方法在20世纪后半叶得到了广泛应用。物理学和化学粒子物理学中的粒子碰撞模拟量子力学中的波函数计算分子动力学模拟。
2025-01-22 16:18:07
943
原创 Ubuntu安装Mysql
注意事项安全:允许远程连接会增加安全隐患。确保你已经设置了强大的密码策略,并且只允许可信的IP地址连接。防火墙:确保你的防火墙配置允许TCP端口3306的入站连接。权限:确保你有足够的权限来编辑my.cnf文件和重启MySQL服务。测试:在生产环境中做出这样的更改之前,先在测试环境中测试这些配置。将host设置成了’%'来匹配任意ip,不限制ip登录。MySQL安装完成,查询安装的版本。查看MySQL服务状态。
2025-01-20 14:42:27
240
原创 深度学习乐园智能零售柜商品识别
本项目在智能零售商品识别的背景下,采用了多项技术创新和优化,旨在提高商品检测与识别的效率和准确性。首先,使用了PaddleX作为训练框架,这是一个高效、灵活的深度学习平台,简化了模型训练和部署的复杂性。具体而言,该项目借助PP-YOLO和YOLOv3两种高性能目标检测模型,这两种模型以其较高的检测精度和实时性而著称。为了增强模型的表达能力和特征提取效果,项目中选用了ResNet50作为骨干网络,该网络因其深度和残差连接结构能够显著提高深度神经网络的训练效果并减少梯度消失问题。
2025-01-20 14:41:32
1211
原创 Linux 常用操作命令大全
当我们需要在不同的目录,用到相同的文件时,我们不需要在每一个需要的目录下都放一个必须相同的文件,我们只要在某个固定的目录,放上该文件,然后在其它的目录下用ln命令链接(link)它就可以,不必重复的占用磁盘空间。kill可将指定的信息送至程序。Linuxmore命令类似cat,不过会以一页一页的形式显示,更方便使用者逐页阅读,而最基本的指令就是按空白键(space)就往下一页显示,按b键就会往回(back)一页显示,而且还有搜寻字串的功能(与vi相似),使用中的说明文件,请按h。
2025-01-20 14:41:00
1301
原创 在 Go语言中一个字段可以包含多种类型的值的设计与接种解决方案
空接口(:最灵活,适用于值类型不确定的情况。类型断言:在使用空接口时,可以通过类型断言检查具体类型。结构体联合模式:适用于已知所有可能类型的场景,结构化程度高。自定义类型:通过封装和标识不同类型的值,可以使代码更具可读性和可扩展性。根据你的具体需求(灵活性、类型安全等),可以选择合适的方式来处理多类型字段。
2025-01-16 15:28:35
369
原创 CPU负载与CPU使用率之区别
假设我们有一个单核系统,我们的 CPU 平均负载始终低于 0.6。如果 CPU 平均负载大于 1,则表示有进程需要使用 CPU,但由于 CPU 不可用,目前无法使用。然而,我们会在多处理器系统上使用“ cpu ”行,因为它是所有内核上的指标的集合。或者,在多处理器系统中,我们必须将给定的“ id”值除以内核数,然后从 100 中减去该值。另一方面,CPU 使用率是 CPU 处理非空闲任务所花费的时间百分比。这不会提供准确的 CPU 使用百分比。我们避免使用第一个循环,因为我们检索的指标将是自启动以来的值。
2025-01-16 15:27:42
915
原创 第三方支付核心账务系统设计
为了更形象地介绍这些晦涩难懂的名词,下面我会使用一些打比方的方式介绍这些名词。产品:第三方支付就像精心打造的 “金融百宝箱”,里面装满了各种能满足客户金融需求的服务,客户打开它,第三方支付收获收益,大家都能各取所需。账户:第三方支付账户好比是客户在第三方支付或者银行的 “财富小账本”,每一笔资产、负债或权益的变化都像在账本上留下的脚印,清晰记录着客户与银行之间的财务往来故事。
2025-01-16 15:25:45
753
原创 gozero 实现产品设计-权限管理体系(跨系统权限管理)、数据权限、功能权限
角色管理与权限分配:通过将角色与功能权限关联,灵活控制不同角色访问不同的功能。数据权限控制:通过对数据的细粒度访问控制,确保不同用户仅能访问自己有权限的数据。跨系统权限管理:通过统一的权限管理系统,保障多个子系统之间的权限一致性。权限控制拦截器:通过在请求拦截时校验用户的权限,确保系统的安全性。这种设计方式使得权限管理既灵活又清晰,能够有效管理跨系统的权限、功能和数据权限,确保系统的安全性和可维护性。
2025-01-15 14:50:40
805
原创 不可思议!平均执行耗时仅1.5ms的接口在超时时间100ms下成功率竟然还不到5个9!!
本文深入分析了平均耗时仅有1.5ms的接口也会出现大量100ms+的前因后果,并在框架层面给出了弹性超时的解决方案。这也刷新了我们的认知,由于GC、CPU时间片等原因,一些看起来很简单的操作(如i++)也会出现偶发性长耗时。
2025-01-15 14:48:17
527
原创 权限系统设计与不同模型对比
ABAC(Attribute-Based Access Control)是一种更加细粒度的权限控制方法,权限控制不仅仅依赖于用户的角色,还依赖于其他属性(例如:用户的部门、时间、请求的资源等)。RBAC(Role-Based Access Control)是一种常见的权限管理方式,权限是基于角色进行管理的,用户通过加入角色来获得对应的权限。这种方式是 RBAC 的扩展,在传统的角色和权限模型上增加了资源层级管理,使得权限不仅限于功能权限,还可以对资源(如数据、记录等)进行细粒度控制。
2025-01-15 14:47:10
1035
原创 Java项目性能优化思路
在做性能优化时,一定要根据实际情况,权衡性价比和系统改动风险,并且做好充分的测试,不要好心优化、结果给系统导入了新的Bug。不需要引入额外的存储技术,只需将下载过一次的代码生成器保存在服务器上,之后要下载时,如果服务器已经有下载好的文件,就不用从对象存储获取,直接读取并返回给前端即可。对于该项目,生成器的修改频率一般是很低的,而且实际运营时,生成器应该是需要人工审核才能展示到主页,所以对数据更新实时性的要求并不高,使用缓存非常合适。虽然可以优化,比如多线程并发生成文件,但是复杂度过高、优化的性价比不高。
2025-01-13 14:45:16
860
原创 Java 泛型不再难:简单示例助你快速掌握
在 Java 编程中,泛型可能听起来有点抽象,但它实际上是一个非常实用的功能,可以让你的代码既简洁又安全。简单来说,泛型让我们能够编写更加通用的代码,不用担心类型出错,也避免了大量的重复代码。你会发现,泛型在集合框架、方法、类的定义中都有着广泛的应用,它让程序更灵活、更易维护。——Java 泛型不仅提供了类型安全和代码复用的优势,还帮助开发者编写更加灵活、可维护的代码。通过合理应用泛型,我们可以在确保类型一致性的同时,处理不同的数据类型和复杂的业务逻辑,极大地提升了代码的可扩展性和健壮性。——
2025-01-13 14:42:18
531
原创 移植案例与原理 - HDF驱动框架-驱动配置(1)
HCS(HDF Configuration Source)是HDF驱动框架的配置描述源码,内容以Key-Value为主要形式。它实现了配置代码与驱动代码解耦,便于开发者进行配置管理。应该,类似Linux DTS(Device Tree Source)设备树。HC-GEN(HDF Configuration Generator)是HCS配置转换工具,可以将HDF配置文件转换为软件可读取的文件格式。
2025-01-13 14:39:43
607
原创 Ollama REST API模型调用小试
通过 Ollama REST API,我们可以轻松调用本地部署的大语言模型,实现文本生成、聊天对话等功能。结合 Python 或其他编程语言,可以快速集成到各种应用中,满足不同的需求。
2025-01-12 16:19:12
994
原创 Tomcat(133)Tomcat的SSL会话缓存故障排除
通过调整Tomcat连接器的SSL配置、启用详细的SSL日志、使用工具测试SSL会话缓存、优化JVM和系统设置、监控和分析SSL性能,以及优化连接器参数,可以有效解决Tomcat中的SSL会话缓存问题。上述步骤和代码示例提供了详细的故障排除方法,帮助你在实际应用中识别和解决SSL会话缓存相关问题。
2025-01-12 16:17:35
711
原创 Pandas数据应用:时间序列预测
时间序列是指按照时间顺序排列的一组观测值。这些观测值可以是股票价格、气温、销售量等。在时间序列中,每个数据点都有一个对应的时间戳,这使得我们可以研究数据随时间的变化趋势。
2025-01-12 16:16:54
537
原创 网络安全 | WAF防护开通流程与技术原理详解
本文主要是简单介绍通用的WAF开通流程,其实,WAF防护开通的流程涉及多个环节,包括源站改造、DNS配置、WAF策略设置等。通过合理配置源站架构和SSL证书,客户可以确保Web应用的高可用性和安全性。同时,WAF通过实时流量分析和防护机制,能够有效拦截和阻止各种网络攻击。
2025-01-09 21:08:52
651
原创 【Java多线程】如何使用Java多线程下载网络文件 断点续传
多线程下载的基本思想是将一个文件分成多个部分,每个部分由一个线程独立下载,最后将这些部分合并成完整的文件。断点续传是多线程下载的一个重要功能,它可以在下载中断后继续从中断的地方继续下载,避免重新下载整个文件。断点续传的实现方法是在下载过程中保存下载进度,例如保存已下载的字节数,以便在下次下载时继续下载。它可以在下载中断后(例如暂停或网络中断)继续从中断的地方继续下载,避免重新下载整个文件。在开始下载之前,需要获取文件的大小,以便确定每个线程下载的范围。首先,我们需要创建一个下载器类,用于管理下载任务。
2025-01-09 21:08:16
353
原创 MongoDB数据库查询进阶
这两种方法结合起来一般用在网页上,数据显示的时候,比如说:一个网页一般都不会显示所有内容,一般会分很多页,通过这种方法实现分页显示。还可以按照多个字段进行排序。这将返回详细的执行信息,包括查询使用的索引(如果有)、扫描的文档数量、执行时间等。好了,大致就是这些,后面我会更新python连接MongoDB的内容,我也是刚学,请各位大佬多多指教!的索引,扫描了 5 个键和 5 个文档,执行时间为 2 毫秒等信息。是查询条件,用于筛选出价格大于 20 的产品,而。表示不设置查询条件,即返回所有文档。
2025-01-09 21:07:43
1016
原创 spring boot学习--简易web服务--拦截器与过滤器
在实现拦截器与过滤之前,我们先简单接入一下redis 新建 utils 目录 现在的目录结构如下。接下来我们开始使用spring boot 的拦截器与过滤器 通过判断token是否有效。设置过滤器 过滤只简单打印一下请求的生命周期即可,本次是通过注解进行注册的。借用知乎上的一张图解析过滤器与拦截器在web服务中的执行顺序。至此,spring boot的拦截器与过滤器的简单接入完成。通过配置,注册拦截器 访问/user时粗发拦截。redis工具类代码(简单接入)带着token去访问/user。
2025-01-08 14:24:30
236
原创 JDK 21 使用一年的总结与感悟,全部分享!
JDK 21自发布以来,正好有契机,新项目使用了这一长期稳定的版本。经过一年的开发工作,现在我将从实际开发中的编码体验和实际的提升两个角度,分享使用感受。本文将重点对比JDK 8和JDK 21,因为有对比才能有更直观的感受。影响方面JDK 8JDK 21代码简洁性样板代码多,拼接繁琐现代化语法减少样板代码设计模式支持类继承限制较少sealed类提升安全性函数式编程初步支持更完善,类型推断增强数据结构无Record更高效性能优化基础优化垃圾回收和编译性能提升。
2025-01-08 14:23:12
944
原创 JAVA线程池有哪些队列? 以及它们的适用场景案例
不同的线程池队列有着各自的特点和适用场景,在实际使用线程池时,需要根据具体的业务需求、系统资源状况以及对任务执行顺序、响应时间等方面的要求,合理选择相应的队列来构建线程池,以实现高效的任务处理。关注威哥爱编程,学习编程不迷茫,关注威哥爱编程,代码世界任纵横。
2025-01-08 14:22:37
595
原创 Spring MVC 中因导入错误的 Model 类报错问题解析
这种错误的根本原因是不小心导入了不相关的类。在开发 Spring MVC 或 Spring Boot 项目时,需要特别注意正确导入包,尽量避免 IDE 自动导入不对的类。
2025-01-06 15:38:30
269
原创 基于Python深度学习的眼疾识别系统实现~人工智能+卷积网络算法
眼疾识别系统,本系统使用Python作为主要开发语言,基于TensorFlow搭建卷积神经网络算法,并收集了4种常见的眼疾图像数据集(白内障、糖尿病性视网膜病变、青光眼和正常眼睛) 再使用通过搭建的算法模型对数据集进行训练得到一个识别精度较高的模型,然后保存为为本地h5格式文件。最后使用Django框架搭建了一个Web网页平台可视化操作界面,实现用户上传一张眼疾图片识别其名称。
2025-01-06 15:36:30
774
原创 去哪儿Kube DNS架构优化
文章介绍了在Qunar的业务需求场景下,kube-dns调整方案的优势以及原生k8s dns方案的不足,并提供可实践、可复刻的方案,以及测试验收、无损上线方式。希望对在大规模场景下kube-dns,对解析有较大依赖性的团队能够提供一种优化思路或优化方案候选项。
2025-01-06 15:35:47
962
原创 Java开发经验——数据库开发经验
本文主要介绍了Java开发中的数据库操作规范,包括数据库建表规范、索引规约、SQL规范和ORM规约。强调了在数据库设计和操作中应遵循的最佳实践,如字段命名、数据类型选择、索引创建、SQL语句编写和ORM映射,旨在提高数据库操作的性能和安全性。
2025-01-04 14:45:25
852
原创 Java开发经验——线程池的安全问题
本文探讨了线程池和连接池的安全问题,包括线程池的声明、管理策略、复用性、混用策略以及CallerRunsPolicy策略可能导致的程序阻塞问题。同时,文章还讨论了连接池的鉴别、复用性和配置问题。
2025-01-04 14:44:15
828
原创 Java开发经验——JDK工具类的安全问题
本文探讨了Java开发中JDK工具类的安全问题,重点分析了不同工具类(包括Java自带的Objects工具类、Apache Commons Lang、Guava和Spring Framework的ObjectUtils)在比较对象相等性时的使用方法和优势。同时,文章还涉及了Integer类型拆箱与封箱、Lombok代码生成异常、计算精度问题、List集合类问题和异常处理问题等多个Java开发中的常见问题。
2025-01-04 14:42:36
688
原创 SpringBoot多数据源实践:基于场景的构建、实现和事务一体化研究
java代码解读复制代码user.setUsername("张三");role.setRole("管理员");int a=1/0;结果:master回滚,slave回滚、temp回滚只有一个服务,切用到多个数据源时,用@DSTransational注解比较方便,可以控制多数据源进行回滚。为什么说只有一个服务采用@DSTransactional注解,多服务不行吗?不行。
2025-01-04 14:41:53
633
原创 @ConfigurationProperties注解的使用
ConfigurationProperties注解,此注解的作用是用来为bean绑定属性的。开发者可以在yml配置文件中以对象的格式添加若干属性。@Value 注解通常用于外部配置的属性注入,具体用法为: @Value("${配置文件中的key}")@ConfigurationProperties可以批量的将外部的属性配置注入到bean对象的属性中。使用@ConfigurationProperties注解就可以将配置中的属性值关联到开发的模型类上。@Value注解只能一个一个的进行外部属性的注入。
2025-01-03 14:10:59
464
原创 SpringBoot 自动配置的八个宝藏技巧
作为开发者,我们也可以创建自定义的自动配置类,以便在特定条件下自动配置特定的 Bean。创建自动配置类:使用 @Configuration 和适当的 @Conditional 注解。less代码解读复制代码} }在 spring.factories 中注册:ini代码解读复制代码发布 Starter:将自动配置类打包在一个 Starter 中,供其他项目引入使用。通过上面 3个核心步骤,当我们在启动SpringBoot容器时,自定义的类就会被自动配置,实现我们要达到的预期。
2025-01-03 14:09:20
632
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人