- 博客(102)
- 收藏
- 关注
原创 Mac 刷题环境配置
Mac 刷题环境配置这篇博文主要记录自己为了更方便的在 Mac 上写算法题,主要是基于 Clion做的一些环境配置;有些操作其实在 Windows ,Linux 下也是通用的,如果看到的小伙伴也可以结合自己的情况参考。Clion 插件推荐一下这个插件 C/C++ Single File Execution,因为刷算法题主要是单文件执行,这个可以帮我们自动在 Cmake 里生成一个命令,...
2025-01-19 21:03:00
666
原创 Windows下Dll在Unity中使用的一般方式
Windows下Dll在Unity中使用的一般方式Unity中虽然已经有广泛的库和插件,但是相较于C++的库生态而言,还是有一定的差距;因此本篇博文记录Windows下将C++函数打包成动态链接库在Unity中使用的一般方法。环境Visual Studio 2019 , Unity2022 , Windows11,OpenCV说明Unity中有针对Windows 下DLL文件的自动加...
2025-01-11 17:25:00
442
原创 寄存器传值——函数剖析
寄存器传值——函数剖析现象实验环境:Ubuntu20,x86-64指令集#include <stdio.h>int sum(int a, int b){ return a+b;}int main() { int aa = sum(5,3); printf("%d, %d\n", 9); return 0;}编译器提示我们 prin...
2024-09-25 10:59:00
310
原创 初探编译链接原理
初探编译链接原理bug最近因为遇到了一个有意思的 bug,就去学习了一下编译链接原理,本篇博文记录学习过程中相关的一些思考。foo5.c/* $begin foo5 *//* foo5.c */ #include <stdio.h>void f(void); int x = 15213; int y = 15212; int main() { ...
2024-09-04 15:54:00
921
原创 Noise——随机之美
本篇博文介绍图形学中噪音生成的一般方法。Noise可以干什么?不规则表面生成有机体模拟流体烟雾模拟甚至是使用noise对灯光强度,位置做扰动:只有我们想象不到的,没有noise不能涉猎的!Nosie类型White Noise对于这样一张画布,如果我们定义一个伪随机数生成函数,输入是每个像素的坐标,输出是一个noise。便可以根据每个像素的坐标得到一个白噪音图了,值域为...
2024-07-24 20:31:00
1266
原创 Git使用技巧
rebase & merge先说结论,rebase比较适用于私人分支,可以把主干分支上其他人开发的功能拉到自己的分支上,并且是一条线;merge则主要适用于主分支,可以将其他人的代码合并上去,因为要保留主分支的完整历史记录。Merge rebasesquash主要用于合并commit,简化分支。交互式重排示例:# 进行交互式重排,假设重排最近的...
2024-07-19 18:37:00
908
原创 SDF Line相关公式推导
SDF Line相关公式推导线段是SDF形状的基元之一,可以被用来建模一些形状,比如昆虫的腿,植物的根茎等。下面这篇文章介绍一下Line公式的推导,首先记住我们要求的变量,点到形状最近的距离。那么对于空间中的点\(P_1, P_2, P_3\),他们的分布有如下三种其中\(P_1\)到线段的距离是\(|\vec{P_1Q}|\),\(P_2\)到线段的距离是\(|\ve...
2024-07-15 10:51:00
712
原创 SDF矩形(附圆角)公式推导
SDF矩形(附圆角)公式推导矩形一般情况下,我们会使用(top_left, top_bottom), (width, height)来定义一个矩形,但是对于SDF而言,使用(centerX, centerY), (HalfSizeX, HalfSizeY)会更方便一些。假设一个矩形,我们先定义原点在(0, 0),那图像如下:记住要计算的内容:点与形状最近边缘之间的距离。那么会出现两种...
2024-07-10 18:01:00
518
原创 使用世界变换的逆转置矩阵对法线进行变换
法向量变换细节记录最近在做法向量变换的时候,踩了两个坑,记录一下相关的知识点法向量做变换,最后一位是补0我们知道,顶点在做变换的时候最后一位是 1.0,法线最后一位是补0.0vec3 normCurrent = (getMatrixWorld() * vec4(normCurrent, 0.0)).xyz; // 法线变换vec3 pointCurrent = (getMatrixWo...
2024-06-30 10:09:00
385
原创 从上下文切换谈thread_local工作原理
从上下文切换谈thread_local工作原理thread_local是什么熟悉多线程编程的小伙伴一定对thread_local不陌生,thread_local 是 C++11 引入的一种存储类说明符,用于定义每个线程都有其独立实例的变量。每个线程对这些变量有自己的副本,而不共享其他线程的副本。这在多线程编程中非常有用,确保线程之间的数据隔离,防止数据竞争。但是thread_local的表...
2024-06-04 20:53:00
343
原创 Shader作画
代码运行网站:http://editor.thebookofshaders.com/// Author @CuriosityWang// https://www.cnblogs.com/curiositywang#ifdef GL_ESprecision mediump float;#endiffloat ColA = 0.028;float RowA = 0.033;un...
2024-05-31 14:55:00
211
原创 使用Shader画常见的数学函数
使用Shader画常见的数学函数本篇博文的灵感来自于Shader Books这一小节:https://thebookofshaders.com/05/?lan=ch代码运行网站:http://editor.thebookofshaders.com/一次函数\[y = x + 0.5\]#ifdef GL_ESprecision mediump float;#endifunifo...
2024-05-30 22:01:00
469
原创 深入浅出CPU眼中的函数调用&栈溢出攻击
深入浅出CPU眼中的函数调用——栈溢出攻击原理解读函数调用,大家再耳熟能详了,我们先看一个最简单的函数:#include <stdio.h>#include <stdlib.h>int func1(int a, int b){ int c = a + b; return c;}int main(){ int res = func1(); ...
2024-05-30 21:58:00
303
原创 VS Code Runner 插件配置
VS Code Runner 插件配置Code Runner插件是一个小而美的插件,可以很方便的运行一些简单的代码文件。本篇博文记录一些相关的环境配置。设置C++编译标准这里可以设置默认的C++标准设置每次运行清除输出...
2024-04-09 20:45:00
629
原创 C++ <atomic>汇编语言实现原理
C++ <atomic>汇编语言实现原理问题我们先看一下这段代码:/* * badcnt.c - An improperly synchronized counter program *//* $begin badcnt *//* WARNING: This code is buggy! */#include "csapp.h"void *thread(voi...
2024-03-20 22:02:00
436
原创 CSAPP学习笔记——chapter5 优化程序性能
编写高效程序需要做到以下几点:第一,我们必须选择一组适当的算法和数据结构第二,我们必须编写出编译器能够有效优化以转换成高效可执行代码的源代码。对于这第二点,理解优化编译器的能力和局限性是很重要的。编写程序方式中看上去只是一点小小的变动,都会引起编译器优化方式很大的变化。有些编程语言比其他语言容易优化。C语言的有些特性,例如执行指针运算和强制类型转换的能力,使得编译器很难对它进行优化。程序员经常能...
2024-01-30 21:32:00
490
原创 CSAPP学习笔记——Chapter10,11 系统级I/O与网络编程
本篇博文介绍了《深入理解计算机系统中》Unix I/O,以及网络编程章节的一些概念,之所以合在一起介绍是因为Unix I/O在网络编程中会用到。同时我们观察到此时的echo服务器统一时刻只能处理一个客户端的连接。下一章的并行编程我们会对echo服务器进行拓展,基于并发的理论使其能够同时处理多个连接。
2024-01-30 17:06:36
788
1
原创 图像拼接算法技术报告
本篇博客先是介绍了图像拼接的一般流程,然后给出了自己手写方法和opencv官方代码的对比,最后在探索小节通过阅读opencv的源码解释了为什么动态物体出现时我的会有鬼影,而opencv stich不会,本质上是算法的思想不同。
2024-01-30 16:57:22
1831
1
原创 CSAPP学习笔记——chapter8 异常控制流
本篇博文介绍了现代操作系统中异常的一些概念,我们常见的系统调用其实也是异常的一种,内核会先保存调用者的上下文,进入内核模式,执行系统调用,当执行完毕之后,再去恢复调用者的上下文,继续执行,另外还有中断,陷阱等,这些是操作系统和硬件层面的异常;而对于进程层面的异常,则主要围绕信号这一抽象概念,包括接受信号和处理信号,最后介绍了有关信号安全的知识,还引出了一个如何有效释放进程资源的例子。
2024-01-29 16:20:54
905
原创 BandiZip无广告版安装
*Bandizip* 是一款压缩软件,它支持Zip、7-Zip 和 RAR 以及其它压缩格式。它拥有非常快速的压缩和解压缩的算法,从大学用到现在,但是现在最新的版本在每次压缩时会推送广告。因此记录一个老版本的安装方式
2024-01-29 10:19:50
3397
原创 远程服务器画面GUI传输到本地显示
这篇文章主要介绍`远程服务器(Ubuntu系统)`的GUI画面传输到`本地(本地Ubuntu或者Windows)`显示的方法。
2024-01-29 10:18:10
653
原创 CSAPP学习笔记——Chapter12 并行编程
本篇博文介绍了并发编程的相关知识,基于进程的并发,它的缺点主要是进程之间通信的成本过高;基于I/O多路复用的并发,主要缺点是编写困难;而基于线程的并发是最常用的,先是用其扩展了echo服务器,使其能够同时处理多个连接请求,然后再结合生产者消费者模型进行了进一步的拓展。最后介绍了有关线程安全的一些概念。
2024-01-28 10:56:26
1127
1
原创 CSAPP学习笔记——Chapter10,11 系统级I/O与网络编程
本篇博文介绍了《深入理解计算机系统中》Unix I/O,以及网络编程章节的一些概念,之所以合在一起介绍是因为Unix I/O在网络编程中会用到。同时我们观察到此时的echo服务器统一时刻只能处理一个客户端的连接。下一章的并行编程我们会对echo服务器进行拓展,基于并发的理论使其能够同时处理多个连接。
2024-01-27 22:44:42
966
原创 CSAPP学习笔记——chapter9 虚拟内存
这一章主要介绍了现代操作系统中虚拟内存的概念,先是介绍了虚拟内存的一般概念,这一部分我将在本文第一小节进行一个串联;第二部分介绍了内存映射,并以Linux为例,介绍了fork函数,execve函数的实现细节;第三部分则是介绍了动态内存分配,程序员通过如`malloc`, `new`, `free`, `delete`等语言特定的函数和操作符来控制,重点介绍了动态内存分配器如何维护进程的堆区域。
2024-01-27 22:41:22
996
1
原创 Opencv环境配置一览
OpenCV环境配置一览专业相关,平时经常会使用到opencv的一些函数,目前主要包括Ubuntu系统,Android系统,本篇文章介绍在两个系统下对应的环境配置策略。Ubuntu环境附上一个很好用的脚本,一键安装###################################### INSTALL OPENCV ON UBUNTU OR DEBIAN ############...
2023-11-19 12:48:00
45
原创 保存深度值——小端序,位数,Android,Huawei AR engine
保存深度值——小端序,位数,AndroidaccuireDepthImage华为Mate Pro系列基本上前置摄像头都是有TOF的,也就是能够得到场景的深度信息,在华为的AR engine里提供了一个方法可以读取场景的深度值。不过其官方文档里对这个方法的介绍很少,寥寥数语,前期也在这里踩了一些坑。Google的AR core对这个深度值做了详细的介绍:得到的深度图是16位的,其中高...
2023-11-15 22:09:00
86
原创 151. 反转字符串中的单词
LeetCode题目:https://leetcode.cn/problems/reverse-words-in-a-string/description/class Solution {public: void reverse(string& s, int start, int end){ //翻转,区间写法:左闭右闭 [] for(;start < ...
2023-10-07 11:11:00
32
原创 Towards Accurate Alignment in Real-time 3D Hand-Mesh Reconstruction论文解读
Towards Accurate Alignment in Real-time 3D Hand-Mesh Reconstruction论文解读这是发表在ICCV2021的一篇文章,主要的工作内容是RGB图像人手重建。Introduction单目下的3D人手重建是计算机视觉中一个非常具有挑战性的任务,并且在人机交互,以及增强现实领域有着很高的应用价值;紧接着作者提出如果想要把一个人手重建的...
2023-09-24 16:10:00
104
原创 Ubuntu截屏工具推荐
Ubuntu截屏工具推荐本篇博文推荐Ubuntu下的截屏工具Flameshot,可以作为Windows下Snipaste截图工具的平替。GitHub地址:https://github.com/flameshot-org/flameshot安装sudo apt updatesudo apt install flameshot快捷键截图贴图安装之后点击应用图标就可以截图了,下面介绍如...
2023-09-04 17:11:00
136
原创 《视觉SLAM十四讲》第13讲 设计SLAM系统 回环检测线程的实现
《视觉SLAM十四讲》第13讲 设计SLAM系统 回环检测线程的实现这个学期看完了高翔老师的《视觉SLAM十四讲》,学到了很多,首先是对计算机视觉的基本知识有了一个更加全面系统的理解,其次是动手去做实验的过程中,也更加理解了很多有关g2o,opencv,sophus等等工具的使用。在第13讲的实践部分,高翔老师已经写好了一个基本SLAM框架的前端,后端部分,因此本篇博文主要记录第三个线程回环...
2023-07-27 16:41:00
368
1
原创 Ubuntu更换cuda版本,gcc,g++版本
Ubuntu更换cuda版本,gcc,g++版本更换cuda版本这个比较简单可以看到 /usr/local下面有一个软链接,更换到我们需要的版本即可,cuda对应版本安装可参考官网。创建软连接:(创建之前先删除之前的软连接,然后创建新的软连接)sudo rm -rf cudasudo ln -s /usr/local/cuda-11.3 /usr/local/cuda更换gcc...
2023-07-21 16:15:00
205
原创 ORB算法介绍 Introduction to ORB (Oriented FAST and Rotated BRIEF)
Introduction to ORB (Oriented FAST and Rotated BRIEF)1. IntroductionORB(Oriented FAST and Rotated BRIEF)是一种广泛应用于计算机视觉领域的特征描述算法。它结合了FAST角点检测算法和BRIEF描述子算法,以实现高效且具有旋转不变性的特征提取和匹配。ORB算法的主要特点如下:旋转不变性,...
2023-07-07 09:35:00
119
原创 g2o优化库实现曲线拟合
g2o优化库实现曲线拟合最近学习了一下g2o优化库的基本使用,尝试着自己写了一个曲线拟合的函数,也就是下面这个多项式函数:\[y = ax^3 + bx^2 + cx + d\]我们以 \(a = 3, b = -2, c=5, b=7\)为例,拟合出的图像大概长这样。下面简单记录一下思路:目标函数:\[\min _{a, b, c,d} \frac{1}{2} \sum_{i=1...
2023-06-06 17:05:00
67
原创 记录一个命令 可以在linux很方便的安装一些软件
小鱼的一键安装系列wget http://fishros.com/install -O fishros && . fishros一键安装:ROS(支持ROS和ROS2,树莓派Jetson) 贡献@小鱼一键安装:VsCode(支持amd64和arm64) 贡献@小鱼一键安装:github桌面版(小鱼常用的github客户端) 贡献@小鱼一键安装:nodejs开发环境(通...
2023-05-27 17:25:00
22
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人