一、基础语法学习

-------------------------restframework
1. Restful规范
    一、后端发送列表、字典
    二、 request获取get.post数据
2. APIVIEW

3. 序列化组件
from app01 import myserial
class Book(APIVIEW):
    def get(self,request):
        response = MyResponse()
        books = models.Book.objects.all()
        ret = myserial.BookSer(books,many=True)
        response.msg = '查询成功'
        response.data = ret.data
        return Jsonponse(response.get_dic,safe=False)
        
        
        
        
        



4. 视图组件

5. 解析器

6. 认证组件

7. 权限组件

8. 频率组件

9. 分页器

10. 相应器

11. url控制器

12. 版本控制




------------java-------------
1. java的三个版本
    ee
    se
    me
2. Java跨平台原理
    在不同的操作系统上有不同的jvm虚拟机,Java程序运行
    在虚拟机中,并不是直接运行在操作系统之上的
3. jvm
    java virtual mahine:主要目的是中介
4. 开发环境
    JRE
        - java runtime environment
        - 包含JVM,和一些核心类库(API)
    JDK
        - java development kit
        
    JDK = JRE + 工具类
        - 开发人员使用的
        - 包含Java的开发工具,也包含了JRE
        - 其中的开发工具:
            编译工具(javac.exe)
            打包工具(jar.exe)等
        - 下载
            www.oracle.com
            Java SE 8u191/192
        - 安装
            jdk8111
            安装jre
            测试成功:
                - cmd里输入java
                - cmd里输入javac
                - 配置环境变量bin
                
        - 卸载
            - 所有程序里卸载两个
            
5. 使用
    - .java文件----javac.exe---->.class文件----java.exe---->结果
                    编译                        运行
    - 新建个demo.java文件
        - notepad++的设置
            首选项语言选择java
            使用ANSI编码
    - 运行
        cmd里javac.exe Demo.java,生成.class文件
        cmd里输入java Demo
            
6. classpath
    classpath是java命令,寻找可执行的class字节码文件的路径
    1.6之前有classpath这个环境变量的设置  
        - set classpath=c:/code
    之后直接 java -cp c:\,c:\code1 Dema
7. 注释
    单行 //
    多行 /*   */
            public
            
8. 常用dos命令
    cd
    md 
    rd
    del
    exit
    echo
            
9. 关键字
    全是小写字母
        定义类的
            - class
            - void
            .
        定义流程控制
            - if
        定义访问权限
            - public
            - private
            - protected
        定义类、方法、变量修饰符
            - static
        用于定义建立实例
            - new
10. 标识符
        字母、数字、_,$组成
        不能以数字开头
        严格区分大小写
        java中名称规范:
            - 包名:
                小写,如xxx,yyy
            - 类名
                首字母大写,XxxYyy
            - 变量名,方法名
                多单词组成时,第一个单词首字母小写,第二个单词首字母大写
                xxxYyyZzz
                main
            - final变量名,所有字母都大写,单词之间有下划线分割
                XXX_YYY_ZZZ
                MAX_VALUE
11. 常量和变量
    常量(字面量)
        - 整数
            - 0b101
            - 0177
            - 0xa1
        - 小数
        - 布尔
        - 字符
            - 单引号括起来的字母,数字或者符号(有且只有一个字符:空格也是一个字符)
        - 字符串
        - null
    
12. 负数
    负数在计算机中是以补码的形式存在的
    如求-5
        +5      符号位     数值位
        +5       0         000 0101
        -5原码   1         000 0101
        -5反码   1         111 1010
        -5补码   1         111 1011
    快速求取负数补码的方式:
        正数原码,从右向左数直到1,将1左边的值全部取反,
        
13. 变量
    - 先定义,后赋值
        int b;
        b = 30;

14. 常量和变量,基本数据类型
    基本数据类型
        数值型
            整型
                byte, short , int , long
                8bit   16      32    64   
            浮点型
                float,     double
                 32 0.0D     64 0.0F
        
        字符串char
            16bit
        布尔型boolean
        
        (整数默认int,小数默认double,字符串是类,String,是引用数据类型)
    引用数据类型
        类class
        接口interface
        数组[]
        
15. 数据类型的转换
    - 只有相同类型的数据才能进行计算
    - 若数据类型不同
        - 系统会自动类型转换:隐式转换(从小范围到大范围)
            int a=10;
            double b=1.5
            double res = a+bin
        - 显式转换:从大范围到小范围,发生的是高位截断操作
            目标类型 变量名 = (目标类型)被转换的值;
            如:
                int i=10
                byte b = (byte)i;
        - 浮点型到整型的转换,先取整,然后高位截断
        
    char型
        - char型变量参与运算,实际上使用的是对应的int型值
            char ch = 'a';
            System.out.println(ch+0) #97 
        - 定义char型变量,可以直接指定int值
            char ch2 = 65
            System.out.println(ch2);#A
