- 博客(459)
- 资源 (15)
- 收藏
- 关注
原创 常见web漏洞
漏洞介绍所谓SQL注入(SQLInjection),就是通过把SQL命令插入到Web表单提交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令。具体来说,它是利用现有应用程序,将(恶意)的SQL命令注入到后台数据库引擎执行的能力,它可以通过在Web表单中输入(恶意)SQL语句得到一个存在安全漏洞的网站上的数据库,而不是按照设计者意图去执行SQL语句。场景举例1.将用户的输入直接拼接到SQL语句中查询攻击者可以构造恶意的SQL语句,对数据库进行增删改查操作。
2025-08-25 20:43:54
946
原创 go语言实现协程池
该代码实现了一个Go语言协程池(GoPool),主要功能包括:1) 通过任务队列管理并发任务;2) 控制最大协程数量;3) 提供任务完成等待机制。GoPool结构包含任务通道、互斥锁、最大协程数等字段,提供创建协程池、提交任务、关闭池子等方法。使用示例展示了如何创建5个worker的协程池并提交10个任务。协程池会自动管理工作协程,当worker不足时任务会排队,支持等待所有任务完成或立即关闭两种模式。
2025-08-01 15:42:15
276
原创 es搜索实现既能模糊查询又能分词查询
摘要:本文提供了三种在Elasticsearch中实现既能分词查询又能模糊查询的方案。方案一通过添加keyword子字段,同时支持分词搜索和模糊搜索;方案二使用自定义分词器实现多粒度分词;方案三结合match和wildcard查询,通过bool.should组合查询条件。三种方案均能解决单字搜索不匹配的问题,其中方案一和方案三还提供了代码实现示例,便于开发者快速应用。这些方法可根据具体场景选择,有效提升搜索体验。
2025-07-22 17:22:08
454
原创 go的errgroup和协程池
Go语言并发任务处理方案对比:errgroup适合批量任务管理,提供统一错误处理和上下文取消,但不控制并发数;协程池(如ants)则适用于严格限制并发数、复用goroutine资源的场景,能有效应对大量短任务、资源限制和任务队列需求。errgroup的协程生命周期取决于任务完成情况或上下文取消,而协程池可动态调整大小并支持任务超时控制。两者各有侧重,应根据CPU/IO密集型任务特点合理选择并发方案。
2025-06-19 11:44:25
552
原创 go在for循环中使用errgroup和channel进行并发处理
文章摘要: 本文对比了Go语言中处理并发任务的两种主要方式:errgroup和channel。errgroup提供了与context集成的并发控制机制,能自动传播错误并取消其他协程,类似于Java的CompletableFuture。它支持并发限制、错误传播和上下文取消。channel方式则通过创建错误通道和结果通道来收集处理结果,可以保持原有顺序,但需要手动管理协程同步。两种方式都支持共享资源的互斥访问,errgroup更适用于结构化并发,channel则更灵活但需要更多手动控制。
2025-06-17 14:54:03
349
原创 图数据库介绍及应用,go和Java使用图数据库
摘要:文章介绍了图数据库在处理复杂关系网络中的优势,对比了传统关系型数据库的局限性。重点讲解了原生图数据库Neo4j的特性,包括其底层存储结构、免索引邻接机制和Cypher查询语言。通过实例展示了Neo4j在创建节点、查询关系等操作中的应用,并提供了Golang和Java两种语言的连接示例代码。文章指出,对于社交网络、知识图谱等需要多跳关系查询的场景,图数据库相比传统数据库具有显著的性能优势。
2025-06-13 16:27:37
1006
原创 go工具库:hertz api框架 hertz client的使用
Hertz是由字节跳动开源的高性能Golang微服务框架,基于自研网络库netpoll,在延迟、QPS和内存占用等指标上优于标准库net/http。它提供灵活易用的中间件机制、可插拔组件设计,支持自动路由注册和多种序列化方式(JSON/Protobuf等),并内置服务治理能力(metrics、限流、熔断等)。框架兼容Gin风格,与CloudWeGo生态天然集成,适合构建微服务。文章详细介绍了Hertz的使用方法,包括创建标准/字节定制客户端、配置选项说明(超时/连接数/TLS等)以及发起请求的两种方式(Do
2025-06-07 15:22:07
1647
5
原创 go的工具库:github.com/expr-lang/expr
github.com/expr-lang/expr 是一个 Go 语言的表达式求值库,它允许你在运行时安全地执行表达式。主要用途包括:2.条件表达式3.复杂表达式主要特点:安全性:表达式在沙箱环境中执行性能:编译后的表达式执行速度快灵活性:支持自定义函数和变量类型安全:支持类型检查常见用途:规则引擎配置验证动态条件判断数据过滤业务规则执行。
2025-06-04 12:00:53
686
原创 go注册rpc接口
makeGRPCEndpoint 函数的目的是将一个 gRPC 服务方法封装为一个 endpoint.Endpoint 类型的函数。这个函数主要用于将 gRPC 请求转换为内部的服务调用,并处理相关的上下文和错误。这将生成两个文件:my.pb.go 和 my_grpc.pb.go。生成 gRPC 代码。
2025-03-11 14:31:11
390
原创 go程序中使用pprof增加程序监控功能
其中github.com/gorilla/mux 是 Go 语言中的一个非常流行的路由(Router)包,它提供了一个强大的 HTTP 路由器,能够帮助开发者更方便地定义 HTTP 路由规则,进行 URL 路由匹配、请求处理等操作。运行后,下载到本地的 CPU 分析数据文件为 cpu.pprof,然后可以使用 go tool pprof 进一步分析。启动程序后,访问 http://localhost:6060/debug/pprof/,查看提供的接口。2. 如何使用 pprof?Goroutine 状况。
2025-03-04 15:40:28
693
原创 go语言获取机器的进程和进程运行参数 获取当前进程的jmx端口 go调用/jstat获取当前Java进程gc情况
这里主要分享go中获取机器进程和进程参数的一些代码Process.CmdlineWithContext 方法的实现依赖于 callPsWithContext 函数来获取进程的命令行参数。
2025-02-13 16:09:29
716
原创 解决canaladaptor-1.1.7使用远程配置文件不生效的问题和用docker启动canal-adaptor
背景:canal-adaptor的配置文件有两种方式:一、直接使用本地配置文件的方式总配置文件 application.ymladapter定义配置部分二、使用远程配置的方式。使用canal_manager.sql脚本建表并初始化Demo数据,其中canal_config表id=2的数据对应adapter下的application.yml文件,canal_adapter_config表对应每个adapter的子配置文件修改bootstrap.yml配置。
2025-01-03 17:22:06
616
原创 centos系统如何安装kubectl和部署kube-apiserver
1.使用 yum 安装(推荐)添加 Kubernetes 软件源:首先,你需要添加 Kubernetes 的官方 YUM 软件源。这可以通过下载并安装 kubernetes.repo 文件来实现。shellcat <<EOFsudotee安装 kubectl:使用 yum 安装 kubectl。验证安装:验证 kubectl 是否正确安装,并检查版本。2.使用 curl 和 tar 安装下载 kubectl:使用 curl 下载最新版本的 kubectl。
2024-12-25 14:12:31
1041
原创 hbase mongodb hive starrocks比较
本文是在学习大数据的几个数据存储系统相关的组件所记录下来的,主要是不同组件的基础概念初步了解与对比。
2024-11-19 20:07:39
2211
1
原创 spring整合swagger时页面nested exception is java.lang.NoSuchMethodError: ‘void com.fasterxml.jackson.core.
打开swagger页面时报错: nested exception is java.lang.NoSuchMethodError: 'void com.fasterxml.jackson.core.util.BufferRecycler。再次启动,打卡swagger页面,成功了。检查配置,没什么问题。
2024-11-01 11:56:35
498
原创 【巨坑】maven版本导致下载包一直报下载不下来 Failed to execute goal on project: Could not resolve dependencyxxx
后面同事问我电脑maven版本是多少,看是3.9.6,跟我说高版本不支持http,只能https!真是太坑了没想到maven居然还有这样的陷阱今天又学到了。而且正好报的也是从这个地址下不下来,之后重新编译,然后就通过啦~~~
2024-10-10 10:58:39
359
原创 元数据管理gravitino学习
业界一直希望统一元数据,从而实现多产品间的一致体验:无论是数据开发、数据消费还是数据治理,所有用户都能基于一套元数据体系,可以在多个数据源和计算引擎之间建立联系,使用统一的服务来公开这些元数据。因为它提供了一个统一的元数据湖,标准化了数据目录操作,并统一了所有元数据管理和治理。“元数据湖”:在gravitino出现之前,业界还没有一个统一的“元数据湖”的组件,不同于数据湖,gravitino提出了“元数据湖”的概念,通过提供一个丰富的数据目录,Gravitino使得数据湖中的资源更加易于导航和理解。
2024-08-20 11:19:01
1985
原创 spark入门学习:spark SQL
Spark SQL是用于结构化数据处理的Spark模块。与基本的Spark RDD API不同,Spark SQL提供的接口为Spark提供了有关数据结构和正在执行的计算的更多信息。在内部,Spark SQL使用这些额外的信息来执行额外的优化。与Spark SQL交互的方式有多种,包括SQL和Dataset API。计算结果时,使用相同的执行引擎,与您用于表达计算的API/语言无关。为什么要有SPARK SQL:1)发展历史。
2024-08-09 12:09:29
1212
原创 spark入门学习:简介和基本原理
Apache spark是一个围绕速度、易用性和复杂分析构建的大数据计算框架。Scala是函数式语言,适合数据处理编程,并且其运行在 JVM 之上,可利用java生态资源。Akka基于Actor模型,提供了一个用于构建可扩展的(Scalable)、弹性的(Resilient)、快速响应的(Responsive)应用程序的平台。spark在1.6.0之后使用Netty替代了Akka,Netty基于Reactor线程模型,具有无锁化的串行设计,高效的序列化,零拷贝,内存池等特性。
2024-08-08 11:50:34
956
原创 hadoop大数据安全管理:ldap、keberos、ranger
hadoop大数据中认证一般用keberos,授权用ranger,kerberos和Ldap组件共同组成整个集群的安全鉴权体系,Ldap负责用户数据存储。kerberosKerberos 是一种网络认证协议,用于在不安全的网络中以安全的方式对用户和服务进行身份验证。它通过使用密钥加密技术来防止数据被窃听或篡改,确保了认证过程的安全性。kerberos所管理的一个用户或者服务叫Principal,其格式通常如下:primary/instance@realm。
2024-07-23 17:59:32
1845
原创 大数据hive表和iceberg表格式
iceberg表,是一种面向大型分析数据集的开放表格式,旨在提供可扩展、高效、安全的数据存储和查询解决方案。它支持多种存储后端上的数据操作,并提供 ACID 事务、多版本控制和模式演化等特性,使数据管理和查询更加灵活便捷。Iceberg 可以屏蔽底层数据存储格式上的差异,向上提供统一的操作 API,使得不同的引擎可以通过其提供的 API 接入。
2024-07-15 11:13:28
2551
原创 go获取正在运行的函数并及时捕获panic
因此,在使用 panic 和 recover 时,应该谨慎考虑是否真的需要它们,以及它们在程序中的作用。Go 语言中,panic 是一种运行时错误,它会导致当前 goroutine 立即停止执行,并开始逐层向上返回,直到被 recover 捕获或者程序崩溃。当 panic 发生时,defer 语句注册的函数仍然会被执行,这允许程序进行必要的清理工作,如关闭文件、释放资源等。通过使用 defer 和 recover,可以在发生 panic 时防止程序完全崩溃,允许程序优雅地处理错误。
2024-07-09 18:03:09
543
原创 springboot中在filter中用threadlocal存放用户身份信息
如果要重新修改请求内容,可以用HttpServletRequestWrapper,HttpServletRequestWrapper 是一个包装器类,它扩展了 HttpServletRequest 接口,允许你修改或扩展请求的处理。在调用 filterChain.doFilter 之前,你可以在 doFilter 方法中添加任何预处理逻辑,例如修改请求参数、更改请求路径、添加或修改请求头等。doFilter 方法的前两个参数代表当前的请求和响应对象,你可以在这个方法中读取请求数据、修改请求和响应。
2024-07-09 16:09:38
1004
原创 docker容器技术、k8s的原理和常见命令、用k8s部署应用步骤
容器借鉴了集装箱的概念,集装箱解决了什么问题呢?无论形状各异的货物,都可以装入集装箱,集装箱与集装箱之间不会互相影响。由于集装箱是标准化的,就可以把集装箱整齐摆放起来,装在一艘大船把他们都运走。有了集装箱,就再也不需要为各种货物单独准备专门运输的船了。如果把容器比作集装箱的话,应用就相当于集装箱里的货物。容器(Container):一种轻量级的虚拟化技术,这种技术允许操作系统上的用户空间被分割成几个独立的单元在内核中运行,彼此互不干扰。这样一个独立的空间,就称之为一个“容器”。
2024-07-04 17:28:24
1942
2
原创 kerberos认证:生成keytab文件并实现java代码用keytab登录hadoop集群
用户首先向认证服务器(AS)请求一个票据授权票(Ticket-Granting Ticket, TGT),然后使用 TGT 向票据授权服务器(Ticket-Granting Server, TGS)请求服务票据。Kerberos 是一种网络认证协议,用于在不安全的网络中以安全的方式对用户和服务进行身份验证。AS 是 Kerberos 认证过程中的第一个服务,负责验证用户的身份,并发放初始的 TGT。TGS 负责发放访问特定服务的票据。用户使用服务票据向目标服务进行认证,服务票据授权用户访问特定的服务。
2024-06-26 16:15:22
1379
原创 gorm的find和scan使用
在 GORM 中,.Find() 和 .Scan() 都可以用于检索数据库记录,但它们之间存在一些差异,并不完全等同于彼此。
2024-06-03 11:28:15
3715
原创 大数据主要组件HDFS Iceberg Hadoop spark介绍
NameNode:NameNode 是 HDFS 的主节点,负责管理文件系统的元数据,包括文件和目录的结构、文件到数据块(Block)的映射、数据块到数据节点(DataNode)的映射等。每行都是每个数据文件的详细描述,包括数据文件的状态、文件路径、分区信息、列级别的统计信息(例如每列的最大最小值、空值数等)、文件的大小以及文件中数据的行数等信息。通过这种架构,HDFS 在 Hadoop 3.x 版本中提供了更高的可用性、更高的存储效率和更好的可扩展性,更适应大数据处理的需求。
2024-03-22 16:32:44
2738
原创 StarRocks学习笔记
StarRocks是一款经过业界检验、现代化,面向多种数据分析场景的、兼容MySQL协议的、高性能分布式关系型分析数据库。StarRocks充分吸收关系型 OLAP 数据库和分布式存储系统在大数据时代的优秀研究成果,并在业界实践的基础上,进一步改进优化,架构升级和添加新功能,形成了全新的企业级产品。
2024-03-21 11:39:01
1420
原创 mysql存json数据时的查询办法
现在要查询InventoryMainTypeCode为xxx或者InventoryMainTypeName为xxx的数据:(这里以springboot+mybatis为例子)
2023-12-08 17:19:34
636
原创 rocketmq消息发送源码学习
消息发送流程主要的步骤:验证消息、查找路由、消息发送(包含异常处理机制)。代码:同步消息发送入口 DefaultMQProducer#send默认消息发送以同步方式发送,默认超时时间为3s。消息长度验证 消息发送之前,首先确保生产者处于运行状态,然后验证消息是否符合相应的规范,具体的规范要求是主题名称、消息体不能为空、消息长度不能等于0且默认不能超过允许发送消息的最大长度4M(maxMessageSize=102410244)。
2023-10-07 15:23:59
470
合工大分布式程序设计综合设计报告
2023-06-03
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