<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[wangping623的专栏]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/wangping623</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; wangping623]]></copyright><item><title><![CDATA[互联网架构技术演进]]></title><link>https://blog.youkuaiyun.com/wangping623/article/details/104376402</link><guid>https://blog.youkuaiyun.com/wangping623/article/details/104376402</guid><author>wangping623</author><pubDate>Tue, 18 Feb 2020 16:02:34 +0800</pubDate><description><![CDATA[一、互联网架构演进

1. web1.0阶段

用户通过浏览器访问网站服务器，往往服务器上的资源是静态的，仅仅包含html、js、css等内容，没有和用户进行交互，都是单向的，这是web1.0里面常见的模式。整个架构如下图所示：





2. web2.0阶段

到了web2.0，上面的架构中引入了数据库，用户和服务器之间有了一定的交互，用户可以增加删除和修改一些数据，这些数据存储在数据库里面...]]></description><category></category></item><item><title><![CDATA[NAT详解：基本原理、穿越技术(P2P打洞)、端口老化等]]></title><link>https://blog.youkuaiyun.com/wangping623/article/details/101282209</link><guid>https://blog.youkuaiyun.com/wangping623/article/details/101282209</guid><author>wangping623</author><pubDate>Tue, 24 Sep 2019 14:10:53 +0800</pubDate><description><![CDATA[这是一篇介绍NAT技术要点的精华文章，来自华3通信官方资料库，文中对NAT技术原理的介绍很全面也很权威，对网络应用的应用层开发人员而言有很高的参考价值。

1. IPv4协议和NAT的由来

今天，无数快乐的互联网用户在尽情享受Internet带来的乐趣。他们浏览新闻，搜索资料，下载软件，广交新朋，分享信息，甚至于足不出户获取一切日用所需。企业利用互联网发布信息，传递资料和订单，提供技术支持，完成...]]></description><category></category></item><item><title><![CDATA[电商数仓项目系列一：数据仓库简介]]></title><link>https://blog.youkuaiyun.com/wangping623/article/details/100697280</link><guid>https://blog.youkuaiyun.com/wangping623/article/details/100697280</guid><author>wangping623</author><pubDate>Tue, 10 Sep 2019 14:03:31 +0800</pubDate><description><![CDATA[一、数仓定义

数据仓库顾名思义就是存储数据的仓库，不同于业务数据库用作业务支撑，数据仓库是分析系统最核心的组成部分，使用这些数据为我们的报表分析（各种销售指标），广告推广（在什么地方、什么渠道投放广告），app、网站优化（商品如何展示，排列），个性化推荐等服务领域提供数据支持。既然是数据仓库，那么数据仓库的数据从哪里来？在数据仓库中怎么存储？如何将源数据存储到数仓中，这些数据将来有什么用？下面分...]]></description><category></category></item><item><title><![CDATA[git多人协作的日常6种场景]]></title><link>https://blog.youkuaiyun.com/wangping623/article/details/99406760</link><guid>https://blog.youkuaiyun.com/wangping623/article/details/99406760</guid><author>wangping623</author><pubDate>Tue, 13 Aug 2019 09:49:42 +0800</pubDate><description><![CDATA[开篇：之所以写git基本工具的使用，主要原因是通过这几年的工作，发现身边很多人无法熟练使用这个工具，日常工作中将很多的时间浪费在这些问题上，而无法聚焦到自己的本职工作中，所以本篇将介绍git多人协作中的一些高频场景。

一、环境准备

我在github上新建了一个仓库oa，包含一个MIT的license文件。git仓库的地址是：git@github.com:mudongchun/oa.git
	在...]]></description><category></category></item><item><title><![CDATA[大数据环境搭建3：Apache Sqoop环境搭建]]></title><link>https://blog.youkuaiyun.com/wangping623/article/details/98879004</link><guid>https://blog.youkuaiyun.com/wangping623/article/details/98879004</guid><author>wangping623</author><pubDate>Thu, 08 Aug 2019 17:35:26 +0800</pubDate><description><![CDATA[1. 下载sqoop安装包

