自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

who_I_am__的博客

一些乱七八糟的玩意

  • 博客(77)
  • 资源 (3)
  • 收藏
  • 关注

原创 微信小游戏《2048&俄罗斯方块》开发实录(含源码)

《像素谜阁》是一款融合6款经典游戏的微信小游戏合集,包含连连看、数独、2048、俄罗斯方块、扫雷和切水果。采用像素复古风格,支持渐进式难度,满足不同玩家需求。开发历时2个月,使用Phaser2引擎和TypeScript语言,面临包体大小限制、审核流程等挑战。经过多次优化和5次审核提交,最终成功上线,为玩家带来多种经典游戏体验。

2025-10-14 22:40:55 402

原创 RedisTemplate 实现分布式锁

本文介绍了基于RedisTemplate实现的分布式锁解决方案,包含基础版和增强版两种实现。基础版提供简单的获取和释放锁功能,使用SET NX EX命令获取锁,通过Lua脚本保证释放锁的原子性。增强版新增了重试机制和自动续约功能,支持在指定时间内自动重试获取锁,并通过定时任务实现锁续约,防止业务处理时间过长导致锁过期。两种实现都通过请求标识(requestId)确保只有锁持有者才能释放锁,并提供完善的异常处理和日志记录。该方案适合分布式系统中需要协调共享资源访问的场景,如订单处理、库存扣减等,能有效解决分布

2025-10-11 10:27:45 286

原创 Vala编成语言高级特性-配置文件

Vala编译器支持通过--profile选项选择不同运行时环境配置:默认的gobject配置依赖GLib运行时类型系统,而libc配置则完全移除GLib依赖,仅需C标准库子集,适用于微控制器等资源受限环境。posix配置当前是libc的别名。配置选择会影响可用语言特性,若使用不兼容特性会报错。该机制允许开发者针对不同运行环境(从完整GLib到最小C库)生成代码,但通过--pkg指定的库仍需满足其运行时依赖。

2025-10-06 15:10:36 192

原创 Vala 编成语言高级特性-非对象类和D-Bus集成

Vala语言支持两种类:非对象类(轻量化设计,直接从GLib类型系统派生,适用于性能敏感场景)和标准对象类。文章重点展示了如何通过D-Bus集成创建服务,包括使用DBus属性注释类、注册服务实例和启动主循环的方法。示例代码演示了一个完整的D-Bus服务实现,包含属性、信号和方法的导出,并介绍了如何从命令行调用这些方法。文章还提供了编译和调试的实用建议,展示了Vala在系统集成方面的便捷性。

2025-10-06 15:07:47 395

原创 Vala编成语言高级特性-可变长度参数和指针

Vala支持C风格的可变参数列表和指针操作。可变参数通过省略号声明,需配合va_list()解析参数,但存在类型不安全问题,建议优先使用数组。指针操作允许手动内存管理,通过new/delete控制对象生命周期,提供类似C的取地址(&)和间接引用(*)运算符。对于引用类型,指针操作与无主引用效果相同。这些特性主要用于优化性能或与C库交互,一般情况下建议使用Vala的自动内存管理机制。

2025-10-06 14:59:53 453

原创 Vala编程语言高级特性-弱引用和所有权

Vala采用自动引用计数进行内存管理,通过引用计数增减控制对象生命周期。当存在循环引用时(如父子节点互指),需使用weak修饰符打破循环。无主引用(unowned)不增加引用计数,适用于方法返回值和属性,但需注意其生命周期管理。owned关键字用于所有权转移,可避免非引用计数类的复制。属性默认返回无主引用,使用owned修饰符可强制返回拥有所有权的引用。合理使用这些机制可有效管理内存,避免泄漏或悬垂指针问题。

2025-10-01 23:28:22 672

原创 Ubuntu 添加右键“复制全路径”菜单

这篇文章介绍了一个实用的Nautilus文件管理器脚本,用于快速复制文件或文件夹路径。该脚本通过右键菜单操作,将选中文件或当前目录的完整路径复制到剪贴板,并显示通知提示。配置步骤包括创建脚本目录、编写Shell脚本、设置执行权限以及安装必要的xclip工具。这个功能特别适合开发者、系统管理员和普通用户,能显著提升文件路径处理的效率,是一个"用了就回不去"的实用工具。

