Java口袋指南
  •  
    一、语言
    •  
      1.命名
      •  
        类名:大驼峰
      •  
        泛型:E标识集合元素
      •  
        方法名:小驼峰
      •  
        变量名:小写
      •  
        包名:小写或下划线
    •  
      2.词法元素/token
      •  
        字符串压缩优化:-XX:-CompactStrings
      •  
        操作符
        •  
          ~:按位取反
        •  
          instanceof:类型对比
    •  
      3.基本类型
      •  
        拆箱:引用变量名.intValue()
    •  
      4.引用类型
      •  
        举例:注解、数组、类、枚举、接口
      •  
        默认值
        •  
          实例变量默认为null
        •  
          本地变量(方法内部)无默认值,直接检查会编译错误☆
      •  
        对比相等
        •  
          相等操作符==和!=比较对象的内存地址,不比较内容
        •  
          equals()方法默认使用==对比,也可覆盖重写比较值是否相等(如String)
      •  
        拷贝
        •  
          拷贝引用:Object o2 = o1
        •  
          克隆对象
          •  
            实现Cloneable接口,调用clone()方法
          •  
            包括浅克隆(对象内部指向的引用对象不生成副本)和深克隆(需要手动定义)
    •  
      5.面向对象编程
      •  
        变长参数列表
        •  
          如:String ... names(实例:printf("%s",String...str))
        •  
          编译时被作为数组,也可通过增强for循环迭代
      •  
        手动定义注解
        •  
          包含:标记注解、单值注解、多值注解
        •  
          定义:public @interface Feedback{String reportName();}
        •  
          取值:this.getAnnotation(Feedback.class)
      •  
        函数式接口
        •  
          又称单参数方法SAM接口,仅定义一个抽象方法的接口
        •  
          可以加@FuncationalInterface标识,但允许有多个默认方法default public xxx
        •  
          创建实例:lambda表达式、方法引用、构造器引用
    •  
      6.语句和代码块
      •  
        控制转移语句
        •  
          包括:break/continue/return
        •  
          添加标签的break语句,可以break+指定标签(通常放在循环前+:)
      •  
        synchronized语句:限制只能有一个线程对代码区进行访问
      •  
        断言语句
        •  
          是Boolean表达式
        •  
          可以包含错误码,即assert express==true:"error express"+express
    •  
      7.异常处理
      •  
        层级结构-Throwable-(Exception,Error)
      •  
        分类
        •  
          检查型异常Exception
          •  
            编译期通过编译器检查
          •  
            可以进行捕获或抛出throws(方法体throw new IOException())
          •  
            如:SQLException/InterruptedException/NoSuchMethodException
        •  
          非检查型异常RuntimeException
          •  
            运行时触发
          •  
            如:DateTimeException/IllegalArgumentException/IndexOutOfBound
        •  
          错误Error
          •  
            如:OutOfMemoryError/StackOverflowError/VirtualMachineError
        •  
          异常和错误均可以进行捕获try catch或抛出throw
      •  
        语句和关键字
        •  
          抛出异常时,可以使用throw new Exception()语句
        •  
          捕获
          •  
            try..catch:优先级从前往后,先写具体异常,最后写通用异常
          •  
            try...finally:用于释放资源始终执行,遇到异常则选择抛出
          •  
            try-with-resources
            •  
              实现AutoClosable接口的资源在不使用时关闭
            •  
              如:try(fileWriter)
      •  
        异常处理过程
        •  
          定义自己的异常类
          •  
            定义各种类型(检查型、非检查型、错误),均需要进行继承各自的类
          •  
            包含无参构造器及有参构造器(包括异常消息和id)
        •  
          打印异常信息
          •  
            getMessage():字符串返回异常详细信息
          •  
            toString():带类名的异常详细信息
          •  
            printStackTrace():带类名和栈跟踪信息的异常描述信息
    •  
      8.修饰符
      •  
        分类
        •  
          定义了类、接口、构造器、方法和数据成员的访问权限
        •  
          访问修饰符
          •  
            default(默认,包私有)、private、protected(包外子类)、public(任意位置)
        •  
          非访问修饰符
          •  
            abstract、final(与抽象互斥)、native(其他语言代码合并)
          •  
            static、synchronized、transient(不被序列化的瞬态关键字)、volatile(线程最新值)
      •  
        修饰符的编码与打印
        •  
          分类:.getClass()得到Class或Member
        •  
          获取修饰符:.getModifier()
        •  
          对修饰符解码:Modifier.toString(xxx..getModifier())
  •  
    二、平台
    •  
      9.JAVA SE(平台标准版)
      •  
        语言工具库:java.lang(唯一默认导入的包)/util
      •  
        基础库:java.beans/io/nio/math/net/file/net/time
      •  
        集成库:java.sql/naming/jws
      •  
        其他
        •  
          远程方法调用库:rmi
        •  
          用户界面库:javax.print/javafx.beans
        •  
          安全库:security
        •  
          可扩展标记语言库:javax.xml
    •  
      10.开发的基础工具
      •  
        命令行工具
        •  
          编译器javac:源码转字节码
        •  
          解释器java:负责程序的执行
        •  
          打包器jar:可将指定文件打入jar包(打印包文件列表)
      •  
        jar文件执行过程
        •  
          javac编译并放入指定包(文件夹)
        •  
          包所在目录创建Manifest.txt文件,声明Main Class
        •  
          执行jar cmf manifest.txt hello.jar com/life,将文件内容加入清单文件METS-INF/MANIFEST.MF
        •  
          java -jar hello.jar运行打包后的文件
    •  
      11.内存管理
      •  
        自动内存管理(GC)
        •  
          任务:分配内存、维护内存中对象的引用、恢复不再引用对象的内存
        •  
          目标:最大的暂停时间、吞吐量目标
      •  
        常见的垃圾收集器
        •  
          Serial收集器:单线程串行执行程序运行与GC
        •  
          Parallerl收集器
        •  
          Parallel整理收集器
        •  
          并发标记清除CMS收集器
        •  
          垃圾优先G1收集器
      •  
        内存管理工具
        •  
          jvisualvm:问题排查工具
        •  
          jconsole:java管理扩展(JMX,Exention)监控工具
        •  
          jstat:JVM统计监控工具
        •  
          jmap:内存映射工具
        •  
          jstack:栈跟踪工具
        •  
          其他:jinfo、jstatd、jmc、jcmd、jdb、jps
      •  
        命令行参数
        •  
          -XX:+PrintGC(Details/Timestamp)
        •  
          -XX:+Use(Serial/G1/Parallel)GC
        •  
          -Xmx/Xmn/Xms:堆空间、新生代大小
      •  
        与GC交互
        •  
          显示调用GC(强制full GC)
          •  
            System.gc()或Runtime.getRuntime().gc()
        •  
          覆盖终结方法finalize()
          •  
            extends继承,try+finally,执行super.finalize()
    •  
      12.基本输入输出
      •  
        标准流in、out、err
        •  
          System.in.read()
        •  
          System.out.write()/print()
        •  
          System.err.print()
      •  
        标准输入输出类
        •  
          层级结构
          •  
            文本:Reader/Writer
          •  
            二进制:InputStream/OutputStream
      •  
        实现类:Buffered/Data/File/Piped/Object(序列化)/Printer+xxx
      •  
        其他
        •  
          Socket(ip,port).getInputStream()读写
        •  
          压缩和解压文件(G)ZipIn(Out)putStream
    •  
      13.新I/O(NIO 2.0)
      •  
        Path接口
        •  
          用于操作文件和目录
        •  
          获取:Paths.get("\root\soft")
        •  
          功能:getName/getRoot/getParent/toUri……
      •  
        Files类
        •  
          用于CRUD文件或目录
        •  
          变动:createDirectories/File/move/copy
        •  
          查询:isReadable/isExecutable/Writable/Hidden
      •  
        其他特性
        •  
          PathMatcher函数式接口查找文件
        •  
          FileVisitor接口递归访问目录树
        •  
          WatchService实现目录监控
    •  
      14.并发(多线程)
      •  
        概述:线程允许使用多个处理器或核心,从而使得计算更高效☆
      •  
        创建(实现run方法,调用实例的start启动)
        •  
          继承/扩展Thread类
        •  
          实现Runnable接口
      •  
        Thread.state枚举状态
        •  
          新建、可运行(就绪)、阻塞、等待(wait/join激活)、时间等待(休眠)、终止
      •  
        常用方法
        •  
          Thread类
          •  
            普通方法:get优先级/状态,检查is中断/存活,中断、设置优先级
          •  
            静态方法:sleep/yield,返回线程数量、引用、中断状态
        •  
          Object类
          •  
            wait、notify、notifyAll
      •  
        同步
        •  
          概述:将synchronized关键字应用到代码块和方法上
        •  
          格式:同步锁synchronized(对象实例this){}、sychronized vod mthod(){}
      •  
        并发工具集(JUC)
        •  
          executor执行器(线程池)
          •  
            接口:Executor,类:(Scheduled)ThreadPoolExecutor
          •  
            方法:newCached/Fixed/Schedule/SingleThreadExecutor(int n)
          •  
            使用:.execute(t1),.shutdown()
        •  
          并发集合
          •  
            ConcurrentMap/HashMap/SkipListMap/Set
          •  
            COW(写时复制副本):CopyOnWriteArrayList/Set
          •  
            (Priority)BlockingQueue/Deque-阻塞队列
        •  
          同步器synchronizer
          •  
            Semaphore/CountDwonLatch/CyclicBarrier/Exchanger
        •  
          时间工具类TimeUint常量
          •  
            tryLock(15L,TimeUnitSECONDS)=15秒,通知方法如何计算时间参数
    •  
      15.集合框架
      •  
        Collection接口:List/Map/Queue/Set
      •  
        方法:put/add/get/remove,contains/Key/Value
      •  
        工具类方法:addAll/max/min/disjoint/copy/rotate/swap/sort/fill/replaceAll
      •  
        Comparator接口与List.of()工厂方法
    •  
      16.泛型框架
    •  
      17.脚本API
      •  
        Script s = scriptEngineManager.getEngineExtention()
      •  
        s.eval(指令或FileReader(文件))
    •  
      18.日期和时间API
    •  
      19.Lambda表达式
      •  
        λE基础
        •  
          包含一个函数式接口FI,理想情况下有@FI注解
        •  
          方法与构造器引用:ArrayList<Integer>::new/String::length
      •  
        函数式接口
        •  
          特定的:FileFilter/Runnable/Callable/Compator
        •  
          通用的:Consumer/Predicate/Supplier
    •  
      20.JSHell
    •  
      21.模块系统
