暂时未有相关云产品技术能力~
一个热爱写代码的Java软件设计工程师
Mosaic,是互联网历史上第一个获普遍使用和能够显示图片的网页浏览器,于1993年问世。 1994年4月,马克.安德森和Silicon Graphics(简称为SGI,中译为“视算科技”或“硅图”) 公司的创始人吉姆·克拉克(Jim Clark)在美国加州设立了“Mosaic Communication Corporation”。 Mosaic公司成立后,由于伊利诺伊大学拥有Mosaic的商标权,且伊利诺伊大学已将技术转让给 Spy Glass公司,开发团队必须彻底重新撰写浏览器程式码,且浏览器名称更改为Netscape Navigator,
我们学习的程序基本第一个都是hello,word,有些小伙伴调侃, 本人精通多种语言hello,word,当你创造出第一个程序,打印出第 一句hello,word,那么便是一个程序人生的开始。 说到开始,其实我的编程语言学习之路很坎坷,我其实最初学习 的并不是Java语言,而是c语言,当时学习觉得好难呀,学不会,来来 回回放弃了好多次,最后学习了Java,开启软件开发后端之路,Java 在我学的那些语言中还是比较好学的,个人理解。 第一个语言 我学习Java软件开发是从最基础的学习的,从网上找资料,买书 本,白嫖一
注解 Annotation(注释 注解) 注释 单行注释 // 多行注释 /* */ 文档注释 /** */ 注解 1.注解的写法 @XXX [(一些信息)] 2.注解放置在哪里 类的上面 属性上面 方法上面 构造方法上面 参数前面 3.注解的作用 1.用来充当注释的作用(仅仅是一个文字的说明) @Deprecated 2.用来做代码的检测(验证) @Override *3.可以携带一些信息(内容) 文件.properties .xml 注解 4.Java中有一些人家写好的注解供我们使用 @Deprecated 用来说明方法
如何获取Class 1.Class中静态方法 forName("类全名") 2.类.class关键字 3.对象引用.getClass()方法 Class中的常用方法 int = getModifiers(); 获取类的修饰符(权限+特征) String = getName(); 获取类的全名(包名.类名) String = getSimpleName(); 获取类简单名(只有类名 缺少包) Class = getSuperClass(); 获取当前类父类的对应Class Class[] = getInterfaces(); 获取当前类父亲接口 Package
新的知识点 底层的技术----反射技术 String类时候 隐约提起过 非常特殊的引用数据类型 String s = "abc"; //new String("abc"); 不可变特性 String不可变特性体现在 长度 内容 public final class String{ private final char[] value; } 内容好像不是真的不让变 可以通过反射技术修改 *一会儿学完了反射操作属性 尝试修改一下String中的value值 反射 reflect 面向对象的变成思想 类 从很多对象中抽取出来的公有的特征行为 抽象描述
线程锁 锁定的是对象 1.放置在方法的结构上 public synchronized void test(){ 好多代码 执行代码 好多代码 } 对象.test(); 对象被某一个访问他的线程锁定 2.放置在方法(构造 块)的内部(看起来是包含着一堆代码) public void test(){ 好多代码 synchronized(对象){ 执行代码 } 好多代码 } 3.线程相关的一些方法 sleep(); run(); start(); setPriority();--------
1.通过这个模型 成功的演示出了 线程安全的问题 两个消费者 同时访问同一个仓库对象 仓库内只有一个元素的时候 两个消费者并发访问 会有可能产生抢夺资源的问题 2.自己解决一下线程安全的问题 让仓库对象被线程访问的时候 仓库对象被锁定 仓库对象只能被一个线程访问 其他的线程处于等待状态 特征修饰符 synchronized 同步 一个时间点只有一个线程访问 线程安全锁 两种形式写法 1.将synchronized关键字 放在方法的结构上 public synchronized void get(){} 锁定的是调用
缓冲流 集合 类和类的关系。。。 MVC分层架构设计思想 线程 String家族 StringBuilder StringBuffer 集合家族 ArrayList Vector HashMap HashTable 程序 可以理解为是一组静态的代码 进程 正在进行的程序 静态的代码 运行起来 线程 正在执行程序中的小单元 聚餐 聚餐之前 班级大扫除 扫除需要分配任务 任务写在纸上 列一个清单 一声令下 开始扫除 进程 每一个同学都做自己的事情 并发执行 互相不影响
字符集 字符 文字和符号总称(Character) 不同国家的数字和符号是一样的 字母 不同国家的文字 中文 日文 韩文 计算机最早产生是按照英语单词 单个字符设计的 字母 数字 符号-----1字节 8bit 256 如果计算机想要处理除了上述字母符号以外的其他字符---比如中文2字节 需要将中文进行字符编码----->拆分 和 组合 拆分合组合的规则---所谓的字符编码 常见的字符编码 ASCII American Standard Code for Information Interchange ISO-8859-1 GB2
递归----方法调用 File类的对象<----->本地硬盘文件 查看属性 创建新的文件 新的文件夹 查看父元素目录 文件夹的遍历 删除 file对象不能操作文件中的内容-------->通过流I/O的方式来完成 流按照方向(功能)来区分 in(读取) out(写入) 操作的目标来区分 文件流 数组流 字符串流 数据流 对象流 网络流 学习文件流---> 顾名思义 读取文件中的信息in 将信息写入文件中out 文件流按照读取或写入的单位(字节数)大小来区分 字节型文件
Error和RuntimeException这一类的异常 运行时 javac编译的时候不检测 不需要主动添加处理异常的手段 当然我们愿意的话 也可以添加 除了上述以外其他的异常都需要做检测 要求我们必须添加处理异常的手段 编译不过去 处理异常的手段 try{}catch(){}finally{} 1.try不能单独出现 后面必须跟着其他的一个结构 catch或finally都可以 2.catch可以出现很多个 要么多个catch捕获的异常没有继承关系 要么先捕获小 再捕获大 3.final
Java核心思想 面向对象的编程思想 类和类的关系 类中成员的描述 对象创建 Java工具类 包装类 数学相关 日期相关 字符串相关 集合相关的类 考试机 学生 老师 异常/错误 程序运行过程中,可能会发生一些不被期望的效果, 肯定会阻止我们的程序按照指令去执行 这种不被预期出现的效果,肯定需要抛出来告诉我们 在Java中有一个定义好的规则Throwable(可以抛出的) Error错误 通常是一些物理性的,JVM虚拟机本身出现的问题,程序指令是处理不了的 Exception
处理异常不是 异常消失了 处理异常指的是 处理掉异常之后 后续的代码不会因为此异常而终止执行 两种手段 try{}catch(){}[ finally{} ] 1.try不能单独的出现 2.后面必须添加catch或finally 3.catch有一组括号 (NullPointerException) 目的是为了捕获某一种异常 4.catch可以有很多个存在 捕获的异常之间没有任何的继承关系 捕获的异常需要从小到大进行捕获 5.finally不是必须存在的 若存在fin
Map 映射 通过某一个key可以直接定位到一个value值 存储的方式以 键值对 存储 key-value key无序无重复 value无序可重复 key无序还是一样,指的是存入顺序与取得顺序不一致 key无重复当然指的是 元素不能一致 1.map基本使用 HashMap TreeMap Properties HashMap 1.包 java.util 2.如何创建对象 3.基本方法 增删改查 增put(key,value) 存放一组映射关系 key-value
1.集合的应用 集合就是一个小容器 增删改查 2.集合使用的情形 各自集合的特点 3.底层原理 数据结构的存储方式 4.自己尝试实现
Vector类 1.java.util包 2.是ArrayList集合的早期版本 (StringBuffer早期 StringBuilder后来) Vector底层也是利用(动态)数组的形式存储 Vector是线程同步的(synchronized) 安全性高 效率低 3.扩容方式与ArrayList不同 默认是扩容2倍 可以通过构造方法创建对象时修改这一机制 4.构造方法 5.常用方法 Stack类 栈 1.java.util包 2.构造方法只有一个无参数 3.除了继承自Vacton类
正则表达式有固定的规律的格式,匹配字符串 1.用于字符串格式的校验 2.按照某种字符串的格式 进行拆分 替换 3.在比较大段的字符串中寻找 符合某种格式的子字符串 有一些匹配格式的符号写法 [abc] [^abc] [a-zA-Z] [a-z[^bc]] . \d \D \s \S \w \W 有一些用来匹配出现次数 ? 0-1 *0-n +1-n {n} {n,} {n,m} Pattern p = Pattern.compile("regex"); Matche
1.StringBuilder类不一定需要 是为了避免String频繁拼接修改字符串信息的时候才用的 底层数组是可变的 提高了性能 2.常用方法 与String类不同的独有方法 append() insert() delete() deleteCharAt() reverse() 与String类相同的方法 length() charAt() codePointAt() indexOf() lastIndexOf() substring() replace()名字相同 用法不一致 不是很常用的方法 ensureCapacity() capacity()
## 字符串相关的类 ## java.lang包 String Serializable,CharSequence,Comparable 非常特殊的类 可以像常量一样创建对象 String str = "abc"; 内存存储 "abc"对象 char[] value String不可变特性 private final char[] value; 频繁的修改其内容的时候 性能很不好 StringBuffer ## StringBuilder 1.所属的包 java.lang包 2.继承Abstr
1.String包 java.lang 2.构造方法 常量 无参数 带参数String byte[] char[] 3.不可变特性 长度 内容 4.String内存机制 常量"abc" 字符串常量池 构造方法new == equals()区别 "a"+"b"+"c"+"d"; 产生几个对象 5.String与StringBuffer与StringBuilder区别 6.常用的方法 第一梯队(重写) equals hashCode compareTo toString
0.System类 java.lang包 in out对象属性 gc(); exit(0); long time = currentTimeMillis(); 获取当前系统时间--->1970-1-1 00:80:00 毫秒形式 1.Date类 java.util包 (java.sql) 无参数构造方法 new Date(); new Date(long time); after(); before(); compareTo(); setTime() getTime();
Scanner类 1.所属的包java.util包 需要import导包 2.通过一个带输入流的构造方法创建对象 3.常用方法 nextInt() nextFloat() next() nextLine() System类 1.所属的包java.lang包 不需要导入 2.不需要创建对象 通过类名就可以访问 3.有三个属性及若干的方法 三个属性out in err 方法gc() exit(0); currentTimeMillis(); 日期相关 Date类 1.通常使用的是ja
Math 1.所属的包java.lang 2.Math构造方法是私有的 我们不能直接调用创建对象 3.由于Math中提供的属性及方法都是static 不需要创建对象 4.常用的方法 abs()返回给定数字的绝对值 (参数 int long float double) double = ceil()向上取整 double = floor()向下取整 double = rint()临近的整数 如果两边距离一样 则返回偶数 int = round() 四舍五入的整数 max(a,b) min(a,b) (参数int long flo
1.枚举(类) 可以将某些类中的对象一一列举出来 类中的对象具有有限的个数 1.通过enum来描述枚举 class interface enum 2.可以在枚举类中直接列举对象 public enum Day{ monday,tuesday } 3.通过枚举类直接访问属性名(枚举对象) 4.通过枚举对象调用 发现有很多的方法 每一个自己定义的enum枚举类型 都默认继承java.lang.Enum Object 有两个私有属性name枚举对象名字 ordinal顺序(在枚举类中的索引) na
一个类中的对象 认为个数是有限且固定的,可以将每一个对象一一列举出来 1.试一试若没有枚举类型的时候,如何手动设计 (静态常量 单例模式) Day(类 当做描述星期 7个对象) private构造方法 public static final属性 = new 2.JDK1.5版本之后可以直接定义enum类型 我们自己定义的enum类型直接默认继承Enum(java.lang包) 我们自己定义的enum类型不能再写extends 但是可以实现 Enum类型
Java面向对象的四大特性: 继承 封装 多态 (抽象) 多态 同一个对象 体现出来的多种不同形态(身份) 将一种行为表现出不同的效果 要想实现多态的效果 需要现有继承关系 体现: 1.父类类型的引用 指向 子类的对象 Person p = new Teacher(); 2.该引用只能调用父类中定义的属性或方法 3.如果子类中将父类的方法重写,那么调取方法后执行的结果是子类重写之后的那个结果 如果父类与子类有同名的属性 执行父类的属性 如果父类与子类有同名的方法(重载) 执行子类重写之后的方法 4.若想要调用子类中独有的成员
最早学一个变量------>内存空间(小容器) 只有一个 后来学一个数组------>内存空间(小容器) 存储一组一样的数据类型 好处是在于堆内存中存储的地址连续 便于循环遍历 数组创建时必须指定长度 频繁的添加或删除元素 个数固定就很不方便 再后来学习如何描述类--->利用自己描述的类ArrayBox创建对象(小容器) 存储一组元素 长度对于使用者来讲是可变的 便于循环遍历(底层就是数组) 频繁的在ArrayBox中插入元素 从中间位置删除元素 性能不高 上次学习利用链式结构--->利用自己描述的类LinkedBox创建对象(小容器) 存储一组
PHP运行速度快,开发成本低,后期维护费用低, 开源产品丰富,这些都是很多语言无法比拟的。而随 着移动互联网技术的兴起,越来越多的Web应用,也 选择了PHP作为主流的开发语言。 W3Techs网站提供了服务器端脚本语言的市场占 有率,截止到2016年12月12日PHP在所有服务器端语 言市场的占有率高达82.4%,遥遥领先于其他编程语言。
PHP是PHP:Hypertext Preprocessor(超文本预处理器)的缩写 是一种跨平台、HTML嵌入式的服务器端脚本语言,其独特的语法混合 了C语言、Java语言和Perl语言的特点,是一种被广泛应用的、开源 式的多用途脚本语言,尤其适合web开发。 PHP是B/S(Browser/Server的简写,即浏览器/服务器)体系结 构,属于三层结构模式。服务器启动后,可以不适用相应的客户端软件 只使用浏览器即可访问,这样既保持了图形化的用户界面,又大大减少 了应用维护量。
分析: 抽象方法,我们来看,这是我们写的一个输出输出信息 的方法,输出信息的方法,这个方法呢,我们在每个子类当 中都有不同的事情,如果在每个子类当中都都有不同的实现 的话,也就意味着他在负类当中的实现是没有意义,这种情 况下我们去,如何把父类的这个方法,去定义层,没有带哪 块儿的,方法,这就需要我们用抽象方法,什么是触觉方法 ,语法比较简单,只需要在方法返回值的前面加上LSITY。 抽象方法的特点: • 抽象方法没有方法体 • 抽象方法必须定义在抽象类中 • 抽象方法必须在非抽象子类中被重写 • public abstra
大家可以想一下我们生活当中的人,我们说铁锤是一个人 派派也是一个人,张三、李四等等也是一个人,但是我们在生 活当中呢,人是一种分类,并不是单个个体,他是我们抽象出 来的,不具体,所以说他没有现实世界当中对应一个人这样的 一个人存在,这种情况下呢,如何去实例化人对象呢? 是没有意义的,没有意义的对象,我们在Java类当中,在 Java当中要想去限制类被实例化,我们就可以考虑把类定义为 抽象类,抽象类呢,通常作为一个类的父类,来约束,该类不 能被实例化,不能被实例化,那如何去定义抽象类呢,我们只 需要在类的class关
继承关系的初始化顺序 • 父类属性 • 父类的构造方法 • 子类属性 • 子类的构造方法 什么是方法重写 - 方法重写的规则: 1. 方法名相同 2. 参数列表相同 3. 返回值列表相同或者是其子类相同 4. 访问权限不能严于父类
super关键字的作用 - super代表父类对象,在子类中访问父类成员 - 访问父类构造方法 - 在子类方法中调用且必须是第一句
权限修饰符 public 公共的 protected 受保护的 默认不写 默认的 private 私有的 特征修饰符 final 最终的 不可更改的 static 静态的 abstract 抽象的 native 本地的 *transient 瞬时的 短暂的------>序列化 *synchronized 同步的 线程问题 *volatile 不稳定的
每一门开发语言都需要集成开发环境,英文的全称是”Integrated Development Environment”,缩写则是耳熟能详的”IDE”,PyCharm是Python开发语言公认的最佳IDE,市场份额占有率最高,没有之一!开发这款IDE工具的公司叫JetBrains,是一家俄罗斯的公司,这家公司开发了很多著名的IDE和插件工具。
一、Python的定义: Python是一个高层次的结合了解释性、编译性、互动性和面向对象的脚本语言。Python的设计具有很强的可读性,相比其他语言经常使用英文关键字,其他语言的一些标点符号,它具有比其他语言更有特色语法结构。 二、Python的语言特点: ①语法简洁:Python是一种代表简单主义思想的语言。阅读一个良好的Python程序就感觉像是在读英语一样。它使你能够专注于解决问题而不是去搞明白语言本身。 ②跨平台性:Python语言可以在window系统,mac系统和Linux系统中使用。 ③可扩展性:可以把C++、C语言的库扩充进来,向用户提供脚本。 ④免费开源:可以自由地发布
继承的优点: 1. 优化代码,减少代码量 2. 方便修改维护,让思路更清晰 ## 如何实现继承 1. 创建父类抽取共有的属性和方法 class Demo{ //公共的方法和属性 } 2.创建一个子类 class GZ extends{ //子类特有的属性和方法 } - 声明继承的关系函数:extends - 创建一个父类和两个子类对比一下
## 什么是封装? 面向对象的三大特征之一-----封装 将类的某些信息隐藏在类的内部,不允许外部 程序直接访问,而是通过该类提供的方法来实现对 隐藏信息的访问。 ## 封装的好处: - 隐藏类的实现细节 - 只能通过规定方法访问数据 - 方便加入控制语句 - 方便修改实现 ## 封装的步骤: 1.修改属性的可见性 使用private 2.创建公有的getter/setter方法 用于读写 3.在getter/setter中加入属性控制语句 对属性值的合法性进行判断
## 继承关系 1.子类想要继承父类,通过extends关键字来实现 2.子类继承了父类,可以调用父类中(public protected)的属性和方法 2.1构造方法严格意义来说 不算做子类继承过来 只是单纯的在子类调用构造方法时默认调用父类的构造方法 2.2程序块严格意义来说 不算做子类继承过来(子类自己调用不到 没名字) 程序块子类不能直接调用 子类执行构造方法之前 默认调用了父类的构造方法 父类构造方法之前自动执行父类的块 3.子类除了能继承父类的属性和方法外,子类还可以添加自己独有的成员(属性 方法)
## 前言: 你们是使用者(用户) 我是ArrayBox类型的一个具体的对象 想要存储椅子 你们把椅子直接交给我box 以前直接找到数组那个人 我就可以帮你们存起来啦 存储的时候你们自己找位置 至于我把椅子存在了哪里 长度够不够 都不用你们管 如果数组存满啦自己想办法 数组是一个开发者创建好的类型 数组是一个小容器 存储一组元素 添加元素 获取元素 删除元素
###### 程序解析: 使用Scanner进行导包,抓取用户数据,进行强制转换,转换成float类型,进行 计算创建一个方法,使用这个方法进行工作处理数据,再创建一个流程方法,使用 equals判断比较数据,使代码更严谨,使用break;和continue;增加程序的复用性 ,使程序更加的灵活。使用Switch语句判断符号,进行传参计算,使用while(){} 语句增加一个死循环,使程序更复用,不浪费数据,增加一些严禁判断,让程序更 完美一点。
## this关键字的使用 1.是一个关键字(指代词) 代替的是某一个对象 (当前调用属性或方法时的那个对象) 2.this既然代替的是一个对象 this可以调用什么? 属性 方法 可以 this可以调用构造方法么? 可以 在一个构造方法内可以调用另一个构造方法 通过this(); 省略了构造方法的名字(必须与类名一致) 必须在另一个构造方法内调用 必须在程序的第一行 构造方法 一般方法 有顺序 认为构造方法早于一般方法 在一般方法内调用构造方法呢? 不行 构造方法可以重载 构造方法 调用另一个构造方法呢? 3.this调用的过程可以
1.概念: 一个类中的一组方法 相同的方法名字 不同的参数列表 构成了方法重载 参数的不同体现在 参数的个数 参数的类型 参数的顺序 三个方面 2.作用: 为了便于记忆和调用 使得方法调用时更加的灵活 3.自己也可以设计方法重载 调用的时候 先通过方法名字来定位 名字一致 通过参数列表的数据类型来定位 方法返回值 修饰符--->跟方法重载没什么关系 4.JDK1.5之后 新的写法 动态参数列表 ... 参数类型固定 参数的个数可以动态 0-n 使用起来类似与数组的使用 length index int[]..
我们今天来学习方法重载,在之前已经学了面向对象 的方法创建,面向对象的编程思想,方法重载的含义就是 在同一个类里可不可以创建多个方法,通过传参的方式进 行调用实现更多的功能,使传回的值可以是其他类型,增 加了方法类的复用性。
关于类型转换问题,通俗的讲就是,把碗里的东西可以倒进锅里而不会溢出 如果把锅里的东西倒进碗里,那么就会溢出,如果硬要倒就是强制转换,会产生 数据分割,从而改变数据的本质。
SQL注入漏洞主要形成的原因是在数据交互中,前端的 数据传入到后台处理时,没有做严格的判断,导致其传入的 “数据”拼接到SQL语句中后,被当作SQL语句的一部分执行。 从而导致数据库受损(被脱裤、被删除、甚至整个服务器权限沦陷)。
今天来讲面向对象的编程思想 类-------抽象的 特征(属性)和行为(方法) 对象-----具体的 1.描述一个类 属性 权限修饰符 [特征修饰符] 数据类型 属性名字 [= 值]; 方法 权限修饰符 [特征修饰符] 返回值类型 方法名字 (参数列表) [抛出异常] [{方法体}]; 2.创建一个对象 new 对象. 调用属性 存值/取值 对象. 调用方法 执行一次 (存储 执行) 3.类的加载 对象的创建 属性及方法的存储 方法的执行 方法执行过程中 参数及返回值的传递(基本数据类型 引用数据类型的区别)
## 前言: 今天不讲Java,来一个小插曲 有朋友想学小程序行程码识别系统,今天就来简单的讲一讲 首先要有一个服务器设备:树莓派4b,舵机驱动板 运用python软件的tk模块来控制截图,每当用户点击识别按钮 的时候系统自动进行截图,并运行识别函数,进行比对。通过识别 文字函数调用了百度ocr识别的api,对图片的文字进行提取。然后 对返回的json进行判断,得出一个值,如果结果为可用数据,则运 行,运行打开舵机的函数,结果为假数据则舵机归位。并且舵机打 开之后在五秒之后将会自动归位。
面向对象就是面向过程的编程思想,在我们解决问题的时候 按照一定的过程(流程)来解决问题。 就像把苹果装进冰箱,总共分几步: 1.开门 2.苹果放在里面 3.关门 以过程为本提升了代码的复用减少了很多冗余,避免了代码 的浪费,面向对象就是把大段的过程简化啦,拆分成了小段 再去实现这小段功能,进行拼接,最后完成复杂的需求实现 从而事半功倍。
## 前言: 使用Java实现BMI指数测试,根据用户提供的身高 和体重,调用Scanner方法类,通过类名.的方式进行 对象调用,抓取用户数据,再新建一个double函数用 来接收用户的数据,使用print函数打印提示用户输 入身高和体重,使用构造方法的样式进行编写,通过 类名进行传参,方法调用。 使用if与else的嵌套实现分类管理,对最后的结果 进行分类处理。 最后再打印输出结果