2025-09-29 22:48:10 473

原创 Vala编程语言高级特性-异步方法

本文介绍了异步方法的概念及其在Vala语言中的实现。异步方法通过async关键字定义,允许程序在等待耗时操作时暂停执行而不阻塞主线程。它们通常依赖GLib主事件循环,但特定条件下可不使用。异步方法通过yield交出控制权,并通过回调机制恢复执行。文章详细说明了异步方法的声明、调用方式(begin/end模式)以及三种常见的yield用法:空闲回调、存储回调和嵌套异步调用。最后提到后台线程可通过Idle.add()安全地恢复主线程中的异步方法执行。

2025-09-29 22:12:07 914

原创 Vala编程语言高级特性-主循环

GLib提供了一种基于MainLoop的事件循环机制,允许程序异步响应事件而无需轮询检查。文章展示了两种实现方式:纯GLib示例创建主循环并添加定时器事件,2秒后触发回调退出循环;GTK+版本则通过Gtk.main()自动管理主循环,使用类似方式添加定时器。此外还介绍了IdleSource用于非紧急任务处理。两种实现均演示了事件驱动的编程模型,适用于GUI等需要异步响应场景。

2025-09-29 14:00:18 263

原创 Vala编程语言高级特性-多线程

Vala支持多线程编程,通过Thread类创建新线程执行指定函数。主线程需调用join()等待子线程完成,否则程序会直接终止。线程间共享数据时,使用lock关键字防止竞态条件,确保数据同步。示例展示了通过锁定成员变量实现线程安全操作。注意UNIX环境的线程兼容性问题,多数情况下可忽略线程支持检测。Vala的线程管理依赖于运行环境,无法保证线程执行顺序,建议配合事件循环和异步队列实现更复杂的线程协作。

2025-09-29 13:52:06 421

原创 Vala 编程语言高级特性-具有语法支持的方法

Vala语言通过特殊方法名和签名提供语法支持,如contains()方法支持in操作符,get()/set()方法实现索引器,iterator()支持foreach迭代。这些方法包括:索引访问(get/set)、切片(slice)、字符串转换(to_string)等。迭代器协议要求实现next()/get()或next_value()方法。示例EvenNumbers类展示了这些特殊方法的实现,包括索引访问、包含判断、字符串表示和迭代功能,通过标准语法调用这些特殊方法。

2025-09-29 00:02:34 434

原创 Vala编程语言高级特性-集合

Gee是一个用Vala编写的集合类库,提供类似Java类库的集合功能。它包含列表、集和映射三种基本类型,分别实现List、Set和Map接口。所有集合类型都支持泛型,并实现了Iterable接口以便遍历。常用类包括基于动态数组的ArrayList、使用哈希表的HashMap和HashSet。用户可通过自定义哈希函数和相等判断函数来调整集合行为。此外,Gee还提供只读视图功能,通过read_only_view属性获取不可修改的集合视图。使用Gee需要单独安装,并在编译时添加--pkg gee-0.8参数。

2025-09-28 10:42:32 280

原创 Vala编程语言高级特性-参数方向

Vala语言中方法参数传递机制:值类型默认复制传递,引用类型默认传递引用。使用out修饰符允许传递未初始化变量,方法必须初始化它;使用ref修饰符要求传递已初始化变量,方法可选修改。示例展示了值类型和引用类型参数在三种传递方式下的不同行为:普通参数修改不影响调用方,out参数强制初始化,ref参数保持引用关系。特别注意引用类型out参数返回新引用,若未赋值将被设为null。

2025-09-27 20:38:14 224

原创 Vala编程语言高级特性-错误处理

摘要:Vala的GError系统用于处理可恢复的运行时错误,而非可预见的参数错误。错误包含域、代码和消息三部分,需通过errordomain定义。Vala要求处理受检异常但仅警告未捕获错误。典型用法包括:声明throws方法、抛出throw异常、try-catch捕获处理。可通过is运算符比较错误代码,finally块确保资源释放。示例展示了多错误域的定义、抛出和分层处理机制。

2025-09-27 20:30:49 293

原创 Vala编程语言高级特性- 断言和契约编程

