BP神经网络python简单实现

BP神经网络的原理在网上有很详细的说明,这里就不打算细说,这篇文章主要简单的方式设计及实现BP神经网络,并简单测试下在恒等计算(编码)作测试。 

BP神经网络模型图如下



BP神经网络基本思想

BP神经网络学习过程由信息的下向传递和误差的反向传播两个过程组成

正向传递:由模型图中的数据x从输入层到最后输出层z的过程。

反向传播:在训练阶段,如果正向传递过程中发现输出的值与期望的传有误差,由将误差从输出层返传回输入层的过程。返回的过程主要是修改每一层每个连接的权值w,达到减少误的过程。


BP神经网络设计

设计思路是将神经网络分为神经元、网络层及整个网络三个层次。

首先是定义使用sigmoid函数作为激活函数

[python] view plaincopy
在CODE上查看代码片派生到我的代码片
  1. def logistic(x):  
  2.     return 1 / (1 + np.exp(-x))  
  3.   
  4. def logistic_derivative(x):  
  5.     return logistic(x) * (1 - logistic(x))  

神经元的设计


由神经元的设计图可知,BP神经网络可拆解成是神经元的集合。

神经元主要功能:

  1. 计算数据,输出结果。
  2. 更新各连接权值。
  3. 向上一层反馈权值更新值,实现反馈功能。

注意到:

[python] view plaincopy
在CODE上查看代码片派生到我的代码片
  1. weight_add = self.input * self.deltas_item * learning_rate + 0.9 * self.last_weight_add#添加冲量  
代码是添加冲量功能(+ 0.9 * self.last_weight_add ), 这可以加速收敛,如果有兴趣可把它去掉看看训练结果。 

神经元设计代码如下:

[python] view plaincopy
在CODE上查看代码片派生到我的代码片
  1. class Neuron:  
  2.     def __init__(self, len_input):  
  3.         # 输入的初始参数, 随机取很小的值(<0.1)  
  4.         self.weights = np.random.random(len_input) * 0.1  
  5.         # 当前实例的输入  
  6.         self.input = np.ones(len_input)  
  7.         # 对下一层的输出值  
  8.         self.output = 1  
  9.         # 误差项  
  10.         self.deltas_item = 0  
  11.         # 上一次权重增加的量,记录起来方便后面扩展时可考虑增加冲量  
  12.         self.last_weight_add = 0  
  13.   
  14.     def calc_output(self, x):  
  15.         # 计算输出值  
  16.         self.input = x  
  17.         self.output = logistic(np.dot(self.weights.T, self.input))  
  18.         return self.output  
  19.   
  20.     def get_back_weight(self):  
  21.         # 获取反馈差值  
  22.         return self.weights * self.deltas_item  
  23.   
  24.     def update_weight(self, target=0, back_weight=0, learning_rate=0.1, layer="OUTPUT"):  
  25.         # 更新权传  
  26.         if layer == "OUTPUT":  
  27.             self.deltas_item = (target - self.output) * logistic_derivative(self.output)  
  28.         elif layer == "HIDDEN":  
  29.             self.deltas_item = back_weight * logistic_derivative(self.output)  
  30.           
  31.         weight_add = self.input * self.deltas_item * learning_rate + 0.9 * self.last_weight_add#添加冲量  
  32.         self.weights += weight_add  
  33.         self.last_weight_add = weight_add  

网络层设计

管理一个网络层的代码,分为隐藏层和输出层。 (输入层可直接用输入数据,不简单实现。)

网络层主要管理自己层的神经元,所以封装的结果与神经元的接口一样。对向实现自己的功能。

同时为了方便处理,添加了他下一层的引用。