16.思考题
    - 赋值语句右边如果是常量组成的表达式,在编译阶段直接算出结果
        b = 3+4;
        -> b = 7;
    - byte a = (byte)130  #-126
    
        1000 0010  -126
        0111 1110  126
        0111 1111  127
        
        1111 1111  -1
        0111 1111  最大正数
        
17. 运算符
        - 赋值运算符
            =
            扩展赋值运算的
                - +=。。。
                    int a=0;
                    a +=10;
                - 可以自动的进行类型转换,以匹配等号左侧的变量类型
                    -eg1    
                        byte s=1;
                        s +=1; //s=s+1,相当于s=(byte)(s+1);
                    -eg2
                        byte s=127;
                        s+=1; //s=(byte)(127+1)  --> -128
        
        - 算术运算符
            - + - 。。
                - %取模操作的结果正负取决于被模数,即%前面的数的符号决定了结果的正负
            - ++ 针对变量进行操作的
                前++:放到变量前
                    int a=10;
                    int b=++a;
                    先把变量值加1,拿去运算,经过这个操作后,变量的值已经是加1了
                后++int b=a++;
                    先把变量原来的值运算,经过这个操作后,变量的值已经是加1了
                    
            - eg1
                int a=4;
                int b =(++a)+(a++)+(a*10)   #a=6 b=70
            - 字符串连接字符“+- 字符串连接符要求+两侧紧挨着的操作数中有字符串
                 System.out.println("hello"+10+20)  #hello 1020
                 System.out.println(5+5+"hello"); #10hello
             
        - 比较运算符
            == ,比较的结果是boolean型,true或者false
            
        - 逻辑运算符
            & 
            |^  异或   两个操作数不同时, 为true
            && 短路与
                单&时,左边无论真假,右边都计算
                &&时,若左边为假,右边不参与运算
            || 短路或
                ||时,左边为真,右边不参与运算,同上
        - 位运算符
            针对的是数的二进制位进行操作的
            << 左移:左侧高位丢弃,右侧空出的位用0补充
            >> 带符号右移:低位丢弃,左侧用原来的符号位进行补充(正数是0)
                -1带符号右移任意位,都不改变其值
                
            >>> 无符号右移:低位丢弃,左侧用0补充,
                    一个负数如果无符号右移,肯定会变成正数
            ~ 按位取反
            以下是两个操作数:
            & 按位与
            | 按位或
            ^ 按位异或
            
            总结:
                - 按位异或运算的两个简单应用
                    - 不适用第三方变量即可交换两个变量的值
                        int a=10;
                        int b=20;
                        System.out.println("交换前:a="+a+",b="+b)
                        a=a^b; //a是保存a,b异或的结果
                        b=a^b;
                        a=a^b;
                        System.out.println("交换后:a="+a+",b="+b)

                    - 简单加密
                        int money=200;
                        int key=10086;
                        int res=money ^ key
                        System.out.println("密文是:"+res);
                        
                        res = res^key;
                        System.out.println("铭文师:"+res);
                        
                - 左移、右移快捷计算
                    - 假设操作位数为int型,移动位数为x,若x未超过32为,左移n位,相当于乘以2
                    的n次方,右移相当于除以2的n你次方;
                        若超过32位,那么他实际移动的位置是x%32
                        如:
                            2 << 34  等价于 2 << 2   2*(2*2)
                            2 >> 33  等价于 2 >> 1   2/2
                            3 >> 32  等价于 3 >> 0   没移动,仍然是3
        
        - 三元运算符
            (条件表达式)?表达式1:表达式2;
                条件表达式为true时,整体取表达式1的值
            - 使用三元运算符取三个数中的最大值
                max = (a>b)?((a>c)?a:c):((b>c)?b:c);
                System.out.println(max);
            - 
                System.out.println(2>1?2:1.0); //2.0 两个表达式类型不同时,都转换成可以自动转换的类型
                System.out.println(2>1?2:true);//2 此处两个值都转换成共同的父类型:object
            
View Code

 add tan

    LINUX 云计算架构师
    
1U 4.45cm

Ubuntu
    - https://www.cnblogs.com/6luv-ml/p/6510736.html
    - Ubuntu_server_100
    - wudi
    - wudi1234@
Fedora
CentOS

常用命令
    - ls      list directory contents
    - pwd    print working directory
    - su     switching user or group  当前用户是
    - cd
    - touch [文件名]
    - mkdir [目录名]
    - rm [文件名]
    - clear

分区
    - /boot     引导分区 作用:系统启动
        200M
    - /         所有文件的根
        10GB
    - swap      交换分区
        2048M

    - sda       表示第一块磁盘

主机名:digod63.cn
root密码: 123456


桥接    
    虚拟机IP和DNS与真实机一样
NAT(地址转换模式)    
    与物理机IP一致,借助虚拟NAT和DHCP,才能上网
    虚拟机使用NAT模式时,Linux系统需要配置成动态获取IP
HOST-Only 
    虚拟机与外网隔开,只和主机通讯 
    虚拟机使用HOST-Only 模式时,Linux系统需要配置成动态获取IP

