自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 LightDB统一SQL

统一SQL代理驱动介绍应用程序将SQL语句发送到数据库中执行时,都会经过数据库驱动来转发,因此统一SQL可以在驱动层进行代理拦截,调用统一SQL改写模块,在应用程序的运行态完成改写,可以最大程度地避免修改应用程序的数据访问层代码。统一SQL改写模块是基于 Go 开发的 SQL 转换中间件,能够编译成被c/java/go等主流编程语言集成调用的动态库。因为每种编程语言和数据库系统都有其自己的驱动程序生态,因此统一SQL可以适用于c/java/go应用程序调用来实现SQL语句动态改写功能。

2025-10-18 18:31:23 634

原创 优化Go内存分配与GC行为

垃圾回收器(Garbage Collector, GC)是Go语言运行时的关键组件,负责自动管理内存的分配和释放。尽管Go的垃圾回收机制极大简化了内存管理的难度,但不当的内存分配模式仍会对程序性能产生影响。因此,理解和优化Go的内存分配与GC行为是开发高效应用程序的重要步骤。本文将深入探讨垃圾回收的机制、内存分配策略、常见优化手段以及实际应用中的调优。

2025-04-30 10:46:18 437

原创 使用pprof分析性能瓶颈

功能简介pprof可以分析程序的CPU使用率、内存分配情况、goroutine的运行状态等。生成的分析报告以火焰图、调用图等形式展示,帮助开发者直观地找到性能瓶颈。使用环境pprof适用于Go语言编写的应用程序,尤其是在需要提升程序执行效率和资源利用率的场景中。

2025-04-30 10:44:39 1108

原创 Go内存模型概述

在并发编程中,理解内存模型的运行机制对于开发高效和可靠的程序至关重要。Go语言的内存模型以简约而强大的设计著称,它提供了清晰的并发保证以及对内存访问的可预测控制。本文将深入探讨Go内存模型的基本概念、内存可见性、内存对齐与缓存机制,以及它与其他语言内存模型的比较。什么是内存模型:Go内存模型的目标:内存可见性原则:内存屏障:内存对齐:缓存机制:自动垃圾回收:逃逸分析:相似性:差异性:并发安全性:性能优化:Go的内存模型提供了一个简洁而强大的工具集,使得开发者可以在并发环境中安全且高效地进行内存操作。理解和应

2025-04-30 10:42:58 624

原创 深入sync包:Mutex与RWMutex的应用

在并发编程中,掌握对共享资源的访问控制是至关重要的。Go语言的sync包提供了一组强大的工具,如Mutex和RWMutex,用于安全地管理共享资源的并发访问。这些工具可帮助开发者避免竞态条件和死锁,提高程序稳定性和性能。本文将深入探讨Mutex和RWMutex的工作机制、应用场景及注意事项。

2025-04-30 10:36:33 602

原创 使用WaitGroup进行Goroutines的同步

在Go并发编程中,管理和同步多个Goroutines的执行是一项常见的需求。Go语言的syncWaitGroup,用于跟踪和等待一组Goroutines的完成。本文将深入探讨WaitGroup的基本概念、使用方法、常见场景及注意事项。

2025-04-30 10:31:47 407

原创 通信的桥梁

Channel是Go中的一种引用类型,用于在Goroutines之间传递类型化的消息。它们遵循了“通过通信共享内存”的并发哲学,而非“通过共享内存进行通信”。

2025-04-30 10:29:42 487

原创 Goroutines的深入探索

Goroutines是Go语言提供的一种轻量级并发结构,是Go并发模型的核心。它们的简单性和高效性使得Go成为构建高性能并发应用程序的理想选择。本文将深入探讨Goroutines的实现、调度、性能以及使用注意事项。

2025-04-30 10:28:17 452

原创 Go并发模型基础与Goroutines入门

