<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[goodstudy168的专栏]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/goodstudy168</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; goodstudy168]]></copyright><item><title><![CDATA[linux64位系统编译32位程序的问题]]></title><link>https://blog.youkuaiyun.com/goodstudy168/article/details/103715450</link><guid>https://blog.youkuaiyun.com/goodstudy168/article/details/103715450</guid><author>goodstudy168</author><pubDate>Thu, 26 Dec 2019 14:54:41 +0800</pubDate><description><![CDATA[今天将原来一个64位的程序改编译成32位程序，而我的linux系统是64位的，编译时报错了

Error:：/usr/include/features.h:324:26: fatal error: bits/predefs.h: No such file or directory

解决办法：


sudo apt-get install gcc-multilib

附上链接：

https://...]]></description><category></category></item><item><title><![CDATA[排序算法-快速排序]]></title><link>https://blog.youkuaiyun.com/goodstudy168/article/details/102522828</link><guid>https://blog.youkuaiyun.com/goodstudy168/article/details/102522828</guid><author>goodstudy168</author><pubDate>Sun, 13 Oct 2019 21:06:49 +0800</pubDate><description><![CDATA[今天复习的是快速排序，快速排序是一种不稳定的排序。原理见度娘：

原理

设要排序的数组是A[0]……A[N-1]，首先任意选取一个数据（通常选

用数组的第一个数）作为关键数据，然后将所有比它小的数都放到它左边，所有比它大的数都放到它右边，这个过程称为一趟快速排序。值得注意的是，快速排序不是一种稳定的排序算法，也就是说，多个相同的值的相对位置也许会在算法结束时产生变动。[1]

一趟快速排序...]]></description><category></category></item><item><title><![CDATA[排序算法-选择排序]]></title><link>https://blog.youkuaiyun.com/goodstudy168/article/details/102494903</link><guid>https://blog.youkuaiyun.com/goodstudy168/article/details/102494903</guid><author>goodstudy168</author><pubDate>Fri, 11 Oct 2019 09:28:51 +0800</pubDate><description><![CDATA[昨天因工作太多，没有时间去复习。在还没有上班前，有点时间，去实现一个选择排序算法。

排序算法的原理很简单，就是每次从需要排序的数组中选出最小（大）的数据插入到排好序的数组中。但为是节省空间，一般都是在原数组的空间上直接操作，省去新开辟空间及空间之间的copy。

直接上代码：


#include &lt;iostream&gt;

using namespace std;

//选择排序算法
...]]></description><category></category></item><item><title><![CDATA[排序算法-插入排序]]></title><link>https://blog.youkuaiyun.com/goodstudy168/article/details/102455772</link><guid>https://blog.youkuaiyun.com/goodstudy168/article/details/102455772</guid><author>goodstudy168</author><pubDate>Wed, 09 Oct 2019 17:05:17 +0800</pubDate><description><![CDATA[本篇复习的是插入排序。见度娘的原理：

直接插入排序的算法思路：

（1） 设置监视哨r[0]，将待插入记录的值赋值给r[0]；

（2） 设置开始查找的位置j；

（3） 在数组中进行搜索，搜索中将第j个记录后移，直至r[0].key≥r[j].key为止；

（4） 将r[0]插入r[j+1]的位置上。


#include &lt;iostream&gt;

using namespace ...]]></description><category></category></item><item><title><![CDATA[排序算法-冒泡排序]]></title><link>https://blog.youkuaiyun.com/goodstudy168/article/details/102409799</link><guid>https://blog.youkuaiyun.com/goodstudy168/article/details/102409799</guid><author>goodstudy168</author><pubDate>Tue, 08 Oct 2019 20:43:51 +0800</pubDate><description><![CDATA[今天是国庆上班回来的第一天，心还没办法收敛，还是想着玩，哈哈。完全不在状态，感觉一天效率极差，需要静下心去做点事。无意中看到别人的一篇博客，于是突发奇想，不如写写数据结构的知识吧，虽然日常见到这类博客很多，觉得没太大的新鲜味道。为了静下心来，同时当复习多年前学习过且日常离不开的知识，后面每天一练。加油！！！

