tanzhuo

tanzhuo

专研技术的程序员

Ent-ORM

前言 Ent是由Facebook开发的一个基于Go语言的ORM框架,最初是作为Facebook内部项目而开发的。Ent最初的目标是为社交网络平台提供高效、可靠的数据访问和操作,后来被开源,成为了一个广受欢迎的Go语言ORM框架。 GitHub - ent/ent: An entity framework for GoAn entity framework for Go. Contribute to ent/ent development by creating an account on GitHub.GitHubent 框架的优势 1.高效性能:Ent采用了代码生成器,生成的代码非常高效,减少了ORM框架的性能损失。 2.易于使用:Ent提供了易于使用的查询构建器,可以轻松地构建复杂的查询语句。 3.可扩展性:Ent易于扩展,可以轻松地添加自定义的字段类型、查询操作和验证规则。 4.类型安全:Ent使用Go语言的类型安全来确保代码的正确性,
2 min read

Kratos

前言 Kratos是一款基于Go语言的开源微服务框架,由Bilibili开源并维护。提供了微服务所需的服务发现,注册,HTTP,GRPC,限流,配置中心等常用功能。框架设计合理,轻量,易上手。 框架优点 1. 高性能 Kratos框架使用Go语言的协程和高效的并发模型,能够支持高并发场景。此外,Kratos框架还使用了自研的GRPC框架,相比其他框架,能够更快地处理请求和响应。 2. 简单易用 Kratos框架提供了丰富的文档和示例,易于上手。框架的设计也非常简单,不需要开发者掌握过多的概念和技术。 3. 模块化设计 Kratos框架提供了一系列的模块,如配置、日志、数据库等,方便开发者快速搭建微服务。此外,Kratos框架还支持插件化开发,可以根据需要自行开发插件,扩展框架的功能。 4. 高度可定制化 Kratos框架提供了丰富的配置选项,可以根据不同的需求进行定制化配置。此外,Kratos框架还支持自定义中间件、拦截器等,开发者可以根据需要进行自行开发。 KratosKratos 具体功能 1. 微服务注册与发现:
4 min read

Neo4j 图形数据库

前言 Neo4j是一款高性能的图数据库,它采用了图形数据模型来存储和处理数据。与传统的关系型数据库相比,Neo4j具有更高的可扩展性和更高效的查询性能,特别适用于需要处理复杂关系数据的应用场景。 Neo4j Graph Database & Analytics – The Leader in Graph DatabasesConnect data as it’s stored with Neo4j. Perform powerful, complex queries at scale and speed with our graph data platform.Graph Database & Analytics Neo4j的收费模式分为两种:开源版和企业版。开源版是免费的,可以用于个人或小型项目。企业版则需要付费,提供更多高级功能和技术支持。 主要功能 图形数据存储和查询:Neo4j使用图形数据模型来存储数据,可以轻松处理复杂的关系数据。 高效的查询性能:由于采用了图形数据模型,
2 min read

数据库分类

数据模型分类 * 关系型数据库(RDBMS):以表格形式存储数据,使用 SQL 语言进行查询和操作。 * 非关系型数据库(NoSQL):不使用传统的关系型数据模型,而是采用其他数据模型,如文档型、键值对、列式、图形等。 处理方式分类 * 事务型数据库:支持事务处理和 ACID 特性(原子性、一致性、隔离性、持久性)。 * 非事务型数据库:不支持事务处理和 ACID 特性,但具有更高的性能和可扩展性。 部署方式分类 * 单机数据库:数据存储在单台计算机上,适用于小型应用。 * 分布式数据库:数据存储在多台计算机上,通过网络进行通信和协作,适用于大型应用和高并发场景。 存储方式分类 * 内存数据库:数据存储在内存中,查询和操作速度非常快,但数据容量受限。 * 磁盘数据库:数据存储在磁盘上,容量较大,但查询和操作速度相对较慢。 访问方式分类 * OLTP 数据库:面向事务型处理,
3 min read

防重复提交

使用Token令牌机制可以有效地防止CSRF攻击和重复提交。在提交表单时,服务器会生成一个Token令牌,并将其存储在Redis中。然后,将这个Token令牌作为表单的一个隐藏字段或URL参数传递给客户端。客户端提交表单时,将这个Token令牌一并提交给服务器。服务器在处理表单时,会检查这个Token令牌是否正确,并在处理完表单后删除这个Token令牌。这种方式可以有效地防止重复提交和CSRF攻击,但是需要注意保护Token令牌的安全性,否则可能会被攻击者利用。 Token令牌机制是一种常用的Web应用程序防止重复提交和CSRF攻击的方法。它的基本思想是在每次提交表单时,服务器会生成一个Token令牌,并将其存储在Redis中。然后,将这个Token令牌作为表单的一个隐藏字段或URL参数传递给客户端。客户端提交表单时,将这个Token令牌一并提交给服务器。服务器在处理表单时,会检查这个Token令牌是否正确,并在处理完表单后删除这个Token令牌。 Token令牌机制的实现步骤如下: 在服务器端生成一个Token令牌,并将其存储在Redis中。Token令牌可以使用随机数、UUI
3 min read