----------- 安装使用Ubuntu-------------    

linux系统下文件目录结构
    - 多用户操作系统
    - /
        - /bin    可执行的二进制文件
        - /etc  系统配置文件存放的目录
        - /home     系统默认的用户家目录
            /itheima
            /python
                /Desktop
                /Documents
                /Downloads
            /laowang
        - /lib
        - /user
        
        
django_flask_learn                
dailyfresh
flask
公众号flask设计
租房网代码
            

sudo  以root身份管理系统
apt(Linux下一款安装包管理工具)
    - sudo apt install xxxx
    - sudo apt remove xxxx
    - sudo apt upgrade

    
    
    
    
    
    
    
----wechat-------------------
        - 80
        - abort
        - 常量中所有字母都是大写
    
    
----- 远程阿里云----
1、连接
    - xshell 
        47.93.26.117  公
        wudi1234!
            ip :172.17.54.22----- 使用Ubuntu ----    
1. Ubuntu16.04全屏
    1. 在终端输入xrandr
    2. 输入需要设置的分辨率,xrandr -s 1920x1440
    3. ctrl+alt+enter
2. Ubuntu怎样安装Python3.6    (暂时未装)
    1. Ubuntu默认安装了Python2.7和3.5
    https://www.cnblogs.com/yjlch1016/p/8641910.html
    2. pip2 -V  是py2.7
        pip/pip3 -V 是3.5
3. Ubuntu16.04使用pip3和pip安装numpy,scipy,matplotlib等第三方库    
    https://blog.csdn.net/qq_22186119/article/details/70325270
    1. sudo apt install python3-pip
4. Ubuntu16.04添加新用户并增加管理员权限    
    1. 添加新用户 
        sudo su 进root 
        sudo adduser xxx ,添加新用户
        userwudi
        wudi1234@
    2. 增加管理员权限 
        如果需要让此用户有root权限,执行命令:
        sudo vim /etc/sudoers
        修改文件,添加: 
        xxx ALL=(ALL:ALL) ALL    
        sudo apt-get install vim
    3.从root切换到username
        su username
        (可能需要输入root密码)
    4.从username切换到root
        sudo su
      (需要输入username的密码)
5. 安装python3虚拟环境    
    - 安装虚拟环境/usr/bin/python: No module named virtualenvwrapper
        在bashrc文件里面加入如下命令即可:
            VIRTUALENVWRAPPER_PYTHON=/usr/bin/python3,让其自动选择Python3解释器,就不会报错了!
        https://blog.csdn.net/weixin_40612082/article/details/83688750
    - 创建python3虚拟环境
同时装了Python3和Python2,怎么用pip?    
    https://www.zhihu.com/question/21653286/answer/97950092    
    
6. 安装redis
    - download 3.2.8
    查看redis进程
        ps aux | grep redis
    - 集群:
        在哪个服务器上写数据:CRC16   ,slot
        集群会把数据存在一个master节点,然后这个master和其他对应的slave之间进行数据同步
        集群必须要要有3个或以上的master节点
    
    
-------------WeChat------------------------
1、流程
    用户     ---- Nginx  ----- ----  ----         业务服务器    ----      mysql     redis
        负载均衡,反向代理,提供静态文件      Gunicorn + Flask      
    
------------django dailyfreash

1. models
    - Basemodel
    - 
    1. user
            User
            Address
    2. goods
            GoodType
            GoodsSKU
            Goods
            GoodsImage
            IndexGoodsBanner
            IndexTypeGoodsBanner
            IndexPromotionBanner
            
    3. order
            OrderInfo

2.     
    
    
-------------------------restframework
1. Restful规范
    一、后端发送列表、字典
    二、 request获取get.post数据
2. APIVIEW

3. 序列化组件
from app01 import myserial
class Book(APIVIEW):
    def get(self,request):
        response = MyResponse()
        books = models.Book.objects.all()
        ret = myserial.BookSer(books,many=True)
        response.msg = '查询成功'
        response.data = ret.data
        return Jsonponse(response.get_dic,safe=False)
        
        
        
        
        



4. 视图组件

5. 解析器

6. 认证组件

7. 权限组件

8. 频率组件

9. 分页器

10. 相应器

11. url控制器

12. 版本控制




------------java-------------
1. java的三个版本
    ee
    se
    me
2. Java跨平台原理
    在不同的操作系统上有不同的jvm虚拟机,Java程序运行
    在虚拟机中,并不是直接运行在操作系统之上的
3. jvm
    java virtual mahine:主要目的是中介
4. 开发环境
    JRE
        - java runtime environment
        - 包含JVM,和一些核心类库(API)
    JDK
        - java development kit
        
    JDK = JRE + 工具类
        - 开发人员使用的
        - 包含Java的开发工具,也包含了JRE
        - 其中的开发工具:
            编译工具(javac.exe)
            打包工具(jar.exe)等
        - 下载
            www.oracle.com
            Java SE 8u191/192
        - 安装
            jdk8111
            安装jre
            测试成功:
                - cmd里输入java
                - cmd里输入javac
                - 配置环境变量bin
                
        - 卸载
            - 所有程序里卸载两个
            