下载地址http://mirror.bit.edu.cn/apache/sqoop/1.4.7/

2. 上传sqoop安装包，并安装

解压安装

tar -zxvf sqoop-1.4.7.bin__hadoop-2.6.0.tar.gz -C ../app

3. 配置环境变量

(1) vi /etc/profile

export SQOOP_HOME=/h...]]></description><category></category></item><item><title><![CDATA[大数据开发环境搭建2：Apache Hive环境搭建(centos7)]]></title><link>https://blog.youkuaiyun.com/wangping623/article/details/98766565</link><guid>https://blog.youkuaiyun.com/wangping623/article/details/98766565</guid><author>wangping623</author><pubDate>Wed, 07 Aug 2019 17:56:58 +0800</pubDate><description><![CDATA[一、前提条件

 1. 先搭建hadoop环境，具体参考Apache Hive环境搭建

二、mysql安装（rpm方式安装，可以使用yum方式安装，更加智能，会自动安装依赖）

1. 卸载mariadb

rpm -qa | grep mariadb

rpm -e --nodeps mariadb-libs-5.5.60-1.el7_5.x86_64

2. 解压

tar -axvf ...]]></description><category></category></item><item><title><![CDATA[使用hql验证身份证号码的合法性]]></title><link>https://blog.youkuaiyun.com/wangping623/article/details/97916247</link><guid>https://blog.youkuaiyun.com/wangping623/article/details/97916247</guid><author>wangping623</author><pubDate>Wed, 31 Jul 2019 14:32:10 +0800</pubDate><description><![CDATA[一、身份证号码的组成规则

（1）第1、2位数字表示：所在省份的代码;
（2）第3、4位数字表示：所在城市的代码；
（3）第5、6位数字表示：所在区县的代码；

（4）第7、8、9、10位代表出生年；

（5）第11位、12位表示：出生月；

（6）第13位、14位表示：出生日；
（7）第15、16位表示：同年同月同日同地区出生的顺序；
（8）第17位表示性别：奇数表示男性，偶数表示女性；
（9）...]]></description><category></category></item><item><title><![CDATA[java算法高频面试题系列5：八皇后问题]]></title><link>https://blog.youkuaiyun.com/wangping623/article/details/97504222</link><guid>https://blog.youkuaiyun.com/wangping623/article/details/97504222</guid><author>wangping623</author><pubDate>Sat, 27 Jul 2019 13:50:17 +0800</pubDate><description><![CDATA[1. 问题非常简单明了，一下是百度百科对于问题的介绍。

八皇后问题是一个以国际象棋为背景的问题：如何能够在 8×8 的国际象棋棋盘上放置八个皇后，使得任何一个皇后都无法直接吃掉其他的皇后？为了达到此目的，任两个皇后都不能处于同一条横行、纵行或斜线上。八皇后问题可以推广为更一般的n皇后摆放问题：这时棋盘的大小变为n1×n1，而皇后个数也变成n2。而且仅当 n2 ≥ 1 或 n1 ≥ 4 时问题有解...]]></description><category></category></item><item><title><![CDATA[大数据环境搭建1：apache hadoop环境搭建（centos7）]]></title><link>https://blog.youkuaiyun.com/wangping623/article/details/96431797</link><guid>https://blog.youkuaiyun.com/wangping623/article/details/96431797</guid><author>wangping623</author><pubDate>Thu, 18 Jul 2019 15:24:15 +0800</pubDate><description><![CDATA[1. 集群规划

2. 修改主机名（三台机器）

3. 设置ip地址 （如果有图形界面，可以直接通过图形界面进行设置，三台机器）

4. 配置主机名映射(三台机器)

5. 关闭防火墙和selinux（三台机器）

6. 安装jdk（略）

7. 拍摄快照，方便日后重新搭建环境

8. 配置ssh免密码登录

9. 下载apache hadoop2.7.7

