<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[TechFlow的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/TechFlow</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; TechFlow]]></copyright><item><title><![CDATA[看完就懂，五千字长文带你领略推荐系统]]></title><link>https://blog.youkuaiyun.com/TechFlow/article/details/109365429</link><guid>https://blog.youkuaiyun.com/TechFlow/article/details/109365429</guid><author>TechFlow</author><pubDate>Thu, 29 Oct 2020 17:47:29 +0800</pubDate><description><![CDATA[最近有一些小伙伴给我留言说非常想要我开一个推荐系统专题，其实我也有过这个想法，一直没动笔主要有两个原因。第一个原因是担心自己水平不够，班门弄斧或者是误导了一些读者。第二个原因是，我的确不知道这个专题应该怎么写。但是读者有求，总得回应不是，所以咬着牙写了本文。
文章有点长，但是干货不少，希望大家能够耐心读完。
推荐、广告、搜索三兄弟
互联网行业当中有这么一句话，叫做：搜索、广告、推荐三兄弟。这句话是说这三个领域或者是三个方向的技术栈非常接近，甚至可以说是相差无几，可以自由转化。比如我也是今年才转到的推荐tea]]></description><category></category></item><item><title><![CDATA[git的远程分支是干啥的，和本地的有什么区别？]]></title><link>https://blog.youkuaiyun.com/TechFlow/article/details/109352820</link><guid>https://blog.youkuaiyun.com/TechFlow/article/details/109352820</guid><author>TechFlow</author><pubDate>Thu, 29 Oct 2020 10:19:12 +0800</pubDate><description><![CDATA[不知道大家有没有经历过，当我们切换到了一个新的分支想要提交代码的时候，总会遇到这样的错误。

我们把日志里的英文翻译过来是说，我们当前的分支没有设置任何上游分支。然后git提示我们可以运行下面这行代码来设置远程的上游，这样我们就可以push成功了。
当然如果我们push的时候执行的不是git push，而是后面再加上origin的话，就可以push成功了。比如这样：

那么这是什么原因呢？这个origin分支又是什么意思呢？我们今天就来讨论一下这个问题。
远程分支
远程分支其实就是远程代码仓库当中的分支，比]]></description><category></category></item><item><title><![CDATA[codefroces中的病毒，这题有很深的trick，你能解开吗？]]></title><link>https://blog.youkuaiyun.com/TechFlow/article/details/109327257</link><guid>https://blog.youkuaiyun.com/TechFlow/article/details/109327257</guid><author>TechFlow</author><pubDate>Wed, 28 Oct 2020 10:11:46 +0800</pubDate><description><![CDATA[大家好，欢迎阅读周末codeforces专题。
我们今天选择的问题是contest 1419的C题，目前有接近8000的人通过了本题。今天这题的难度不大，但是真的很考验思维，一不小心就会踩中陷阱，我个人觉得非常有意思，适合周末动动脑。
题目链接：https://codeforces.com/contest/1419/problem/C
题意
有一个叫做Killjoy的特工发明了一种新型的冠状病毒叫做Convid-2069，专门在codeforces平台上传播。这种病毒通过rating传播，只要两个人的rat]]></description><category></category></item><item><title><![CDATA[我在git merge的时候遇到了冲突，怎么解决？]]></title><link>https://blog.youkuaiyun.com/TechFlow/article/details/109305250</link><guid>https://blog.youkuaiyun.com/TechFlow/article/details/109305250</guid><author>TechFlow</author><pubDate>Tue, 27 Oct 2020 10:10:04 +0800</pubDate><description><![CDATA[大家好，今天来和大家聊一个老生常谈的问题，我们在使用git merge的时候遇到了冲突，怎么办？
首先我们来看看为什么会冲突，git冲突的原因很简单，就是两个分支当中对同一处代码进行了不同的改动。于是git会困惑，不知道在merge的时候究竟应该怎么做，于是就会出现冲突。
实战
光说不练没有意义，让我们来实际操作一下。
我们首先创建一个一个test.txt文件，在其中写入一行test。git add并且git commit。