以上内容整理于幕布文档

《Java口袋指南》-内容总结的更多相关文章

  1. 剑指Offer——银行网申内容模版

    剑指Offer--银行网申内容模版 年获得"优秀共青团员"称号 2013.12 科技标兵 2013.10 三好学生 2013.10 "三下乡"优秀学生 2013 ...

  2. 《剑指offer》内容总结

    (1)剑指Offer——Trie树(字典树) Trie树 Trie树,即字典树,又称单词查找树或键树,是一种树形结构,是一种哈希树的变种.典型应用是统计和排序大量的字符串(但不仅限于字符串),所以经常 ...

  3. 面试经典算法题集锦——《剑指 offer》小结

    从今年 3 月份开始准备找实习,到现在校招结束,申请的工作均为机器学习/数据挖掘算法相关职位,也拿到了几个 sp offer.经历这半年的洗礼,自己的综合能力和素质都得到了一个质的提升. 实话说对于未 ...

  4. 《剑指offer》全部题目-含Java实现

    1.二维数组中的查找 在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序.请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数. publi ...

  5. 剑指Offer——京东实习笔试题汇总

    剑指Offer--京东实习笔试题汇总 编程题1 题目的详细信息已经记不住,只能大致描述一下,就是求最有价值的的委托信息. n.s.B.S其中n代表委托信息,s要求的最有价值的委托信息的个数,B代表买入 ...

  6. 剑指Offer——关于劳动合同,这6件事毕业生必须知道!

    剑指Offer--关于劳动合同,这6件事毕业生必须知道!   求职找工作,不少人拿到劳动合同的那刻,可能连合同内容都没看清,就挥着笔杆子"签签签".别急!劳动合同包含哪些条款你清楚 ...

  7. 剑指Offer——Java实现栈和队列的互模拟操作

    剑指Offer--Java实现栈和队列的互模拟操作 栈模拟队列   题目:JAVA实现用两个栈来实现一个队列,完成队列的Push和Pop操作.队列中的元素为int类型.   思路:其实就是把队列正常入 ...

  8. 剑指Offer——中国银行面试知识储备

    剑指Offer--中国银行面试知识储备+面试内容 事件介绍 时间:2016.11.23 08:30 地点:北京市海淀区永丰路299号南门(中国银行软件中心) 事件:中国银行面试(中英文面试) 注意事项 ...

  9. 剑指Offer——如何做好自我介绍

    剑指Offer--如何做好自我介绍 前言 自我特点+经历梳理   各位老师好,我叫某某某,XX人.研究生三年级,就读于某某大学信息科学与工程学院软件工程专业.主要使用的开发语言是Java,熟悉基本数据 ...

  10. 剑指Offer——知识点储备--Linux基本命令+Makefile

    剑指Offer--知识点储备–Linux基本命令 1.linux下查看进程占用cpu的情况(top): 格式 top [-] [d delay] [q] [c] [S] [s] [i] [n] 主要参 ...

