自定义博客皮肤VIP专享

    *博客头图:

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

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

    博客底图:

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

    栏目图:

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

    主标题颜色:

    RGB颜色,例如:#AFAFAF

    Hover:

    RGB颜色,例如:#AFAFAF

    副标题颜色:

    RGB颜色,例如:#AFAFAF

    自定义博客皮肤

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

    原创 有关数据库表的冗余字段

    之前看一个开发人员的技术研讨视频,提到了一个数据库表设计中的问题,就是一张表做纵向分表,拆分为a和b以做冷热数据分离存储,但是会有一种情况就是.这是因为查a但是需要这个字段就需要再去查b,多了一次查询,但是把这个字段存储在a中就可以,那么就有了这个必要冗余。

    2025-03-01 18:17:14 1076

    原创 策略模式Spring框架下开发实例

    采用策略模式的情况一般是封装多重if-else/switch下的不同处理逻辑,这些逻辑可以抽象为一个行为(比如封装参数,做前置校验等),将这个行为定义为接口方法/*** 策略接口*///本例中根据不同产品类型执行不同的返回参数封装逻辑将上文提到的多重if-else/switch中不同情况及其处理逻辑抽象成具体策略类和其内部方法执行逻辑/*** 记录器参数处理类*/@Component//注解使用见3@Autowired@Override//记录器的处理逻辑。

    2025-02-21 15:22:48 778

    原创 数据结构PTT优化部门树查询

    进入正文之前先给出一个概念,可以在看完文章后再来看这个数据结构概念预排序遍历树(Modified Preorder Tree Traversal,简称MPTT)是一种,常用于解决多层级分类(如部门树、商品分类)的递归查询性能瓶颈问题。其核心是通过为每个节点添加左右边界值(lft和rgt),实现的高效查询。

    2025-02-21 15:21:43 1196

    原创 ThreadLocal及线程间变量传递详解

    面试速记每个线程内部都有一个专属的 ThreadLocalMap,用来存放线程局部变量。ThreadLocalMap 的键是 ThreadLocal 对象,值是实际存储的数据。调用 get() 或 set() 时,会通过当前线程的 ThreadLocalMap 根据 ThreadLocal 对象的 hash 值快速定位并操作对应的值,从而实现数据隔离。在多线程编程中,我们常常需要保证每个线程拥有自己的变量副本,避免线程间数据互相干扰。

    2025-02-21 15:17:56 1146

    原创 数据权限校验实践

    当然这个项目中的鉴权模块转换不是为了优化架构,而是用户提出的一个定制化需求,这两种鉴权方案其实都有各自的优势,需要根据业务场景来进行选择,以下列出这二者的优势场景RBAC提供了一种简单、集中的权限管理方式,适用于权限相对固定的场景。ABAC提供了一种灵活、动态的权限管理方式,适用于权限需求变化频繁的场景。

    2025-02-17 20:02:39 713 1

    原创 SaaS与私有化部署:企业级产品的两种选择

    在SaaS模式下,产品A被部署到我公司的服务器上,所有的数据存储在我公司的数据库中。当公司B购买并获得授权后,我会为其分配相应的服务器资源,他们通过远程调用的方式使用产品A,就像是远程访问一个在线服务。假设我自己的公司开发了一个产品A,供其他公司使用。如果有公司B想要使用我的产品,产品A的交付方式(即部署到服务器开始使用)可以有两种选择:SaaS模式和私有化模式。在私有化模式下,产品A被部署到公司B自己的服务器上,所有的运行数据和用户请求都在他们内部的系统中处理。这意味着产品的控制权完全掌握在公司B手中。

    2025-01-20 16:07:28 551

    原创 JWT令牌登录详解

    JWT(JSON Web Token)令牌登录是一种常用的身份认证机制,广泛应用于现代Web开发中,学习项目中也比较常见.

    2025-01-16 15:13:14 454

    原创 API/SDK

    SDK是对服务端提供的API的封装,实现开箱即用,每次调用你不需要知道这个API需要怎么发送请求,怎么处理响应,这些SDK会自己处理,你唯一需要做的就是将参数告诉SDK,SDK会将处理后的结果告诉你,只需要通过一个get()方法就可以实现便捷API调用。实际场景里可能会将多个API聚合为一个SDK工具包来实现一个整体功能,比如一个人脸识别SDK或者im聊天交互SDK可以直接为程度提供相应的功能来使用。两个云端程序需要远程调用时,其实就是一次communicate交流,交流发送有四要素。

    2025-04-25 14:04:51 24

    原创 frp内网穿透零基础详细教程

    1.下载压缩包报错病毒无法打开,浏览器设置无效,是因为这是系统拦截,需要到系统设置中设置白名单放行。2.配置文件有新旧两种ini和toml两种格式,注意自己用的哪个格式。1.分别给客户端和服务端机器下载压缩包解压。配置frps.toml文件(ini)完成,利用公网ip+指定暴露接口访问。利用systemd启动后台进程挂载。3.访问控制面板检查是否启动成功。(记得开放服务器7500端口)1.配置frpc.toml文件。3.面板上查看连接是否建立成功。1.创建service文件。3.开放云服务器防火墙端口。

    2025-04-06 12:15:18 1369

    原创 bug小记

    今天公司给客户天翼部署单点登录版本时遇到一个登录界面后端报错的情况,客户提到部署中因为公司隐私要求不能使用root用户操作,因此选择了其他用户,可能会是这方面权限缺失的问题。最后联系运维排查文件路径,果然如师兄所料,是因为客户使用非root环境启动导致没有创建配置文件的权限,导致无法读到nacos配置文件的内容。连接到客户的部署环境后,通过k8s导出auth和manager服务的日志,初步筛选日志,根据报错信息判断到是未读取到nacos配置文件。再重启nacos服务,无效。即配置文件未能成功创建。

    2025-03-06 14:04:18 676

    原创 java中存储金额字段

    商场或者电商项目中会涉及到金额字段的存储,本文来讨论下选择最多的BigDecimal保证精度的原理以及其他字段类型替换方案。

    2025-03-05 14:19:13 778

    原创 Git-cherry pick

    实习开发中遇到的一个情况:客户有一个定制化需求,基于客户使用的现场版本是2.5.0,结果产品经理对接错了版本,以至于前后端的开发都是基于2.6.0版本来做的,直到最后打包部署上线时无法部署才发现这个问题…针对解决方案,师兄让我先尝试cherry pick,如果解决不了的话就只能手搓代码了最后结果是前后端都通过git的cherry pick解决了问题,之前都不知道这个技术,所以来记录学习这个趣名技术🍒。

    2025-03-03 16:11:15 454

    原创 @Async异步日志及@EnableAsync底层机制

    面试速记通过如@Import引入激活异步处理,获取到核心是,会在 Bean 初始化阶段扫描@Async方法,利用 AOP 动态代理生成代理对象。当调用被@Async标记的方法时,代理会通过拦截请求,解析线程池(优先自定义,否则默认),将任务封装为Callable提交到线程池异步执行。

    2025-02-28 09:56:36 1094

    原创 DevOps全流程

    面试速记DevOps 是一种融合开与运维的软件研发实践方法,规划从需求调研到开发,测试,部署等全流程,通过Jenkins 和Kubernetes 等自动化工具集成部署实现从代码编写到部署的无缝衔接,加速软件交付周期。我在实习中涉及到的工作有参与需求评审和开发排期会议,独立开发测试,并通过流水线部署与测试合作完善系统。DevOps 是一种软件开发和运维的实践方法,是为了实现更高效、快速、可靠的软件交付。DevOps 的核心理念是融合软件开发与测试部署的流程,从而实现从代码编写到部署的无缝衔接。

    2025-02-26 11:13:42 840 2

    原创 外部Bean注入冲突解决方案

    如果自动配置的 Bean 冲突,可以手动定义自己的 Bean,并添加@Primary@Bean@Primary // 标记为优先使用的 Bean。

    2025-02-25 15:02:46 455

    原创 SpringBoot自动装配类型冲突

    如果SpringBoot中@Autowired注入的类有多个实现类,那么应该如何指定注入哪个实现类?面试速记三种注解方案1.Qualifier指定通过byName来注入2.Primiary:带有该注解的bean会被优先注入3.EnableAutoConfiguration(exclude…)直接不加载某个类,比较极端。

    2025-02-25 15:01:54 723

    原创 SpringBoot约定大于配置

    通过。

    2025-02-24 17:25:38 418

    原创 超线程技术

    面试速记有关"一个核会否会并行执行"问题:单核 CPU 在任务/线程级别无法实现真正的并行,因为物理上只有一个核心。但通过超线程技术,单核可以模拟上的并行执行:让一个物理核心对操作系统表现为多个逻辑核心,通过共享核心资源,快速切换线程来隐藏延迟,超线程技术,是英特尔开发的一项硬所件技术,这项技术允许一个CPU模拟出两个逻辑CPU,从而使得操作系统和软件可以将任务分配给这两个逻辑核心,实现更高效的并行处理。也就是。

    2025-02-24 17:24:49 238

    原创 @PathVariable与@RequestParam

    用于资源标识(URL路径中的变量),参数必填。:用于附加条件(查询字符串中的参数),参数可选或带默认值。根据API设计的RESTful原则,优先用标识资源,用处理辅助条件。此外,@RequestBody注解用于接收Post请求的参数体Get使用@PathVariable/@RequestParam路径传参Post用@RequestBody + DTO传参。

    2025-02-17 16:16:39 307

    原创 JVM直接内存详解

    磁盘上的大文件直接转到内存中以便高速读写。

    2025-02-17 15:38:28 937

    原创 215 八股学习记录

    ArrayList和LinkedList的区别静态代码块3.构造函数构造函数不可用private修饰:错,将构造函数设为private可以new,这通常用于单例模式或工厂模式中。构造函数的名字必须与类名完全相同,,编译器通过构造函数的名字来识别它是一个构造函数。

    2025-02-17 10:51:08 708

    原创 docker 安装mysql5.7保姆级教程(附docker报错:Error response from daemon: Get “https://registry-1.docker.io/v2/”)

    如果是为报错而来,直接转到2中查看解决方案如果是新手来找安装教程,可以按照步骤一步一步来。

    2025-02-17 10:48:48 468

    原创 有关串池的常见面试题及其底层原理

    字符串变量拼接的原理是StringBuilder字符串常量拼接的原理是编译器优化常量池中的字符串仅是符号,只有在被用到时才会转化为对象利用串池的机制,来避免重复创建字符串对象可以使用intern方法,主动将串池中还没有的字符串对象放入串池中。

    2025-02-09 22:27:45 180

    原创 SpringBoot笔记

    此笔记是博主二刷SpringBoot课程总结的笔记,其中记录的内容是自己有了实习开发经验以后觉得开发中实际能用到的高频知识1.spring-boot-dependencies定义坐标版本,通过dependencyMangement实现依赖管理避免依赖版本冲突2.starter通过依赖传递来配置开发环境中需要的相关依赖,以减少依赖配置3.Application引导类:初始化Spring容器4.内嵌服务器隐藏资源的访问行为,即无法通过访问路径得知对资源的操作类型由@Controller,@ReponseBody

    2025-02-06 21:15:32 1175

    原创 @Value属性读取系统变量错误

    避免使用常见属性名,如user.name,因为容易与系统属性冲突。理解Spring Boot的属性优先级,避免配置被覆盖。

    2025-02-05 17:08:48 227

    原创 idea隐藏无关文件

    的输入框中,添加你想要隐藏的文件类型或文件夹。如果你想隐藏某些特定类型的文件(例如。:可以指定相对路径或绝对路径。这会隐藏指定路径下的文件夹。:直接写文件夹名称。

    2025-02-04 18:57:42 490

    原创 日志打印的最佳实践

    out。

    2025-01-22 11:04:18 471

    原创 Edge中自动拦截新开页面的网络请求

    ​ 在开发调试过程中,我们经常会遇到点击某个按钮后跳转到另一个网页并自动调用相关接口的情况。例如,在淘宝页面点击“京东”按钮时,浏览器会新开一个京东页面并自动调用登录接口进行登录。然而,这时如果想通过按F12来拦截查看新开页面的网络请求,往往来不及。因此,本文介绍如何通过设置 Edge 浏览器(其他主流浏览器也类似)实现页面跳转时自动打开开发者工具,并开始拦截网络请求。

    2025-01-20 10:35:32 390

    原创 Lambda表达式中的变量

    执行分页查询时,需要对查出来的数据封装页码,定义一个Integer用于递增表示页码,这里采用lambda表达式的规范写法,在表达式中封装并递增页码,但是出现报错报错:Variable used in lambda expression should be final or effectively final。

    2025-01-17 17:02:41 350

    原创 解决Java数组排序中的溢出问题:避免整数溢出的正确做法

    进行比较,因为Integer.compare()底层是直接对两个整数进行比较,并根据比较结果返回 -1, 0 或 1,这样可以避免溢出问题,因为它并不直接进行。但是在处理一些特殊的测试用例时,排序可能出现异常,导致排序失败。在做算法题时,常常需要对二维数组进行排序。类型的表示范围,导致整数溢出,最终结果会是一个正数(因为。的计算,而是通过判断每个整数的大小来返回结果。,我们希望根据数组的首元素进行升序排序。类型的边界,减法操作可能会导致整数溢出。进行排序可能导致错误的原因在于整数溢出。

    2025-01-17 16:57:18 353

    原创 .gitignore记录

    在创建项目时选择了初始化git仓库,这样会导致创建出的所有项目文件都先被自动add到缓存区,这样之后的commit就会将缓存区中的文件全部未经.gitignore过滤就提交。问:.gitignore文件是在什么时候生效的,add时还是commit时还是push时。阶段起作用,它决定了哪些文件可以被添加到暂存区,从而间接影响后续的。

    2025-01-10 14:17:43 537

    原创 MySQL连接报错28000 Access denied for user ‘root‘@‘10.20.2.27‘ (using password YES)

    Access denied for user ‘root’@‘10.20.2.27’ (using password: YES) 中@后的’10.20.2.27’是指代你的本机ip,如果你是和我一样通过内网连接远端数据库,这里就是显示我的电脑在此内网中的ip,如果是连接本机这里一般会是localhost。:用户的密码,存储为加密形式(MySQL 8.0及之后的版本,在MySQL 5.7及之前的版本中,密码字段名为。(但是官方说不推荐,因为不安全,不过这是运维的事情了,我们开发只关注使用测试就可以了)。

    2024-12-25 10:14:59 529

    原创 Spring的事务管理原理(为什么默认捕获中不包括检查类异常)

    Spring 的设计目标是平衡事务的自动管理和开发者的控制权:1. 默认对运行时异常和不可恢复错误回滚事务,符合大多数场景。对检查型异常不回滚,假定开发者会捕获和处理此类异常。2. 提供灵活的配置选项(如 `rollbackFor`)以适应特殊需求。

    2024-11-20 09:02:31 496 1

    原创 Git常用指令

    git remote add origin ... //初次绑定,推送到指定地址。git diff //查看上次commit以后未提交(add)的修改。git stash apply //恢复。git rebase //好看的合并,嫁接。只需要checkout 任意分支即可脱离。

    2024-11-17 03:03:48 317

    原创 MyBatis-plus

    sql语句中复杂的where条件由service中的mp自动创建,将wrapper传入到mapper层,mp会将wrapper自动拼接到自定义的sql语句中注:mapper层方法参数中wrapper需要使用@Param注解声明"ew"以下部分为ssm课程中的mp笔记。

    2024-10-10 21:23:29 1779

    原创 short-link项目开发笔记

    原字符串越长,生成的短链接重复概率越小.因此原本采用原网址+System.currentTimeMillis()拼接的方式.但是在短时间内大量请求涌入的情况下,该策略失效.先在布隆过滤器中判断,针对错判情况,再到null值缓存中查找,没有在进入数据库,如果没查到则缓存null值到缓存,形成布隆过滤器的兜底。短链接跳转中,从数据库查出短链接数据存入缓存时,先判断有效期是否过期,如果过期则存储null值到redis。单表修改直接修改即可,分表则需要判断分片键是否变更,如果变了则需要删除原有记录,插入新记录。

    2024-09-24 22:00:13 363

    原创 mysql50题

    10、查询学过编号为"01"但是没有学过编号为"02"的课程的同学的信息。t.t_name = '张三't.t_name LIKE '李%';t.t_name = '张三'---分组查询,having后置条件。外连接,IFNULL函数。模糊匹配(占位符%)

    2024-09-11 21:39:00 951

    原创 Docker

    例:

    2024-08-12 18:06:45 151

    原创 idea插件

    idea中查看字节码文件信息。

    2024-07-27 20:20:37 458

    原创 AppData\Local\JetBrains\IntelliJIdea2023.1\compile-server“): CreateProcess error=2, 系统找不到指定的文件。

    Cannot run program "D:\Develop\JDK17\bin\java.exe" (in directory "C:\Users\86137\AppData\Local\JetBrains\IntelliJIdea2023.1\compile-server"): CreateProcess error=2, 系统找不到指定的文件。试过所有方法后在检查环境变量的过程中发现用户变量和环境变量的PATH中有两个idea的配置,一个是我中间安装的社区版,一个是最后安装的企业版,

    2024-07-01 16:06:12 1411 1

    frp内网穿透课设报告资料

    frp内网穿透课设报告资料

    2025-04-06

    空空如也

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

    TA关注的人

    提示
    确定要删除当前文章?
    取消 删除
    手机看
    程序员都在用的中文IT技术交流社区

    程序员都在用的中文IT技术交流社区

    专业的中文 IT 技术社区,与千万技术人共成长

    专业的中文 IT 技术社区,与千万技术人共成长

    关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

    关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

    客服 返回
    顶部