卷积神经网络(CNN)的相关概念

传统神经网络存在的问题 说卷积神经网络前,我们要先说一下传统神经网络存在的一些问题,上图是一个典型的传统神经网络的示例图。设想一个场景,假设我们要训练的的样本图片是100x100(像素)的,那么整张图片总共就是有10000个像素,那么在定义一个 传统神经网络的时候,输入层(input layer)就需要有1w个神经元,那么如果我们的中间的隐藏层(hidden layer)也需要有1w个神经元,那么总共需要的参数(权值)就高达1亿个(1w*1w),试想一下,这还只是一张100x100的图片就需要这么多的参数,如果图片更大之后呢,可想而知整个神经网络的计算量有多恐怖。当然,一旦权重多了之后,则必须要有足够量的样本进行训练,否则就会出现过拟合的现象。因此我们可以知道,传统神经网络有以下两个问题: 权值太多,计算量太大 权值太多,如果没有大量样本支撑则会出现过拟合现象 ...

plainify

又要春招了?

去年四月的时候,我在公众号「01 二进制」发了几篇和春招面试有关的文章,眼瞅着现在已经 2 月底了,马上又到了一年一度的春招黄金时期,即将找工作的你做好准备了么? 作为一个经历过春招的老狗,我决定在今年的金三银四到来前梳理下对大家春招可能有帮助的文章,也算是回馈我为数不多的公众号粉丝了,如果你觉得对你有所帮助,还请大家点赞关注支持一下 🌹 知识储备 作为一个计算机专业的学生,想要找到一份好的工作,知识的储备是毋庸置疑的。去年,我在公众号开了一个「技术科普」专题系列,主要是做一些知识的分享,争取用通俗易懂的方式介绍一些计算机知识,其目的就是要扩展读者们的知识面。 技术科普系列的链接在这 👉技术科普系列,其中有一些我觉得对你们的面试可能会有些帮助。 如何向女朋友解释在地址栏中输入网址后发生了什么? 科普系列——如何解释什么是 AJAX? 科普系列——从网购/直播入手理解什么是 CDN 聊一聊 RPC 浅入浅出消息队列 接口调度者——API 网关 想追女神?先学 Synchronized 吧 互联网是如何工作的? 面试时的刁难问题 对于校招生而言,面试官除了会检验一些基础知识,还会额外的对面试者的思考能力做一个评判,方式就是通过提出一些“八股文”之外的问题,所谓面试中的“八股文”也即各种面试宝典、面试题库里的题目。GitHub 上有很多这样的仓库,我就不一一举例了。 在掌握“八股文”外,如果可以对场景有更深层次的思考,是可以在面试中加分的。去年我同样在公众号中开了一个新的系列「每周一问」,目的就是解决一些在编程中遇到的一些可以让人产生疑惑的小问题,如果面试中问道了,而你刚好又看过了,岂不是赚了? 比如说为什么我们需要批量操作?就是我在淘宝转正面试时遇到的一个小问题,其实答案稍加思考就可以得出,只是平常我们很少对自己问出这样的问题,如果突然被问到可能会慌。虽然这个系列目前的文章数量比较少,但是我一直在更新,还请大家多多关注。 每周一问系列 👉每周一问 推荐文章 👇 为什么不建议在 for 循环里捕捉异常? API 与 SDK:有什么区别? 为什么我们需要批量操作? 刷题 「Talk is cheap. Show me the code」作为一个计算机专业的学生,编程能力无疑是最重要的,而想要在短短一小时的面试时间里判断出你的编程能力,最好的办法就是做题了,这个题目可能是算法题、也可能是面向对象的设计题,当然也有可能是写脚本的题目。因此平时的做题训练是必不可少的,我之前也曾在公众号中发过力扣的题解系列,可后来由于阅读量惨淡也就没有坚持下去了,这里我就不推荐了,建议大家自己去力扣上多刷题,上面有很多大神的题解。...

plainify

双十一我在写什么代码?我加入淘宝的第一次双十一

