Leetcode234解答

/** * Definition for singly-linked list. * type ListNode struct { * Val int * Next *ListNode * } */ func isPalindrome(head *ListNode) bool { if head == nil || head.Next == nil { return true } // 找到链表的中点 slow, fast := head, head for fast.Next != nil && fast.Next.Next != nil { slow = slow.Next fast = fast.Next.Next } // 反转后半部分链表 secondHalf := reverseList(slow.Next) // 比较前半部分和反转后的后半部分链表 p1, p2 := head, secondHalf for p2 != nil { if p1.Val != p2.Val { return false } p1 = p1.Next p2 = p2.Next } // 恢复链表 slow.Next = reverseList(secondHalf) return true } // 反转链表 func reverseList(head *ListNode)……

阅读全文

Webstorage

什么是web storage Web Storage是一种Web浏览器提供的客户端存储机制,它允许网页在用户的浏览器中存储和检索数据。它是HTML5规范的一部分,提供了比传统的cookie更强大和灵活的数据存储解决方案。 Web Storage提供了两种存储机制:localStorage和sessionSto……

阅读全文

Linux vmstat使用

在Linux系统中,vmstat命令用于报告虚拟内存统计信息。它提供了对系统内存、进程、I/O等关键指标的实时监视。基本用法如下: vmstat [选项] [时间间隔] [次数] 选项:用于指定vmstat命令的一些额外选项。 -a, --active:显示活跃和非活跃内存的详细信息。 -d, --disk:显示磁……

阅读全文

分布式事务失败解决方案

分布式事务失败可能会导致数据不一致或者数据丢失,因此需要采取相应的解决方案。以下是一些常见的解决方案: 采用两阶段提交(2PC)协议。 2PC是一种分布式事务协议,它可以保证在分布式环境下所有节点的数据一致性。2PC协议包括两个阶段:准备阶段和提交阶段。在准备阶段,各个节点会向协调者……

阅读全文

设计模式-单例模式

概念 ​ 单例模式 是一种常见的设计模式,用于确保一个类只有一个实例,并提供一个全局访问点。 根据初始化的时机不同,单例模式又分为 懒汉式 和 饿汉式下面通过多个实例 懒汉式在第一次使用时创建实例对象, 饿汉式在程序启动时就创建实例对象。 饿汉式 type singleton struct {} var instance *singleton func init() { instance = new(singleton) } func GetInstance() *singleton { return instance } 饿汉式 是 线程……

阅读全文

Linux Makefile

在软件开发中,构建和管理项目是一个重要且复杂的任务。Makefile 是一种用于自动化构建过程的工具,它可以帮助开发人员管理依赖关系、编译源代码、生成可执行文件等。 Makefile 是一个非常强大的构建程序工具,主要用于管理程序的依赖关系和构建规则。一个 Makefile 通常包含多个规则,每个规则都包含一个目标和……

阅读全文

Linux 基础

1、find 文件查找 查找txt和pdf文件 find . \( -name "*.txt" -o -name "*.pdf" \) -print 正则方式查找.txt和pdf find . -regex ".*\(\.txt|\.pdf\)$" -iregex: 忽略大小写的正则 否定参数,查找所有非txt文本 find . ! -name "*.txt" -print 指定搜索深度 打印出当前目录的文件(深度为1) find . -maxdepth 1 -type f 定制搜索 按类型搜索: find . -type d -print //只列出所有目录 -type f……

阅读全文

Pphp Multi Process

在 PHP 中,多进程编程可以通过使用相关的函数和扩展来实现。多进程编程可以用于同时执行多个任务、并行处理大量数据、利用多核处理器等场景。 pcntl_fork(): 创建一个子进程,并在父进程和子进程中返回不同的进程ID。子进程是父进程的一个拷贝,它们在不同的内存空间中运行。 示例: $pid = pcntl_fork(); if ($pid === -1) { // 创建子进程失败……

阅读全文

Gin参数校验

Gin 使用了结构体标签(struct tags)的方式来定义参数校验规则。以下是一个使用 Gin 进行参数校验的示例: 首先,定义一个结构体类型来表示请求参数: type CreateUserRequest struct { Name string `json:"name" binding:"required"` Email string `json:"email" binding:"required,email"` Password string `json:"password" binding:"required,min=8"` } 在上述示例中,使用了 binding 结构体标签来指定参数校验规则。binding:"required&qu……

阅读全文

Git Tag备忘

什么是标签 标签是 Git 中一个重要的概念,它是一个指向某个 Git 版本的静态指针,用于标记某个特定的提交,类似于一个版本号或者一个里程碑。标签通常用于发布版本、标记重要的里程碑或者备份重要的提交。 Git 标签有两种类型:轻量标签和附注标签。 轻量标签就是一个指向某个提交的引用,类似于一个分支,但是不……

阅读全文