Go语言的并发模型通过Goroutines、Channels以及内建调度器,为开发者提供了一种轻量、高效和易于使用的并发编程工具。它适合各种类型的应用程序,无论是简单的脚本还是复杂的分布式系统,都可以通过这种并发机制来实现高效执行。通过全面掌握Go的并发特性,可帮助开发者有效提升应用程序的性能和响应能力。

2025-04-30 10:26:33 547

原创 Java多线程基本介绍

Java多线程编程是Java开发中的核心技能,掌握多线程技术可以:提高程序性能改善用户体验更好地利用硬件资源但同时也带来复杂性:线程安全问题死锁风险性能调优挑战建议开发者在实际项目中:优先使用高级并发工具(如线程池、并发集合)编写线程安全的代码进行充分的并发测试使用性能分析工具(如JProfiler、VisualVM)调优。

2025-04-30 10:21:22 874

原创 深入理解Java类加载机制

Java类加载机制是Java虚拟机(JVM)将类的.class文件加载到内存,并对数据进行校验、转换解析和初始化,最终形成可以被JVM直接使用的Java类型的过程。这一机制是Java实现"一次编写,到处运行"特性的关键所在。全盘负责:当一个类加载器负责加载某个类时,该类所依赖和引用的其他类也将由这个类加载器负责加载父类委托:先让父类加载器尝试加载,只有在父类加载器无法加载时才尝试从自己的类路径中加载缓存机制:加载过的类会被缓存,当程序需要某个类时,类加载器先从缓存区寻找。

2025-04-30 09:50:03 1074

原创 虚拟机垃圾回收

  JVM 内存模型一共包括三个部分:堆 ( Java代码可及的 Java堆 和 JVM自身使用的方法区)、栈 ( 服务Java方法的虚拟机栈 和 服务Native方法的本地方法栈 ) 和 保证程序在多线程环境下能够连续执行的程序计数器。特别地,我们当时就提到Java堆是进行垃圾回收的主要区域,故其也被称为GC堆;而方法区也有一个不太严谨的表述,就是永久代。总的来说,堆 (包括Java堆 和 方法区)是 垃圾回收的主要对象,特别是Java堆。实际上,Java技术体系中所提倡的 自动内存管理 最终可以归结为自

2025-04-30 09:44:29 590

原创 JVM介绍

内存效率:复制算法》标记清除算法》标记压缩算法(时间复杂度)内存整齐率:复制算法=标记压缩算法》标记清除算法内存利用率:标记压缩算法=标记清除算法》复制算法有没有最优的算法:没有最好的算法,但是只有最合适的使用GC也被称为:房贷收集算法年轻代存活率低,复制速度快,适合用复制算法老年代:区域大,存活率高,使用标记清除加标记压缩混合实现。

2025-04-30 09:14:03 1104

原创 深入理解Java多线程编程

Java多线程是Java核心技术的重要组成部分,主要通过类和包实现。

2025-04-29 21:46:46 186

原创 Go项目结构与依赖管理

【代码】Go项目结构与依赖管理。

2025-04-29 21:42:29 129

原创 Go测试与性能分析

测试文件以_test.gogo test。

2025-04-29 21:35:43 229

原创 Go标准库常用包

【代码】Go标准库常用包。

2025-04-29 21:31:53 166

原创 Go并发编程基础

轻量级线程,使用go。

2025-04-29 21:29:15 219

原创 Go错误处理

return fmt.Sprintf("无法计算 %.2f/%.2f", e.a, e.b)

2025-04-29 21:17:22 132

原创 Go方法与接口

【代码】Go方法与接口。

2025-04-29 21:15:41 201

原创 Go复合数据类型

固定长度的相同类型元素集合:切片(Slice)动态数组,更常用:映射(Map)键值对集合:结构体(Struct)自定义复合类型:

2025-04-29 21:13:48 205

原创 Go流程控制与函数

1.基本的for循环。

2025-04-29 21:09:28 162

原创 Go基础语法与数据类型

Go是静态类型语言,变量必须先声明后使用。派生类型:指针、数组、结构体、函数、接口等。

2025-04-29 21:05:45 194

原创 Go语言简介与环境搭建

