1. Mac上使用Docker安装MySQL
1 | # 启动容器 |
最后这个修改密码算法是必要的,不然会出现这个错误Public Key Retrieval is not allowed
。
1 | # 启动容器 |
最后这个修改密码算法是必要的,不然会出现这个错误Public Key Retrieval is not allowed
。
os.getcwd()返回工作目录,工作目录(Working Directory)是指当前用户或程序正在其中执行命令或访问文件的目录。在操作系统中,当你打开一个命令行界面(如终端、命令提示符)或运行一个程序时,都有一个与之关联的工作目录。这个目录是相对于该环境而言的当前位置,用于解析相对路径。
os.getcwd() 函数是 Python 标准库 os 模块中的一个函数,用于获取当前工作目录的绝对路径。这个函数通过查询操作系统来确定当前进程的工作目录,并将其作为一个字符串返回。
具体来说,os.getcwd() 如何确定工作目录,取决于操作系统提供的机制。在 Unix-like 系统(如 Linux 和 macOS)中,这通常涉及到查询当前进程的环境信息,该信息中包含了工作目录的路径。在 Windows 系统中,机制可能有所不同,但同样依赖于操作系统提供的API来查询当前进程的工作目录。
当 Python 程序(或 Python 交互式解释器)启动时,它的工作目录通常是启动该程序或解释器的那个目录。但是,在程序执行过程中,可以使用 os.chdir(path) 函数来改变工作目录,这时 os.getcwd() 返回的将是新的工作目录路径。
需要注意的是,os.getcwd() 返回的是绝对路径,这意味着它是一个从根目录开始的完整路径,不受当前工作目录的相对位置影响。这对于需要精确处理文件路径的程序来说是非常有用的。
所以python返回的工作目录是执行python命令的那个目录,所以这个目录很重要,不能随便用来删除目录,我不小心就把自己的源码目录给删除了,还好有GitHub。
python有第三方库pytz
,python 3.9版本以上有一个自带的库zoneinfo
。我必须吐槽一下,这个timezone库就这么不重视吗,这么晚才有。
1 | date1= datetime.now() |
这3种都是不带timezone,但是有个地方要注意,date1虽然没带,但是如果打印它,是当前的系统timezone下的时间,而非UTC时间,所以就是它没有这个tzinfo
的属性,但是就是用了。
1 | tz = pytz.timezone('Asia/Shanghai') |
这里就是给datetime.now一个tzinfo,无论给它什么样的tzinfo,最近它们的本质还是一样的,都是同一个时间,不同点只是tzinfo不同。注意localize只能对没有tzinfo的值设置,而replace没有这个限制。
尽管实参一样,但是local_date和utc_date的表示时间却是不一样的,因为date2原来没有tzinfo,调用了不同的tzinfo.localize方法后,产生的时间就是不一样的,所以这需要知道你的实参的timezone是什么,才能正确的给它设置timezone。
1 | # 将UTC时间转换为上海时间 |
当我们有一个带有timezone的时间,想转为另一个timezone的时间,从时间本身来讲,它们是一样的,只不过是影响了表现形式。这里的作用就是给用户看的时候,他能理解这个是他的时区的时间,所以这种转换就是为了输出可视化字符串。
由于replace
过于粗暴,所以还是最好别用了, replace中传入pytz.tzinfo就有bug。实在要用就用zoneinfo,不要用pytz。
时间比较需要注意的是,要么两个时间都不带timezone,要么都带,不能一个带一个不带。所以推荐都带,两个时间相减时,得到timedelta
。因为有些服务的API返回的date是带有timezone的,所以最好我们自己的时间也带上。
由于Mac的磁盘空间不足,需要时常清理一下。
Derived Data是一个文件夹,它默认情况下位于:~/Library/Developer/Xcode/DerivedData。它是Xcode存储各种中间构建结果、生成索引等的位置,这个文件夹通常会很大,清理后会回收不少空间。你可以在Xcode的preferences中设置Derived Data的位置。清理之后构建首次构建项目的时候可能会增加构建时间。但是这不影响正常使用。而且还可以回收更多自由的空间内存。
1 | rm -rf ~/Library/Developer/Xcode/DerivedData/* |
官方说 java -jar jenkins.war
是推荐的方式,意外的是tomcat不推荐。原因是jenkins内置了web服务器Jetty, 而Jetty使用了Servlet, 所以高版本的tomcata不兼容,会报一个诡异的错误: “The requested resource [/jenkins] is not available”。
排查原因:
Tomcat修改账号,conf/tomcat-users.xml, 增加一个用户名和密码,并且赋权限manager-ui。是的,这个tomcata的管理权限还是不要在pro环境开,不然有风险。
把下载后的jenkins.war放到tomcata的安装目录下的webapp目录下面,不需要解压,tomcat会自己解压。
启动Tomcat: catalina.sh start
,这个是后台运行,关闭shell/session也不印象Tomcata运行。
关闭Tomcat: catalina.sh stop
,每次修改配置文件后,都需要重启。
JS是单线程,不能block它,也不适合做CPU密集型工作。如果有可能尽量使用native模块或多线程技术负担JS线程工作。
资源限制内部机制使用的是cgroup类型
目录: /sys/fs/cgroup/systemd
k8s采用request和limit两种限制类型来对资源进行分配
request(资源需求):即运行pod的节点必须满足运行pod的最基本需求才能运行pod。
limit(资源限制):即运行pod期间,可能内存使用量会增加,那最多能使用多少内存,这就是资源限额。
资源类型:
CPU的单位是核心数,内存的单位是字节。
一个容器申请0.5各CPU,就相当于申请1个CPU的一半,可以加个后缀m表示千分之一的概念。比如说100m的CPU,100豪的CPU和0.1个CPU都是一样的。
内存单位:
K,M,G,T,P,E #通常是以1000为换算标准的。
Ki,Mi,Gi,Ti,Pi,Ei #通常是以1024为换算标准的。