C++ 并发指南 std::atomic

std::atomic 基本介绍std::atomic 是模板类,一个模板类型为 T 的原子对象中封装了一个类型为 T 的值。template struct atomic;原子类型对象的主要特点就是从不同线程访问不会导致数据竞争(data race)。因此从不同线程访问某个原子对象是良性 (well-defined) 行为,而通常对于非原子类型而言,并发访问某个对象(如果不做任何同步操作)会导致未定义 (undifined) 行为发生。std::atomic 构造函数std::atomic 的构
分类: 其他 发布时间: 03-31 10:04 阅读次数: 0

Pure pursuit 轨迹跟踪算法

目前手头有一辆小拖车,需要用到pure pursuit算法,故拜读了大神的博客后,整理了此篇文章,首先奉上大神链接Pure Pursuit算法最早是用于差速轮底盘小车,现在经过适配用于阿克曼底盘运动模型车辆(阿克曼运动模型这里就不多说了)。首先上个图,PP算法以车辆后轴中心为切点,车辆纵向车身为切线,通过控制前轮转角,使车辆按照一段圆弧经过目标路点,ldl_dld​表示车辆当前后轴中心到目标点的距离,α\alphaα表示当前车辆和目标路点的heading角度偏差。根据正弦定理有,ldsin(2.
分类: 其他 发布时间: 03-31 10:04 阅读次数: 0

zsh安装以及配置oh my zsh

Mac安装参考:http://www.cnblogs.com/EasonJim/p/6283247.htmlzsh与oh-my-zsh区别:http://www.cnblogs.com/EasonJim/p/7863093.html说明:Ubuntu下默认没有安装zsh,Mac下默认安装了zsh。注意:安装了oh-my-zsh之后的环境变量入口就会从./bashrc变成./zshrc,这点在配置环境变量的时候要特别小心。可以参考Mac的配置,基本都是同样的:http://www.cnblogs.com
分类: 其他 发布时间: 03-31 10:04 阅读次数: 0

C++ 并发指南 std::async

首先,来看下std::async函数的原型:template<class Fn, class... Args>future<typename result_of<Fn(Args...)>::type> async(launch policy, Fn&& fn, Args&&...args);可以看出,async有三个参数,其中第一个参数用于设置数据交互方式,第二个参数是一个可调用的对象(仿函数、lambda表达式、类成员函数、普通函
分类: 其他 发布时间: 03-31 10:04 阅读次数: 0

C++ 并发指南 std::launch

launch是枚举类型,用于启动异步任务时,传递给函数async的参数,它的定义如下:enum class launch { async = 0x1, deferred = 0x2};launch::asynclaunch::async 表示在调用async函数的时候就开始创建新线程。#include<iostream>#include<future>using namespace std; class ThreadManage{public: int
分类: 其他 发布时间: 03-31 10:04 阅读次数: 0

设计模式(1)概述

这段时间在看设计模式的东西,拜读了一些大神的文章,现在仅仅做个记录,奉上大神原链接https://zhuanlan.zhihu.com/p/94877789设计模式介绍设计模式一般包含模式名称、问题、目的、解决方案、效果等要素:模式名称(Pattern Name):通过一两个词来描述模式的问题、解决方案和效果,以便更好地理解模式并方便开发人员之间的交流,绝大多数模式都是根据其功能或模式结构来命名的;问题(Problem):描述应该在何时使用模式,包含了设计中存在的问题以及问题存在的原因;解决.
分类: 其他 发布时间: 03-31 10:04 阅读次数: 0

设计模式(2)简单工厂模式

简单工厂模式创建型模式关注对象的创建过程,在软件开发中应用非常广泛。创建型模式描述如何将对象的创建和使用分离,让用户在使用对象过程中无须关心对象的创建细节,从而降低系统耦合度,并且让系统易于修改和扩展。简单工厂模式是最简单的设计模式之一,但应用也十分频繁,同时也是其余创建模式的基础,因此有必要先学习简单工厂模式。简单工厂模式基本实现流程由上述例子,可以很容易总结出简单工厂的实现流程:设计一个抽象产品类,它包含一些公共方法的实现;从抽象产品类中派生出多个具体产品类,如篮球类、足球类、排球类,具体
分类: 其他 发布时间: 03-31 10:04 阅读次数: 0

设计模式(3)工厂方法模式

工厂方法模式简介简单工厂模式中,每新增一个具体产品,就需要修改工厂类内部的判断逻辑。为了不修改工厂类,遵循开闭原则,工厂方法模式中不再使用工厂类统一创建所有的具体产品,而是针对不同的产品设计了不同的工厂,每一个工厂只生产特定的产品。工厂方法模式:定义一个用于创建对象的接口,但是让子类决定将哪一个类实例化。工厂方法模式让一个类的实例化延迟到其子类。工厂方法模式结构从工厂方法模式简介中,可以知道该模式有以下几种角色:抽象工厂(AbstractFactory):所有生产具体产品的工厂类的基类,提供工厂
分类: 其他 发布时间: 03-31 10:04 阅读次数: 0

设计模式(4)抽象工厂模式

抽象工厂模式之前看到的两个设计模式,都存在各自的缺陷,简单工厂模式中,一个工厂生产多个产品,根据客户提供的产品名称创建对应的产品实例;工厂方法设计模式,则在简单工厂模式的工厂上,创建了许多个工厂类,根据客户提供的产品名称选择可以生产对应产品的工厂进行生产。然而,很多时候,一个工厂生产的产品并不单一,而是生产一类产品,比如,一个工厂,可以生产足球、篮球、排球等多种产品,把相关的产品归纳为一个“产品族”,由同一个工厂来生产,这就是抽象工厂模式。抽象工厂模式,提供一个创建一系列相关或相互依赖对象的接口,而无
分类: 其他 发布时间: 03-31 10:04 阅读次数: 0

设计模式(5)建造者模式

建造者模式建造者模式将客户端与包含多个部件的复杂对象的创建进行了分离,客户端不必知道复杂对象的内部组成与方式,只需要知道所需建造者就行了。换个通俗的方式来说,盖房子的时候开发商将希望盖得房子的设计图给了施工方,施工方按照自己公司设计的施工流程去打地基,盖房子,进行内部装修等,开发商只需要联系好有资质的施工方就行了,其他的交给施工方去施工,施工方会按照开发商的设计图,去建造出不同的风格的房子。建造者模式定义:将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。建造者模式结构建造
分类: 其他 发布时间: 03-31 10:04 阅读次数: 0

设计模式(6)原型模式

原型模式原型模式的思路是,通过复制一个已有对象来获取一个或者多个相同或者相似的对象。原型模式的工作原理是将一个原型对象传给要发动创建的对象------客户端,客户端通过请求原型对象复制本身来实现创建过程。按照工厂方式的思路去理解,就是创建的新工厂对象就是原型类自己。软件系统中有些对象的创建过程比较复杂,且有时需要频繁创建,原型模式通过给出一个原型对象来指明所要创建的对象的类型,然后用复制这个原型对象的办法创建出更多同类型的对象,这就是原型模式的意图所在。原型模式结构原型式的结构包含以下几个角色:
分类: 其他 发布时间: 03-31 10:04 阅读次数: 0

设计模式(7)单例模式

单例模式简介单例模式,在全局中,仅可以有一个单利模式的类实例,并提供了一个全局访问点来访问这个唯一实例。可以看出,单利模式的特点有这个类只能有一个实例必须自己创建这个实例必须自己向整个系统提供这个实例单例模式结构单例模式结构非常简单,只包含一个类,即单例类。为防止创建多个对象,其构造函数必须是私有的。另一方面,为了提供一个全局访问点来访问该唯一实例,单例类提供了一个公有方法getInstance来返回该实例。...
分类: 其他 发布时间: 03-31 10:04 阅读次数: 0

贪心算法 多机调度

思想:采用小顶堆,每台机器一有空,就从工作中挑选一个工作时间最长的。#include<iostream>#include<vector>#include<queue>using namespace std;class MechineNode{public: MechineNode(int id, int start, int JobId = 0) { this->ID = id; this->start = start; t.
分类: 其他 发布时间: 03-31 10:04 阅读次数: 0

石子问题

问题:一个操场的四周摆放着n堆石子,每次把两个相邻的两堆石子合并起来,最后合并成一堆,每次搬动就要花费力气,力气的代价是两堆石子的数量之和,问:如何使总的花费的力气最小。(并非贪心)方法:动态规划#include<iostream>#include<vector>#include<algorithm>#include<cmath>using namespace std;vector<vector<int>>m;i.
分类: 其他 发布时间: 03-31 10:04 阅读次数: 0

多元哈弗曼编码问题

问题描述:在一个操场的四周摆放着n堆石子,现要将石子有次序地合并成一堆。规定每次至少选2堆至多选k堆石子合并成新的一堆,合并的费用为新的一堆石子数。计算出将n堆石子合并成一堆的最大总费用和最小总费用。算法设计:对于给定的n堆石子,计算合并成一堆的最大总费用和最小总费用。数据输入:文件的第1行有2个正整数n和k,表示有n堆石子,每次至少选2堆至多选k堆石子合并。第2行有n个数,分别表示每堆石子的个数。输入示例:7 345 13 12 16 9 5 22输出示例:593 199思路:用最.
分类: 其他 发布时间: 03-31 10:04 阅读次数: 0

机器学习 PCA

转载:PCAsklearn.decomposition.PCA(n_components=None, copy=True, whiten=False) n_components: int, float, None 或 string,PCA算法中所要保留的主成分个数,也即保留下来的特征个数,如果 n_components = 1,将把原始数据降到一维;如果赋值为string,如n_components='mle',将自动选取特征个数,使得满足所要求的方差百分比;如果没有赋值,默认为None,特征.
分类: 其他 发布时间: 03-31 10:04 阅读次数: 0

选课问题 (动态规划)

转载:C++剑指offer:树形DP之树上的有依赖性的背包问题——选课题目描述学校实行学分制。每门的必修课都有固定的学分,同时还必须获得相应的选修课程学分。 学校开设了 N 门的选修课程,每个学生可选课程的数量 M 是给定的。学生选修了这M门课并考核通过就能获得相应的学分。 在选修课程中,有些课程可以直接选修,有些课程需要一定的基础知识,必须在选了其它的一些课程的基础上才能选修。例如《Frontpage》必须在选修了《Windows 操作基础》之后才能选修。我们称《Windows 操作基础》是《
分类: 其他 发布时间: 03-31 10:04 阅读次数: 0

sklearn lda参数详解

sklearn lda参数详解
分类: 其他 发布时间: 03-31 10:04 阅读次数: 0

轮船载重问题(回溯法)

载重问题:回溯法(子集树)题目:有2辆轮船,承载量分别是:c1和c2,有n个货物,重量为v[i],i=(1:n),且∑v[i]<=c1+c2,求两条船最大的承重梁?#include<iostream>#include<vector>using namespace std;int bestw,n,rw;void backtrack(vector<int>& v, int c1,int cw,int t){ if (t > n...
分类: 其他 发布时间: 03-31 10:04 阅读次数: 0

01-背包问题(回溯法)

0-1背包问题,用回溯和剪枝。输入:n c ,n为物品数量,c为背包容量。接下来每行都是v[i],w[i]求背包容量下的最大的物品价值总和?#include<iostream>#include<vector>using namespace std;int n, c,bestv;vector<int>x;vector<int>bestx;//枚举void backtrace(vector<int>& v, v.
分类: 其他 发布时间: 03-31 10:04 阅读次数: 0