Go语言(又称Golang)是Google开发的一种静态强类型、编译型、并发型编程语言。它具有以下特点:简洁的语法高效的编译和执行速度内置并发支持强大的标准库垃圾回收机制跨平台支持。

2025-04-29 21:01:10 213

原创 SQL——查询sql执行顺序

需要注意的是,这个物理执行顺序是数据库内部优化过程的结果,对于编写查询的开发者来说,通常不需要直接关心。例如,了解WHERE子句在GROUP BY之前执行,可以帮助开发者确保WHERE子句尽可能高效地过滤掉不需要的数据,从而减少对后续步骤(如GROUP BY和ORDER BY)的数据处理量。在SQL查询中,虽然我们在编写查询时遵循一定的逻辑顺序(SELECT, FROM, WHERE, GROUP BY, HAVING, ORDER BY),但实际上,数据库在执行这些查询时遵循的是不同的物理执行顺序。

2024-08-01 20:58:52 605

原创 PostgreSQL——libpq基础概述

Libpq是PostgreSQL数据库的重要组成部分,它为客户端程序提供了一种高效、可靠的方式来与PostgreSQL数据库进行交互。通过libpq,开发人员可以轻松地实现数据库连接、查询执行、事务处理和错误处理等功能,从而构建出功能强大、性能优越的数据库应用程序。

2024-07-31 17:58:34 1464

原创 PostgreSQL——Wal文件

PostgreSQL中的WAL(Write-Ahead Logging,预写式日志)文件是数据库持久性机制的重要组成部分。

2024-07-31 17:48:35 1760

原创 PostgreSQL——存储过程、函数

PostgreSQL(简称PG)是一个功能强大的开源对象-关系数据库系统,支持几乎所有的SQL标准并且提供了许多其他现代特性。在PostgreSQL中,存储过程和函数是数据库编程的重要组成部分,它们允许用户封装复杂的数据库操作逻辑,以提高代码的重用性、减少网络传输的数据量,并增强数据库操作的安全性。

2024-07-31 16:35:24 4410

原创 PostgreSQL——ecpg基本介绍

ECPG(Embedded C PostgreSQL)是PostgreSQL数据库自带的一个命令行工具,它允许开发者在C语言程序中嵌入SQL语句,从而简化与PostgreSQL数据库的交互。

2024-07-31 16:02:22 1460

原创 PostgreSQL——查询扫描介绍

顺序扫描(Sequential Scan)是PostgreSQL中一种基本的数据检索方式,它通过按顺序读取表中的所有页面来查找满足查询条件的记录。这种方式不依赖于索引,因此在某些情况下可能是唯一的选择,尤其是当表没有合适的索引或查询需要返回大量数据时。在PostgreSQL中,索引扫描是一种高效的数据检索方式,它利用表上的索引来快速定位满足查询条件的记录。索引是数据库中的一种特殊结构,可以看作是表中数据的快速查找路径。通过索引,数据库可以快速地定位到表中的特定行,而无需扫描整个表。

2024-07-31 15:29:17 1167

原创 PostgreSQL——tsearch全文搜索

全文搜索(文本搜索)提供了一种可以检索出满足某个查询条件的自然语言文档的能力,并且还可以根据文档的相关性对文档进行排序。最常见的搜索是找出所有包含给出的查询词的文档,并且以它们符合查询的程度排序输出。文本搜索操作符在数据库里已经存在很多年了。PostgreSQL有~、~*和LIKE操作符用于文本数据类型,但是它们缺乏许多现代的信息系统需要的重要功能。

2024-07-31 14:54:44 1846

原创 PostgreSQL——锁介绍

PG数据库的锁机制是确保数据库并发访问和数据一致性的重要手段。通过不同类型的锁,PG能够灵活地控制对数据库资源的访问,满足不同应用场景的需求。在实际应用中,需要根据具体的业务场景和需求选择合适的锁类型和策略,以优化数据库的性能和可靠性。

2024-07-30 21:11:52 1037