5. 使用
    - .java文件----javac.exe---->.class文件----java.exe---->结果
                    编译                        运行
    - 新建个demo.java文件
        - notepad++的设置
            首选项语言选择java
            使用ANSI编码
    - 运行
        cmd里javac.exe Demo.java,生成.class文件
        cmd里输入java Demo
            
6. classpath
    classpath是java命令,寻找可执行的class字节码文件的路径
    1.6之前有classpath这个环境变量的设置  
        - set classpath=c:/code
    之后直接 java -cp c:\,c:\code1 Dema
7. 注释
    单行 //
    多行 /*   */
            public
            
8. 常用dos命令
    cd
    md 
    rd
    del
    exit
    echo
            
9. 关键字
    全是小写字母
        定义类的
            - class
            - void
            .
        定义流程控制
            - if
        定义访问权限
            - public
            - private
            - protected
        定义类、方法、变量修饰符
            - static
        用于定义建立实例
            - new
10. 标识符
        字母、数字、_,$组成
        不能以数字开头
        严格区分大小写
        java中名称规范:
            - 包名:
                小写,如xxx,yyy
            - 类名
                首字母大写,XxxYyy
            - 变量名,方法名
                多单词组成时,第一个单词首字母小写,第二个单词首字母大写
                xxxYyyZzz
                main
            - final变量名,所有字母都大写,单词之间有下划线分割
                XXX_YYY_ZZZ
                MAX_VALUE
11. 常量和变量
    常量(字面量)
        - 整数
            - 0b101
            - 0177
            - 0xa1
        - 小数
        - 布尔
        - 字符
            - 单引号括起来的字母,数字或者符号(有且只有一个字符:空格也是一个字符)
        - 字符串
        - null
    
12. 负数
    负数在计算机中是以补码的形式存在的
    如求-5
        +5      符号位     数值位
        +5       0         000 0101
        -5原码   1         000 0101
        -5反码   1         111 1010
        -5补码   1         111 1011
    快速求取负数补码的方式:
        正数原码,从右向左数直到1,将1左边的值全部取反,
        
13. 变量
    - 先定义,后赋值
        int b;
        b = 30;

14. 常量和变量,基本数据类型
    基本数据类型
        数值型
            整型
                byte, short , int , long
                8bit   16      32    64   
            浮点型
                float,     double
                 32 0.0D     64 0.0F
        
        字符串char
            16bit
        布尔型boolean
        
        (整数默认int,小数默认double,字符串是类,String,是引用数据类型)
    引用数据类型
        类class
        接口interface
        数组[]
        
15. 数据类型的转换
    - 只有相同类型的数据才能进行计算
    - 若数据类型不同
        - 系统会自动类型转换:隐式转换(从小范围到大范围)
            int a=10;
            double b=1.5
            double res = a+bin
        - 显式转换:从大范围到小范围,发生的是高位截断操作
            目标类型 变量名 = (目标类型)被转换的值;
            如:
                int i=10
                byte b = (byte)i;
        - 浮点型到整型的转换,先取整,然后高位截断
        
    char型
        - char型变量参与运算,实际上使用的是对应的int型值
            char ch = 'a';
            System.out.println(ch+0) #97 
        - 定义char型变量,可以直接指定int值
            char ch2 = 65
            System.out.println(ch2);#A
16.思考题
    - 赋值语句右边如果是常量组成的表达式,在编译阶段直接算出结果
        b = 3+4;
        -> b = 7;
    - byte a = (byte)130  #-126
    
        1000 0010  -126
        0111 1110  126
        0111 1111  127
        
        1111 1111  -1
        0111 1111  最大正数
        
