<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[efffg的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/efffg</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; efffg]]></copyright><item><title><![CDATA[人工智能鉴黄]]></title><link>https://blog.youkuaiyun.com/efffg/article/details/86977396</link><guid>https://blog.youkuaiyun.com/efffg/article/details/86977396</guid><author>efffg</author><pubDate>Mon, 11 Feb 2019 09:57:33 +0800</pubDate><description><![CDATA[从2107年开始，人工智能在鉴黄领域的表现就已经得到验证，通过搭建一个常用的CNN模型，经过一定时期的训练我们就可以得到一个还不错的人工智能鉴黄模型。

网上有一些开源的鉴黄项目，比如yahoo NFSW，但是研究一番之后我们就会发现，其实用性并不强无法解决实际问题。所以我们需要建立自己的模型并训练他们。

1.收集样本

要想训练模型就需要大量的样本，而大量的样本收集往往占据了我们绝大部分的时间...]]></description><category></category></item><item><title><![CDATA[C#开发添加后缀名工具之新建项目窗体结构]]></title><link>https://blog.youkuaiyun.com/efffg/article/details/75797945</link><guid>https://blog.youkuaiyun.com/efffg/article/details/75797945</guid><author>efffg</author><pubDate>Sat, 22 Jul 2017 18:56:04 +0800</pubDate><description><![CDATA[1.新建项目

2.选择C#，如图




3.进去之后默认会有一个Form窗体


4.直接点击启动可以运行，




可以看见出现一个空的窗口


4.使用工具箱向窗体中加入控件，比如加入一个Lable用于显示基本信息


添加之后：




我们可以把窗体拉大一点




点击lable,右侧会出现属性框，找到Text属性可修改内]]></description><category></category></item><item><title><![CDATA[数据库SQL优化大总结之 百万级数据库优化方案]]></title><link>https://blog.youkuaiyun.com/efffg/article/details/68953775</link><guid>https://blog.youkuaiyun.com/efffg/article/details/68953775</guid><author>efffg</author><pubDate>Sun, 02 Apr 2017 20:12:25 +0800</pubDate><description><![CDATA[网上关于SQL优化的教程很多，但是比较杂乱。近日有空整理了一下，写出来跟大家分享一下，其中有错误和不足的地方，还请大家纠正补充。

这篇文章我花费了大量的时间查找资料、修改、排版，希望大家阅读之后，感觉好的话推荐给更多的人，让更多的人看到、纠正以及补充。

1.对查询进行优化，要尽量避免全表扫描，首先应考虑在 where 及 order by 涉及的列上建立索引。



2.应尽量]]></description><category></category></item><item><title><![CDATA[C++ 多态]]></title><link>https://blog.youkuaiyun.com/efffg/article/details/53575678</link><guid>https://blog.youkuaiyun.com/efffg/article/details/53575678</guid><author>efffg</author><pubDate>Sun, 11 Dec 2016 21:29:16 +0800</pubDate><description><![CDATA[C++ 多态

多态按字面的意思就是多种形态。当类之间存在层次结构，并且类之间是通过继承关联时，就会用到多态。

C++ 多态意味着调用成员函数时，会根据调用函数的对象的类型来执行不同的函数。

下面的实例中，基类 Shape 被派生为两个类，如下所示：
#include  
using namespace std;
 
class Shape {
   protected:
   ]]></description><category></category></item><item><title><![CDATA[内核中双向循环列表]]></title><link>https://blog.youkuaiyun.com/efffg/article/details/50286647</link><guid>https://blog.youkuaiyun.com/efffg/article/details/50286647</guid><author>efffg</author><pubDate>Sun, 13 Dec 2015 21:28:54 +0800</pubDate><description><![CDATA[链表是一种重要的数据结构，应用的非常广泛。链表分为单向链表与双向链表，一般的实现就是在结构体中内嵌指向下一个元素的指针。例如：



[cpp] view
 plaincopy






struct name ｛  
    int num;  
    ...;  
    struct name *next;  
    struct name *prev;]]></description><category></category></item><item><title><![CDATA[为什么要把bss段清0]]></title><link>https://blog.youkuaiyun.com/efffg/article/details/50018993</link><guid>https://blog.youkuaiyun.com/efffg/article/details/50018993</guid><author>efffg</author><pubDate>Tue, 24 Nov 2015 21:38:47 +0800</pubDate><description><![CDATA[全局变量与静态变量没有初始化或初始化值为0时，都会放在.bss段。初始化为非0值，则放在.data段。
