- 博客(45)
- 资源 (2)
- 收藏
- 关注
原创 基础算法之贪心法
贪心法:遵循某种规律,不断贪心的选取当前最优策略的算法设计方法。例如:有1元、5元、10元,20元,100元,200的钞票无穷多张。现在使用这些钞票支付X元,最少需要多少张?思路:尽量用面额较大的金额,所以可以将钞票排一下顺序,然后计算出每个大额钞票最多能用几张,依次算出张数进行叠加#include<stdio.h>int main(){ int RMB[]={200,100,20,10,5,1}; int NUM=6; int X=628...
2020-10-21 14:55:06 427
原创 数据结构笔记--栈与队列,堆
基本定义:先进后出为栈;先进先出为队列栈的构造#include<stdio.h>#include<stack>int main(){ std::stack<int> S; if(S.empty()) //判断栈是否为空 { printf("S is empty!\n"); } S.push(1);//压栈 S.push(6); S.push(10); printf("S
2020-10-20 21:05:06 247
原创 数据结构笔记--链表
定义一个链表并打印节点值struct ListNode{ int val; //存储数据域 ListNode *next; //存储下一个链表指针域 // ListNode (int x): val(x), next(NULL) {}};case 1 就地反转链表【LeetCode 206】示例:input: 1->2->3->4->nullptroutput: 4->3->2->1->nullptr思路:
2020-10-19 17:36:29 701
原创 map/unordermap的使用
1. 当用enum做keyenum可能会出现无法hash的问题,用下面办法解决struct EnumClassHash{ template <typename T> std::size_t operator()(T t) const { return static_cast<std::size_t>(t); }...
2019-10-14 17:32:00 765
转载 protobuf反射详解
本文主要介绍protobuf里的反射功能,使用的pb版本为2.6.1,同时为了简洁,对repeated/extension字段的处理方法没有说明。最初是起源于这样一个问题:给定一个pb对象,如何自动遍历该对象的所有字段?即是否有一个通用的方法可以遍历任意pb对象的所有字段,而不用关心具体对象类型。 使用场景上有很多:比如json格式字符串的相互转换,或者bigtable里根据pb对象...
2018-12-12 20:22:44 2115
原创 python concurrent.futures库的介绍
一、类Executor (class concurrent.futures.Executor)一个提供了异步回调函数的接口抽象类,具体实现是两个子类:ThreadPoolExecutor和ProcessPoolExecutor,类中定义了如下函数:submit(fn, *args, **kwargs)这个函数,其实是在提交执行任务,然后立即返回,并不会等fn执行完毕或者超时才返回,返回值...
2018-10-16 16:15:10 453
转载 python concurrent.futures
python因为其全局解释器锁GIL而无法通过线程实现真正的平行计算。这个论断我们不展开,但是有个概念我们要说明,IO密集型 vs. 计算密集型。IO密集型:读取文件,读取网络套接字频繁。计算密集型:大量消耗CPU的数学与逻辑运算,也就是我们这里说的平行计算。而concurrent.futures模块,可以利用multiprocessing实现真正的平行计算。核心原理是:concu...
2018-10-15 20:07:34 281
转载 [C 11]std::promise介绍及使用
一、std::promise介绍std::promise是C++11并发编程中常用的一个类,常配合std::future使用。其作用是在一个线程t1中保存一个类型typename T的值,可供相绑定的std::future对象在另一线程t2中获取。二、代码示例:下面我们通过几个简单小例子逐渐深入了解std::promise的使用方法。示例1:#include <iost...
2018-10-15 16:34:46 2300
转载 C++11 并发指南一(C++11 多线程初探)
引言C++11 自2011年发布以来已经快两年了,之前一直没怎么关注,直到最近几个月才看了一些 C++11 的新特性,今后几篇博客我都会写一些关于 C++11 的特性,算是记录一下自己学到的东西吧,和大家共勉。相信 Linux 程序员都用过 Pthread, 但有了 C++11 的 std::thread 以后,你可以在语言层面编写多线程程序了,直接的好处就是多线程程序的可移植性得到了很大...
2018-10-15 14:45:07 164
转载 C++11 多线程同步 互斥锁 条件变量
这个是很实用的一部分转自:https://blog.csdn.net/yangbodong22011/article/details/60348742在多线程程序中,线程同步(多个线程访问一个资源保证顺序)是一个非常重要的问题,Linux下常见的线程同步的方法有下面几种:互斥锁条件变量信号量这篇博客只介绍互斥量和条件变量的使用。互斥锁和条件变量通常情况下,互斥锁和条件变量是配合使用的,互斥锁用于短...
2018-06-25 17:45:17 704
原创 bazel与C++
本文是对于bazel使用的一个学习小册子。转帖请注明出处~官网http://www.bazel.io/安装步骤sudo add-apt-repository ppa:webupd8team/javasudo apt-get updatesudo apt-get install oracle-java8-installerecho "deb [arch=amd64] http://storag...
2018-04-03 15:46:54 1788
原创 梯度下降算法推导(机器学习系列-1)
梯度下降算法推导(机器学习系列-1) 在网上能够搜到很多关于梯度下降算法的文章,但找了几篇发现推导都不能很好的理解(也可能是愚生数学功底差),本文将着重从数学角度讲述一下梯度下降算法的数学推导。梯度下降算法理论 梯度下降算法源自于线性回归模型的cost function 最小值计算,在线性回归中,我们通过一个拟合函数: h(θ)=θ0+θ1∗x1h(\theta)=\theta_0+\
2017-03-17 12:02:29 7380 6
原创 C++11学习(4)——枚举类
在现有的C++中有枚举类型,关键字为enum,然则它会存在三个问题:1. 在那些不需要枚举类型表现为int类型时,它却默认表现为int类型,这会导致错误发生。2. 可转换的枚举会使得他的枚举值在其周围的代码范围内都是可见的,这可能会导致名字冲突。3. 不可以指定枚举底层数据类型(只能是int型),这可能导致代码代码不容易被理解和兼容性问题,而且不可以进行前向声明。针对这些隐
2014-11-26 16:21:16 601
原创 C++11学习(3)——auto
autoauto是一个设计者十分用心良苦的关键字,它的功能非常强大也非常友好,我估计我之后会多次修改本文,不费话了。1.从初始化中推断数据类型,当我们懒得写名字(特别是那种很长的带泛型的带STL的名字),而且能确定其类型无二义编译器推得出来,就可以用auto代替了,比如初始化数据就是。格式: auto x = expression;例如: auto x = 7;或:
2014-11-25 16:46:15 580
原创 我与C++设计模式(二)——单例模式
单例模式应该是我接触设计模式时最早学会的一个设计模式,它比较简单易懂,目的就一个,设计出能只能创建一个对象的类。上代码:singleton.h//singleton.h#ifndef _SINGLETON_H__#define _SINGLETON_H__#include class singleton{ private:
2014-09-30 15:53:45 505 1
原创 我与C++设计模式(一)——工厂的一家
怎么一大早起来发现昨天晚上写的博客不见了,是没通过审核么?那也应该告诉我一声啊,是没保存么,那草稿箱里应该有自动保存的啊,亲,别耍我了,哎,设计模式处女篇就这么无声无息的不翼而飞了,我决定在来一篇。 工厂模式之一家三代——简单工厂模式,工厂模式,抽象工厂模式。 简单工厂模式简单工厂模式是比较容易理解的,首先为什么要有简单工厂模式,工厂嘛,就是干粗活儿的地方,干什么粗活儿?在面向...
2014-09-30 09:46:24 662 1
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人