关于夏天的一切

我总觉得对你的爱很美


  • Home

  • Archives

睡眠质量Checklist (个体经验值)

Posted on 2024-04-01 | In develop
  • 入睡时的咖啡因代谢剩余应当低于20mg
    • 咖啡因的代谢半衰期约为6.
    • 50mg的红牛在中午12点摄入, 那么在晚上12点后剩余约为12.5mg
    • 150mg的咖啡在中午12点摄入, 那么在晚上12点后剩余约为37.5, 即使能入睡也会影响到睡眠
    • 低因咖啡的含量约为10~20mg
  • 入睡前4个小时内不能有剧烈活动, 力量训练 短跑等.
Read more »

ssh 设置根据用户和目标服务器地址自动匹配私钥登录

Posted on 2024-01-18 | In develop

生成秘钥

1
2
3
4
5
ssh-keygen   

-f 指定文件名 默认为id_rsa
-t 指定类型 默认为rsa
-C 指定注释 默认无
Read more »

数字孪生空间

Posted on 2022-09-14 | In develop

我说
我梦见自己的房间里漂浮着流动的音箱 音符 钟表 时间表 曲线报表 关系报表
每个上面都有你的映像
有我们关系冷暖的时间曲线
准确说 我梦见了我处在有你在的数字孪生空间
我正努力的寻找每个数字拐点的节点时间和事件

你回复了我一句: 甜吗

我以为说的是数字: 不甜
但我突然想到你问的可能是我处在这样空间的感觉 问的是有你印记同在时我的感觉

我说: 等等 很甜

KCP协议栈

Posted on 2022-08-04 | In develop

KCP协议栈

简介

KCP是一个纯粹的ARQ协议 通过重传机制实现UDP数据包的可靠传输

  • 以比 TCP浪费10%-20%的带宽的代价 换取平均延迟降低 30%-40% 且最大延迟降低三倍的传输效果

  • 纯算法实现 并不负责底层协议 (如UDP)的收发

  • 需要使用者自己定义下层数据包的发送方式 以 callback的方式提供给 KCP

  • 连时钟都需要外部传递进来 内部不会有任何一次系统调用

  • 协议栈位置

    协议栈位置
    SESSION
    KCP(ARG)
    UDP(PACKET)
    IP
    LINK
    PHY
Read more »

detour_crowd-path_corridor

Posted on 2022-03-07 | In develop

走廊空间: DetourPathCorridor.h : class dtPathCorridor;

Read more »

OI卡常优化

Posted on 2021-11-15 | In develop

gcc-3.4.6为参考

O0

不做任何优化, 这是默认的编译选项.

O1

-O和-O1: 对程序做部分编译优化, 对于大函数,优化编译占用稍微多的时间和相当大的内存. 使用本项优化, 编译器会尝试减小生成代码的尺寸, 以及缩短执行时间, 但并不执行需要占用大量编译时间的优化.

  • fdefer-pop: 延迟栈的弹出时间. 当完成一个函数调用, 参数并不马上从栈中弹出, 而是在多个函数被调用后, 一次性弹出.

  • fmerge-constants: 尝试横跨编译单元合并同样的常量(string constants and floating point constants)

  • fthread-jumps: 如果某个跳转分支的目的地存在另一个条件比较,而且该条件比较包含在前一个比较语句之内,那么执行本项优化.根据条件是true或者false,前面那条分支重定向到第二条分支的目的地或者紧跟在第二条分支后面.

  • floop-optimize: 执行循环优化,将常量表达式从循环中移除, 简化判断循环的条件, 并且optionally do strength-reduction, 或者将循环打开等. 在大型复杂的循环中, 这种优化比较显著.

  • fif-conversion: 尝试将条件跳转转换为等价的无分支型式. 优化实现方式包括条件移动, min, max, 设置标志, 以及abs指令, 以及一些算术技巧等.

  • fif-conversion2基本意义相同, 没有找到更多的解释.

  • fdelayed-branch: 这种技术试图根据指令周期时间重新安排指令. 它还试图把尽可能多的指令移动到条件分支前, 以便最充分的利用处理器的治理缓存.

  • fguess-branch-probability: 当没有可用的profiling feedback或__builtin_expect时, 编译器采用随机模式猜测分支被执行的可能性, 并移动对应汇编代码的位置, 这有可能导致不同的编译器会编译出迥然不同的目标代码.

  • fcprop-registers: 因为在函数中把寄存器分配给变量, 所以编译器执行第二次检查以便减少调度依赖性(两个段要求使用相同的寄存器)并且删除不必要的寄存器复制操作.

Read more »

MEMORY OVERCOMMIT

Posted on 2021-11-15 | In develop