17. 运算符
        - 赋值运算符
            =
            扩展赋值运算的
                - +=。。。
                    int a=0;
                    a +=10;
                - 可以自动的进行类型转换,以匹配等号左侧的变量类型
                    -eg1    
                        byte s=1;
                        s +=1; //s=s+1,相当于s=(byte)(s+1);
                    -eg2
                        byte s=127;
                        s+=1; //s=(byte)(127+1)  --> -128
        
        - 算术运算符
            - + - 。。
                - %取模操作的结果正负取决于被模数,即%前面的数的符号决定了结果的正负
            - ++ 针对变量进行操作的
                前++:放到变量前
                    int a=10;
                    int b=++a;
                    先把变量值加1,拿去运算,经过这个操作后,变量的值已经是加1了
                后++int b=a++;
                    先把变量原来的值运算,经过这个操作后,变量的值已经是加1了
                    
            - eg1
                int a=4;
                int b =(++a)+(a++)+(a*10)   #a=6 b=70
            - 字符串连接字符“+- 字符串连接符要求+两侧紧挨着的操作数中有字符串
                 System.out.println("hello"+10+20)  #hello 1020
                 System.out.println(5+5+"hello"); #10hello
             
        - 比较运算符
            == ,比较的结果是boolean型,true或者false
            
        - 逻辑运算符
            & 
            |^  异或   两个操作数不同时, 为true
            && 短路与
                单&时,左边无论真假,右边都计算
                &&时,若左边为假,右边不参与运算
            || 短路或
                ||时,左边为真,右边不参与运算,同上
        - 位运算符
            针对的是数的二进制位进行操作的
            << 左移:左侧高位丢弃,右侧空出的位用0补充
            >> 带符号右移:低位丢弃,左侧用原来的符号位进行补充(正数是0)
                -1带符号右移任意位,都不改变其值
                
            >>> 无符号右移:低位丢弃,左侧用0补充,
                    一个负数如果无符号右移,肯定会变成正数
            ~ 按位取反
            以下是两个操作数:
            & 按位与
            | 按位或
            ^ 按位异或
            
            总结:
                - 按位异或运算的两个简单应用
                    - 不适用第三方变量即可交换两个变量的值
                        int a=10;
                        int b=20;
                        System.out.println("交换前:a="+a+",b="+b)
                        a=a^b; //a是保存a,b异或的结果
                        b=a^b;
                        a=a^b;
                        System.out.println("交换后:a="+a+",b="+b)

                    - 简单加密
                        int money=200;
                        int key=10086;
                        int res=money ^ key
                        System.out.println("密文是:"+res);
                        
                        res = res^key;
                        System.out.println("铭文师:"+res);
                        
                - 左移、右移快捷计算
                    - 假设操作位数为int型,移动位数为x,若x未超过32为,左移n位,相当于乘以2
                    的n次方,右移相当于除以2的n你次方;
                        若超过32位,那么他实际移动的位置是x%32
                        如:
                            2 << 34  等价于 2 << 2   2*(2*2)
                            2 >> 33  等价于 2 >> 1   2/2
                            3 >> 32  等价于 3 >> 0   没移动,仍然是3
        
        - 三元运算符
            (条件表达式)?表达式1:表达式2;
                条件表达式为true时,整体取表达式1的值
            - 使用三元运算符取三个数中的最大值
                max = (a>b)?((a>c)?a:c):((b>c)?b:c);
                System.out.println(max);
            - 
                System.out.println(2>1?2:1.0); //2.0 两个表达式类型不同时,都转换成可以自动转换的类型
                System.out.println(2>1?2:true);//2 此处两个值都转换成共同的父类型:object
                
18.程序的流程控制
    
    - 顺序结构
    - 分支结构(if,switchif 
            -   a=10
                if(a != 10){..}
            -   if(a=10){
                xxxxx
                }else if{
                xxxxx
                }else{xxx}
            - if的嵌套
              if(){
                if(){}
                else{}
                }else{
                if(){}
                }
        switch
            - 格式
                #swich后数据类型只能是byte,short,char,int,string,枚举类型
                swicth(变量,常量,表达式){
                    case 值1:{
                        语句体1;
                        break;
                    }
                    case 值2.。。。
                    default:{
                        语句体n;
                        break;
                    }    
                }
    - 循环结构(while,do-while,for)
        - for
            -    for(int i;i<10;i++){//循环条件判断语句可以不写,默认为true
                    System.out.println("hello");
                }
            - 求水仙花数
                for(int i=100;i<=999;i++){
                    int bai = i/100;
                    int shi = i/10%10;
                    int ge = i%10;
                    if(bai*bai*bai+shi*shi*shi+ge*ge*ge=i){
                        System.out.println(i);
                    }
                }
            - 输出1~100之间的数,数字之间用空格,且每8个一行
                #定义一个变量,充当判断换行标示符
                int x=1;
                for(int i=1;i<=100;i++){
                    System.out.println(i);
                    if(i%8==0){
                        System.out.println();
                    }else{
                        System.out.println('');
                    }
                    x++;
                }
                
        - while
            - eg1
                int thick=1;
                int count=0;
                while(thick<8000){
                    thick = thick*2;
                    count++;
                    
                }
                System.out.println("总折叠次数是:" + count)
            }
                
        - do while
            int i=0;
            do{
                System.out.println("hello");
                i++;
            }while(i<5);
        - 循环嵌套
            for(int i=0;i<5;i++){
                for(int j=0;j<5;j++){
                    System.out.print("+");  #不换行
                }
                System.out.println();   #在这换行
            }
            
            for(int i=0;i<5;i++){
                
                int j=0;
                while(j<5){
                    System.out.print("$");
                    j++;
                }
                System.out.println();   #在这换行
            }
            - 打印正等腰三角形
                for(int i=0;i<10;i++){
                    //控制打印多少空白
                    for(int j=0;j<10-i;j++){
                        System.out.print(' ');
                    }
                    for(int k=0;k<2*(i+1)-1;k++){
                        System.out.print("*");
                    }
                    #换行
                    System.out.println();
                }
            - break 关键字
                abc: for(int i=0;i<5;i++){
                    for(int j=0;j<5;j++){
                        if(j==3){      
                            break abc;   #通过标签指定要跳出的循环
                        }
                        System.out.println("*");
                    }
                    System.out.println();
                }
            - 生成随机数
                double i = Math.random();
                System.out.println(i);
            - 生成随机1~100整数值
                int i = (int)(Math.random()*100)+1;
                
            - 打印n行,m列,其中n和m的值从键盘输入
                Scanner s = new Scanner(System.in);
                System.out.println("请输入行值:")
                int row = s.nextInt();
                System.out.println("请输入列值:")
                int column = s.nextInt();
                
                for(int i=0;i<=row;i++){
                    for(int j=0;j<=column;j++){
                        System.out.println("*");
                    }
                    System.out.println();
                }
            
            
