0%

自用装机清单

游戏机

22年11.1购入

部位 型号 价格
U+板 13600KF+微星z690 3330元
内存 枭鲸16G*2 DDR4 3200MHz 480元
电源 海韵GX850W 730元
散热 利民PA120SE 150元
机箱 长城阿基米德PRO 210元
显卡 别人送的2070 0
SSD 拆下来的西数SN550 0
SSD 宏碁掠夺者2T 470元
SSD 梵想s500pro2T 570元
HDD 海康威视4T 340元
风扇 利民工包 3*20元
风扇 棱镜pro 3*20元

nas

20年12月购入
安装truenas scale
常驻应用:gitlab influxdb nextcloud photoprism plex postgres syncthing
cpu负载40%左右

部位 型号 参数 价格
cpu 奔腾G5420T 2核4线程 3.2GHz 300元
主板 微星B360M - 475元
内存 2*芝奇 8G 2133MHz 忘了
内存 2*金百达 8G DDR4 2666MHz 190元(23年4月加的)
电源 海韵S12III 500w 80PLUS铜牌 330元
SSD Samsung 970 EVO Plus 250GB 370元
HDD 2*东芝DT02ABA400V 4TB 5400转 128MB缓冲区 2*630元
HDD 拆机东芝 14TB 7200转 670元
HDD 希捷ST5000DM000 5T 5980转 捡垃圾,忘了
HDD 西数HGST_HUS728T8TALE6L4 8T 7200转 捡垃圾,忘了
机箱 粤林 1517-2 塔式 6盘位 170元

服务器

19年6.18购入
平时跑一些自己写的任务,并作为家庭网络连接tailscale的subnet节点

部位 型号 参数 价格
cpu i3-6100T - 640元
主板 华擎 H179M-ITX - 360元
内存 2*光威悍将 DDR4 8G 2133MHz 398元
电源 酷冷至尊MWE550V2 550W 350元
SSD 闪迪 240G SATA 200元
机箱 乔思伯 v4 mini-matx - 200元

数据备份服务器

20年6.18 购入
备份nas的重要数据,不长开机

部位 型号 参数 价格
u+板 华擎J3455-ITX - 514元
内存 金百达 DDR3 1600MHz 8G 169元
电源 鑫谷 500W 240元
SSD 威刚 240G SATA3 195元
HDD 希捷酷狼 4TB 5900转 840元
机箱 金河田 N1 MINI-ITX - 130元

网络

network

背部肌肉构成

alt text

背部宽度训练动作

宽度训练着重在背阔肌的训练,以下拉为主

引体向上

主要锻炼肌肉:背阔肌,大圆肌,小园肌,肱二头肌。
次要锻炼肌肉:三角肌后束,胸肌,腹肌,斜方肌等。
alt text

alt text

  1. 双臂在前方伸直,抓紧杠杆,身体向后倾斜30度,尽量让身躯挺直,挺胸。
  2. 向后下方拉动拉动肩膀和上臂,让身体向上,直至杠杆碰到上胸。在进行着部分运动时吐气。提示:在达到完全收紧状态时集中注意力收缩后背肌肉
  3. 在收紧状态1秒后,开始吸气,并缓慢地降下躯体还原至起始状态,让手臂完全伸直,背阔肌完全伸展

握杠技巧:
适当增加握的宽度,也更能增加对背阔肌的刺激

高位下拉

alt text
背要直,可以稍微向后仰一点
吐气的同时将肩膀和上臂向后下方拉动,拉下把手直至碰到上胸。提示:完全收紧时集中注意力收缩后背肌肉。动作中上躯应保持固定,只有手臂运动。前臂只需抓握杠杆,没有其他动作,不要用前臂拉动把手。
呼吸:用力下拉时呼气,还原时吸气
小臂力竭的问题:拇指环握时,小臂肌群收缩状态会发力,所以,解决方法是半握法,即不使用大拇指
alt text

俯身杠铃划船


杠铃划船是发达背阔肌最有效的动作之一。而用杠铃练习划船有 四种握法:窄握、中握、宽握和并握。
不同的握距和握法锻炼的部位有所不同。

  • 宽握和并握的重点是发达背阔肌上部肌群;
  • 中握重点是发达背阔肌中上部肌群;
  • 窄握重点是发达背阔肌中下部肌群。

