此处记录GoogleColab的用法
什么是Google Colab
Google Colab(Colaboratory)是一个基于Jupyter Notebook的免费云端计算平台,由Google提供支持。它允许用户在云端运行Python代码,并且提供了免费的GPU和TPU加速器。Google Colab使用Jupyter作为其交互式计算环境的基础,因此可以说Google Colab是建立在Jupyter之上的。用户可以在Google Colab中编写和运行Jupyter Notebook,享受云端计算的便利和资源。
Jupyter是一个开源的交互式计算环境,可以用于数据分析、数据可视化、机器学习等任务。它支持多种编程语言,包括Python、R和Julia等。Jupyter的核心是Notebook,可以在其中编写和运行代码,并实时查看结果
支持的外连接
Seed bank:类似于含很多深度学习模型和实例的库
Github
GoogleDrive:Google网盘,免费用户可存放15G文件资源
挂载GoogleDrive的例子:
123456#挂载云盘from google. ...
opencv相关知识
计算机图像颜色基础理论用一个巧妙的实验来给你讲清楚什么是 Gamma,还未记录总结
RGB颜色空间基本知识
RGB三原色起源于上世纪初1809年Thomas Young提出视觉的三原色学说,随后Helmholtz在1824年也提出了三原色学说:即:视网膜存在三种视锥细胞,分别含有对红、绿、蓝三种光线敏感的视色素,当一定波长的光线作用于视网膜时,以一定的比例使三种视锥细胞分别产生不同程度的兴奋,这样的信息传至大脑中枢,就产生某一种颜色的感觉。
在显示器发明之后,从黑白显示器发展到彩色显示器,人们开始使用发出不同颜色的光的荧光粉(CRT,等离子体显示器),或者不同颜色的滤色片(LCD),或者不同颜色的半导体发光器件(OLED和LED大型全彩显示牌)来形成色彩,无一例外的选择了Red,Green,Blue这3种颜色的发光体作为基本的发光单元。通过控制他们发光强度,组合出了人眼睛能够感受到的大多数的自然色彩。
计算机显示彩色图像的时候也不例外,最终显示的时候,要控制一个像素中Red,Green,Blue的值,来确定这个像素的颜色。计算机中无法模拟连续的存储从 ...
详细介绍doxygen的基本到进阶用法
文档生成工具方案盘点
Doxygen: (直接生成.html)简单可用
Doxygen(生成.xml)+ 前端工具(由.xml生成html,例如 docsforge)
基于clang解析(Standardese/Hdoc/Cldoc):不一定提供latex=>pdf
Sphinx: 需要手写独立的.rst文件,再生成,不好维护
.md转html(MkDocs/Docusaurus):需要手写独立的.md文件,再生成
Doxygen+Sphinx组合:需要进一步搭配Breathe,或定制开发的工具
最方便简单无痛使用的到头来还就是Doxygen
Doxygen官网
Doxygen 是一个文档生成工具,用于为源码生成说明文档。我们可以在代码中按照 Doxygen 要求的语法编写代码注释,然后使用 Doxygen 将程序中的注释提取出来生成一个文档。我们一般都把注释写在代码中,所以使用 Doxygen 生成的文档也能够非常方便地更新。Doxygen 还会在文档中引用源码文件,故我们也可在 ...
盘点各种C++开发中可能使用到的工具及其详细使用方式
参考链接
代码性能分析代码性能分析乃是分析程序,用以从执行时间、内存使用、函数调用以及其他指标等方面来衡量其性能的一个过程。这有助于我们去识别:
热点:消耗 CPU 时间最多的函数和代码块
频率:递归调用次数异常多的函数
低效内存使用:存在内存泄漏或过度分配的区域
缓慢的函数或者循环:一般来讲,那些得进行优化从而提高整体速度的函数。
这种分析使开发者能够明确,哪些部分对应用程序性能的拖累最大,从而集中精力进行优化,而不是随意进行更改。
大体上来说,有两类主要的性能分析器,它们各自具有不同的优势和适用场景:
采样型性能分析器:周期性捕获程序状态快照,轻量级且开销极小,适合长时间运行的应用程序。但对于生命周期很短的函数,可能无法提供准确的信息。例如“Very Sleepy”、谷歌性能分析工具(gperftools)、Visual Studio 性能分析器以及英特尔 VTune 放大器。
插桩型性能分析器:为每个函数调用和代码块捕获详细且准确的数据,提供更精确结果,但开销较高,不适合生产环境。例如包括 GNU 性能分析器(gpr ...
加壳加密工具盘点与评估
概述发布出去的DLL所面临的风险:
直接引用
反编译
反射
如果DLL一点措施都不做的话,上面任意一种都可以达到破解目的的。
保护方式盘点
混淆类的工具(如Dotfuscator,但是可以通过ILSpy、Reflector等反编译哦,直接COPY代码也能运行)
加密类的工具(如MaxToCode,网上有相应的破解教程)
加壳类的工具(如Sixxpack,网上有相应的破解教程)
强签名(签名只是防止项目中的某一个DLL被篡改了,不能防止反编译或反射的哦)
上面那些工具的目的归结出来大约完成两个目的,一是不能看,二是不能调,当然,我们也是实现这两个目的,只是手段不同。
一、不能看:.NET DLL可以包含托管堆代码(可以被反编译的)与非托管堆代码(不能被反编译,要反编译也是更高层次的了,不在讨范围内),我们将核心逻辑代码置于非托堆代码中,由托管堆代码提供接口供外部调用,调用时将非托管代码通过.NET动态编译特性编译后返回执行结果。这样就保证了不能看。
二、不能调:我们在非托管代码中加入验证调用者来源功能,判断调用者的HASH值是不是与在非托管代码中约定的 ...
AI相关工具和技术盘点
基本术语
向量数据库: CloseVector
LLM:大语言模型
大模型全面知识点,涵盖原理到应用,超全超详细在线文档
AI使用应用知识库
AGI知识库
openrouter上的ai模型大排名参考
openai发布的关于构建一个AI原生的工程师团队
<<智能体设计模式: 构建只能系统的实践指南>>
介绍几种联系上下文的方式
下面均以langchain为例
Buffer Memory
存储每段对话作为LLM的新输入
Conversation Sumary Momory
将对话信息传给LLM进行摘要,将此摘要作为开头部分传入LLM
Conversation Buffer Window Memory
将最近的k组对话存储起来,作为下一轮的LLM的输入
Conversation Summary Buffer Memory
第2种和第3种方式的结合,将最近的k组对话存储起来以及[上一轮的摘要+老k组对话]的摘要+新k组对话,作为下一轮的LLM的输入(使用token长度来决定什么时候刷新输入)
优点,不仅有短期记忆,也有长期记忆
...
C++11到C++20的新特性解析
c++11特性可以参考
C++标准介绍优秀的c++知识库:cppreference
C++标准演化
C++98(1.0) 正式版本
C++03(TR1)
C++11(2.0) 正式版本
C++14
C++17
C++20
C++23
编译器对C++11的支持情况
两个层面的新特性
语言
Variadic Templates
move Semantics
auto
Range-base for loop
Initializer list
Lambdas
…
标准库
type_traits
unordered_set
forward_list
array
tuple
Con-currency
regex
thread
bitset
…
确认支持C++标准程序内部由下面的宏标识C++标准
123456//C++11#define __cplusplus 201103L//C++98#define __cplusplus 199711L//查询C++标准库cout<<__cplusplus<<endl;
...
有关字符编码的知识点
字符编码下面介绍多种编码方式:
ANSI编码原始的ASCII编码
原始的ASCII码只占一个字节
ASCII编码的拓展:GB2312(GBK)或GB2312-80GB2312或GB2312-80:专门用来表示中文的编码
实现原理把80~FF的表给占用了,由80~FF开头的两个字节拼在一起表示一个字符
12中国D6 D0 B9 FA
GB2312(GBK)或GB2312-80也就是ANSI编码(各国各自的编码格式统称ANSI)
缺点其他象形文字国家也是采取和我国一样的策略,所以各个国家看到的同一个编码意思不一致。
ANSI编码也就是GB2312(GBK)或GB2312-80,表示英文字符时用一个字节,表示中文字符时用两个或4个字节
UNICODE编码一张包含全世界所有文字的一个编码表,Unicode的编码范围是:0~0x10FFFF,可以容纳100多万个符号!
但他只是一个符号集,只规定了符号的二进制代码,却没有规定这个二进制代码应该如何存储。
详解参阅
UCS-2和UCS-4在将UTF8和UTF16、UTF32的区别之前,再先科普两个名词:UCS-2和UC ...
加解密相关知识及其背后原理阐述
加解密相关涉及到网络数据传输的且对传输的数据有安全性需求的,就需要传输数据之前对数据进行加密操作,常用的网络通信方式有
socket通信 —- 如 socket API编程
http协议通信 —- 如B/S模式
为保证网络通信时数据的安全,就需要对数据进行加密
常用的加密的方式对称加密加密和解密使用的是同一个秘钥
秘钥分发困难
加密效率高
安全级别低(相对与非对称加密)
AEAD解密方式
非对称加密
非对称加密可靠的前提在于: 对方真的是对方,非对称加密害怕被冒充
加密和解密所使用的秘钥不同,是一个秘钥对,包含:
公钥 — 可以公开的秘钥
私钥 — 不能公开的秘钥
传输的数据对谁更重要,谁就拿私钥
私钥加密,公钥解密的场景:可以用于确定该信息来自私钥拥有者
公钥加密,私钥解密的场景:可以用于向私钥拥有者传递数据防止被其他人解密
加密的过程:使用公钥加密,必须使用私钥解密;使用私钥加密,必须使用公钥解密
秘钥分发简单
加密效率低
安全级别高
加密需要实现:
秘钥生成,秘钥校验
秘钥生成模块应该与实际使用该模块的项目关 ...
windows开发相关知识点,涵盖部分驱动级内容
Win32需要学习哪些内容
字符
多线程
线程同步
窗口的本质
windows消息机制
子窗口的使用
进程
内存管理
文件系统
内存映射
DLL
远程注入
模块隐藏
进程通信
HOOK专题(各种类型HOOK/绕过全代码校验)
malloc在windows上的底层也是win32实现的
win32的API主要是存放在C:/IWINDOWS/system32和C:/IWINDOWS/SysWow64 下面的所有dll
SysWow64 存的是32位dll,而system32存的是64位DLL
几个重要的DLL:
Kernel32.dll:最核心的功能模块,比如管理内存,进程和线程相关的函数等。
User32.dll:是Windows用户界面相关应用程序接口,如创建窗口和发送消息等。
GDI32.dll:全程是Graphical Device Interface(图形设备接口),包含用于画图和显示文本的函数。
使用win32的api只需要包含头文件:#include<windows.h>
windows错误码查询 ...