[python] view plaincopy
在CODE上查看代码片派生到我的代码片
  1. class NetLayer:  
  2.     ''''' 
  3.     网络层封装 
  4.     管理当前网络层的神经元列表 
  5.     '''  
  6.     def __init__(self, len_node, in_count):  
  7.         ''''' 
  8.         :param len_node: 当前层的神经元数 
  9.         :param in_count: 当前层的输入数 
  10.         '''  
  11.         # 当前层的神经元列表  
  12.         self.neurons = [Neuron(in_count) for _ in range(len_node)]  
  13.         # 记录下一层的引用,方便递归操作  
  14.         self.next_layer = None  
  15.   
  16.     def calc_output(self, x):  
  17.         output = np.array([node.calc_output(x) for node in self.neurons])  
  18.         if self.next_layer is not None:  
  19.             return self.next_layer.calc_output(output)  
  20.         return output  
  21.   
  22.     def get_back_weight(self):  
  23.         return sum([node.get_back_weight() for node in self.neurons])  
  24.   
  25.     def update_weight(self, learning_rate, target):  
  26.         ''''' 
  27.         更新当前网络层及之后层次的权重 
  28.         使用了递归来操作,所以要求外面调用时必须从网络层的第一层(输入层的下一层)来调用 
  29.         :param learning_rate: 学习率 
  30.         :param target: 输出值 
  31.         '''  
  32.         layer = "OUTPUT"  
  33.         back_weight = np.zeros(len(self.neurons))  
  34.         if self.next_layer is not None:  
  35.             back_weight = self.next_layer.update_weight(learning_rate, target)  
  36.             layer = "HIDDEN"  
  37.         for i, node in enumerate(self.neurons):  
[python] view plaincopy
在CODE上查看代码片派生到我的代码片
  1. <span style="white-space:pre">        </span>target_item = 0 if len(target) <= i else target[i]  
  2.                 node.update_weight(target=<span style="font-family: Arial, Helvetica, sans-serif;">target_item</span><span style="font-family: Arial, Helvetica, sans-serif;">, back_weight=back_weight[i], learning_rate=learning_rate, layer=layer)</span>  
  3.         return self.get_back_weight()  

BP神经网络实现

管理整个网络,对外提供训练接口及预测接口。

构建网络参数为一列表, 第一个元素代码输入参数个数, 最后一个代码输出神经元个数,中间的为各个隐藏层中的神经元的个数。

由于各层间代码链式存储, 所以layers[0]操作就代码了整个网络。

[python] view plaincopy
在CODE上查看代码片派生到我的代码片
  1. class NeuralNetWork:  
  2.   
  3.     def __init__(self, layers):  
  4.         self.layers = []  
  5.         self.construct_network(layers)  
  6.         pass  
  7.   
  8.     def construct_network(self, layers):  
  9.         last_layer = None  
  10.         for i, layer in enumerate(layers):  
  11.             if i == 0:  
  12.                 continue  
  13.             cur_layer = NetLayer(layer, layers[i-1])  
  14.             self.layers.append(cur_layer)  
  15.             if last_layer is not None:  
  16.                 last_layer.next_layer = cur_layer  
  17.             last_layer = cur_layer  
  18.   
  19.     def fit(self, x_train, y_train, learning_rate=0.1, epochs=100000, shuffle=False):  
  20.         ''''' 
  21.         训练网络, 默认按顺序来训练 
  22.         方法 1:按训练数据顺序来训练 
  23.         方法 2: 随机选择测试 
  24.         :param x_train: 输入数据 
  25.         :param y_train: 输出数据 
  26.         :param learning_rate: 学习率 
  27.         :param epochs:权重更新次数 
  28.         :param shuffle:随机取数据训练  
  29.         '''  
  30.         indices = np.arange(len(x_train))  
  31.         for _ in range(epochs):  
  32.             if shuffle:  
  33.                 np.random.shuffle(indices)  
  34.             for i in indices:  
  35.                 self.layers[0].calc_output(x_train[i])  
  36.                 self.layers[0].update_weight(learning_rate, y_train[i])  
  37.         pass  
  38.   
  39.     def predict(self, x):  
  40.         return self.layers[0].calc_output(x)  

测试代码

测试数据中输出数据和输出数据一样。测试AutoEncoder自动编码器。(AutoEncoder不了解的可网上找一下。)

