- 博客(223)
- 资源 (2)
- 收藏
- 关注
原创 代码审查最佳实践与规则
当需要在现有项目中添加新代码时,应在主代码库(通常是 master/main/qa 分支)的基础上创建功能分支。这样,个人或团队就可以对新功能或任务进行开发,直到完成为止,并将他们的提交推送到这个不受保护的分支。开发完成后,就需要打开一个拉取请求(PR),将这些更改合并到主代码库中。这是为什么呢?因为代码审查必须由作者以外的人员执行,以检查源代码并查找问题,确保不良代码不会进入生产。此外,知识共享、提高安全性、降低开发成本和促进团队合作也是代码审查的好处。
2024-03-01 17:38:29 707
原创 Spring-IOC综述
说到spring的ioc,其实就是控制反转,为啥需要控制反转呢,其实是为了功能的增强,如果不用spring, 我们直接使用工厂方法,静态工厂方法, 都是是可以获取到对象的,但是如果需求变了,我们在类的生成时,添加了很多信息,使用工厂就不方便了,还有事务等需要统一的处理.一个典型的应用就是mybatis的接口,平时我们都是只需要写mybatis的接口,但是不写他的实现类,由spring生成一个代理的实现类,来进行方法的调用.对于事务的调用,在service上添加了事务,需要调用dao进行统一的控制.所以需要一
2024-01-02 09:42:32 1049
原创 Spring-AOP综述
Pointcut("execution(* com.chenss.dao.*.*(java.lang.String))")//匹配com.chenss.dao包下的任意接口和类的只有一个参数,且参数为String类型的方法。@Pointcut("execution(* com.chenss.dao.*.*(java.lang.String))")//匹配com.chenss.dao包下的任意接口和类的只有一个参数,且参数为String类型的方法。并扩充实现了proceed()方法,用于继续执行连接点。
2024-01-02 09:41:59 861
原创 Spring源码解析1
去读加了注解的类 和扫描的.在看第二行代码register**()**;这个其实就是把这个配置类注册到了spring中, 当然了这里也可以放一个普通的对象, 例如放一个UserDaoImpl.class, 也是可以注册到spring中去的, 当然了, 这里注册配置类和普通类的过程有些区别, 主要是涉及到对注解的处理, 过滤过程,再就是下一行代码refresh**()**;这一行代码很重要, 这是在初始化spring的环境,加载Spring中配置的6个类.
2023-12-04 10:05:20 838
原创 再谈jdk的代理
第408行的注释, 说如果没有就使用ProxyClassFactory创建一个,否则直接从缓存里面拿, 我们不看缓存的拿去, 就是一个Map, 没事好看的. 看看这个ProxyClassFactory类.他是静态的内部类.我们模仿第二种方式,动态的生成一个.java文件, 再编译成.calss文件,最后加载到jvm中,生成对象,调用新的对象的方法,就得到的增强的目的,而且对用户是透明的.缺点很明显, 需要继承, 而且随着功能的增加, 要不断的继承, 体系混乱,越来越复杂. 最后谁就不懂了.
2023-11-02 14:26:41 89
原创 Java 21 新功能展示(含示例)
Java 21 于 2023 年 9 月 19 日发布,是 Oracle 标准 Java 实现的下一个长期支持(LTS)版本。Java 21 具有以下 15 项功能。字符串模板(预览版) [JEP-430]序列集合 [JEP-431]代 ZGC [JEP-439]记录模式 [JEP-440]开关的模式匹配 [JEP-441]外来函数和内存 API(第三次预览) [JEP-442]未命名模式和变量(预览) [JEP-443]虚拟线程 [JEP-444]
2023-10-07 09:43:36 568
原创 MongoDB教程-8
在之前的所有章节中,我们一直在使用MongoDB的Object Id。在本章中,我们将了解ObjectId的结构。ObjectId是一个12字节的BSON类型,具有以下结构-- 1.前4个字节代表自unix epoch以来的秒数接下来的3个字节是机器标识符接下来的2个字节是进程ID最后3个字节是一个随机的计数器值MongoDB使用ObjectIds作为每个文档的_id字段的默认值,它是在创建任何文档的时候产生的。ObjectId的复杂组合使得所有的_id字段都是唯一的。
2023-08-01 09:01:24 658
原创 MongoDB教程-7
正如在MongoDB关系的最后一章中所看到的,为了在MongoDB中实现规范化的数据库结构,我们使用了引用关系的概念,也被称为手动引用,在这个概念中,我们手动将被引用文档的id存储在其他文档中。然而,在一个文档包含来自不同集合的引用的情况下,我们可以使用MongoDB DBRefs。DBRefs与手工引用。
2023-08-01 09:00:43 810
原创 MongoDB教程-5
复制是跨多个服务器同步数据的过程。复制在不同的数据库服务器上提供数据的多个副本,从而提供冗余并提高数据可用性。复制可防止数据库丢失单个服务器。复制还允许您从硬件故障和服务中断中恢复。通过增加数据拷贝,您可以将其中一个用于灾难恢复、报告或备份。
2023-07-10 09:02:03 564
原创 MongoDB教程-6
在开始在Java程序中使用MongoDB之前,需要确保在机器上设置了MongoDB CLIENT和Java。您可以查看机器上Java安装的Java教程。现在,让我们检查如何设置MongoDB CLIENT。您需要下载jar mongodb-driver-3.11.2.jar及其依赖mongodb-deriver-core-3.11.2.jar。请确保下载这些jar文件的最新版本。您需要将下载的jar文件包含到类路径中。
2023-07-10 09:01:24 155
原创 MongoDB教程-2
如果数据库不存在,该命令将创建一个新数据库,否则将返回现有数据库。若并没有创建任何数据库,那个么集合将存储在测试数据库中。Options参数是可选的,因此您只需指定集合的名称。如果您尚未选择任何数据库,则它将删除默认的“测试”数据库。在插入文档时,MongoDB首先检查封顶集合的size字段,然后检查max字段。MongoDB的db.collection.drop()用于从数据库中删除集合。在命令中,name是要创建的集合的名称。如果成功删除所选集合,drop()方法将返回true,否则将返回false。
2023-05-04 09:37:02 566
原创 cassandra数据库入门-4
CQL 提供了创建和使用用户定义数据类型的便利。您可以创建一个数据类型来处理多个字段。本章说明如何创建、更改和删除用户定义的数据类型。创建用户定义的数据类型命令 CREATE TYPE 用于创建用户定义的数据类型。其语法如下 -例子下面给出了创建用户定义数据类型的示例。在此示例中,我们正在创建一个包含以下详细信息的 card_details 数据类型。属性属性名数据类型numintpinintnametextcvvcvvintphoneset... );
2023-05-04 09:33:59 729 1
原创 cassandra数据库入门-3
您可以使用命令 CREATE TABLE 创建表。下面给出了创建表的语法。句法定义列您可以定义一个列,如下所示。example:age int,name text主键主键是用于唯一标识一行的列。因此,在创建表时必须定义主键。主键由表的一个或多个列组成。您可以定义表的主键,如下所示。例子下面给出了使用 cqlsh 在 Cassandra 中创建表的示例。我们在这里 -使用键空间 tutorialspoint创建名为 emp 的表。
2023-04-03 14:08:46 932 1
原创 cassandra数据库入门-2
Cassandra的安装:请参考博客:本章介绍 Cassandra 查询语言 shell 并解释如何使用其命令。默认情况下,Cassandra 提供了一个提示 Cassandra 查询语言 shell (cqlsh),允许用户与其进行通信。使用此 shell,您可以执行 Cassandra 查询语言 (CQL)。使用 cqlsh,您可以 定义模式,插入数据,和执行查询。cqlsh>启动 cqlsh使用命令 cqlsh 启动 cqlsh,如下所示。
2023-04-03 14:08:24 1033
原创 Docker安装Cassandra数据库,在SpringBoot中连接Cassandra
Cassandra的基本介绍,集成Cassandra到SpringBoot中使用。
2023-03-02 14:25:26 1196
原创 SpringBoot中Kafka的SSL链接-消费者配置
在上一篇文章:SpringBoot中Kafka的SSL链接_长河的博客-CSDN博客_kafka ssl连接中我们配置了kafka的SSL的生产者的配置, 现在配置其消费者:首先是测试代码:private static void testConusmer() throws Exception { String truststorePath = "./" + UUID.randomUUID().toString().replace("-", ""); FileToBase64Too
2023-01-01 08:56:18 574
原创 分布式缓存-1
缓存: 可以进行快速数据交换的存储器系统级缓存:硬盘缓存:CPU缓存:内存和缓存的区别:缓存淘汰的几种策略:1.先进先出,FIFO2.最不经常使用, LRU3.最近最少使用,LFU缓存应用场景:使用前提: 应用扛不住用户的并发访问时.缓存的应用场景:1.分布式session2.热点排名3.发布订阅4.分布式锁从单体架构看缓存:......
2022-09-01 09:15:25 58
原创 敏捷开发培训总结2
在实施敏捷的时候问一下自己:关于自己工作的价值:敏捷开发时, 不同人员的工作职责敏捷过程中实施总结的提问:其他的团队的答案:...
2022-07-08 14:03:07 265
原创 Kibana 使用 KQL 查询语法-kibana 常用查询语法
Kibana 查询语言 (KQL) 是一种使用自由文本搜索或基于字段的搜索过滤 Elasticsearch 数据的简单语法。 KQL 仅用于过滤数据,并没有对数据进行排序或聚合的作用。KQL 能够在您键入时建议字段名称、值和运算符。 建议的性能由 Kibana 设置控制。KQL 具有与 Lucene 查询语法不同的一组特性。 KQL 能够查询嵌套字段和脚本字段。 KQL 不支持正则表达式或使用模糊术语进行搜索。 要使用旧版 Lucene 语法,请单击搜索字段旁边的 KQL,然后关闭 KQL。术语
2022-06-02 09:37:22 23219 2
原创 Centos一键安装hadoop伪分布式
新建一个install.sh文件, 复制粘贴内容如下:#Hadoop install Script #DefineHadoopLink='https://repo.huaweicloud.com/apache/hadoop/core/hadoop-2.9.2/hadoop-2.9.2.tar.gz' #echo -e "\033[0;31m\033[0m" 32绿 31红 34蓝 #FunctionsinstallJDK() #安装JDK{ .
2022-05-05 09:48:02 1268
原创 写给Javaer看的Kotlin教程
三元:val max = if (a > b) a else bfun OfferType.Companion.fromString(str: String?): OfferType {//字符串可能为空 if (str?.isBlank() == true) { return OfferType.STUDIO_FLOW } for (type in OfferType.values()) if (type.str.eq...
2022-04-06 09:27:02 3509
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人