看到标题大家可能还会有些诧异,这不是才刚刚国庆吗,怎么都开始写双十一的文章了。的确,虽然国庆还没有过完,但今年淘宝的双十一活动已经开始了。 我的上一篇文章是在 9 月 12 日发布的,直至今日一直没有更新的主要原因就是这半个月全身心的投入到这次双十一项目的研发中了。这半个月一个字总结下来就是 「累」,不仅仅是身体上的累,更有心理上的累。 短短半个月的时间,几十个令人无语的需求,没完没了大大小小的会议以及根本写不完的代码在前半个月疯狂摧残着我,不知多少个夜晚回到家已是第二天,一觉醒来继续重复着昨日的行为,总是会让我怀疑在这里工作的意义。 不过好在 10 月 1 日 0 点,这次的活动平稳上线了。虽然还有很多功能之后才会陆续上线,但连续半个月的连轴转总算是有暂缓脚步的迹象了,我也终于可以趁着这个国庆假期简单分享一下我来淘宝的第一个双十一了。 双十一活动 2009 年 11 月 11 日,是淘宝的第一个双十一,自那时起,每年的 11 月 11 日变成淘宝的一个固定节日(当然现在各种平台都会凑一下双十一的热度)。不过那一年我还小,我第一次听说双十一是在大学的时候,那个时候对一些电子产品感兴趣,双十一会有很大的优惠力度,不过可能是我的购物习惯导致的,蹲点抢购我一般是不会参与的。但是第二天我总还是会关注一下公开披露的数据,比如交易峰值,QPS 这些,毕竟是专业所致。去年实习因为个人原因没参与到双十一就离职回学校了,今年 7 月正式加入淘宝后,我迎来了自己的第一个双十一。 我所在的部门今年的双十一活动名为 「双十一种草机」,目前这个活动已经上线了,手机淘宝扫描上方二维码即可体验。其需要解决的问题痛点是 「想参与双十一,但是又不知道买什么」 。看到这可能有的人就要说了,整这么多花里胡哨的干嘛,直接像 PDD 一样,百亿补贴直接减免不就行了吗? 额,对于这点,我只能说,我就是一个写代码的,领导说要做啥那就做啥。至于为什么不直接像 PDD 一样直接减免如下图所示 👇 功能开发 我负责的功能是种草机活动的干预模块,其实要做的事情并不是很复杂,在不同时间段运营人员会根据当前情况对种草推荐/结果做一些紧跟时事的干预,比如增加某些优质内容的曝光量,或者拉黑某个劣质明星及其相关内容,一些敏感词过滤等等,大致流程如下图所示。 运营在某一个干预后台上可以进行一些配置的填写,前端同学负责搭建这个后台的页面,服务端同学需要将运营填写的配置数据落库,然后在前台履约的时候拿出这些数据。乍一看,确实没什么难点,不就是一个简单的 CRUD 功能吗?难不成阿里的双十一就这么简单吗? 后台数据落库 为了使整个干预模块形成一个闭环,我们需要从 后台数据落库 和 前台数据履约 两个角度去考虑实现运营干预。 对后台数据落库而言,的确就是配置数据的 CRUD,但难点在于对配置 数据的抽象。运营的配置需求千变万化,究竟是以何种方案实现成为了一个难点。如果每一类配置都作为一张表,那未来这个数据库将会出现 “数据表爆炸” 的情况,而且配置与配置之间并不是独立的,是有可能存在某种关联关系的,因此数据表的设计必须能够做到针对此类需求的通用性、易扩展。 其实本来写到这里的时候我是准备了一张简化后的数据模型图,但考虑到数据安全的问题,这里就用文字简单说明了,下一部分的前台履约同样。 可以说明的是,对于干预配置,设计的核心理念是 「一切都是配置」。在设计中,我们将一份运营配置分为两类属性:基础属性和表单属性。基础属性很好理解,如 ID、名称、操作人员、投放人群、投放时间等这些每个配置都会考虑到的东西。表单属性即运营后台呈现出来的需要运营填写的奇奇怪怪的属性,例如拉黑配置中的黑名单词,指定搜索词的头像等。 对于运营配置的基本属性以 树形结构 存储数据,通过 ParentId 指定配置之间的父子关系,通过 Group 指定配置类别,再通过唯一主键明确一个配置。采用树形结构存储将会天然支持此类运营配置的业务需求,理解起来也会更加自然。...

唔,突然就年中大促了啊

