9 frank909

尚未进行身份认证

我要认证

爱阅读的程序员,专注于技术思考和分享。关注架构设计、Android 开发、AI、数学、自动驾驶领域,个人公号:Frankcall

等级
TA的排名 1k+

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

前面的文章介绍了工厂模式和抽象工厂模式、建造者模式,它们都属于创建型设计模式,今天介绍另外一种创建性设计模式,原型模式(prototype pattern)。什么时候用原型模式?我个人一直有种观点,就是骨子里懒惰的程序员都喜欢用设计模式,因为懒所以得想尽办法让自己更高效。原型模式就是一种懒操作,用于频繁创建对象的场所。日常生活中,我们都说两个人很像,简直就是一个模子里引出来的。那么,代码中原型模式就是这样基于一个对象快速复制另外一个对象,而无需重头全新创建。比如,代码要产生 7 个葫芦娃,怎么用

2020-09-14 23:15:02

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

演员需要自我修养,程序员也需要。YOLO 在当时是非常不错的算法,速度极快,但明显的缺陷就是精度问题特别是小尺寸目标检测问题上。YOLO 的作者有强调的一个事情是 YOLOv2 仍然是实时的,并且在速度和精度方面做了一定的平衡。YOLOv2 是 YOLO 的进阶版,它没有彻底否定 YOLO,而是在 YOLOv1 的基础上,融合了很多其它论文优秀的思想做了大幅的提升。YOLO 作者概括了从 3 个方面入手:更好更快更强1. 如何更好?YOLO 作者对比了 Fast R-CNN 发现 YO

2020-08-27 23:49:22

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

之前的文章介绍了抽象工厂模式,本文介绍另外一种创建型的设计模式,构建者模式(Builder Pattern)。什么是构建者模式呢?建造者模式是设计模式的一种,将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。1上面的描述有点抽象,所以大白话描述一下。构建者模式的目的是为了构建一个复杂的对象复杂的通俗理解就是,可以以不同的参数创建同一类型的不同对象。和其他创建型模式不同的地方,构建者模式强调过程,是一步一步构建的,和现实当中建房子是一样的。什么时候用构建者模式?

2020-08-23 23:52:09

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

贝叶斯讲什么呢?先抛出一个问题:我有一个同事年不群,请问他是正人君子的可能性有多大?因为可能性是个主观感受,没有办法量化,所以在数学中一般会问年不群是正人君子的概率有多高?初看无从下手,但其实也有套路可循。先给一个假设然后观察验证和修改得到相对靠谱的结果比如,我们具体可以先这样做:假设他是正人君子的概率是 0.5寻求证据,证明他是正人君子或者否修正之前的假设概率得到最终概率你看看,这实际和我们的日常生活也差不多,贝叶斯定理正好可以解决如此问题,不过它是数学工具。什么是贝

2020-08-17 10:38:00

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

之前的文章介绍了工厂模式,这篇文章介绍工厂模式的强化版本抽象工厂模式(Abstract Factory Pattern) 。我们知道工厂模式是用于在延迟创建具体的对象,抽象工厂模式可以看作是面向工厂模式的工厂模式,所以,我称它为强化版本。什么时候用抽象工厂模式?我个人并不喜欢抽象工厂模式,因为它一定是为了应付复杂的系统。试想一下,谁喜欢负责的东西呢?但软件行业,复杂的业务其实代表了更精细化的需求,所以,这也是它的意义所在。抽象工厂模式是为了应对产品线,产品线有不同的分支,每个分支代表不同的维度。

2020-08-11 22:41:29

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

之前的文章介绍了单例模式,单例模式非常简单,也很容易懂。本文介绍另外一种简单的创建型设计模式:工厂模式(Factory Pattern)。什么是工厂模式?工厂模式(Factory Pattern)在实际开发中非常常见,它可以由用户决定创建对象的类型。因为工厂模式,我们无需向客户暴露我们的代码逻辑,只需要开放接口给客户,由客户指定要创建的对象的类型,便可以动态生成符合需求的类别对象。什么场合用工厂模式?需要根据实际情况才能决定创建何种类别对象的场景。听起来挺悬乎的,其实很容易理解。假设,你要从广