动作要点:膝盖微屈,背部伸直,身体朝前倾,双手反握哑铃,双手夹紧身体两侧,集中背阔肌的力将杠铃沿着大腿拉向自己的小腹,稍微停顿,然后慢慢还原到起始位置。

背部厚度训练动作

厚度训练着重在斜方肌和菱形肌的训练,以划船为主

哑铃划船

alt text
alt text

  1. 前后脚弓步,一条手臂放在哑铃架或者健身椅上支撑身体。另一只手拿哑铃,手臂自然下垂,掌心向内。背部挺直
  2. 呼气的同时,用背部的力量将哑铃上拉到胸部侧面,上臂紧贴身体,上身保持不动。
  3. 在顶端稍适停留,感受背部的肌肉收缩,然后缓缓将哑铃降回起始位置,同时吸气。
  4. 重复以上动作至推荐次数,然后换另一边继续。

总是,要让手臂内收,上臂更接近脊柱,而不是手臂向后过度伸展

注意:

  1. 做完全程才会有效刺激到背部
  2. 可以上大重量,这个动作可以用大重量刺激,可以放在训练开始时进行
  3. 万万不可弓背,背要直

坐姿划船

  1. 两腿踩住前方的踏板,微屈膝,腿不可伸直,两手紧握三角形(或其他形状的)手柄,双臂前伸,腰腹固定,挺胸抬头。
  2. 收缩背部肌肉,加紧肩胛骨,用这股力量,将手柄拉至腹部,尽可能地向后牵拉你的双肩和双肘,直到手柄接触到你的身体中部。可以保持顶峰收缩1-2秒,努力挤压你的肩胛骨,得到最大程度的刺激
  3. 以背阔肌的力量控制还原,所谓的快拉慢回,控制速度,但是!不需要过慢。

斜方肌训练动作

背部另一个重要的位置是斜方肌:这位置个可以放在练肩的那一天进行训练

杠铃耸肩

  1. 手握杠铃,心手面向身体,挺立身体,双臂与地面垂直
  2. 尽可能提高的肩膀,注意只是肩膀部份移动,身体其他部份静止不动,顶峰收缩保持2-3秒钟
  3. 颈部放松,你是靠斜方提起中午,不是脖子

反握杠(哑铃)划船

锻炼斜方肌的中下部

  1. 双脚与肩同宽、膝盖微弯,身体前顷,背要直,要平,下背一定要打直。双手略比肩宽,反握杠铃,身体对齐杠铃中心点。
  2. 将杠铃往肚脐方向拉起,收缩背部将杠铃碰到肚脐,接触到身体。回到起始动作时,感受背部有明显展开的感觉,手再送出去。

哑铃耸肩


耸肩建议在能够维持动作标准的情况下,尽量使用大重量,小重量刺激不够深,比较难看到效果。

硬拉

屈腿硬拉:

动作要点:

  1. 将杠铃放于地面,双脚分开,与肩同宽。背部保持伸直,双腿弯下,身体前倾,双手正握抓住杠铃。
  2. 下蹲,收臀,直到大腿与地面平行,且肩膀位于杠铃正上方。然后挺胸、抬头、收腹,深吸一口气。

无法开启远程访问

在设置中对资料库开启远程访问失败,原因是nas上使用了带科学上网的软路由作为网关,网关自动代理了plex.tv域名的请求,是的plex服务器获得的公网ip是梯子的ip,无法访问到真正的库。将plex.tv域名添加到软路由的直接访问列表中即可

认证库权限返回401

通过公网访问库时,无法获取库的权限,显示“未经授权 您无权访问此服务器。”
这个不知道是什么原因,外网上也有类似的问题,但没有答案,我最后清掉配置目录下所有文件,重新构建docker实例,重新配置服务器,问题解决了

ubuntu安装

1
2
sudo apt update
sudo apt install syncthing

如果要使得webui在127.0.0.1以外也能访问,需要在安装后修改/lib/systemd/system/syncthing@.service增加--gui-address=0.0.0.0:8384配置

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
[Unit]
Description=Syncthing - Open Source Continuous File Synchronization for %I
Documentation=man:syncthing(1)
After=network.target
StartLimitIntervalSec=60
StartLimitBurst=4

[Service]
User=%i
ExecStart=/usr/bin/syncthing serve --no-browser --gui-address=0.0.0.0:8384 --no-restart --logflags=0
Restart=on-failure
RestartSec=1
SuccessExitStatus=3 4
RestartForceExitStatus=3 4