现在复习的第一篇是冒泡排序算法，算法原理比较简单，见度娘的解释：

冒泡排序算法的原理如...]]></description><category></category></item><item><title><![CDATA[hadoop集群环境动态增加datanode]]></title><link>https://blog.youkuaiyun.com/goodstudy168/article/details/101778668</link><guid>https://blog.youkuaiyun.com/goodstudy168/article/details/101778668</guid><author>goodstudy168</author><pubDate>Mon, 30 Sep 2019 17:10:57 +0800</pubDate><description><![CDATA[一、当前环境状况介绍

目前我的环境上总共有2个namenode和7个datanode，现在想增加更多的机器（其实就是一堆老旧残的机器，随时都可能有生命危险，哈哈）。



上图是我目前的7个datanode节点，我希望有机器增加了，增加多一台storage155。

二、前期工作

1、保证增加的节点与主节点ssh互通

使用ssh-keygen生成本地的rsa-key，或者自己手工在home目...]]></description><category></category></item><item><title><![CDATA[关于logstash的坑，求解]]></title><link>https://blog.youkuaiyun.com/goodstudy168/article/details/101674748</link><guid>https://blog.youkuaiyun.com/goodstudy168/article/details/101674748</guid><author>goodstudy168</author><pubDate>Sun, 29 Sep 2019 16:18:18 +0800</pubDate><description><![CDATA[这两天出现一个小事故，是logstash读取文件信息输出到kafka，因为topic没有创建，而导致所有的topic都没有数据。先将配置文件列出来。


 input {
	file {
		path =&gt; "/data/xx/log/xsec_anti_cheat_d/xsec_anti_cheat_d.log"
		start_position =&gt; "end"
		sincedb...]]></description><category></category></item><item><title><![CDATA[tiny-dnn库初识]]></title><link>https://blog.youkuaiyun.com/goodstudy168/article/details/101466855</link><guid>https://blog.youkuaiyun.com/goodstudy168/article/details/101466855</guid><author>goodstudy168</author><pubDate>Thu, 26 Sep 2019 19:52:13 +0800</pubDate><description><![CDATA[因为最近的一个模型需要使用C++落地，平时使用的是python，在问google中，发现了tiny-dnn，于是着手去研究下这个库。tiny-dnn是一个C++实现的轻量的深度学习库，里面实现了主流的模型代码框架，如DNN、CNN、RNN。主流模型的示例很完整，示例有手写识别、图片分类等常用的深度学习示例。简单了解下代码组织，我们从两方面去看这个库算很完整了。

1、可以支持自定义的网络结构


...]]></description><category></category></item><item><title><![CDATA[matlab内存映射文件操作]]></title><link>https://blog.youkuaiyun.com/goodstudy168/article/details/100666449</link><guid>https://blog.youkuaiyun.com/goodstudy168/article/details/100666449</guid><author>goodstudy168</author><pubDate>Mon, 09 Sep 2019 16:34:24 +0800</pubDate><description><![CDATA[日常我们使用matlab进行模型训练，每次训练需要加载的数据都是比较大，都是千万级别的数据，如果从txt或者csv中读取，需要很长时间，这样很影响读取数据的效率。matlab有自己的方式，将数据文件快速加载到内存中。

写文件：