2020-08-02 22:37:01

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

什么是单例模式?单例模式(Singleton) 是最常见也最简单的设计模式,它的目的就是在全局只生成一个类的实例。什么场合用单例模式应用中经常有多任务进行信息共享的需求,比如火车票售卖示例中,多个售票窗口其实共享一个票务池。如果一个票务池用一个类,那么这个类就只能用一个实例,否则多任务进行时会引起资源同步的问题。另外,频繁创建和销毁的对象也可以用一个固定的实例,这样的好处是节省内存重复创建和销毁的开销,提高程序的稳定性。面向对象的编程很容易实现单例模型,比如 Java、C++ 等等,本文以 Jav

2020-07-29 23:30:37

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

程序员都知道编程有 3 大类:面向过程、面向对象、面向函数。面向对象是被讨论的最多的,个人认为,这是因为 Java 之类的编程语言有强大的用户基础,本质还是因为比较符合人的直觉。说到面向对象,大家可能就会很快想到了 23 种设计模式,可只有少部分人会想到面向对象的 6 大原则,所以本文我分享一下我对于 6 大原则的看法。6 大原则是内功心法,23 种设计模式是武术套路,它们的本质是为了更好地面对需求的变化。很多人对于设计模式背诵的滚瓜烂熟,但是却没有办法评价自己的代码质量,尤其是根据自己的想法整了一大

2020-07-21 00:46:32

死磕YOLO系列,不会 AI没关系,用OpenCV 调用YOLO 做目标检测

如果你要完成下图的目标检测功能,你会怎么做?对于视觉工程师而言,这当然是个小问题。可术业有专攻,不一定每个程序员都懂 AI 算法,那肯定就有一种方法把算法当成一个黑盒子,处理好输入输出就好了。所以,这篇文章完全是零基础告诉你如何完成上面的目标。首先,进行输入与输出的定义。输入是一张图片经过 AI 算法的处理AI 算法输出结果能搞定目标检测的算法有很多,当前 OpenCV 都支持这些算法的调用,本文讲解 Yolov3,其它算法其实也是大同小异。本文不分析 Yolo 算法的原理,对原理有兴

2020-07-13 22:17:30

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

每一个程序员都听过架构这个词,每一个程序员都有自己对此的理解和看法,本文分享我对架构的理解。什么是架构?因为我是程序员,所以本文讨论的架构特指软件架构(Soft Architecture)。我看过很多关于架构方面的书,每一位作者给出的定义都不一样,本质上却相差不多。概括而言,架构是:针对系统的表达,描述了系统的要素组成,及要素之间的交互关系。上面就描述了针对一个系统的架构,有 3 个顶层模块 ,模块 E、模块 F、模块G。模块间有交互,并且模块 E 中还有模块。所以,一般讲架构时,我们是指

2020-07-13 09:41:54

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

直接给观点了。答案是:未必。专业性低的行业自然可以。专业性高的行业,困难很大。最近,市场大热,估计很多程序员小伙伴有些按耐不住了,甚至已经火速进场。我只能说:谨慎一点。这世界大多不如我们想的那样。程序员很优秀,逻辑很强。但那个是在计算机的世界当中,运行在确定的环境中,执行确定的逻辑。现实世界可能是混沌的。好比是用牛顿怎么也解释不了量子的世界。隔行如隔山,这个道理至今适用。我们要警惕自己的主观愿望,高估自己的行业含金量,低估其他行业的专业性。任何成熟的行业,都会一套分工明细的技术体系。在当前

2020-07-09 22:46:21

聊聊程序员的 3 个烦恼