# Hardening
ProtectSystem=full
PrivateTmp=true
SystemCallArchitectures=native
MemoryDenyWriteExecute=true
NoNewPrivileges=true

[Install]
WantedBy=multi-user.target

username替换为你的用户名

1
2
sudo systemctl enable syncthing@username.service
sudo systemctl start syncthing@username.service

同步

互相添加远程设备

通过识别序列号,互相添加远程设备。可在高级设置中手动设置对方机器地址
alt text

发送方

增加需要同步的文件夹,并在共享中选择需要共享到的机器
alt text

接收方

接收方web端会弹框提醒是否接受该文件夹,并且可以指定接受位置

错误处理

folder marker missing

问题提示:
Error on folder “xxxx” (xxxx): folder marker missing (this indicates potential data loss, search docs/forum to get information about how to proceed)
解决办法
在文件夹内新建.stfolder文件夹即可。修复后,依然可能会提示此问题,点确认即可。

ZFS ACL权限permission denied

例如其中一个syncthing节点为truenas scale下的k3s应用,则需要给zfs pool开通apps(568)用户的读权限与执行权限

文件系统监视器错误

操作系统的文件监听数量限制,参见How do I increase the inotify limit to get my filesystem watcher to work?

参考文档:
ContentCachingRequestWrapper解决入参读取

使用方法

增加拦截器

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
import java.io.IOException;
import javax.servlet.FilterChain;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.springframework.core.annotation.Order;
import org.springframework.stereotype.Component;
import org.springframework.web.filter.OncePerRequestFilter;
import org.springframework.web.util.ContentCachingRequestWrapper;

/**
* 将HttpServletRequest包装成ContentCachingRequestWrapper,使其body可以多次读取
*/
@Component
@Order(1)
public class RequestWrapFilter extends OncePerRequestFilter {
@Override
protected void doFilterInternal(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, FilterChain filterChain) throws ServletException, IOException {
ContentCachingRequestWrapper wrapper =
new ContentCachingRequestWrapper(httpServletRequest);
filterChain.doFilter(wrapper, httpServletResponse);
}
}

注册拦截器

注册方法不赘述。例如上述代码中@Component @Order(1)会自动注册Filter

读取方法

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
import java.io.IOException;
import java.nio.charset.StandardCharsets;
import javax.servlet.http.HttpServletRequest;

import com.google.common.io.ByteSource;

import org.springframework.web.util.ContentCachingRequestWrapper;

public class HttpBodyReader {
private HttpBodyReader() {
}

/**
* 获取POST请求HttpServletRequest中的body信息
* HttpServletRequest本身是不可以重复读取body的,filter中对request进行了wrap,使其变成了ContentCachingRequestWrapper
* ContentCachingRequestWrapper是可重复读取的body的实现
* 必须在已经通过getInputStream()读取了数据后,改方法才能返回数据
* @param request
* @return
* @throws IOException
*/
public static String getRequestBody(HttpServletRequest request) throws IOException {
String responseBody = "";
if (request instanceof ContentCachingRequestWrapper) {
ContentCachingRequestWrapper cachingWrapper = (ContentCachingRequestWrapper) request;
byte[] buf = cachingWrapper.getContentAsByteArray();
if (buf.length > 0) {
responseBody = ByteSource.wrap(buf)
.asCharSource(StandardCharsets.UTF_8)
.read();
}
}
return responseBody;
}
}

原理

在spring框架读入输入流时会调用getInputStream()方法

wrapper重写getInputStream()方法,将流替换成ContentCachingInputStream内部类

1
2
3
4
5
6
7
@Override
public ServletInputStream getInputStream() throws IOException {
if (this.inputStream == null) {
this.inputStream = new ContentCachingInputStream(getRequest().getInputStream());
}
return this.inputStream;
}

ContentCachingInputStream重写了read方法,在流式读取的过程中把内容复写到外部类的cachedContent

1
2
3
4
5
6
7
8
9
10
11
12
13
14
@Override
public int read() throws IOException {
int ch = this.is.read();
if (ch != -1 && !this.overflow) {
if (contentCacheLimit != null && cachedContent.size() == contentCacheLimit) {
this.overflow = true;
handleContentOverflow(contentCacheLimit);
}
else {
cachedContent.write(ch);
}
}
return ch;
}

再通过getContentAsByteArray()方法即可反复读取cachedContent中内容