接着我们checkout -b创建一个新的分支，在这个分支当中我们把test.t]]></description><category></category></item><item><title><![CDATA[面试不再慌，看完这篇保证让你写HashMap跟玩一样]]></title><link>https://blog.youkuaiyun.com/TechFlow/article/details/109254344</link><guid>https://blog.youkuaiyun.com/TechFlow/article/details/109254344</guid><author>TechFlow</author><pubDate>Sat, 24 Oct 2020 09:34:44 +0800</pubDate><description><![CDATA[今天这篇文章给大家讲讲hashmap，这个号称是所有Java工程师都会的数据结构。为什么说是所有Java工程师都会呢，因为很简单，他们不会这个找不到工作。几乎所有面试都会问，基本上已经成了标配了。
在今天的这篇文章当中我们会揭开很多谜团。比如，为什么hashmap的get和put操作的复杂度是O(1)O(1)O(1)，甚至比红黑树还要快？hashmap和hash算法究竟是什么关系？hashmap有哪些参数，这些参数分别是做什么用的？hashmap是线程安全的吗？我们怎么来维护hashmap的平衡呢？
让我们]]></description><category></category></item><item><title><![CDATA[Git操作文件的时候手贱了，怎么恢复？]]></title><link>https://blog.youkuaiyun.com/TechFlow/article/details/109237085</link><guid>https://blog.youkuaiyun.com/TechFlow/article/details/109237085</guid><author>TechFlow</author><pubDate>Fri, 23 Oct 2020 10:23:49 +0800</pubDate><description><![CDATA[我们在使用git的过程当中很难避免的一点就是手贱，因为人嘛总有犯错疏忽的时候，有时候一不小心就操作错了。我也经常遇到这种情况，所以这时候对git的了解和掌握就非常重要，即使操作错了，我们也可以通过git还原到我们希望它变成的状态。下面我们来看几个例子，来实际体验一下git的强大。
不小心add错了
这是一个非常非常容易出现的问题，我自己也经常遇到。有时候编译出了二进制文件，明明知道是不应该添加进git管理的。因为添加进来之后会使得整个repo变得非常大，别人clone和pull都非常费劲。而且前面也说过了，]]></description><category></category></item><item><title><![CDATA[学会这三个命令，你就不再是git只会用三板斧的菜鸟了]]></title><link>https://blog.youkuaiyun.com/TechFlow/article/details/109215949</link><guid>https://blog.youkuaiyun.com/TechFlow/article/details/109215949</guid><author>TechFlow</author><pubDate>Thu, 22 Oct 2020 10:00:14 +0800</pubDate><description><![CDATA[前言
在之前的文章当中我们介绍了最基本的git add、git commit和git push的用法以及基本原理，还介绍了gitignore文件的设置方法，从而让我们可以使用git add .来添加我们想要的文件，而不必要手动区分。
今天我们继续来介绍几个git当中常用并且重要的命令，它们分别是git diff，查看提交历史的git log。
git diff
git diff是一个非常好用的命令，很多大牛都用它查看代码的改动，因为它的确非常方便。git diff命令可以查看当前工作区与暂存区的差别，也就是]]></description><category></category></item><item><title><![CDATA[算法题 | 你能想出解法，让你的基友少氪金吗？]]></title><link>https://blog.youkuaiyun.com/TechFlow/article/details/109195725</link><guid>https://blog.youkuaiyun.com/TechFlow/article/details/109195725</guid><author>TechFlow</author><pubDate>Wed, 21 Oct 2020 10:18:31 +0800</pubDate><description><![CDATA[大家好，今天codeforces专题选择的是一场education比赛的C题。
Education是codeforces的一种特殊赛事，它的主要作用是教育，也就是让更多的人了解codeforces的比赛机制。所以education赛事的题会相对来说容易一些，更加适合新手。我选的这道题虽然是C题，但是难度并不高非常基础。
链接：https://codeforces.com/contest/1418/problem/C
这题通过的人数有3600多，相比之前介绍的题算是比较少，但是题目难度其实更低一些。我们废话不]]></description><category></category></item><item><title><![CDATA[非典型算法题，用程序和电脑玩一个游戏]]></title><link>https://blog.youkuaiyun.com/TechFlow/article/details/109155342</link><guid>https://blog.youkuaiyun.com/TechFlow/article/details/109155342</guid><author>TechFlow</author><pubDate>Mon, 19 Oct 2020 10:03:14 +0800</pubDate><description><![CDATA[大家好，欢迎阅读周末算法题专题。
今天选择的算法题是来自contest 1407比赛的C题，这题全场通过6700余人。通过的人数虽然多，但是这题真的不简单，想出算法来不太容易。抛开难度不提，这道题非常非常有意思，老实说这种形式的题目我也是第一次见。
题目链接：https://codeforces.com/contest/1407/problem/C
废话不多说，我们来看题目。
题意
这题是一道非典型的算法题，与其说是一道算法题不如说更像是一个游戏。游戏的目的是猜一个1至n这n个数构成的排列，我们需要通过输入]]></description><category></category></item><item><title><![CDATA[详解command设计模式，解耦操作和回滚]]></title><link>https://blog.youkuaiyun.com/TechFlow/article/details/109111307</link><guid>https://blog.youkuaiyun.com/TechFlow/article/details/109111307</guid><author>TechFlow</author><pubDate>Fri, 16 Oct 2020 10:18:03 +0800</pubDate><description><![CDATA[大家好，欢迎来到设计模式专题，我们的主旨是介绍一些有趣好玩的设计模式。
今天我们介绍的设计模式叫做命令模式(command)，在这个模式下，我们可以实现do和undo的解耦，让使用方不用关心内部的实现细节。
command模式
这个模式我们在日常当中经常使用，举一个很简单的例子，比如说我们发布代码。发布了之后发现不小心发布上去了一个bug，这个时候我们应该做什么？很简单，就是回滚，把线上的代码回滚到这一次发布之前的代码。这样我们这次发布带来的改动就会被消除，那么就避免了bug的产生。
那么，对于一个发布系统]]></description><category></category></item><item><title><![CDATA[matplotlib画图教程，设置坐标轴标签和间距]]></title><link>https://blog.youkuaiyun.com/TechFlow/article/details/109090712</link><guid>https://blog.youkuaiyun.com/TechFlow/article/details/109090712</guid><author>TechFlow</author><pubDate>Thu, 15 Oct 2020 09:32:20 +0800</pubDate><description><![CDATA[大家好，欢迎来到周四数据处理专题，我们今天继续matplotlib作图教程。
在上周的文章当中我们介绍了如何通过xlabel和ylabel设置坐标轴的名称，以及这两个函数的花式设置方法，可以设置出各种各样的名称显示方法。今天我们来介绍介绍其他的设置。
xlim、ylim
我们首先来介绍坐标轴的范围，坐标轴的范围很好理解，有的时候我们产出的数据的范围可能并不是完全我们想要的。如果我们不对坐标轴的范围进行设置的话，那么matplotlib默认会按照我们数据的范围来自动选择它认为最合适的区间来展示所有的数据。
举]]></description><category></category></item><item><title><![CDATA[详解工程师不可不会的LRU缓存淘汰算法]]></title><link>https://blog.youkuaiyun.com/TechFlow/article/details/109066757</link><guid>https://blog.youkuaiyun.com/TechFlow/article/details/109066757</guid><author>TechFlow</author><pubDate>Wed, 14 Oct 2020 10:07:17 +0800</pubDate><description><![CDATA[大家好，欢迎大家来到算法数据结构专题，今天我们和大家聊一个非常常用的算法，叫做LRU。
LRU的英文全称是Least Recently Used，也即最不经常使用。我们看着好像挺迷糊的，其实这个含义要结合缓存一起使用。对于工程而言，缓存是非常非常重要的机制，尤其是在当下的互联网应用环境当中，起到的作用非常重要。为了便于大家更好地理解，我们从缓存的机制开始说起。
缓存
缓存的英文是cache，最早其实指的是用于CPU和主存数据交互的。早年这块存储被称为高速缓存，最近已经听不到这个词了，不知道是不是淘汰了。因为]]></description><category></category></item><item><title><![CDATA[详解深度学习感知机原理]]></title><link>https://blog.youkuaiyun.com/TechFlow/article/details/109045961</link><guid>https://blog.youkuaiyun.com/TechFlow/article/details/109045961</guid><author>TechFlow</author><pubDate>Tue, 13 Oct 2020 10:22:09 +0800</pubDate><description><![CDATA[大家好，欢迎阅读深度学习专题。
我们之前的机器学习专题已经结束了，我们把机器学习领域当中常用的算法、模型以及它们的原理以及实现都过了一遍。虽然还有一些技术，比如马尔科夫、隐马尔科夫、条件随机场等等没有涉及到。但是这些内容相比来说要弱一些，使用频率并不是非常高，我们就不一一叙述了，感兴趣的同学可以自行研究一下。我想像是GBDT、SVM这些模型都能理解的话，那些模型想必也不在话下。
深度学习简介
深度学习最近几年非常火，很多人会把它和人工智能扯上联系。这里的深入并不是指学习深入，也不是指概念很深入，只是单纯地指]]></description><category></category></item><item><title><![CDATA[详解gitignore的使用方法，让你尽情使用git add .]]></title><link>https://blog.youkuaiyun.com/TechFlow/article/details/109022270</link><guid>https://blog.youkuaiyun.com/TechFlow/article/details/109022270</guid><author>TechFlow</author><pubDate>Mon, 12 Oct 2020 10:02:48 +0800</pubDate><description><![CDATA[大家好，欢迎来到周一git专题。
今天和大家聊聊gitignore的作用，其实如果你英文还可以的话，你应该已经基本上猜到它的作用了。ignore在英文当中的意思是忽视、忽略，gitignore自然就是git当中的忽视和忽略，言下之意就是忽略某些文件。所以gitignore的作用就是帮助我们在git add时将我们指定的一些文件自动排除在外，不提交到git当中。
ignore的作用
看到这里你可能很疑惑，git创造出来就是为了管理代码和文件的，为什么还要禁止一些文件提交呢？
其实也很简单，举个很简单的例子。比]]></description><category></category></item><item><title><![CDATA[算法题 | 你追我，如果你追到我……那就算你赢了]]></title><link>https://blog.youkuaiyun.com/TechFlow/article/details/108973803</link><guid>https://blog.youkuaiyun.com/TechFlow/article/details/108973803</guid><author>TechFlow</author><pubDate>Fri, 09 Oct 2020 10:15:24 +0800</pubDate><description><![CDATA[大家好，欢迎阅读周末算法题专题。
今天选择的算法题来源于昨天同一套题中的D题，这题全场通过的人数在2600人左右。虽然通过的人数更少了一些，但是题目的难度却并没有增加很多，但是趣味度增加了。我也是第一次遇见这样的问题。
题目链接：https://codeforces.com/contest/1405/problem/D
废话不多说，我们一起来看这题的题意。
题意
我们都知道数据结构当中的树有这样一个性质，如果树当中有n个点，那么它应该由n-1条无向边组成。并且树当中是一定没有环的，如果有环的话n-1条边就不]]></description><category></category></item><item><title><![CDATA[险些翻车，差一点没做出来的基础算法题]]></title><link>https://blog.youkuaiyun.com/TechFlow/article/details/108959992</link><guid>https://blog.youkuaiyun.com/TechFlow/article/details/108959992</guid><author>TechFlow</author><pubDate>Thu, 08 Oct 2020 10:08:07 +0800</pubDate><description><![CDATA[大家好，欢迎大家阅读周末算法题专题。
今天我们选择的题目是codeforces 1405比赛的C题。
题目链接：https://codeforces.com/contest/1405/problem/C
这道题有6800多人通过，怎么看也不算是难题，但是我做了一上午都没能AC。最后又苦思冥想了很久，才最终做出来。做出来之后的第一感觉就是这道题太牛了，值得一说，算是那种谁都能看懂题意，都能想想办法，但是能做出来很不容易的问题。

