投资企业的几种类型 --- 牢记于心

冯柳的一个帖子中说道, 企业分成几类:

  • 不作死就不会死
  • 作死也死不了
  • 不作死都能死

其中 :

类型一:地方酒、发达地区城商行、民营险资、细分龙游消费股属于不作死就不会死

类型二: 央企保险公司、六大国有银行、头部券商、煤炭、电力、石油、头部白酒、啤酒、牛奶都属于作死也死不了的;

类型三:汽车、科技、零售、医药、中断制造业、时尚快消品(如化妆品、女装)这些就属于不作死(不进步)都能死

所以从保本收益的情况来看, 后续的投资标的只能从类型二里面出,避免想赚快钱,比如再遇到协鑫科技这类股票,安全边际非常不够;

阅读更多

使用 QEMU 启动 ARM aarch64 架构 Ubuntu 虚拟机

本文将介绍如何使用 QEMU 启动 aarch64 架构的 Ubuntu 操作系统以及宿主机上相关配置的操作方法。

安装 QEMU

安装启动 aarch64 ubuntu 所需的依赖程序:

1
2
3
4
sudo apt install qemu-kvm libvirt-daemon-system libvirt-clients bridge-utils virtinst virt-manager qemu
sudo apt install qemu-system-aarch64
sudo apt install qemu-efi-aarch64
sudo apt install qemu-utils

创建镜像

1
2
3
4
5
6
7
8
9
10
dd if=/dev/zero of=flash1.img bs=1M count=64
dd if=/dev/zero of=flash0.img bs=1M count=64
dd if=/usr/share/qemu-efi-aarch64/QEMU_EFI.fd of=flash0.img conv=notrunc


wget http://ports.ubuntu.com/ubuntu-ports/dists/xenial-updates/main/installer-arm64/current/images/netboot/mini.iso

qemu-img create ubuntu-image.img 20G


安装系统

1
2
3
4
5
6
qemu-system-aarch64 -nographic -machine virt,gic-version=max -m 512M -cpu max -smp 4 \
-netdev user,id=vnet,hostfwd=:127.0.0.1:0-:22 -device virtio-net-pci,netdev=vnet \
-drive file=ubuntu-image.img,if=none,id=drive0,cache=writeback -device virtio-blk,drive=drive0,bootindex=0 \
-drive file=mini.iso,if=none,id=drive1,cache=writeback -device virtio-blk,drive=drive1,bootindex=1 \
-drive file=flash0.img,format=raw,if=pflash -drive file=flash1.img,format=raw,if=pflash

启动镜像

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
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
网络架构:
+-----------------------------------------------------------------+
| Host |
| +---------------------+ |
| | | |
| | br0: | |
| | 192.168.199.32/24 +-----+ |
| | | | |
| +----+----------------+ | +-------------------------+ |
| | | | Guest | |
| | | | +---------------------+ | |
| +----+----------------+ +--+---+ | | | | |
| | | | | | | eth0: | | |
| | enp3s0: | | tap0 | | | 192.168.199.33/24 | | |
| | 192.168.199.30/24 | | +-----+ | | |
| | | | | | +---------------------+ | |
| +---------------------+ +------+ +-------------------------+ |
+-----------------------------------------------------------------+


# 配置网桥
sudo ip link add name br0 type bridge
sudo ip link set dev br0 down
sudo ip addr flush dev br0
sudo ip addr add 192.168.199.32/24 dev br0
sudo ip link set dev br0 up

# 配置 tap 设备 tap0:
sudo ip tuntap add name tap0 mode tap
sudo ip link set dev tap0 up

# 将宿主机网络接口 enp3s0 和 tap0 接入网桥 br0:
sudo ip link set enp3s0 master br0
sudo ip link set tap0 master br0

# 启动虚拟机系统:
sudo qemu-system-aarch64 -nographic -machine virt,gic-version=max -m 1G -cpu max -smp 4 \
-netdev tap,id=mynet0,ifname=tap0,script=no,downscript=no \
-device virtio-net-pci,netdev=mynet0,mac=$(qemu-mac-hasher.py ubuntu1604-arm64) \
-drive file=ubuntu-image.img,if=none,id=drive0,cache=writeback \
-device virtio-blk,drive=drive0,bootindex=0 \
-drive file=flash0.img,format=raw,if=pflash -drive file=flash1.img,format=raw,if=pflash \
-device virtio-rng-pci

# 以上命令指定 qemu 使用 tap 设备作为虚拟机网络接口并且指定使用刚刚创建的 tap0 接口。

# 为了指定虚拟器的 MAC 地址我们使用一个脚本来为每个虚拟机生成特定地址。MAC 地址的生成脚本如下:

# qemu-mac-hasher.py
#!/usr/bin/env python
# usage: qemu-mac-hasher.py <VMName>
import sys
import zlib

crc = str(hex(zlib.crc32(sys.argv[1].encode("utf-8"))))[-8:]
print("52:54:%s%s:%s%s:%s%s:%s%s" % tuple(crc))

# 虚拟机启动后根据需要配置其网络参数即可。

网络优化

以上步骤完成后虚拟机可与宿主机所在网络的其他设备互连(包括宿主机),也可以通过指定的网关连接互联网,但是此时宿主机无法连接互联网,解决方法如下:

删除 enp3s0 接口的默认网关, 为 br0 添加默认网关:

1
2
sudo ip route del default dev enp3s0
sudo ip route add default via 192.168.199.1 dev br0

iperf2 交叉编译 ARM64 static版本

编译静态版本的iperf2,到嵌入式环境进行测试;

iperf2 可以利用多核多线程并行测试,iperf3的多核是运行在一个物理核上面,只是软件意义上的多核;

1
2
3
4
5
(base) root@mengxia01:~/code/iperf-2.0.4-RELEASE# diff config.h ../iperf-2.0.4-arm/config.h
258c258
< //#define bool int
---
> #define bool int
1
2
#编译命令
./configure --host=arm CC=aarch64-linux-gnu-gcc CXX=aarch64-linux-gnu-g++ CFLAGS="-static -fPIE -fPIC" LDFLAGS="-static -fPIE -fPIC"

Linux perf工具静态编译

在嵌入式环境中,有时候相关库比较少,所以需要单独编译静态版本的perf工具去定位问题,这里仅仅作为关键步骤记录,以备后续查阅

阅读更多

协鑫科技 --- 二次失利总结

第一次失利:
均价:2.5 离场:1.5, 亏损:40%

第一次购买协鑫科技的时候,还是2020年, 那个时候我盘点大盘可能会持续走低,本来就清空了所有股票,可是被别人消息说,协鑫科技颗粒硅怎么怎么样,没忍住,持续性的加仓,从2.8一直加仓到2.2,把均价干到了2.5,但是实际上对这只股票根本没有分析,也没有仔细去看这只股票的安全边际;

买股票, 第一要考虑是否有足够的安全边际坚决不做小盘股

第二次失利:
均价:1.1 离场:0.85, 亏损:23%

这一次更多的是看到协鑫这一两年的表现一直在一个区间内波动,想去赚这个投机的钱,结果投机钱没有赚到,本金亏了不少;
也不敢持续加仓,因为没有看到安全边际;

总结一下原则:

  • 坚决不买小盘股,只做国家拖底的行业;
  • 只做安全边际高的行业
  • 不做科技类行业,就算赚的少也不买
阅读更多

2025 预算及消费

今年整体看看每年的消费,做一个预算与消费的统计吧,感觉每个月花费有点大,要稍微控制一下;

3月份预算

  • 房贷-> 邮政+北京银行合计 : 11000
  • 饮食-> 100 * 30 : 3000
  • 请客送礼: 2000
  • 水电话费: 1000
  • 娱乐 : 1500
  • 生活杂费: 1500

合计:20000


3月份消费

三月份因为一些意外的事情,消费远远超过了预期,总计支出:70131.94

因为自己的原因吧,出了一些额外的消费,这部分支出:42752.15,

剩下的就是:27397.79, 实际上预算是20000, 超过预算 36%

  • 贷款 : 11000
  • 娱乐 : 9344.34
  • 三餐 : 3429.78
  • 电器 : 1942.66
  • 衣服: 261.7
  • 其它: 1401.31

从这里看预算主要在娱乐上超过了太多,如果把娱乐这部分的费用控制一下,实际上应该是在预算内能够完成的;


4月份预算

  • 房贷-> 邮政+北京银行合计 : 11000
  • 饮食-> 100 * 30 : 3000
  • 请客送礼: 1000
  • 水电话费: 1000
  • 娱乐 : 500
  • 生活杂费: 500
  • 电器分期: 2000
    合计:19000

2025年的计划

2024年12月29日,今天跟老父亲徒步了12公里,在西湖以及灵隐寺好好逛了一下,也算是弥补父亲来杭州几个月没有带他出去走走的遗憾!
我的父亲

24年已经快过完了,也到时候需要好好思考明年的规划的时候; 虽然坦白说,每年都会给自己做很多的计划,规划,最后似乎都没有达成,但是总觉得,做了总比不做要强,至少有一个地方提醒着自己,有些事情还需要自己完成;

想从这几个方面想一下25年的事情:

  • 职业规划
  • 工作
  • 生活
  • 学习
    感情暂时先不写吧,因为这件事是我一直犹豫不定的,暂且就先这样吧,人之所以为人,可能就是因为有感情,当然也可能是有借口;
阅读更多

backtrader 简单双均线策略

策略的主要行为:
1) 初始化5日均线以及20日均线,sma5, sma20
2) sma5上穿sma20买入
3) sma5 下穿sma20卖出

策略绩效:

1
2
Starting Portfolio Value: 100000.00
Final Portfolio Value: 99796.00
阅读更多

backtrader (一)

当前组合版本: numpy==1.23.5 backtrader==1.9.78.123 matplotlib==5.6

但是始终在调用plot的时候出现错误:

1
2
AttributeError: 'Plot_OldSync' object has no attribute 'mpyplot'

尝试过不同的版本,都解决不了这个问题,目前尚不知道什么原因,暂时不使用画图,或者后续有空了用pyecharts自己画;

阅读更多

自洽

我经常喜欢问自己,什么样的人生是自己想要的; 或者说,怎么样才能过好自己的一生;
以前听过一句话,“不因虚度年华而悔恨,不因碌碌无为而羞耻”,出自《钢铁是怎样练成的》, 颇为赞同!
那么,怎么样才能不会虚度年华呢?怎么又算不碌碌无为呢?最终的结果取决于如何定义虚度年华,如何定义碌碌无为,如何做到对其逻辑自洽,不会陷入内耗中,欣然面对一切;

阅读更多