octave for Mac安装、使用
安装octave首先,你的Mac上要安装好Homebrew。如果你不知道你的电脑装没装Homebrew,那你可以运行命令brew -v。如果显示下图则说明已经安装过。
如果没有的话,运行这条命令安装Homebrew。
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install.sh)"
也可以去Homebrew官网了解下。官网的介绍很明白。
下面直接运行命令brew install octave,然后等待安装完即可。整个安装过程可能很长,耐心。
octave基本使用GUN Octave官网是这么介绍的,Octave是一门专门用于科学计算编程的语言(Scientific Programming Language)。
GUN Octave 是一门最初被发明用于数值计算的高级语言,它使用一种与Matlab几乎完全兼容的语言,为解决数字上线性和非线性问题、执行其他数 ...
贰零贰零年十一月
11.01到了最后一步,一定要「不要脸,不要钱,不要命」,懂这九个字,大多数事情都有机会去做。
当孩子的学识和见识远超父母的时候,亲子相处模式就应该做出相应的调整。
父母应该停止对孩子的人生提供一些孩子根本就不会遵从的建议,而应该把孩子当做资源,向孩子咨询自己的人生困惑,这才是孩子回报父母的方式。
11.02注释应该是注释Why,而不是How和What。
11.03摸鱼结束。
11.04
11.05
11.06不要等一件事情做不下去了,才开始准备。
11.07「What I cannot create, I do not understand.」
只有创造一个东西,才算真正弄懂一个问题。
11.08//…
11.09《风声》。
11.10现在已经找不到大一时做编程题的感觉了。可以静下心来半天、一天甚至是一周来想解法。现在浮躁的很。
11.11不要网贷。找熟人借钱会觉得不好意思。网贷就没有这个阻碍,反而还可能会加剧网贷频率。而且,还钱还有个延后期,会有个「寒号鸟」效应。
「寒号鸟」的故事:
山脚下有一堵石崖,崖上有一道缝,寒号鸟就把这道缝当作自己的窝。石崖前面有一 ...
刷题「哈希表」相关
数组中两个数的和为给定值(简单)暴力算法在这里就不讲了。
这里介绍下用「哈希表」来解决此题。
为什么会想到哈希表呢?这是因为
class Solution { public int[] twoSum(int[] nums, int target) { HashMap map = new HashMap(); for(int i = 0; i < nums.length; i++) { int n = target - nums[i]; if(map.containsKey(n)) { return new int[] {(int) map.get(n), i}; } map.put(nums[i], i); } throw new IllegalArgumentException("null"); ...
刷题「栈和队列」相关
用栈实现队列(简单)栈的特点是「先进后出」。队列的特点是「先进先出」。现在要求使用后进先出的栈实现一个先进先出的队列。也就是要保证栈顶的元素始终是队首的元素。
方法一:
我们可以用两个栈来实现。其中一个栈用来存储数据,我们称为「数据栈」,另外一个栈用来辅助将数据倒序push进第一个栈的,我们称为「辅助栈」。因为,这样可以让数据栈的数据保持新来的数一直在栈顶,这样可以实现「先进先出」。
画图如下:
class MyQueue: def __init__(self): """ Initialize your data structure here. """ # 数据栈 self.stack1 = [] # 辅助栈 self.stack2 = [] # 数据的个数,用来指向栈顶元素 self.size = 0 def push(self, x: int) -> None: & ...
刷题「数组与矩阵」相关
把数组中的0移到末尾(简单)暴力解法就不说了。下面介绍下双指针的思路。
现在的思路就是我们假想又开辟了一个新的数组,但是这个新数组和原数组占用同一片空间。也就是我们让原数组具有「双重人格」。一会表示原数组,一会表示我们假想的新数组。
新数组的内容为原数组中的非零元素。并保持相对顺序。由指针lastNonZeroFoundAt来控制新数组。
两个指针,一个用来遍历原数组,一个lastNonZeroFoundAt用来操作新数组,初始值为0。
程序开始,当我们遍历到一个非零元素就将该元素赋值给nums[lastNonZeroFoundAt],然后lastNonZeroFoundAt ++。
最后,将新数组的非零元素后面填充0。这里我们并没有将0移动,我们移动的是非零元素。所以将非零元素移到前面以后,后面的就是0。
class Solution { public void moveZeroes(int[] nums) { int lastNonZeroFoundAt = 0; for (int i = 0; i < nums.leng ...
刷题「树」相关
递归树的高度(简单)采用深度优先遍历。
当root is None时,则return 0。
否则,返回左、右子树深度的最大值 + 1。
如果当前结点为空,则其高度为0。否则,就分别求其左、右子树的高度,然后取两个高度中的最大值 ,加1, 就是当前结点的高度。
PythonJavaclass Solution: def maxDepth(self, root: TreeNode) -> int: return 0 if not root else max(self.maxDepth(root.left), self.maxDepth(root.right)) + 1class Solution { public int maxDepth(TreeNode root) { if (root == null) { return 0; } return Math.max(maxDepth(root.left), maxDepth(root.right)) + ...
刷题「链表」相关
找出两个链表的交点(简单)该题要求时间复杂度为O(N)。如果想用两个指针分别指向两个链表,然后遍历求解,这样就需要两层循环,显然不符合时间复杂度O(N)的要求
对于正确解法的理解可以看下这张图⬇️
class Solution: def getIntersectionNode(self, headA: ListNode, headB: ListNode) -> ListNode: ha, hb = headA, headB while ha != hb: ha = ha.next if ha else headB hb = hb.next if hb else headA return ha
*另外补充下,如果只是判断两个链表是不是有共同结点,可以这么做
将两个链表首尾相连,然后判断后一个链表是不是循环链表
直接比较两个链表的尾结点相不相等
链表反转(简单)这里要用到两个指针,一个指向当前结点,一个指向新链表的头结点(当前结点的上一个结点)
class Solution: ...
贰零贰零年十月
10.01「可是人这东西是要把自己附在什么上面才能生存的。」大岛说,「不能不那样。你也难免不知不觉的如法炮制。如歌德所说,世间万物无一不是隐喻(metaphor)。」
幸福是寓言,不幸是故事。
10.02
10.03读书。看剧。
10.04不太重要的人和太重要的人,都不需要经常见。
不太重要的人,你只需要给他亮出「肌肉」,告诉他这里有利益可以交换,足够了。不用和他们谈什么感情,纯属浪费。
太重要的人,平时各忙各的,见不见面无所谓,需要的时候,自然在那里。这种感情,无需耗费精力维系。
三观不一致的人,很难走到一起。朋友是吸引来的,不是经营来的。
另外,我们没有自己想象的那么脆弱,脆弱到需要那么多的朋友。
强烈推荐《Person of Interest》
10.05没有启发性的东西。
10.06行有余力再读书。
我们应当把时间、精力,全部都投入到那个关键事情上,尽快让它达到阈值。然后再去学习其他东西。否则,就会出现自己的事情没做好,学习其他东西也没收获。能力不够时,是撑不起那些从公众号、星球等看到的见识的。
10.07这也太魔幻了吧。我买到了一个屏幕有白斑的iPad,我又卖 ...
我终于开学啦
九月十八号,距离我元旦放寒假已经过去了将近九个月。
一场突如其来的疫情夺去了我在本科最后的半年时光。原本打算好的一切计划都被迫取消。等过些年回头再看,我们2020年真的是在见证历史。
考研准备了将近一年的时间,也是如愿考上了心仪的学校。当初选学校,我最关注的就是城市。综合各方面因素,我最终选择了杭州。
报道当天就在一直下雨,那种朦朦胧胧的小雨。我也没带伞,辛亏当时地铁站有迎新的学长,找他们借了一次性雨衣。好心的学长看我还有个电脑包,就又多给我一个。
报道都挺顺利的,几分钟搞定。
唯一糟糕的事情就是,我的快递报道那天没到。所以晚上我就没有被褥睡,这就很尴尬了。不过幸好我舍友多拿了一床冬天的被,我把被子从中间对叠,一边垫在下面,一边用来盖,就这样凑合和了一宿。
今天写这篇文章的时候终于出太阳了。
我暑假期间选的导师,昨天给我发消息说,他那边名额满了让我再联系下其他的导师。我赶紧又看了下其他导师的信息,赶紧发了邮件。被导师拒绝确实有点伤心,我的实力也可能是不够,希望研究生三年可以好好地提升下自己。加油!
今晚迎新,明天就开始上课了。
Mac使用Timemachine自动备份
引言我相信很多人都有丢失文件的经历,然后想尽各种办法找回数据。我就中过一次枪。所以说与其等到真的意外丢失了文件再着急,不如从现在开始,养成随时备份的好习惯。
对于Mac用户,Timemachine你值得一试。
准备硬盘首先,我们需要一块移动硬盘。我直接用的是在老电脑上卸下来的,500GB。然后在网上买了个透明的硬盘盒。如果没有老电脑可以拆,在网上买块新的也行。
透明移动硬盘盒(点我购买)价格:24.9元
西部数据(WD)移动硬盘 2.5寸 USB3.0 价格:349元
初始化硬盘准备好硬盘后,下边要对硬盘进行初始化。
打开系统自带的「磁盘工具」,在左侧选中自己的硬盘,点击上方的「抹掉」。在弹出的对话框中,名称自己随便设置一个,格式选择「Mac OS 扩展(区分大小写 日志式)」(默认项)。最后点击「抹掉」,等待完成即可。
建议让Timemachine独占硬盘
加密磁盘当做完上述步骤后,Mac会自动提示你是否使用该硬盘对Mac备份。同时为了数据的安全性,建议在弹出的对话框中勾选「给备份磁盘加密」。
随后在弹出的对话框中输入密码和提示信息即可。
这个加密过程是非常缓慢的,加密速度大 ...