显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

Mihooke's blog

IT之恋

 
 
 
 
 
 

[置顶] 关于mihooke这个人

2015-4-30 23:20:51 阅读143 评论0 302015/04 Apr30

本人网名Mihooke,源自航海王里的原七武海之一"鹰眼"---乔拉可尔·米霍克,甚喜之,遂取之音译英文于自用。

Mihooke是茫茫猿类中的一枚C++ developer ,目前正在成长中,努力学习各种技术!

联系我:

QQ:1733133832Git:https://github.com/mihookeE-mail:sadandeduoluozhich@163.com         mihooke@hotmail.com

技术宅们,有兴趣一起交流吧!

作者  | 2015-4-30 23:20:51 | 阅读(143) |评论(0) | 阅读全文>>

mutex临界区与swap函数

2017-11-11 8:42:40 阅读0 评论0 112017/11 Nov11

// muduo/EventLoop.cc

void EventLoop::doPendingFunctors()

{

std::vector<Functor> functors;

callingPendingFunctors_ = true;

{

MutexLockGuard lock(mutex_);

functors.swap(pendingFunctors_);

}

for (size_t i = 0; i < functors.size(); ++i)

{

functors[i]();

}

callingPendingFunctors_ = false;

}

最近在看muduo库源码的时候,发现陈硕前辈的编程功底是真的深厚,代码里无处不见编程技巧。看!这是一个临界区mutex大小的问题,一般情况下,当然是临界区越小越好,因为临界区大了会影响程序的执行效率。

void EventLoop::doPendingFunctors()