[python] view plaincopy
在CODE上查看代码片派生到我的代码片
  1. if __name__ == '__main__':  
  2.     print("test neural network")  
  3.   
  4.     data = np.array([[10000000],  
  5.                      [01000000],  
  6.                      [00100000],  
  7.                      [00010000],  
  8.                      [00001000],  
  9.                      [00000100],  
  10.                      [00000010],  
  11.                      [00000001]])  
  12.   
  13.     np.set_printoptions(precision=3, suppress=True)  
  14.   
  15.     for item in range(10):  
  16.         network = NeuralNetWork([838])  
  17.         # 让输入数据与输出数据相等  
  18.         network.fit(data, data, learning_rate=0.1, epochs=10000)  
  19.   
  20.         print("\n\n", item,  "result")  
  21.         for item in data:  
  22.             print(item, network.predict(item))  

结果输出

效果还不错,达到了预想的结果。 

问题:可测试结果中有 0.317(已经标红), 是由于把8个数据编码成3个数据有点勉强。 如果网络改成[8,4,8]就能够不出现这样的结果。 大家可以试一下。

[html] view plaincopy
在CODE上查看代码片派生到我的代码片
  1. /Library/Frameworks/Python.framework/Versions/3.4/bin/python3.4 /XXXX/机器学习/number/NeuralNetwork.py  
  2. test neural network  
  3.   
  4.   
  5.  0 result  
  6. [1 0 0 0 0 0 0 0] [ 0.987  0.     0.005  0.     0.     0.01   0.004  0.   ]  
  7. [0 1 0 0 0 0 0 0] [ 0.     0.985  0.     0.006  0.     0.025  0.     0.008]  
  8. [0 0 1 0 0 0 0 0] [ 0.007  0.     0.983  0.     0.007  0.027  0.     0.   ]  
  9. [0 0 0 1 0 0 0 0] [ 0.     0.005  0.     0.985  0.007  0.02   0.     0.   ]  
  10. [0 0 0 0 1 0 0 0] [ 0.     0.     0.005  0.005  0.983  0.013  0.     0.   ]  
  11. [0 0 0 0 0 1 0 0] [ 0.016  0.017  0.02   0.018  0.018  <span style="color:#ff0000;">0.317</span>  0.023  0.017]  
  12. [0 0 0 0 0 0 1 0] [ 0.006  0.     0.     0.     0.     0.026  0.984  0.006]  
  13. [0 0 0 0 0 0 0 1] [ 0.     0.005  0.     0.     0.     0.01   0.004  0.985]  
  14.   
  15.   
  16.  1 result  
  17. [1 0 0 0 0 0 0 0] [ 0.983  0.     0.     0.007  0.007  0.     0.     0.027]  
  18. [0 1 0 0 0 0 0 0] [ 0.     0.986  0.004  0.     0.     0.     0.005  0.01 ]  
  19. [0 0 1 0 0 0 0 0] [ 0.     0.005  0.985  0.     0.005  0.     0.     0.026]  
  20. [0 0 0 1 0 0 0 0] [ 0.005  0.     0.     0.983  0.     0.006  0.     0.015]  
  21. [0 0 0 0 1 0 0 0] [ 0.005  0.     0.004  0.     0.987  0.     0.     0.01 ]  
  22. [0 0 0 0 0 1 0 0] [ 0.     0.     0.     0.006  0.     0.984  0.005  0.018]  
  23. [0 0 0 0 0 0 1 0] [ 0.     0.008  0.     0.     0.     0.006  0.984  0.027]  
  24. [0 0 0 0 0 0 0 1] [ 0.018  0.017  0.025  0.018  0.016  0.018  0.017  <span style="color:#ff0000;">0.317]</span>  
  25.   
  26.   
  27.  2 result  
  28. [1 0 0 0 0 0 0 0] [ 0.966  0.     0.016  0.014  0.     0.     0.     0.   ]  
  29. [0 1 0 0 0 0 0 0] [ 0.     0.969  0.     0.016  0.     0.     0.     0.014]  
  30. [0 0 1 0 0 0 0 0] [ 0.012  0.     0.969  0.     0.     0.013  0.     0.   ]  
  31. [0 0 0 1 0 0 0 0] [ 0.014  0.014  0.     0.969  0.     0.     0.     0.   ]  
  32. [0 0 0 0 1 0 0 0] [ 0.     0.     0.     0.     0.962  0.016  0.02   0.   ]  
  33. [0 0 0 0 0 1 0 0] [ 0.     0.     0.02   0.     0.016  0.963  0.     0.   ]  
  34. [0 0 0 0 0 0 1 0] [ 0.     0.     0.     0.     0.012  0.     0.969  0.011]  
  35. [0 0 0 0 0 0 0 1] [ 0.     0.014  0.     0.     0.     0.     0.016  0.966]  
  36.   
  37.   
  38.  3 result  
  39. [1 0 0 0 0 0 0 0] [ 0.983  0.     0.     0.007  0.027  0.     0.     0.007]  
  40. [0 1 0 0 0 0 0 0] [ 0.     0.986  0.004  0.     0.01   0.005  0.     0.   ]  
  41. [0 0 1 0 0 0 0 0] [ 0.     0.006  0.984  0.006  0.026  0.     0.     0.   ]  
  42. [0 0 0 1 0 0 0 0] [ 0.005  0.     0.004  0.987  0.01   0.     0.     0.   ]  
  43. [0 0 0 0 1 0 0 0] [ 0.019  0.017  0.024  0.016  <span style="color:#ff0000;">0.317</span>  0.017  0.018  0.018]  
  44. [0 0 0 0 0 1 0 0] [ 0.     0.008  0.     0.     0.026  0.984  0.006  0.   ]  
  45. [0 0 0 0 0 0 1 0] [ 0.     0.     0.     0.     0.019  0.005  0.984  0.007]  
  46. [0 0 0 0 0 0 0 1] [ 0.005  0.     0.     0.     0.014  0.     0.005  0.983]  
  47.   
  48.   
  49.  4 result  
  50. [1 0 0 0 0 0 0 0] [ 0.969  0.014  0.     0.     0.     0.     0.014  0.   ]  
  51. [0 1 0 0 0 0 0 0] [ 0.014  0.966  0.016  0.     0.     0.     0.     0.   ]  
  52. [0 0 1 0 0 0 0 0] [ 0.     0.011  0.969  0.     0.     0.012  0.     0.   ]  
  53. [0 0 0 1 0 0 0 0] [ 0.     0.     0.     0.966  0.     0.     0.013  0.016]  
  54. [0 0 0 0 1 0 0 0] [ 0.     0.     0.     0.     0.963  0.016  0.     0.02 ]  
  55. [0 0 0 0 0 1 0 0] [ 0.     0.     0.02   0.     0.016  0.963  0.     0.   ]  
  56. [0 0 0 0 0 0 1 0] [ 0.016  0.     0.     0.014  0.     0.     0.969  0.   ]  
  57. [0 0 0 0 0 0 0 1] [ 0.     0.     0.     0.011  0.012  0.     0.     0.969]  
  58.   
  59.   
  60.  5 result  
  61. [1 0 0 0 0 0 0 0] [ 0.966  0.     0.016  0.     0.     0.018  0.     0.   ]  
  62. [0 1 0 0 0 0 0 0] [ 0.     0.969  0.012  0.     0.     0.     0.011  0.   ]  
  63. [0 0 1 0 0 0 0 0] [ 0.015  0.018  0.964  0.     0.     0.     0.     0.   ]  
  64. [0 0 0 1 0 0 0 0] [ 0.     0.     0.     0.968  0.013  0.     0.     0.013]  
  65. [0 0 0 0 1 0 0 0] [ 0.     0.     0.     0.015  0.965  0.015  0.     0.   ]  
  66. [0 0 0 0 0 1 0 0] [ 0.013  0.     0.     0.     0.013  0.968  0.     0.   ]  
  67. [0 0 0 0 0 0 1 0] [ 0.     0.018  0.     0.     0.     0.     0.965  0.014]  
  68. [0 0 0 0 0 0 0 1] [ 0.     0.     0.     0.018  0.     0.     0.015  0.967]  
  69.   
  70.   
  71.  6 result  
  72. [1 0 0 0 0 0 0 0] [ 0.983  0.006  0.     0.005  0.     0.     0.     0.016]  
  73. [0 1 0 0 0 0 0 0] [ 0.006  0.983  0.     0.     0.     0.005  0.     0.017]  
  74. [0 0 1 0 0 0 0 0] [ 0.     0.     0.987  0.005  0.     0.     0.004  0.01 ]  
  75. [0 0 0 1 0 0 0 0] [ 0.007  0.     0.007  0.983  0.     0.     0.     0.027]  
  76. [0 0 0 0 1 0 0 0] [ 0.     0.     0.     0.     0.987  0.005  0.004  0.01 ]  
  77. [0 0 0 0 0 1 0 0] [ 0.     0.007  0.     0.     0.008  0.983  0.     0.027]  
  78. [0 0 0 0 0 0 1 0] [ 0.     0.     0.005  0.     0.005  0.     0.985  0.026]  
  79. [0 0 0 0 0 0 0 1] [ 0.018  0.018  0.017  0.017  0.017  0.017  0.025  <span style="color:#ff0000;">0.317</span>]  
  80.   
  81.   
  82.  7 result  
  83. [1 0 0 0 0 0 0 0] [ 0.969  0.     0.     0.     0.014  0.     0.     0.015]  
  84. [0 1 0 0 0 0 0 0] [ 0.     0.963  0.02   0.     0.     0.017  0.     0.   ]  
  85. [0 0 1 0 0 0 0 0] [ 0.     0.012  0.969  0.     0.     0.     0.011  0.   ]  
  86. [0 0 0 1 0 0 0 0] [ 0.     0.     0.     0.969  0.011  0.013  0.     0.   ]  
  87. [0 0 0 0 1 0 0 0] [ 0.014  0.     0.     0.016  0.966  0.     0.     0.   ]  
  88. [0 0 0 0 0 1 0 0] [ 0.     0.016  0.     0.02   0.     0.962  0.     0.   ]  
  89. [0 0 0 0 0 0 1 0] [ 0.     0.     0.016  0.     0.     0.     0.966  0.014]  
  90. [0 0 0 0 0 0 0 1] [ 0.015  0.     0.     0.     0.     0.     0.014  0.969]  
  91.   
  92.   
  93.  8 result  
  94. [1 0 0 0 0 0 0 0] [ 0.966  0.016  0.013  0.     0.     0.     0.     0.   ]  
  95. [0 1 0 0 0 0 0 0] [ 0.011  0.969  0.     0.     0.     0.     0.012  0.   ]  
  96. [0 0 1 0 0 0 0 0] [ 0.014  0.     0.969  0.015  0.     0.     0.     0.   ]  
  97. [0 0 0 1 0 0 0 0] [ 0.     0.     0.015  0.969  0.     0.014  0.     0.   ]  
  98. [0 0 0 0 1 0 0 0] [ 0.     0.     0.     0.     0.963  0.     0.016  0.02 ]  
  99. [0 0 0 0 0 1 0 0] [ 0.     0.     0.     0.013  0.     0.966  0.     0.016]  
  100. [0 0 0 0 0 0 1 0] [ 0.     0.02   0.     0.     0.016  0.     0.963  0.   ]  
  101. [0 0 0 0 0 0 0 1] [ 0.     0.     0.     0.     0.012  0.011  0.     0.969]  
  102.   
  103.   
  104.  9 result  
  105. [1 0 0 0 0 0 0 0] [ 0.969  0.     0.     0.     0.     0.011  0.     0.011]  
  106. [0 1 0 0 0 0 0 0] [ 0.     0.968  0.     0.     0.     0.     0.018  0.015]  
  107. [0 0 1 0 0 0 0 0] [ 0.     0.     0.965  0.     0.015  0.     0.015  0.   ]  
  108. [0 0 0 1 0 0 0 0] [ 0.     0.     0.     0.966  0.018  0.016  0.     0.   ]  
  109. [0 0 0 0 1 0 0 0] [ 0.     0.     0.013  0.013  0.968  0.     0.     0.   ]  
  110. [0 0 0 0 0 1 0 0] [ 0.018  0.     0.     0.014  0.     0.964  0.     0.   ]  
  111. [0 0 0 0 0 0 1 0] [ 0.     0.013  0.013  0.     0.     0.     0.968  0.   ]  
  112. [0 0 0 0 0 0 0 1] [ 0.018  0.014  0.     0.     0.     0.     0.     0.965]  
  113.   
  114. Process finished with exit code 0  

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/387818.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

