java学习
guanhang89
这个作者很懒,什么都没留下…
展开
-
java并发编程实战读书笔记
文章目录线程安全性对象的共享对象的组合基础构建模块结构化并发应用程序取消和关闭线程池的使用:活跃性、性能与测试减少死锁显式锁构建自定义的同步工具原子变量与非阻塞同步机制Java内存模型线程安全性一个对象是否线程安全,取决于它是否被多个线程访问Java的同步机制关键字是synchronized,它提供了一种独占的加锁方式,但“同步”这个术语还包括volatile类型的变量,显式锁以及原子变量由于不恰当的执行时序而出现不正确的结果这种情况成为:静态条件(race condition,这里的condit原创 2020-06-13 10:41:45 · 354 阅读 · 0 评论 -
Java网络编程之URL和URI
URL和URIURIURLs相对URLURL类从URL获取数据分解URLequals和hashcode转换URI类构造URI的各部分解析相对URIequals字符串表示URLEncoderURLDEcoder代理URL和URIURL可以唯一地标识一个资源在Internet上的位置。URL是最常见的URIURIURI是采用一种特定的语法标识一个资源的字符串.例如htt原创 2016-12-27 17:32:03 · 5549 阅读 · 1 评论 -
5 异常、finally、权限、jar包、模板模式
自定义异常类自定义异常类自定义异常类的步骤: 自定义一个类继承Exception即可。 class NoIpException extends Exception{ public NoIpException(String message){ super(message); //调用了Exception一个参数的构造函数。 }}class Demo2 {原创 2016-01-25 01:53:27 · 600 阅读 · 0 评论 -
JAVA 枚举使用详解
问题引入:如何限制用户输入class Student{ private String name; // 考试等级 private String grade; //等级只能是ABCDE五个等级之一 // .. 省略get/set }// 程序调用public static void main(String[] args) { Student stu原创 2016-08-20 18:41:44 · 4073 阅读 · 0 评论 -
Log4j使用详解
简介Log4J是Apache的一个开放源代码项目,它是一个日志操作包,通过使用Log4J,可以指定日志信息输出的目的地,如控制台、文件、CUI组件、NT的事件记录器;还可以控制每一条日志输出格式。此外,通过定义日志信息的级别,能够非常细致地控制日志的输出,最令人感兴趣的是,这些功能可以通过一个配置文件来灵活进行配置,而不需要修改应程序代码。在应用程序中输出日志有3个目的:监视代码中变量的变化情况,把原创 2016-08-20 18:22:01 · 1083 阅读 · 0 评论 -
java基础增强(泛型,反射, 注解,日志)
泛型// 运行时期异常 @Test public void testGeneric() throws Exception { // 集合的声明 List list = new ArrayList(); list.add("China"); list.add(1); // 集合的使用 Str原创 2016-08-20 00:05:44 · 2071 阅读 · 0 评论 -
6 Object类、StringBuffer、StringBuilder
字符串Object 类字符串StringBufferStringBuffer主要方法StringBuilder字符串Object 类java是面向对象的语言,核心思想:找适合的对象做适合的事情:方式一:自定义类,然后通过自定义的类创建对象。方式二:sun提供了很多的类给我使用,我们只需要认识这些类,我们就可以通过这些类创建对象了。Object类是所有类的终极父类。 任何一个类都继承了Ob原创 2016-01-26 17:07:40 · 562 阅读 · 0 评论 -
什么是序列化和反序列化
详见原博客用来处理对象流简单来说序列化就是一种用来处理对象流的机制,所谓对象流也就是将对象的内容进行流化,流的概念这里不用多说(就是I/O),我们可以对流化后的对象进行读写操作,也可将流化后的对象传输于网络之间(注:要想将对象传输于网络必须进行流化)!在对对象流进行读写操作时会引发一些问题,而序列化机制正是用来解决这些问题的!问题的引出:如上所述,读写对象会有什么问题呢?比如:我要将对象写入一个磁盘转载 2016-06-07 23:14:53 · 6667 阅读 · 1 评论 -
16 SequenceInputStream、PrintStream、Properties、递归、编码
SequenceInputStream合并两个文件合并多个文件ObjectOutputStream ObjectInputStreamSequenceInputStreamSequenceInputStream(序列流) 案例:合并文件内容合并两个文件采用传统方法public static void merge1() throws IOException{ //找到目标文件原创 2016-02-06 23:34:04 · 1081 阅读 · 0 评论 -
那些值得一看的java博客
那些值得一看的java博客持续更新序列化和反序列化 JAVA对象流序列化时的readObject,writeObject,readResolve是怎么被调用的 https://blog.csdn.net/u014653197/article/details/78114041枚举 深入理解java枚举类型 https://blog.csdn.net/...原创 2018-04-01 00:55:56 · 508 阅读 · 0 评论 -
定时调度任务Timer源码分析
定时调度任务Timer源码分析概念Timer番外篇:监视器(monitor)的概念wait方法和monitor的关系notify方法和monitor的关系API源码分析Timer的缺点定时调度任务Timer源码分析概念基于给定的时间点,给定的时间间隔或者给定的执行次数自动执行任务 Timer由JDK提供,由后台程序执行 ...原创 2018-04-25 01:13:33 · 504 阅读 · 0 评论 -
Java8函数式编程
文章目录Java8函数式编程简介什么是函数式编程Lambda表达式引用值,而不是变量函数接口类型推断流常用的流操作生成流collect(toList())返回集合map将一个流中的值转为另一个新的流filter方法过滤元素flatMapmax和minreduce操作整合操作高阶函数PredicateFunctionBinaryOperator练习类库基本类型重载解析@FunctionalInter...原创 2019-01-13 20:43:50 · 2764 阅读 · 0 评论 -
Netty权威指南读书笔记(☆☆☆)
文章目录Netty权威指南读书笔记(☆☆☆)IO基础入门Linux的IO模型简介IO多路复用技术Java的IO演进NIO入门传统的BIO编程伪异步IOAIO编程选择Netty的理由原生NIO的缺点Netty 入门应用TCP粘包/拆包问题的解决之道解决粘包问题代码实现分隔符和定长解码器的应用DelimiterBasedFrameDecoder应用开发FixedLengthFrameDecoder固定...原创 2018-10-03 22:49:35 · 1082 阅读 · 0 评论 -
NIO之Reactor模式
NIO之Reactor模式Reactor模式是为了构建一个高性能的服务器端而采用的模式,它采用事件驱动的方式,能够有效应对高并发的场景。NIO也就是非阻塞IO,JDK网络NIO中的Selector的理念也是来自于Reactor模式,了解了Reactor模式,能够让我们更快地对JDK、netty或者其他框架的NIO的实现快速上手Reactor模式的解释Reactor模式源自Schmidt的一篇...原创 2018-10-01 00:02:29 · 790 阅读 · 0 评论 -
Apache Kafka实战读书笔记(推荐指数:☆☆☆☆☆)
Apache Kafka实战读书笔记(推荐指数:☆☆☆☆☆)认识AK快速入门安装和启动小案例消息引擎系统消息引擎范型AK的概要设计吞吐量/延时消息持久化负载均衡和故障转移:伸缩性:AK的基本概念和术语消息topic和partitionoffsetreplicaleader和followerISRAK的使用场景AK的发展历史AK的历史...原创 2018-09-09 22:20:17 · 2049 阅读 · 0 评论 -
实战Redis读书笔记(推荐指数:☆☆☆)
Redis实战读书笔记 Redis实战读书笔记初始RedisRedis的操作实例使用案例使用Redis构建Web应用使用R缓存cookie使用R实现购物车实现细节代码实现Redis命令字符串LIST集合散列有序集合发布与订阅其他命令排序命令R的事务键的过期时间数据安全与性能保障持久化选项快照持久化AOF持久...原创 2018-08-07 23:14:27 · 852 阅读 · 0 评论 -
深入理解java虚拟机读书笔记(推荐指数:☆☆☆☆☆)
深入理解Java虚拟机读书笔记Java虚拟机的发展史(略)自动内存管理机制运行时数据区域程序计数器Java虚拟机栈本地方法栈Java堆方法区常量池直接内存HotSpot虚拟机对象探秘对象的创建过程对象的内存布局对象的访问定位实战:OOM异常堆溢出虚拟机栈和本地方法溢出方法区和运行时常量池溢出本机直接内存溢出垃圾收集器与内存分配策略概述...原创 2018-07-19 00:20:48 · 1879 阅读 · 0 评论 -
实战高并发读书笔记(推荐指数:☆☆☆☆)
实战Java并发程序设计读书笔记走入并行的世界相关概念同步和异步并发和并行临界区阻塞和非阻塞死锁、饥饿、活锁并发级别阻塞无饥饿无障碍无锁无等待有关并行的两个定律Amdahl定律Gustafson定律JMM原子性可见性并行程序基础基础知识线程的基本操作新建线程终止线程线程中断wait和notifysuspend和resum...原创 2018-05-21 00:43:02 · 1655 阅读 · 0 评论 -
13 File类
File类IO流Input Output File类的构造方法分隔符问题路径问题常用方法创建删除判断获取文件夹相关Tips毫秒值转化为date对象File类IO流(Input Output) :IO技术主要的作用是解决设备与设备之间 的数据传输问题。 比如: 硬盘—>内存 内存的数据—->硬盘上 把键盘的数据——->内存中 IO技术原创 2016-02-04 00:23:47 · 471 阅读 · 0 评论 -
java基础复习(集合、泛型、IO流、多线程、Junit 、内省 、Properties、 路径问题)
集合---|Collection: 单列集合 ---|List: 有存储顺序, 可重复 ---|ArrayList: 数组实现, 查找快, 增删慢 由于是数组实现, 在增和删的时候会牵扯到数组增容, 以及拷贝元素. 所以慢。数组是可以直接按索引查找, 所以查找时较快 ---|LinkedLis原创 2016-04-25 11:29:47 · 5925 阅读 · 0 评论 -
10 泛型、双列集合
泛型泛型简介自定义泛型泛型类泛型接口泛型上下限双列集合MapMap接口实现类HashMapTreeMapHashTable不重要集合的工具类Collections数组工具类Arrays常用方法泛型泛型简介泛型是jdk1.5使用的新特性。 泛型的好处:将运行时的异常提前至了编译时。避免了无谓的强制类型转换 。泛型在集合中的常见应用:ArrayList<String>原创 2016-02-03 00:36:20 · 839 阅读 · 0 评论 -
9 集合
Connection接口connection 接口方法Connection 迭代器List接口List接口的实现类ArrayListLinkedListVectorSet接口Set接口的实现类HashSet依靠equals和HashCode的方法共同作用TreeSetset集合中的equals和hashCode 转创建String对象过程的内存分配转Tips小案例使用L原创 2016-02-02 23:47:46 · 473 阅读 · 1 评论 -
7 System、Runtime、Date、Math、Random类
StringBuffer类StringBuffer类原创 2016-01-26 17:41:21 · 381 阅读 · 0 评论 -
4 类型转换、内部类、异常
数据类型转换内部类异常数据类型转换 目前多态情况下不能访问子类特有的成员。如果需要访问子类特有的成员,那么需要进行类型强制转换. 基本数据类型的转换 小数据类型-------->大的数据类型 自动类型转换 大数据类型--------->小数据类型 强制类型转换 小数据类型 变量名 = (小数据类型)大数据类型;引用数据类型的转换小数据类型--------原创 2016-01-24 20:41:33 · 789 阅读 · 0 评论 -
3 final、抽象类、值交换、接口、多态
java类 接口final关键字抽象类值交换引用交换接口多态java类 接口final关键字final关键字的用法:final关键字修饰一个基本类型的变量时,该变量不能重新赋值,第一次的值为最终的。final关键字修饰一个引用类型变量时,该变量不能重新指向新的对象。final关键字修饰一个函数的时候,该函数不能被重写。final关键字修饰一个类的时候,该类不能被继承。常量的修饰符原创 2016-01-24 00:56:15 · 638 阅读 · 0 评论 -
2 main、单例模式、继承、instanceof
java类部分main函数详解单例设计模式继承java类部分main函数详解main函数的详解:public : 公共的。 权限是最大,在任何情况下都可以访问。 private 原因: 为了保证让jvm在任何情况下都可以访问到main方法。static: 静态。静态可以让jvm调用main函数的时候更加的方便。不需要通过对象调用。 不用static的麻烦:需要创建对象调用jvm不知道原创 2016-01-23 01:14:39 · 830 阅读 · 0 评论 -
正则pattern和matcher
详见原博 自己重新排版了一下结论Pattern与Matcher一起合作.Matcher类提供了对正则表达式的分组支持,以及对正则表达式的多次匹配支持. 单独用Pattern只能使用Pattern.matcher(String regex,CharSequence input)一种最基础最简单的匹配。Pattern以及MatcherPattern类用于创建一个正则表达式,也可以说创建一个匹配模式,它转载 2016-02-19 22:46:04 · 447 阅读 · 0 评论 -
Java重定向标准输入/输出
详见:重定向标准输入\输出转载 2016-02-17 16:22:02 · 637 阅读 · 0 评论 -
11 正则表达式
正则表达式符号案例匹配matches切割split替换replaceAll查找正则表达式符号 注意:任何预定义字符没有加上数量词之前只能匹配一个字符。"12".matches("\\d\\d");//这里匹配了两个 注意:这里只匹配一个案例匹配(matches)匹配QQ号 String qq = "123456"; String reg = "[1-9原创 2016-02-03 18:21:20 · 619 阅读 · 0 评论 -
12 jdk1.5特性
jdk1.5特性静态导入静态导入的作用: 简化书写。静态导入可以作用一个类的所有静态成员。 静态导入的格式:import static 包名.类名.静态的成员;静态导入要注意的事项:1. 如果静态导入的成员与本类的成员存在同名的情况下,那么默认使用本类的静态成员,如果需要指定使用静态导入的成员,那么需要在静态成员前面加上类名增强for循环增强for循环的作用: 简化迭代器的书写格式。(注意:原创 2016-02-03 22:12:57 · 361 阅读 · 0 评论 -
8 线程、死锁
线程线程简介线程创建方式一线程常用方法线程安全问题线程同步方式一线程同步方式二死锁现象创建线程方式二线程的通信线程的停止守护线程join方法线程线程简介、线程创建方式一进程 : 正在执行的程序称作为一个进程。 进程负责了内存空间的划分。 问题: windows号称是多任务的操作系统,那么windows是同时运行多个应用程序吗?从宏观的角度: windows确实是在同时运原创 2016-01-27 23:30:20 · 692 阅读 · 0 评论 -
1 java类、构造函数、代码块、this、static关键字
java类部分(总结个人认为的重点)类小结成员变量与局部变量的区别: 1. 自定义的位置区别: 1. 成员变量是定义在方法之外,类之内的变量。 2. 局部变量是声明在方法之内的变量。 2. 作用上的区别: 1. 成员变量的作用描述一类事物的属性。 2. 局部变量的作用是提供一个变量给方法内部使用的。原创 2016-01-19 20:06:30 · 755 阅读 · 0 评论 -
19 设计模式、反射
bat处理文件对象的克隆内存泄露单例设计模式补充观察者设计模式反射工厂设计模式bat处理文件bat处理文件: bat处理文件就是可以一次性执行多个命令的文件。 为什么要学bat处理文件, 快速运行一个软件我一般都会把软件打包一个jar包。 jar双击可以运行仅对于图形化界面的软件起作用,对于控制台的程序是不起作用的。 对于控制台的程序我们可以使用bat处理文件快速启动一个项目。原创 2016-02-12 23:01:35 · 405 阅读 · 0 评论 -
18 图形界面
图形界面java使用到的图形类主要在java.awt 与javax.swing包中。java.awt 与 javax.swing包的区别: java.awt中使用的图形类都是依赖于系统 的图形库的。 javax.swing包使用到的图形类都是sun自己实现,不需要依赖系统的图形库。在java中所有的图形类都被称作组件类。 组件的类别: ———-| 容器组件 ———-| 非容器组件 pu原创 2016-02-10 19:23:35 · 722 阅读 · 0 评论 -
17 网络编程
网络编程网络编程: 网络编程主要用于解决计算机与计算机(手机、平板)之间的数据传输问题。 网络编程: 不需要基于html页面就可以达到数据之间的传输。 比如: feiQ , QQ , 微信…. 网页编程: 就是要基于html页面的基础上进行数据的交互的。 比如: 珍爱网、 oa(办公自动化)、 高考的报告系统…计算机网络: 分布在不同地域 的计算机通过外部设备链接起来达到了消息互通、资源共享的原创 2016-02-09 21:49:50 · 371 阅读 · 0 评论 -
15 装饰着模式
装饰者模式增强一个类的功能时候我们可以选择使用继承: 通过继承实现增强一个类的功能优点:代码结构清晰,通俗易懂。 缺点: 使用不灵活,会导致继承的体系过于庞大。 例子://带行号的缓冲输入字符流class BufferedLineNum2 extends BufferedReader{ //在内部维护一个被装饰类的引用。 BufferedReader bufferedR原创 2016-02-06 01:12:42 · 406 阅读 · 0 评论 -
14 IO流
IO流FileInputStream读取文件四种方式FileOutputStream拷贝文件案例IO异常的处理BufferedInputStreamBufferedOutputStream拷贝图片码表FileReaderFileWriterBufferedReaderBufferedWriterIO流的继承关系图IO流IO流分类: 如果是按照数据的流向划分:输入流输原创 2016-02-04 22:39:07 · 499 阅读 · 0 评论