一、基础语法学习
-------------------------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
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,switch) if - 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网站日志分析