golang的reflection(转)(一)

2019独角兽企业重金招聘Python工程师标准>>> 反射reflection 可以大大提高程序的灵活性&#xff0c;使得interface{}有更大的发挥余地反射可以使用TypeOf和ValueOf函数从接口中获取目标对象信息反射会将匿名字段作为独立字段&#xff08;匿名字段的本质&#xff09;…

idea教程--Maven 骨架介绍

简单的说&#xff0c;Archetype是Maven工程的模板工具包。一个Archetype定义了要做的相同类型事情的初始样式或模型。这个名称给我们提供来了一个一致的生成Maven工程的方式。Archetype会帮助作者给用户创建Maven工程模板&#xff0c;并给用户提供生成相关工程模板版本的参数化…

datatables.js 简单使用--多选框和服务器端分页

说明&#xff1a;datatables是一款jQuery表格插件。感觉EasyUI的datagrid更易用 内容&#xff1a;多选框和服务器端分页 缘由&#xff1a;写这篇博客的原因是datatables的文档写的不怎么样&#xff0c;找东西很麻烦 环境&#xff1a;asp.net mvc , vs2015sqlserver2012 显示效…

python异常(高级) Exception

异常(高级) Exception 异常回顾:     try-except 语句 捕获(接收)异常通知,把异常流程变为正常流程     try-finally 语句 执行必须要执行的语句.     raise 语句 发送异常通知,同时进入异常流程     assert 语句 发送AssertionError异常     with 语句 wi…