file = fopen('E:\数据分析\login_00000.csv','r','n','utf-8');
data=textscan(file,'%f %f ...]]></description><category></category></item><item><title><![CDATA[关于multiprocessing的Queue效率问题]]></title><link>https://blog.youkuaiyun.com/goodstudy168/article/details/100121662</link><guid>https://blog.youkuaiyun.com/goodstudy168/article/details/100121662</guid><author>goodstudy168</author><pubDate>Wed, 28 Aug 2019 16:38:07 +0800</pubDate><description><![CDATA[今天大半天都在折腾着一个问题，就是从kafka消费消息后，后面的业务处理一直处理不过来，总是延后几个小时。为了解决这个问题，不断去调试代码，查找到相对耗时的位置，最终定位是Qeueue的问题。先上一段简化版的代码。


#!/usr/bin/env python
#-*- coding:utf-8 -*-
from cachetools import TTLCache
import os
impo...]]></description><category></category></item><item><title><![CDATA[在unbutu上通过man查看C++标准函数库]]></title><link>https://blog.youkuaiyun.com/goodstudy168/article/details/100039253</link><guid>https://blog.youkuaiyun.com/goodstudy168/article/details/100039253</guid><author>goodstudy168</author><pubDate>Fri, 23 Aug 2019 15:36:28 +0800</pubDate><description><![CDATA[在职业生涯初期养成的习惯，所有不清楚的函数用法都问下度娘或者google。除了常用的unix系统的标准函数是通过man进行查询，很少使用man函数去查询标准函数库的函数。今天不知为什么心血来潮，很长一段时间也没有写过C++的代码了（最近几个月都是做着数据分析，都是使用python），今天突然想用C++实现一个功能，于是动手去写，发现很多函数自己都忘记原型了。一个个去问google，想了想，能不能不...]]></description><category></category></item><item><title><![CDATA[kafka的应用场景]]></title><link>https://blog.youkuaiyun.com/goodstudy168/article/details/88841218</link><guid>https://blog.youkuaiyun.com/goodstudy168/article/details/88841218</guid><author>goodstudy168</author><pubDate>Wed, 14 Aug 2019 20:43:15 +0800</pubDate><description><![CDATA[kafka作为一个消息流处理平台。很多开发人员都作它作为一个生产&amp;消费的中间件，并没有细细去思考kafka可以在哪些应用场景中使用，下面根据我的经验，总结下kafka可以应用在以下场景中。

消息队列



这种场景是日常用得最多之一。我日常需要将多台服务器上的日志集中收集到一个点上，通过logstash进行扫描并发到kafka队列中，然后通过消费者程序进行消费写到hbase或者es中。
...]]></description><category></category></item><item><title><![CDATA[IntelliJ IDEA下构建kafka环境与源码编译]]></title><link>https://blog.youkuaiyun.com/goodstudy168/article/details/89164446</link><guid>https://blog.youkuaiyun.com/goodstudy168/article/details/89164446</guid><author>goodstudy168</author><pubDate>Mon, 12 Aug 2019 17:21:52 +0800</pubDate><description><![CDATA[最近希望深入研究下kafka的架构，想了解架构必须去阅读其源码。于是自己动手在IDE下构建一个可运行可调试的kafka环境，下面是构建kafka环境及编译源码。

一、安装jdk


C:\Users\Administrator&gt;java -version
java version "1.8.0_172"
Java(TM) SE Runtime Environment (build 1.8....]]></description><category></category></item><item><title><![CDATA[ubuntu上构建jupyter notebook环境]]></title><link>https://blog.youkuaiyun.com/goodstudy168/article/details/90408467</link><guid>https://blog.youkuaiyun.com/goodstudy168/article/details/90408467</guid><author>goodstudy168</author><pubDate>Tue, 21 May 2019 16:12:53 +0800</pubDate><description><![CDATA[安装conda

在anaconda官网下载https://www.anaconda.com/distribution/，我下载的是Anaconda3-2019.03-Linux-x86_64.sh安装包。在ubuntu终端上直接执行shAnaconda3-2019.03-Linux-x86_64.sh，建议使用root用户进行安装，并在/etc/profile配置全局的conda安装目录的pa...]]></description><category></category></item><item><title><![CDATA[使用flask实现restfulapi]]></title><link>https://blog.youkuaiyun.com/goodstudy168/article/details/90024331</link><guid>https://blog.youkuaiyun.com/goodstudy168/article/details/90024331</guid><author>goodstudy168</author><pubDate>Thu, 09 May 2019 11:39:05 +0800</pubDate><description><![CDATA[今天早上想快速实现几个临时使用的http接口，供其他人调用，之前都是使用java去写的，最近因为都玩着python，第一时间想到使用flask去实现试试，也体验下flask轻量级的框架。

