苏轼
临江仙
夜饮东坡醒复醉,归来仿佛三更。家童鼻息已雷鸣。敲门都不应,倚杖听江声。
长恨此身非我有,何时忘却营营?夜阑风静縠纹平。小舟从此逝,江海寄余生。
西江月·世事一场大梦
世事一场大梦,人生几度秋凉?夜来风叶已鸣廊。看取眉头鬓上。
酒贱常愁客少,月明多被云妨。中秋谁与共孤光。把盏凄然北望。
江城子·乙卯正月二十日夜记梦
十年生死两茫茫,不思量,自难忘。
千里孤坟,无处话凄凉。
纵使相逢应不识,尘满面,鬓如霜。
夜来幽梦忽还乡,小轩窗,正梳妆。
相顾无言,惟有泪千行。
料得年年肠断处,明月夜,短松冈。
念奴娇·赤壁怀古
大江东去,浪淘尽,千古风流人物。
故垒西边,人道是,三国周郎赤壁。
乱石穿空,惊涛拍岸,卷起千堆雪。
江山如画,一时多少豪杰。
遥想公瑾当年,小乔初嫁了,雄姿英发。
羽扇纶巾,谈笑间,樯橹灰飞烟灭。
故国神游,多情应笑我,早生华发。
人生如梦,一尊还酹江月。
水龙吟·次韵章质夫杨花词
似花还似非花,也无人惜从教坠。抛家傍路,思量却是,无情有思。萦损柔肠,困酣娇眼,欲开还闭。梦随风万里,寻郎去处,又还被、莺呼起。
不恨此花飞尽,恨西园、落红难缀。晓来雨过,遗踪何在?一池 ...
SSR 安装
安装并开启SSR
1234567891011121314git clone -b master https://github.com/flyzy2005/ss-flyss-fly/ss-fly.sh -ssr...Congratulations, ShadowsocksR server install completed!Your Server IP : xxx.xxx.xxx.xxx Your Server Port : 12210 Your Password : passwordYour Protocol : origin Your obfs : plain Your Encryption Method: aes-256-cfb Welcome to visit:https://shadowsocks.be/9.htmlEnjoy it!
相关操作ssr命令
12345678启动:/etc/init.d/shadowsocks start停止:/etc/init.d/shadowsocks ...
Linux 启动优化
启动流程
Linux 系统当前的启动流程如下:
1brom --> boot0 --> (monitor/secure os) --> uboot --> rootfs --> app
brom 固化在 IC 内部,芯片出厂后就无法更改。后续将从 boot0 开始分阶段介绍启动优化的方法。
对于某些方案,会存在 monitor 或 secure os,这两者耗时很短,略过。
下文涉及到一些配置文件,提前在此说明。
env 配置文件路径:
123sdk/device/config/chips/<chip>/configs/<board>/linux/env-<kernel-version>.cfg #优先级高sdk/device/config/chips/<chip>/configs/default/env.cfg #优先级低sdk/target/allwinner/<board>/configs/env-<kernel-version>.cfg #旧 SDK
sys_config.f ...
李清照
一剪梅·红藕香残玉簟秋
红藕香残玉簟秋。轻解罗裳,独上兰舟。云中谁寄锦书来,雁字回时,月满西楼。
花自飘零水自流。一种相思,两处闲愁。此情无计可消除,才下眉头,却上心头。
如梦令·常记溪亭日暮
常记溪亭日暮,沉醉不知归路。
兴尽晚回舟,误入藕花深处。
争渡,争渡,惊起一滩鸥鹭。
如梦令·昨夜雨疏风骤
昨夜雨疏风骤,浓睡不消残酒。
试问卷帘人,却道海棠依旧。
知否,知否?应是绿肥红瘦。
醉花阴·薄雾浓云愁永昼
薄雾浓云愁永昼,瑞脑消金兽。佳节又重阳,玉枕纱橱,半夜凉初透。
东篱把酒黄昏后,有暗香盈袖。莫道不销魂,帘卷西风,人比黄花瘦。
南歌子·天上星河转
天上星河转,人间帘幕垂。凉生枕簟泪痕滋。起解罗衣聊问、夜何其。
翠贴莲蓬小,金销藕叶稀。旧时天气旧时衣。只有情怀不似、旧家时。
点绛唇·蹴罢秋千
蹴罢秋千,起来慵整纤纤手。露浓花瘦,薄汗轻衣透。
见客入来,袜刬金钗溜。和羞走,倚门回首,却把青梅嗅。
清平乐·年年雪里
年年雪里,常插梅花醉。挼尽梅花无好意,赢得满衣清泪。
今年海角天涯,萧萧两鬓生华。看取晚来风势,故应难看梅花。
武陵春·春晚
风住尘香花已尽,日晚倦梳头。物是人非事事休, ...
北岛的诗
😭北岛的长诗《白日梦》的第四节
你没有如期归来
而这正是离别的意义
一次爱的旅行
有时候就象抽烟那样
简单
地下室空守着你
内心的白银
水仙花在暗中灿然开放
你听凭所有的坏天气
发怒、哭喊
乞求你打开窗户
书页翻开
所有的文字四散
只留下一个数字
--我的座位号码
靠近窗户
本次列车的终点是你
😧过节(北岛)
毒蛇炫耀口中的钉子
大地有著毒蛇
吞吃鸟蛋的寂静
所有钟表
停止在无梦的时刻
丰收聚敛着
田野死后的笑容
从水银的镜子
影像成双的人们
乘家庭的轮子
去集市
一位本地英雄
在废弃的停车场上
唱歌
玻璃晴朗
桔子辉煌
😶🌫️回答(北岛)
卑鄙是卑鄙者的通行证,
高尚是高尚者的墓志铭,
看吧,在那镀金的天空中,
飘满了死者弯曲的倒影。
冰川纪过去了,
为什么到处都是冰凌?
好望角发现了,
为什么死海里千帆相竞?
我来到这个世界上,
只带着纸、绳索和身影,
为了在审判前,
宣读那些被判决的声音。
告诉你吧,世界
我——不——相——信!
纵使你脚下有一千名挑战者,
那就把我算作第一千零一名。
我不相信天是蓝的,
我不相信雷的回声,
我不相信梦是假的,
我不相信死无报应。
如果 ...
Linux 系统裁剪
系统裁剪简介
固件中通常包含 boot0、 uboot、 kernel、 rootfs 等镜像。基于经验,各个镜像尺寸的量级如下表所示:
Image
size
boot0
< 100k
uboot
< 1M
kernel
3-15M
rootfs
> 4M
可以看到 boot0、 uboot、 kernel、 rootfs 的尺寸是依次增大的。对于大尺寸的裁剪效果往往比小尺寸的裁剪效果明显,比如 rootfs 裁剪 1M 可能很容易,对于 uboot 来说,则非常困难。因此,后续主要介绍 kernel 以及 rootfs 的裁剪。
boot0 裁剪
由于 boot0 很小,通常来说 boot0 代码也不开源,因此略过。
uboot 裁剪
uboot 代码位于 sdk/vendor/brandy/u-boot 目录下,主要有下面两种裁剪思路:
修改 uboot 配置文件,删减不需要的配置。 uboot 配置文件通常位于源码下 include/configs/${CHIP}.h 或者 configs/${CHIP}_*_defconfi ...
用户空间 backtrace
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364#include <execinfo.h>#include <stdio.h>#include <stdlib.h>#include <string.h>#define MAX_FRAMES 10int myfunc1(int);int myfunc2(int);int myfunc3(int);void printCallers(){ int layers = 0, i = 0; char ** symbols = NULL; void * frames[MAX_FRAMES]; memset(frames, 0, sizeof(frames)); layers = backtrace(frames, MAX_FRAMES); for (i=0; i<l ...
Linux 内存优化
内存使用情况分析
DRAM 大小
硬件上 DDR 确定之后, DRAM 大小就已经确定。
uboot 会根据 DRAM 驱动提供的接口获取 DRAM 的大小,然后修改 dts 中的 memory 节点,Linux 启动时解析 dts 获取 DRAM 的大小。 uboot 启动 log 中会打印 dram 的大小。比如 R329 方案 uboot 启动时会有如下 log:
1[01.300]DRAM: 128 MiB
执行: 123root@TinaLinux:/# hexdump -C /sys/firmware/devicetree/base/memory@40000000/reg00000000 00 00 00 00 40 00 00 00 00 00 00 00 08 00 00 00 |....@...........|00000010
也可以获取 dram 的起始地址与大小。如下面 R329 例子所示,其中 0x40000000 为起始地址, 0x08000000 为 dram 的 size.
系统内存使用情况
free 命令
进入 Linux 用户空间,执行 free ...
Linux 性能分析
cpu 使用分析
top 命令
1procps-ng-top -H -p 899 -w 120
-H 是线程模式
-p 指定进程 id
-w 指定显示宽度(列数)
-d 指定延时 ,屏幕更新间隔
shift+p 按照 cpu 使用率对线程排序。如下是一个实例:
123456789101112131415161718192021222324procps-ng-top - 10:11:13 up 1:00, 0 users, load average: 3.90, 4.10, 3.89Threads: 81 total, 0 running, 81 sleeping, 0 stopped, 0 zombie%Cpu0 : 46.6/30.7 77[||||||||||||||||||||||||||||||||||||||||| ]GiB Mem : 84.5/0.239 [ ]GiB Swap: 0.0/0.000 ...
Leaktrace 使用方法
概述
LeakTracer 是在检查 C++ 程序内存泄漏时编写的一个小工具。我无法让 dmalloc 显示我想要的内容,我只看到了提到的 __builtin_return_address gcc-extension。
要使用 LeakTracer,请使用提供的 LeakCheck 脚本运行您的程序。它使用 LD_PRELOAD 特性在你的函数之上“覆盖”一些函数(不需要重新编译)。如果您的平台不支持 LD_PRELOAD,您可以将 LeakTracer.o 对象文件添加到 Makefile 中的对象并运行您的应用程序。
LeakTracer 利用 gdb 去输出发生内存泄露所发生的位置,它是通过 override operator new, operator delete, operator malloc, operator free 来实现检测。
用法
加载 leaktracer 库的 3 种方法:
将您的程序链接到 libleaktracer.a
将您的程序链接到 libleaktracer.so。您需要将 -lleaktracer 选项作为链接命令的第一个选项
使用 LD_ ...