反射赋值

目前例子为NPOI Excel导入 入库时调用 var file file1.PostedFile.InputStream;var fileExt System.IO.Path.GetExtension(file1.FileName);IWorkbook workbook;if (fileExt ".xlsx")workbook new XSSFWorkbook(file);elseworkbook new HSSFWorkbook(file);DB.D…

基于PCA(主成分分析)的人脸识别

代码下载&#xff1a;基于PCA&#xff08;主成分分析&#xff09;的人脸识别 人脸识别是一个有监督学习过程&#xff0c;首先利用训练集构造一个人脸模型&#xff0c;然后将测试集与训练集进行匹配&#xff0c;找到与之对应的训练集头像。最容易的方式是直接利用欧式距离计算测…

从BMW Vision iNEXT 看宝马如何进军自动驾驶

安全很重要&#xff0c;空间也要很大&#xff0c;砍掉大量物理按键&#xff0c;内饰材料要环保&#xff0c;还要提供自动和主动两套驾驶方案。这些描述仅是BMW Vision iNEXT&#xff08;下称Vision iNEXT&#xff09;概念车的设计之冰山一角。 一款概念车当然无法完全代表未来…

CSS浮动(二)---Float

重新认识float 2.1. 误解和“误用” 既然提到“误用”&#xff0c;各位看官就此想想&#xff0c;自己平日是怎么使用float的&#xff1f;另外&#xff0c;既然“误用”加了引号&#xff0c;就说明这样的使用并不是真正的误用&#xff0c;而是误打误撞使用之后&#xff0c;带…

