自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(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 251

原创 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 219

原创 GO学习系列:设计模式 --- 简单工厂模式

设计模式一般在面向对象语言(C++)时比较明显。由于golong中的interface的使用,可以在go中使用设计模式思想。在此处总结一下设计模式,并学习go的使用。简单工厂模式: -----------                     -----------                        -----------------| 客户端 |    ----

2017-07-21 15:37:51 265

原创 GO语言学习系列:同步/异步/阻塞/非阻塞

在消息通信中,经常会把同步/异步/阻塞/非阻塞等概念混淆,在此查找资料,并进行总结。同步/异步有A、B两个线程进行通信同步:A向B发送消息后,B在处理消息的过程中,线程A一直处于主动等待B的消息的状态(不执行其他操作--阻塞,定期发送查询信息--非阻塞),B处理完消息后,A主动得到B的结果,此时A和B之间处于同步模式;异步:A向B发送消息后,A不主动等待B的消息(继续执行其他操作-

2017-07-21 11:12:41 2514 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 323

原创 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 178

原创 GO学习系列:defer的使用

在学习go的过程中,发现defer的用法,可以延迟返回,即在函数return前会按照逆序依次调用defer func()。主要使用在函数返回前需要释放资源时,而函数又有多个return的分支,为了防止忘记释放资源而导致内存泄漏等,使用defer 统一释放。例如:func  A() {// 申请一些资源defer funcRelease() //为了防止忘记释放资源,使用

2017-07-06 20:45:06 286

原创 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 199

原创 GO学习系列:list

最近工作中使用go语言,记录一下学习中的一些收获。list.gogo中的list实现方法比较特殊,为一个环形的双向链表,一个root节点。... -> root -> node1 -> node2 -> ...... 能够比较快速的得到链表首/尾节点。以后在需要使用list的时候可以考虑这种形式。type Element struct {next, prev

2017-07-04 22:54:53 709

原创 序列化和反序列化

序列化:将数据结构或对象转换为二进制串的过程;反序列化:将二进制串转换为数据结构和对象的过程。二进制串:存储在内存中的一块数据。也就是把消息中的数据([]byte)按照某种格式解析成可以理解的数据结构/对象。例如:xml格式,json格式

2017-07-04 16:52:38 178

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除