最近找了一个 NTP 时间同步工具,使用 GO 语言编写,能够跨平台在 Windows 、 Linux 、 Mac 上运行,挺实用的,但是需要配置 GO 语言环境,于是记录一下过程。
安装
GO 语言环境的安装请参考:
配置
加速下载
下载 GO 语言相关模块时可能被墙,需要设置代理加速下载,方法如下:
1 | # 执行下面的指令 |
参考链接
- ntp-timer,by seraphique.
- Go设置GOPROXY国内加速,by ShengOasis.
最近找了一个 NTP 时间同步工具,使用 GO 语言编写,能够跨平台在 Windows 、 Linux 、 Mac 上运行,挺实用的,但是需要配置 GO 语言环境,于是记录一下过程。
GO 语言环境的安装请参考:
下载 GO 语言相关模块时可能被墙,需要设置代理加速下载,方法如下:
1 | # 执行下面的指令 |
使用 IDEA 集成开发环境运行 Sprint Boot 应用程序时,控制台中文乱码,参考文章1分钟解决IntelliJ IDEA 控制台中文乱码,统一设置 utf-8,再也不会乱码了中第一种方法解决了中午乱码问题。
消息队列是一种常用的软件架构,有必要了解和学习它。
消息队列(Message Queue,简称MQ)是一种在计算机系统中用于在不同应用程序或服务之间进行异步通信的中间件技术,它通过一个存储消息的队列作为中间人,允许发送者(生产者)将消息放入队列,接收者(消费者)则在准备好时从队列中取出并处理,从而实现系统解耦、异步处理和流量削峰等目标。消息队列的出现解决了分布式系统中数据丢失、服务故障、处理能力不足以及业务系统间强耦合等问题。
消息队列使用点对点消息传递模式,在该模式中,一个应用程序(称为“发送者”)向队列提交消息,另一个应用程序(称为“接收者”)则从队列中获取并使用消息。发送者和使用者之间存在紧密耦合的一对一关系,并且每条消息只能使用一次。
如果您的应用程序需要将消息分发给多方,则可以组合多个消息队列,或者使用发布/订阅 (pub/sub) 消息传递模型。
在发布/订阅消息传递中,生成消息的应用程序称为发布者,而使用该消息的应用程序称为订阅者。每条消息都会发布到一个主题,订阅该主题的每个应用程序都会获得发布到它的所有消息的副本。
大多数消息传递中间件解决方案都支持消息队列(点对点)和发布/订阅消息模型。
消息总线是一种企业服务总线 (ESB),它允许服务随处访问数据,同时确保它们在分布式系统架构中保持解耦和独立运行。当使用消息总线时,所有服务或应用程序必须共用通用数据类型、通用命令集和通用通信协议(尽管它们可能用不同的语言编写)。使用者可以决定如何使用信息。
如果解耦的应用程序要通过消息总线进行通信,则必须转换消息以使其归属于同一类型。相反,消息队列可传输各类消息,无论其类型是否相同。
最近单位有一台计算机,只有一个网卡,但是需要通三个网段通信,为了避免各个网段之间的组播通信流量占用带宽,拟采用Vlan技术,使用三次交换机进行逻辑隔离。具体过程记录如下。
使用 VLAN 接口。
核心思想是:在计算机的网络接口上创建多个虚拟接口,并将每个虚拟接口关联到不同的VLAN。
这种方法适用于支持802.1Q VLAN标记的交换机和操作系统。它在单个物理网卡上创建多个逻辑接口。
物理连接:服务器通过一根网线连接到支持802.1Q的交换机端口。该交换机端口需要被配置为Trunk模式,允许携带多个VLAN的流量。
服务器端配置:在服务器的操作系统上,你需要创建VLAN虚拟接口。
1 | 例如: |
对于Realtek网卡,可使用realtek diagnostic utility工具,创建多个vlan网口。具体请参考 realtek adapter的vlan设定。
1 | eth0.10 -> 192.168.10.100/24 (VLAN 10的网关可能是 192.168.10.1) |
工作原理: 当服务器要发送一个数据包到VLAN 10的网络时,它会通过 eth0.10 发出,操作系统会自动给这个数据包打上VLAN 10的标签。交换机的Trunk端口收到后,会根据标签将数据包转发到VLAN 10。反之,当交换机发送一个带有VLAN 20标签的数据包给服务器时,只有服务器的 eth0.20 接口能接收到它。
对于分布式系统的运转而言,各个分布式的实体基于同一时间标准是必要条件,如果各个分布式实体的时间标准不统一,整个系统必然分崩离析。下面介绍在不同操作系统平台设置 NTP 客户端的方法。
1 | 打开日期和时间设置 |
1 | 打开注册表编辑器(regedit)。 |
注意: SpecialPollInterval 值的设置必须在位于 MinPollInterval 和 MaxPollInterval 之间,否则 NTP 客户端不会按 SpecialPollInterval 预期同步。具体请参考:京准电钟课堂:NTP时钟同步时客户端未按预期同步 。
chrony 既可作时间服务器服务端,也可作客户端。性能比 ntp 好,且配置管理方便。chrony 由两个程序组成,分别是 chronyd 和 chronyc。chronyd 是一个后台运行的守护进程,用于调整内核中运行的系统时钟和时钟服务器同步。它确定计算机增减时间的比率,并对此进行补偿。chronyc 提供了一个用户界面,用于监控性能并进行多样化的配置。它可以在 chronyd 实例控制的计算机上工作,也可以在一台不同的远程计算机上工作。
以 NTP 工具 Chrony 为例,具体步骤如下:
1 | # 查看 chrony 依赖的包 |
1 | # 注释默认的 NTP 服务器pool,配置上级时间服务器 |
1 | # 获取 chronyd 的PID |
1 | # 确保你的chrony服务器自身已经成功与上层服务器同步。可以通过 chronyc sources 命令检查,服务端需要先成功同步时间,才能为客户端提供同步服务, NTP服务器前设置 ^* 表示已与该服务区时钟同步。 |
1 | sudo chronyc -a makestep |
为了更好的有效的沟通,及时准确的发现对方言语中的逻辑谬误,以便有理有据精准反驳,学习一点逻辑学知识是非常有必要的。阅读格桑老师的《逻辑学入门》,做点读书笔记。
001 01. “老师,我不认识孙中山” 偷换概念
003 02. “买一送一,原来是这样的啊” 混淆概念
005 03. “你说的千里马,明明就是蛤蟆嘛” 模糊概念
007 04. “所有的天鹅都应该是白色的” 归纳谬误
009 05. “为什么总会有人将错就错” 协和谬误
011 06. “上不了好学校,将来就会学坏吗” 滑坡谬误
013 07. “我就不信我赢不了” 赌徒谬误
015 08. “贫穷和疾病不是偷窃的理由” 诉诸怜悯
017 09. “多数人认为对的,不一定是真理” 诉诸大众
019 10. “我一直躺着看书,也没有近视” 诉诸个体
020 11. “经验这个东西,并非都那么可靠” 诉诸经验
022 12. “没人能证明你是对的,所以别跟我争辩” 诉诸无知
024 13. “请你相信我,那只是一个例外” 诉诸规则以外
025 14. “如果做不到完美,就干脆不要做” 诉诸完美
027 15. “我只是偷了东西,又没有伤人” 诉诸最差
029 16. “如果你不相信,我说了也没用” 诉诸信心
031 17. “卧室里放这个,全家得癌症” 诉诸恐惧
033 18. “你说喝酒对身体不好,你不也喝吗” 诉诸反诘
035 19. “不说话,肯定就是你弄坏的” 诉诸沉默
037 20. “如果你不想被开除,就得遵守这一规则” 诉诸势力
040 21. “无利不早起,他这么做一定有所图” 动机论
042 22. “这是名人说的,难道也是错的吗” 诉诸权威
044 23. “谎言重复一千遍,也不会变成真理” 重复谎言
046 24. “开这么好的车,肯定是父母有钱” 强制推理
047 25. “太阳傍晚下山,是因为保姆阿姨回家了” 因果混淆
049 26. “挂一个鸟笼,就一定要养鸟吗” 惯性思维
051 27. “有其父必有其子,是不是真的呢” 诉诸出身
053 28. “我的鸡蛋是臭的?你才是臭的呢” 诉诸人身
055 29. “有意义就是好好活,好好活就是做有意义的事” 循环论证
058 30. “再逼真的稻草人,也不是真实的人” 稻草人谬误
060 31. “骆驼挂铃铛和高塔挂铃铛,不是一回事” 转移论题
063 32. “刻舟求剑的楚国人,到底错在哪儿了” 诉诸感觉
066 33. “你的假设有问题,别想误导我” 预设谬误
071 34. “这样的结果很可怕,你掂量掂量” 诉诸后果
074 35. “我不想出国,所以没必要学英语” 否定前件
077 36. “东施效颦,为什么越闹越丑” 机械类比
079 37. “如果再给我一次机会,我一定……” 无理假设
081 38. “双重否定等于肯定,是这样的吗” 双否定前提
083 39. “所有的天鹅,都有白色的羽毛” 不当周延
085 40. “所有的科莱特人都是说谎者” 罗素悖论
088 41. “鲍西亚的肖像藏在哪个匣子中” 排中律
091 42. “为什么是这样,而不是那样呢” 充足理由律
093 43. “妈妈,师范大学在哪儿呢?” 范畴错误
095 44. “天才是1%的灵感加上99%的汗水” 断章取义
097 45. “嗯?有两个报社的记者参加……” 结构歧义
099 46. “那里的老鼠没有一只是驼背的” 隐含命题
102 47. “套用你的话,看你还能怎么狡辩” 同构意悖
105 48. “说了半天,跟什么都没说一样” 分解问题
108 49. “不是这个,就是那个,没有中间物” 虚假两分
111 50. “你如何知道它是真的,能证明吗” 事实断言
114 51. “只要支付全款的10%就行了” 隐瞒证据
117 52. “不好直接回答时,就回答点别的” 答非所问
119 53. “什么是‘正’,什么是‘不正’” 绝对化谬误
122 54. “诡辩家的半费之讼,你看懂了吗” 二难诡辩术
127 55. “导致这种结果的原因只有一个吗” 简化因果关系
129 56. “中国人民银行的资金有18元8角8分” 故意歪解
131 57. “阴沉着脸,是因为心情不好” 命名谬误
133 58. “小明是小明爸爸的儿子” 同语反复
135 59. “明天约好了去爬山,所以明天肯定是晴天” 一厢情愿
137 60. “所有男人都喜欢看世界杯吗” 区群谬误
139 61. “说不上来,就是有一种感觉” 直觉思维
141 62. “这个项目结束后,起码能赚二三十万” 预期理由
143 63. “萧敬腾一开演唱会,肯定会下雨” 巧合谬误
145 64. “给懒惰的农民发两头牛,他们就勤奋了” 因果倒置
148 65. “夸奖让学生成绩下降,责骂让学生成绩进步” 回归谬误
150 66. “和尚动得,为何我动不得” 推不出来
151 67. “下半年有富余的话,我肯定借给你” 设定条件
153 68. “抽烟会影响空气质量,赶紧戒了吧” 无足轻重
155 69. “自古以来,家务活都是女人做的” 诉诸传统
158 70. “我们该为别人的盲目行为负责吗” 说即劝说
160 71. “狂放之士,用他有什么益处呢” 以人为据
162 72. “盗书,怎么能算是偷呢” 说文解字
165 73. “你的动作总是出错,不是跳舞的料” 过度引申
167 74. “人的眼睛有5.76亿像素,却终究看不懂人心” 不当类比
170 75. “眼见都不一定为实,更何况道听途说呢” 诉诸传言
171 76. “本命年穿红色衣服,就会有好运吗” 破除迷信
173 77. “简单答案?算了吧……” 简单答案不存在
175 78. “思维卡壳的时候,你该怎么办” 触类旁通
177 79. “能不能把话说得明白一点儿” 中性词语
179 80. “打破砂锅问到底,直至找出满意的答案” 追踪思维
181 81. “葡萄那么酸,我才不想吃呢” 合理化
183 82. “是团体中的成员太蠢了” 集体思维
186 83. “你不认为这么想是合理的吗” 诱导性问题
188 84. “把最胖的那位科学家丢出去” 求易思维
190 85. “组合的力量是无穷的……” 组合思维
192 86. “我喊‘3’的时候大家一起睁开眼” 逆向思维
194 87. “下次不下雨的时候,献祭活人就是了” 在此之后
196 88. “抽维珍妮细烟能让女性身材变纤细吗” 固定联想
最近公司遇到一起网站无法访问的故障,记录一下排骨过程。
某工位人员电脑突然无法访问公司 web 服务器上部署的网站。
最近在看李沐大神的动手学深度学习的视频,看到大神努力地推荐AutoGluon,说它能够让普通人很容易上手使用深度学习模型,因此学习一下。
AutoGluon由AWS AI开发,自动化机器学习任务,使您能够轻松地在应用程序中实现强大的预测性能。只需几行代码,您就可以在图像、文本、时间序列和表格数据上训练和部署高精度的机器学习和深度学习模型。
使用conda创建一个环境,再在该环境上安装AutoGluon。
1 | conda create -n autogluon python=3.11 |
使用如下代码快速演示:
1 | from autogluon.tabular import TabularPredictor |
公司一个遗留门户网站需要定期维护,经常需要调试才能确定出问题的地方,因此研究一下php调试的方法,记录一下。
注:该网站使用 php 开发,并采用前后端分离的架构。
在代码中添加 echo、var_dump、print_r 和 exit,在浏览器中查看输出。该方法不适用采用前后端分离架构的门户网站,因为前端通过restful api 访问后端,后端产生的结果不直接显示在浏览器网页中。
Xdebug 是一款PHP 的调试工具,可以帮助开发者追踪、调试和分析PHP 程序的运行状况。它允许开发者在代码中设置断点,单步执行代码,查看变量值等,从而更有效地排查和解决问题。
最近学习《动手学深度学习》第二版这本书,里面用到 miniconda,因此记录一下 Conda 使用方法。
Conda是一个开源跨平台语言无关的包管理与环境管理系统。由“连续统分析”(Continuum Analytics)基于BSD许可证发布。
Conda允许用户方便地安装不同版本的二进制软件包与该计算平台需要的所有库。还允许用户在不同版本的包之间切换、从一个软件仓库下载包并安装。
Conda是用Python语言开发,但能管理其他编程语言的项目(如R语言),包括多语言项目。 Conda可安装Python语言的包,类似于其他基于Python的跨平台包管理器(如wheel 或pip)。
Miniconda 是 Anaconda Distribution 的免费微型安装,仅包含 conda、Python、它们所依赖的软件包以及少量其他有用的软件包。
如果您需要更多软件包,请使用conda install命令从 Anaconda 公共存储库中默认提供的数千个软件包中进行安装,或者从其他渠道(如 conda-forge 或 bioconda)进行安装。
conda 分为 anaconda 和 miniconda,anaconda 是一个包含了许多常用库的集合版本,miniconda 是精简版本(只包含conda、pip、zlib、python 以及它们所需的包),剩余的通过 conda install command 命令自行安装即可;
1 | # 语法 |
1 | # 语法 |
1 | # 查看当前电脑上所有的conda环境 |
1 | # 语法 |
1 | # 查看当前conda环境安装的所有依赖包 |