Hadoop0.20.2版本在Ubuntu下安装和配置

1、安装JDK   &#xff08;1&#xff09;下载安装JDK&#xff1a;确保计算机联网之后命令行输入下面命令安装JDK   sudo apt-get install sun-java6-jdk   &#xff08;2&#xff09;配置计算机Java环境&#xff1a;打开/etc/profile&#xff0c;在文件最后输入下面内容 …

云原生生态周报 Vol. 2

业界要闻 Kubernetes External Secrets 近日&#xff0c;世界上最大的域名托管公司 Godaddy公司&#xff0c;正式宣布并详细解读了其开源的K8s外部 Secrets 管理项目&#xff1a; Kubernetes External Secrets&#xff0c;简称KES。这个项目定义了ExternalSecrets API&#xff…

centos 7新机使用前操作

关闭防火墙 systemctl stop firewalld&#xff08;停服务&#xff09; systemctl status firewalld&#xff08;看状态&#xff09; systemctl disable firewalld.service &#xff08;永久关闭&#xff09; selinux getenforce&#xff08;查状态&#xff09; vi /etc/selinux…

ubuntu10.04+hadoop0.20.2平台配置(完全分布式模式)

配置环境及有关工具&#xff1a;ubuntu10.04 、hadoop0.20.2 、 jdk1.6.0_29 我们的机器有三台&#xff0c;一台当作namenode、两台当作datanode&#xff1a; namenode&#xff1a;IP:192.168.0.25、机器名&#xff1a;kiddenzj &#xff08;这里的机器名要注意&#xff1a;机…