唔,突然就年中大促了啊 5月26日晚8点,618第一波预售活动正式开始,虽然各家都在紧锣密鼓的准备这个年中大促,但说到底活动的玩法、套路营销手段都是市场部等业务方制定的,作为技术人,究竟在大促活动中承担一个什么样的角色?以及大促活动究竟能带来什么改变,确是值得我好好考虑下的。 大促状态下的业务与技术 对于电商业务,既然有大促活动,肯定就会有日常状态,那么大促和日常究竟有什么区别? 相较于日常零碎的需求,大促的需求会更成体系,理想状态下,日常的需求基本上是各个产品经理在自己的盘口里反复横跳。搜索类的产品日常情况下只会提搜索相关的需求,推荐类的产品只会提推荐相关的需求。一旦到了大促,就需要各个盘口相互合作,以内容业务为例,往往是供给、用增、消费、搜索、公私域等盘口的联动,这时日常可能需要2-3个人日的需求就会变成可能需要40-50人日的团队作战。 由于业务需求更成体系,对于技术来说,就需要让整个迭代流程更加合理,无论是方案设计还是人力分配,这就很考验技术PM的经验与能力了。几乎所有的大促需求的时间是倒排的(大促开启时间是确定的),开发时间是十分有限的,因此一开始就要做足准备,可能涉及的上下游通知清楚,模块的边界划分事先明确,临时方案与通用方案的抉择,这些都是和日常态的区别。 也正是因为这些区别的存在,对技术也有着和日常不一样的要求。 全局意识 刚才说了因为需求更成体系,所以技术设计方案的时候也要更加合理。而想让方案更加合理就需要技术能真正的理解整个活动的玩法是什么样的。甚至可以说,技术应该要做到比业务更加了解业务(毕竟写代码的是技术不是业务)。只有做到这一点,才能真的站在更高的维度去看整个需求,才能知道如何规划系统,如何对齐资源,如何梳理上下游依赖关系,哪里可能会有坑,风险会在哪。 更加高效 对于一个技术团队来说,一个很重要的指标是效率。如何提高整个团队的效率是每个领导者需要关注的问题。现阶段我也只是一个大头兵,如何提高团队效率暂时不是我的命题。但有一点是确定的,只有团队里每个人更加高效了,整个团队才会更加高效。因此,如何在技术开发中变得高效就是每个技术人应该探索的命题了。 工具 首先是工具的使用。这里的工具不单单是开发工具,也包含一些效率工具。对于人类社会来说,生产工具的进步标志着生产力水平的提升。生产力最终是通过生产工具在人的作用下转换为产品的。这是生产过程必不可少的一环。 落实到每个人头上,最直观的表现就是一个好的工具可以给你节约非常多的时间。你现在还会使用netbeans去开发Java吗? 在这次618大促的开发过程中,有几个工具极大的提高了我的工作效率。滴答清单的子任务、语雀的小记、mindnode的脑图等。开发工具就更多了,首当其冲的肯定是idea,排查问题的Arthas,以及一众集团内部的工具与平台。 熟练的基本技能 正所谓技多不压身,多一项技能,在关键时刻往往会救你一命。 不熟悉git命令,怎么快速解决冲突?不熟悉jstack命令,如何快速定位问题?arthas命令不会用,怎么抓包排查问题? 为什么会出现OOM?为什么机器的线程数飙升?为什么机器会被限流?频繁ygc和fgc会给整个系统带来什么后果?在准备面试背八股文的时候大家都烂熟于心,但只有真的在现实场景下遇到才会意识到这些平时记得八股文是真的有用。 在掌握了一些技能与工具之后,如何沉淀出排查问题的方法论就是一个值得深究的命题了。哪些问题可以用什么工具排查,可以用什么方案解决,这些就要靠平时的积累了。记得多请教周围的师兄。 时间的合理分配 这就要说到另一个需要好好探索的命题了。如果单位时间内能做的事情已经到上限了,如何让一段时间里做到更多的事情?也即如何实现全局的最优解? 对于这种情况,我们可以将一些计算机科学的理论落实到实际生活中。 我们通常不喜欢被打断做事的节奏,此时如果把人比作一个计算机,那就是一个单核的计算机,这时你要做的就是不要频繁的切换上下文。 同样的,如果你只能做到单线程,做什么改进才能提高效率?一个很好的参考就是NodeJS的异步I/O模型。 有了这个输入,不妨考虑一下怎么把消息队列的生产者/消费者模型运用到人际交往中。 自1945第一台计算机诞生以来,为了让计算机拥有更高的效率,每年有无数的人才前赴后继投入到计算机科学的发展中,在更快更强上,计算机是多少天才智慧的结晶,可谓是提高效率最好的参照物。 更加健壮 代码 虽然做科研的一直流传着“凡是能靠怼硬件拿到结果的,就别做程序优化”的言论,但到了工业界,还是需要考虑成本的。无论多复杂的系统,都是靠一行行代码实现的,因此如何让系统更加健壮、稳定,最原子化的代码健壮一定是必不可少的。为了让VSCode拥有最高的运行效率,其开发团队几乎没有使用什么开发框架。虽然在现实场景下,我们的业务代码可能并不需要这么高的效率,但是清晰的逻辑、边缘case的全覆盖仍是我们该考虑的问题。 将代码写得像诗一样优雅应该是每一个技术人追求的目标。 架构 代码写的优雅,执行的高效,下一步就应该就是如何让架构变得更加合理了。 虽然“没有什么是靠增加一个中间层解决不了的”,但增加了一个中间层,虽然减少了耦合,却也意外的引入了一个不稳定因素,尽可能减少无用的依赖,合理的选择中间件,减少系统潜在的风险,DDD似乎是一个比较好的选择。 但是「没有银弹」也告诉我们没有一种单纯的技术或管理上的进步,能够独立地承诺在10年内大幅度地提高软件的生产率、可靠性和简洁性。因此架构的抉择本质上是一种取舍的艺术。 监控/预警 不存在没有bug的系统,只有还没发现的bug。如何做好监控与预警,如何实现问题的溯源、现场复原、快速响应在大促中尤为重要。 如果涉及权益、资产,对账监控怎么做?面对灰产、盗刷,怎么快速报警?面对大促时的尖刺流量,技术如何快速响应?真的出现问题,是止血还是启动应急预案?这些都应该是在大促开始前就要考虑清楚的问题,只有这样才能临危不乱。 (当然最好就别出现危险情况,325警告⚠️) 前台体验 对于一个toC的业务,就算真的系统出问题了,也不应该让用户感知。 以抽奖这个场景为例,如果抽奖QPS过高,导致服务端限流了(或者其他的什么原因导致服务请求失败),是告诉用户「前方道路拥挤」合适还是「很遗憾,未中奖」合适?答案不言而喻。 这里说一些题外话,从2021年开始,仿佛刮来了一股用户体验的风,各个头部产品都开始卷体验了,虽然这对于消费者来说确实是一件好事,但也从侧面反映了一些问题。如果不是真的没有东西可以卷了,谁会没事做去卷用户体验?(不过看起来天猫还是没学到教训,这次的活动又是复杂的很……) 更加乐观 做大促,真的会让人抑郁。尤其是在如今这种大裁员的背景下,外面人心惶惶,内部歌舞升平,似乎互联网马上就要完蛋似的。可说到底,大家追求的不过是碎银几两,乐观面对总好过日日碎念。

