设为首页 - 加入收藏
广告 1000x90
您的当前位置:78345黄大仙救世网7 > 解增删锁 > 正文

java基础-3

来源:未知 编辑:admin 时间:2019-05-17

  Bin --- 二进制 Oct --- 八进制 Dec --- 十进制 Hex --- 十六进制StringBuilder和StringBuffer中的方法签名一模一样的。StringBuilder是线程不安全的,StringBuffer是线程安全的字符串中提供了一系列的操作而不改变原字符串的方法,会产生一个新的字符串Regular expression --- REGEX 用于指定规则的。BigDecimal:用于精确存储和运算小数的类。要求参数以字符串形式传递将基本类型的变量直接赋值给了对应的引用类型的对象 --- 自动封箱/自动装箱字面量的哈希码是固定不变的 --- 所有的字面量都是存储在运行时常量池从JDK1.8开始,对时间体系进行了新的划分,将日期和时间进行分离,并且详细区分,从而形成了一个新的包---时间包 java.timeA. 如果多个异常的处理方式各不一样,可以使用多个catch来分别捕获分别处理B. 如果所有异常的处理方式都一样,可以捕获一个父类异常进行统一的处理C. 如果多个异常分成了不同的组来进行出来,那么同一组异常之间可以用隔开,进行分组处理 --- JDK1.7开始编译时异常:编译的时候就出现。由于在编译的时候就已经出现,所以要求必须处理运行时异常:运行的时候才出现。可以处理,可以不处理 --- RuntimeException自定义异常:定义一个类继承某个异常类,如果继承的是Exception或者是其他的异常,那么定义了一个编译时异常;如果继承的是RuntimeException或者是它的子类,那么就是一个运行时异常元素有序 --- 保证元素的存入顺序 --- List中的元素是存在下标的底层用数组存储数据。默认初始容量是10,每次扩容是在当前的基础上增加一半。10 - 15 - 22. 底层的扩容是基于右移来实现底层是基于节点来进行存储的。内存空间不连续。增删元素的操作相对简单,查询元素的操作相对复杂。是一个线程不安全的集合。如果增删次数和查询次数在相差不大的情况下,使用顺序表还是使用链表结构? --- 链表结构,原因是链表对内存的要求更小顺序表和链表在增删操作时的效率如何? --- 整体效率上,链表要高于顺序表。如果增删位置相对靠前,那么链表效率较高;如果增删位置相对靠后,则顺序表效率较高是Java中最早的集合。底层是基于数组进行存储的。默认初始容量是10,每次扩容默认增加一倍 --- 基于三元表达式。10 - 20 - 40。是一个线程安全的集合继承了Vector。遵循的原则是后进先出/先进后出。最先放入栈中的元素 --- 栈底元素;最后放入栈中的元素 --- 栈顶元素 将元素放入栈中 --- 入栈/压栈 将元素从栈中取出 --- 出栈/弹栈加载因子过小,会导致内存的浪费,也会导致rehash操作越频繁从而降低效率从JDK1.8开始,为了减少扩容次数同时也为了保证每一个桶的查询效率,在桶中的元素超过8个的时候,会采取红黑树结构sort---用于对列表进行排序。在排序的时候可以默认升序排序,也可以指定比较规则进行排序。在指定规则的时候需要传入一个Comparator(比较器)对象,重写compare方法,根据返回值的正负来对元素进行排序在迭代过程中会对每一个元素进行标记。如果标记状态为false说明该元素要被移除。Iterable : 实现这个接口的类所产生的对象可以被增强for循环进行遍历。--- 如果一个对象能够使用增强for循环,那么这个对象对应的类药实现Iterable接口 --- 增强for循环本质上是一个迭代遍历 --- 增强for循环是JDK1.5的特性之一。泛型即参数化类型 --- ParameterizedType --- JDK1.5的特性之一将泛型替换为具体类型的过程 --- 泛型的擦除 --- 发生在了编译期JDK1.8出现的,用于操作集合的流式结构,但不是流。利用stream对象对集合进行批量操作根据已有条件来对结果进行预测断定。 --- 在Java中,断言不是默认开启的,需要手动开启 -ea键 - key, 值 - value --- 键是唯一的,每一个键都对应了一个值 --- 键值对 --- 一个映射中包含了很多的键值对。将每一个键值对看做一个对象 --- 代表键值对的接口 --- Map.Entry,可以认为一个Map对象是由多个entry对象组成。

  2.entrySet() --- 表示将映射中所有的键值对放入一个set集合中映射不是集合,但是集合框架的一员 --- Java Collections Framework :包含了数组、集合、映射以及一部分操作它们的工具类HashMap默认初始容量是16,默认加载因子是0.75f,每次默认增加一倍。键和值允许是null。如果指定初始容量x, 那么x如果在(2n-1,2n],初始容量一定是2n。本身是一个异步式线程不安全的映射Hashtable默认初始容量是11,默认加载因子是0.75f,每次扩容的时候在当前的基础上增加一倍,再+1。11 - 23。键和值不允许是null。Hashtable本身是一个同步式线程安全的映射ConcurrentHashMap异步式线的特性自动封箱/拆箱 增强for循环 静态导入 可变参数 枚举 泛型 反射(JDK1.4出现,1.5增强) 动态代理 内省 注解静态导入/静态导包import static 包名.类名.方法名; 表示导入指定包下的指定类中的指定的静态方法而不导入其他方法 --- 理论上能够提高加载速率,这个提高程度可以忽略不计 --- 对于程序的可阅读性大大降低,如果本类或者父类中存在方法签名一致的方法会导致静态导包失效File代表文件或者目录(文件夹)的类。路径绝对路径:以盘符或者是/开头的路径 D:\aa.txt /home/software 和当前所处的路径没有任何关系,直接定位到指定的路径相对路径:不以盘符或者是/开头的路径 a.txt 需要以当前的位置来计算另一个位置,路径发生改变的时候能够自动计算IO流是Java中一套用于数据传输的API。IO - Input Output - 输入输出流。输入流指数据从外部流向程序;输出流指数据从程序流向外部四个基本流都是抽象类,不能直接创建对象字符流字节流FileOutputStream --- 字节输出流,可以向文件中写数据FileInputStream --- 字节输入流,可以从文件中读取数据向TXT文件中追加数据 - 数据从程序流向文件 - 输出流向TXT文件中写入一个字符串 --- 字符流、输出流、和文件相关的流 --- FileWriter读取文件 - 数据从文件流向程序 - 输入流读取TXT文件 --- 输入流 字符流 和文件相关 FileReader流中的异常处理

  缓冲流BufferedReader --- 提供了缓冲区,能够实现按行读取的效果。利用FileReader来构建了BufferedReader,然后再BufferedReader对读取功能做了增强,这种方式称之为装饰设计模式 --- 利用了同类对象构建自己对象本身,对对象身上的功能做了增强或者改善BufferedWriter提供了一个更大的缓冲区Java中的原生的字符流只能操作字符类文件 txt java html等,但是不能读取office组件系统流/标准流系统流都是字节流标准输入流System.out标准输出流System.err标准错误流转换流字符流和字节流之间用的转换就是转换流OutputStreamWriter --- 将字符流转化为字节流 FileWriter是它的子类InputStreamReader --- 将字节流转化为字符流 FileReader是它的子类合并流SequenceInputStream --- 创建输入流分别指向对应的文件,然后需要创建一个Vector集合存放这些输入流,利用Vector集合来产生一个Enumeration对象,使用Enumeration对象来构建合并流,最后利用合并流来读取数据进行合并。序列化/反序列化流将对象转化为字节之后进行存储 --- 序列化 --- 持久化将字节转化为对象的过程 --- 反序列化注意1.一个对象想要被序列化,那么它所对应的类必须实现接口 --- Serializable --- 这个接口中没有任何的方法和属性,仅仅起标志性作用2.用static/transient修饰的属性不会被序列化3.如果一个类产生的对象允许被序列化,那么这个时候这个类在编译的时候会根据当前类中的属性自动计算一个版本号。当反序列化的时候,拿着对象中的版本号和类中版本号做比较,如果相等,则说明这个对象是这个产生的,可以被反序列化。如果没有手动指定版本号,自动计算版本号,那么就意味着类每变动一次,版本号就要重新计算一次。为了让序列化出去的对象反序列化回来,需要手动指定版本号 --- private static final long serialVersionUIDProperties是一个可以被持久化的映射。键和值的类型都是Stringproperties文件的默认编码就是西欧编码 --- 当向properties文件中存放中文的时候变成了对应的Unicode编码JUnit ---单元测试导入单独的测试库。要求测试的方法做到 “三无”:没有参数、没有返回值、非静态方法线程进程 --- 计算机中在执行的任务 --- 在CPU上执行和计算。一个核上往往只能执行一个进程中的一个线程。---计算机看起来像是在运行多个进程,实际上是因为在计算机中任务切换速度非常快,超过人的反应。--- 进程的执行在宏观上并行的,在微观上是串行的。线程 --- 进程中的小任务 --- 多线程定义线程

  多线程的并发安全问题多个线程同时执行,而多个线程在执行的时候是相互抢占资源导致出现了不合常理的数据的现象---多线程的并发安全问题多线程在执行的时候是相互抢占,而且抢占是发生在线程执行的每一步过程中同步锁机制利用synchronized --- 同步代码块解决多线程并发安全问题同步 --- 一段逻辑在同一时间只能有一个线程执行异步 --- 一段逻辑在同一时间能有多个线程执行同步一定是安全的安全不一定同步异步不一定安全不安全一定是异步的从微观上而言,同步一定是安全的,安全也一定是同步的。从宏观上,同步一定是安全的,安全不一定是同步的需要一个锁对象 --- 要求锁对象要被所有的线程都认识:共享对象,类的字节码(方法区是被线程所共享的),this(必须是同一个对象开启了多个线程)如果同步方法是一个非静态方法,那么以this作为锁对象;如果同步方法是一个静态方法,那么以当前的类作为锁对象死锁 --- 由于锁之间相互嵌套并且锁对象不同导致线程之间相互锁死,致使代码无法继续往下 --- 避免死锁:统一锁对象,减少锁的嵌套活锁 --- 这个资源没有被任何的线程持有占用,导致程序无法往下执行等待唤醒机制wait------等待notify------唤醒等待唤醒机制必须结合锁来使用,而且锁对象是谁就用谁进行等待唤醒。线程的状态创建可以转为就绪就绪可以转为运行或者阻塞运行/活跃可以转为阻塞或者消亡阻塞/挂起可以转为就绪或者消亡消亡线程的优先级线理论上,数字越大优先级越高,抢占到资源的概率就越大实际上,相邻的两个优先级的差别非常不明显。如果优先级差到5个单位及以上,则结果会相对明显一点点守护线程守护别的线程。只要被守护的线程结束,那么无论守护线程完成与否都会结束。在线程中,一个线程要么是守护线程,要么是被守护的线程。当最后一个被守护的线程结束才会导致所有的守护线程结束 --- GC启动线程的情况

  设计模式:在软件开发工程中使用的常见的解决问题的方式单例模式在全局中只存在一个实例的这种现象饿汉式:会增加类的加载时间,能够避免的并发问题懒汉式:减少加载时间,会导致多线程的并发安全问题装饰模式利用FileReader来构建了BufferedReader,然后再BufferedReader对读取功能做了增强,这种方式称之为装饰设计模式 --- 利用了同类对象构建自己对象本身,对对象身上的功能做了增强或者改善套接字进行网络数据传输的一套API --- 本质上是可以在网络上使用流网络基本概念七层模型:物理层 数据链路层 网络层 传输层 - UDP/TCP 会话层 应用层 表示层 --- HTTP、FTP、POP3、SMTP ...IP地址:在网络中标记主机。IPv4 --- 四组数表示一个IP地址,每一组数的取值范围是0-255 10.8.33.5 IPv6 --- 六组数表示一个IP地址 IPv9端口:计算机与外界交互的媒介 --- 端口号 --- 0~65535 --- 0-1024域名:各个网站提供的便于记忆的标记.eduDNS解析服务器:将域名和IP地址进行对应的UDP基于流的。不建立连接,不可靠。传输速度相对比较快的。需要对数据进行封包,每个包不超过64K大小。适用于对速度依赖性比较强但是对可靠性依赖性比较低的场景 --- 视频聊天 --- DatagramSocket DatagramPacket发送端:

  TCP基于流的。建立连接,经历三次握手,可靠。但是传输速率相对较慢。理论上不限制传输的数据的大小。适用于对可靠性的依赖性更高对速度依赖性较低的场景 --- 文件传输注意:receive/connect/accept/write/read都会产生阻塞。客户端 - Socket

  可变参数可变参数允许传入的参数个数随意变化可变参数本质是数组一个方法中只能定义一个可变参数这唯一的一个可变参数必须定义到参数列表的末尾枚举取值相对固定并且能够一一列举。用enum定义枚举 --- 枚举本身是一个类。枚举类中的构造方法默认私有,枚举常量必须定义在枚举类的首行。枚举类中定义任意类型的方法和属性,包括抽象方法在Java中,所有的枚举默认继承g.EnumJDK1.5开始,允许在switch-case中使用枚举常量反射反射:在获取这个类的字节码的基础上来解剖这个类。Field - 代表属性的类获取Class对象

  Method - 代表方法类Constructor - 代表构造方法的类Annotation - 代表注解的类Package - 代表包的类注解给程序看的解释 --- 在Java中,所有的注解的父类是Annotation注解中的属性只能是基本类型、枚举、String、Class、其他注解类型以及他们所对应的一维数组元注解 --- 修饰注解的注解@Target --- 限定注解的使用范围@Retention --- 限定注解的生命周期@Documented --- 限定这个注解在使用的时候能否产生到文档中@Inherited --- 限定此注解可以作用在子类上JVM参数标准参数:-d -ea等非标准参数:-X扩展参数:-XX:每一个线程都有一个独立的栈,因此栈内存的大小影响线程的个数 --- JVM限定了栈内存总的大小不能超过2G 或者物理内存的1/3-Xss128K 表示限定栈内存的大小128K-Xmn 限定新生代的大小-Xms 限定堆内存的初始大小-Xmx 限定堆内存的最大值-Xmn6M -Xms10M -Xmx10M -XX:+PrintGCDetails

本文链接:http://igorkralik.com/jiezengshansuo/78.html

相关推荐:

网友评论:

栏目分类

现金彩票 联系QQ:24498872301 邮箱:24498872301@qq.com

Copyright © 2002-2011 DEDECMS. 现金彩票 版权所有 Power by DedeCms

Top