思考
文章平均质量分 82
爱叨叨的程序狗
码农,不只Coding.
展开
-
轻松设置:服务器域名配置全攻略
SSL证书分为两种:正式证书和个人测试证书,正式证书需要购买,个人测试证书免费,有效期三个月,阿里云每年单个域名可以签发20个免费证书,到有效期后再次下载新的免费证书替换即可,20个免费证书足够一年的使用量。完成后状态是绿色的正常,我是由于备案所以设为了暂停状态。解压后是一个.pem文件和一个.key文件,为了后续配置方便,我将文件名称分别改为:server.pem、server.key。的维护者,一个跨专业自学Java,对技术保持热爱的bug猿,同样也是在某二线城市打拼四年余的Java Coder。原创 2024-07-06 15:29:00 · 2937 阅读 · 0 评论 -
读书-《蛤蟆先生去看心理医生》
罗伯特·戴博德(Robert de Board),毕业于剑桥大学赛尔文学院,曾任教于英国亨利商学院,是一位经验丰富的心理学研究者和临床实践者。他的两本专业著作《咨询技巧》和《组织的心理分析》都是英国畅销的心理学类教科书。本书是他最著名、最畅销的一本大众心理学著作。原创 2024-06-04 20:22:16 · 429 阅读 · 0 评论 -
Thread的stop和interrupt的区别
方法会导致线程突然终止,可能导致如:线程持有的资源没有被正确释放,使得程序状态不一致问题。因此建议使用更安全的方式来停止线程,比如使用。的维护者,一个跨专业自学Java,对技术保持热爱的bug猿,同样也是在某二线城市打拼四年余的Java Coder。🏆在掘金、CSDN、公众号我将分享我最近学习的内容、踩过的坑以及自己对技术的理解。因为本质上它是不安全的,使用该方法可能会导致数据、资源不一致的问题,👋🏻你好,我是Debug.c。📞如果您对我感兴趣,请联系我。原创 2024-06-01 10:31:07 · 243 阅读 · 0 评论 -
通俗易懂讲乐观锁与悲观锁
假设线程1要使用乐观锁对id为1的数据做修改,在修改前,需要先查询数据数据版本,然后再执行其他逻辑,在执行其他逻辑的期间,该数据可能被其他线程所修改,在下边的案例中修改了对应的数据,此时线程1并不知道其他线程修改了数据,为了判断数据是否被修改,线程1在更新时在where条件中校验数据版本,如果数据被修改过,则version版本不可能为1,因此,可以通过update语句的影响行数判断数据是否被修改。悲观锁在使用时都会把公共资源进行加锁,其他线程处于阻塞状态,性能相较于乐观锁较低,综合以上,原创 2024-06-01 10:30:27 · 901 阅读 · 0 评论 -
通俗易懂讲乐观锁与悲观锁
假设线程1要使用乐观锁对id为1的数据做修改,在修改前,需要先查询数据数据版本,然后再执行其他逻辑,在执行其他逻辑的期间,该数据可能被其他线程所修改,在下边的案例中修改了对应的数据,此时线程1并不知道其他线程修改了数据,为了判断数据是否被修改,线程1在更新时在where条件中校验数据版本,如果数据被修改过,则version版本不可能为1,因此,可以通过update语句的影响行数判断数据是否被修改。悲观锁在使用时都会把公共资源进行加锁,其他线程处于阻塞状态,性能相较于乐观锁较低,综合以上,原创 2024-05-15 22:53:49 · 825 阅读 · 0 评论 -
优化MyBatis查询条件:从Boolean类型判断到<choose>标签的进化
作为一名程序员,我们的代码首先要保证功能可用,在功能可用的前提下,要保证代码质量可读性、安全、性能等。吾日三省吾身,多思考一下代码如何能写的更好,这要求我们需要不断探索代码的最佳实践。保持持续学习的态度,每天优化一点点,一点点改进,从而写出更加优雅、高效和安全的代码。原创 2024-02-19 11:52:06 · 884 阅读 · 0 评论 -
深入分析-Spring BeanDefinition构造元信息
/value = “HelloService” 即为Bean:HelloService的元数据,在构造方法中的依赖关系同样属于元数据。@Component(value = “balanceRedisProcessor”) 是Bean:BalanceRedisProcessorService的元数据,在构造方法中的依赖关系同样属于元数据。return id;// 2. 通过 AbstractBeanDefinition 以及派生类。原创 2024-01-07 14:49:18 · 1061 阅读 · 1 评论 -
探秘Spring中的BeanDefinition:每个Bean都是一个独特的“小镇居民”
在Spring框架中,核心思想之一就是将应用程序中的各种组件,例如对象、服务、数据源等,都抽象为Spring Bean,并将它们注册到Spring容器中。这种注册的方式提供了一种基于IoC(Inversion of Control,控制反转)的管理方式,即不再由应用程序主动去创建和管理对象,而是由Spring容器负责管理和注入这些对象。而BeanDefinition是用来描述和定义Bean的元数据对象。BeanDefinition包含了关于Bean的各种信息,如类名、属性值、构造函数参数等。原创 2024-01-04 09:08:29 · 947 阅读 · 0 评论 -
MapStruct @Mapping注解:优雅处理映射中的Null值
Mapping注解是MapStruct中用于定制字段映射关系的重要工具。通过@Mapping注解,我们可以指定源对象和目标对象之间的字段映射关系,包括字段名、转换方法等信息。在处理Null值时,@Mapping注解提供了一些强大的选项,使得映射过程更加灵活和可控。除了使用默认值和设置目标对象字段为默认值之外,MapStruct还支持自定义Null值处理策略。通过在@Mapper注解中配置nullValueCheckStrategy属性,我们可以指定一个自定义的策略类,来决定在映射过程中如何处理Null值。原创 2023-12-27 21:19:06 · 2740 阅读 · 0 评论 -
2023年终总结-轻舟已过万重山
白,陇西布衣,流落楚、汉。-与韩荆州书我来自孔孟故里山东济宁,也许是小学时的某一天,我第一次接触到了电脑,从此对它产生了强烈的兴趣,高中我有一个愿望:成为一名计算机从业者。18岁的我踏入北上的列车,进入我的大学生活。可录取通知书上并非我期待的那样:被计算机学院录取从此踏上编码的快车道。也许是高中比较喜欢当时化学老师的课,在我能填报的六个志愿中,我无一例外的把计算机、软件类专业放在了第一个,把化工、化学相关的专业放在了第二个。原创 2023-12-09 21:31:36 · 1056 阅读 · 0 评论 -
炒冷饭、语雀崩、领会员-我最主观的一段文字
语雀,为每一个人提供优秀的文档和知识库工具。作为一个程序员来说,我们需要一块位置去存储我们正在学习的技术、过往踩过的坑以及正在做的事情,如果我们需要记录每天的TO-DO List,或者需要按照四象限工作法亦或是需要根据三只青蛙工作法做时间管理,当然,如果您不是相关从业人员,有记录美好生活的需求,我们都需要一个多端(PC、Mac、Phone、Pad、Web)可访问的软件,那么语雀便可完美达到要求。原创 2023-10-26 19:03:13 · 343 阅读 · 0 评论 -
解析Spring Cloud Gateway在微服务中的角色
来自Spring官网的一段对于Spring Gateway的概述:大意为:这个项目提供了一个库,用于在Spring WebFlux之上构建API网关。Spring Cloud Gateway旨在提供一种简单而有效的方式来路由到api,并为它们提供横切关注点,例如:安全性、监控/指标和弹性。路由负载均衡请求功能增强。原创 2023-09-06 16:44:12 · 111 阅读 · 0 评论 -
深入解析JDK 8 HashMap
这个API提供了更加全面、易于使用和线程安全的日期和时间处理功能,相比于旧的java.util.Date和java.util.Calendar(since 1.1)类,它提供了更多的灵活性和功能。在Spring中,使用Instrumentation的典型实现是:InstrumentationSavingAgent,其功能是把Instrumentation的功能存储到本地,实现字节码的增强,Spring中的各种Agent实现都是基于JDK的Instrumentation。JDK 1.1中引入反射机制。原创 2023-09-04 11:35:38 · 540 阅读 · 2 评论 -
Spring版本与JDK版本演变
这个API提供了更加全面、易于使用和线程安全的日期和时间处理功能,相比于旧的java.util.Date和java.util.Calendar(since 1.1)类,它提供了更多的灵活性和功能。在Spring中,使用Instrumentation的典型实现是:InstrumentationSavingAgent,其功能是把Instrumentation的功能存储到本地,实现字节码的增强,Spring中的各种Agent实现都是基于JDK的Instrumentation。JDK 1.1中引入反射机制。原创 2023-09-01 17:29:48 · 2023 阅读 · 0 评论 -
什么是面向对象以及和面向过程的区别
在面向对象的世界里,我们可以将大象和冰箱都抽象为对象,并定义它们的属性和方法。在大象对象的方法中,我们可以检查冰箱对象的状态,比如是否打开,是否有足够的空间来容纳大象。我们可以实例化一个名为"myRefrigerator"的对象,该对象基于"Refrigerator"类,并设置它的属性,比如容量和温度。我们可以实例化一个名为"myElephant"的对象,该对象基于"Elephant"类,并设置它的属性,比如体重。如果冰箱是关闭的,我们需要调用打开冰箱的函数或操作,以便能够放入大象。原创 2023-08-30 09:50:52 · 87 阅读 · 0 评论 -
SpringBoot MDC全局链路解决方案
Filter是Java Servlet 规范定义的一种过滤器接口,它的主要作用是在 Servlet 容器中对请求和响应进行拦截和处理,实现对请求和响应的预处理、后处理和转换等功能。通过实现 Filter 接口,开发人员可以自定义一些过滤器来实现各种功能,如身份验证、日志记录、字符编码转换、防止 XSS 攻击、防止 CSRF 攻击等。那么这里我们使用它对请求做MDC赋值处理。原创 2023-08-08 22:12:52 · 1085 阅读 · 0 评论 -
Merge和Rebase的区别
变基的结果是源分支上的提交被重新应用到目标分支上,创建了新的提交。变基是将一个分支的提交移动到另一个分支的末尾,使提交历史看起来像是在一个分支上进行的连续修改。Merge 保留了分支的独立提交历史,而 Rebase 则将分支的提交移动到其他分支的最新提交之后,使提交历史保持线性。需要注意的是,当使用 Rebase 时,由于修改提交历史的特性,可能需要解决冲突,并且可能会导致其他开发者基于原始提交历史构建的分支出现问题。合并的结果是一个新的提交,它将源分支的修改合并到目标分支中。原创 2023-08-08 11:51:22 · 1128 阅读 · 0 评论 -
服务器排查并封禁ip访问
购买的服务器难免会遇到被攻击的情况,当我们发现服务器状态异常时,可以通过连接当前服务器的ip排查一下,并对可疑ip进行封锁禁止。我们可以通过路由跟踪来查看可疑ip。以下是两种解决方案。原创 2023-08-06 15:04:37 · 860 阅读 · 1 评论 -
百万数据分页查询优化方案
分页列表查询是项目中的热点需求,这种需求的特点是:字段多、数据量大、访问频繁、使用率高的特点,这个功能是给用户最直观的展示系统的信息,针对于多、大、频、热这几个特点,会引申出一个问题:列表展示的数据可能是来自于不同的数据维度、需要关联N张表查询得到,那么,如何让用户更快、更准的获取到需要的数据,便成了程序员在编码时需要考虑到并且需要解决的问题,因为随时间推移,线上系统不乏几百万数据的表。实际的业务场景下,可能会关联N张表,而且线上服务器的压力会比单机开发环境更重,因此实际接口响应时间会更长。原创 2023-07-26 08:38:56 · 488 阅读 · 0 评论 -
站在程序员角度谈谈我对开发流程的理解
以终为始,倒过来思维,扮演产品经理角色,推演用户使用场景,使需求在业务上形成闭环,若业务较复杂,一定要先画出流程图。利用DoD思维,确定内部验收标准。确定开发优先级。如果产品能站在用户角度讲功能描述清楚,那么程序员没必要在业务细节上浪费时间,而是把时间用在技术实现细节上。阶段DoD任务开发中按需调整开发资源。联调注意沟通方式提测如期上线最好维护的代码是没有写出来的代码。...原创 2022-04-20 22:08:22 · 238 阅读 · 0 评论