还是一如既往的codeforces赛题的风格，不严格考察算法，你做不出来大概率不]]></description><category></category></item><item><title><![CDATA[从抽象类开始，详解责任链模式]]></title><link>https://blog.youkuaiyun.com/TechFlow/article/details/108947816</link><guid>https://blog.youkuaiyun.com/TechFlow/article/details/108947816</guid><author>TechFlow</author><pubDate>Wed, 07 Oct 2020 09:59:01 +0800</pubDate><description><![CDATA[大家好，欢迎大家阅读设计模式专题。
今天我们继续介绍新的设计模式，和上次的链式模式不同，这一次要介绍的责任链模式不仅仅在Python当中有，在很多其他的语言当中同样支持，比如Java。Python和Java当中的这个设计模式是完全一样的，没有任何区别。
和之前介绍的设计模式相比，今天介绍的设计模式同样不难。我们非常容易想明白它的原理。
责任链
在我们日常的开发当中，经常会有上下游的依赖，比如当前我们需要开发一份新的数据，需要用到上游的某一份老数据才能生成。这时候需要我们写一个接口，然后上游也随之改造，把它们]]></description><category></category></item><item><title><![CDATA[matplotlib绘图教程，设置标签与图例]]></title><link>https://blog.youkuaiyun.com/TechFlow/article/details/108936564</link><guid>https://blog.youkuaiyun.com/TechFlow/article/details/108936564</guid><author>TechFlow</author><pubDate>Tue, 06 Oct 2020 10:00:03 +0800</pubDate><description><![CDATA[大家好，欢迎大家阅读周四数据处理专题，我们继续介绍matplotlib作图工具。
在上一篇文章当中我们介绍了matplotlib这个包当中颜色、标记和线条这三种画图的设置，今天我们同样也介绍三种新的设置。分别是标题、轴标签以及图例，这三个内容也是非常实用并且常用的。颜色、线条、标记这些设置的是图像本身的一些属性，而标题、轴标签这些数据是额外提供的补充数据，所以这两者的内在逻辑是不同的。
设置标题
和公众号一样，图像的标题也很重要，它直接告诉我们这幅图表达的内容。举个例子来说你画了logistics的函数图像]]></description><category></category></item><item><title><![CDATA[ACMer不得不会的线段树，究竟是种怎样的数据结构？]]></title><link>https://blog.youkuaiyun.com/TechFlow/article/details/108926218</link><guid>https://blog.youkuaiyun.com/TechFlow/article/details/108926218</guid><author>TechFlow</author><pubDate>Mon, 05 Oct 2020 10:15:37 +0800</pubDate><description><![CDATA[大家好，欢迎阅读算法数据结构专题，今天我们来聊聊一个新的数据结构，叫做线段树。
线段树这个数据结构很多人可能会有点蒙，觉得没有听说过，但是它非常非常有名，尤其是在竞赛圈，可以说是竞赛圈的必备技能。所以如果以后遇到有人看了一点算法导论就在你面前装逼，你就可以问他：请问线段树更新的复杂度是多少？
不过如果你会线段树，你也要小心一点，最好不要在面试的时候随便透露你会这个算法。否则面试官一下子就会知道你是圈里人，然后你会发现你后面的面试问题比之前好像难不少。当然也有可能遇到面试官自己不会，为了防止尴尬强行让你用非线]]></description><category></category></item><item><title><![CDATA[详解SVM模型——核函数是怎么回事]]></title><link>https://blog.youkuaiyun.com/TechFlow/article/details/108899795</link><guid>https://blog.youkuaiyun.com/TechFlow/article/details/108899795</guid><author>TechFlow</author><pubDate>Fri, 02 Oct 2020 09:22:20 +0800</pubDate><description><![CDATA[大家好，欢迎大家阅读周二机器学习专题，今天的这篇文章依然会讲SVM模型。
也许大家可能已经看腻了SVM模型了，觉得我是不是写不出新花样来，翻来覆去地炒冷饭。实际上也的确没什么新花样了，不出意外的话这是本专题最后一篇文章了。下周我们就要开始深度学习之旅了，我相信很多同学期待这一天已经很久了，实际上我也一样，因为这个专题里讲的大部分内容已经只在面试环节会用到，而我已经很久没有面试了。所以让我们收拾一下激动的心情，来把SVM最后剩下的一点内容讲完。
虽然只剩下最后一点内容了，但是今天的内容非常重要，可以说是SVM]]></description><category></category></item></channel></rss>