<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[菜鸡瞎讲]]></title><description><![CDATA[矮油！一个菜鸡在瞎讲]]></description><link>https://blog.youkuaiyun.com/zzk1995</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; zzk1995]]></copyright><item><title><![CDATA[OpenBLAS矩阵乘法源码结构分析]]></title><link>https://blog.youkuaiyun.com/zzk1995/article/details/70991878</link><guid>https://blog.youkuaiyun.com/zzk1995/article/details/70991878</guid><author>zzk1995</author><pubDate>Sun, 30 Apr 2017 02:11:54 +0800</pubDate><description><![CDATA[用于记录阅读分析OpenBLAS源代码的各种知识点，防止遗忘。这里主要记录OpenBLAS的代码结构，因为确实比较复杂，直接看源代码很可能比较蒙比，如果知道其结构，看起来就比较轻松了。至于OpenBLAS矩阵乘法的算法，这篇不涉及，我会在另一篇文章中简单（瞎jb）分析。OpenBLAS代码总体上可以分成三个层次：1.接口层 
 在OpenBLAS接口层中，运算又分为三个类型，分别是level1到3，]]></description><category></category></item><item><title><![CDATA[tensorflow的数据输入]]></title><link>https://blog.youkuaiyun.com/zzk1995/article/details/54292859</link><guid>https://blog.youkuaiyun.com/zzk1995/article/details/54292859</guid><author>zzk1995</author><pubDate>Mon, 09 Jan 2017 20:57:29 +0800</pubDate><description><![CDATA[tensorflow有两种数据输入方法，比较简单的一种是使用feed_dict，这种方法在画graph的时候使用placeholder来站位，在真正run的时候通过feed字典把真实的输入传进去。比较简单不再介绍。比较恼火的是第二种方法，直接从文件中读取数据（其实第一种也可以我们自己从文件中读出来之后使用feed_dict传进去，但方法二tf提供很完善的一套类和函数形成一个类似pipeline一样的]]></description><category></category></item><item><title><![CDATA[scrapy爬取使用jsonp技术的网页]]></title><link>https://blog.youkuaiyun.com/zzk1995/article/details/52160179</link><guid>https://blog.youkuaiyun.com/zzk1995/article/details/52160179</guid><author>zzk1995</author><pubDate>Tue, 09 Aug 2016 10:10:21 +0800</pubDate><description><![CDATA[爬取bilibili的视频页面时，发现一个问题，就是up主、视频title、视频超链接等都能爬取到，但是却无法直接爬取到其播放量、硬币数等等参数，通过抓包我们可以发现，bilibili.com直接返回的html页面中，这几个我们比较关心的参数都没有被渲染进来：<div class="v-title-info">
            <div class="v-title-line"><i cla]]></description><category></category></item><item><title><![CDATA[安装scrapy各种问题]]></title><link>https://blog.youkuaiyun.com/zzk1995/article/details/51924510</link><guid>https://blog.youkuaiyun.com/zzk1995/article/details/51924510</guid><author>zzk1995</author><pubDate>Sat, 16 Jul 2016 15:03:21 +0800</pubDate><description><![CDATA[安装scrapy最简单的还是通过pip插件，叫他自己安装，因为scrapy涉及到的python库实在是太多了，依赖非常复杂，不过就算是pip插件，在安装的时候也会出现各种问题，下面介绍下本渣遇到过的几个问题：1.首先是最恼火的Unable to find vcvarsall.bat这个问题的原因主要是python通过环境变量找到的编译器和本机安装的版本不同。解决方法可以使用这个（前提是装过vc++，]]></description><category></category></item><item><title><![CDATA[scrapy-redis分布式爬虫原理分析]]></title><link>https://blog.youkuaiyun.com/zzk1995/article/details/51786558</link><guid>https://blog.youkuaiyun.com/zzk1995/article/details/51786558</guid><author>zzk1995</author><pubDate>Wed, 29 Jun 2016 23:01:24 +0800</pubDate><description><![CDATA[scrapy是python的一个非常好用的爬虫库，功能非常强大，但是当我们要爬取的页面非常多的时候，单个主机的处理能力就不能满足我们的需求了（无论是处理速度还是网络请求的并发数），这时候分布式爬虫的优势就显现出来，人多力量大。而scrapy-redis就是结合了分布式数据库redis，重写了scrapy一些比较关键的代码，将scrapy变成一个可以在多个主机上同时运行的分布式爬虫。 