全局变量与静态变量没有初始化或初始化值为0时，都放在.bss段会产生一个问题：假如说我们定义一个全局的变量 int a = 0;我们知道这是一个初始化值为0 的全局变量，那么他会被放在.bss段，由于存储在bss段内的数据在下一次启动代码时不会被自动的重新初始化为0（即bss段清0），这就可能]]></description><category></category></item><item><title><![CDATA[ARM7的三级流水线过程]]></title><link>https://blog.youkuaiyun.com/efffg/article/details/49933177</link><guid>https://blog.youkuaiyun.com/efffg/article/details/49933177</guid><author>efffg</author><pubDate>Thu, 19 Nov 2015 20:19:38 +0800</pubDate><description><![CDATA[ARM正在执行第1条指令的同时对第2条指令进行译码，并将第3条指令从存储器中取出。

看到汇编中很多关于程序返回与中断返回时处理地址都很特别，仔细想想原来是流水线作用的效果。所以，决定总结学习下ARM流水线。

ARM7处理器采用3级流水线来增加处理器指令流的速度，能提供0.9MIPS/MHz的指令处理速度。

PS:

MIPS（Million Instruction Per S]]></description><category></category></item><item><title><![CDATA[typedef函数]]></title><link>https://blog.youkuaiyun.com/efffg/article/details/49430575</link><guid>https://blog.youkuaiyun.com/efffg/article/details/49430575</guid><author>efffg</author><pubDate>Mon, 26 Oct 2015 22:07:44 +0800</pubDate><description><![CDATA[typedef
下面是三个变量的声明，我想使用typdef分别给它们定义一个别名，请问该如何做？
>1：int *(*a[5])(int, char*);
>2：void (*b[10]) (void (*)());
>3. doube(* (*pa)[9])();
答案与分析：
对复杂变量建立一个类型别名的方法很简单，你只要在传统的变量声明表达式里用类型名替代变量名，然后把关键字ty]]></description><category></category></item><item><title><![CDATA[TCP/IP传输层]]></title><link>https://blog.youkuaiyun.com/efffg/article/details/49404327</link><guid>https://blog.youkuaiyun.com/efffg/article/details/49404327</guid><author>efffg</author><pubDate>Sun, 25 Oct 2015 16:20:26 +0800</pubDate><description><![CDATA[1. 传输层的主要功能是什么？
2. 传输层如何区分不同应用程序的数据流？
3. 传输层有哪些协议？
4. 什么是UDP协议？
5. 为什么有了UDP，还需要TCP？
6. 什么是TCP协议？
7. 怎么理解协议和程序？
8. TCP是否真的有链接？
9. 链接是如何建立的（逻辑上）？
10. 所谓的建立TCP链接开销很大，具体是指什么？
11. 三次握手的目的是什么？
12]]></description><category></category></item><item><title><![CDATA[TCP/IP网络层]]></title><link>https://blog.youkuaiyun.com/efffg/article/details/49404317</link><guid>https://blog.youkuaiyun.com/efffg/article/details/49404317</guid><author>efffg</author><pubDate>Sun, 25 Oct 2015 16:19:23 +0800</pubDate><description><![CDATA[网络层的作用？网络层有哪些协议？IP数据包的格式？IP数据包传输的过程？为什么需要ARP协议？ARP协议通信过程是怎么样的？（ARP协议如何控制网络？）数据包的最大值？（分片的地方？分片重组的地方？分片的原则？）数据包在局域网内怎么从一台主机传送到另外一台主机？数据怎么实现跨网段传输？（路由如何实现跨网段传输？）什么是默认网关？代理ARP的作用？数据跨网段传输时在路由器中的具体情形？（所谓的穿过路]]></description><category></category></item><item><title><![CDATA[有10000个正整数，取值范围在1到1000之间，找出从小到大排在第3400（从0算起）的那个数，将此数的值返回，要求不使用排序实现]]></title><link>https://blog.youkuaiyun.com/efffg/article/details/49205541</link><guid>https://blog.youkuaiyun.com/efffg/article/details/49205541</guid><author>efffg</author><pubDate>Sat, 17 Oct 2015 17:23:59 +0800</pubDate><description><![CDATA[#include <stdio.h>int numbers[10001] = {0,888,151,333,333,333,88,88}; //initialize 10000 number with range 1 - 1000int count[1001] ={0};#define ORDER 3041int main()
{
    //your code.
    int i,j;]]></description><category></category></item><item><title><![CDATA[C++中函数调用时的三种参数传递方式]]></title><link>https://blog.youkuaiyun.com/efffg/article/details/49201153</link><guid>https://blog.youkuaiyun.com/efffg/article/details/49201153</guid><author>efffg</author><pubDate>Sat, 17 Oct 2015 09:44:48 +0800</pubDate><description><![CDATA[在C++中，参数传递的方式是“实虚结合”。按值传递(pass by value)
