数据库--安装MySQL
数据库–安装MySQL这里建议大家使用压缩版,安装快,方便.不复杂.
软件下载
mysql5.7 64位下载地址:
https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.19-winx64.zip
电脑是64位的就下载使用64位版本的!
安装步骤
1、下载后得到zip压缩包.
2、解压到自己想要安装到的目录,本人解压到的是D:\Environment\mysql-5.7.19
3、添加环境变量:我的电脑->属性->高级->环境变量
1选择PATH,在其后面添加: 你的mysql 安装文件下面的bin文件夹
4、编辑 my.ini 文件 ,注意替换路径位置
1234[mysqld]basedir=D:\Program Files\mysql-5.7\datadir=D:\Program Files\mysql-5.7\data\ #data目录不用自己创建,初始化后自动创建port=3306skip-grant-tables
5、启动管理员模式下的CMD,并将路径切换至mys ...
大数据--创建wordcount
新建 maven 项目
+Create New Project–Maven –Next
填写好 GroupId 和 ArtifactId –Next–Finish
编写 wordcount 项目
建立项目结构目录:右键 java -> New -> package 输入 package 路径(本例是 com.hadoop.wdcount)建立 package
类似的方式在创建好的 package 下建立三个类 WordcountMain、WordcountMapper、WordcountReducer
编写 pom.xml 配置(引入要用到的 hadoop 的 jar 包)
12345678910111213141516171819202122232425262728293031323334353637<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0&quo ...
大数据--实分布部署Hadoop
大数据–实分布部署Hadoop系统及环境网络环境:处于局域网下的部分机器(>=4)系统版本:win10较新版本,支持子系统子系统版本:ubuntu18.04其他软件:Xshell6,Xftp6实验要求:在多台机器上安装hadoop,配置完成后,可以在完成官方demo的wordcount功能,实现其他功能
下载安装wsl(ubuntu)
系统要求:win10较新版本
修改电脑名(用以在ubuntu中分辨是哪台电脑,这一步推荐在后面其他节点修改配置里做):右击此电脑-属性-更改设置-计算机描述(ustc+序号)-更改-计算机名(ustc+序号)-稍后重启
关闭防火墙:控制面板-网络和Internet-网络和共享中心-wd防火墙(左下角)-启用或关闭wd防火墙-稍后重启
开启wsl功能:打开控制面板-程序-启用或关闭windows功能-勾选适用于Linux的Windows子系统-重启电脑
打开Microsoft Store,搜索ubuntu,选择18.04下载
先创建ustc用户,密码也为ustc(只是为了好记)
创建hadoop用户
12345$sudo useradd -m ...
三道题套路解决递归问题
三道题套路解决递归问题递归解题三部曲何为递归?程序反复调用自身即是递归。
我自己在刚开始解决递归问题的时候,总是会去纠结这一层函数做了什么,它调用自身后的下一层函数又做了什么…然后就会觉得实现一个递归解法十分复杂,根本就无从下手。
相信很多初学者和我一样,这是一个思维误区,一定要走出来。既然递归是一个反复调用自身的过程,这就说明它每一级的功能都是一样的,因此我们只需要关注一级递归的解决过程即可。
如上图所示,我们需要关心的主要是以下三点:
整个递归的终止条件。
一级递归需要做什么?
应该返回给上一级的返回值是什么?
因此,也就有了我们解递归题的三部曲:
找整个递归的终止条件:递归应该在什么时候结束?
找返回值:应该给上一级返回什么信息?
本级递归应该做什么:在这一级递归中,应该完成什么任务?
一定要理解这3步,这就是以后递归秒杀算法题的依据和思路。
但这么说好像很空,我们来以题目作为例子,看看怎么套这个模版,相信3道题下来,你就能慢慢理解这个模版。之后再解这种套路递归题都能直接秒了。
例1:求二叉树的最大深度先看一道简单的Leetcode题目: Leetcode 104. ...
算法--快速排序
算法–快速排序交换排序要了解快速排序,需要先来了解一下交换排序。所谓交换排序,就是根据序列中两个元素关键字的比较结果来对换两个记录在序列中的位置。
递归方法1:左右指针法
方法2:前后指针法
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162public class QuickSort { public static void main(String[] args) { int[] a = {3,5,2,1,7,6,4}; QuickSort(a,0,6); for(int a1:a){ System.out.print(a1+"--"); } } //左右指针 public static int Partiti ...
算法--并查集
算法–并查集例子就是杭电上的畅通工程:
http://acm.hdu.edu.cn/showproblem.php?pid=1232
首先在地图上给你若干个城镇,这些城镇都可以看作点,然后告诉你哪些对城镇之间是有道路直接相连的。最后要解决的是整幅图的连通性问题。比如随意给你两个点,让你判断它们是否连通,或者问你整幅图一共有几个连通分支,也就是被分成了几个互相独立的块。像畅通工程这题,问还需要修几条路,实质就是求有几个连通分支。
如果是 1 个连通分支,说明整幅图上的点都连起来了,不用再修路了;如果是 2 个连通分支,则只要再修 1 条路,从两个分支中各选一个点,把它们连起来,那么所有的点都是连起来的了;如果是 3 个连通分支,则只要再修两条路……
以下面这组数据输入数据来说明
4 2 1 3 4 3第一行告诉你,一共有 4 个点,2 条路。下面两行告诉你,1、3 之间有条路,4、3 之间有条路。那么整幅图就被分成了 1-3-4 和 2 两部分。只要再加一条路,把 2 和其他任意一个点连起来,畅通工程就实现了,那么这个这组数据的输出结果就是 1。好了,现在编程实现这个功能吧,城 ...
算法与数据结构--布隆过滤器
布隆过滤器
一个很长的二进制向量和一个映射函数
可以用来检索一个元素是否在一个集合中(判断元素不在这个集合中,正确率100%,判断在时,准确率不确定)
优点:空间效率和查询时间都远远超过一般的算法
缺点:有一定的误识别率和删除困难
案例:
比特币
redis
分布式系统mapreduce :用来判断子任务是否在一台机器上
算法--位运算
算法–位运算概念
符号
描述
运算规则
&
与
两个位都为1时,结果才为1
\
或
两个位都为0时,结果才为0
^
异或
两个位相同则为0,相异为1
~
取反
0变1,1变0
<<
左移
各二进位全部左移若干位,高位丢弃,低位补0
>>
右移
各二进位全部右移若干位,对无符号数,高位补0,有符号数,各编译器处理方法不一样,有的补符号位(算术右移),有的补0(逻辑右移)
异或操作的一些特点
123456X^0=XX^1s = ~X //1s = ~0(1s表全1的数)X^(~X) =1sX^X = 0 //importanta^b =c=>a^c=b,b^c=a //swap a^b^c = a^(b^c)=(a^b)^c//结合律
实战中常用位运算操作
X&1==1 OR ==0 =>判断奇偶(x%2==1)
...