19. 键盘键入
    - 录入数据
        import java.util.Scanner
        
        Scanner s = new Scanner(System.in);
        System.out.println("请输入一个字符串:")
        String str = s.next();
        System.out.println("你录入的值是:"+i)
        
        数字 --- int i = s.nextInt();
        小数double值  ---- double d = s.nextDouble();
        
20. method
    之前用过:
        new Scanner(System.in);
        s.nextInt()
        println()
        Math.random()
    - eg1
        public static void sayHello{
            //方法体
            System.out.println("hello world")
            System.out.println("hello world")
            System.out.println("hello world")
            return ;
        }
        
        public static void main(String[] args){
            sayHello();  #调用自定义方法
        }
    
    - public static int add(int a,int b){
        return a+b;
    }
    
    - 输入一个数n,输出n*n的表
        import java.util.Scanner
        public static void main(String[] args){
            Scanner s = new Scanner(System.in);
            System.out.println("输入打印行的数:");
            int row = s.nextInt();
            #调用方法
            printN(row);
        }
        public static void printN(int row){
            for(int i=1;i<=row;i++){
                for(int j=1;j<=i;j++){
                    System.out.println(j+"x"+i+"="+(j*i)+"\t");
                }
                System.out.println();
            }
            return ;        
        }
        
    - 在用户输入1,则输出星期一
        public static String printN(int week){
        
            String res = "";
            switch(week){
                case 1:
                    res = "星期一";
                    break;
                ...
                default:
                    res = "输入不合法";
                    break;
            }
            return res;
        }
        
    - 比较a,b输出大的那个
        return a>b?a:b;
    - 方法的重载(overload)
        概念:在同一个类中,允许出现同名,但是形参列表不同的多个方法
        为什么使用:为了重复使用方法名,简化编程,方便阅读
        如何辨别到底调用的那个方法:
            重载方法名相同,参数列表不同,虚拟机就是根据调用方法时传递不同的参数来决定
            到底调用那个方法的
        如:
            public static void main(String[] args){
                test((short)(-1));
                short s=1;
                test(s);
            }
            public static void test(int a){
                System.out.println("int 方法");
            }
            public static void test(short a){
                System.out.println("short 方法");
            }
        
        
    - 合并两个数组 data1=[1,2,3] data2=[4,5,6]
        public static void main(String[] args){
            int[] a=[1,2,3]
            int[] b=[4,5,6]
            printArray(a);
            printArray(b);
            
            printArray(merge(a,b))
        }
        /*方法一
        public static int[] merge(int[] a,int[] b){
            int[] dest = new int[a.length + b.length]
            for(int i=0;i<a.length;i++){
                dest[i] = a[i];
            }
            for(int i=0;i<b.length;i++){
                dest[i+a.length] = b[i];
            }
            return dest;
        }
        */方法二
        public static int[] merge(int[] a,int[] b){
            int[] dest = new int[a.length + b.length]
            
            int index=0;
            for(int i=0;i<a.length;i++){
                dest[index++] = a[i];
            }
            for(int i=0;i<b.length;i++){
                dest[index++] = b[i];
            }
            return dest;
        }
        
    - 随机产生两个数组,并合并(用上面的方法)
        #随机产生一个数组,int[]; int len,int max,int min
        public static int[] genArray(int len,int min,int max){
            int len0 = (int)(Math.random()* len +1);
            int[] arr = new int[len0];
            for(int i=0;i<arr.length;i++){
                arr[i] = (int)(Math.random()*(max-min+1)+min);
            }
            return arr;
        }

21. 数组
    - 同一数据类型的0到多个数据的组合
        - length
        - element
        - index
    - 定义数组的格式
        - 不指定初始值,只指定长度
            int[] xx = new int[length];
        - 定义时就指定初始值(静态初始化)
            int[] xx = new int[]{1,2,3,4};
            System.out.println(xx); #[I@111111111111
            
            
--------tazhou-------------------------------------------
22. 转义字符
    a. 八进制
        \+用1~3位的8进制数字
        \0
    b. 十六进制
        \u+ 4位16进制数
        \u0000
    c. 特殊字符
        \"
        \'
        \\