10. 解压安装had...]]></description><category></category></item><item><title><![CDATA[scala编程入门3：Map与Tupple]]></title><link>https://blog.youkuaiyun.com/wangping623/article/details/95936803</link><guid>https://blog.youkuaiyun.com/wangping623/article/details/95936803</guid><author>wangping623</author><pubDate>Sun, 14 Jul 2019 23:28:29 +0800</pubDate><description><![CDATA[package com.cs.testscala
import scala.collection.mutable
import scala.collection.mutable._
import scala.util.Sorting._

object TestScala {

  def main(args: Array[String]): Unit = {
    // map与分为可变的m...]]></description><category></category></item><item><title><![CDATA[scala编程入门2:数组]]></title><link>https://blog.youkuaiyun.com/wangping623/article/details/95770317</link><guid>https://blog.youkuaiyun.com/wangping623/article/details/95770317</guid><author>wangping623</author><pubDate>Sat, 13 Jul 2019 19:10:46 +0800</pubDate><description><![CDATA[一、 scala中的数组

1. scala中的数组有两种，Array和ArrayBuffer，Array是定长数组，ArrayBuffer是变长数组。

2. Array的使用如下：


    //1. 定义数组最简洁的方式
    val arr1 = Array(1,2,3,4)
    val arr2 = Array("hello", "world")
    //2. 也可以这么定义...]]></description><category></category></item><item><title><![CDATA[idea安装scala插件]]></title><link>https://blog.youkuaiyun.com/wangping623/article/details/95766875</link><guid>https://blog.youkuaiyun.com/wangping623/article/details/95766875</guid><author>wangping623</author><pubDate>Sat, 13 Jul 2019 17:25:12 +0800</pubDate><description><![CDATA[1. 查看自己的idea版本号，点击help -&gt; about



2. 查看版本号



3. 在这个网址下载与idea版本对应的scala插件，注意需要与idea版本对应，否则安装不了。

https://plugins.jetbrains.com/plugin/1347-scala/versions

4. 安装scala插件

（1）在菜单栏点击file -&gt; Setting...]]></description><category></category></item><item><title><![CDATA[scala编程入门1]]></title><link>https://blog.youkuaiyun.com/wangping623/article/details/95389217</link><guid>https://blog.youkuaiyun.com/wangping623/article/details/95389217</guid><author>wangping623</author><pubDate>Wed, 10 Jul 2019 22:28:19 +0800</pubDate><description><![CDATA[一、windows环境的搭建

1. jdk安装与环境变量的配置（省略）

2. 下载scala安装包。地址：https://www.scala-lang.org/download/

3. 安装scala。傻瓜式，连环境变量都不用配置（省略）

4. 打开命令行窗口：键入scala -version

5. 键入scala,如下图，证明scala环境已经ok。





二、scala使用

...]]></description><category></category></item><item><title><![CDATA[算法高频面试题4：链表操作相关的面试题]]></title><link>https://blog.youkuaiyun.com/wangping623/article/details/95058853</link><guid>https://blog.youkuaiyun.com/wangping623/article/details/95058853</guid><author>wangping623</author><pubDate>Mon, 08 Jul 2019 14:13:11 +0800</pubDate><description><![CDATA[1. 链表属于比较基础的数据结构，看起来简单，实际上写起来并不简单，考察的是面试者的细心。

2. 下面以C++语言实现一个单链表，其中囊括了大部分的单链表面试题。


#include &lt;iostream&gt;
using namespace std;

