书签 分享 收藏 举报 版权申诉 / 81
上传文档赚钱

类型游戏与后端(Java)课件.pptx

  • 上传人(卖家):晟晟文业
  • 文档编号:5206296
  • 上传时间:2023-02-17
  • 格式:PPTX
  • 页数:81
  • 大小:1.48MB
  • 【下载声明】
    1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
    2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
    3. 本页资料《游戏与后端(Java)课件.pptx》由用户(晟晟文业)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
    4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
    5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
    配套讲稿:

    如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。

    特殊限制:

    部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。

    关 键  词:
    游戏 后端 Java 课件
    资源描述:

    1、游戏与后端(Java)演讲人2021-01-2701JavaJavaJava基础多线程IO基础框架其他JavaJava基础四种对象引用Lamada集合数据类型抽象类和接口异常JavaJava基础泛型01反射02注解知识点03四种对象引用强引用弱引用软引用幻像引用BCDConsumer void accept(T t):将T 类型的参数应用于该方法ASupplier T get():返回类型为T 的对象Function<T,R>R apply(T t):输出T类型的参数返回R类型的结果Predicate boolean test(T t):确定类型为T 的参数是否满足test逻辑La

    2、mada函数接口(内置)LamadaFunctionalInterface(接口注解)Stream(parallelStream)获取方法操作类型获取方法u 从 Collection 和数组u BufferedReaderu 静态工厂u java.util.stream.IntStream.range()u java.nio.file.Files.walk()u 自己构建u.Stream(parallelStream)操作类型uIntermediate uTerminal Stream(parallelStream)集合Collections 工具类集合常见考点2HashMap和Hashtab

    3、le的区别3List和Map的区别1ArrayList和Vector的区别6说出ArrayList,LinkedList的存储性能和特性5Collection和Collections的区别4Set里的元素是不能重复的,那么用=以及 equals()集合常见考点Java中HashMap的key值要是为类对象则该类需要满足什么条件?与Java集合框架相关的有哪些最好的实践ArrayList集合加入1万条数据,应该怎么提高效率Enumeration和Iterator接口的区别ListIterator有什么特点并发集合类是什么?010203040506MapHashMapHashTableTreeMa

    4、pLinkedHashMapConcurrentHashMapHashMapu升级uJDK1.8原理u线程不安全u可以存NULLu源码MapHashTableu线程安全u默认初始容量11,装填因子0.75u每次扩容容量是2倍+1u直接使用hasoCode的值作为hash值MapTreeMapu红黑树实现ukey自动排序MapLinkedHashMapu链表实现u应用场景u线程不安全MapConcurrentHashMapuJDK1.7uJDK1.8ucocurrentHashMap的底层机制MapColletionListSetQueueListuArrarListuLinkedListuVe

    5、ctoruCopyOnWriteArrayListColletionSetuTreeSetuHashSetuLinkedHashSetuCopyOnWriteSetColletionQueueuDequeuBlockingQueueuAbstractQueueColletionboolean 0106int 4个字节03shot 2个字节char 2个字节long 8个字节02byte 1个字节0405java8种基本数据类型单击此处添加文本具体内容,简明扼要的阐述您的观点。根据需要可酌情增减文字,以便观者准确的理解您传达的思想。单击此处添加标题java8种基本数据类型fload 4个字节do

    6、uble 8个字节boolean u为什么boolean没有规定字节数?java8种基本数据类型8种包装类型分类缓冲池分类u Booleanu Byteu Characteru Shortu Integeru Longu Double8种包装类型缓冲池u什么是缓冲池?u那些包装类具有缓冲池?8种包装类型String相关01改变String为什么被声明为final(声明为final的好处?)什么是StringPool(StringTable)String02线程不安全,可以被改变StringBuilder03线程安全,内部被synchronized同步关键字StringBuffer在java8中

    7、接口可以有default方法,也可以有静态方法但是静态方法不能够被重写,default方法可以被重写 新特性接口中的字段都是static和final的接口中的方法默认都是public的,并且不允许定义为其他的接口抽象类和接口抽象类抽象类和抽象方法都使用 abstract 关键字进行声明。如果一个类中包含抽象方法,那么这个类必须声明为抽象类。抽象类不能被实例化,只能被继承。0102分类Exception RuntimeException非运行时异常运行时异常和非运行时异常区别?Error OutOfMemoryErrorStackOverflowErrorThreadDeath.Exceptio

    8、n和Error的区别?异常泛型:把类型明确的工作推迟到创建对象或调用方法的时候才去明确的特殊的类型BJava泛型设计原则:只要在编译时期没有出现警告,那么运行时期就不会出现ClassCastException异常.A泛型简介使用泛型泛型类:就是把泛型定义在类上,用户使用该类的时候,才把类型明确下来泛型方法:某一个方法上需要使用泛型.外界仅仅是关心该方法,不关心类其他的属性泛型类派生出的子类泛型通配符通配符和泛型方法泛型类派生出的子类u子类泛型类型确定u子类泛型类型不确定:继续使用父类定义的泛型使用泛型泛型通配符u在泛型中并没有像我们面向对象的继承结构,想要使用任意的泛型类型,我们可以使用通配符

    9、!u?号通配符表示可以匹配任意类型,任意的Java类都可以匹配uPECS(Producer Extends Consumer Super)原则使用泛型通配符和泛型方法u如果参数之间的类型有依赖关系,或者返回值是与参数之间有依赖关系的。那么就使用泛型方法u如果没有依赖关系的,就使用通配符,通配符会灵活一些.使用泛型使用泛型好处:u代码更加简洁【不用强制转换】程序更加健壮【只要编译时期没有警告,那么运行时期就不会出现ClassCastException异常】可读性和稳定性【在编写集合的时候,就限定了类型】泛型泛型泛型是提供给javac编译器使用的,它用于限定集合的输入类型,让编译器在源代码级别上,

    10、即挡住向集合中插入非法数据但编译器编译完带有泛形的java程序后,生成的class文件中将不再带有泛形信息,以此使程序运行效率不受到影响,这个过程称之为“擦除“。类 型 擦 除成功泛型的应用u参考BaseDao的编写泛型反射概念2.反射可以在一个类运行的时候获取类的信息的机制,可以获取在编译期不可能获得的类的信息。3.对于任意一个对象,都能调用它的任意一个方法和属性。4.因为类的信息是保存在Class对象中的,而这个Class对象是在程序运行时被类加载器(ClassLoader)动态加载的。5.当类加载器装载运行了类后,动态获取Class对象的信息以及动态操作Class对象的属性和方法的功能称

    11、为Java语音的反射机制。1.反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法。反射作用1.反编译:.class>.java。2.通过反射机制访问Java对象中的属性、方法、构造方法等。涉及到的类1.Class 类的创建;2.Constructor 反射类中构造方法;3.Field 反射方法;4.Method 反射方法;5.Modifier 访问修饰符的信息。1.Class 类的创建;u1.获取Class对象的方法u2.无参数创建对象u3.有参数创建对象涉及到的类3.Field 反射方法;u1.获取属性u2.Field类描述u3.安全管理u4.修改属性中的修饰符涉

    12、及到的类4.Method 反射方法;uMethod m=class.getDeclaredMethod(setName,String.class);m.setAccessible(true);/同样需要忽略访问权限的限制 m.invoke(class,老王);涉及到的类反射进阶1.获取不到Class3.获取父类修饰符5.获取不到父类的构造方法2.获取不到Field4.获取不到父类的非public的方法6.newInstance方法创建类对象的两种方法反射进阶7.反射静态方法8.反射泛型参数方法9.反射框架:jOOR1.获取不到Class反射进阶u当Class.foeName()中路径获取不到对

    13、应的Class时,会抛出异常。2.获取不到Fieldu1.确实不存在这个Field,抛出异常。u2.修饰符导致的权限问题,抛出相同异常。反射进阶3.获取父类修饰符u1.getField只能获取对象和父类的public修饰的属性。u2.getDeclaredField获取对象中的各种修饰符属性,但是不能获取父类的任何属性。u3.先使用getSupperclass方法可以获取父类的suppereClass对象,再使用getDeclaredField方法获取父类的全部属性反射进阶6.newInstance方法创建类对象的两种方法u1.Class.newInstance()u2.Contructor.

    14、newInstance()反射进阶7.反射静态方法upublic class TestMethod static void test()Class cla=Class.foeName(TestMethod);Method m=cla.getDeclaredMethod(test);m.invoke(null);反射进阶8.反射泛型参数方法反射进阶u1.Java的泛型擦除概念,泛型T在编译时会自动向上转型为Objectupublic class Test<T>public void test(T t)Class cla=Test.class;Method m=cla.getDecla

    15、redMethod(test,Object.class);m.invoke(new Test<Integer>(),1);注解知识点简介LOGOhttps:/自定义Annotation注入普通属性其实就三步:反射出该类的方法通过方法得到注解上具体的信息将注解上的信息注入到方法上l 注入对象l 得到想要类中注入的属性,得到该属性的对象l 得到属性对应的写方法,通过写方法得到注解l 获取注解详细的信息,将注解的信息注入到对象上l 调用属性写方法,将已填充数据的对象注入到方法中JDK的元Annotation其实就是元注解就是:用于修饰其他的Annotation定义。Retention:用

    16、于指定被修饰的Annotation被保留多长时间Target:用于指定被修饰的Annotation用于修饰哪些程序单元DocumentedInheritedRetention:用于指定被修饰的Annotation被保留多长时间uRetentionPolicy.SOURCE-Java文件时期uRetentionPolicy.CLASS-Class文件时期uRetentionPolicy.RUNTIME-运行时期u由于我们使用注解常常都是配合反射来使用,所以一般都设置为RunTime时期JDK的元AnnotationTarget:用于指定被修饰的Annotation用于修饰哪些程序单元u TYPE

    17、u FIELDu METHODu PARAMETERu CONSTRUCTORu LOCAL_VARIABLEu ANNOTATION_TYPEu PACKAGEJDK的元AnnotationDocumenteduDocumented用于指定被该Annotation修饰的Annotation类将被javadoc工具提取成文档JDK的元AnnotationInheritedu被修饰过的Annotation将具有继承性JDK的元Annotation基本AnnotationFunctionalInterfaceOverriedOverried是告诉编译器要检查该方法是实现父类的.可以帮我们避免一些低

    18、级的错误.Deprecated该注解也非常常见,Java在设计的时候,可能觉得某些方法设计得不好,为了兼容以前的程序,是不能直接把它抛弃的,于是就设置它为过时。SuppressWarnings抑制编译器警告【如果我们程序中没有使用新特性(没有使用泛型),编译器默认会警告我们】,使用这个注解会抑制编译器警告SafeVarargs当把一个不是泛型的集合赋值给一个带泛型的集合的时候,这种情况就很容易发生堆污染FunctionalInterface用来指定该接口是函数式接口注解知识点学习注解前需要知道的:在以前我们一般都是使用XML配置来开发的,这种方式是解耦的XML配置一旦过多,维护起来和可读性也会

    19、有所下降但是,随着技术的发展,我们发现并不需要使用XML来解耦于是现在更多推崇注解开发!Java多线程01JUCExcutors 02030405ThreadPoolExecutor 常见问题并发编程什么是JUCuJUC是java.util.concurrent工具包的简称,他是并发大师Doug Lea的杰作JUCAQS(AbstractQueuedSynchronizer)队列同步器01 是JUC的核心02围绕着一个同步队列和park还有自旋锁实现原理03公平锁线程在唤醒的时候不能插队,非公平锁可以插队获取公平锁和非公平锁的区别04lock加锁unlock解锁详解(以公平锁为例)JUCRee

    20、ntrantLock01可重入可中断锁,他是Lock最重要的实现类之一02FairSync()这个方法是公平锁,调用NonfairSync()方法是非公平锁用法CountDownLatch(减法计数器)u创建该对象的时候可以传入一个数值,每次调用countDown就会减一,计数器为零的时候await才不会阻塞用法u创建该对象的时候需要设置一个值,并且可以写一个实现Runnable的类,每次调用await就会加1,当加到设定的值后就会触发实现Runnable类的线程开启CyclicBarrier(加法计数器)用法u可以用来做多线程限流,创建该对象的时候可以传入一个资源数量,每次调用acquire

    21、就会减少一个资源,资源为零的时候在调用该方法会导致他的线程进入阻塞状态,除非调用release释放锁。Semaphore(信号量)JUC读写锁ReentrantReadWriteLock读锁和写锁互斥01写锁与写锁互斥02演示04读锁和读锁可以共存03阻塞队列详情参考容器中的BlockingQueueSynchronousQueue 容量为一的同步队列线程池阿里巴巴开发规范中不允许使用Executors去创建线程池,而是推荐使用ThreadPoolExecutor的方式创建三大方法七大参数4种拒绝策略三大方法uExecutors.newSingleThreadExecutor();/单个线程u

    22、Executors.newFixedThreadPool(5);/创建一个固定的线程池的大小uExecutors.newCachedThreadPool();/可伸缩线程池七大参数u int corePoolSize,/核心线程池大小u int maximumPoolSize,/最大核心线程池大小u long keepAliveTime,/超时了没有人调用就会释放u TimeUnit unit,/超时单位u BlockingQueue<Runnable>workQueue,/阻塞队列u ThreadFactory threadFactory,/线程工厂:创建线程的,一般不用动u RejectedExecutionHandler handle/拒绝策略线程池JUCForkJoinJUC一Future感谢聆听

    展开阅读全文
    提示  163文库所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
    关于本文
    本文标题:游戏与后端(Java)课件.pptx
    链接地址:https://www.163wenku.com/p-5206296.html

    Copyright@ 2017-2037 Www.163WenKu.Com  网站版权所有  |  资源地图   
    IPC备案号:蜀ICP备2021032737号  | 川公网安备 51099002000191号


    侵权投诉QQ:3464097650  资料上传QQ:3464097650
       


    【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。

    163文库