Algorithms
Power of Two
思路: 如果一个数是2的次方数,它的二进数最高位一定为1,其它都为0,当减1时,最高位会降一位,其余为0的位会变为1,将两数相与会得到0。
1 2 3 4 5 6
| class Solution { public: bool isPowerOfTwo(int n) { return (n > 0) && (!(n & (n - 1))); } };
|
Palindrome Linked List
思路: 使用快慢指针找到链表中点后,将后半段的链表逆序,之后进行比较。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48
|
class Solution { public: bool isPalindrome(ListNode* head) { if (head == NULL || head ->next == NULL) { return true; } ListNode *mid = midList(head); mid->next = reverseList(mid->next); mid = mid->next; while (head != NULL && mid != NULL) { if(head->val != mid->val) { return false; } head = head->next; mid = mid->next; } return true; } ListNode *midList(ListNode *head) { ListNode *slow = head; ListNode *fast = head ->next; while(fast != NULL && fast->next != NULL) { slow = slow->next; fast = fast->next->next; } return slow; } ListNode *reverseList(ListNode *head) { ListNode *pre = NULL; while(head != NULL) { ListNode *temp = head->next; head->next = pre; pre = head; head = temp; } return pre; } };
|
Review
本周阅读英文文章 A hacker intercepted your Wi-Fi traffic and stole your contacts, passwords, and financial data. Here’s how.
Technique
在执行du命令的时候遭遇了
1 2
| $ du -sh ./* - bash: /usr/bin/du: Argument list too long
|
顿时愣住,发生了啥这是,检查了一下,我进错目录了,打扰了,但是如上的报错是怎么回事?
查了一下:
https://stackoverflow.com/a/18647755
https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=271588&archive=yes
那么看一下我使用的系统中ARG_MAX
的值是多少:
1 2
| $ getconf ARG_MAX 2097152
|
其实在APUE中也提到了ARG_MAX
,在2.5节和8.10节中:
ARG_MAX: exec函数的参数最大长度(字节数)
、每个系统对参数表和环境表的总长度都有一个限制。在2.5.2节和表2-8中,这种限制是由ARG_MAX给出的
。
好的,我知道没认真看书了,都没记住😭😭😭,这次记住了…
Share
最近除了敲代码,就一直在和大量的数据打交道,因为数据来自外部,没人清楚里面的细节,那么举个栗子,一个压缩包4G,解压完毕22G,中间有多级目录,类似这样:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
| $ tree . ├── abc │ ├── 01 │ │ ├── aaa.pcap │ │ └── bbb.pcap │ └── 02 │ ├── ccc.pcap │ └── ddd.pcap └── def ├── 01 │ ├── aaa.pcap │ ├── bbb.pcap │ └── eee.pcap └── 02 ├── ccc.pcap └── ddd.pcap
6 directories, 9 files
|
我需要将所有的pcap文件都移至另一个文件夹中(不存在子目录),没有去查看详细情况就进行了操作,在检查文件个数和存储空间大小的时候,发现只有1000多个文件,26M的大小,这肯定不对,瞬间想到文件重名的问题,抽查了几个,发现每个文件名都存在几千以上的同名文件并位于不同目录下,之后就更改处理方式得到解决。
那么这次的教训就是对于未知的数据,拿到手以后,要去做一个基础的了解,不能上来就想当然的去操作。