class MyList {
	struct Node;
public:
	//1. 构造函数，让head的value永远为NULL，...]]></description><category></category></item><item><title><![CDATA[java高频面试题1:volatitle关键字的理解]]></title><link>https://blog.youkuaiyun.com/wangping623/article/details/94591887</link><guid>https://blog.youkuaiyun.com/wangping623/article/details/94591887</guid><author>wangping623</author><pubDate>Wed, 03 Jul 2019 23:12:57 +0800</pubDate><description><![CDATA[1. 前两篇文章可以很好的解决掉为什么volatitle关键字不能保证线程安全的问题，以及这个修饰词的作用。

为什么volatile关键字保证不了线程安全

线程安全(上)--彻底搞懂volatile关键字

2. 既然volititle不能保证线程的安全性，那么在什么场景下使用volititle关键字呢？下面这篇文章会有帮助。

正确使用 Volatile 变量
...]]></description><category></category></item><item><title><![CDATA[算法高频面试题3：递归思想]]></title><link>https://blog.youkuaiyun.com/wangping623/article/details/94551748</link><guid>https://blog.youkuaiyun.com/wangping623/article/details/94551748</guid><author>wangping623</author><pubDate>Wed, 03 Jul 2019 10:39:01 +0800</pubDate><description><![CDATA[1. 递归在面试题中非常常见。我所遇到的企业面试题中，几乎所有与树相关的面试题都需要用递归来解决，除了树之外，还有很大一部分其他类型的题目需要用递归来解。大致题目如下：

（1）二叉树的前中后序遍历

（2）二叉树最小深度

（3）判读树是否为平衡二叉树

……

2. 递归思维，下面这篇博客介绍的非常浅显易懂。

浅谈递归思想

递归就这么简单

3. 递归方法需要重点注意的地方，很多人都强调过...]]></description><category></category></item><item><title><![CDATA[算法高频面试题2：括号匹配算法]]></title><link>https://blog.youkuaiyun.com/wangping623/article/details/94470136</link><guid>https://blog.youkuaiyun.com/wangping623/article/details/94470136</guid><author>wangping623</author><pubDate>Tue, 02 Jul 2019 19:08:19 +0800</pubDate><description><![CDATA[1. 给一串字符串，例如"a(bcbd){}";，判断(){}[]是否合法，‘({)}’是非法的， ‘({}){}’合法的。


// check.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。
//

#include &lt;iostream&gt;
#include &lt;stack&gt;
using namespace std;

bool check2(st...]]></description><category></category></item><item><title><![CDATA[算法高频面试题1：单链表的反转核心代码]]></title><link>https://blog.youkuaiyun.com/wangping623/article/details/93723176</link><guid>https://blog.youkuaiyun.com/wangping623/article/details/93723176</guid><author>wangping623</author><pubDate>Wed, 26 Jun 2019 11:22:26 +0800</pubDate><description><![CDATA[1. 链表相关的题目是比较简单的，但是一定要细心地写出代码，为了保证简单的题目回答正确，必须在纸上画图考虑。

2. 单链表反转核心代码实现如下


Node* reverse(Node* head) {
	Node* revHead = nullptr;
	Node* prev = nullptr;
	Node* cur = head;
	while (cur != nullptr) {
		N...]]></description><category></category></item><item><title><![CDATA[windows编译protobuf]]></title><link>https://blog.youkuaiyun.com/wangping623/article/details/80793581</link><guid>https://blog.youkuaiyun.com/wangping623/article/details/80793581</guid><author>wangping623</author><pubDate>Tue, 25 Jun 2019 22:14:05 +0800</pubDate><description><![CDATA[1. 下载cmake，按照windows向导傻瓜式操作。地址如下：https://cmake.org/download/



2. 下载probuff工程。地址如下：https://github.com/google/protobuf/releases



3. 打开cmake。
...]]></description><category></category></item><item><title><![CDATA[史上最简单的数据建模教程一：实体关系建模]]></title><link>https://blog.youkuaiyun.com/wangping623/article/details/90707150</link><guid>https://blog.youkuaiyun.com/wangping623/article/details/90707150</guid><author>wangping623</author><pubDate>Thu, 30 May 2019 22:33:57 +0800</pubDate><description><![CDATA[一、建模的流程

1. 概念模型阶段。

一般来说，概念模型阶段的主要任务是，通过5w1h的方法不断与客户沟通，搞清楚核心需求，这个项目的商业目的，都有哪些参与人员，人员角色是什么？都有哪些参与物件？行业常识。只要一张图搞定，花费时间应该在总项目时间的10%.

2. 逻辑模型阶段

实体定义和重要属性，比如客户、商品。实体之间的关系购买。占据项目的60%-70%的时间。如果实体超过100个，需要...]]></description><category></category></item></channel></rss>