自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

SteveForever的博客

知乎:https://www.zhihu.com/people/steveforever

  • 博客(118)
  • 收藏
  • 关注

原创 Linux Huge Pages开启

启用大页(Huge Pages)是一种优化内存使用和提高性能的方法,尤其适用于需要大量内存的应用程序(如数据库和高性能计算)。大页可以显著减少页表项,从而减少TLB(Translation Lookaside Buffer)缓存未命中,提高内存访问效率。以下是启用大页的步骤和相关配置,以Linux系统为例。

2024-09-08 10:48:49 561

原创 Rust 中 `madvise` 和 `posix_fadvise`的区别

在 Linux 操作系统中,madvise和是两个用于内存管理的系统调用,它们提供了一些类似的功能,但也有一些关键的区别。madvise是一个系统调用,用于向内核提供关于应用程序如何使用一段内存区域的建议。

2024-09-01 12:23:47 640

原创 距离--hamming距离

Hamming 距离是两个等长字符串之间的差异度量,表示两个字符串在相应位置上不同字符的数量。它常用于错误检测和纠正、以及生物信息学中的 DNA 序列分析等领域。下面是一些关于如何计算 Hamming 距离的示例,包括不同编程语言的实现。

2024-08-11 11:46:01 214

原创 c++ bench测试simd指令avx512

【代码】c++ bench测试simd指令avx512。

2024-08-11 11:44:52 256

原创 距离--jaccard系数

Jaccard 相似系数(Jaccard Similarity Coefficient)是用于衡量两个集合相似度的统计量。它定义为两个集合的交集大小除以它们并集的大小。Jaccard 距离则是 1 减去 Jaccard 相似系数。

2024-08-11 11:42:20 236

原创 avx sse系列介绍

SSE(Streaming SIMD Extensions)家族是由英特尔引入的一组指令集扩展,用于提高多媒体、科学计算和其他领域的处理性能。SSE家族随着时间的发展,增加了多个版本和子集。总的来说,SSE家族通过逐步增加新指令和优化现有指令,显著提高了处理器在多媒体、科学计算、加密等领域的性能。这些改进使得SSE成为了现代处理器中不可或缺的一部分。AVX(Advanced Vector Extensions)家族是英特尔和AMD处理器中用于提高浮点和整数运算性能的一组指令集扩展。

2024-08-11 11:40:58 1073

原创 rust simd相关库使用

和wide提供了更高级别的抽象,使 SIMD 编程更容易。提供了对特定硬件指令的低级访问。std::simd是 Rust 标准库中提供的实验性模块,用于统一 SIMD 编程接口。不同的库有不同的优缺点,可以根据具体需求选择合适的库。

2024-08-11 11:38:36 445

原创 rust循环展开benchmark测试

在 Rust 中,循环展开可以通过手动优化来实现。Rust 编译器(rustc)不会自动进行循环展开优化,因此如果你想利用这一技术,需要手动进行代码修改。下面是一个简单的例子,展示了如何在 Rust 中进行循环展开。

2024-08-11 11:37:42 268

原创 rust中的phantom类型有什么用?

用于在类型系统中携带类型和生命周期信息,虽然不实际存储这些类型的值。:用于表示一个类型不能安全地移动,常与Pin类型一起使用。这些Phantom类型在 Rust 的泛型编程和内存安全中起到了重要的作用,通过标记和类型信息传递,帮助编译器进行更严格的检查和优化。

2024-08-11 11:35:13 334

原创 rust pin_project的使用

是 Rust 中的一个过程宏,用于简化处理Pin类型,特别是当结构体包含需要固定在内存中的字段时。Pin类型在 Rust 中确保对象不能在内存中移动,这对于某些类型的安全并发和内存管理至关重要。

2024-08-11 11:34:02 247

原创 openmp优化循环

OpenMP 是一个用于并行编程的 API,主要用于在 C、C++ 和 Fortran 语言中实现多线程并行计算。优化循环是 OpenMP 的一个典型应用场景。以下是如何使用 OpenMP 来优化循环的基本步骤和一些示例代码。

2024-08-11 11:33:28 310

原创 rust cow写时复制的使用方法

Cow定义在标准库模块whereSized,Cow: 一个对数据的借用引用。: 一个拥有的数据副本。Cow是 Rust 中一个非常有用的类型,特别是在需要处理既可能只读又可能需要修改的数据时。它通过在借用和拥有之间动态切换,提供了性能优化和灵活性,避免了不必要的数据拷贝。使用Cow可以让你的代码在保持高效的同时,又能灵活地处理不同的需求。

2024-08-11 11:31:29 313

原创 rust中的Stream和Future

