- 博客(10)
- 问答 (1)
- 收藏
- 关注
原创 lintcode刷题:面试总结 do while(0)
今天面试的时候被问了一个问题:在宏定义的时候,为什么使用do while(0)在读代码的时候遇到过这种情况,当时反应了半天,没想出来是什么原因。其实和{}作用域的作用好像一样。好像主要的作用是逻辑错误?例如define FUNC(a) / do { / funca(a) / funcb(a) / } while(0)
2017-07-29 09:46:00 248
原创 lintcode刷题系列:数据结构queue
队列是先进先出的线性表。基本操作有push/pop/front/back/empty/size有数组和链表两种表示方法。1)链表的表示如下:typedef struct queuenode { int val; qnode *next;}qnode;typedef struct queue { qnode* front; qnode* r
2017-07-24 10:06:51 217
原创 GO学习系列:设计模式 --- 简单工厂模式
设计模式一般在面向对象语言(C++)时比较明显。由于golong中的interface的使用,可以在go中使用设计模式思想。在此处总结一下设计模式,并学习go的使用。简单工厂模式: ----------- ----------- -----------------| 客户端 | ----
2017-07-21 15:37:51 263
原创 GO语言学习系列:同步/异步/阻塞/非阻塞
在消息通信中,经常会把同步/异步/阻塞/非阻塞等概念混淆,在此查找资料,并进行总结。同步/异步有A、B两个线程进行通信同步:A向B发送消息后,B在处理消息的过程中,线程A一直处于主动等待B的消息的状态(不执行其他操作--阻塞,定期发送查询信息--非阻塞),B处理完消息后,A主动得到B的结果,此时A和B之间处于同步模式;异步:A向B发送消息后,A不主动等待B的消息(继续执行其他操作-
2017-07-21 11:12:41 2500 1
原创 LintCode刷题系列:数组排序--归并排序 递归
数组的归并排序:void mergesort(int a[], int start, int end) { int mid; if(start mid = (start + end)/2; //找到中间值 mergesort(a, start, mid); mergesort(a, mid+1, end);
2017-07-19 16:19:16 320
原创 lintcode刷题系列:链表排序----归并排序 递归
归并排序的时间O(nlgn)1>找到链表的中间值;2>合并两个有序的链表;ListNode* Sort(ListNode *head) { if(head==NULL || head->next==NULL) { return head; } return mergesort(head);}ListNode* mergesor
2017-07-19 15:51:06 177
原创 GO学习系列:defer的使用
在学习go的过程中,发现defer的用法,可以延迟返回,即在函数return前会按照逆序依次调用defer func()。主要使用在函数返回前需要释放资源时,而函数又有多个return的分支,为了防止忘记释放资源而导致内存泄漏等,使用defer 统一释放。例如:func A() {// 申请一些资源defer funcRelease() //为了防止忘记释放资源,使用
2017-07-06 20:45:06 272
原创 GO学习系列:单例
在代码中看到使用sync.Once,查了一下资料,go使用锁保证once.Do(f)中f只执行一次想到了以前C++中设计模式的单例模式sync once.gotype Once struct {m Mutex // 互斥锁done uint32// 用来表示只执行一次}func (o *Once) Do(f func()) {if atomic.Loa
2017-07-04 23:48:00 197
原创 GO学习系列:list
最近工作中使用go语言,记录一下学习中的一些收获。list.gogo中的list实现方法比较特殊,为一个环形的双向链表,一个root节点。... -> root -> node1 -> node2 -> ...... 能够比较快速的得到链表首/尾节点。以后在需要使用list的时候可以考虑这种形式。type Element struct {next, prev
2017-07-04 22:54:53 700
原创 序列化和反序列化
序列化:将数据结构或对象转换为二进制串的过程;反序列化:将二进制串转换为数据结构和对象的过程。二进制串:存储在内存中的一块数据。也就是把消息中的数据([]byte)按照某种格式解析成可以理解的数据结构/对象。例如:xml格式,json格式
2017-07-04 16:52:38 177
空空如也
nginx helloworld 404错误
2017-01-16
TA创建的收藏夹 TA关注的收藏夹
TA关注的人