自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

frank 的专栏

人类的一切智慧是包含在这四个字里面的:”等待“ 和 ”希望“。—— 《基督山伯爵》...

原创 程序员的数学--用贝叶斯定理来推断一个案子

贝叶斯讲什么呢? 先抛出一个问题: 我有一个同事年不群,请问他是正人君子的可能性有多大? 因为可能性是个主观感受,没有办法量化,所以在数学中一般会问年不群是正人君子的概率有多高? 初看无从下手,但其实也有套路可循。 先给一个假设 然后观察验证和修改 得到相对靠谱的结果 比如,我们具体可以先...

2020-08-17 10:38:00 9770 0

原创 工作多年,我对架构的一些理解

每一个程序员都听过架构这个词,每一个程序员都有自己对此的理解和看法,本文分享我对架构的理解。 什么是架构? 因为我是程序员,所以本文讨论的架构特指软件架构(Soft Architecture)。 我看过很多关于架构方面的书,每一位作者给出的定义都不一样,本质上却相差不多。 概括而言,架构是: 针对...

2020-07-13 09:41:54 6260 6

原创 死磕YOLO系列,YOLOv1 的大脑、躯干和手脚

YOLO 是我非常喜欢的目标检测算法,堪称工业级的目标检测,能够达到实时的要求,它帮我解决了许多实际问题。 这就是 YOLO 的目标检测效果。它定位了图像中物体的位置,当然,也能预测物体的类别。 之前我有写博文介绍过它,但是每次重新读它的论文,我都有新的收获,为此我准备写一个系列的文章来详尽分析...

2019-11-20 16:06:26 16067 31

原创 开发者常用及实用 Linux Shell 命令备忘录

最近都需要在 Linux 系统下开发,所以经常需要在终端中进行操作。Linux 有很多 shell 命令可以帮助我们完成任务,但不常使用的话就会忘记掉。 本篇作为命令备忘录,我会将实际工作当中用到的命令记录下来,并长期保持更新。 1.which which 用于查找一个文件,并返回绝对路径,...

2019-09-05 09:28:16 4536 3

原创 开发者 git日常操作备忘录

git 是常见的版本控制软件。 但是如果不经常使用的话,就会忘记一些基本的命令操作。 本文的目的也是对常见的命令做一个备忘,同时希望可以帮助到大家。 创建 git 仓库 mkdir testone cd testone git init 会出现以下结果 Initialized ...

2019-01-23 15:12:06 11707 3

原创 【深度学习】经典神经网络 VGG 论文解读

VGG 在深度学习领域中非常有名,很多人 fine-tune 的时候都是下载 VGG 的预训练过的权重模型,然后在次基础上进行迁移学习。VGG 是 ImageNet 2014 年目标定位竞赛的第一名,图像分类竞赛的第二名,需要注意的是,图像分类竞赛的第一名是大名鼎鼎的 GoogLeNet,那么为什...

2018-11-06 18:56:08 17490 0

原创 【深度学习】经典神经网络 ResNet 论文解读

ResNet 是何凯明团队的作品,对应的论文 《Deep Residual Learning for Image Recognition》是 2016 CVPR 最佳论文。ResNet 的 Res 也是 Residual 的缩写,它的用意在于基于残差学习,让神经网络能够越来越深,准确率越来越高。 ...

2018-10-30 18:55:43 26194 0

原创 【深度学习】R-CNN 论文解读及个人理解

背景 本篇论文的题目是 《Rich feature hierarchies for accurate oject detection and semantic segmentation》,翻译过来就是针对高准确度的目标检测与语义分割的多特征层级,通俗地来讲就是一个用来做目标检测和语义分割的神...

2018-08-24 10:04:15 126535 21

原创 【Tensorflow】 写给初学者的深度学习教程之 MNIST 数字识别

一般而言,MNIST 数据集测试就是机器学习和深度学习当中的"Hello World"工程,几乎是所有的教程都会把它放在最开始的地方.这是因为,这个简单的工程包含了大致的机器学习流程,通过练习这个工程有助于读者加深理解机器学习或者是深度学习的大致流程. 可恰恰就是在这个地方,却容易给初学者带来困...

2018-05-24 19:54:10 27244 15

原创 Java 泛型,你了解类型擦除吗?

泛型,一个孤独的守门者。 大家可能会有疑问,我为什么叫做泛型是一个守门者。这其实是我个人的看法而已,我的意思是说泛型没有其看起来那么深不可测,它并不神秘与神奇。泛型是 Java 中一个很小巧的概念,但同时也是一个很容易让人迷惑的知识点,它让人迷惑的地方在于它的许多表现有点违反直觉。文章开始的地方...

2017-08-05 22:32:18 73061 75

原创 轻松学,听说你还没有搞懂 Dagger2

