2017年6月6日
| 字数
348
看了硅谷4 前5集,男主角属于那种典型的技术男,不想在视屏聊天软件上继续发展,想基于自己创造的压缩算法来构建一个互联网络。印度人搞出来的视频聊天App由于小于12岁的用户太多,此时正好huli的CEO,Gavin有收购的想法,正好阴差阳错把产品转给了Gavin,进而导致Gavin被赶下台。 此时男主角 发现自己想要构建的Piper网络却被Gavin注册了专利,他晚上直接去找Gavin,遭遇闭门羹,峰回路转Gavin却提出要和男主角合作。后来却因为哺血仔的欺骗,对人生心灰意冷把专利无偿转给了Richar……
阅读全文
2017年6月6日
| 字数
1307
preface 《偷影子的人》作者marc·levy,这本书是在2015-09-17日京东搞活动买的,差不多16年3月份才开始看,每天晚上看一点,断断续续差不读2周看完。整本书240页左右。 brief synopsis of story 一个老是受班上同学欺负的瘦弱小男孩,因为拥有一种特殊能力而强大:他能「偷别人的影子」,因而能看见他人心事,听见人们心中不愿意说出口的秘密。他开始成为需要帮助者的心灵伙伴,为每个偷来的影子点亮生命的小小光芒。 某年灿烂的夏天,他在海边邂逅一位又聋又哑的女孩克雷尔。他该如何用自己的能力帮助她?他将如何信守与她共许的承诺?……
阅读全文
2017年6月5日
| 字数
1458
1 题目描述 我们提供了一个类: public class Foo { public void one() { print(“one”); } public void two() { print(“two”); } public void three() { print(“three”); } } 三个不同的线程将会共用一个 Foo 实例。 线程 A 将会调用 one() 方法 线程 B 将会调用 two() 方法 线程 C 将会调用 three() 方法 请设计修改程序,以确保 two() 方法在 one() 方法之后被执行,three() 方法在 two() 方法之后被执行。 来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/print-in-order 著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。 1114. 按序打印 2 考点 着重考察多线程的并发控制。 3 Solution 下……
阅读全文
2017年6月3日
| 字数
3053
Preface 单链表的反转,按K反转等各种考点变体。 处理单链表时, 尽量采用递归实现: 1 因为递归代码简洁+优美,节省时间,并且不容易出错,是面试优选策略。 2 在面试时间比较宝贵的情况下,尽量预留时间展示自己的才能。 1 反转单链表(基础) 单链表结构定义如下: 1 2 3 4 5 6 // Definition for singly-linked list. struct ListNode { int val; ListNode *next; ListNode(int x) : val(x), next(NULL) {} }; 方法一: 递归实现(尾插法) 1 2 3 4 5 6 7 8 9 10 11 12 13 class Solution { public: //尾插法 ListNode* reverseList(ListNode* head) { if(head == NULL || head->next == NULL) { return head; } auto tail = reverseList(head->next); head->next->next = head; head->next = NULL; return tail; // became new head } }; 方法二: 循环实现(头插法) 双指针,头插法: 1 2 3 4 5 6 7 8 9 10 11 ListNode* reverseList(ListNode *head) { ListNode *pNewHead……
阅读全文
2017年5月16日
| 字数
254
1 登陆 redis-cli 远程访问: $ redis-cli -h host -p port -a password 2 常用命令 redis 127.0.0.1:6379> COMMAND KEY_NAME (1) 查找key的类型 type key 查找 keys *oob* 列出所有包含oob的key hash 集合 HMSET sqkey name “redis tutorial” description “redis basic commands for caching” likes 20 visitors 23000……
阅读全文
2017年5月9日
| 字数
44
1 来北京怎么样? 还习惯吗? 2 老家哪的? 3 和杭州相比怎么样? 4 工作还习惯吗? 5 还说家乡话?……
阅读全文
2017年4月19日
| 字数
912
libuv 定时器timer 使用: g++ -o sunquan main.cpp -luv 执行 ./sunquan 可以看到每隔1秒打印一次 count的值。 uv_timer_start(&timer, timer_cb, timeout, repeat); 其中timeout是首次触发等待的时间毫秒值,之后每隔repeat毫秒触发一次,如果repeat=0表示首次触发之后不再触发。 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 //main.cpp #include <cstdlib> #include <uv.h> #include <assert.h> #include <time.h> #include <iostream> using namespace std; void timer_cb(uv_timer_t *handlei) { static int count=1; cout<<"count=="<<count++<<endl; } int main() { int r; uv_timer_t timer; r = uv_timer_init(uv_default_loop(),&timer); assert(r==0); // 0 cout<<uv_is_active((uv_handle_t*) &timer)<<endl; // 0 cout<< uv_is_closing((uv_handle_t*) &timer)<<endl; cout<<"start "<<time(NULL)<<endl; r = uv_timer_start(&timer, timer_cb, 5000, 1000); r = uv_run(uv_default_loop(),UV_RUN_DEFAULT); cout<<"r="<<r<<endl; return 0; }……
阅读全文
2017年4月8日
| 字数
1692
1 引用限定符 学了这么多年C++,今天拜读了Scott Meyes的《more effective cpp》,第一次看到这种写法… 引用限定可以让成员函数只能被左值对象调用或者只能被右值对象调用。 下面举例说明: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 namespace left_value { class Hello { void show() & { std::cout << "just for left-value\n"; } }; inline void run() { Hello t; t.show(); // ok Hello{}.show(); // compile error: passing 'left_value::Hello' as 'this' argument discards qualifiers [-fpermissive] } } 1 2 3 4 5 6 7 8 9 10 11 12 13 14 namespace right_value { struct Test { void show() && { std::cout << " just for right value\n"; } }; inline void run() { Test t; t.show(); //compile error: passing 'right_value::Test' as 'this' argument discards qualifiers [-fpermissive] Test{}.show(); //ok } } 换句话说,引用限定所限定的就是*this,它可以让一些函数只被左值this调用或者右值……
阅读全文
2017年4月7日
| 字数
293
C++中的explicit 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 class Test1 { public: Test1(int n) { num=n; }//普通构造函数 private: int num; }; class Test2 { public: explicit Test2(int n) { num=n; }//explicit(显式)构造函数 private: int num; }; int main() { Test1 t1=12; //隐式调用其构造函数,成功 Test2 t2=12; //编译错误,不能隐式调用其构造函数 Test2 t2(12); //显式调用成功 return 0; }……
阅读全文
2017年4月7日
| 字数
5924
1 Preface 软件工程遇到的问题都可以通过增加一个中间层来解决, 智能指针也是基于这样的思想; C++ 11 包含了以下 3 种常用的智能指针: std::unique_ptr std::shared_ptr std::weak_ptr 包含头文件 #include <memory> 即可 2 原理分析 2.1 shared_ptr 直接用 shared_ptr 管理一个堆上的裸指针对象: 1 std::shared_ptr<Good> gp1(new Good()); 2.2 weak_ptr weak_ptr类 和 shared_ptr类 的成员变量相同。 为什么需要 weak_ptr? 因为 shared_ptr 是对象的强引用, 一旦发生循环引用,对象就无法析构, 所以 weak_ptr 出现就是为了解决循环引用的问题。 打个不恰当的比喻:weak_ptr就像寄生虫,shared_ptr就是宿主。 weak_ptr 和 shared_ptr 内存结构相同(1 个原始对象指针 + ctrl_block_t 指针); 不同之处在于……
阅读全文