Vala语言提供了断言和契约编程支持。断言通过assert(condition)语法实现运行时检查,失败时终止程序,GLib还提供了assert_not_reached()等扩展方法。Vala会自动检查非空参数,无需手动断言。契约编程方面,方法可定义requires前置条件和ensures后置条件,使用result变量表示返回值。这些特性帮助开发者确保程序正确性,同时减少冗余代码。

2025-09-27 20:23:36 246

原创 Vala编程语言基础-GObject风格构造

Vala支持GObject风格的构造方案,引入了构造属性、Object(...)调用和construct块等新语法元素。构造方法通过Object(...)调用来设置构造属性,这些属性必须声明为construct或set属性。construct块在实例创建时自动执行,可用于初始化操作。构造属性分为只构造、读/写构造等类型,通过get/set/construct修饰符控制访问权限。此外,static construct块用于类注册时的初始化。这种方案提供了灵活的构造方式,适合熟悉GObject开发的程序员使用。

2025-09-27 17:12:07 308

原创 Vala编程语言基础-动态类型转换和泛型

Vala语言支持动态类型转换和泛型系统。动态类型转换通过"as"操作符实现,在运行时进行类型检查,失败则返回null。泛型系统允许在定义类时限制类型,运行时处理类型信息,采用类似Java的"类型擦除"机制而非C++的模板实例化方式。泛型类实例共享静态成员,子类优化的泛型可作为父类泛型使用。示例展示了Wrapper泛型类的定义和使用,并说明了Vala通过类型擦除实现的类型兼容性特性。

2025-09-27 12:48:53 325

原创 Vala编程语言基础-运行时类型信息

Vala在运行时支持类型检查与实例创建。通过is运算符可检查对象类型,get_type()方法能获取实例的类型信息。使用typeof()获取类型后,可用Object.new()创建新实例,此时会调用类中定义的construct{}块作为构造函数。这些特性提供了动态类型操作能力,支持运行时类型信息查询和对象实例化。

2025-09-27 11:56:50 274

原创 Vala编程语言基础-方法隐藏

方法隐藏通过new修饰符实现,允许派生类用同名新方法隐藏继承的方法。与重写不同,方法隐藏是静态的(编译时决定),不具备多态性。可通过类型转换访问被隐藏的基类方法。例如,派生类Bar用new隐藏了基类Foo的my_method(),调用时需转换类型才能访问原始方法。这与override重写有本质区别,后者是动态的运行时多态行为。

2025-09-27 11:51:53 242

原创 Vala 编程语言教程-多态

多态性指‌‌的能力。在 Vala 中,子类实例可被当作父类或接口类型操作,但通过虚方法机制可实现‌‌。

2025-03-29 17:59:25 604

原创 Vala编程语言教程-抽象类和接口

/ 定义接口 ITest(需继承 GLib.Object)set;} // 抽象属性// 抽象方法// 实现接口 ITest 的类set;} // 必须实现接口属性public void method_1() { // 必须实现接口方法// 方法逻辑// 使用示例// 通过接口类型操作实例。

2025-03-29 16:50:28 419

原创 Vala 编程语言教程-继承