在https://flask-restful.readthedocs.io/en/latest/上快速过了一次示例文档，也在度娘上看了下其他人的例子，但很多都是只写了服务端或者只写了客户端，两端同时实现的示例很...]]></description><category></category></item><item><title><![CDATA[softmax函数python实现]]></title><link>https://blog.youkuaiyun.com/goodstudy168/article/details/89714405</link><guid>https://blog.youkuaiyun.com/goodstudy168/article/details/89714405</guid><author>goodstudy168</author><pubDate>Tue, 30 Apr 2019 18:35:23 +0800</pubDate><description><![CDATA[在实现一个神经网络项目落地代码，使用matlab训练完后，为了配合其他问题，使用python进行落地，实现DNN的正向计算，在网上看了一大堆softmax函数的实现，发现所有人都是单样本去计算或者循环去计算矩阵，心里默默吐槽，怎么都是这样写，就不能来个正常的例子，一行行这样算都提高不了效率。看来ctrl+c是解决不了问题了，还是自己动手来吧。

首先看下softmax函数公式：



不多说，直接...]]></description><category></category></item><item><title><![CDATA[在spark中通过UDF转字符串ip]]></title><link>https://blog.youkuaiyun.com/goodstudy168/article/details/88534858</link><guid>https://blog.youkuaiyun.com/goodstudy168/article/details/88534858</guid><author>goodstudy168</author><pubDate>Wed, 13 Mar 2019 16:06:42 +0800</pubDate><description><![CDATA[今天在spark中需要将字符型(String)的ip转化为长整型（long）的ip，参考了两篇文章https://blog.youkuaiyun.com/cjuexuan/article/details/54912215和https://blog.youkuaiyun.com/key_xyes/article/details/79818196，通过这两篇文章的抽取出思路。于是封装成UDF函数，如下：


sqlConte...]]></description><category></category></item><item><title><![CDATA[关于spark.sql.autoBroadcastJoinThreshold设置]]></title><link>https://blog.youkuaiyun.com/goodstudy168/article/details/83752989</link><guid>https://blog.youkuaiyun.com/goodstudy168/article/details/83752989</guid><author>goodstudy168</author><pubDate>Mon, 05 Nov 2018 17:30:09 +0800</pubDate><description><![CDATA[今天使用spark对一组大数据进行合并作join操作，一直都报下面的错：

Exception in thread “broadcast-exchange-0” java.lang.OutOfMemoryError: Not enough memory to build and broadcast the table to all worker nodes

想来想去，之前也跑过这类的任务，并且都...]]></description><category></category></item><item><title><![CDATA[银行业密钥体系概述]]></title><link>https://blog.youkuaiyun.com/goodstudy168/article/details/83513545</link><guid>https://blog.youkuaiyun.com/goodstudy168/article/details/83513545</guid><author>goodstudy168</author><pubDate>Tue, 30 Oct 2018 09:58:29 +0800</pubDate><description><![CDATA[银行业的密钥体系是个很庞大的体系，其覆盖不同的密码学算法及适应不同的业务场景。一方面保证银行的数据安全性，另一方面适应业务的变化且易于理解和使用。银行业的密钥体系与银行监管制度是紧密相关的，密钥体系保证银行内各个业务环节的安全性，而银行监管制度保证密钥体系能够有效地执行，最终依靠对操作人员进行监管使得密钥体系得到有效的实施。

提到密钥，一定要先了解下密码学的一些基础算法，银行主要使用的密码学算法...]]></description><category></category></item><item><title><![CDATA[spark以standalone运行时的日志清理]]></title><link>https://blog.youkuaiyun.com/goodstudy168/article/details/83513412</link><guid>https://blog.youkuaiyun.com/goodstudy168/article/details/83513412</guid><author>goodstudy168</author><pubDate>Mon, 29 Oct 2018 21:23:12 +0800</pubDate><description><![CDATA[spark运行任务的日志一直没太大关注，原因是硬盘资源充足，除非任务出错时才去看一下，但没有清理这些日志的习惯。直到最近遇到的一个问题是，硬盘资源严重缺乏，不得不需要定时去清理日志。

第一时间去看下spark本身的配置，是否支持定时清理日志的选项，毕竟spark那么成熟，相信很多人都面临过这样的问题。从spark-env.sh里面看到SPARK_WORKER_OPTS和SPARK_HISTORY...]]></description><category></category></item></channel></rss>