scrapy-]]></description><category></category></item><item><title><![CDATA[Python中的defer库]]></title><link>https://blog.youkuaiyun.com/zzk1995/article/details/51747688</link><guid>https://blog.youkuaiyun.com/zzk1995/article/details/51747688</guid><author>zzk1995</author><pubDate>Thu, 23 Jun 2016 23:48:43 +0800</pubDate><description><![CDATA[说到defer库，就必须先提到python中的一个比较特别的网络库twisted。 
他与其他网络库不同的地方在于，对于很多用连接的并发，他不会使用多线程去实现。比如网络库同时发出10个请求，对于一般的多线程网络库，就会初始化10个线程，每个线程负责一个连接。当一个线程遇到了耗时操作（比如发出request之后等待response，或者向本地磁盘写数据），他就会阻塞。多线程网络库的问题在于，大量的线]]></description><category></category></item><item><title><![CDATA[python实现线程池]]></title><link>https://blog.youkuaiyun.com/zzk1995/article/details/51661073</link><guid>https://blog.youkuaiyun.com/zzk1995/article/details/51661073</guid><author>zzk1995</author><pubDate>Mon, 13 Jun 2016 22:17:37 +0800</pubDate><description><![CDATA[参照c++的线程池，使用python的threading库实现线程池。import threading
import time
# 线程池的任务，包含一个可调用对象和一个参数数组
class ThreadTask(object):
    def __init__(self, job, args=list()):
        self.task = job
        self.args =]]></description><category></category></item><item><title><![CDATA[爬虫出现Forbidden by robots.txt]]></title><link>https://blog.youkuaiyun.com/zzk1995/article/details/51628205</link><guid>https://blog.youkuaiyun.com/zzk1995/article/details/51628205</guid><author>zzk1995</author><pubDate>Fri, 10 Jun 2016 18:39:49 +0800</pubDate><description><![CDATA[先说结论，关闭scrapy自带的ROBOTSTXT_OBEY功能，在setting找到这个变量，设置为False即可解决。 
