Hadoop入门

Hadoop是一个用Java编写的Apache开源框架,允许使用简单的编程模型跨计算机集群分布式处理大型数据集。Hadoop框架工作的应用程序在跨计算机集群提供分布式存储和计算的环境中工作。Hadoop旨在从单个服务器扩展到数千个机器,每个都提供本地计算和存储。

Hadoop伪分布式搭建

首先创建一台master虚拟机,并克隆node1、node2两台节点机,我的虚拟机集群ip地址分别设置为:

· 192.168.218.141 master

· 192.168.218.142 node1

· 192.168.218.143 node2

到master中设置好ssh,做好主机名与ip地址的映射,修改/etc/hosts下的配置文件,并将完成的hosts文件复制进节点机中

此时可以打开xshell,也可以继续在虚拟机中进行操作

将hadoop的jar包上传到虚拟机中,配置环境变量,并对hadoop下的core-site.xmlhdfs-site.xmlyarn-site.xmlmapred-site.xml文件进行相关配置

完成以后再将hadoop的安装目录分别拷贝到子节点中,检查是否完成集群文件的配置和部署

启动

回到主机中打开hadoop安装目录,执行

1
2
start-dfs.sh
start-yarn.sh

(老版本的”start-all.sh”会提示已过期)

完成hadoop的启动后,在主机和节点机输入jps查看当前运行的java进程




成功后打开浏览器,输入localhost:50700可以进入hadoop初始界面。


Read More

实习项目:CRM管理系统

项目文件代码已存储于github:https://github.com/elbadaernU404/projcode

1.前期准备

首先完成了MySql、JspStudy的安装,测试了数据库的连接,tomcat服务器的部署,以及配置tomcat的动态更新等操作。
接下来主要是做了对Html语法的复习,并尝试对后台登陆界面的编程。
在项目文件的根目录下/web中创建register.html文件进行测试,通过do get的方法发送网页请求,以及添加各类可视化元素,完成注册界面。
同样在/web中创建login.html文件,通过do post的方法发送网页请求(隐藏显示的细节)完成登陆界面。

测试
登陆功能
注册功能

Read More

Python爬虫:豆瓣电影数据

描述

· 目标网站:豆瓣电影网https://movie.douban.com/

· 目标数据1:热门高分电影的名称、类型、评分、总评人数等

· 目标数据2:热门电影《少年的你》影评

· 数据存储:csv、txt

· 爬虫方法:requests、json、xpath、正则表达式

找到网站json,利用xpath、正则表达式等对豆瓣电影数据进行分页爬取,以及对热门电影《少年的你》全部影评进行爬取

movie.douban.com
“少年的你”影评

Read More

Python多线程基础

同步和异步

同步

其实类似于小学时期如何在最短的时间内去完成所有事件的数学题。

假设小明早上7:00起床,刷牙洗脸需要3分钟,烧水需要10分钟,穿衣叠被需要2分钟,吃早餐需要15分钟,收听早间新闻需要20分钟(7点开始),问小明起床做完这些事情至少需要多长时间?

同步是指调用一旦开始,必须等待返回调用的结果,才能继续下一步操作

那么结果就是,小明一共需要听新闻(20分钟)+穿衣叠被(2分钟)+刷牙洗脸(3分钟)+烧水(10分钟)+吃早餐(15分钟),总共50分钟,一定要迟到了,很笨

异步

异步和同步相反,调用一旦开始,调用者无需等待方法的完成,就可以继续执行后续方法,被调用者通过状态体通知调用者,或者使用回调函数处理调用

异步方法下,小明需要打开新闻,开始烧水,穿衣叠被,再洗漱,吃早餐,只需要20分钟,新闻结束,就可以高高兴兴去上学了

并发和并行

并发

并发是同时具有多个活动的系统,实质是一个或多个物理CPU在若干道程序(或线程)之间多路复用,其实就是n个事件在同一时间线上交替完成:小明做完所有事件花了50分钟

并发

并行

并行是真正意义上的不同事件或线程在同一时刻同时执行。并行利用并发使系统运行更快,在操作系统的多个抽象层次运用,是n个事件在同一时刻上同时发生:小明家里雇了4个机器人保姆,1个打开电视后烧水,1个帮小明穿衣叠被,1个帮小明洗漱,最后1个喂小明吃早餐,这样在早间新闻放完前,小明只用了18分钟就完成了所有事件,还多出2分钟时间检查书包

并行

进程和线程

进程

程序不能自己运行,只有将程序装载进内存,由系统分配资源后才能运行。程序是指令的集合,可以视为指令的静态文本,而进程是指令的执行活动,是动态的行为

进程是操作系统对于一个运行中程序的抽象,是CPU、内存、IO设备的抽象。系统可以同时运行多个进程

线程

线程是操作系统进行运算调度的最小单位,被包含于进程中,是进程的实际运作单位。一个进程可以由多个线程组成,线程之间共享代码和数据。

由于在实际网络服务器中对并行的需求,线程成为重要的编程模型:

1.多线程之间比多进程之间更易共享数据。
2.线程一般比进程高效。