Future是一个包含一个pollpoll方法:检查Future是否已经完成。如果完成,返回,否则返回。Output类型:表示Future完成时的返回值类型。Stream是一个包含一个poll_nexttype Item;poll_next方法:检查Stream是否有新的数据。如果有,返回,如果流结束,返回,否则返回。Item类型:表示Stream中产生的值的类型。Future:表示将来可能完成的异步计算,通过poll方法检查是否完成。Stream:表示异步的数据流,通过。

2024-08-11 11:30:21 325

原创 docker为普通用户设置sudo权限

这是因为 Docker 守护进程(Docker daemon)通常运行在 root 用户下,而访问和管理 Docker 守护进程的权限也默认被限制给 root 用户。请注意,允许非特权用户管理 Docker 容器会带来一些安全隐患,因为 Docker 容器具有较高的系统权限。在 Linux 上使用 Docker 命令时,默认情况下需要。等信息,而没有权限错误,那么说明你已经成功配置了无需。然而,为了方便日常使用,你可以将当前用户添加到。权限运行 Docker 命令。运行 Docker 命令。

2024-08-11 11:27:14 372

原创 golang vscode下root权限调试程序

debug如果需要root模式,比如ebpf需要root权限,尝试了"asRoot": true没有效果,选择vscode使用root用户名ssh远程登陆主机,解决。在launch.json中加入 “buildFlags”: [“-buildvcs=false”]。

2024-08-11 11:25:07 330

原创 rust和c传递字符串的七种方法--翻译

使用FFI获取到的指针指向的内存,由FFI进行释放。rust中提供了两个函数,get_string_len获取字符串的长度(包括’\0’字符),在copy_string函数中接受c传递的指针,拷贝rust中字符串到内存供c使用。使用into_raw()函数,指针指向的内存所有权就交给了C,但是要注意最终指针还是要传递回rust,调用from_raw()函数管理起内存,然后释放内存。采用这种方法,由于内存是c malloc分配的,c可以直接修改内存中内容,调用free释放内存,不需要担心释放内存出现错误。

2024-08-04 23:32:17 803

原创 文章写作工具

https://md.aclickall.com/

2024-08-04 23:20:51 122

原创 嵌套式项目中Vscode中调试Rust的一些问题解决

attach是用于已经启动了一个持续运行的程序(比如启动了一个server)(如果程序一下子就结束了,这种方式使用launch调试),这个程序加载了so,然后调试so就选择attach(中文直译就是依附到这个程序上,翻译有点傻)。由于是嵌套式项目,比如C++代码中对Rust进行了Bind,Rust目录就在项目子目录中,为了让vscode中安装的rust-analyzer识别到正确的rust项目目录,在.vscode/settings.json中添加如下。直接就会断点到so内部对应的代码行。

2024-08-04 15:54:15 601

原创 创建第一个rust tauri项目

由于wsl2会遇到渲染相关的报错,切换到windows。windows包管理器安装nodejs。

2024-08-03 12:37:22 295

原创 c++实现跳表

采用C++实现跳表,leetcode题解。

2024-08-03 12:36:06 125

原创 linux源码编译qt6.5问题解决

我的项目需要QtWayland,https://stackoverflow.com/questions/42352743/how-to-build-qtwayland。但是项目要求6.4,为了安装简单,升级ubuntu到了24,直接一键安装qt6.4.2。https://doc.qt.io/qt-6/linux-building.html,直接下个qt6.5试试。这里遇到一个问题,报错libclangBasic.a找不到,网上说安装libclang-dev就可以了。开始编译了,一切正常进行中,突然报错,

2024-08-03 12:34:04 379

原创 linux设置SO_REUSEADDR选项

在Linux系统中,SO_REUSEADDR选项允许多个套接字绑定到同一个地址和端口,这在某些情况下非常有用。以下是如何开启和使用SO_REUSEADDR选项的详细说明。

2024-07-27 21:59:22 694

原创 多播和广播的区别

多播:高效、组通信、可控,适用于需要发送给多个特定接收方的场景。广播:简单、全网发送、无选择性,适用于需要发送给同一子网上所有设备的场景。理解这两种通信方式的区别和适用场景可以帮助你在不同的网络应用中选择合适的传输方法。

2024-07-27 21:58:58 539

原创 linux网络通信屏蔽SIG_PIPE信号

忽略SIGPIPE信号: 使用signal或sigaction函数忽略SIGPIPE信号。MSG_NOSIGNAL标志: 在使用send或sendto函数发送数据时传递标志。SO_NOSIGPIPE选项: 仅在BSD和macOS系统上可用,通过在套接字上设置此选项避免SIGPIPE信号(Linux系统不可用)。通过这些方法,你可以有效地屏蔽或忽略SIGPIPE信号,避免因为向已关闭的管道或套接字写数据而导致的进程终止。

2024-07-27 21:58:26 332