使用scrapy爬取淘宝页面的时候，在提交http请求时出现debug信息Forbidden by robots.txt，看来是请求被拒绝了。开始因为是淘宝页面有什么保密机制，防止爬虫来抓取页面，于是在spider中填入各种header信息，伪装成浏览器，结果还是不行。。。用]]></description><category></category></item><item><title><![CDATA[安装lxml时出现 Unable to find vcvarsall.bat]]></title><link>https://blog.youkuaiyun.com/zzk1995/article/details/51592339</link><guid>https://blog.youkuaiyun.com/zzk1995/article/details/51592339</guid><author>zzk1995</author><pubDate>Sun, 05 Jun 2016 23:21:21 +0800</pubDate><description><![CDATA[被这个错误搞了一下午，出这个错误一般都是安装scrapy图中安装lxml出错的，网上很多资料都说是没有安装vc 2008导致缺少组件便以失败，解决方法是安装vc2008或者安装mingw，试了一下都没效果，可能我这边环境比较复杂。最后知乎上看见一个解决方法比较简单： 
http://www.zhihu.com/question/26857761 
就是首先用pip安装wheel，但后直接下载版本对应]]></description><category></category></item><item><title><![CDATA[数据库中乐观锁与悲观锁的概念]]></title><link>https://blog.youkuaiyun.com/zzk1995/article/details/51292193</link><guid>https://blog.youkuaiyun.com/zzk1995/article/details/51292193</guid><author>zzk1995</author><pubDate>Sun, 01 May 2016 22:50:42 +0800</pubDate><description><![CDATA[作者：ChenLuLouis 
出处：http://www.cnblogs.com/chenlulouis/ 
本文版权归作者和博客园共有，欢迎转载，但未经作者同意必须保留此段声明，且在文章页面明显位置给出原文连接，否则保留追究法律责任的权利。 
该文章也同时发布在我的独立博客中-chenlulouisBlog。锁（ locking ）业务逻辑的实现过程中，往往需要保证数据访问的排他性。如在金融系统]]></description><category></category></item><item><title><![CDATA[UE4的NetWork简单原理]]></title><link>https://blog.youkuaiyun.com/zzk1995/article/details/50266729</link><guid>https://blog.youkuaiyun.com/zzk1995/article/details/50266729</guid><author>zzk1995</author><pubDate>Fri, 11 Dec 2015 17:34:27 +0800</pubDate><description><![CDATA[UE4内部封装实现了大量和网络相关的代码，使得我们不需要再自行编写很多底层的网络同步代码了（连接主机，套接字传输等等）。我们只需要实现相关的函数接口，并进行一定的设置，就可以实现网络游戏的功能了。 
下面先讲讲UE4NetWork的几个要点： 
*1.UE的网络同步和Replicate密切相关，从字面上理解，就是Server到Client的信息同步。 
2.大部分的自动化Replicate都是Ser]]></description><category></category></item><item><title><![CDATA[error c2678解决方法]]></title><link>https://blog.youkuaiyun.com/zzk1995/article/details/50111641</link><guid>https://blog.youkuaiyun.com/zzk1995/article/details/50111641</guid><author>zzk1995</author><pubDate>Mon, 30 Nov 2015 14:01:58 +0800</pubDate><description><![CDATA[使用UE4时发生 
error C2678: binary ‘==’ : no operator found which takes a left-hand operand of type ‘const HUDMessage’ (or there is no acceptable conversion)最后可以定位到这里int32 Find(const ElementType& Item) cons]]></description><category></category></item><item><title><![CDATA[UE4简单巡逻BehaviorTree的构建]]></title><link>https://blog.youkuaiyun.com/zzk1995/article/details/49995297</link><guid>https://blog.youkuaiyun.com/zzk1995/article/details/49995297</guid><author>zzk1995</author><pubDate>Mon, 23 Nov 2015 15:05:29 +0800</pubDate><description><![CDATA[上次我们搞了一个C++的AI代码初始化，但是只有C++初始化，AI是不会行动的。这次我们接着初始化之后的步骤，搞一个可以简单巡逻并且发现玩家之后会追踪的简单AI逻辑。 
主要逻辑如下： 
1.平时按照固定路线巡逻 
2.发现玩家之后，追踪玩家 
3.拾取玩家视野之后，继续追踪最后一次看见的位置几秒，之后放弃 
4.放弃之后，继续按照原路线巡逻 
5.如果听到声音，警惕地向声音发生处张望几秒 
6.张]]></description><category></category></item><item><title><![CDATA[UE4实用类PawnSensingComponent简介]]></title><link>https://blog.youkuaiyun.com/zzk1995/article/details/49967177</link><guid>https://blog.youkuaiyun.com/zzk1995/article/details/49967177</guid><author>zzk1995</author><pubDate>Sat, 21 Nov 2015 19:56:26 +0800</pubDate><description><![CDATA[PawnSensingComponent是涉及AI编程时候的常用类，实现了很多强大的功能，对于AI感知帮助很大。 
主要功能有 
1.AI的视觉，是一个锥形感知体。 
2.AI的听觉，主要与距离和声音大小有关，与遮挡物也有关。首先介绍一下AI的视觉方面吧，PawnSensingComponent的初始化很简单，在类内声明一个PawnSensingComponent字段，之后this->sensing]]></description><category></category></item><item><title><![CDATA[UE4的Cast方法与类型转化]]></title><link>https://blog.youkuaiyun.com/zzk1995/article/details/49877469</link><guid>https://blog.youkuaiyun.com/zzk1995/article/details/49877469</guid><author>zzk1995</author><pubDate>Tue, 17 Nov 2015 00:48:41 +0800</pubDate><description><![CDATA[UE4中，我们经常会用到Cast函数，作用是强制转化一个指针到我们需要的类型，并且如果不能强制转化，就会返回nullptr。通过判断转换之后是不是nullptr，我们也能实现很多有用的功能（比如用于判断子弹击中的到底是什么） 
那么Cast到底是如何实现的呢？要看Cast，首先要看到一个类型，叫做UClass，他是实现UE类型识别的重要类型。 
我们经常打交道的类型都是继承自UObjectBase的]]></description><category></category></item><item><title><![CDATA[学习一个WinAPI实现的线程基类]]></title><link>https://blog.youkuaiyun.com/zzk1995/article/details/49857847</link><guid>https://blog.youkuaiyun.com/zzk1995/article/details/49857847</guid><author>zzk1995</author><pubDate>Mon, 16 Nov 2015 00:49:44 +0800</pubDate><description><![CDATA[这个基类通过调用WinAPI的方法，编写了一个可以管理线程的基类，功能和用法都很基础，但是对理解线程的工作很有帮助。 
h文件：#include <windows.h>
static DWORD WINAPI threadFunction(LPVOID);
class Thread {
    friend DWORD WINAPI threadFunction(LPVOID);
public:]]></description><category></category></item><item><title><![CDATA[UE4的Collision与Physics]]></title><link>https://blog.youkuaiyun.com/zzk1995/article/details/49027793</link><guid>https://blog.youkuaiyun.com/zzk1995/article/details/49027793</guid><author>zzk1995</author><pubDate>Sat, 10 Oct 2015 18:43:36 +0800</pubDate><description><![CDATA[Collision和Physics都是各种Mesh的属性，和Unity3D很像，Collision和Physics是两个独立的Component，Collision仅仅掌管碰撞发生的检测和回调，而Physics仅仅模拟碰撞发生之后位置速度等等的变化，可见Collision似乎用处更大一点。比如Collision可以设置各种perset，里边的标签都是不同的碰撞处理逻辑，但是本质上都是一些channe]]></description><category></category></item><item><title><![CDATA[UE4的射线拾取]]></title><link>https://blog.youkuaiyun.com/zzk1995/article/details/49010999</link><guid>https://blog.youkuaiyun.com/zzk1995/article/details/49010999</guid><author>zzk1995</author><pubDate>Sat, 10 Oct 2015 00:23:16 +0800</pubDate><description><![CDATA[Ray-Trace作用于射线拾取。射线拾取主要相关 
1.拾取函数是UWorld的多个方法。比如LineTraceSingle是单一拾取，拾取到一个之后就不继续穿透了，而LineTraceMulti会拾取多个目标。 
2.射线拾取的主要参数有拾取开始点，结束点，拾取结果（一个FHitResult类型的引用，相当于返回值）拾取的碰撞通道和一个FCollisionQueryParams类型的参数。这个F]]></description><category></category></item><item><title><![CDATA[UE4的MaterialInstance作用]]></title><link>https://blog.youkuaiyun.com/zzk1995/article/details/49010963</link><guid>https://blog.youkuaiyun.com/zzk1995/article/details/49010963</guid><author>zzk1995</author><pubDate>Sat, 10 Oct 2015 00:21:19 +0800</pubDate><description><![CDATA[我们经常会在游戏中看到Materials，但是还有一种数据结构名字叫做MaterialInstance。其实不少游戏的Mesh指认的都是MaterialInstance而不是Materials，为什么呢？1.Materials和MaterialInstance都可以指认给Mesh 
2.Materials是在游戏运行之前编译好了的，而想要修改Materials的内部参数（比如动态修改其基本色，法线贴]]></description><category></category></item><item><title><![CDATA[UE4的AI c++代码初始化]]></title><link>https://blog.youkuaiyun.com/zzk1995/article/details/49010947</link><guid>https://blog.youkuaiyun.com/zzk1995/article/details/49010947</guid><author>zzk1995</author><pubDate>Sat, 10 Oct 2015 00:19:58 +0800</pubDate><description><![CDATA[AI的行动主要逻辑位于BehaviorTree内，AI的主要行动实现主要位于AIController中，而AI的记忆主要位于Blackboard内。下面是一些基本概念：1.BehaviorTree内部含有一个成员是Blackboard。所以我们一般只给一个AICharacter内部设置一个成员BehaviorTree就行了，而在Editor内把Blackboard指认给BehaviorTree。2.]]></description><category></category></item></channel></rss>