图像检索系列——利用 Python 检测图像相似度

本文的代码可在微信公众号「01二进制」后台回复「检测图像相似度」获得。 前言 最近在做一个海量图片检索的项目,可以简单的理解为“以图搜图”,这个功能一开始是搜索引擎带火的,但是后来在电商领域变得非常实用。在制作这个图片检索的项目前,笔者搜索了一些资料,如今项目临近结尾,便在这里做一些简单的分享。本文先介绍图像检索最基础的一部分知识——利用 Python 检测图像相似度。 提到检测“某某”的相似度相信很多人第一想法就是将需要比较的东西构建成两个向量,然后利用余弦相似度来比较两个向量之间的距离,这种方法应用很广泛,例如比较两个用户兴趣的相似度、比较两个文本之间的相似度。但是这个方法在比较图片相似度的时候用到的并不多,原因我之后再说,这里先来介绍下另外两个概念——图像指纹和汉明距离。 图像指纹 图像指纹和人的指纹一样,是身份的象征,而图像指纹简单点来讲,**就是将图像按照一定的哈希算法,经过运算后得出的一组二进制数字。**如下图所示: 在给定的输入的图像中,我们可以使用一个散列函数, 并基于图像视觉上的外观计算它的“图像散列”值,相似的头像,它的散列值应该也是相似的。构建图像指纹的算法被称为感知哈希算法(Perceptual Hash Algorithm)。 汉明距离 通过上述对图像指纹的描述我们知道了可以利用感知哈希算法将图片转换成某种字符串,而比较字符串有一种名为汉明距离的表示方法。以下定义摘自维基百科: 在信息论中,两个等长字符串之间的汉明距离(英语:Hamming distance)是两个字符串对应位置的不同字符的个数。换句话说,它就是将一个字符串变换成另外一个字符串所需要替换的字符个数。 通常用汉明距离来衡量两张图片的差异,汉明距离越小,则代表相似度越高。汉明距离为0,即代表两张图片完全一样。 感知哈希算法 常用的感知哈希算法有三个,分别是平均哈希算法(aHash)、感知哈希算法(pHash)、差异值哈希算法(dHash)。至于这三种哈希算法的介绍和比较很多博客都有写,而且很多库都支持直接计算哈希值,调用一下相关函数就可以了。这里就不多说了,推荐一篇文章👉 《图像相似度中的Hash算法》 代码可在微信公众号「01二进制」后台回复「检测图像相似度」获得 三种哈希算法的实现代码如下: ahash dhash phash 当然,你也可以选择安装ImageHash库,然后调用相应的hash函数来实现计算。 比较两个图片相似度的思路 所以看到这对于比较两张图片的相似度我们就有了一个简单的想法了,只要通过感知哈希算法获得图像的图像指纹,然后比较两个哈希值之间的汉明距离就可以了。 详细的步骤,阮一峰介绍了一个简单的图片搜索原理,可分为下面几步: 缩小尺寸。将图片缩小到 8x8 的尺寸,总共 64 个像素。这一步的作用是去除图片的细节,只保留结构、明暗等基本信息,摒弃不同尺寸、比例带来的图片差异。 简化色彩。将缩小后的图片,转为 64 级灰度。也就是说,所有像素点总共只有 64 种颜色。 计算平均值。计算所有 64 个像素的灰度平均值。 比较像素的灰度。将每个像素的灰度,与平均值进行比较。大于或等于平均值,记为 1 ;小于平均值,记为 0。 计算哈希值。将上一步的比较结果,组合在一起,就构成了一个 64 位的整数,这就是这张图片的指纹。组合的次序并不重要,只要保证所有图片都采用同样次序就行了。 这种方法对于寻找一模一样的图片是有效的,但是搜索「相似图片」的效果很差,也不能局部搜索,因此通常应用在**「检测图片是否侵权」**上。现在诸如谷歌识图、百度识图几乎都是采用深度学习的方式进行相似性检索,这个下篇文章介绍。 为什么余弦相似度不适合用来检测图片相似度 最后我们来讨论下为什么不使用余弦相似度来检测图片的相似度。开篇我们就说过如果需要用余弦相似度来衡量相似性,我们需要先构造两个向量。通常情况下我们会将图片转化为像素向量(基于像素点灰度值的频次),从而计算两个图片的相似度,这种做法其实就是计算两个图片的直方图的相似度,然而这样就只保留了像素的频次信息,丢掉了像素的位置信息,信息损失太大,只在某些场景下适用。用余弦相似度表示图片相似度的代码同样可以微信公众号「01二进制」后台回复「检测图像相似度」获得。 总结 本文介绍的方法都是通过非深度学习的手段来检测图像的相似度,虽然理解起来都很容易,但是每种方法都有局限性。想要制作一个图像检索系统虽然第一步都是比较图像的相似度,但现如今大多数都是通过深度学习的方法提取出图像特征,然后再进行比较,准确率大大提升。之后我将会讲述如何通过深度学习抽取图像特征的方式来比较图片的相似度。 由于能力有限,在整理描述的过程中难免会有些错误,如有建议,可以留言区批评指正🙏