23. 数组
    一维数组
        数组赋值
            - 动态赋值
                datatype[] array = new datatype[size];
            - 静态赋值
                int[] array = new int[]{1,23,};
                int[] array = {1,2,3};
    
    二维数组
        矩阵 m[i][j]
            二维数组的生明:
                datatype[][] d_array = new datatype[row][col];
            初始化
                动态赋值
                    
                    嵌套for循环,遍历二维数组的每个元素
                静态赋值
                    datatype[][] d_array = new datatype[][]{{},{},...}
                    datatype[][] d_array = {{},{}...};
                
            eg。
                int[][] d_array = new int[3][2];
                
                for(int i=0;i<d_array.length;i++){
                    for(int j=0;j<d_array[i].length;j++){
                        d_array[i][j] = i*2 + (j+1);
                    }
                
                
                }
    - 矩阵相乘
        A * B A的列数要等于B的行数  A[i][j] * B[j][k] =  C[i][k]
        
        int[][] A = {{1,2},{3,4}};
        int[][] B = {{1},{2}};
        int C_row = A.length;
        int C_col = B[0].length;
        int[][] C = new int[C_row][C_col];
        for(int i=0;i<C_row;i++){
            for(int j=0;j<C_col;j++){
                for(int k=0;k<B.length;k++){
                    C[i][j] += A[i][k]*B[k][j];    
                    }
            }        
        }
24. eclipse使用
        - 常用
            workspace
            project
            package
            class
        - 快捷键
            ctrl+ /
            ctrl shift+ /
                - ctrl shift+ \
            ctrl shift+ f 格式化
            ctrl shift+ o 实现包的组织
            alt+ / 补齐
            
25. 随机点名器
    package com.it.edu;

    import java.util.Random;

    public class RandomCall {

        public static void main(String[] args) {
            // TODO Auto-generated method stub
            //存储学生的姓名
            String[] StuNames = new String[10];
            addStudent(StuNames);
            
            for (int i = 0; i < StuNames.length; i++) {
                String name = randCallName(StuNames);
                System.out.println(""+i+"次点名:"+name);
            }
        };
        /* 实现学生姓名初始化*/
        public static void addStudent(String[] StuNames) {
            
            for (int i = 0; i < StuNames.length; i++) {
                StuNames[i] = "" + i;
                System.out.println(StuNames[i]);
            }
        }
        /*
         * 实现随机点名
         * @return 返回随机点到的名字String
         * @param 学生名字初始化的数组
         * */
        public static String randCallName(String[] StuNames){
            
            Random rand = new Random();
            //生成随机数 0~length-1
            int index = rand.nextInt(StuNames.length);
            String name = StuNames[index];
        
            return name;
        }

    }

    
26. 类的创建
    1. 4类8种,基本数据类型
    2. 引用数据类型:String,数组,接口等
        自定义的数据类型
    3. 
        修饰符(public等) class 类名{
            属性:成员变量;
            方法:成员函数;
        }
    4. eg1
        - Phone.java
            package com.it.edu;

            public class Phone {
                String brand;
                String color;
                int price;
                
                public void openPhone() {
                    System.out.println("开机");
                    
                }
                
                public void closePhone() {
                    System.out.println("关机");
                    
                }
                
            }

        
        - PhoneTest.java
        package com.it.edu;

        public class PhoneTest {

            public static void main(String[] args) {
                // TODO Auto-generated method stub
                
                Phone iphone = new Phone();
                iphone.brand = "苹果手机";
                iphone.openPhone();
                
                Phone huawei = new Phone();
                huawei.brand = "华为手机";
                huawei.closePhone();            
            }
        }

    
27. 面向对象
    1. 对象之间交互
        导入包的使用
            -不同package之间需要import
            -可以ctrl shift+ O
            -以及需要改变属性时:   public String name;
            - 导入Phone类,使用
                public void buy(Phone phone) {
                        System.out.println(name+"买了"+phone.brand);
                    }
    
    2. 成员变量和局部变量
        成员:对象的属性,放在对象之内
            堆中 :临时的,由创建对象时所开辟的一块空间,对象销毁之后,系统回收
        局部:是在方法之内 for(int i)
            栈中 :是方法生成的时候,压站生成。整个程序结束后才结束
    3. 自动生成getters 和 setters
            private String name;
            private char sex;
            private int age;
            private double salary;
    
    4. 封装:隐私性
        - 1.数据的访问权限控制
          2.数据赋值的规范化、标准化的管控
        - 实现封装的方法
            成员变量 +修饰符 private 私有的  无法直接访问   需要生成方法
    
    5. 构造函数
        new对象的时候直接初始化,用到构造函数, --》直接赋值
            如 int[] array = new int[]{1,23,4};
                Person p = new Person("张三",20);
        构造函数是一种特殊的方法,主要用来对对象初始化,与new一起使用
        构造函数的重载,参数列表不一致,但是函数名一致的方法

    6. this关键字
        this表示当前类的对象
        thisi();表示调用当前对象的无参构造函数
    7. static(static主要用来修饰的成员---成员变量、方法)
        1. static修饰的成员在类加载的时候就直接运行,优先级高
        2. 通过类直接访问,类名,成员
        3. static是针对所有对象的属性值相同的时候才使用static修饰
        4. 被static修饰的方法无法使用非静态变量,非静态方法不受限制
        这样因为静态方法可以直接调用,里面的变量也必须得可以直接初始化,如果是非静态变量,
