基于python(web.py框架)开发的一个高铁小站-适合python初学者练习的小站小型python源码下载以及关于computer的时间同步,也许我们可以知道更多

林戈的IT生涯 2024-09-04 16:03:03 阅读 84

一、基于python(web.py框架)开发的一个高铁小站-适合python初学者练习的小站小型python源码下载

        之前为了练习python,使用web.py开发了一个高铁小站:中国高铁地图(通过编辑各城市高铁站的经纬度数据,并在地图上通过线路连续实现动态展示中国高铁地图)线路越粗,设计时速越高,目前最高350KM/h。这个小站没有什么特别的,但是对于一个python初学者而言,这是一个非常容易入手学习python的代码,整个小站代码不多,但所有MVC都包括,并且是一个很有意思的内容。我已附上sql文件。包括全国各主要城市的经纬度数据表。

        在后台管理里也做了很多的工作,原来是开发一个很完整的先编辑完整的高铁车站信息,包括车站线台数,建面平方数,等级等很多的参数,以及高铁线路、车站的图片,图片描述等,后来发现自己根本没有时间和精力来维护这么多的东西,于是自己又再开发了全编辑这么一个功能,绕开那些高铁站的添加编辑,只要添加一条高铁线路,然后进入这条线路,逐个添加高铁车站,并且在添加高铁车站名称的同时后台会自动去百度地图或者数据库缓存中拿到经纬度数据,从而避免输入经纬度,这样编辑一条线路的时间和精力成本就大大下降了,这也是为什么我能在短时间内编辑完下面这个相对比较完整的高铁线路图出来,当然不得不说,整个这个小站也真的是花了我不少精力。

        小站展示地址:http://www.8492.cn

        高铁线路图截图如下:

    目前因为时间有限,精力有限,了解的内容也有限,肯定还有很多高铁线路没有加上,欢迎大家在评论里告诉我,我有时间会来添加。

    另外今天把这个项目提交到了github上:https://github.com/KermitCode/china-gaotie-map_python_web.py 有需要的朋友可以去下载,我也好久没有使用git了。把今天运行的git命令在这里做个记录。本博客的CSDN中也可以搜索,迁移文章的时候尚未上传,后期也会上传到CSDN上提供下载。

        首先在github上建立一个Repository知识库,并添加README.md文件,然后git上的命令小记如下:

<code>$ git clone https://github.com/KermitCode/china-gaotie-map.git

然后将git生成的目录下的.git目录以及README.md移至当前目录下

$ mv china-gaotie-map/.git/ ./

$ mv china-gaotie-map/README.md ./

$ rm -rf china-gaotie-map/

$ git add .

$ git commit -m "初始化中国高铁python项目代码"

$ git push origin master

在web界面更新了README.md后使用$ git pull更新文件

$ git pull

再添加sql文件

$ git add china-gaotie.sql

$ git commit -m "sql file"

后面的git push就不用再加上origin master了。

$ git push

    另外github上的项目类别总是容易出错,我这次上传的是python项目,但因为代码里面有很多的视图模板html文件,所以它就把我的标成html,解决办法就是在项目的根目录下创建一个文件:名为.gitattributes,内容如下,然后就可以了。

*.js linguist-language=python

*.css linguist-language=python

*.html linguist-language=python

 二、关于computer的时间同步,也许我们可以知道更多

    使用Windwos里好像没有系统时间什么事,一切自然而然好了。极偶尔要破解个软件可以手动设置一下时间,或者出国的话调整一下时区,总之一般没有时间的事,这是因为windows已经为我们完善了所有时间处理,win系统时间保存在BIOS里,每次开机系统会自动在BIOS里面取硬件时间,系统启动之后windows又自动选择Internet时间并保持同步,可以在任务栏上的时间上点击打开窗口,选择Internet时间查看是否设置与internet同步 publish:January 22, 2019 -Tuesday。

    整个逻辑和Linux是相似的,Linux时间也会存储在硬件(BIOS)中,系统时间和硬件时间以异步的方式运行,互不干扰,硬件时间是靠电池来维持,系统时间是用CPU Tick来维持的。系统开机时自动从BIOS中取硬件时间设为系统时间。但有一点linux默认情况下,没有给你加上自动同步网络时间的任务,像阿里云服务器这些基本都是做了处理,添加了任务,而没有添加同步时间的服务器,运行一段时间之后就可能出现时间不同步,可能就会给业务带来出错。比如两台服务器间有请求是以请求时间鉴定请求是否有效,那么如果两服务器的时间差大于了判定有效的阈值,那就会带来业务问题了。因此在linux服务上必须对服务器进行时间同步。