Docker 原理

Docker 内部架构可以分为以下几个组件: 组件 描述 Docker Daemon Docker 的主要组件,是一个守护进程,负责管理容器的创建、启动、停止、删除等操作。 Docker Client 与 Docker Daemon 交互的命令行工具,用户可以使用该工具发送命令来操作 Docker 容器。 Docker Registry 存储 Docker 镜像的中央仓库,可以通过 Docker Client 从该仓库中拉取所需的镜像。 Docker Image 容器的基础,是一个只读的文件系统,包含了应用程序、依赖库和配置文件等。可以通过 Dockerfile 文件创建。 Docker Container Docker 镜像的一个实例,包含了一个完整的文件系统、运行时环境和系统工具。 Docker Daemon 和 Docker
6 min read

Mysql 时间四舍五入

MySQL的DATETIME类型是精确到秒的,而Java的LocalDateTime类型是精确到纳秒的。因此,在将MySQL的DATETIME类型存入Java的LocalDateTime类型时,会发生四舍五入的情况。 例如,如果MySQL的DATETIME类型为2022-01-01 12:34:56.789,当它被存入Java的LocalDateTime类型时,会被四舍五入到2022-01-01 12:34:57。 为了避免这种情况,可以使用Java的java.sql.Timestamp类型来存储MySQL的DATETIME类型。这个类型也是精确到纳秒的,与LocalDateTime类型匹配,不会出现四舍五入的问题。
1 min read

数据结构:栈

栈(Stack)是一种先进后出(LIFO)的数据结构,它只允许在栈顶进行插入和删除操作。栈可以用数组或链表来实现。 在栈中,插入和删除操作通常称为入栈(push)和出栈(pop)。当插入一个元素时,它被放置在栈顶,当删除一个元素时,它是从栈顶删除的。栈顶是栈中最新添加的元素,栈底是栈中最早添加的元素。 栈的应用非常广泛,例如,计算机中的函数调用和递归调用都是通过栈来实现的。当一个函数被调用时,它的参数、返回地址和局部变量等信息被压入栈中,当函数返回时,这些信息又从栈中弹出。 以下是栈的基本操作: push(element):将一个元素压入栈顶。 pop():从栈顶弹出一个元素。 top():返回栈顶元素,但不对栈进行修改。 isEmpty():判断栈是否为空。 size():返回栈中元素的个数。 栈的时间复杂度为O(1),因为所有操作都是在栈顶进行的。但是,栈的空间复杂度为O(n),因为需要存储所有元素。 在计算机中,栈(Stack)被广泛应用于函数调用、
2 min read

数据湖 Iceberg

目前比较流行的开源数据湖 Iceberg。 数据湖是一个用于存储结构化和非结构化数据的集中式数据存储库,它可以存储各种类型的数据,包括传统的关系型数据、半结构化数据、非结构化数据等。数据湖的主要特点是具有高度的灵活性和可扩展性,能够方便地进行数据的存储和处理。 相比之下,传统的数据仓库主要用于存储结构化数据,它们通常采用关系型数据库进行存储和管理。数据仓库的主要特点是具有高度的规范化和结构化,能够保证数据的准确性和一致性。但是,数据仓库的缺点在于它们不够灵活,无法存储和处理非结构化或半结构化数据,而且难以进行扩展和升级。 数据湖相比数据仓库的优势主要有以下几点: 1. 存储不受限制:数据湖可以存储各种类型的数据,包括传统的结构化数据、半结构化数据、非结构化数据等。这使得数据湖更加灵活,适用于不同类型和规模的数据存储需求。 2. 处理速度更快:数据湖通常采用分布式存储和计算技术,能够实现高速数据处理和分析。而传统的数据仓库则往往需要进行多次数据转换和计算,导致处理速度较慢。 3. 成本更低:数据湖通常采用开源技术,如Hadoop、Spark等,成本相对较低,而传统的数据仓库
4 min read

Flink CDC 组件

Flink CDC(Change Data Capture)组件是 Apache Flink 的一个重要组成部分,它提供了一种轻松实现数据流变更捕获和同步的方法。在大数据领域,CDC是一个非常常见的技术,因为它能够帮助我们实现数据在不同系统之间的同步和数据的实时处理。 快速上手 — CDC Connectors for Apache Flink® documentation Flink CDC组件的工作原理是通过捕获源数据系统的变更日志,将其转化为数据流并进行实时处理。这个过程可以在不影响源系统的情况下进行,因为CDC组件只是读取源系统的日志,而不会对源系统进行写操作。 Flink CDC组件的优点在于它可以支持多种数据源,包括关系型数据库(如MySQL,Oracle等)和NoSQL数据库(如MongoDB,Cassandra等)。此外,它还能够支持多种数据格式,如JSON,CSV等。 使用Flink CDC组件可以实现实时的数据同步和数据流处理。例如,我们可以使用CDC组件将MySQL数据库中的数据同步到Kafka,然后使用Flink进行实时数据处理。这样就可以实现数据的实时
2 min read

随心笔记

技术无止境 创新不停驻