变量还未赋值未加载,空间也还没申请出来
        使用静态、非静态的意义:
            一些属性公用的就用static修饰,这样改一个值就是实现所有对象值的变化 
        
        private String name;
        public char sex;
        
        private static String move="会动";
        public static double weight=200.0;
        
    8. 静态代码构造块
        初始化一个对象,静态构造代码块执行且只执行一次
        class 类名{
            static{
                变量:
            }
        }
        
    9. 构造代码块
        构造代码块可以执行多次,在创建对象时使用
        优先级: 静态构造代码块 --》构造代码块 --》构造函数
        class 类名{
            {
                变量:
            }
        
        }
        
        
    10. 继承
        1. extends 
            Student stu = new Student("zhangsna ",18,nan,..)
            stu.show(); 继承父类的方法
        2. 子类可以访问父类中的非私有的属性和方法
        3. 子类不能继承父类的构造方法
        4. 父类可以被多个子类继承,一个子类只有一个直接父类
        5. 继承可以存在多级
    
    11. 方法重写
        重载:在同一类中,方法名一样,参数列表不同
        重写: 在继承中出现的,是子类和父类具有相同的方法,子类的这一个方法,叫做重写,
            方法名,返回值,参数列表相同(不同的是函数体)
    
    12. super关键字
        作用:
            - 在子类的构造方法中直接通过super关键字,调用父类的构造方法
            如果父类有多个构造函数,根据参数列表来区分。   必须放在第一行
            - 如果父类和子类中有同名成员变量,此时要访问父类成员变量可以通过super
            - 如果子类重写了父类的方法,可以通过super调用父类方法
        
        this--当前对象  子类的方法、属性
        super--父类对象  父类的方法、属性
        
    
    
    
    多态
    
    
    
    
    
    
    
    
    
    
24. 备注
    - System.out.println与System.out.print的区别
        System。out。println()这个编译器给你自动换行了 
        而System。out.print()这个的话没换行 
        System。out。println()这个相对于System。out。print(“\n”)
    
                
                
                
                
        
    
----------------hadoop---------------

1. 大数据
    1.举例
        商品推荐 :
            - 大量的订单存储
            - 大量的订单计算
        天气预算:
            - 大量的天气存储
            - 大量的天气数据如何计算
    2. 核心问题
        数据的存储
        数据的计算
    3. hadoop-
    4. IBM提出大数据的定义:5个V的特性
2. 如何学习hadoop
    1. 重要
        原理和运行机制
    2. 操作,开发程序(JAVA)
3. Google的基本思想(奠定机制:Hadoop原理和运行机制):hadoop是一个山寨版的Google系统
    - Google的低成本思想
        - 大量使用普通的pc服务器
    - 三篇论文
        - GFS(Google file system):分布式文件系统-->数据的存储-->HDFS(Hadoop Distributed File System)
            - Namenode
            - datanode
        - Page Rank(搜索排名)                   -->数据的计算-->算法(Mapreduce计算模型)
            - Google向量矩阵
            - java
                map
                reduce
                job
        - BigTable(大表)                        -->Nosql数据库->HBase(Hadoop database)
        

4. JDBC和JAVA动态代理
    JDBC(Java database connected)
        - 包含以下两个包的连接
            *.java.sql.*
            *.javax.sql.*
        - 提供的功能:
            管理:DriverManager
            连接:Connection
            运行环境:Statement
            运行结果:
                select:接口:ResultSet
                insert,update,delete:整数int
        
            
--一线大数据实时计算  可视化系统
    -
        - 互联网企业,流量是核心
            - head - meta (charset,title,keywords,description)
            - 浏览器兼容性
                - style里
                    *{margin:0;padding:0};
                - img里alt属性,让搜索引擎抓到(为某些网站带来免费流量)
                    - seo搜索引擎优化
            - echartjs
            - 大数据tmall/头条 千人千面
                大数据推荐系统
    
        - 大数据离线计算架构hadoop
        - 大数据实时计算架构storm
        - 大数据内存计算架构spark
        - 大数据新一代实时计算引擎Flink  ->Blink
        
    - 大数据应用
        大数据推荐
        预测:天气、销量
    - 
            
        
基于阿里云数加构建企业及数据分析
dataV制作实时销售数据可视化大屏
quick BI制作企业数据分析报表
基于机器学习PAI实现精细化营销
时间序列化分解模型预测商品销量
mooc网站日志分析

        
        
        
        
        
    
    
    
    
    



    
    
    
    
    
    
    
    
    
    
View Code