Read More

HTTP请求方法

GET

请求指定的页面信息,并返回实体主体

POST

向指定的资源提交数据,请求处理。数据被包含在请求体当中,重新提交页面,导致新资源的建立或已有资源的修改

PUT

从客户端向服务器传送数据来取代指定的文档内容

DELETE

请求服务器删除指定的页面

类似GET请求,返回的响应中没有具体内容,仅获取报头

OPTIONS

允许客户端查看服务器的内容

TRACE

显示服务器收到的请求,用于测试或诊断

CONNECT

HTTP/1.1协议中预留给能够将连接改为管道方式的代理服务器

GET方法和POST方法的区别

· GET仅请求目标信息,返回/刷新是无害的,POST每次返回/刷新会重新提交数据

· GET可被保存在书签、缓存、历史记录当中,POST不行

· GET相对没有POST安全

· GET参数通过URL进行传递,POST参数存放在Request body当中

· GET请求时,浏览器会将http header和data一起发送除去,服务器响应为200;

POST请求时,浏览器会先发送header,服务器响应100 continue,再发送data,服务器响应200(时间消耗相对GET要长)

· GET每次产生1个TCP数据包,POST产生两个

· GET对数据的长度有限制(2KB),POST没有限制

· GET仅允许ASCII字符,POST没有限制

Python的图片与字符画转换

总体思想为:将图片转换为灰度图片后,利用字符的“复杂程度”替换掉图片的内容,字符数组的“复杂程度”由大到小排列即可。

代码

(需要pip安装PIL库)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
from PIL import Image 
import argparse

# 命令行输入参数处理
parser = argparse.ArgumentParser()

parser.add_argument('file') # 输入文件
parser.add_argument('-o', '--output') # 输出文件
parser.add_argument('--width', type=int, default=80) # 输出字符画宽
parser.add_argument('--height', type=int, default=80) # 输出字符画高

# 获取参数
args = parser.parse_args()

IMG = args.file
WIDTH = args.width
HEIGHT = args.height
OUTPUT = args.output

ascii_char = list("$@B%8&WM#*oahkbdpqwmZO0QLCJUYXzcvunxrjft/\|()1{}[]?-_+~<>i!lI;:,\"^`'. ")


# 将256灰度映射到70个字符上
def get_char(r, b, g, alpha=256):
if alpha == 0:
return ' '
length = len(ascii_char)
gray = int(0.2126 * r + 0.7152 * g + 0.0722 * b)

unit = (256.0 + 1)/length
return ascii_char[int(gray/unit)]

if __name__ == '__main__':

im = Image.open(IMG)
im = im.resize((WIDTH, HEIGHT), Image.NEAREST)

txt = ""

for i in range(HEIGHT):
for j in range(WIDTH):
txt += get_char(*im.getpixel((j, i)))
txt += '\n'

print (txt)

# 字符画输出到文件
if OUTPUT:
with open(OUTPUT,'w') as f:
f.write(txt)
else:
with open("output.txt", 'w') as f:
f.write(txt)

(稿)

DOSBox0.74 For MASM

由于汇编的MASM是在32位环境下使用的,要在64位Windows环境下使用需要借助工具DOSBox。

DOSBox-0.74下载

地址:[https://pan.baidu.com/s/1wiAv0pwUhRavkM51pmdJCQ]
(提取码:m0kx)

MASM下载

MASM文件夹内至少要包含debug/exe2bin/link/masm四个.exe文件。
地址:[https://pan.baidu.com/s/1MC75x01gKBxZwxmBuYq6fA]
(提取码:4zu0)

使用

将DOSBox-0.74放进MASM文件夹内,找到DOSBox.exe文件双击打开,输入mount d d:\path,path可以为你的masm目录。
如果MASM文件夹下有编写好的.asm汇编指令,可以直接通过命令d:进入MASM,再输入masm,进入调试,输入.asm文件名称(可不写扩展名),依次link,debug完成。
效果如图:


Just for joy---打地鼠小游戏

Just For Joy 官网(模拟)

获取更多JFJ咨询,请关注我们的官方网站
Created by elbadaernU9.9(inc) powered by hexo 2018.

打地鼠小游戏

1
快来和你的小伙伴们来试试我们全新推出的休闲小游戏:MouseHit(打地鼠),游戏仅售0$!

购买链接:

1
2
链接: 
https://pan.baidu.com/s/1LSMij2q31pJXMwmXImponA
1
提取码:90t6

提要

我们的游戏基于Qt环境开发,可以实现调整游戏难度等各项基础功能,除此以外,我们为游戏设置了更多的可玩性因素!现在点击两个大红色问号,来获得作弊的快感!
你同样可以进行不同的游戏模式,我们目前开发出来经典模式和闯关两种模式,快来测试你在闯关模式中能闯到第几轮呢???
赶紧和你的小伙伴们一起来挑战吧!

(注,以上内容为演出效果,有时间将具体代码补至Github)


Powered by Hexo and Hexo-theme-hiker

Copyright © 2017 - 2025 青域 All Rights Reserved.

UV : | PV :