1. Linux时间的设置以及Linux硬件时间

#查看和修改系统时间命令

date

date -s "yyyymmdd hh:mm:ss"

#查看和设置硬件时间

hwclock --show

hwclock --set --date "yyyymmdd hh:mm:ss"

可以通过hwclock --systohc命令同步系统时间和硬件时间,防止系统重启后时间还原。

2.关于ntpdate服务

ntpdate is a computer program used to quickly synchronize and set computers' date and time by querying a Network Time Protocol (NTP) server. It is available for a wide variety of unix-like operating systems.

        ntpdate是一个计算机程序,用于通过查询网络时间协议(NTP)服务器来快速同步和设置计算机的日期和时间。它适用于各种类似Unix的操作系统。

ntpdate的安装及使用:

#安装ntpdate,

yum install ntpdate -y

#同步网络时间,如下将从time.windows.com同步时间, 也可以不加-u参数

# ntpdate -u time.windows.com

#添加到crontab 任务中,一般写在行首,#每小时同步一次

* */1 * * * ntpdate -u time.windows.com

3.ntp常用服务器列表如下:

NTP服务器(上海) :ntp.api.bz

美国:time.nist.gov

复旦:ntp.fudan.edu.cn

微软公司授时主机(美国) :time.windows.com

台警大授时中心(台湾):asia.pool.ntp.org

The accuracy and reliability of ntpdate entirely depends on the accuracy and network link stability of the first server it connects with. As this inaccuracy can lead to a multitude of problems, the maintainers have decided to deprecate it in favor of only using the ntpd (network time protocol daemon) or a sntp (simple network time protocol) 

ntpdate的准确性和可靠性完全取决于它连接的第一台服务器的准确性和网络链路稳定性。由于这种不准确性可能会导致许多问题,维护者已经决定弃用它而只使用ntpd(网络时间协议守护进程)或sntp(简单网络时间协议)

SNTP:Simple Network Time Protocol (SNTP) is a less complex implementation of NTP, using the same protocol but without requiring the storage of state over extended periods of time. It is used in some embedded systems and in applications where full NTP capability is not required.

SNTP:简单网络时间协议(SNTP)是一种不太复杂的NTP实现,使用相同的协议但不需要长时间存储状态。它用于某些嵌入式系统和不需要完整NTP功能的应用程序中。

4.关于ntpd服务 

        使用ntpd服务,要好于ntpdate加cron的组合。因为,ntpdate同步时间会造成时间的突变和跳跃,对一些依赖时间的程序和服务会造成影响。比如sleep,timer等。而且ntpd服务可以在修正时间的同时,修正CPU Tick。因此理想的做法为,在开机的时候,使用ntpdate强制同步时间,在其他时候使用ntpd服务来同步时间。

        要注意的是,ntpd 有一个自我保护的机制:如果本机与上源时间相差太大,ntpd 不会运行时间同步操作,所以新设置的时间服务器一定要先 ntpdate 从上源取得时间初值, 然后启动 ntpd服务。ntpd服务运行后,先是每64秒与上源NTP服务器同步一次,根据每次同步时测得的误差值经复杂计算逐步调整自己的时间,随着误差减小,逐步增加同步的间隔。每次跳动,都会重复这个调整的过程。不过对绝大多数人而方,使用ntpdate加cron完全足够了。



声明

本文内容仅代表作者观点,或转载于其他网站,本站不以此文作为商业用途
如有涉及侵权,请联系本站进行删除
转载本站原创文章,请注明来源及作者。