- 博客(14)
- 收藏
- 关注
原创 muduo源码笔记-base-ThreadPool
1. ThreadPoolThreadPool类是线程池的封装。muduo中采用了blocking queue实现的任务队列,并且启动数量固定的线程池。每个线程在while(running)的循环中不断的从队列中取任务,做任务。任务都是从ThreadPool中的run函数加进来的。class ThreadPool : noncopyable{ public: // 任务即要执行的函数 ...
2020-03-18 23:56:07 214
原创 muduo源码-base-Thread
1. Thread.hThread类是对线程的封装,指定了线程状态,要运行的任务(函数),名字,id等信息。调用start()->创建线程->构建ThreadData对象->传入任务->运行。class Thread : noncopyable{ public: // 指定thread运行函数类型 typedef std::function<vo...
2020-03-18 22:52:13 292
原创 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 201
原创 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 232
原创 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 216
原创 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 1063
原创 c++ extern关键字
(1)定义声明(定义)与引用声明(声明)定义给变量分配空间,声明不给变量分配空间extern告诉编译器某个变量的定义在其他文件// 引用声明使用关键字extern,且不进行初始化;// 否则,声明为定义,导致分配存储空间double up; // 定义extern int blem; // blem defined elsewhereextern char gr = 'z'; // ...
2020-03-08 00:01:05 89
原创 二分查找C++
虽然二分查找思路很简单,但实现起来需要注意很多细节。如区间是闭合区间还是前开后闭区间,循环的退出条件是left < right 还是 left <= right,下一步搜索是使用mid还是mid+1等。普通二分查找// 普通二分查找、递归int binary_search(const vector<int>& nums, const int& targ...
2020-02-15 23:39:55 109
原创 排序算法总结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 98
原创 树的遍历总结(递归实现与非递归实现 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 368
原创 Python3爬虫入门之爬取豆瓣Top250电影名称
Python3爬虫入门之爬取豆瓣Top250电影名称准备工具Python3.5requestsBeautifulSouplxml最终效果首先看一下网站的结构 可以很清楚的看到每个电影对应了一个<li>标签,我们只需要一步一步的从<ol> 向下搜索,可以得到电影对应的名称,即<span class="titile">肖申克的救赎</span> 这一行接着看一下网页内 后页按钮对应的
2017-03-05 21:14:08 1847
原创 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 208
原创 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 325
原创 MVP模式学习———登陆例子
MVP模式学习———登陆例子Activity中存放 Presenter 的引用,Presenter 中存放 View 和 Model 的引用View 层 全部View接口的父类 Viewpublic interface View{ //需要在onCreate()方法中写的代码都在此方法中实现 void initView(); //获取上下文参数 Conte
2016-10-23 22:29:57 411
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人