plainify

图像检索系列——利用深度学习实现以图搜图

文中源码可在微信公众号「01 二进制」后台回复「图像检索」获取。 前言 在上一篇文章《图像检索系列——利用 Python 检测图像相似度》中,我们介绍了一个在图像检索领域非常常用的算法——感知哈希算法。这是一个很简单且快速的算法,其原理在于针对每一张图片都生成一个特定的“指纹”,然后采取一种相似度的度量方式得出两张图片的近似程度。 然而随着深度学习的崛起,极大的推动了图像领域的发展,在提取特征这方面而言,神经网络目前有着不可替代的优势。在上一篇文章中我们也介绍了图像检索往往是基于图像的特征比较,看特征匹配的程度有多少,从而检索出相似度高的图片。而检测图像特征,VGG16 具有得天独厚的优势。 接下来本文将会通过一个简单的案例来实现一个基于深度学习的图像检索小工具。 准备工作 老样子,先来准备好我们此次需要使用到的工具: IDE:Pycharm Python:3.7 Packages:Keras + TensorFlow + Pillow + Numpy keras Keras 是一个高层神经网络 API,Keras 由纯 Python 编写而成并基Tensorflow、Theano以及CNTK后端。简单来说,keras 就是对 TF 等框架的再一次封装,使得使用起来更加方便。 基于 vgg16 网络提取图像特征 我们都知道,vgg 网络在图像领域有着广泛的应用,后续许多层次更深,网络更宽的模型都是基于此扩展的,vgg 网络能很好的提取到图片的有用特征,本次实现是基于 Keras 实现的,提取的是最后一层卷积特征。 思路 主要思路是基于 CVPR2015 的论文《Deep Learning of Binary Hash Codes for Fast Image Retrieval》实现的海量数据下的基于内容图片检索系统。简单说来就是对图片数据库的每张图片抽取特征(一般形式为特征向量),存储于数据库中,对于待检索图片,抽取同样的特征向量,然后并对该向量和数据库中向量的距离(相似度计算),找出最接近的一些特征向量,其对应的图片即为检索结果。如下图所示: 用户请求和预处理部分主要是 Web 服务端应该做的,这里不加以讨论,接下来我们主要进行红线标注部分的实现。 实操 提取图片特征 keras 在其中文文档中提供了一个利用 VGG16 提取特征的 demo from keras.applications.vgg16 import VGG16 from keras....

在 Flutter 中使用 WebView