Dagger2 确实比较难学,我想每个开发者学习的时候总是经历了一番痛苦的挣扎过程,于是就有了所谓的从入门到放弃之类的玩笑,当然不排除基础好的同学能够一眼看穿。本文的目的尝试用比较容易理解的角度去解释 Dagger2 这样东西。 Dagger2 是有门槛的,这样不同水平能力的开发者去学习这一...

2017-07-20 22:14:00 36783 44

原创 细说反射,Java 和 Android 开发者必须跨越的坎

写作是门手艺,笑对需要勇气。 写下这个题目的时候,我压力比较大,怕的是费力不讨好。因为反射这一块,对于大多数人员而言太熟悉了,稍微不注意就容易把方向写偏,把知识点写漏。但是,我已经写了注解和动态代理这两个知识点的博客,阅读量还可以,这两个知识点是属于反射机制中的,现在对于注解和动态代理息息相...

2017-07-06 23:36:13 51701 54

原创 轻松学,Java 中的代理模式及动态代理

前几天我写了《秒懂,Java 注解 (Annotation)你可以这样学》,因为注解其实算反射技术中的一部分,然后我想了一下,反射技术中还有个常见的概念就是动态代理,于是索性再写一篇关于动态代理的博文好了。 我们先来分析代理这个词。 代理 代理是英文 Proxy 翻译...

2017-06-29 22:08:55 79270 79

原创 秒懂,Java 注解 (Annotation)你可以这样学

文章开头先引入一处图片。 这处图片引自老罗的博客。为了避免不必要的麻烦,首先声明我个人比较尊敬老罗的。至于为什么放这张图,自然是为本篇博文服务,接下来我自会说明。好了,可以开始今天的博文了。 Annotation 中文译过来就是注解、标释的意思,在 Java 中注解是一个很重...

2017-06-27 21:48:30 249008 372

原创 一看你就懂,超详细java中的ClassLoader详解

本篇文章已授权微信公众号 guolin_blog (郭霖)独家发布 ClassLoader翻译过来就是类加载器,普通的java开发者其实用到的不多,但对于某些框架开发者来说却非常常见。理解ClassLoader的加载机制,也有利于我们编写出更高效的代码。ClassLoader的具体作用就是将...

2017-02-10 19:26:54 214882 207

原创 设计模式(五):利用原型模式复制几个葫芦娃

前面的文章介绍了工厂模式和抽象工厂模式、建造者模式,它们都属于创建型设计模式,今天介绍另外一种创建性设计模式,原型模式(prototype pattern)。 什么时候用原型模式? 我个人一直有种观点,就是骨子里懒惰的程序员都喜欢用设计模式,因为懒所以得想尽办法让自己更高效。 原型模式就是一种懒操...

2020-09-14 23:15:02 664 1

原创 死磕YOLO系列,YOLOv2的自我修养

演员需要自我修养,程序员也需要。 YOLO 在当时是非常不错的算法,速度极快,但明显的缺陷就是精度问题特别是小尺寸目标检测问题上。 YOLO 的作者有强调的一个事情是 YOLOv2 仍然是实时的,并且在速度和精度方面做了一定的平衡。 YOLOv2 是 YOLO 的进阶版,它没有彻底否定 YOLO,...

2020-08-27 23:49:22 3486 1

原创 设计模式(四):通过做蛋糕理解构建模式及Android中的变种

之前的文章介绍了抽象工厂模式,本文介绍另外一种创建型的设计模式,构建者模式(Builder Pattern)。 什么是构建者模式呢? 建造者模式是设计模式的一种,将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。1 上面的描述有点抽象,所以大白话描述一下。 构建者模式...

2020-08-23 23:52:09 1181 0

原创 设计模式(三):旅行的角度理解抽象工厂模式
原力计划

之前的文章介绍了工厂模式,这篇文章介绍工厂模式的强化版本抽象工厂模式(Abstract Factory Pattern) 。 我们知道工厂模式是用于在延迟创建具体的对象,抽象工厂模式可以看作是面向工厂模式的工厂模式,所以,我称它为强化版本。 什么时候用抽象工厂模式? 我个人并不喜欢抽象工厂模式,因...

2020-08-11 22:41:29 1138 0

原创 设计模式(二):Android 源码中的工厂模式

之前的文章介绍了单例模式,单例模式非常简单,也很容易懂。本文介绍另外一种简单的创建型设计模式:工厂模式(Factory Pattern)。 什么是工厂模式? 工厂模式(Factory Pattern)在实际开发中非常常见,它可以由用户决定创建对象的类型。 因为工厂模式,我们无需向客户暴露我们的代码...

2020-08-02 22:37:01 1163 0

原创 设计模式(一):Android 源码中的单例模式

