java
Elong_Hu
Live to Make A Difference.
展开
-
通信中的BIO与NIO
从BIO到NIOBIO阻塞式的IO,NIO非阻塞式的IO。这里从一个通信的并发问题讲起。我们知道当并发量大的时候我们能够采用的解决或者是扩展方式有两种:横向扩展(增大线程的数目),纵向扩展(使得每个线程得到良好的使用)。 在并发量大的时候我们可以启用多个线程,比如说我们常用的手段就是线程池。但是如果线程阻塞每个线程还是得不到充分的利用。这时候我们就应该使用NIO来使得每个线程的利用...原创 2018-11-05 20:40:04 · 390 阅读 · 0 评论 -
Java面试Top50
http://www.importnew.com/12773.html转载 2018-05-21 22:29:28 · 293 阅读 · 0 评论 -
Java之集合框架
集合框架集合框架是Java用来存放数据的容器,主要分为基于链式存储Collection系列和键值对存储的Map系列,它们的继承树如下。 集合的遍历使用Lambda表达式遍历Collection集合Iterable接口新增了一个forEach(Consumer action)方法,又因为Iterable接口是Collection的父接口所以Collection可以直接调用...原创 2018-05-13 22:11:05 · 327 阅读 · 0 评论 -
工厂模式(Java版)
从单例模式说起单例模式的主要特点就是一个类的对象只能够由这个类本身产生所以它的构造器必须私有化。如果更加严格的话比如说这个类只能够产生一个特定的对象这样的话我们将会new一个静态的成员变量出来以下为代码:package simplefactory;import java.util.ArrayList;import java.util.List;public class Car ...原创 2018-04-12 22:24:35 · 1451 阅读 · 2 评论 -
浅谈Java垃圾回收机制
对象在内存中的状态对象在内存中一共有三种状态:①可达态:在对象创建之后若有一个以上的引用变量引用它就是可达态。程序可以通过引用变量去引用它。②可恢复态:当对象完全失去引用的时候就进入可恢复态。在这种状态下系统的垃圾回收机制就准备回收该对象使用的内存。在回收内存时系统会调用可恢复对象的finalize()方法进行资源的清理。实务上finalize()方法既可以将可恢复对象变成可达态状态又可以将它变成...原创 2018-03-22 12:53:08 · 194 阅读 · 0 评论 -
Java之类的加载机制与反射
类的加载机制与反射类的加载连接与初始化JVM和类类的加载(产生一个Class的对象)当程序主动使用一个类的时候,如果该类还没有被加载到内存中,则系统会通过加载、连接、初始化三个步骤来初始化这个类。这三个步骤通常被称为类的初始化。类的加载主要是指将class文件读入内存,并且创建一个java.lang.Class对象。也就是说程序使用任何类时都会为之建立一个java.lang.Class的对象。站在...原创 2018-06-25 21:57:01 · 362 阅读 · 0 评论 -
Java易错知识点之类型&常量池&位运算
类型转换自动类型转换记住这样的一个图意思就是左边的类型的值可以直接赋值给右边的类型。但是反过来就得用到强制转换。强制类型转换首先提醒一下强制类型转换只限于上图中的这些数据类型。强制转换会造成数据的丢失,具体的做法就是将这些数据准换成一个二进制的数据然后砍掉一部分数据的长度。比如把int类型的233转换成一个8位的byte类型会把前面的24位砍掉。然后看这个数据的首部来判断是否为负数,如果是负数那么...原创 2018-06-19 12:32:15 · 224 阅读 · 0 评论 -
Java数据类型转换问题
基本数据类型整数型byte --- 字节型 --- 1个字节 --- -27~27-1 -> -128~127byte b1 = 25; byte b2 = 127;short --- 短整型 --- 2个字节 --- -215~215-1 -> -32768~32767int --- 整型 --- 4个字节 --- -231~231-1 --- 在Java中整数默...原创 2018-09-28 21:25:44 · 1113 阅读 · 0 评论 -
Java类的加载和代码执行顺序
关于类加载和初始化相关的案例总的顺序是:先父类后子类,先静态后动态,属性和代码块的初始化遵循正常的出场顺序无论是静态还是动态,但是他们总是先于构造器执行。但是还是需要通过题目的学习来加深我们的理解。案例一package ooptest;public class StaticDemo6 { public static void main(String[] args) { ...原创 2018-09-28 21:22:02 · 7272 阅读 · 8 评论 -
字符串的内部存储原理
字符串的存储字符串是一个字面量,它的值存储在常量池中(也就是方法区的运行时常量池),他的底层是使用字符数组来存储,它是可以共享的。以下展示直接字符串与字符串对象的存储。其中String s1 = “ab”;会产生一个对象,也就是它底层的字符数组。单独的String s2 = new String(“ab”);是会产生两个对象的,也就是堆内存中new出来的对象,和字符数组。如...原创 2018-09-28 21:14:43 · 1640 阅读 · 0 评论 -
马士兵老师高并发编程之6大线程池
Executor执行器,这是一个接口,内部维护了一个方法execute它负责执行一项任务。参数为Runnable,方法的具体实现由我们自己来执行。如下面的代码,我们既可以使用单纯的方法调用也可以新启一个新的线程去执行Runnable的run方法。import java.util.concurrent.Executor;public class T01_MyExecutor imple...原创 2018-09-15 14:24:52 · 1981 阅读 · 0 评论 -
马士兵老师高并发编程同步容器
手写固定同步容器写一个固定容量同步容器,拥有put和get方法,以及getCount方法,能够支持2个生产者线程以及10个消费者线程的阻塞调用。使用wait与notify思路:使用一个集合来当做生产或者消费的中转站,然后每当生产或者消费的时刻都判断集合的容量,如果不满足条件那么就对这种操作进行阻塞也就是wait同时notify其它的所有线程。当其它线程启动之后也会遇到“不合格的线程”这...原创 2018-09-13 11:26:45 · 664 阅读 · 2 评论 -
马士兵老师高并发编程基础入门(修订版)
锁是指谁? Object o = new Object(); Synchronized(o); 我们一般认为Synchronized锁定的是这段代码块但事实上,Synchronized锁定的是锁这个对象。不仅如此Synchronized锁定的是heap内存中的这个对象而不是这个引用。一个例子/** * 锁定某对象o,如果o的属性发生改变,不影响锁的使用 ...原创 2018-09-05 15:49:54 · 1464 阅读 · 0 评论 -
两分钟读懂ThreadLocal
ThreadLocal的工作原理场景假设一个用户是一个线程。他们都对数据库进行操作,这个时候就会每个用户就会从数据源中开启一个事务以确保能够顺利的打开或者关闭事务。那么如何保证用户与用户之间的数据库连接不发生冲突呢?就是用ThreadLocal。 原理解释这里先交代一下,每一个线程都有自己的一个Map集合叫做ThreadLocalMap他是线程的一个静态内部类它就是用来保存连接...原创 2018-09-03 09:00:31 · 388 阅读 · 0 评论 -
马士兵老师JVM调优(修订版)
JVM调优目标:调整Java虚拟机的参数使得性能达到最优。原则:无监控不调优。Java内存结构程序计数器:它是一块较小的线程私有的内存空间。它可以看做是当前线程所执行字节码的行号显示器。通过改变这个计数器的值可以选择执行的字节码。借助这个性质我们可以使用计数器来恢复被打断的线程。每一个线程都有自己的一个程序计数器互不影响。虚拟机栈:是一块线程私有的内存空间。每起一个线程就会...原创 2018-08-14 19:41:27 · 7852 阅读 · 1 评论 -
浅谈Java枚举类
什么是枚举类有时候一个类的对象有且固定的,这样的类就是枚举类。比如说四季,或者是九大行星。这个类突出的特点就是固定。几个特点①枚举类默认继承java.lang.Enum类而非Object这个类。②使用enum修饰,抽象的枚举类会有隐式的abstract修饰,非抽象的枚举类默认使用final修饰所以不能派生子类。(而他的枚举值是他的匿名内部子类)③构造器默认使用private来修饰。④枚举值必须在第...原创 2018-03-20 21:58:09 · 322 阅读 · 0 评论 -
Java常用类
运行Java程序的参数main函数的方法签名,public static void main(String[] args){...}。①public 因为它的调用者是虚拟机,所以要暴露出来。②static因为JVM在调用这个方法时不会先去创建一个对象然后再去调用。③void将一个值返回给JVM没有任何意义,JVM已经不会对返回值进行处理。④谁调用函数谁就给这个函数的参数赋值。上...原创 2018-03-29 22:24:33 · 352 阅读 · 0 评论 -
response实现文件的下载
package response;import java.io.FileInputStream;import java.io.FileOutputStream;import java.io.IOException;import java.io.InputStream;import java.io.OutputStream;import java.net.URLEnc原创 2016-08-19 19:40:18 · 366 阅读 · 0 评论 -
response的write输出问题
package response;import java.io.IOException;import java.io.PrintWriter;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServl原创 2016-08-19 19:38:30 · 1625 阅读 · 0 评论 -
responseoutputstream的输出问题
在客户端那边打印中文package response;import java.io.IOException;import java.io.OutputStream;import java.io.PrintWriter;import javax.servlet.ServletException;import javax.servlet.http.HttpSer原创 2016-08-19 19:37:14 · 1979 阅读 · 0 评论 -
httpServletResponse简概
request & response响应和请求HttpServletResponse1.其中有很多的定义字段来表示那些异常的相应的状态码404,302......2.有构成http请求的各个部分的方法原创 2016-08-19 19:34:26 · 168 阅读 · 0 评论 -
web应用中普通java程序读取资源文件
普通java程序读取资源文件(Servlet调用其它程序进而读取资源,通过类装载器)文件不能太大注意,类只装载一次所以改没改没有什么乱用package hyl;import hyl.dao.UserDao;import java.io.IOException;import javax.servlet.ServletContext;import jav原创 2016-08-19 19:32:56 · 229 阅读 · 0 评论 -
servletcontext读取web资源文件
1.配置文件没有关系的用properties,有关系的用xml。Servlet读取配置文件,当填写web工程的目录的时候不能天真的填写eclipse里的目录,我们要填写的是真实的目录比如"/WEB-INF/classes"。以下是servlet读取web中properties的模板代码package hyl;import java.io.IOExcept原创 2016-08-19 19:31:04 · 255 阅读 · 0 评论 -
servlet开发细节
1.当我们搞到一个工程的时候建了一个新的工程名,其实在发布和访问的时候还是以前的配置名,若要改这个配置名我们需要打开文件的属性的myeclipse下的web一栏进行修改。2.给予不同的访问地址也就是可以有不同的servletmapping(作用是映射)的映射如果映射的url是一个1.html(举例说明)在网页上直接搜的话像一个静态的资源但这是一种伪静态。3.当我们mappi原创 2016-08-19 19:27:06 · 249 阅读 · 0 评论 -
servlet的执行过程
我的浏览器连到目标服务器,服务器根据我的协议去解析拿相对应的资源,当拿到servlet的时候(第一次),servlet是一个类他要创建一个实例对象出来,web服务器然后创建一个req(有信息)和res(空的)然后传递给我们的servlet实例,由于它extends GenericServlet所以在servlet的jar包里的api先会执行一个init方法,按照web服务器所传过来的req的请求原创 2016-08-19 19:25:23 · 378 阅读 · 0 评论 -
Java内部类浅谈
什么是内部类把一个类放在另一个类的内部叫做内部类。内部类的作用①提供了更好的封装,把内部类隐藏在外部类之内部不允许其他类访问。比如说定义一个类为牛,它的一个内部类是牛腿。牛腿类不能够让其他的类访问,也就是一旦牛腿类离开牛的话就会毫无意义。②适合于创建那些需要一次性使用的类。比如说在添加事件响应的类中。内部类对象的核心用内部类创建的对象叫做内部类对象,内部类中能够调用外部类中的一些方法与属性究其原因...原创 2018-03-15 22:25:06 · 139 阅读 · 0 评论 -
泛型简介,自定义泛型的应用及泛型在Dao层的应用
首先声明一点什么叫泛型 1.在逻辑上属于不同的类,但是实际上属于同一个类的类型叫做泛型(在Java中学名叫参数化类型)比如ArrayList<String> a1与 ArrayList<Integer> a2在逻辑上是不同的类型但是实际上是一个类也就是System.out.println(a1.getClass()==a2.getClass());//输出true2.它的重要作用是在不同的参数化原创 2017-08-06 21:48:22 · 410 阅读 · 0 评论 -
用Annotation,内省技术给一个对象注入属性
首先声明两个重要概念 1.反射 反射就是在运行状态把 Java 类中的各种成分映射成相应相应的 Java 类,可以动态得获取所有的属性以及动态调用任意一个方法。这里特被强调是任意类 2.内省 内省是通过反射的方式操作JavaBean的属性,jdk提供了PropertyDescription类来操作访问JavaBean的属性,Beantils工具基于此来实现。这里强调的是JavaBean(原创 2017-08-05 21:57:56 · 398 阅读 · 0 评论 -
动态代理技术在JavaWeb中的应用
(这是我的第五次反馈) 本次所上的内容是: 1.用动态代理技术解决全站乱码问题 2.用动态代理技术解决压缩输出问题1.1用动态代理技术解决全站乱码问题思路 在这里我们用到了JavaWeb中的Filter技术 在以前我们在Filter中放行的时候所传的对象是HttpServletRequest和HttpServletResponse,通过这两个对象直接设置编码会解决全站的post请求的乱码原创 2017-08-04 20:41:29 · 291 阅读 · 0 评论 -
一个案例,入门Java动态代理技术
(这是我的第三次反馈) 首先我们模拟一个场景 我们要找周杰伦唱歌表演 但是我们没办法直接找到周杰伦 周杰伦指派了一个代理人来接待我们,我们只能向代理人提出我们的请求 从这个角度来看是代理人间接地实现了我们的愿望 与此同时对于周杰伦来说代理人也将我们的请求进行了适当的处理 这个思想类比于Java中的动态代理技术 它的主要工作就是对于原始类的方法进行(预)处理(包括拦截、加强、等)然后去原创 2017-08-03 10:34:05 · 293 阅读 · 0 评论 -
Servlet 基础案例
Servlet:目标:1.编一个java类实现Servlet接口 2.把开发好的java类部署到web中专业术语:life-cycle methods 生命周期相关的方法(就是你在生命的某一刻必定执行的方法)在cmd中编译所可能用到的一些命令:(cd\ 回车直接加文件夹进入目标文件夹设置包set classpath=%classpath%;不要回车直原创 2016-08-10 12:05:12 · 332 阅读 · 0 评论 -
反射与构造函数
反射也叫做剖析用来做框架用反射来创建对象分成以下步骤:1.得到类(加载类);2.得到构造方法(注意参数)3.用要加载的类的参数来在我们的类中创建对象;一下为一个实例:--------》先创建一个类:Person 分别有几个不同的构造函数package dau02two;import java.util.List;public cla原创 2016-07-29 18:43:48 · 490 阅读 · 1 评论 -
servletconfig
web服务器把配置信息封装到config对象中,提供一些信息xmlxmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/java原创 2016-08-19 19:24:01 · 174 阅读 · 0 评论