尽管实际开发中通常继承一个类(不同于 Java 等语言的隐式继承机制),但 Vala 并不强制要求必须继承。当定义继承自其他类的子类时,子类的实例与父类将形成 ‌。‌ 对象方法和数据的访问权限。在 Vala 中,一个类可以继承自 ‌。在类定义中,开发者可以 ‌。关键字调用父类构造函数(如示例中。的所有三个成员,但只能访问 ‌。

2025-03-28 22:36:22 359

原创 Vala编程语言教程-属性

在面向对象编程中,向类使用者隐藏实现细节是良好的实践(信息隐藏原则),这样您后续可以修改内部实现而不会破坏公共API。一种常见的做法是将字段设为私有,并通过访问器方法(getters 和 setters)提供值的获取和设置。这种方式可行,但Vala提供了更好的解决方案。问题在于这些方法使用起来较为繁琐。这种语法对C#程序员来说应该很熟悉。属性包含get和set代码块来获取和设置值,value是表示新值的保留字。现在您可以像访问公共字段一样使用属性,但实际执行的是get和set。

2025-03-28 21:24:54 596

原创 Vala编程语言教程-信号

类的第一个成员是名为 "sig_1" 的信号,定义时会传递一个整数。在程序的 main 方法中,我们首先创建 Test 实例(信号必须依附于类的实例)。定义声明该方法将接收两个参数 "t" 和 "a",但没有指定类型——这种简洁写法之所以可行,是因为 Vala 已知晓信号的定义,能自动推断所需类型。信号是 GLib 中 Object 类提供的系统,Vala 让所有 Object 的后代类都能轻松使用信号。处理器需要两个参数的原因是:每当信号被触发时,触发该信号的对象会作为第一个参数传递给处理器。

2025-03-27 21:37:07 756

原创 Vala编成语言教程-构造函数和析构函数

Vala支持两种略有不同的构造方案:我们将重点讨论Java/C#风格的构造方案,另一种是GObject风格的构造方案。Vala不支持构造函数重载的原因与方法重载不被允许的原因相同,这意味着一个类不能有多个同名构造函数。但这并不构成问题,因为Vala支持命名构造函数。你可以通过this()或。

2025-03-27 00:00:57 478

原创 Vala编程语言教程-面向对象编程语基础

类定义中可以包含另一个类的名称,表示新定义的类应该是这个类的子类。一个类也可以实现任意数量的接口,接口是一组必须由该类实现的方法定义——一个类的实例同时也是其自身类或超类所实现的每个接口的实例。类声明表明这个类是GLib.Object的子类,因此它的实例也是Object类型的实例,并且也包含了该类型的所有成员。成员first_data是public的,所以任何使用这个类的用户都可以直接看到它,并且可以在不被包含它的实例察觉的情况下修改它。第二个数据成员是private的,所以只能被属于这个类的代码引用。

2025-03-22 23:09:50 629

原创 Vala编程语言实战-基础练习题

技术点应用场景循环嵌套图形打印、乘法表递归算法斐波那契数列计算字符串处理大数运算对称结构处理菱形打印格式化输出对齐文本输出。

2025-03-22 09:55:50 341

原创 Vala编程语言教程-语言元素

在Vala中,函数无论是否定义在类内部均称为方法。下文将统一使用“方法”这一术语。此代码定义了一个名为的方法,接受两个参数(一个整数值,一个对象引用,传递方式如前述),并返回整数值1。所有Vala方法均为C函数,因此可接受任意数量的参数并返回一个值(若方法声明为void则不返回值)。通过将数据存放在调用方已知的位置,可近似实现多个返回值。Vala的方法命名约定为全小写字母加下划线分隔单词。这对习惯驼峰命名法的C#或Java程序员可能稍显陌生,但此风格能使Vala代码与C/GObject库保持统一。

2025-03-20 23:14:59 861

原创 Vala编程语言教程-控制结构

为确保这一点,每个非空case必须以break、return或throw语句结尾。根据条件执行特定代码块。第一个匹配的条件决定执行哪个代码块,如果a大于0则不会测试是否小于0。允许使用任意数量的else if块,以及零个或一个else块。break指令会立即终止循环,continue会直接跳转到迭代的测试部分。会先将a初始化为0,然后重复打印a直到a不小于10,每次迭代后递增a。会逐个打印数组或其他可迭代集合中的整数。会重复递减a,每次迭代前检查a是否大于b。会重复递减a,每次迭代后检查a是否大于b。

2025-03-20 22:55:03 268

原创 Vala编程语言教程-运算符

仅需一个操作数,且必须为简单数据类型的标识符。位移操作:根据右操作数指定的位数,对左操作数进行左移或右移。左操作数必须为标识符,运算结果将赋值给该标识符。位运算:或、异或、与、非。根据左右操作数是否满足描述的关系返回布尔值。左右操作数间算术运算,左操作数必须为标识符,运算结果将赋值给该标识符。检查右操作数是否包含左操作数。左操作数必须为标识符,右操作数必须为适当的值或引用。位移操作:根据右操作数指定的位数,对左操作数进行左移或右移。基础算术运算,作用于左右操作数。逻辑运算:非、与、或。

2025-03-18 21:43:39 374

原创 Vala编程语言教程-数据类型

所有声明为类的类型均为引用类型,无论它们是否继承自 GLib 的 Object。Vala 会确保当以引用方式传递对象时,系统将跟踪当前存活的引用数量以自动管理内存。未指向任何对象的引用值为。的机制,只要使用var关键字而不是给出具体类型来定义局部变量。类型是从赋值的右侧推断出来的。多维数组以行优先(Row-major)顺序存储。数组在内存中连续存储,可通过指针操作高效访问。‌:UTF-8,不可变(Immutable)赋值时共享对象,新标识符指向同一内存(如。(底层为整数值,非类形式)这一点与java类似。

2025-03-18 21:38:45 893

原创 Vala编程语言教程-语法和注释

‌‌。

2025-03-18 20:30:34 587

原创 2025 精选10款Linux系统推荐

近几年来,Linux桌面版的增长趋势显著,越来越多的用户开始选择Linux作为他们的主要操作系统。:Linux作为一个开源系统,用户可以自由下载、修改和分发,这种自由的特性吸引了越来越多的技术爱好者和开发者。用户不仅能体验到稳定和安全的操作环境,还能参与到系统的改进和创新中。:近年来,Linux的应用软件生态不断丰富,许多主流应用程序如浏览器、办公软件、开发工具等都提供了Linux版本。此外,一些流行的游戏也开始支持Linux,使其在多媒体和娱乐领域的吸引力增加。

2025-03-18 00:27:48 35608

原创 Vala语言基础知识-源文件和编译

‌——它没有类似Java的"包"(package)或"类文件"(class file)的概念,而是通过文件内的文本结构(例如命名空间)定义代码的逻辑位置,有点像C++的命名空间。编译时,您只需向Vala编译器提供所需的文件列表,编译器会自动处理它们之间的关联。‌在 C 代码中对应更冗长的结构体(struct)和函数操作,但 Vala 语法使其变得极其简洁。‌即可高效使用 Vala。)选项,它将不会直接将你的程序编译为二进制文件,而是会为每个 Vala 源文件生成对应的‌。不过,正如前文强调的——‌。

2025-03-17 23:48:48 700

原创 Vala教程-第一个程序(Hello world)

Vala 中的类在概念上与其他语言非常相似。类基本上是一种对象类型,可以创建其实例,所有实例都具有相同的属性。与C/C++/java/C#类似,main方法是应用程序的入口。static 方法意味着可以在不拥有该类型的实例的情况下调用该方法。是 Vala 编译器,它会将您的 Vala 代码编译成二进制文件。生成的二进制文件将与源文件同名,然后可以直接在计算机上执行。命名空间中的一个对象,Vala 确保您在需要时可以访问它。方法的执行,该方法也会终止程序的执行。方法的返回值作为程序的退出代码。

2025-03-17 23:29:51 360

原创 Vala 开发环境搭建

安装介绍Vala 是一种使用现代高级抽象的编程语言,与用 C 语言编写的应用程序和库相比,没有施加额外的运行时要求,也不需要使用不同的 ABI。Vala 使用 GObject 类型系统,并具有额外的代码生成例程,使面向 GNOME 堆栈变得简单。Vala 在需要本机二进制文件的地方还有许多其他用途。关于 Vala在编程语言的世界里,Vala是一种相对较新的语言,它旨在提供一个现代化的、面向对象的编程体验,同时保持与传统C语言的兼容性。

2025-03-17 23:06:48 935

原创 Linux shell 进度条

在 Linux Shell 中实现一个简单的进度条可以通过 printf 命令结合特殊字符来实现,以下是一个示例脚本,它模拟了一个从 0% 到 100% 的进度条。

2025-03-16 22:17:00 690

原创 Shell 脚本实现内存和磁盘监控

在Linux系统中,你可以使用 /proc/meminfo 文件获取内存信息,meminfo 是Linux系统中一个用于提供内存使用信息的虚拟文件。它包含了系统内存各个方面的详细统计数据,包含:MemTotal:表示系统总的物理内存大,小单位是KB。MemFree:指当前系统中尚未被使用的物理内存大小,单位为KB。:显示可供应用程序使用的内存数量,单位是KB。该值是一个估计值,考虑了系统中可回收的内存和缓存等因素,更能反映实际可用的内存情况。Buffers。

2025-03-15 12:18:33 527

原创 工作10多年了连git merge都不会用!

记录一次git的傻逼操作。

2023-12-04 19:32:00 632

原创 idea新建spring boot starter

Spring Boot Starter 是一种Maven 或 Gradle 依赖,它能够轻松地将相关库和框架集成到 Spring Boot 应用程序中。Starter 是一种对常见依赖项和设置的易于复用的封装,它们。你可以从 Spring 官网下载不同类型的 Starters,或者通过使用 Spring Initializr 在你的 Spring Boot 项目中添加 Starters。同时,你也可以编写自己的 Starter,用于封装自己的类库和框架,并帮助其他开发人员更容易地使用它们。

2023-12-03 15:25:59 1642

【Python编程】基于装饰器的函数功能扩展技术详解:实现日志、计时与权限验证的高阶编程方法

内容概要:本文详细讲解了Python装饰器的概念、实现方式及实际应用,从基础语法到高级用法层层递进。通过函数装饰器、类装饰器、带参数的装饰器等形式,展示了如何在不修改原函数代码的前提下为其添加额外功能,如日志记录、性能测试、权限验证和缓存等,并强调了使用functools.wraps保留函数元信息的重要性。同时介绍了装饰器的执行顺序和常见局限性。; 适合人群:具备一定Python编程基础,熟悉函数、闭包和面向对象概念的开发者,尤其是工作1-3年的研发人员; 使用场景及目标:①理解装饰器如何实现横切关注点的分离;②掌握在实际项目中应用装饰器进行日志、计时、权限控制和缓存优化等;③深入理解Python高阶编程技巧,提升代码复用性和可维护性; 阅读建议:学习时应结合代码示例动手实践,重点关注装饰器的嵌套机制、参数传递和实际应用场景,同时注意调试时可能因装饰器带来的调用栈变化。

2025-09-05

【数据库技术】MySQL关系型数据库管理:从基础CRUD到主从复制与分库分表架构设计

内容概要:本文是一份全面的MySQL教程,系统讲解了MySQL数据库的核心概念与实际操作,涵盖数据库基本概念、DDL(数据定义语言)操作、CRUD(增删改查)操作、索引管理、连接查询(如内连接、左连接等)、主从复制原理与配置、分库分表策略及中间件应用(如ShardingSphere)。文章通过SQL示例详细演示了数据库的创建、表结构设计、数据操作、聚合查询、分页排序等功能,并深入介绍了高可用与扩展性方案,包括主从同步机制、垂直与水平拆分、数据迁移方法及监控手段。最后总结了MySQL最佳实践,帮助读者构建高性能、可扩展的数据库系统。; 适合人群:具备一定SQL基础,从事后端开发或数据库管理工作的初、中级技术人员,尤其是工作1-3年的研发或运维人员; 使用场景及目标:①掌握MySQL从入门到进阶的核心技能,包括SQL编写、索引优化、主从配置;②理解分库分表的设计原理与实现方式,应用于高并发、大数据量系统架构设计;③学习数据库性能优化与监控方法,提升系统稳定性与查询效率; 阅读建议:建议结合实际环境动手实践文中SQL语句与配置方案,重点理解主从复制流程和分片策略的适用场景,注意在分库分表中合理设计路由键与避免跨片查询,同时利用EXPLAIN等工具进行SQL调优。

2025-09-04

Java技术综合热门面试题解析:数据库事务、存储引擎、消息队列与分布式锁原理应用

内容概要:本文整理了Java领域中的16道热门面试题,涵盖数据库事务特性(脏读、不可重复读、幻读)、MySQL存储引擎对比(InnoDB、MyISAM等)、覆盖索引、RabbitMQ死信队列机制、Kafka架构演进(抛弃ZooKeeper)、Kafka事务消息实现、Java 8元空间替代永久代的原因、MySQL二阶段提交机制、消息队列的应用场景、常见设计模式及其应用、Spring启动流程、Redis集群脑裂问题、MySQL锁类型详解、Redis跳表实现原理以及Redis分布式锁的潜在问题。每道题均包含核心要点与扩展知识,帮助深入理解技术原理与实际应用。; 适合人群:具备一定Java开发基础,准备技术面试的中初级研发人员,尤其是工作1-3年、希望系统复习后端核心技术的工程师。; 使用场景及目标:①用于面试前的知识点梳理与查漏补缺;②深入理解数据库、消息中间件、JVM、Spring框架等核心技术的工作原理;③掌握常见分布式系统问题(如脑裂、事务一致性、锁机制)的解决方案。; 阅读建议:建议结合实际项目经验或源码进行对照学习,重点关注MySQL事务机制、Kafka架构演进、Redis底层数据结构与分布式锁等高频难点内容,同时注意区分相似概念(如不可重复读与幻读、共享锁与排他锁),以提升系统设计与问题排查能力。

2025-09-04

后端场景面试题.pdf

内容概要:本文档围绕后端开发中的典型场景面试题展开,涵盖订单支付状态冲突、重复下单、Redis内存溢出、数据库连接池满、Excel导出与大数据导入性能优化、分布式锁设计、JVM内存分析、CPU飙高排查、消息队列故障兜底、网关超时设置等多个高并发、高可用场景下的问题与解决方案。通过实际案例分析,提供了基于数据库乐观锁、分布式锁、本地消息表、异步处理、流式读写、多线程分片等技术手段的落地思路,并结合线上故障排查经验,深入讲解了问题定位流程与系统优化策略。; 适合人群:具备一定Java后端开发经验,熟悉Spring、MySQL、Redis、MQ等常用技术栈,工作年限在1-5年的中高级研发人员;尤其适合准备技术面试或希望提升线上问题处理能力的工程师。; 使用场景及目标:①应对后端系统设计类面试题,掌握常见并发冲突的解决模式;②学习线上故障(如连接池满、CPU飙升、OOM)的标准化排查流程;③理解高并发场景下幂等性、事务一致性、资源优化的实现方案;④提升对JVM、操作系统底层机制的认知与实战能力。; 阅读建议:建议结合自身项目经验对照阅读,重点关注每个问题的“根因分析”和“解决方案”的设计思路,而非仅记忆结论。对于代码示例,应动手复现并调试,深入理解如本地消息表、ConcurrentHashMap原理、arthas使用等关键技术点,以达到举一反三的效果。

2025-09-04

如何保证消息100%投递,文档中包含4个project:分别是rabbitmq和kafka的生产者和消费者

如何保证消息100%投递,项目中使用的是添加confirmCallBack判断消息是否投递成功,并对投递失败的消息使用定时任务补发,最终任然失败的消息可人工介入。并分别给出了rabbitemq和kafka的代码示例。

2025-01-20

python图片处理 Pillow 图片压缩、转换、转pdf、长图合并、转成证件照

python图片处理 图片压缩: python3 compress_image.py 转换: jpg to png:python3 convert_image.py xxx.jpg xxx.png png to jpg:python3 convert_image.py xxx.png xxx.jpg 转pdf:python3 images_to_pdf.py, 把当前目录下的所有图片合并为一个pdf文件输出到output.pdf 长图合并:python3 merge_images.py 把当前目录下的所有图片按顺序合并为一个长图输出到output.jpg 转成证件照:python3 to_zhengjian.py xxx.jpg 把当前图片裁剪成一个1存照和一个2存照保存为xxx_1_inch.jpg和xxx_2_inch.jpg

2024-08-11

普通高等学校本科专业目录(2024年)

1.本目录是在《普通高等学校本科专业目录(2012年)》基础上,增补历年来批准增设、列 入目录的新专业,于2024年整理而成。 2.专业目录包含基本专业和特设专业。基本专业一般是指学科基础比较成熟、社会需求相对 稳定、布点数量相对较多、继承性较好的专业。特设专业是满足经济社会发展特殊需求所设置的 专业,在专业代码后加“T”表示。 3.专业目录中涉及国家安全、特殊行业等专业由国家控制布点,称为国家控制布点专业,在 专业代码后加“K”表示

2024-08-08

普通高等学校本科专业目录(2024年)

1.本目录是在《普通高等学校本科专业目录(2012年)》基础上,增补历年来批准增设、列 入目录的新专业,于2024年整理而成。 2.专业目录包含基本专业和特设专业。基本专业一般是指学科基础比较成熟、社会需求相对 稳定、布点数量相对较多、继承性较好的专业。特设专业是满足经济社会发展特殊需求所设置的 专业,在专业代码后加“T”表示。 3.专业目录中涉及国家安全、特殊行业等专业由国家控制布点,称为国家控制布点专业,在 专业代码后加“K”表示。

2024-08-08

鸿蒙os应用开发指南.pdf

鸿蒙os应用开发指南,更新至2023-年-10月

2023-11-14

鸿蒙os应用开发版本差异报告

鸿蒙os应用开发版本差异报告,官方文档

2023-11-09

鸿蒙os开发API&ArkTs API&Native API

鸿蒙系统应用开发官方API,文档内容来自鸿蒙os开发官网。

2023-11-08

鸿蒙os开发教程+白皮书

鸿蒙os官方开发教程.pdf+鸿蒙生态应用开发白皮书V1.0.pdf

2023-11-06

xxl-job官方文档

XXL-JOB是一个分布式任务调度平台,其核心设计目标是开发迅速、学习简单、轻量级、易扩展。现已开放源代码并接入多家公司线上产品线,开箱即用。

2023-11-03

Qt-jqx风格按钮控件的实现&不同样式的按钮&toggledButton&DropdownButton

Qt实现的jqx风格的按钮控件支持QJButton支持Default、Primary、Info、Success、Warning、Danger、Inverse等期中不同样式的按钮。QJToggledButton实现开关按钮。QDropdownButton实现带有下拉框的按钮。

2023-09-17

python GUI库&pyQt4教程&pyQt5教程&中英文教程

压缩包内有两个pdf文件:1.pyqt_tutorial.pdf:pyqt4教程英文版。2、pyqt5—教程:pyqt5中文版教程。

2023-08-23

wallhaven 关键词库&中英对照&excel文档&数据集

wallhaven关键词库,包含中英对照。文档内包含关键词13000多条。可帮助用户更快的检索想要的图片内容。 wallhaven地址:www.wallhaven.com,www.wallhaven.cc

2023-08-06

C++ Qt 6实现的网页资源下载器&项目源码&计算机课程毕业设计&作业

Qt 6实现的网页资源下载程序。支持http和https协议,文件类型包括图片、文本、代码、可执行程序、office文档音视频文件等等,另外程序支持添加自定义文件类型。文档最后给出了一些完丰富序内容的方案。

2023-08-03

phaser2引擎适配微信小游戏-demo

phaser2引擎适配微信小游戏demo。在demo中可以将你的小游戏appid复制到project.json文件中,用微信小程序开发工具打开即可。demo内用phaser引擎成功加载了一张背景图片。开发小游戏时可以把该demo作为小游戏模板使用。

2023-08-02

SqlAlchemy教程+学习文档

SQLAlchemy是Python编程语言下的一款开源框架。提供了SQL工具包及对象关系映射(ORM)工具。SQLAlchemy“采用简单的Python语言,为高效和高性能的数据库访问设计,实现了完整的企业级持久模型”。SQLAlchemy的理念是,SQL数据库的量级和性能重要于对象集合;而对象集合的抽象又重要于表和行。因此,SQLAlchemy采用了类似于Java里Hibernate的数据映射模型,而不是其他ORM框架采用的Active Record模型。 本文档为SQLAlchemy学习教程。文档来源:https://www.wenjiangs.com/doc/sqlalchemy-docs

2023-07-09

BeautifulSoup参考文档

python XML html 解析库BeautifulSoup参考文档。文档来源:https://beautifulsoup.readthedocs.io/zh_CN/v4.4.0/

2023-07-09

Python库reportLab用户手册+API

Python库reportLab用户手册。reportLab是一个强大的创建修改pdf文件的工具。本文档为其用户使用手册,包含reportLab核心使用方法。文档内容根据据reportLab官网的用户手册,去除无关内容使手册阅读更加直观便捷,并且支持快速索引,喜欢用pdf作为文献阅读工具的的可选择下载。 注意:该手册为英文版,下载前请视自身情况而定。

2023-07-09

mda-kjqw1v798uy7ec5p.mp4

mda-kjqw1v798uy7ec5p.mp4

2022-07-17

C++实现图书管理系统/控制台程序+课件设计+毕业设计

本程序是一个纯c++编写的运行在windows系统上的图书管理系统。包含源码(无一行遗漏)。包含查询,添加,删除,借书,还书等功能。使用到了c++标准模板库vector,utf-8和gbk相互转码,以及ifstream和ofstream的文本文件的读写操作。为了实现方便每次修改数据都是全覆盖操作。

2022-04-30

MFC音乐播放器

学习Visual C++实用教程后,自制的MFC简单音乐播放器

2014-01-10

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

TA关注的人

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