本文示例代码可在微信公众号「01二进制」后台回复「WebView」查看下载 前言 我们知道在开发 Native App 时经常会有打开网页的需求,可供的选择通常只有两种: 在 App 内部打开网页 通过调用系统自带浏览器打开网页 以「微信」举例,我们在微信内阅读公众号的时候就是第一种情况,但是微信同时也提供了Open with Browser 这一选项,这就是第二种情况了。 简单的介绍下 Android 中的 WebView 想实现第一种效果,我们需要使用一个名为 WebView 的东西,先来看看在 Android 中如何实现一个 WebView 吧。 在 Android 中我们需要先在一个 Layout 中放入 WebView 这个控件,然后在对应的 Activity 或者 Fragment 或者各种 Custom View 中执行一个个的 findViewById…… 额,Android 开发者一定知道我在说什么(真的很麻烦) WebView in Flutter Flutter 的 WebView 出现已经有一段时间了,在 Flutter 插件社区官网搜索 WebView 即可搜索到比较流行的插件,如下图所示: 其中 webview_flutter 是官方维护的 WebView 插件,特性是基于原生和 Flutter SDK 封装,继承 StatefulWidget,因此支持内嵌于 flutter Widget 树中,这是比较灵活的;...

在腾讯云 Ubuntu18.04 安装配置 MySQL 5.7(踩坑警告⚠️)

前言 和标题一样,本文的主要内容就是在腾讯云 Ubuntu18.04 上安装配置 MySQL 5.7,之所以要写这篇文章是因为前两天和朋友讨论现在的 mysql 设置 root 账户的密码上和以前不一样了而且后续的操作也比以前麻烦了,他不信相信,然后为了向他验证我的说法,我就把我的一台暂时闲置的腾讯云服务器重装了下系统(程序员较起真来就是这么不讲理 😜) 这不,虽然我证实了我说的,但我也付出了要重新配置我这台服务器的惨痛代价,既然这样倒不如把安装配置的过程记录下。话不多说,我们就开始吧。 环境准备 一台腾讯云服务器 系统环境为 Ubuntu 18.04 安装 安装 mysql 非常简单,只需要执行下面两个命令: sudo apt-get install mysql-server sudo apt-get install mysql-client 检查 MySQL 是否运行: sudo netstat -tap | grep mysql 如果成功安装,我的会显示如下内容: tcp6 0 0 [::]:1030 [::]:* LISTEN 5743/mysqld 顺便在这里提一下 **重启/打开/关闭 MySQL ** 的方法是: sudo service mysql restart/start/stop 配置 虽然我们可以通过执行两个命令就能很方便的安装好 MySQL,但是我在安装过程中并没有出现要我写用户名和密码的地方,这让我一脸懵逼,索性在终端输入mysql -u root -p之后,要求我输入密码,可是我并不知道密码,心想可能默认密码就是空吧,直接回车不对,随便输入一个密码也不对,终于在查找了很多资料后,我找到了解决方案。 查看初始用户名和密码 查看一个文件 sudo cat /etc/mysql/debian.cnf 在这个文件里面有着 MySQL 默认的用户名和用户密码, 最最重要的是:用户名默认的不是 root,而是 debian-sys-maint,如下所示...

大学生该不该接私活?