随机推荐

  1. 【gRPC】C++异步服务端优化版,多服务接口样例

    官方的C++异步服务端API样例可读性并不好,理解起来非常的费劲,各种状态机也并不明了,整个运行过程也容易读不懂,因此此处参考网上的博客进行了重写,以求顺利读懂. C++异步服务端实例,详细注释版 g ...

  2. Kubernetes 日志:日志收集架构

    应用程序和系统日志可以帮助我们了解集群内部的运行情况,日志对于我们调试问题和监视集群情况也是非常有用的.而且大部分的应用都会有日志记录,对于传统的应用大部分都会写入到本地的日志文件之中.对于容器化应用 ...

  3. Portainer实用教程

    Portainer使用 Nginx 容器实现端口转发 在 WordPress 部署完成后,需要在浏览器内输入 IP:端口或域名:端口 的形式访问网站,但我们一般访问应用的时候都是希望不加端口就能访问域 ...

  4. Alertmanager集成Dingtalk/Wechat/Email报警

    grafana对报警的支持真的很弱,而Prometheus提供的报警系统就强大很多 Prometheus将数据采集和报警分成了两个模块.报警规则配置在Prometheus Servers上,然后发送报 ...

  5. JS 模块化- 04 CMD 规范与 Sea JS

    1 CMD 规范介绍 CMD: Common Module Definition, 通用模块定义.与 AMD 规范类似,也是用于浏览器端,异步加载模块,一个文件就是一个模块,当模块使用时才会加载执行. ...

  6. 在图片不被裁剪时opencv绕图片中任意点旋转任意角度

    opencv绕图片中任意角度旋转任意角度   最近在做项目需要把把图片绕图片中任意点旋转任意角度,考虑到自己旋转需要编写插值算法,所以想到了用opencv,但是网上都是围绕图片中点旋转任意角度的,都是 ...

  7. Codeforces Round #442 (Div. 2) B. Nikita and string

    题意:求最长可以分a b a为三部分子串,a b a可以为空 思路在代码里 1 #include<cstdio> 2 #include<iostream> 3 #include ...

  8. IOC常用的创建对象方式

    通过无参构造方法来创建 1.User.java public class User { private String name; public User() { System.out.println( ...

  9. web3.0、比特币、区块链、元宇宙,以及那些待收割的韭菜们!

    前几天看到周星驰在社交账号上招聘web3.0的人才,感觉有必要说说web3.0,当然不是基于技术层面,而是从另一个维度说说web3.0以及其它相关的概念,从而做到如何反欺诈,如何避免被资本割韭菜.想到 ...

  10. 41.SessionAuthenticatio和自定义认证

    SessionAuthentication认证介绍 SessionAuthentication使用了Django默认的会话后端 适合AJAX客户端等运行在同样会话上下文环境中的模式 是DRF默认的认证 ...