原创 tcp网络TCP_NODELAY套接字选项

在Linux网络编程中,是一个套接字选项,可以通过setsockopt系统调用来设置。这个选项用于控制TCP (传输控制协议) 中的Nagle算法。

2024-07-27 21:57:57 302

原创 tcp网络中close和shutdown区别

关闭范围close: 完全关闭套接字,即不能再发送或接收数据。shutdown: 可以选择性地关闭套接字的读、写或读写方向。用途close: 适用于需要完全终止连接的情况。shutdown: 适用于需要部分终止连接的情况,例如停止发送但仍需要接收数据。系统级行为close: 关闭文件描述符并减少引用计数。shutdown: 不影响文件描述符,只影响套接字的通信方向。触发的TCP行为close: 触发TCP的四次挥手过程,优雅地终止连接。shutdown: 可能触发FIN包的发送(在。

2024-07-27 21:56:40 363

原创 tcp的SO_REUSEADDR和SO_REUSEPORT套接字选项

解决地址和端口在TIME_WAIT状态下的复用问题,适用于服务器重启和多播应用。: 允许多个套接字绑定到相同的地址和端口,适用于多进程或多线程服务器的负载均衡。通过合理设置这两个选项,可以提高网络应用的健壮性和性能。

2024-07-27 21:55:54 194

原创 k3s节点内的服务发现与负载均衡

K3s 是一个轻量级的 Kubernetes 发行版,它简化了 Kubernetes 的安装和管理,同时保持了与 Kubernetes API 的兼容。在 K3s 中,服务发现与负载均衡的机制与标准的 Kubernetes 非常相似。

2024-07-27 21:54:40 520

原创 Hook技术之dlsym RTLD_NEXT

dlsym用于在动态链接库中查找符号(函数或变量)。RTLD_NEXT是一个特殊的句柄,表示在共享库查找链中查找下一个共享库。通过使用RTLD_NEXT,可以实现函数拦截,同时保留对原始实现的访问。这种技术在调试、性能监控、日志记录等场景中非常有用,通过拦截函数调用,可以在不修改原始代码的情况下添加额外的功能。

2024-07-27 21:53:56 484

原创 c++实现一个简单的线程池

在 C++11 中实现一个简单的线程池,可以使用标准库中的线程、互斥锁和条件变量来管理线程和任务队列。下面是一个基本的线程池实现示例。

2024-07-27 21:52:19 151

原创 Cuda入门

代替标准指针解引用。__ldg() 强制通过只读数据缓存加载数据,可以有效提高访问效率。对__shfl_down_sync api的解释参考。在mindspore等框架中也有应用,如。

2024-07-27 21:51:38 312

原创 k3s配置docker容器/dev/shm

要扩大K3s和Docker容器的/dev/shm使用 Docker 的--shm-size选项直接设置容器的共享内存大小。在Kubernetes的Pod或Deployment配置文件中使用emptyDir卷来设置共享内存大小。修改 Docker 的配置文件来全局更改默认的共享内存大小。

2024-07-13 10:32:07 573 1

原创 k3s端口映射clusterIP和NodePort的区别

特性ClusterIPNodePort访问范围只能在集群内部访问可以从集群外部访问默认类型是否端口范围无特定限制30000-32767(可配置)典型使用场景内部服务通信暴露服务给外部用户依赖关系无依赖于 ClusterIP选择哪种 Service 类型取决于具体的需求。如果你的服务只需要在集群内部访问,使用 ClusterIP 是最合适的。而如果需要从外部访问服务,NodePort 提供了一种简单的方式来实现这一点。

2024-07-13 10:31:14 429

原创 k3s如何通过命令查看开放的NodePort

使用查看所有Service的概览。使用查看特定Service的详细信息。使用快速过滤出NodePort Service。以JSON或YAML格式输出Service信息,然后手动查找。使用jq工具精确提取NodePort信息。

2024-07-13 10:30:30 384

原创 k3s查看pod端口映射情况

使用查看Pod的详细信息。查看Service的端口映射信息,使用和。查看Pod的YAML配置文件。使用来临时访问Pod的端口。

2024-07-13 10:29:15 674

原创 Vscode按键占用问题解决

在使用vscode的过程中,官方按键按键可以提示修复代码中的问题,但是发现按了没有反应。

2024-03-24 13:07:32 621

原创 c++ double free错误解决

double free 问题

2022-09-06 17:05:08 1728 1

原创 c语言数组初始化的区别

字符数组的初始化

2022-08-25 20:58:51 498

原创 new 异常处理

c++中new bad_alloc异常处理

2022-08-19 17:14:09 641

原创 链表交错c++解法

链表

2022-07-27 00:10:28 165

空空如也

空空如也

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

TA关注的人

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