之前有说过要开一个新的系列的,那个系列最新的一篇已经是快一周前了,可能会有人奇怪我干嘛去了,为啥一直没有更新(也有可能是我想的太多)。其实我这周的主要就做了两件事,做毕设和复联4。不过这毕设不是我的毕设,而是我接的其他人的毕设,这也是我写这篇文章的原因。我想从我个人的经历看看我们大学生究竟该不该接私活(临时加需求真是太痛苦了)? 这是一个纠结的话题 其实这个话题特别的纠结,为啥呢?原因有二,其一是因为现在还是大学生,学业仍然是第一要素,如果把心思过多的放在这些和学习无关的事情上,对之后的升学可能会有影响。其二就是因为穷,尤其是作为一个大学萌新,从高中的牢笼解脱,女生有那么好看的衣服想穿,男生有那么多游戏装备想买,但是每个月生活费就那么点,你说着不着急? 但是急能怎么办?急就有钱了?肯定不会啊,所以也就有了校园兼职这一说。就我个人而言,我从大一开始就接触了一些兼职,我去过物流中心搬过快递一晚上100、做过家教一小时30、送过外卖一单5块,卖过电话卡(记不得一单多少了,但是那一天赚了600,现在大三软工的学弟只要是移动卡的多半是我当初帮他们办的),当然还有些临时的,零零散散的做了好多,但是单论价钱的话都没有接一个私活来的多。 从实例出发 举个我自己的例子,我之前接过一个私活,是一家材料厂,为了应付上面检查,要有一个出入库的管理软件(app+后台),让我两天内做完,最后那老板给了我3000,其实这玩意大家也都知道,无非就是增删改查,而且目的也就是为了应付检查,所以不需要考虑太多,能跑就行。我当时也就加了一晚上班就做出来了。而且难度不大,会安卓+随便一种后台就足以应付了,你说这钱赚的是不是很舒服? 但现实真的这么美好吗?我再举个例子,我大三的时候,手头正缺钱(因为当时准备保研发期刊是需要money的),一个认识的人找到我问我能不能做毕业设计,我当时看了下他的开题报告觉得没什么问题就接了,顺便包论文,东西在他中期答辩前就弄完给他了,当时还觉得这两千块钱赚的真舒服。结果后来那个人找到了我,说他老师觉得他完成的工作太简单了,任务量不够,要加些内容(都是些乱七八糟的想法),否则不给我尾款(先给了500定金的),那个时候论文我已经写了一半了,碍着那钱我心想忍忍就算了,结果后来论文又说不合格,得改,那大半个月真的是前前后后几乎啥事没做全去忙他那个傻X玩意了。 从经济学入手 有了上面两个例子,你觉得我们大学生要不要接私活呢?在回答之前我先说一个经济学的知识,叫做比较优势理论,是我之前看薛兆丰的经济学看到的,他的核心是:自己跟自己比,总有效率比较高、成本比较低的生产项目,专注这种生产项目然后跟别人进行交换,整个社会的财富就能够增加,而个人的财富也能够增加。假设盖茨家有块草坪,他自己打理需要2小时,请隔壁王大爷打理需要3小时,那你觉得盖茨是会自己打理草坪还是请王大爷打理呢?那肯定是请人打理了(除非他自己想体验生活),因为这两小时他都不知道可以赚多少钱了。 该不该接私活? 这么看来,你翘课去做外包,接私活好像也没什么不对,毕竟上一节课就要花23块钱。但真的是这样吗?对我们大学生来说财富二字难道可以狭义的理解为money吗?当然不是,你的财富除了你能掌握的金钱,还有就是你的精力和时间(我这几天没怎么更新公众号也是因为最近接了一个毕设)。我的好朋友🐔哥前两天也写了一篇关于接外包的文章:《怎么接外包?该不该接外包?几次踩坑后的思考》,他提到了收入分为两种形式:主动收入和被动收入。主动收入可以理解为,我给老板打工,老板给我发工资,我追着钱跑。被动收入可以理解为我花一些时间后,钱就会追着我跑,因此也就被形象的称为"睡后收入"。最简单的,我写完了这篇文章,开了赞赏,就去睡觉了,你早晨起来看到觉得写得还不错,给我赞赏了2块钱,等我起床发现自己余额多了两块,这就是"睡后收入"了。 所以作为一个即将毕业的且踩了些坑的大四老狗,我对大学生要不要接私活这个问题的看法是NO,除非自己真的是非常缺钱并且时间相对充裕的情况,否则不如好好培养自己"睡后收入”的能力。 其他赚钱的方式? 如果你觉得你的编程能力足够优秀,而且也不想浪费这个优势,我建议你可以试试去参加各类学科竞赛,中国最不缺的就是各种比赛,如果你觉得你足够优秀那么水几个比赛,拿几个奖金自然也是不在话下了,再加上有的学校老师会报销一些研究经费以及竞赛奖励(这些钱估摸着得有大几千,虽然也不多,但是对于一个普通的大学生来说也是一笔不小的财富)。 如果你想到了好玩的点子,做成app,万一火了,其实大学的学费都能供给了,大学里面很多有钱的学生,他们很多都是自己在大学之前写app赚钱的,现在时下流行,代码经验同样可以为日后生活积累。 当然如果想赚钱其实还有更好的办法,那就是好好学习,然后收割各种奖学金,比如国家奖学金、励志奖学金、学校的人民奖学金、一些企业的奖学金。我周围就有一个同学,年年奖学金拿到手软(拿到的钱都是以w为单位),好生羡慕😂。 一点建议 虽然上面说了那么多 ,但是你仍然有可能会手痒想接外包(毕竟贫穷使人接活),那么作为一个负责任的博主,我就结合自己的经历提点建议吧。 不接熟人的私活 不接没有详细需求的活 不接屁事多的甲方的活 不接没有现成解决方案的活 不接要写论文的毕设 会后台的前提下去学着做app 最后 身为未来码农的你在上学的时候还不找女朋友?难不成等着工作之后国家分配吗?

大模型让你焦虑了吗?

