Open utterances-bot opened 1 year ago
这里是哦吼的思考片段集合,仅作为个人使用,请勿评论。 关于我: http://center.silence.pink/all-in-one/about-me.html 站点: http://www.silence.pink
test image
https://ubuntu.com/about/release-cycle#ubuntu 通过上面链接可以知道:
YY.MM
的形式,对应其发行的年份和月份,比如23.04
是23年04月发行的22.04
的代号是Jammy Jellyfish
,是一只水母.04
结尾的是长期版本,.10
结尾的是临时版本cat /etc/os-release
hostnamectl
cat /proc/version_signature
uname -r
/usr/include/linux/version.h
=> LINUX_VERSION_CODE
Ubuntu版本生命周期:
Ubuntu 版本与内核对应关系:
信息流、碎皮化的时代,讯息多到稍后一万年阅读。严格来讲,是我们没控制好讯息入口即输入。让分散于各个平台的信息聚集到一处呈现,十分有益于解放生产力,专注于核心事物的处理。而all in one便是如此主题。当我遇到如此难题准备自行造轮子解决时,却发现cubox pocket notion等早已给出方案,并且相当成熟。 因而核心问题在于,如何将纵横交错的网络川流汇于一处,让所有的关注、跟踪、发现都能得到及时响应,无需人为干预。 说白了现在就是专注力商品化的时代,流量就是对人专注力的收割。如果之前有人把人口比作经济的原石,那么现在,专注力就是信息数据爆炸时代的原石。谁掌握了原石,谁拥有足够多的原石,谁就掌握了话语权,以及权力带来的一切。
《明天会更好》是一首好歌,“明天会更好”是一个好期盼。当下,寄希望于“明天会更好”的前提是,昨天的“明天”按时发生“更好”,因而话题总是回归到活在当下。那,活在当下便是更好的明天。
being toward dead 向死而生 being toward future 向着未来而生
如果自己就是潮水的一部分,怎么能看见潮流的方向呢?你只能永远保持质疑:什么话是我不能说的?为什么?
时而感觉自己一事无成,我心浮躁,想去奔跑,奔跑八百里,还是偶尔想要伟大,什么时候才伟大。
你必须把橘子放在你看得到、够得着的地方,只有这样你才会想起来有一个橘子需要吃。 只有你把问题、事情放在每天醒来就能看到、想起的地方,事情才会得到临幸。你知道,很多问题连被临幸的机会都没有,消散埋没在那些昏暗的角落。
有一个话题在网络中被反复讨论提及,它是“原始资本的积累”。 过来人都在建议,抓紧完成人生原始资本的积累,只有当完成原始资本的积累,才有做更大事的继续。资本并不一定指金钱。 对于程序员,原始的技术积累应尽快完成。在工作5年再去谈论基础没有意义,这些基础的技术资本早应该在大学或初入职场1~3年完成。
Qt 界面开发,主题切换控制: 使用CSS的预编译处理器语言:Sass,Less CSS没有变量,但是Sass提供了类似编程式的编写 一旦有了变量 那么就好吧许多了 Qt简化,编程Sass ====> 生成 css
一种设计模式,其核心思想是将类的实现细节封装到一个独立的类中,通过指针引用这个实现类,实现接口和实现的分离。
// Widget.h
class Widget {
public:
Widget();
~Widget();
void doSomething();
private:
class Impl;
Impl* pImpl;
};
// Widget.cpp
#include "Widget.h"
class Widget::Impl {
public:
void doSomething() {
// 实现细节
}
};
Widget::Widget() : pImpl(new Impl()) {}
Widget::~Widget() {
delete pImpl;
}
void Widget::doSomething() {
pImpl->doSomething();
}
好处/优势:
信息隔离: Pimpl使得类的实现细节被封装在独立的类中,只在实现文件中暴露,从而有效地实现了信息隔离。
二进制兼容性 Pimpl技术对于类的修改提供了更大的灵活性,可以在不破坏二进制兼容性的前提下进行修改。
实现细节的封装 通过Pimpl,我们可以将实现细节从头文件中移除,使得头文件更加简洁,同时避免了暴露过多的细节给用户。
RAII 的核心思想是"资源的获取就是初始化的过程"。这一理念主张,资源的生命周期应该由对象的生命周期来管理。具体来说,当一个对象被创建时,它负责获取所需的资源;当对象被销毁时,它负责释放这些资源。
当我在工作时,我能为公司带来什么?公司能为带来什么? 直观上,工作就是我替老板解决问题,老板支付我薪水,只不过”解决问题“这一概念被按小时、按天而量化。而我们不过是在用时间换取薪酬,这样的方式很难创造出更大的价值。 工程师的职责是快速的解决一切问题,以问题和需求为导向,以解决问题为目的,不对自己设限,设限于具体的技术,一切为解决问题服务。而充分的知识储备是快速拿出解决方案的基础,因而又需要广泛地涉略。 当考虑学习一门新技术时,考虑技术可以用来解决当下的什么事情,做出实践,让双手脏。所以,工程师不会再以追逐技术为目的,他们时刻实践技术,时刻将技术应用于解决实际问题,知行合一。
https://www.conventionalcommits.org/zh-hans/v1.0.0/
摘录:
<类型>[可选 范围]: <描述>
[可选 正文]
[可选 脚注]
提交说明包含了下面的结构化元素,以向类库使用者表明其意图:
其它提交类型在约定式提交规范中并没有强制限制,并且在语义化版本中没有隐式影响(除非它们包含 BREAKING CHANGE)。 可以为提交类型添加一个围在圆括号内的范围,以为其提供额外的上下文信息。例如 feat(parser): adds ability to parse arrays.。
在C/C++项目中,使用Rust 的 rustc-demangle 库进行 Rust 语言的 demangle :
rustc-demangle Header file:
// ~/third_party/rustc-demangle/crates/capi/include/rustc_demangle.h
#ifndef RUST_DEMANGLE_H_
#define RUST_DEMANGLE_H_
#ifdef __cplusplus
extern "C" {
#endif
// Demangles symbol given in `mangled` argument into `out` buffer
//
// Returns 0 if `mangled` is not Rust symbol or if `out` buffer is too small
// Returns 1 otherwise
int rustc_demangle(const char *mangled, char *out, size_t out_size);
#ifdef __cplusplus
}
#endif
#endif // RUSTC_DEMANGLE_H_
C/C++ Code:
// main.cc
#include <iostream>
#include "rustc_demangle.h"
#define UASGE_STR "usage: ./cpp-rust-demangle xxxxx"
#define ERROR_STR "error: `mangled` is not Rust symbol or `out` buffer is too small."
int main(int argc, char*argv[]) {
if(argc != 2) {
std::cout << UASGE_STR << std::endl;
return -1;
}
// Returns 0 if `mangled` is not Rust symbol or if `out` buffer is too small
// Returns 1 otherwise
char *out = new char[4096]{0};
if(1 == rustc_demangle(argv[1], out, 4096)) {
std::cout << out << std::endl;
}
else {
std::cout << ERROR_STR << std::endl;
}
delete []out;
return 0;
}
CMakelists.txt :
cmake_minimum_required (VERSION 3.20)
project (cpp-rust-demangle)
# Baseline build flags.
set(CMAKE_CXX_FLAGS "-std=c++11 -W -Wall -Wno-sign-compare")
set(CMAKE_CXX_FLAGS_DEBUG "-g1")
set(CMAKE_CXX_FLAGS_RELEASE "-O2")
set(CMAKE_CXX_FLAGS_RELWITHDEBINFO "-O2 -g1")
include_directories(third_party/rustc-demangle/crates/capi/include)
link_directories(third_party/rustc-demangle/target/release)
set(LIBBLOATY_LIBS "${LIBBLOATY_LIBS}" rustc_demangle)
add_executable(cpp-rust-demangle main.cc)
target_link_libraries(cpp-rust-demangle "${LIBBLOATY_LIBS}")
Out:
./cpp-rust-demangle _RNvYINtNtCsgmWPF0mSM2r_6rustls6stream6StreamNtNtNtB7_6client11client_conn16ClientConnectionNtNtNtCsauG8OnmUqT_3std3net3tcp9TcpStreamENtNtB1x_2io5Write9write_allCsjyt65HNCFtD_12simpleclient
<rustls::stream::Stream<rustls::client::client_conn::ClientConnection, std::net::tcp::TcpStream> as std::io::Write>::write_all
现在所有的 UCG 应用对用户都太不公平了,用户不断输出内容,平台从用户这里赚取流量、热度,但是整个过程产生的收益都流向了平台。平台与用户间的关系是利用与被利用,完全是不平等的条约。 未来的趋势一定是收益会匀点给用户,甚至平台访问用户的数据、隐私都应该需要支付数据费用,用户绝不能在继续被收割。
过去一段时间,我总是在“补觉”,试图通过在周末晚起来弥补平常睡眠的不足,但不见成效,甚至陷入了一种缺觉--》补觉--》精神睡不着--》缺觉--》补觉的怪圈。
近来,我去看了中医,渴望能通过中医调理的方式改善一下睡眠状况。然而,我发现,医生的“望闻问切”结束如此迅速和潦草,让不禁我怀疑起调理的真实效果如何。诚然,中药肯定是能起到一定的调理作用的,但是既然是调理,那么更多的是依靠个人自觉的力量,调理的的最终结果是规律,符合自己身体的自然。
因而,我决定不能在陷入循环的怪圈之中,规律的早睡早起比起周末的疯狂补觉,从短期来看,肯定是痛苦的,但规律的好处在于,一旦适应,那便会形成一种自然力,无需额外的精力驱动。
所以,早睡早起吧,即使是在周末。
1 Executable programs or shell commands
2 System calls (functions provided by the kernel)
3 Library calls (functions within program libraries)
4 Special files (usually found in /dev)
5 File formats and conventions eg /etc/passwd
6 Games
7 Miscellaneous (including macro packages and conventions), e.g. man(7), groff(7)
8 System administration commands (usually only for root)
9 Kernel routines [Non standard]
数字 | 说明 |
---|---|
1 | 可执行程序或 Shell 命令 |
2 | 系统调用(内核提供的函数) |
3 | 库调用 |
4 | 特殊文件(通常位于 /dev 目录) |
5 | 文件格式和约定(比如 /etc/passwd) |
6 | 游戏 |
7 | 杂项(包和一些约定)Miscellaneous (including macro packages and conventions), e.g. man(7), groff(7) |
8 | 系统管理命令(通常是 root 用户执行的命令) |
9 | 内核相关的文件 Kernel routines [Non standard] |
kind(种类): 指性质相同,而特征很相似 type(类型): 客观界限比较清楚,有相同本质特点的同类事物 class(门类,纲.,类): 正式用词,表示"纲" classification:指根据已经确定的类型对某一实物做归类 category(标准,标签,类别):通常用于描述一组相似的事物或概念的集合
堆、栈的地址高低? 栈的增长方向? - RednaxelaFX的回答 - 知乎 https://www.zhihu.com/question/36103513/answer/66101372
先说结论(看RednaxelaFX的回答):
进程地址空间的分布取决于操作系统,栈向什么方向增长取决于操作系统和CPU。
首先,需要明确 栈 到底值的是什么:函数调用栈(call stack)和 函数栈帧(stack frame)
“栈” 指的是 函数调用栈。每次函数调用会在栈上分配一个栈帧,被调函数结束,栈恢复到调用函数的栈帧。
被调函数(callee)的栈帧相对调用函数(caller)的栈帧的位置反映了栈的生长方向。
而在函数栈帧中,函数参数、局部变量的内存布局(栈帧布局 stack frame layout)是由编译器的ABI的决定的。
数组:数组元素分布在一段连续递增的地址上,也就是说a[1]的地址总是高于a[0]。
double a0[4]这个声明告诉编译器的是:我需要在栈帧里分配一块连续的空间,大小为sizeof(double)*4,并且让a0引用该空间的起始位置(最低地址);
很多文章提到C/C++内存管理中的栈是向下生长(高地址向低地址)的,也有人给出的答案是向上生长的,甚至还贴出了代码以论证。
比如,这位仁兄试图通过以下代码论证栈的生长方向。但其实,这种方法是不严谨的,甚至是错误的。因为比对函数参数、局部变量的地址,其实是在论证编译器的ABI,可能a先压栈也有可能c先压栈。
// https://blog.csdn.net/weixin_43083491/article/details/115386238
void test_example(int a,int b,int c)
{
int arr[2] = {1,2};
int d = 0;
int e = 0;
printf("a:%d a_ptr: %p, b: %d b_ptr: %p, c: %d c_ptr: %p \n",a,&a,b,&b,c,&c);
printf("d: %d d_ptr:%p , e: %d, e_ptr: %p \n",d,&d,e,&e);
printf("arr: %p \n",arr);
memcpy(&e,arr,sizeof(arr));
printf("c: %d c_ptr: %p, d: %d e: %d ",c,&c,d,e);
}
要论证栈的生长方向,得从函数调用的角度着手:
如果 a 的地址高于 b 的地址,说明栈是向上生长的;
如果 b 的地址高于 a 的地址,说明栈是向下生长的。
void foo() {
int a = 0;
}
void bar() {
int b = 0;
foo();
}
内存管理的功能有:
其实个人感觉下面这种分区方式有点不太严谨,从程序的角度来说:
静态的时候:有data段、text段、.bss段 (其实段多个section合并的而成,这时候叫段也不太严谨)
运行的时候:有data段、text段、栈、堆区(.bss是未初始化的数据,但是不包含在程序内,因为这部分有系统创建),而data段其实是 .data section 和 .rodata section的合并,(很显然那么常量就应该在.rodata)
所以,感觉下面这种什么全局。。。常量的分类是不太严谨的。
不过从语言的角度来讲,也没啥问题。
内存泄漏 memory leak:分配的内存没有释放,
野指针 wild pointer :指针未初始化
悬空指针 dangling pointer :指向的内存已被释放,或指向的内存已被释放但任然使用。(避免的方式就是内存释放后,指针要赋值nullptr)
多次释放 double free :同一内存被多次释放
越界访问
智能指针 smart pointer
shared_ptr
unique_ptr
weak_ptr
RAII (Resource Acquisition Is Initailization):在构造时获取,在析构时释放
一门现代编程语言通常由以下几个组成部分构成:
语法:语言的基本结构和规则,包括关键字、标识符、运算符、数据类型等。良好的语法设计可以提高代码的可读性和可维护性。
语义:语言的含义和行为,即代码在执行时的预期结果和行为。语言的语义定义了程序员可以使用的语言特性以及它们的行为方式。
标准库:一组预先编写好的函数和类,可供程序员使用以实现常见任务,如字符串处理、文件操作、网络通信等。标准库的丰富性和实用性对于编程语言的生态系统至关重要。
工具链:编译器、解释器、调试器、构建系统等工具的集合,用于开发、调试和部署程序。优秀的工具链可以提高开发效率和代码质量。
社区和生态系统:由开发者、用户、文档、教程、框架、库等组成的生态系统,对于语言的发展和推广起到至关重要的作用。一个活跃的社区可以为语言的学习和使用提供支持和资源。
扩展性和灵活性:现代编程语言通常支持模块化、泛型编程、元编程等特性,以便程序员可以根据需要扩展语言的功能和特性,提高代码的复用性和可扩展性。
跨平台性:随着计算机和移动设备的多样化,一门现代编程语言通常需要支持多个平台,如Windows、Linux、macOS、Android、iOS等,以确保程序能够在不同的环境中运行和部署。
比如C++的学习路线 https://roadmap.sh/cpp
最近又在学 modern C++ 的知识,给我弱小的心灵带来了巨大的震撼,真**博大精深啊。
职业生涯第一次提辞职,未来充满着未知和挑战,心情忐忑不安,拥抱未知吧。
曾经以为,当我要离开南京时背景配乐应该会是《你离开了南京,从此没有人和我说话》最为贴切; 而今,真的准备要离开时,满脑子里想的却是声音碎片乐队的《黄金时代》,歌词不断在脑海里浮现:
“继续摇摆吧,我的天真老朋友”
“只有滚动的石头,才能不长青苔”
是啊,只有滚动的石头,才能不长青苔。
Ohh's Site - thinks
http://silence.pink/