程序员大概是这世界上最单纯乐观的一类人,虽然我们自嘲"码农",但内心却大多无比傲娇,我们总坚信自己在改变旧世界,创造新世界,所以我们看起来始终乐观单纯,而此文,我不聊快乐,聊聊作为一个程序员,我意识到一些让我痛苦和烦恼的地方。1. 完美主义机器不会说谎。当程序出现 Bug 时,一定是某个地方有问题。要么是代码,要么是硬件,考虑到大多数程序员不与硬件打交道,所以当程序出现问题时,一定是逻辑不通顺,或者是覆盖度欠佳。程序员一直习惯于这种确定性逻辑问题的定位与解决,久而久之会形成一种完美主义的习惯。但

2020-06-29 08:26:11

浅谈线程和进程

线程和进程是程序员老生常谈的问题了,任何阶段的程序员都不敢轻视他。事实上大部分程序员并没有系统化的学习过,也有很多人并没有机会好好运用它。所以,如果拉一个工作多年的程序员讨论,对方未必能说出个所以然。本文是 Linux 下 C++ 多线程编程开发的系列文章之首,在介绍具体编程实现而言,先讲讲它的基础概念,并给予通俗化的解释,并在文章最后给出一个开放的思考题。什么是线程?线程(英语:thread)是操作系统能够进行运算调度的最小单位。它被包含在进程之中,是进程中的实际运作单位。一条线程指的是进程中一

2020-06-15 22:36:11

ubuntu为脚本添加桌面图标

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

2020-05-07 10:42:58

大四学生如何求Java工作?

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

2020-03-29 17:17:00

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

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

2020-02-10 22:23:35

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

刚刚我删掉了一篇接近 10W+ 的博文,这篇文章传播比较广,有 900 人左右点赞,也有 200 多评论,也因为此我自身受到了很大的困扰。我有不断的反思自己,为何有如此多的人对我冷嘲热讽。这段反思持续了很长一段时间,期间我阅读大量文章想去找一些答案,也有认真去阅读那些或客观或戾气的评论,想想这一切究竟是为什么。此刻,我意识到一些问题,现总结如下:1. 凡事要照顾好情绪,不能光靠逻辑有些事情是不...

2020-02-05 16:01:29

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

机器学习和深度学习中,精确率和召回率经常会被提起,但因为太绕了,许久不用后,又通常容易忘记或者是搞混。本文以一个稍显调皮的例子说明两者的不同,以便自己能够加深理解。基础概念讲精准率和召回率前先讲一些基本的概念,因为两者的公式基于此。TPTP 是 True Positives 的缩写,指的是真正的正样本,也可以叫做真阳性。样本是正样本,预测结果也是正样本。FNFN 是 False N...

2020-01-16 11:07:40

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

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

2019-11-20 16:06:26

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

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

2019-11-08 11:21:34

查看更多

CSDN身份
  • 博客专家
勋章 我的勋章
  • GitHub
    GitHub
    绑定GitHub第三方账户获取
  • 技术圈认证(专家版)
    技术圈认证(专家版)
    博客专家完成年度认证,即可获得
  • 阅读者勋章Lv1
    阅读者勋章Lv1
    授予在CSDN APP累计阅读博文达到3天的你,是你的坚持与努力,使你超越了昨天的自己。
  • 专栏达人
    专栏达人
    授予成功创建个人博客专栏的用户。专栏中添加五篇以上博文即可点亮!撰写博客专栏浓缩技术精华,专栏达人就是你!
  • 持之以恒
    持之以恒
    授予每个自然月内发布4篇或4篇以上原创或翻译IT博文的用户。不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!
  • 勤写标兵Lv1
    勤写标兵Lv1
    授予每个自然周发布1篇到3篇原创IT博文的用户。本勋章将于次周周三上午根据用户上周的博文发布情况由系统自动颁发。
  • 原力计划专属勋章
    原力计划专属勋章
    2019年《原力计划【第一季】》专属勋章,现已经开启第二季活动啦,小伙伴们快去参加吧
  • 学习力
    学习力
    《原力计划【第二季】》第一期主题勋章 ,第一期活动已经结束啦,小伙伴们可以去参加第二期打卡挑战活动获取更多勋章哦。