什么是单例模式? 单例模式(Singleton) 是最常见也最简单的设计模式,它的目的就是在全局只生成一个类的实例。 什么场合用单例模式 应用中经常有多任务进行信息共享的需求,比如火车票售卖示例中,多个售票窗口其实共享一个票务池。如果一个票务池用一个类,那么这个类就只能用一个实例,否则多任务进行时...

2020-07-29 23:30:37 1023 0

原创 我对面向对象的6大设计原则的理解

程序员都知道编程有 3 大类:面向过程、面向对象、面向函数。面向对象是被讨论的最多的,个人认为,这是因为 Java 之类的编程语言有强大的用户基础,本质还是因为比较符合人的直觉。 说到面向对象,大家可能就会很快想到了 23 种设计模式,可只有少部分人会想到面向对象的 6 大原则,所以本文我分享一下...

2020-07-21 00:46:32 751 2

原创 死磕YOLO系列,不会 AI没关系,用OpenCV 调用YOLO 做目标检测
原力计划

如果你要完成下图的目标检测功能,你会怎么做? 对于视觉工程师而言,这当然是个小问题。可术业有专攻,不一定每个程序员都懂 AI 算法,那肯定就有一种方法把算法当成一个黑盒子,处理好输入输出就好了。 所以,这篇文章完全是零基础告诉你如何完成上面的目标。 首先,进行输入与输出的定义。 输入是一张图片...

2020-07-13 22:17:30 1742 0

原创 程序员能轻易做好其它行业吗?

直接给观点了。 答案是:未必。 专业性低的行业自然可以。 专业性高的行业,困难很大。 最近,市场大热,估计很多程序员小伙伴有些按耐不住了,甚至已经火速进场。 我只能说:谨慎一点。 这世界大多不如我们想的那样。 程序员很优秀,逻辑很强。但那个是在计算机的世界当中,运行在确定的环境中,执行确定的逻辑...

2020-07-09 22:46:21 1159 1

原创 聊聊程序员的 3 个烦恼

程序员大概是这世界上最单纯乐观的一类人,虽然我们自嘲"码农",但内心却大多无比傲娇,我们总坚信自己在改变旧世界,创造新世界,所以我们看起来始终乐观单纯,而此文,我不聊快乐,聊聊作为一个程序员,我意识到一些让我痛苦和烦恼的地方。 1. 完美主义 机器不会说谎。 当程序出现 Bug...

2020-06-29 08:26:11 1069 2

原创 浅谈线程和进程
原力计划

线程和进程是程序员老生常谈的问题了,任何阶段的程序员都不敢轻视他。 事实上大部分程序员并没有系统化的学习过,也有很多人并没有机会好好运用它。所以,如果拉一个工作多年的程序员讨论,对方未必能说出个所以然。 本文是 Linux 下 C++ 多线程编程开发的系列文章之首,在介绍具体编程实现而言,先讲讲它...

2020-06-15 22:36:11 1520 0

原创 ubuntu为脚本添加桌面图标

这是一个小技巧,技术含量低,但用处大,所以作为备忘。 程序员都喜欢使用 linux 开发,ubuntu 是常见的一种。 但有个问题就是,ubuntu 桌面默认是没有应用图标的,我们大多需要将应用的脚本添加到 PATH 环境中,然后用命令启动。 那有没有更快的方式,比如直接像 windows 那样通...

2020-05-07 10:42:58 896 0

原创 大四学生如何求Java工作?
原力计划

这是一篇缓解面试焦虑的文章。 背景 有读者给我留言:大四的学生如何求一份Java的工作?并且还特别强调了他非科班和文凭不出众的事实背景。我想这个问题具有代表性,所以写一些个人的建议,希望能帮到一些人。 定位 要想求得一份工作,首先需要对自己做好一个定位。 考虑到那些好学校出身的同学们,他们在毕业前...

2020-03-29 17:17:00 10733 31

原创 关注这几点,远程办公不犯迷糊

受疫情的影响,很多公司选择了延期开工,即使开工也是远程办公,我所在的公司也不例外。今天是第 1 天办公,因为和现场办公体验不一样,现总结几点觉得可以提升远程办公效率,现与各位交流讨论。 提前做功课很有必要 在决定全员远程办公前,公司的管理层开了好几次会议,动态规划了好几种方案。这真的算更新的比较频...

2020-02-10 22:23:35 3832 0

原创 一个程序员的自我修养和敬畏之心

刚刚我删掉了一篇接近 10W+ 的博文,这篇文章传播比较广,有 900 人左右点赞,也有 200 多评论,也因为此我自身受到了很大的困扰。我有不断的反思自己,为何有如此多的人对我冷嘲热讽。这段反思持续了很长一段时间,期间我阅读大量文章想去找一些答案,也有认真去阅读那些或客观或戾气的评论,想想这一切...

2020-02-05 16:01:29 12767 31

原创 从女友和老妈的使用角度看精确率(precision)和召回率(recall)的不同

