在push之前,我们需要看看自己的机器有没有跟GitHub仓库关联起来(一般第一次都没有),首先我们需要创建SSH Key。...发现没有调用成功,排查了好久都没排查出来(一度怀疑是不是我的电脑crontab有问题)… 我当时还写了另一段脚本去看一下我的crontab有没有问题,再后来才把执行的结果写到文件上的 执行一段程序也好,...一段脚本也好,在最编写的时候一定要打日志 期间也遇到过奇奇怪怪的坑,这里列一下,希望后续的人看到我这篇文章能解决掉相似的问题: 脚本写完,记得加上可执行的权限 保存crontab的时候,遇到"/usr/...我在写这篇文章之前,我也不知道Mac的crontab会遇到这么多的问题,也花了我不少的时间去解决。对于这些问题,我也不懂。但是我们可以去找方案,找解决的办法,最终还是可以完成的。...参考资料(微信不支持外链,想要参考链接的同学回复「同步」即可获取: crontab无法执行脚本原因及解决方法 macOS中使用crontab教程以及问题解决办法 每日自动将你的网站备份到Github 告别数据丢失
拨云见日,看清数据结构 遇到一个实际问题,需要解决两个事情: (1) 如何将数据存储在计算机中; (2) 用什么方法策略解决问题。 前者是数据结构,后者是算法。...数据是一切能输入到计算机的信息总和,结构是指数据之间的关系,数据结构就是将数据及其之间的关系有效地存储在计算机中。算法是指对特定问题求解步骤的一种描述,说白了就是解决问题的方法策略。...遇到一个实际问题,充分利用所学的数据结构,将数据及其之间的关系有效地存储在计算机中,然后选择合适的算法策略,并用程序高效实现。,这就是N.Wirth教授所说的:数据结构+算法=程序。...同一个问题,如何有效地存储数据,不同的数据结构产生什么样的算法复杂性,有没有更好的存储方法提高算法的效率?...但是,如果在现实中遇到一个复杂问题,一个芯片只能完成其中一个功能,难道要连接十几块芯片来解决这一个问题?
大家都知道,在解决一个问题之前,必须先了解这个问题,所以创建一个 问题(Issues) 来帮助开源项目是一个很好的方式。 ...当我们下载了开源项目的代码,引入到我的项目中,但是我们会发现这个代码中存在问题,并不能满足我的所有要求,可能是在我需要用到的一个函数里面有一个错误,但是我不知道如何修复这个错误, 这个时候可以通过...注意:不要碰见一个问题就提交,这样对开源项目并没有好处。所以我们最好确保要为我们的开源项目创建一个真正有用的问题。 我们最好把开源项目克隆到我的本地计算机中进行运行,进而发现问题。...我们将 Fork 到的开源项目克隆到我们本地计算机中进行修改,把更改通过 Pull requests 到原始的项目中。 ...但是并不是所有的 Pull requests 都会被合并,这并不意味着你的修改是有问题的,有时候项目的维护者他就是不鸟你!你也没办法!
计算机的终极是人工智能,而人工智能的核心是算法,算法已经渗透到了包括互联网、商业、金融业、航空、军事等各个社会领域。算法正在改变着这个世界。...在遇到一个实际问题时,需要解决两个问题: (1)如何将数据存储在计算机中? (2)用什么方法、策略解决问题? 前者是数据结构,后者是算法。...数据是一切能输入到计算机的信息的总和,结构是指数据之间的关系,数据结构就是将数据及其之间的关系有效地存储在计算机中并进行基本操作。算法是指对特定问题求解步骤的一种描述,是解决问题的方法策略。...日常增删改查+粘贴复制+搜索引擎的确可以实现很多东西,但是只能复制粘贴相似度极高的功能,对稍复杂的问题没有任何办法,同样,这样也是没有任何竞争力的。...本书透过问题看本质,重点讲解如何分析和解决问题。本书采用了简洁易懂的代码,对数据结构设计和算法的描述全面细致,而且有算法复杂性分析及优化过程。 (4)实战演练,循序渐进。
在操作系统中左一和右尔相当于两个线程,而金鱼相当于一个共享资源,因此这个问题就是两个或多个线程操作同一资源的问题。...即在计算机中两个或多个线程同时执行了一段代码或访问了同一个资源,资源被称为临界区。 那么如何防止竞争呢?也就是说任何时候只能有一个线程在临界区。...那么左一和右尔想了一个办法,每个人在喂鱼之前先留下字条,告诉对方自己将要检查鱼的状态。这样就可以了吗?仔细想想其实这样的作法并没有从根本上解决问题,仅仅减少了鱼被撑死的概率。为什么?...很快他们又想到了办法,先留字条,后检查有没有对方的字条,左一和右尔非常开心,因为这样做了之后,无论线程如何切换,都会出现有过一张字条。 但是又出现了问题,金鱼似乎没有被撑死,但是被饿死了。...看起来这样的方法是可以的,但是在计算机中导致了什么问题呢?
八位流: 在计算机中存储的最小单位是位(binary),也就是0和1的二进制码,但是非特殊情况下,能操作的最小存储单位是字节,每8位一个字节。...流是有限资源用了就要关闭,不然会发生文件占用的情况。 代码示例: ? 如何将读取的字节变成字符和字符串? 想要将读取的字节变成字符只需要强制转换一下char类型即可。 代码示例: ?...但是上面这种方式,存在一个缺陷,就是最后读取的长度小于数组的长度,后面的元素就会没办法被覆盖掉。所以应该使用一个变量来记录读取的长度,然后每次读取多长就转换多长才不会出现这个问题。 ...代码示例: ? 关于读取中文字符的问题: 在读取中文字符的时候,如果使用单个字符读取是会出问题的,因为一个中文是需要两个字节存储,所以单个读取每次只能读取一个字节,所以自然没办法读取的了。 ...代码示例: ? 运行结果: ? 解决方法: 将文件里的内容一口气读全部取上来,然后再进行转换就不会有问题了。 代码示例: ? 运行结果: ?
“ 教你如何快速开发桌面应用” 首先,我们来想像一下喜欢某个网站,或者我们自己有一个网站,在某个时间我们不知道怎么的突然想把某个网站做成我们自己桌面应用(不要问为什么,之前没有,现在得有 ),那我们来想办法达到我们的目的...我们先来想一下,tk好想可以制作窗口,有没有办法将网站加入到tk中呢!但我们没有搜索到有关资料,那我们来说一下另一个模块吧。 pyqt5,那在这里面是否可以假如网站页面呢? 你还别说,还真可以。...那我们的目标变成了:如何将网站镶嵌到qt开发的桌面应用中去。...: 开发桌面应用模块: pip install PyQt5 == 5.10.0 打包工具: pip install pyinstaller 打包命令 pyinstall -w -F + 名称 那看具体代码...,那我们来将这个程序打包成一个桌面程序吧!
大家都知道,在解决一个问题之前,必须先了解这个问题,所以创建一个 问题(Issues) 来帮助开源项目是一个很好的方式。 ...当我们下载了开源项目的代码,引入到我的项目中,但是我们会发现这个代码中存在问题,并不能满足我的所有要求,可能是在我需要用到的一个函数里面有一个错误,但是我不知道如何修复这个错误, 这个时候可以通过...演示:在我自己的代码仓库中的创建问题报告。 首先要检查当前的问题列表中是否存在我要提交的问题,可以使用问题搜索框进行问题关键字搜索。...注意:不要碰见一个问题就提交,这样对开源项目并没有好处。所以我们最好确保要为我们的开源项目创建一个真正有用的问题。 我们最好把开源项目克隆到我的本地计算机中进行运行,进而发现问题。...所以,我们先将这个开源项目克隆到我的本地计算机中进行运行。
如果你尝试用 Python 进行可视化,会发现用起来很爽,但是保存或者展示确稍显麻烦。...所以,在之前,我的一个解决方案是将这一堆图表输出为 html 格式,然后使用 iframe 嵌入前端页面中,当然这是基于 Django ,并且需要自己写前端的 style ,就像去年分享的疫情追踪大屏...那有没有更优雅的方法?选 PyWebIO !...,不多解释 重要的是最后一行,通过 put_html() 嵌入 PyWebIO 中,这样我们这个图的脚本就搞定了,接下来只要如法炮制,制作更多的图表脚本。...当然,上面是基于 pyecharts 进行讲解,实际上适用于任何 Python 可视化库,只要按照相同的办法制作即可,并且更重要的是,我们可以自由排列组合页面内容,并且根据需要添加更多的自定义元素!
不知道你有没有想过这个问题❓ 原码、反码、补码 三种表示方法均有符号位和数值位两部分,符号位都是用0表示“正”,用1表示“负” 对于数值位来说: 正数的原、反、补码都相同。...原因在于,使用补码,可以将符号位和数值域统一处理; 同时,加法和减法也可以统一处理(CPU****只有加法器)此外,补码与原码相互转换,其运算过程是相同的,不需要额外的硬件电路 不知道你有没有发现一个问题...,那么必然存在着一个如何将多个字节安排的问题。...有些ARM处理器还可以由硬件来选择是大端模式还是小端模式 那么问题又双叒叕来了: 请简述大端字节序和小端字节序的概念,设计一个小程序来判断当前机器的字节序 概念性的东西上面说了,代码怎么设计?...,我们只要把a的地址取出来在强制转化成char*在解引用即可(因为a本身是int类型4个字节,我们只一个字节)下面我们来实现代码: 轻松解决该问题。
在现实生活中,我们经常使用整数和小数,不知道你有没有思考过,这些数字在计算机中是如何存储的? 我们学习计算机知识时,经常听到「定点数」和「浮点数」,它们之间有什么区别?...于是人们想出一种方法,即约定计算机中小数点的位置,且这个位置固定不变,小数点前、后的数字,分别用二进制表示,然后组合起来就可以把这个数字在计算机中存储起来,这种表示方式叫做「定点」表示法,用这种方法表示的数字叫做...但是有没有发现一个问题,我们约定了前 5 位表示整数部分,后 3 位表示小数部分,此时这个整数部分的二进制最大值只能是 11111,即十进制的 31,小数部分的二进制最大只能表示 0.111,即十进制的...0.00001 这种高精度的值 由此我们发现,不管如何约定小数点的位置,都会存在以下问题: 数值的表示范围有限(小数点越靠左,整个数值范围越小) 数值的精度范围有限(小数点越靠右,数值精度越低) 要解决这...虽然定点数表示数字,存在以上说的这些问题,但也只是在表示小数的场景下。如果只是用于表示整数,还是非常方便的。 所以,现代计算机中一般使用定点数来表示整数。
x + |x| = 0x100000000,这个最高位1,已经溢出,所以这个结果用四字节保存结果肯定会是0,所以最终得到的x = 0x100000000 - |x|。 ...因为有的浮点数没有办法完全化为二进制数,会产生一个无限值,编译器会舍弃一部分内容,也就说只能表示一个近似的数,所以在比较浮点数是否为0的时候不要用==而应该用近似表示,允许一定的误差,比如下面的代码:...在写程序的时候,我们利用变量名来进行变量的识别,但是计算机根本不认识这些变量名,计算机中采用的是直接使用地址的方式找到对应的变量,同时为了能准确找到对应的变量,编译器会生成一个结构专门用于保存变量的标识名与对应的地址...在声明变量的时候编译器会为它准备一个标示名称,在定义时会给它一个对应的内存地址,以后在访问这个标示的时候编译器直接去它对应的内存位置去寻找它,下面我们添加这个变量的定义代码: extern int nTemp...在编译器中同时也看不到与变量类型相关的代码,编译器在使用变量是只关心它的位置,存储的值,以及如何将其中的二进制翻译为对应的内容,代码如下: int main() { int nTemp = 0x00010101
如何安装HAXM,如何解决HAXM installation failed问题 在安卓开发的过程中,大家都会需要用到安卓虚拟设备,在Android Studio中运行虚拟设备要求安装Intel硬件加速器...To install HAXM follow the instructions found at: https://software.intel.c问题。...笔者也同样遇到此问题,百度后发现网络上很少有此问题的解决办法,个别外网解决办法复杂且没有相关解释,在经过作者大量搜寻资料并测试后,找终于到问题的原因及解决办法,并在此分享给大家,希望能给大家带来帮助...根据错误提示,首先我们需要去本地计算机中找到我们的安装日志 作者的日志的地址如下,大家的默认地址应该与此基本一致,错误提示信息也会指出该日志位置,由于作者已经安装成功,无法再查看错误提示信息,读者可查看自己的错误日志找到自己的日志位置...红框内都是我不断尝试安装haxm而产生的错误日志,名称对应着时间,我们点开最新的一个错误日志 可以发现VMX enabled项给了一个No,这就是问题的我们安装失败的原因了。
概述 先引入一个前提,在计算机中数字是以二进制进行存储的,也就是我们看到的2,在计算机中存储的是10。...我们进行的加法运算 2+1=3 在计算机中是这样的(这里先假设计算机存储的是4位二进制数字) 0010+0001=0011 很容易看的出来,4为二进制数能表示的最大数字是1111,就像两位十进制数表示的最大数字是...在刚开始的时候,计算机只能进行加法运算,这时一部分人想办法让其能够直接进行减法计算,而另一部分人想通过加法来实现减法,最终后者先给出了解决方案。...下面问题来了:如何将上边的2转成14呢?也就是讲二进制的0010转成1110。他们有什么关系呢? 伟大的数学科学家前辈们总结出了规律。并发明了反码和补码的概念。补码就是上面转换后的14。...原码=>按位取反=>反码 反码=>加1=>补码 虽然不知道这个规律是如何找出来的,但经过无数次验证,确实是这样。
对于如何把一串字符串写成二进制,我一直迷惑不解,直到我看到下面的信息: 字符串的本质是char的序列,也就是char [ ]。因此,遍历写入每一个char,就完成了写一个字符串的功能!...那么问题又来了,如何把char写成二进制呢?...把心放肚子里吧,这个问题前人早就已经解决了。世界上的绝大部分字符都有一张类似于ASCII码表的字符和编码间的映射,那就是Unicode码表。...第一个(或高位)代用字符具有 U+D800 和 U+DBFF 之间的代码值,而第二个(或低位)代用字符具有 U+DC00 和 U+DFFF 之间的代码值。...但是,你有没有一个疑问????????为什么(v >>> 8) & 0xFF ??为什么(v >>> 0) & 0xFF????不知道你有没有,反正我有。 具体疑问:1 为什么要用无符号的右移?
上次我们说到算法最基本的处理规则和算法在计算机底层所藉由的工作方式。这次我们来说说计算机中最简单的算法,最朴素的数据存取。...也许有的朋友觉得这种问题太底层,简直没有办法直接把算法转换成大米饭或者房子,但是我还是要说,我们要想深刻理解算法还是要从其处理数据的本质开始看才会有更多思路。...这种珠算口诀的出现是必须由算盘作为搭配承载的,也就是说,这种单档位进退位规则是由于算盘构造而出现的。那计算机中有没有档位呢?有的,上次我们已经说过,就是寄存器的各种逻辑门。...但是再回来找的时候就麻烦了,具体某个数据的地址在哪里?要每个存储单元挨着查找过去才能找到我们要的数据,具体的效率我们在后面的分享中会量化给出来。...计算机中的读和写,算法效率高不高,最底层的实现方式都已经给出来了,这就是计算机自己的珠算口诀。一切算法的实现最终落实下来都是用这样的方式组合而成,自然成本估计也就是用成本叠加的方式去计算。
证明我们创建的私服是可以用的,但是有没有感觉有点别扭,不能想dockerhub 那样直观的查看我们私有仓库的镜像,没有可视化界面。所以接下来我们用另一个镜像来搭建我们私有仓库。...网上说的用户名为admin,密码为admin123 我试了发现登录不上去。 ? 然后看提示说密码存放在这个位置,所以我们进入到容器。查看我们的密码。...这些都配置好了,现在我们怎么使用这个私有仓库呢,我们在/etc/docker/daemon.json 文件中加上私有仓库的地址。...可以看到我们已经将镜像上传的nexus 上了,我们现在在界面上看下。整个的界面就是这样的。 ? 说明我们用 nexus3 搭建的私有仓库是没有问题的。...,再上传到我们的私有仓库,那有没有办法可以一步到位呢?
在本系列中,你将学习在树莓派中如何使用汇编代码控制屏幕,从显示随机数据开始,接着学习显示一个固定的图像和显示文本,然后格式化数字为文本。...如果你没有完成这些,或你喜欢完美的实现,可以去下载 OK05.s 解决方案。在这里也要使用 main.s 文件中从开始到包含 mov sp,#0x8000 的这一行之前的代码。...而在这些事情中,我们目前想知道的是,计算机是如何将一个图像显示到屏幕上的。我们如何将这个问题转换成二进制?答案相当简单;我们为每个颜色设计一些编码方法,然后我们为在屏幕上的每个像素保存一个编码。...图形卡是你的计算机上用来在屏幕上专门绘制图像的第二个处理器。它的任务就是将像素值信息转换成显示在屏幕上的亮度级别。在现代计算机中,图形卡已经能够做更多更复杂的事情了,比如绘制三维图形。...这个地址将是一个我们在屏幕上写入像素颜色信息的位置,我们称为帧缓冲,图形卡将定期检查这个位置,然后更新屏幕上相应的像素。 保存 帧缓冲(frame buffer)给计算机带来了很大的内存负担。
内存(Memory)是计算机中的临时存储器。它被用来存储正在运行的程序和数据,以及操作系统和应用程序所需要的数据。内存是计算机中最快的存储器,但它的容量相对较小且数据保存时间短暂。...当计算机关闭或重启时,内存中的数据会被清除。 硬盘(Hard Disk)是计算机中的永久存储器。它被用来保存操作系统、应用程序、用户数据、音频、视频和其他文件。...此处的文件对象,则是内存上的一个变量~ 后续读写文件操作,都是拿着这个文件对象来进行操作的~~ 此处的文件对象 就像是一个"遥控器" 一样~ 计算机中,也把这种远程操控的"遥控器"称为 "句柄" (handler...所以,解决方法,就是格式统一 ~~ 此处我们使用的办法,是让代码按照 utf 8 来进行处理~ 相比于 gbk , utf 8 是使用更广泛的编码方式~ 在Python语言中,函数的参数可以分为两类...#另外一些代码 f.close() so 我们使用上下文管理器(with ... as...)就能解决问题 # 上下文管理器的使用 def func(): with open("C:\\
领取专属 10元无门槛券
手把手带您无忧上云