成佛、远不止渡沧海

地之及东南&#xff0c;有一海&#xff0c;称为“沧海”。沧海对面&#xff0c;就是仙家佛地。凡是能渡过沧海到达彼岸的人&#xff0c;就能立地成佛&#xff0c;修成正果。 于是&#xff0c;许许多多的人千里迢迢赶来&#xff0c;或乘帆船&#xff0c;或乘木筏&#xff0c;纷纷…

软件架构演进

传统架构到分布式架构详解 软件架构演进软件架构的发展经历了从单体架构、垂直架构、SOA架构到微服务架构的过程&#xff0c;博客里写到了这四种架构的特点以及优缺点分析&#xff0c;个人学习之用&#xff0c;仅供参考&#xff01; 1.1.1 单体架构 特点&#xff1a;1、所有的…

hadoop0.20.0第一个例子

这是Hadoop学习全程记录第2篇&#xff0c;在这篇里我将介绍一下如何在Eclipse下写第一个MapReduce程序。 新说明一下我的开发环境&#xff1a; 操作系统&#xff1a;在windows下使用wubi安装了ubuntu 10.10 hadoop版本&#xff1a;hadoop-0.20.2.tar.gz Eclipse版本&…

IDEA 修改JavaWeb的访问路径

问题描述 对于我这个刚刚使用IDEA不久的新手来说&#xff0c;能够正常运行就不错了,不过到了后面&#xff0c;可能会觉得IDEA给你分配的默认访问路径很不顺手&#xff0c;比如访问的时候需要通过: http://localhost:8080/web_war_exploded/ 来访问&#xff0c;对于web_w…

防撞库基本要求

专用安全要求 口令要求 设计要求说明 要求 是否满足 密码长度至少 8位字符&#xff0c;密码复杂性要求至少包含以下4种类别中的2种&#xff1a;大写字母、小写字母、数字、特殊符号 必选 满足 系统应具备对口令强度检测的能力&#xff0c;并对用户进行提示&#xff08;尽量不要…

odoo10 继承(扩展)、模块数据

一&#xff1a;继承 在不改变底层对象的时候添加新的功能——这是通过继承机制来实现的&#xff0c;作为在现有对象之上的修改层&#xff0c;这些修改可以发生在所有级别&#xff1a;模型&#xff0c;视图和业务逻辑。不是直接修改现有模块&#xff0c;而是创建一个新模块以添加…

做一个vue的todolist列表

<template><div id"app"><input type"text" v-model"todo" ref"ip"/><button click"add()">新增</button><br/><br/><hr/><ul><li v-for"(item,key) in li…

hadoop+hive-0.10.0完全分布式安装方法

hadoophive-0.10.0完全分布式安装方法 1、jdk版本&#xff1a;jdk-7u60-linux-x64.tar.gz http://www.oracle.com/technetwork/cn/java/javase/downloads/jdk7-downloads-1880260.html 2、hive版本&#xff1a;hive-0.10.0.tar.gz https://archive.apache.org/dist/hive/hive-0…