机器学习和深度学习中,精确率和召回率经常会被提起,但因为太绕了,许久不用后,又通常容易忘记或者是搞混。 本文以一个稍显调皮的例子说明两者的不同,以便自己能够加深理解。 基础概念 讲精准率和召回率前先讲一些基本的概念,因为两者的公式基于此。 TP TP 是 True Positives 的...

2020-01-16 11:07:40 3132 5

原创 非科班程序员AI学习路径建议

本文适用于有下面情况的同学们: 对 AI 感兴趣 非科班 数学基础不好 对算法抗拒 研究生一下学历 近几年,AI 很火,在很多领域都取得了突破性的成果。这吸引了很多人的目光,我从几年前决定投入到 AI 的怀抱中,过程很艰苦,走了很多弯路,希望此文能带给新人一些提示。 数学问题 很多同学担心自己...

2019-11-08 11:37:48 3895 10

原创 碎片化写作后,我准备将毕生所学体系化地展示出来

最近听人讲解唐诗,忽然特别喜欢「斐然」一词。我觉得人生应该如此,潇洒而不拘。 程序员的坎应该是年龄,三旬已是老汉,可出于热爱我希望自己能编程到老。 一个人最宝贵的应该是思想,一个程序员最宝贵的东西应该是算法思想和编程经验。 我将在此星球,撰写系列纯技术文章。 目前规划是: 基础算法系列 设计模式...

2019-10-21 14:52:06 3246 5

原创 作为技术面试官,我在面试时考虑什么?

最近一段时间,公司大量进行校招,团队也需要很多社招的岗位,作为某个领域的技术负责人,我也因此经常电话面试和现场面试。 求职者每次可能会事后反思,我这次到底表现如何,下次怎么样才能改进。 作为一个面试官,我们也需要这样,我也会经常总结和反思自己的面试技巧,现分享如下,希望求职者能有反向的思维,下次面...

2019-10-21 10:46:36 16813 56

原创 深入浅出CMake(四):配置多线程

我们知道,直接用 g++ 编译多线程代码时,可以这样。 gcc -o test test.c -lpthread 但是,如果整个工程是 CMake 构建的,需要怎么做呢? 修改 CMakeFileLists.txt 文件。 假设,要链接的目标叫做 test,只需要简单 2 行代码就好了。 fi...

2019-10-14 16:57:29 2755 0

原创 【小算法】二分图匹配之匈牙利算法详解(图例说明,代码亲测可用)

在软件开发领域,任务指派和数据关联是一种常见业务需求,比如买卖订单的匹配,共享出行的人车匹配,及自动驾驶领域中目标追踪。 这都牵扯到一种技术,那就是数据关联,而匈牙利算法就是解决此类问题最典型的算法,也是今天本文的主题。 我们感性的认为目标之间的匹配好像一目了然的样子,但是计算机可不这样认为。计算...

2019-10-10 11:22:15 1652 0

原创 【小算法】图的遍历之广度优先(BFS)

谈到算法,图的操作是避免不了。 而我们一般谈到图时,又必定会谈到图的遍历。 图的遍历通常有 2 种,深度优先(DFS) 和广度优先(BFS)。 深度优先可以阅读我这篇博文:【小算法】图的遍历之深度优先(DFS) 本篇博文讲解广度优先(BFS)。 图的表示 图有两种表示方式 1. 临接矩阵 其实...

2019-09-29 00:12:02 2007 0

原创 【小算法】图的遍历之深度优先(DFS)

谈到算法,图的操作是避免不了。 而我们一般谈到图时,又必定会谈到图的遍历。 图的遍历通常有 2 种,深度优先(DFS) 和广度优先(BFS)。 本篇博文讲解深度优先(DFS)。 图的表示 图有两种表示方式 1. 临接矩阵 其实就是一个权重矩阵,用 1 代表两个结点有连接,0 表示没有连接,这样...

2019-09-27 18:19:43 2070 0

原创 CMake 进行调试

在 Linux 下开发,可以用 gdb 进行调试,但是如果工程是用 CMake 构建的,那么需要在 CMakeLists.txt 中加入如下代码: CMake 配置 SET(CMAKE_BUILD_TYPE "Debug") SET(CMAKE_CXX_FLAGS_DEBU...

2019-09-18 17:51:07 6569 0

原创 用Pytorch自建6层神经网络训练Fashion-MNIST数据集,测试准确率达到 92%

一般的深度学习入门例子是 MNIST 的训练和测试,几乎就算是深度学习领域的 HELLO WORLD 了,但是,有一个问题是,MNIST 太简单了,初学者闭着眼镜随便构造几层网络就可以将准确率提升到 90% 以上。但是,初学者这算入门了吗? 答案是没有。 现实开发当中的例子可没有这么简单,如果...

2019-09-10 15:32:01 6096 11

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