地址传递(pass by pointer)
引用传递(pass by reference)
按值传递的过程为：首先计算出实参表达式的值，接着给对应的形参变量分配一个存储空间，该空间的大小等于该形参类型的，然后把以求出的实参表达式的值一一存入到形参变量分配的存储空间中，成为形参变量的初值，供被调用函数执行时使用。这种传递]]></description><category></category></item><item><title><![CDATA[关于C语言中函数调用和参数传递机制的探讨--汇编]]></title><link>https://blog.youkuaiyun.com/efffg/article/details/49187771</link><guid>https://blog.youkuaiyun.com/efffg/article/details/49187771</guid><author>efffg</author><pubDate>Sat, 17 Oct 2015 00:11:56 +0800</pubDate><description><![CDATA[函数，相信许多人也知道其重要性；一个文件往往由一个或者多个函数构成的。然而可能许多人还不知道函数调用的一些深层问题，所以我写的这篇文章一来是应了一个好朋友的要求而写，二来希望一些朋友能够从我这篇文章了解函数调用的机制。但是并不是每个人都可以完全读懂这文章，想完全读懂此文，我想必须具备三个条件：
一、对于C语言有一定的了解，最起码有一个整体的初步了解；
  二、能够读懂UNIX/LINUX下的A]]></description><category></category></item><item><title><![CDATA[函数调用方式——_stdcall与_cdecl的区别(函数调用方式)]]></title><link>https://blog.youkuaiyun.com/efffg/article/details/49187363</link><guid>https://blog.youkuaiyun.com/efffg/article/details/49187363</guid><author>efffg</author><pubDate>Fri, 16 Oct 2015 23:52:25 +0800</pubDate><description><![CDATA[1.       _cdecl 
(1). 是C Declaration的缩写，表示C语言默认的函数调用方法，实际上也是C++的默认的函数调用方法。
(2). 所有参数从右到左依次入栈，这些参数由调用者清除，称为手动清栈。具体所示：调用方的函数调用->被调用函数的执行->被调用函数的结果返回->调用方清除调整堆栈。
(3). 被调用函数无需要求调用者传递多少参数，调用者传递过多或者过少的参数]]></description><category></category></item><item><title><![CDATA[判断大小端问题]]></title><link>https://blog.youkuaiyun.com/efffg/article/details/49186875</link><guid>https://blog.youkuaiyun.com/efffg/article/details/49186875</guid><author>efffg</author><pubDate>Fri, 16 Oct 2015 23:29:04 +0800</pubDate><description><![CDATA[下面的两个程序均可判断CPU的大小端问题

inti=1;  
    char*p=(char*)&i;  
   if(*p==1)    
          printf("Little_endian");  //Little_endian
   else
          printf("Big_endian");  //Big_endian
         大小端存]]></description><category></category></item><item><title><![CDATA[嵌入式软件开发过程--编译、链接和定址]]></title><link>https://blog.youkuaiyun.com/efffg/article/details/49130627</link><guid>https://blog.youkuaiyun.com/efffg/article/details/49130627</guid><author>efffg</author><pubDate>Wed, 14 Oct 2015 20:35:04 +0800</pubDate><description><![CDATA[把你的嵌入式软件的源代码表述转换为可执行的二进制映像的过程， 包括三个截然不同的步骤。首先，每一个源文件都必须被编译或汇编到一个目标文件（ object file）。然后．第一步产生的所有目标文件要被链接成一个目标文件，它叫做可重定位程序 （ relocatable program）。最后， 在一个称为重定址 （ relocation）的过程中，要把物理存储器地址指定给可重定位程序里的每个相对偏移]]></description><category></category></item></channel></rss>