基础知识-计算机系统
基础知识-计算机系统
计算机硬件 计算机的基本硬件系统由运算器、控制器、存储器、输入设备和输出设备五大部件组成 运算器、控制器等部件被集成在一起统称为中央处理单元(Central Processing Unit,CPU)。 存储器是计算机系统中的记忆设备,分为内部存储器和外部存储器。 内部存储器:速度高、容量小,一般用于临时存放程序、数据及中间结果 外部存储器:者容量大、速度慢,可长期保存程序和数据。 输入设备和输出设备合称为外部设备(简称外设),输入设备用于输入原始数据及各种命令,而输出设备则用于输出处理结果 CPU CPU 主要由运算器、控制器、寄存器组和内部总线等部件组成 功能 程序控制:通过执行指令来控制程序的执行顺序 操作控制:一条指令功能的实现需要若干操作信号配合完成,CPU产生每条指令的操作信号并将操作信号送往不同的部件,控制相应的部件按指令的功能要求进行操作 时间控制:CPU对各种操作进行时间上的控制,即在指令执行过程中操作信号的出现时间、持续时间及出现的时间顺序都需要严格的控制 数据处理:CPU通过对数据进行算术运算及逻辑运算等方式进行加工处理,数据加工处理的结果被人们所利用。所以,对数据的加工处理也是CPU最根本的任务。 运算器 运算器由算术逻辑单元、累加寄存器、数据缓存寄存器、状态条件寄存器组成。功能:1.执行所有算术运算2.执行所有的逻辑运算并进行逻辑测试。如与、或、非、零值测试或两个值的比较等 算术逻辑单元(ALU):负责处理数据,实现对数据的算术运算和逻辑运算 累加寄存器(AC):也称为累加器,是一个通用寄存器,功能是当运算器的算术逻辑单元执行算术运算或逻辑运算时,为ALU提供一个工作区 数据缓存寄存器(DR):在对内存储器进行读/写操作时,用DR暂时存放由内存存储器读/写的一条指令或一个数据字,将不同时间段内的读/写数据隔离。主要作用是作为CPU和内存、外部设备之间数据传送中转站;作为CPU和内存、外围设备之间在操作速度上的缓冲;在单累加器结构的运算器中,数据缓冲寄存器还可兼作为操作数据寄存器。 状态条件寄存器(PSW):由算数指令和逻辑指令运行或测试的结果建立的各种条件码内容,主要分为状态标志和控制标志 控制器 运算器只能完成运算,而控制器用于控制整个 CPU 的工作,它决定了计算机运行过程的自动化。它不仅要保证程序的正确执行,而且要能够处理异常事件。一般包括指令控制逻辑、时序控制逻辑、总线控制逻辑和中断控制逻辑等几个部分。 指令控制逻辑 指令寄存器(IR): 当 CPU 执行一条指令时,先把它从内存储器取到缓冲寄存器中,再送入 IR 暂存,指令译码器根据 IR 的内容产生各种微操作指令,控制其他的组成部件工作,完成所需的功能。 程序计数器(PC): 具有寄存信息和计数两种功能,又称为指令计数器。程序的执行分为两种情况,一是顺序执行,二是转移执行。 地址寄存器(AR): 保存当前 CPU 所访问的内存单元的地址。 指令译码器(ID): 指令分为操作码和地址码两个部分,为了执行任何给定的命令,必须对操作码进行分析,以便识别所有完成的操作。 时序控制逻辑 为每条指令按时间顺序提供应有的控制信号 总线逻辑 是为多个功能部件服务的信息通路的控制电路。 中断控制 逻辑用于控制各种中断请求,并根据优先级的高低对中断请求进行排队,逐个交给 CPU 处理。 寄存器组 寄存器组分为专用寄存器和通用寄存器。运算器和控制器中的寄存器是专用寄存器,其作用是固定的。通用寄存器的用途广泛,并且由程序员规定其用途,其数目因处理器的不同有所差异。 机器数 各种数值在计算机中表示的形式称为机器数,特点是采用二进制计数制,数的符号用 0 和 1 表示,小数点则隐含,表示不占位置。机器数对应的实际数值称为数的真值。 原码: 一个数的正常二进制表示,最高位表示符号。+0(00000000),-0(10000000) 反码:正数的反码即原码,负数的反码是在原码的基础上,除符号位外,其他各位按位取反。+0(00000000),-0(11111111) 补码:正数的补码即原码,负数的补码是在原码的基础上,除符号位外,其他各位按位取反,而后末位+1,若有进位则产生进位。+0 = -0 = 0 0000000 移码:用作浮点运算的阶码,无论正数负数,都是将该原码的补码的首位(符号位)取反得到移码 原码最高位表示正负号,且不参与计数,而其他编码最高位虽然也是代表正负号,但是参与计数
JOBCHER BLOG
逆境和成长-2022年终总结
转眼间来到了 2022 年的尾声,2022 年不仅仅对于世界来说,还是对于我个人来说都是意义非凡的一年。 逆境和成长 2022 年初在中国大陆仍然实行着最为严格的清零政策并愈演愈烈,城市居民被限制人身自由,就连农村地区也被大量要求居家隔离,严重损害了中国经济和社会活力。中国失业人口再创新高,大量的毕业生找不到工作。在美国,最为严重的通货膨胀席卷全国,高昂的加息政策,损害了底层人民和工薪阶层。在中东,塔利班武装重新占领阿富汗,重新实行政教合一的暴力统治。在俄罗斯,爆发了乌克兰战争,将俄罗斯真正从苏联的阴影中脱离出来。在世界各地发生了太多的变化,2022 年注定是要被载入史册的一年。 对于我个人来说,2022 年也是成长非常大的一年,我经历了自工作来最大的变化,我从一家工作了多年的企业毕业,再次进入了社会的试炼场中求职,接触了更多的人,碰到了更多的事,也有了更多的感悟。曾经的我会讲工作看的比一切都重要,通过勤奋和努力可以改变一切,但是,社会的规则并不是这样的。决定你的个人价值并不是这些外在的东西,决定你个人价值的是你自己对自己的看法。你认为自己有价值,你就是你能够做到有价值。你觉得自己不重要,别人自然觉得你不重要。 在 🆕 的 2023 年,希望世界和平,人人幸福,愿生活在苦难中的人们,能够早日远离苦难,让幸福来敲门…… 欢迎关注我的博客[www.jobcher.com](https://www.jobcher.com/)
JOBCHER BLOG
优雅的使用Conda管理python环境
背景 很多时候,避免不了同时使用 python2 和 python3 的环境,也避免不了不同的工作所需要不同版本的库文件,比如在想用 TensorFlow 较早版本的同时;还想运行 Pytorch 最新版;还想顺便学习 Nao 机器人编程,学习 Django 后台,这个时候,一款非常好用的包管理工具就显得十分重要了,这就是我写这篇博客的原因,这篇博客将会讲解: 如何安装 conda; 如何更换 conda 的下载源; 如何使用 canda; Linux 安装 conda 在 Ubuntu 上安装 Anaconda 的步骤如下: 首先,你需要下载 Anaconda 的安装包。你可以从 Anaconda 的官方网站上下载最新版本的 Anaconda for Linux。选择适合你的系统的版本(Python 3.x)。 访问下载链接:https://www.anaconda.com/products/distribution#download-section 下载完成后,你可以在终端中导航到下载的文件所在的目录。你可以使用 cd 命令来改变目录。例如,如果你的下载文件在 Downloads 文件夹中,你可以输入以下命令: 1cd ~/Downloads 然后,你需要运行 bash 命令来安装 Anaconda。假设你下载的 Anaconda 文件名为 “Anaconda3-2020.02-Linux-x86_64.sh”,你可以输入以下命令: 1bash Anaconda3-2020.02-Linux-x86_64.sh 请注意,你需要将上述命令中的 “Anaconda3-2020.02-Linux-x86_64.sh” 替换为你实际下载的文件名。 4. 接下来,你会看到 Anaconda 的许可协议。按 Enter 键滚动到底部,然后输入 ‘yes’ 来接受许可协议。 5. 然后,你需要确认 Anaconda 的安装位置。你可以选择默认位置或输入新的位置。 6.
JOBCHER BLOG
Chrome浏览器启动参数大全(命令行参数)
背景 在开发 Web 项目当中,浏览器必不可少,而浏览器的启动参数可以帮我们实现很多功能。 常用参数 序号 参数 说明 1 –allow- ted-plugins 不停用过期的插件。 2 –allow-running-insecure-content 默认情况下,https 页面不允许从 http 链接引用 javascript/css/plug-ins。添加这一参数会放行这些内容。 3 –allow-scripting-gallery 允许拓展脚本在官方应用中心生效。默认情况下,出于安全因素考虑这些脚本都会被阻止。 4 –disable-desktop-notifications 禁用桌面通知,在 Windows 中桌面通知默认是启用的。 5 –disable-file-system 停用 FileSystem API。 6 –disable-preconnect 停用 TCP/IP 预连接。 7 –disable-remote-fonts 关闭远程字体支持。SVG 中字体不受此参数影响。 8 –disable-web-security 不遵守同源策略。 9 –disk-cache-dir 将缓存设置在给定的路径。 10 –disk-cache-size 设置缓存大小上限,以字节为单位。 11 –dns-prefetch-disable 停用 DNS 预读。 12 –enable-print-preview 启用打印预览。 13 –extensions-update-frequency 设定拓展自动更新频率,以秒为单位。 14 –incognito 让浏览器直接以隐身模式启动。 15 –keep-alive-for-test 最后一个标签关闭后仍保持浏览器进程。(某种意义上可以提高热启动速度,不过你最好得有充足的内存) 16 –kiosk 启用 kiosk 模式。(一种类似于全屏的浏览模式) 17 –lang 使用指定的语言。 18 –no-displaying-insecure-content 默认情况下,https 页面允许从 http 链接引用图片/字体/框架。添加这一参数会阻止这些内容。 19 –no-referrers 不发送 Http-Referer 头。 20 –no-startup-window 启动时不建立窗口。 21 –proxy-server 使用给定的代理服务器,这个参数只对 http 和 https 有效。 22 –start-maximized 启动时最大化。 23 –single-process 以单进程模式运行 Chromium。(启动时浏览器会给出不安全警告)。 24 –user-agent 使用给定的 User-Agent 字符串。 25 –process-per-tab 每个分页使用单独进程。 26 –process-per-site 每个站点使用单独进程。 27 –in-process-plugins 插件不启用单独进程。 28 –disable-popup-blocking 禁用弹出拦截。 29 –disable-javascript 禁用 JavaScript。 30 –disable-java 禁用 Java。 31 –disable-plugins 禁用插件。 32 –disable-images 禁用图像。 更多参数 由于水平有限,下表为网络翻译,了解跟多可根基参数,查找相关资料。
JOBCHER BLOG
Jenkins 编译Android apk 流水线
背景 Jenkins 编译 Android apk,上传 apk 包,生成下载二维码,并推送钉钉 安装 Android 环境 安装 JDK 1# 这里使用的是openjdk 1.8.0版本,有需要的话需要到java官网上进行下载对应的JDK版本。 2$ yum install java -y 3 4# 其他版本JDK的安装方式 5$ mv jdk1.8.0_161 /usr/local/ 6$ ln -s /usr/local/jdk1.8.0_161 /usr/local/jdk 7$ vim /etc/profile #配置JDK的环境变量 8export JAVA_HOME=/usr/local/jdk 9export PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH 10export CLASSPATH=.$CLASSPATH:$JAVA_HOME/lib:$JAVA_HOME/jre/lib:$JAVA_HOME/lib/tools.jar 11$ source /etc/profile #重新加载系统环境变量 12$ java -version #查看java版本 Android SDK 安装 1# 下载sdk工具包 2$ wget https://dl.google.com/android/repository/sdk-tools-linux-3859397.zip 3 4# 创建sdk工具文件夹和解压工具包 5$ mkdir -p /opt/android/sdk 6$ unzip sdk-tools-linux-3859397.zip -d /opt/android/sdk 7 8# 使用sdkmanager工具配置构建工具和平台版本 9$ cd /opt/android/sdk/tools/bin/ 10$ .
JOBCHER BLOG
Kubernetes — 更新证书
背景 使用 kubeadm 安装 kubernetes 集群非常方便,但是也有一个比较烦人的问题就是默认的证书有效期只有一年时间,所以需要考虑证书升级的问题 检查证书 由 kubeadm 生成的客户端证书默认只有一年有效期,我们可以通过 check-expiration 命令来检查证书是否过期: 1kubeadm alpha certs check-expiration 该命令显示 /etc/kubernetes/pki 文件夹中的客户端证书以及 kubeadm 使用的 KUBECONFIG 文件中嵌入的客户端证书的到期时间/剩余时间。 手动更新 kubeadm alpha certs renew 这个命令用 CA(或者 front-proxy-CA )证书和存储在 /etc/kubernetes/pki 中的密钥执行更新。 高可用的集群,这个命令需要在所有控制面板节点上执行 具体执行 接下来我们来更新我们的集群证书,下面的操作都是在 master 节点上进行 备份节点 1$ mkdir /etc/kubernetes.bak 2$ cp -r /etc/kubernetes/pki/ /etc/kubernetes.bak 3$ cp /etc/kubernetes/*.conf /etc/kubernetes.bak 备份 etcd 数据目录 1$ cp -r /var/lib/etcd /var/lib/etcd.bak 执行更新证书的命令 1kubeadm alpha certs renew all --config=kubeadm.yaml 检查更新 1kubeadm alpha certs check-expiration 更新下 kubeconfig 文件 1kubeadm init phase kubeconfig all --config kubeadm.
JOBCHER BLOG
Oracle Instant Client 安装配置实现远程连接oracle
背景 关于 Oracle 数据库一直是许多初学者比较头疼的地方,一方面受限于线上文档比较少,令一方面在企业中不得不接触和使用 Oracle 数据库,这篇文章是教大家如何通过配置 oracle client 来远程访问 Oracle 数据库。本文会通过 python3 和 cx_Oracle 来实现对 Oracle 的访问和增删改查 下载 oracle 客户端 官方地址下载 安装 下载并安装你的 oracle client,因为我连接的 11g oracle,所以下载 11.2 版本 1# 下载 2wget https://download.oracle.com/otn/linux/instantclient/11204/oracle-instantclient11.2-basic-11.2.0.4.0-1.x86_64.rpm 3# 安装 4rpm -ivh oracle-instantclient11.2-basic-11.2.0.4.0-1.x86_64.rpm 配置环境变量 1# 直接运行 2export ORACLE_HOME=/usr/lib/oracle/11.2/client64 3export ORABIN=/usr/lib/oracle/11.2/client64/bin 1# 编辑环境变量配置文件 2vim /etc/profile 1# 底部增加内容 2export PATH USER LOGNAME MAIL HOSTNAME HISTSIZE HISTCONTROL 3export ORACLE_HOME=/usr/lib/oracle/11.2/client64 4export TNS_ADMIN=/usr/lib/oracle/11.2/client64 5export LD_LIBRARY_PATH=/usr/lib/oracle/11.2/client64/lib 6export ORABIN=/usr/lib/oracle/11.2/client64/bin 7PATH=$PATH:$ORABIN 8export PATH 9 10export PATH=$ORACLE_HOME:$PATH 11export PATH=$PATH:$HOME/bin:$ORACLE_HOME/bin 1# 刷新环境变量 2source /etc/profile 下载 cx_Oracle 1pip3 install cx_Oracle 创建 Oracle.
JOBCHER BLOG
shell功能脚本集合
28 合 1 多功能脚本 脚本说明: 多合一脚本,DD 系统,BBR,xray,TG 搭建等等·常用的各种脚本基本都有! 系统支持: CentOS6+ / Debian6+ / Ubuntu14+ 支持安装 BBR,搭建 KCPtun,ssr 多用户版 安装 V2ary,Tg 专用代理(Go 版),安装 Goflyway 小鸡性能测试,回程线路测试,云监控 傻瓜式一键 DD 包 一键开启默认 bbr Netflix 解锁检测 xray 安装 宝塔面板,闲蛋面板,x-ui 面板,WARP 一键配置 脚本特点: 目前网上的各个一键脚本基本都是只有 安装/启动/重启 等基础功能,对于小白来说还是不够简单方便。常用的各种脚本基本都有! 下载安装: 1bash <(curl -s -L https://git.io/JPj82) gfw_push 一键安装 脚本说明: 监测服务器 IP 是否被墙并推送至 Telegram 一键脚本 系统支持: CentOS6+ / Debian6+ / Ubuntu14+ 下载安装: 1bash <(curl -s -L git.io/JPjzm) 服务器测速 脚本说明: 服务器一键测速脚本 系统支持: CentOS7 / Debian7+ / Ubuntu14+ 下载安装: 1bash <(curl -s -L git.
JOBCHER BLOG
zlibary 无法下载 解决方案
zlibary 无法下载 因为 zlib 最近被封,导致现在通过正常方法下载不了电子书,但是不要慌,我们可以通过暗网进行下载~ 安装 brave 浏览器 官网下载 下载你需要的版本,这个下载浏览器很简单,我就不多说了 配置 tor 配置 编辑 tor 配置 使用 tor 浏览 zlibary tor 暗网版
JOBCHER BLOG
Logstash 自动重载配置文件
工作原理 检测到配置文件变化 通过停止所有输入停止当前pipline 用新的配置创建一个新的管道 检查配置文件语法是否正确 检查所有的输入和输出是否可以初始化 检查成功使用新的 pipeline 替换当前的pipeline 检查失败,使用旧的继续工作. 在重载过程中,jvm 没有重启. Logstash 自动重新加载配置 为了可以自动检测配置文件的变动和自动重新加载配置文件,需要在启动的时候使用以下命令: 1./bin/lagstash -f configfile.conf --config.reload.automatic 启动 Logstash 的时候使用--config.reload.automatic或-r选项来开启自动重载配置。 修改检测间隔时间 默认检测配置文件的间隔时间是3秒,可以通过以下命令改变 1--config.reload.interval <second> 如果 Logstash 已经运行并且没有开启自动重载,你可以强制 Logstash 重新载入配置文件并且重启管道通过发送一个 SIGHUP 信号。比如: 1kill -1 <pid> 其中是正在运行的 Logstash 的进程号。 注意!!! stdin输入插件不支持自动重启. syslog作为输入源,当重载配置文件时,会崩溃. 解决方法
JOBCHER BLOG
macOS 13 升级 软件失效
关于 macOS 13 软件失效 Warning: You are using macOS 13. We do not provide support for this pre-release version. You will encounter build failures with some formulae. Please create pull requests instead of asking for help on Homebrew’s GitHub, Twitter or any other official channels. You are responsible for resolving any issues you experience while you are running this pre-release version. 简单来说就是 macOS13 版本 暂时不提供技术支持 解决方法 升级完 macos13 之后发现了比较麻烦的问题,很多软件出现了不兼容,这真的很无奈,对于我们这些做 IT 的人来说,这是致命的。我以 git 软件举例,有以下几个方法。
JOBCHER BLOG
Nexus3 使用和部署
Nexus3 docker-compose 安装 创建外部存储 1mkdir -p /data/nexus 2chmod +777 -R /data/nexus 运行 docker-compose 1version: '3' 2services: 3 nexus3: 4 image: sonatype/nexus3:3.42.0 5 container_name: nexus3 6 ports: 7 - 8081:8081 8 - 5000:5000 9 volumes: 10 - /data/nexus:/nexus-data 11 environment: 12 - INSTALL4J_ADD_VM_PARAMS=-Xms1024m -Xmx1024m -XX:MaxDirectMemorySize=1024m -Djava.util.prefs.userRoot=/some-other-dir 13 restart: always 14 # 赋予外部root权限 15 privileged: true docker-compose up -d 运行 docker-compose