Memory Overcommit的意思是操作系统承诺给进程的内存大小超过了实际可用的内存.
一个保守的操作系统不会允许memory overcommit, 有多少就分配多少, 再申请就没有了, 这其实有些浪费内存, 因为进程实际使用到的内存往往比申请的内存要少
比如某个进程malloc()了200MB内存, 但实际上只用到了100MB, 按照UNIX/Linux的算法, 物理内存页的分配发生在使用的瞬间, 而不是在申请的瞬间, 也就是说未用到的100MB内存根本就没有分配, 这100MB内存就闲置了
下面这个概念很重要, 是理解memory overcommit的关键: *commit(或overcommit)针对的是内存申请, 内存申请不等于内存分配, 内存只在实际用到的时候才分配. *

Read more »

windows下安装WSL

Posted on 2021-07-02 | In develop

环境安装

安装指导

  • 打开windows 功能
    • 适用于linux的windows子系统
    • 虚拟机平台
    • 使用管理员权限打开命令行
      1
      dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart
  • 下载wsl_update_x64.msi
    WSL2 Linux kernel update package for x64 machines

    1
    wsl --set-default-version 2
  • 安装debian
    microsoft store 选择Debian

  • 设置root密码
    1
    sudo passwd root

secureCRT连接local shell

  • file->open local shell
  • 更改路径cmd.exe为bash.exe

cmake recent call 错误

1
2
3
4
5
6
7
8
9
1. Create file wsl.conf in /etc/ with content: 

# /etc/wsl.conf
[automount]
options = "metadata"
enabled = true

2. Reboot your wsl
wsl.exe -t Ubuntu // (or other e.g. Debian)

开发环境配置

Posted on 2021-07-02 | In develop

Sublime

1
2
3
4
5
6
// windows下使用unix换行符  
"default_line_ending": "unix",
// 制表符对应空格数量
"tab_size": 4,
// 制表符改为空格
"translate_tabs_to_spaces": false,

VS

  • 选项->文本编辑器->C/C++->常规 自动换行
  • 选项->文本编辑器->C/C++->制表符 插入空格
  • 选项->文本编辑器->C/C++->代码样式->格式设置 关闭clangformat

VSCODE

install “Remote - WSL”
install “Markdown All in One”
install “GitHub Theme”
设置选项搜索”eol” 设置为LF
设置选项搜索”font” 设置字体 Hack, Hack, Hack

备注

CR(Carriage Return)代表回车(转义序列\r),将光标移动到当前行的开头。
LF(Line Feed)代表“换行”,但你可能更熟悉术语换行符(转义序列 \n)。 (unix)
CRLF (windows采用)

git

config --global core.autocrlf [true|false|input]```
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
* autocrlf: true  
* 文件检出到本地为CRLF, 提交文件时替换为LF.
* autocrlf: input
* 文件检出到本地不转换, 提交文件时替换为LF.
* autocrlf: false
* 不做任何处理

```git config --global core.safecrlf [true|false|warn]```
* safecrlf: true
* 拒绝提交混合换行符
* safecrlf: false
* 不做检查
* safecrlf: warn
* 提交混合换行符时给出警告

## SecureCRT
Session Options 进行修改 保存到默认主题:

* Terminal-> Send Protocol NO-OP ervery 60 second
* Terminal->Appearance Font 11pt encoding UTF-8



## dos2unix
批量转换换行符

find ./ -name *.h | xargs dos2unix
```

高性能编程:内存访问性能分析和常见数据结构

Posted on 2021-06-04 | In develop

CPU CACHE

在计算机系统中,CPU高速缓存(英语:CPU Cache,在本文中简称缓存)是用于减少处理器访问内存所需平均时间的部件。在金字塔式存储体系中它位于自顶向下的第二层,仅次于CPU寄存器。其容量远小于内存,但速度却可以接近处理器的频率。

当处理器发出内存访问请求时,会先查看缓存内是否有请求数据。如果存在(命中),则不经访问内存直接返回该数据;如果不存在(失效),则要先把内存中的相应数据载入缓存,再将其返回处理器。

缓存之所以有效,主要是因为程序运行时对内存的访问呈现局部性(Locality)特征。这种局部性既包括空间局部性(Spatial Locality),也包括时间局部性(Temporal Locality)。有效利用这种局部性,缓存可以达到极高的命中率。

在处理器看来,缓存是一个透明部件。因此,程序员通常无法直接干预对缓存的操作。但是,确实可以根据缓存的特点对程序代码实施特定优化,从而更好地利用缓存。

Read more »
12…6<i class="fa fa-angle-right"></i>
夏天

夏天

59 posts
1 categories
© 2024 夏天
Powered by Hexo
Theme - NexT.Gemini