{

callingPendingFunctors_ = true;

MutexLockGuard lock(mutex_);

for (size_t i = 0; i < pendingFunctors_.size(); ++i)

作者  | 2017-11-11 8:42:40 | 阅读(0) |评论(0) | 阅读全文>>

std::bind与function object

2017-10-21 13:43:38 阅读0 评论0 212017/10 Oct21

我的GitHub:https://github.com/mihooke,欢迎访问

std::bind与function object

function object也就是functor,只要class定义了operator()操作符,那么该class的object就可以当作一个函数来调用,比如:

class FunctorClass

{

public:

int operator()(int m, int n)

{

return m * n;

}

};

使用:

FunctorClass fc;

int i = fc(10, 10);

或者

int j = fc.operator()(10, 10)

好了,明白了function object,我们来继续了解bind吧,bind函数返回值就是一个function object,它的参数就是一个函数和这个函数的入参,举个例子:

int multiply(int first, int second)

{

return first * second;

}

using namespace std::placeholder; // declare _1 _2

作者  | 2017-10-21 13:43:38 | 阅读(0) |评论(0) | 阅读全文>>

Git两台电脑上同步合并提交代码

2017-10-15 11:27:17 阅读4 评论0 152017/10 Oct15

我的GitHub:https://github.com/mihooke,欢迎访问

PC环境:Windows 和 Ubuntu

GitHub:一个account,两个branch(分别在两个系统上修改代码)

目前的情况:在Ubuntu下clone仓库后,修改了代码,也push到remote了;这时候在Windows下的master下不是HEAD了,也就是落后一个节点了,那么问题来了,Windows下怎么合并Ubuntu下分支提交的代码呢?

在Windows下可以看到各个branch提交情况:

本来以为运行

git merge ubuntu_branch

就可以完成合并代码,结果找不到ubuntu_branch,什么原因呢?因为ubuntu_branch是在Ubuntu下创建的,所以Windows下master是不知道ubuntu_branch的存在的,怎么办呢?

git branch --set-upstream-to=origin/master master

这条命令会帮我们大忙,是把master设置到origin上

这时候可以pull ubuntu_branch的代码了

git pull origin ubuntu_branch

如果没有冲突,可以直接push了

git push origin master

作者  | 2017-10-15 11:27:17 | 阅读(4) |评论(0) | 阅读全文>>

Qt Creator中使用muduo库

2017-10-15 11:01:10 阅读3 评论0 152017/10 Oct15

我的GitHub:https://github.com/mihooke,欢迎访问

Qt Creator作为代码编辑器还是挺好用的,不管是在Windows还是在Linux下,本文介绍在Qt Creator中编写muduo库程序时的设置。

由于muduo编译比较简单,只需要运行命令

./build.sh

再运行安装头文件和库文件

./build.sh install

默认是编译debug版本的,如果需要编译release版本,在以上命令的前面加上

BUILD_TYPE=release

在我的机子上,安装到了/home/mihooke/build/release-install下。

新建Non-Qt Project ---->   Plain C++ Application

在project的pro文件中,添加

INCLUDEPATH += /home/mihooke/build/release-install/include

LIBS += -pthread

LIBS += -L/home/mihooke/build/release-install/lib -lmuduo_net -lmuduo_base

INCLUDEPATH表示向project中添加头文件include路径

作者  | 2017-10-15 11:01:10 | 阅读(3) |评论(0) | 阅读全文>>

Linux下拷贝文件到U盘

2017-10-14 20:22:29 阅读3 评论0 142017/10 Oct14

我的GitHub:https://github.com/mihooke今天遇到一个尴尬的情况:在Ubuntu下需要拷贝一个文件到U盘里,不知道该怎么操作。。。平常偶尔会在Linux下工作,但很少在Linux下使用过U盘,所以也就没注意过这方面的操作,直到今天。本来以为是和Windows下操作一样:直接把要拷贝的文件拖放到U盘里就行,或者直接执行cp命令,结果发现不成功。

经过一番查找,才明白Linux下外部设备是挂载到系统下的,比如,我们的Linux系统就是挂载在/dev/sda1,可以用命令fdisk去查看挂载情况:

fdisk -l

插入U盘之后,可以看到U盘是挂载在/dev/sdb下的。需要把挂载的U盘挂载到本地目录下,执行命令:

mount /dev/sdb/ /home/mihooke/mnt/

这时候拷贝文件到/home/mihooke/mnt/目录下,就是拷贝到U盘里了。拷贝完文件记得执行umount命令卸载U盘:

umount /home/mihooke/mnt/

作者  | 2017-10-14 20:22:29 | 阅读(3) |评论(0) | 阅读全文>>

Python struct pack使用

2017-9-24 13:00:53 阅读4 评论0 242017/09 Sept24

struct package 里的pack和unpack用于把各种内置数据类型的数据转换成字节流,通常用于网络传输和数据本地化。基本格式是:

pack('<if7s', 1, 2.0, b"mihooke")

输出:

b'\x01\x00\x00\x00\x00\x00\x00@mihooke'

'<if7s'表示将后面参数格式化的形式,<是按小端字节序,1转换成4字节的int类型,2.0转换成4字节的float类型,"mihooke"转换成7字节的char[]类型

其中<符号有以下几种方式

@ 本地字节序(如果不写,则@是默认值) = 本地字节序 < 小端字节序 >大端字节序  ! 网络字节序(即大端字节序)

下面这个例子来说明网络传输的使用

server:

from struct import pack, unpack_from

import socket

if __name__ == "__main__":

s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

s.bind(("127.0.0.1", 9527))

s.listen(1)

conn, addr = s.accept()

作者  | 2017-9-24 13:00:53 | 阅读(4) |评论(0) | 阅读全文>>

Python中json使用

2017-9-10 8:58:29 阅读14 评论0 102017/09 Sept10

JSON是基于“key/value”的一种数据格式,类似下面

// JSON object

{

"key1":value1

"key2":value2

}

or // JSON array

[

{

"key3":value3

"key4":value4

},

{

"key5:value5

}

]

可以看到,JSON object类似于dict类型,解析之后的类型就是dict类型

import json

if __name__ == "__main__":

# dumps方法是将变量转换为json对象

js_data = '{"key1":1, "key2":2}'

dict1 = json.dumps(js_data)

print(dict1)

输出:

"{\"key1\":1, \"key2\":2}"

JSON array类似于list类型,解析之后是list类型

js_data2 = [

{

"key3":"value3",

"key4":4

作者  | 2017-9-10 8:58:29 | 阅读(14) |评论(0) | 阅读全文>>

error: invalid initialization of non-const reference of type

2017-9-3 9:33:13 阅读14 评论0 32017/09 Sept3

这个错误出现在gcc编译器上,看代码

// declaration

void testVector(QVector<int> &v);

// use ,transfer a null-vector

w.testVector(QVector<int>());

这时候进行编译,会出现该错误:

消除错误很简单,只需要给 testVector函数传递一个外部的QVector<int>变量即可:

QVector<int> v;

w.testVector(v);

原理:

gcc编译器不允许传递给函数一个临时的对象,必须要从外部显式构造一个对象,这一点比VC++要严格点,写跨平台程序的需要注意这点。

作者  | 2017-9-3 9:33:13 | 阅读(14) |评论(0) | 阅读全文>>

常用Git命令

2017-8-27 13:25:05 阅读18 评论0 272017/08 Aug27

本文汇总了常用的几条Git命令。

提交改变内容,并添加注释

git commit -a -m "comment"

拉取某个分支的代码

git pull origin mihooke_branch

上传某个分支的代码

git push origin mihooke_branch

创建分支

git checkout mihooke_branch

删除远程分支

git push origin --delete mihooke_branch

删除本地分支

git branch -D mihooke_branch

查看git 提交日志

git reflog

恢复某个提交版本(XXX是指git reflog列出的某个ID值)

git reset --hard XXX

作者  | 2017-8-27 13:25:05 | 阅读(18) |评论(0) | 阅读全文>>

查看所有日志>>

 
 
 
 
 
 我要留言
 
 
 
留言列表加载中...
 
 
 
 
 

发现好博客

 
 
列表加载中...
 
 
 
 
 
 
 
博友列表加载中...
 
 
 
 
 

天气

 
 
模块内容加载中...
 
 
 
 
 
 
 
列表加载中...
 
 
 
 
 
 
 
心情随笔列表加载中...
 
 
 
 
 

标签

 
 
数据加载中...
 
 
 
 
 
 
 

北京市 海淀区 摩羯座

 发消息  写留言

 
QQ1733133832
E-Mail sadandeduoluozhich@163.com
博客等级加载中...
今日访问加载中...
总访问量加载中...
最后登录加载中...
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017

注册 登录  
 加关注