自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(14)
  • 收藏
  • 关注

原创 muduo源码笔记-base-ThreadPool

1. ThreadPoolThreadPool类是线程池的封装。muduo中采用了blocking queue实现的任务队列,并且启动数量固定的线程池。每个线程在while(running)的循环中不断的从队列中取任务,做任务。任务都是从ThreadPool中的run函数加进来的。class ThreadPool : noncopyable{ public: // 任务即要执行的函数 ...

2020-03-18 23:56:07 131

原创 muduo源码-base-Thread

1. Thread.hThread类是对线程的封装,指定了线程状态,要运行的任务(函数),名字,id等信息。调用start()->创建线程->构建ThreadData对象->传入任务->运行。class Thread : noncopyable{ public: // 指定thread运行函数类型 typedef std::function<vo...

2020-03-18 22:52:13 214

原创 muduo源码笔记-base-Mutex

1. MutexLock类MutexLock类是对互斥量的封装,使用栈上对象MutexLockGuard来管理mutex的加锁与释放。栈上对象在退出对应的代码段之后会自动释放,随之,锁也会被自动释放。使用方法如下:class Foo{public: int size() const;private: mutable MutexLock mutex_; std::v...

2020-03-18 22:44:11 134

原创 muduo源码笔记-base-Atomic

Atomic.hAtomic是对整数 int 原子性操作的一个封装。使用了gcc原子性操作,效率比普通加锁要高。这里主要是使用了三个函数:(1) 原子自增操作将ptr加上value,并返回ptr原来的值type __sync_fetch_and_add(type *ptr, type value)(2) 原子和比较操作如果*ptr的值与oldval的值相等,则设置为newval,并返...

2020-03-16 22:27:52 180

原创 muduo源码笔记-base-Timestamp

1. Timestamp.h 文件Timestamp表示的是UTC时间,最小可表示微秒(us)。数据成员microSecondsSinceEpoch_使用int64_t(long long)表示对象,因此作者建议将此值按值传递,这样可以直接存放在寄存器中,提高访问速度。#ifndef MUDUO_BASE_TIMESTAMP_H#define MUDUO_BASE_TIMESTAMP_H...

2020-03-16 21:28:10 145

原创 linux c++实现两个线程轮流打印1~100

思路:使用条件变量,一个线程等待count变成奇数,一个线程等待count变成偶数。#include <stdio.h>#include <stdlib.h>#include <pthread.h>#include <unistd.h>pthread_cond_t cond_odd = PTHREAD_COND_INITIALIZER;...

2020-03-12 00:39:01 980

原创 c++ extern关键字

(1)定义声明(定义)与引用声明(声明)定义给变量分配空间,声明不给变量分配空间extern告诉编译器某个变量的定义在其他文件// 引用声明使用关键字extern,且不进行初始化;// 否则,声明为定义,导致分配存储空间double up; // 定义extern int blem; // blem defined elsewhereextern char gr = 'z'; // ...

2020-03-08 00:01:05 71

原创 二分查找C++

虽然二分查找思路很简单,但实现起来需要注意很多细节。如区间是闭合区间还是前开后闭区间,循环的退出条件是left < right 还是 left <= right,下一步搜索是使用mid还是mid+1等。普通二分查找// 普通二分查找、递归int binary_search(const vector<int>& nums, const int& targ...

2020-02-15 23:39:55 98

原创 排序算法总结C++

一、冒泡排序算法思路: 从1到n-1,相邻元素进行比较,每次都将较大的数向后移动,每经过一轮移动,至少有一个数是排好序的。void bubbleSort(int* A, int n){ bool sorted = false; // 整体排序标志 while(!sorted) { sorted = true; for(int i = 1...

2020-02-15 23:35:21 79

原创 树的遍历总结(递归实现与非递归实现 C++)

树的定义struct TreeNode { int val; TreeNode *left; TreeNode *right; TreeNode(int x) : val(x), left(NULL), right(NULL) {}};树的先序遍历先序遍历的次序是 根节点->左节点->右节点1. 递归实现void preOrderTrave...

2020-02-11 22:47:51 309

原创 Python3爬虫入门之爬取豆瓣Top250电影名称

Python3爬虫入门之爬取豆瓣Top250电影名称准备工具Python3.5requestsBeautifulSouplxml最终效果首先看一下网站的结构 可以很清楚的看到每个电影对应了一个<li>标签,我们只需要一步一步的从<ol> 向下搜索,可以得到电影对应的名称,即<span class="titile">肖申克的救赎</span> 这一行接着看一下网页内 后页按钮对应的

2017-03-05 21:14:08 1769

原创 Android Material Design 学习(二)

Material Design 学习(二)——Toolbar+DrawerLayout+NavigationView 实现侧滑 基本效果 ##### 布局<android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http

2016-11-01 16:21:15 194

原创 Android Material Design 学习(一)

Material Design 学习(一)———TextInputLayout和TextInputEditTextcompile 'com.android.support:design:23.4.0'基本效果: TextInputLayout 布局可以可以显示一个浮动的文字,用来展示 EditText 的体质文字 hint 和 EidtText 输入错误时的错误文字setHint();

2016-11-01 16:18:35 265

原创 MVP模式学习———登陆例子

MVP模式学习———登陆例子Activity中存放 Presenter 的引用,Presenter 中存放 View 和 Model 的引用View 层 全部View接口的父类 Viewpublic interface View{ //需要在onCreate()方法中写的代码都在此方法中实现 void initView(); //获取上下文参数 Conte

2016-10-23 22:29:57 349

空空如也

空空如也

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

TA关注的人

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