医学-人体骨骼系统说明
参考文献
人体骨骼系统图示
人体全身骨骼
人体骨骼约占成人体重的1/5,由206块骨组成.
颅骨23:
头颅骨——顶骨2、颞骨2、额骨、蝶骨、枕骨、筛骨共8块.
面颅骨——上颌骨2、颧骨2、鼻骨2、泪骨2、腭骨2、鼻甲骨2,不成对的犁骨、下颌骨、舌骨共15块.
听小骨——砧骨,镫骨,锤骨共6块.
上肢骨64——锁骨,肩胛骨,肱骨,桡骨,尺骨,手舟骨,月骨,三角骨,豌豆骨,大多角骨,小多角骨头状骨,钩骨,5块掌骨,14节指骨
下肢骨62——髋骨(髂骨、坐骨、耻骨)、股骨、髌骨、胫骨、腓骨及7块跗骨(跟骨,距骨,骰骨,足舟骨,内、中、外侧)、5块跖骨和14块趾骨.
躯干骨51——24块椎骨、1块骶骨、1块尾骨、1块胸骨和12对肋共51块
解剖方位术语
上、下: 描述器官、结构与颅、足关系的术语.近颅者为上,近足者为下.
内、外: 描述空腔器官相互位置关系的术语.近内腔者为内,远离内腔者为外.
内侧、外侧: 描述器官、结构距身体正中矢状面相对远近关系的术语.近正中矢状面者为内侧,远离正中矢状面者为外侧.
前、后: 描述器官、结构与身体前后面 ...
Docker-docker-compose
参考文献
Enabling GPUs in the Container Runtime Ecosystem
安装
通过https://github.com/docker/compose/releases下载docker-compose二进制文件
下载完成后手动上传到linux指定目录/usr/local/bin,将其文件名修改成docker-compose.然后给其加上可执行权限
12# 因为下载后的docker-compose文件是一个可执行脚本,所以要开放其权限chmod +x /usr/local/bin/docker-compose
创建软链
1$ sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose
Docker Compose
Docker Compose 的前身是 Orchard 公司开发的 Fig,2014 年 Docker 收购了 Orchard 公司,然后将 Fig 重命名为 Docker Compose.现阶段 Docker Compose 是 Docker 官方的单 ...
Docker-实现原理
参考文献
底层实现原理及关键技术
Docker与虚拟机的区别
虚拟机是通过管理系统(Hypervisor)模拟CPU,内存,网络等硬件,然后在这些模拟的硬件上创建客户内核和操作系统.
这样做的好处就是虚拟机有自己的内核和操作系统,并且硬件都是通过虚拟机管理系统模拟出来的,用户程序无法直接使用到主机的操作系统和硬件资源,因此虚拟机也对隔离性和安全性有着更好的保证.
Docker容器则是通过Linux内核的Namespace技术实现了文件系统、进程、设备以及网络的隔离,然后再通过Cgroups对CPU、内存等资源进行限制,最终实现了容器之间相互不受影响,由于容器的隔离性仅仅依靠内核来提供,因此容器的隔离性也远弱于虚拟机
资源限制
123--cpus 限制 CPU 配额-m, --memory 限制内存配额--pids-limit 限制容器的 PID 个数
1docker run -it --cpus=1 -m=2048m --pids-limit=100 ...
Docker-Dockerfile
参考文献
Dockerfile指令
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980# 注释# FROM <image>或者FROM<image>:<tag># 第一条指令必须为FROM指令.并且,如果在同一个Dockerfile中创建多个镜像时,可以使用多个FROM指令(每个镜像一次)# FROM [--platform=<platform>] <image> [AS <name>]# FROM [--platform=<platform>] <image>[:<tag>] [AS <name>]# FROM [--platform=<platform>] <image>[@<diges ...
Docker-仓库
参考文献
仓库
使用docker login登录镜像仓库
使用docker push repository/image推送镜像到镜像仓库
仓库镜像搭建选择
Distribution
Harbor
Docker-镜像
参考文献
极客时间 <<Kubernetes入门实战课>>
镜像
Docker镜像是静态的分层管理的文件组合,镜像底层的实现依赖于联合文件系统(UnionFS)
镜像是如何构建的
构建过程不是由Docker客户端进行的,而是将整个目录的文件上传到Docker守护进程并在那里进行的.Docker客户端和守护进程不要求在同一台机器上.
如果要在一台Linux系统中使用Docker,客户端就运行在你的宿主操作系统上,但是守护进程运行在一个虚拟机内.由于构建目录中的文件都被上传到了守护进程中,如果包含了大量的大文件而且守护进程不在本地运行,上传过程会花费更多的时间.
注意: 不要在构建目录中包含任何不需要的文件,这样会减慢构建的速度-尤其当Docker守护进程运行在一个远端机器的时候.
镜像分层
镜像不是一个大的二进制块,而是由多层组成,不同镜像可能会共享分层,这会让存储和传输变得更加高效.所有组成基础镜像的分层只会被存储一次.拉取镜像的时候,Docker会独立下载一层.一些分层可能已经存储在机器上了,所以Docker只会下载未被存储的分层.
构建镜 ...
Docker-容器
参考文献
容器
容器是基于镜像创建的可运行实例,并且单独存在.
一个镜像可以创建多个容器.
容器实现原理
chroot
chroot是在Unix和Linux系统的一个操作,针对正在运作的软件行程和它的子进程,改变它外显的根目录.一个运行在这个环境下,经由chroot设置根目录的程序,它不能够对这个指定根目录之外的文件进行访问动作,不能读取,也不能更改它的内容.
即chroot就是可以改变某进程的根目录,使这个程序不能访问目录之外的其他目录
Namespace
Namespace 是 Linux 内核的一项功能,该功能对内核资源进行隔离,使得容器中的进程都可以在单独的命名空间中运行,并且只可以访问当前容器命名空间的资源.Namespace 可以隔离进程 ID、主机名、用户 ID、文件名、网络访问和进程间通信等相关资源.
Docker 主要用到以下五种命名空间.
pid namespace:用于隔离进程 ID.
net namespace:隔离网络接口,在虚拟的 net namespace 内用户可以拥有自己独立的 IP、路由、端口等.
mnt namespace:文 ...
MongoDB-基础知识
参考文献
MongoDB 逻辑备份工具mongodump
MongoDB 日常运维实践总结
Mongo进阶 - 系统设计:模式构建
ObjectId
MongoDB中存储的每个文档都必须有一个_id键._id的值可以是任何类型,但其默认为ObjectId.在单个集合中每个文档的_id值都必须是唯一的,以确保集合中每个文档都可以被唯一标记.
ObjectId占用了12字节的存储空间,可以用24个十六进制数字组成的字符串来表示:每字节存储两个数字.
ObjectId的12字节是按照如下方式生成的:
120 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 时间戳 | 随机值 | 计数器(起始值随机)
ObjectId的前4字节是从Unix纪元开始以秒为单位的时间戳.
时间戳与接下来的5字节组成,在秒级别的粒度上提供了唯一性
因为时间戳在前,所以ObjectId将大致按照插入的顺序进行排列.
ObjectId中接下来的5字节是一个随机值,最后3字节是一个计数器,以一个随机数作为起始值 ...
RPC框架架构设计
参考文献
RPC架构设计
RPC 框架包含三个最重要的组件,分别是客户端、服务端和注册中心。在一次 RPC 调用流程中,这三个组件是这样交互的:
服务端在启动后,会将它提供的服务列表发布到注册中心,客户端向注册中心订阅服务地址;
客户端会通过本地代理模块 Proxy 调用服务端,Proxy 模块收到负责将方法、参数等数据转化成网络字节流;
客户端从服务列表中选取其中一个的服务地址,并将数据通过网络发送给服务端;
服务端接收到数据后进行解码,得到请求信息;
服务端根据解码后的请求信息调用对应的服务,然后将调用结果返回给客户端
Netty源码分析-服务器端启动流程
参考文献
黑马Netty
环境
基于Netty4.1.92.Final-SNAPSHOT
启动流程
Netty中启动流程大致处理步骤
12345678910111213141516171819202122//1 netty 中使用 NioEventLoopGroup (简称 nio boss 线程)来封装线程和 selectorSelector selector = Selector.open(); //2 创建 NioServerSocketChannel,同时会初始化它关联的 handler,以及为原生 ssc 存储 configNioServerSocketChannel attachment = new NioServerSocketChannel();//3 创建 NioServerSocketChannel 时,创建了 java 原生的 ServerSocketChannelServerSocketChannel serverSocketChannel = ServerSocketChannel.open(); serverSocketChannel.confi ...