- 博客(97)
- 资源 (2)
- 收藏
- 关注
原创 sqrt函数实现之卡马克方法
sqrt函数的实现主要有三种方式:二分法牛顿法卡马克方法卡马克方法这里主要介绍高效的卡马克方法。卡马克方法起源于《雷神之锤III竞技场》中使用的平方根倒数速算法,下列代码是平方根倒数速算法在《雷神之锤III竞技场》源代码中的应用实例。示例剥离了C语言预处理器的指令,但附上了原有的注释:float Q_rsqrt( float number ){ long ...
2018-09-15 11:47:22
1333
原创 sqrt函数实现之卡马克方法
sqrt函数的实现主要有三种方式:1 二分法2 牛顿法3 卡马克方法float InvSqrt(float x){ float xhalf = 0.5f*x; int i = *(int*)&x; // get bits for floating VALUE i = 0x5f3759df-(i>>1); // gives initi...
2018-09-13 16:51:51
1224
原创 大端法、小端法及其判断方法
计算机存储数据都是从低地址到高地址,如0x100到0x103存储,而大端法和小端法的区别就是存储数据时是取数据的低位存放在高地址还是高位存放在高地址。大端法:数据低位存放高地址。小端法:数据高位存放高地址。举个例子,现有一个int a,地址为0x12 34 56 78,从左向右是高位到低位对大端法而言,存放顺序是,12 34 56 78;对小端法而言,存放顺序是78 56 34...
2018-09-04 21:43:48
1765
原创 STL源码剖析之ROUND_UP函数实现原理及其拓展
STL源码allocator的实现中有一个ROUND_UP函数,作用是将非8倍数的整数上调到8的倍数。// instead of enum { x = N }, but fewcompilers accept the former.# ifndef__SUNPRO_CC enum {__ALIGN = 8}; enum {__MAX_BYTES = 128}; ...
2018-09-04 15:56:22
764
原创 海康和多益面经
海康的电话面试主要是谈项目,检测主要谈到faster rcnn模型在项目中的使用和感受野的问题,分割主要谈到u-net网络模型本身的优点和在具体场景下的应用细节,因此准备一个好的自我介绍是必不可少的。多益网络的面试是视频面试,首先是自我介绍,也就是讲项目,会问项目的一些的细节;其次是数学概率题,数据结构相关的题重点问了堆排序,topk问题,hashmap的实现,因此关注技术的原理和实现也是很重...
2018-07-30 14:04:32
1110
原创 小米实习生面试面经
1 虚函数,多态及其实现2 c++实现不能被继承的类final3 spring框架,AOP,依赖注入4 reorderList,八皇后问题5 hashtable,hashmap的区别6 项目本身
2018-07-20 21:49:12
3907
原创 阿里c++一面面经
1 多态,虚函数与虚函数表2 智能指针的作用及实现3 sizeof,不能使用sizeof的情况下判断系统的位数?4 三次握手,四次挥手,中间的等待5 空class的大小,包含int和虚函数的大小6 链表是否有环,O(1)时间复杂度删除指定节点,海量数据处理(topk)7 线程安全(单例模式, 懒汉,饿汉)8 vector的动态增长?9 memcpy的内存重...
2018-07-19 20:42:18
1339
转载 ubuntu安装显卡驱动的三种方法
一是:系统设置->软件更新->附加驱动->选择nvidia最新驱动(361)->应用更改简单但是不提倡 二是:先官网下载好对应驱动编译Nvidia中文官网是 http://www.nvidia.cn/page/home.html1)打开终端,先删除旧的驱动:sudo apt-get purge nvidia*2)禁用自带的 nouveau nvidia驱动创建一个文件通过命...
2018-06-07 10:18:29
281550
23
转载 判断单链表中是否有环,找到环的入口节点的理论证明
我们把该链表抽象为这样一个模型,假设环长为nn。情景1 此图表示其实状态,其中hh表示链表头节点,slow,fastslow,fast,起始状态指向hh,tt表示环的入口节点。情景2 此图表示slowslow运动到了tt,fastfast运动到m1m1,节点hh和节点tt之间的距离为aa,节点tt和节点m1m1之间的距离(弧长)为bb,并设此时fastfast在环上做了rr次圆周运动(因为aa...
2018-04-27 15:27:25
762
转载 交叉熵代价函数(作用及公式推导)
交叉熵代价函数(Cross-entropy cost function)是用来衡量人工神经网络(ANN)的预测值与实际值的一种方式。与二次代价函数相比,它能更有效地促进ANN的训练。在介绍交叉熵代价函数之前,本文先简要介绍二次代价函数,以及其存在的不足。1. 二次代价函数的不足 ANN的设计目的之一是为了使机器可以像人一样学习知识。人在学习分析新事物时,当发现自己犯的错误越大时,改...
2018-04-26 19:05:24
288
转载 C#调用C++、Opencv的Dll
C#调用C++、Opencv的代码可以通过托管和非托管两种形式非拖管的形式即是采用[DllImport]的形式,这种形式只能调用的C++的函数,托管的形式用的是ref,可以调用C++类中的方法首选介绍下非托管的形式:一、无参数传递下的非托管形式(1).C++中建立“win32项目”为dll格式应用程序(2).新建cpp程序add.cpp代码如下:extern "C" _declspec(dllex...
2018-04-17 12:02:04
1064
原创 腾讯机器学习一面面经
1 梯度下降,极大似然2 防止过拟合的方法(正则化)3 bagging,boosting,randomforest,gbdt概念4 海量url中寻找某个url是否存在?5 有用户访问url的日志记录,如何对url进行分类?6 有用户的基本信息、行为等,如何对异常用户进行检测?7 对cnn,lstm的理解?8 归并排序,快速排序,各种排序...
2018-04-15 17:01:46
1553
转载 C#调用C++类库的几种方式
1、 直接调用C++类库中的公共方法使用DllImport特性对方法进行调用,比如一个C++类库SampleCppWrapper.dll中的公共方法:extern "C" __declspec(dllexport) int __stdcall Add(int n1, int n2);__stdcall表示调用约定:参数都是从右向左通过堆栈传递, 函数调用在返回前要由被调用者清理堆栈。在C#中,调...
2018-04-14 10:17:14
978
转载 2017年腾讯基础研究笔试感受
刚刚完成了腾讯的2017年腾讯基础研究笔试题,谈一下感受。 考题分为选择题(26/60分钟)和简答题(3/60分钟),选择题很基础,尽管我基本上不会,但如果按照考研的那个水平,那是完全不用担心的,不知道以前的高数都还给谁了,内容很基础的,其中涉及到: 选择题: 1) 概...
2018-03-31 10:40:52
477
原创 关于开源库或者SDK的文档问题
2018年2月21日更新:arcgis engine开发符合同样的规律,大量的sample源码都在其安装目录中。 ——————————————漂亮的分割线——————————————————–经过多次尝试,可以得出这样一个结论:维护的较好的开源库(如opencv),官方提供的标准库(如python标准库),官方提供的SDK或者NDK(如Android),都会在安装目录中提供离线文档,以方便开...
2018-02-21 11:55:39
391
转载 卷积神经网络Lenet-5实现
原文地址:http://blog.youkuaiyun.com/hjimce/article/details/47323463作者:hjimce卷积神经网络算法是n年前就有的算法,只是近年来因为深度学习相关算法为多层网络的训练提供了新方法,然后现在电脑的计算能力已非当年的那种计算水平,同时现在的训练数据很多,于是神经网络的相关算法又重新火了起来,因此卷积神经网络就又活了起来,再
2017-10-23 15:13:29
401
转载 NULL、0、nullptr 区别分析
C的NULL在C语言中,我们使用NULL表示空指针,也就是我们可以写如下代码:int *i = NULL;foo_t *f = NULL;实际上在C语言中,NULL通常被定义为如下:#define NULL ((void *)0)也就是说NULL实际上是一个void *的指针,然后吧void *指针赋值给int *和foo_t *的指针的时候,隐式
2017-10-23 11:07:06
363
转载 C++中,new/delete和malloc/free的区别
1、new/delete是C++的操作符,而malloc/free是C中的函数。2、new做两件事,一是分配内存,二是调用类的构造函数;同样,delete会调用类的析构函数和释放内存。而malloc和free只是分配和释放内存。3、new建立的是一个对象,而malloc分配的是一块内存;new建立的对象可以用成员函数访问,不要直接访问它的地址空间;malloc分配的是一块内存区域,
2017-10-22 23:48:06
354
转载 堆和栈的区别
一、预备知识—程序的内存分配 一个由C/C++编译的程序占用的内存分为以下几个部分 1、栈区(stack)— 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。其 操作方式类似于数据结构中的栈。 2、堆区(heap) — 一般由程序员分配释放, 若程序员不释放,程序结束时可能由OS回 收 。注意它与数据结构中的堆是两
2017-09-29 10:03:03
296
原创 图像拼接与图像分割之实际应用
1 图像拼接算法 图像拼接我用的是opencv,直接使用自带sample源码,两幅图像拼接需要7s左右,视频拼接时按时间序列对帧进行拼接。优化角度有三种:1. 算法角度:当前帧与已有的全景图拼接时,首先采用模板匹配的方法定位前一帧在全景图中的位置范围,进行特征匹配时,只考虑与该范围内的图像与当前帧的匹配关系,减小计算量。2. 代码角度:考虑采用ipp库加速、并行计
2017-02-26 22:17:55
2911
原创 无误的Mat2QImage代码
QImage MainWindow::Mat2QImage(const cv::Mat& InputMat){ cv::Mat TmpMat; // convert the color space to RGB if (InputMat.channels() == 1) { cv::cvtColor(InputMat, TmpMat,
2016-12-31 20:35:36
1770
2
原创 OnboardSDK分析
本文主要介绍Onboard-SDK-ROS的代码设计思想和文件分析,该软件包主要用来完成M100的开发等。该软件包框架图如图1所示,主要有3个部分1. 核心的API部分dji-sdk-lib,用于串口通信,建立各种任务的线程,读取信息的线程。2. 用于封装核心API为ROS接口的dji_sdk 3. 简单的demo,给出了dji_sdk的使用方法。图
2016-12-11 16:47:34
6931
转载 Ubuntu14.04安装pycharm用于Python开发环境部署,并且支持pycharm使用中文输入
一、目标实现在Linux下用pycharm调试工具/Python开发 Linux使用vi/vim工具写Python,缺点:调试不方便,无代码提示、跳转等诸多功能。Windows使用idle/pycharm/eclipse等,环境包安装麻烦。写好的代码往往也得迁移至Linux服务器环境。解决办法:直接在Linux环境下安装pycharm编译器。 附:about pycharm
2016-12-08 14:47:02
986
转载 TCP/IP四层模型和OSI七层模型的概念
TCP/IP四层模型TCP/IP是一组协议的代名词,它还包括许多协议,组成了TCP/IP协议簇。TCP/IP协议簇分为四层,IP位于协议簇的第二层(对应OSI的第三层),TCP位于协议簇的第三层(对应OSI的第四层)。 TCP/IP通讯协议采用了4层的层级结构,每一层都呼叫它的下一层所提供的网络来完成自己的需求。这4层分别为: 应用层:应用程序间沟通的层,如简单电子邮件传输(SMTP)、
2016-09-11 16:16:32
364
原创 二分查找
//递归版二分查找int binarySearch(vector& nums,int left,int right,int target){ if(nums.empty()) return -1; int mid=0; while(left<right){ mid=(left+right)/2; if(nums[mid]==target)
2016-09-01 10:46:57
295
原创 Combination Sum
class Solution {private: vector c; vector > res; //保存最后结果public: vector > combinationSum(vector &candidates, int target) { vector a; sort(candidates.begin(), candidates.end()); //先对C中候选数升序排序
2016-08-31 15:15:08
298
转载 全面解析回溯法:算法框架与问题求解
什么是回溯法?回溯法的通用框架利用回溯法解决问题问题1:求一个集合的所有子集问题2:输出不重复数字的全排列问题3:求解数独——剪枝的示范问题4:给定字符串,生成其字母的全排列问题5:求一个n元集合的k元子集问题6:电话号码生成字符串问题7:一摞烙饼的排序问题8:8皇后问题总结与探讨附:《算法设计手册》第7章其余面试题解答 摘了一段来自百度
2016-08-31 11:36:50
2465
原创 Search Insert Position
class Solution {public: int searchInsert(vector& nums, int target) { int left = 0, right = nums.size(), mid = 0; while (left<right){ mid = (left + right) / 2; if (nums[mid] == target){
2016-08-30 20:15:53
316
原创 Search for a Range
class Solution {public: vector searchRange(vector& nums, int target) { vector result; int tmp = 0; int left = 0, right = nums.size(), mid = 0; //if (left == right) return nums[0] == target ?
2016-08-30 19:53:46
294
原创 Search in Rotated Sorted Array
class Solution{ public: int search(vector& nums,int target){ int first=0,end=nums.size()-1; int mid=0; while(first<=end){ mid=(first+end)/2; if(nums[mid]==target) return mid; if(nu
2016-08-30 16:52:39
285
原创 permutation递归方法
class Solution {public: vector > permute(vector &num) { vector > result; int n=num.size(); if(n==1) { result.push_back(num); return result; }
2016-08-30 11:33:31
420
原创 Permutations
class Solution {public: vector> permute(vector& nums) { vector> result; sort(nums.begin(), nums.end()); do{ result.push_back(nums); } while (next_permutation(nums.begin(), nums.end()));
2016-08-30 11:08:37
367
原创 next permutation
class Solution {public: void nextPermutation(vector &num) { int n = num.size(); if (n == 1)return; for (int i = n - 2, ii = n - 1; i >= 0; i--, ii--) if (num[i] < num[ii]) { int j = n -
2016-08-30 08:56:05
332
原创 4Sum
class Solution { public: vector > fourSum(vector &num,int target) { int n = num.size(); sort(num.begin(), num.end()); vector > res; i
2016-08-29 16:03:14
367
原创 3Sum Closest
class Solution {public: int threeSumClosest(vector& nums, int target) { int result = nums[0] + nums[1] + nums[2]; int gap = abs(result - target); //if(nums.size()<3) return result; sort(nums
2016-08-29 15:45:50
371
原创 3-sum leetcode经典解答
class Solution { public: vector > threeSum(vector &num) { int n = num.size(); sort(num.begin(), num.end()); vector > res; for(int i = 0; i < n-2; i++)
2016-08-29 11:15:48
561
原创 2sum问题经典解答
bool compare(pair lh, pair rh){ return lh.first < rh.first;}class Solution {public: vector twoSum(vector &numbers, int target) { vector > num; int index = 1; for(vector::iterato
2016-08-29 09:44:50
455
原创 存档2
#!/usr/bin/python# -*- coding: utf-8 -*-"""ZetCode Tkinter tutorialIn this script, we use the Labelwidget to show an image.Author: Jan BodnarLast modified: November 2015Website: www.zetcode
2016-08-12 16:21:00
294
原创 存档
# -*- coding: utf-8 -*-import urllib2,cookielibimport urllibimport cStringIOimport datetimefrom PIL import Imagefrom lxml import etreeimport sysreload(sys)sys.setdefaultencoding('utf8')def
2016-08-12 16:20:34
292
原创 Python的编码注释# -*- coding:utf-8 -*-
如果要在python2的py文件里面写中文,则必须要添加一行声明文件编码的注释,否则python2会默认使用ASCII编码。[python] view plain copy# -*- coding:utf-8 -*-
2016-08-10 13:33:03
484
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人