暂时未有相关云产品技术能力~
一个热爱写代码的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(){} 锁定的是调用
字符集 字符 文字和符号总称(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
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
## 字符串相关的类 ## 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();
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调用的过程可以
我们今天来学习方法重载,在之前已经学了面向对象 的方法创建,面向对象的编程思想,方法重载的含义就是 在同一个类里可不可以创建多个方法,通过传参的方式进 行调用实现更多的功能,使传回的值可以是其他类型,增 加了方法类的复用性。
关于类型转换问题,通俗的讲就是,把碗里的东西可以倒进锅里而不会溢出 如果把锅里的东西倒进碗里,那么就会溢出,如果硬要倒就是强制转换,会产生 数据分割,从而改变数据的本质。
SQL注入漏洞主要形成的原因是在数据交互中,前端的 数据传入到后台处理时,没有做严格的判断,导致其传入的 “数据”拼接到SQL语句中后,被当作SQL语句的一部分执行。 从而导致数据库受损(被脱裤、被删除、甚至整个服务器权限沦陷)。
## 前言: 今天不讲Java,来一个小插曲 有朋友想学小程序行程码识别系统,今天就来简单的讲一讲 首先要有一个服务器设备:树莓派4b,舵机驱动板 运用python软件的tk模块来控制截图,每当用户点击识别按钮 的时候系统自动进行截图,并运行识别函数,进行比对。通过识别 文字函数调用了百度ocr识别的api,对图片的文字进行提取。然后 对返回的json进行判断,得出一个值,如果结果为可用数据,则运 行,运行打开舵机的函数,结果为假数据则舵机归位。并且舵机打 开之后在五秒之后将会自动归位。
## 前言: 使用Java实现BMI指数测试,根据用户提供的身高 和体重,调用Scanner方法类,通过类名.的方式进行 对象调用,抓取用户数据,再新建一个double函数用 来接收用户的数据,使用print函数打印提示用户输 入身高和体重,使用构造方法的样式进行编写,通过 类名进行传参,方法调用。 使用if与else的嵌套实现分类管理,对最后的结果 进行分类处理。 最后再打印输出结果
我们今天来写一个随机抽取用户名字的一个小程序, 首先我们思考这个需求他需要的条件,要抽取用户的名 字,就要先有一个容器,来储存用户名字的数据,其次 要有随机的功能实现,因为要随机,所以还要有一个寻 找的功能,挨个寻找的功能需要循环来实现,再想一下 有寻找,找到了还继续往后找嘛?当然肯定不找了,找 到了还继续运行程序,只会浪费内存,这里就要用到break; 中止语句,最后再打印输出。
本章向大家推荐一些学习PHP的资源,首先第一个资源必不可少的就是PHP用户手册PHP手册相当于是PHP的“新华词典”,包含了PHP的所有内容,所以在我们的学习生 活中必不可少,有人问可不可以把学习手册背下来,结果肯定是当然可以的,就像你把 新华词典背下来,你会认识所有的汉字,但是这不推荐新手这么做,首先背手册要花费 大量时间,即使你背下来啦,你会发现你依然写不出代码,因为手册并不是按照一个完 整的学习体系来编写的,所以推荐大家把手册下载到本地,然后遇到问题的时候我们再 去查找手册,这样会事半功倍。下面我来教大家如何下载手册.
# 数组(容器) 数组是一组数据类型相同的数据的组合,将这些数据统一的管理起来 数组本身是一个引用数据类型,数组内存储的类型可以是基本类型 也可以是引用类型 数组的特点 1.数组本身是一个引用数据类型 2.数组是在堆内存中的一串连续的地址存在 3.数组在初始化时必须指定长度 4.堆内存的数组空间长度一旦确定 不能再次发生改变 5.栈内存的变量中存储的是数组的地址引用 6.数组内部存储的类型可以是基本的 也可以是引用
break中止语句 使用break语句可以使程序直接跳出switch语句体, 也可以用break语句在循环结构终止本层循环体,从而 提前结束本层循环,达到程序高效的功能实现。 continue语句是中止本次循环体余下尚未执行的语句 继续下次循环立即进行下一次的循环条件判定,可以理解 为仅结束本次循环。
## 前言 上一章讲到if与else的语法结构运用, 讲述了if与else的一个嵌套,今天讲述 循环。
今天来讲语法结构,所谓语法就是组织能力, 把一些函数与运算符号进行组合,而达到我们要 的效果,实现一些功能,就像人的语言一样,单 个字表达的意思很少,很单一,而两个字组成的 词语可以表达更复杂一些的意思,程序语言与人 的语言一样,也具有这个特性。
## 前言 我们在往期的文章中讲到 1.JDK的下载 2.配置环境变量 3.数据类型 接下来我们就可以开始写小程序啦