原创 postgrsql——事务概述

事务被视为一个整体,其中的操作要么全部执行成功,要么全部不执行,即不存在部分执行的情况。这确保了事务的完整性和一致性。

2024-07-29 22:51:22 1499

原创 lightdb——约束

约束(Constraints)是对表中数据的限制条件,用于确保数据的准确性和可靠性。它们定义了表中数据的规则,这些规则在数据插入、更新或删除时由数据库自动检查。如果尝试插入或更新违反约束的数据,数据库将拒绝该操作并返回一个错误。

2024-07-29 22:39:13 239

原创 数据库的mvcc概述

数据库的MVCC(Multi-Version Concurrency Control,多版本并发控制)框架是一种用于解决数据库读写冲突的技术,它通过创建数据的多个版本来实现读写操作的并发执行,避免了传统锁机制中的阻塞和死锁问题。

2024-07-28 22:37:36 495

原创 SQL——基本操作

综上所述,SQL语言以其标准化、功能强大、易于学习、高效处理数据以及广泛应用等特点,在数据库领域占据了举足轻重的地位。随着大数据和云计算技术的不断发展,SQL语言也在不断演进和完善,以适应新的应用场景和技术需求。对于任何从事数据库管理和开发工作的人员来说,掌握SQL语言都是一项必备的技能。DDL(Data Definition Language)用于定义和修改数据库的结构。主要操作包括创建、修改和删除数据库、表、索引等。创建数据库创建表删除表修改表结构。

2024-07-28 22:22:39 1064

原创 SQL——基础概念

DDL(Data Definition Language)用于定义和修改数据库的结构。CREATE:用于创建新的数据库、表、索引等。ALTER:用于修改现有数据库的结构,如添加、删除或修改表中的列。DROP:用于删除数据库、表、索引等。SQL语句的基础概念包括数据库、表、行、列、数据类型等基本概念,以及DDL、DML、DQL和DCL等基本操作。掌握这些基础概念对于理解和使用SQL语言至关重要。

2024-07-28 22:16:37 785

原创 PostgreSQL数据库概述

数据库(Database)是一个用于存储、检索和管理数据的集合。它按照数据结构来组织、存储和管理数据,使得这些数据能够高效地被各种用户或程序访问和处理。数据库是信息系统(如企业资源规划、客户关系管理、内容管理系统等)的核心组成部分,用于存储和管理大量的结构化数据。数据结构化:数据库中的数据不是随意存放的,而是按照一定的数据模型组织起来的,这种模型可以是层次模型、网状模型、关系模型等。其中,关系模型是当前使用最广泛的数据库模型,它通过表格(Table)来存储数据,表格之间通过关系(如外键)相互关联。

2024-07-28 22:09:49 1352

原创 C——gcc编译

GCC(GNU Compiler Collection)是一套由GNU项目开发的编译器集合,它支持多种编程语言,但最著名的是其C和C++编译器。GCC是开源的,并且在Linux、macOS、Windows等多个平台上都有广泛的应用。它以其高性能、灵活性和对多种硬件架构的支持而著称。GCC编译一个程序通常涉及几个步骤,这些步骤被统称为“编译过程”。对于C或C++程序,这个过程通常包括预处理(Preprocessing)、编译(Compilation)、汇编(Assembly)和链接(Linking)。

2024-07-28 21:10:16 1271

原创 C——宏定义

没参数的宏在C语言中,可以采用命令#define来定义宏。该命令允许把一个名称指定成任何所需的文本,例如一个常量值或者一条语句。在定义了宏之后,无论宏名称出现在源代码的何处,预处理器都会把它用定义时指定的文本替换掉。惯例将宏名称每个字母采用大写,这有助于区分宏与一般的变量。通常情况下,程序中往往多次用到数组(例如上述data)的长度,例如,采用数组元素来控制for循环遍历次数。

2024-07-28 21:00:16 1272

空空如也

空空如也

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

TA关注的人

提示
确定要删除当前文章?
取消 删除