之所以会起这个标题,源自于前段时间笔者的亲身经历,上个月我利用ZhipuAI结合开发了一个阅读PDF的AI小工具,还没开始正式使用,突然发现KimiChat已经支持20万字的超长文本输入,意味着你可以直接塞入一整套知识库进去。再回头看看自己写的那个工具,才越发觉得所做的一些努力不值一提。 这不禁引发我的思考,移动互联网时代,个人开发者以极低的成本(一台电脑,一部手机)开发出独立作品的场景,在如今的大模型的时代变得不再现实。那个年代,代码稀少,因此程序员的薪资才水涨船高。可生成式AI的出现,让代码生成的成本变得更低,代码在这个时代变得越来越不值钱。 你问我焦虑不焦虑,那肯定是焦虑的,真的很焦虑。尤其在对比了国内外的现况后,变得愈发焦虑了。似乎海外一直在高歌猛进,Google、Meta、OpenAI等大公司军备竞赛,NVIDIA股票节节攀升,各种开源工具应接不暇。反观这里,仍然一直发布着各项评测结果遥遥领先,但实际效果一般的大模型,颇有一种被世界甩在身后的感觉。 笔者常年在互联网上划水,算是比较先接触AIGC和大模型的,期间也陆陆续续写过一些文章。从一年多的使用来看,大模型真的很强,强到帮我写代码,根据大纲编辑文字,给我提供各种思路和解决方案。但同时大模型也很弱,弱到我问他鲁迅和周树人是什么关系都会瞎说。这种矛盾带来的割裂感让我陷入了深思。技术,尤其是像生成式AI这样突破性的技术,始终带有双刃剑的特质。其一面能够无限放大人类的创造力,简化日常工作,提升效率;另一面则是误导信息、扩张偏见,让你无法分辨究竟什么是真,什么是假。因为大模型对于输出错误答案和输出正确答案同等自信,以至于在某种程度上反而增加了人类获取真实信息的成本。 大模型时代的开源 借着这个话题,探讨一下如今这个时代大模型开源是否还有意义。 首先,开源作为一种协作模式,是鼓励开发者共享知识和资源,这样可以加速技术的迭代和创新,同时也降低了参与门槛,使得更多的企业和个人能够参与到AI大模型的研发和应用中来,颇有一种众人拾柴火焰高的意思在里面。但是现在,我们发现各种性能卓越的大模型都是闭源产品,无论是GPT4,还是Gemma,都是大公司的产品。OpenAI在成立之初,是希望让AI服务于每个人,但是现在越来越多的人调侃他们变成了CloseAI。 闭源可以保护商业模式,聚集人才和算力资源,反观开源社区的很多成员都是个人开发者,没有足够的算力支持,所以观察GitHub可以发现一个规律,大公司不断发布自己最新最强的大模型,个人开发者不断的发布自己的各种调用大模型API的应用和工具。 也许未来开源社区会成为反哺这些大模型公司生态重要的一环。 大模型之于我们 这几天腾讯新闻有两篇文章值得看一看。分别是《朱啸虎讲了一个中国现实主义AIGC故事》和《月之暗面杨植麟复盘大模型创业这一年:向延绵而未知的雪山前进》 这两篇文章介绍了中国科技界对大模型的态度分裂成两股阵营,一方认为应该追求更大更强的AI能力,另一方认为应该将足够的AI能力投入可以快速变现的商业场景中。 其实,杨植麟和朱啸虎并不是对立的。在中国也可以做大模型,但是要基于两个真相。第一,阿里这类云计算厂家会砸钱,反正大模型买我的算力,甚至投资款都用算力支付,云计算规模上去还可以打价格战,一石多鸟,空手套白狼。第二,大模型作为基础设施,中国肯定要自主可控,不管好不好,肯定要有。 这些机会,属于杨植麟这样的,和杨立昆一起发过paper的天之骄子。而普通人做AI,多听听朱啸虎说的,不要挑战高大上的科研,一定要做应用,一定要想办法快赚钱,养活自己。 套用《一代宗师》的台词 —— 今天我们不比武功,比想法。 那么未来AI的走向会是什么样的呢? 悲观的预测,这轮AI是元宇宙,泡沫破裂,英伟达成为思科。又或者这轮美国的AI,成了中国的5G,的确遥遥领先,但是烧了那么多钱,却找不到爆款应用。中性的预测,这轮AI是互联网。前期技术曲线陡峭,后期变得平缓,中国能慢慢赶上来。再次印证,美国擅长底层技术,中国擅长应用落地。最乐观的预测,这轮AI是AGI,scaling law带来的强人工智能,是黑客帝国,是人类被全面超越和奴役的开始。 但是不管怎么样,我们都不应该焦虑,饭是一口一口吃的,路也是一步一步走的,我们注定不是会引领世界的一批人,因此让自己站在巨人的肩膀上才是我们要做的。历史课本上说人类进化的重要标志是学会使用工具,现如今大模型是进入信息时代以来,人类最伟大的工具,你能够直接调用人类千年以来积累的知识与技能,这些足以让你变得十分强大。