![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Java
SweeneyZuo
热爱编程!热爱生活!
展开
-
循环队列的JAVA实现
循环队列1:(通过预留一个元素空间来判断队空或队满) public class SqQueue { private final int MAXSIZE = 100; int rear; int front; int[] data = new int[MAXSIZE]; public void add(int a) { if ((rear + 1) % MAXSIZE == f...原创 2019-02-15 22:39:19 · 252 阅读 · 0 评论 -
网络编程
传输层的两个协议TCP/IP(Transmission Control Protocol):TCP提供IP环境下的数据可靠传输层,它提供的服务包括数据流传送、可靠性、有效流控、全双工操作和多路复用。通过面向连接、端到端和可靠的数据包发送。通俗说,它是事先为所发送的数据开辟出连接好的通道,然后再进行数据发送。UDP(User Datagram Protocol):是与TCP相对应的协议...原创 2018-09-02 21:36:36 · 234 阅读 · 0 评论 -
Date&Calendar&SimpleDateFormat
Date:Date类负责时间的表示,在计算机中,时间的表示是一个较大的概念,现有的系统基本都是利用从1970.1.1 00:00:00 到当前时间的毫秒数进行计时,这个时间称为epoch。在后文中如果没有明确说明,毫秒数就是指从1970年到对应时间的毫秒数。在Java 的Date类内部其实也是一个毫秒数,对外表现为一个Date对象。常用的构造方法:Date( )Date(long...原创 2018-08-30 10:12:04 · 257 阅读 · 0 评论 -
JAVA泛型
泛型概念: Java泛型是JDK5中引入的新特性,提供了一种编译时安全检测机制,允许在定义类/接口/方法的时候使用类型参数,声明的类型参数在使用时用具体的类型来替换,允许程序员在编译时检测到非法类型。泛型的本质是参数化类型,也就是说所操作的数据类型被指定为一个参数。使用泛型的好处:泛型机制将类型转换时的类型检查从运行时提前到了编译时,使用泛型编写的代码比杂乱的使用objec...原创 2018-08-30 08:51:24 · 250 阅读 · 0 评论 -
String&StringBuilder&StringBuffer
运行速度:StringBuilder > StringBuffer > StringStringBuffer:final修饰的类。默认构造器是由系统自动分配容量,默认是16个字符。由于没有赋值,所以缓冲对象的长度就是0。StringBuffer sbf=new StringBuffer(100);设定容量大小的构造器StringBuffer append(Tpye...原创 2018-08-29 19:57:22 · 304 阅读 · 0 评论 -
继承的细节
class Father{ String name; public Father(){ name="father"; } public String getName() { show(); return name; } public void show() { System.out.println("father's show..."); }}public cl...原创 2018-08-29 19:40:21 · 231 阅读 · 0 评论 -
单例模式
懒汉式: public class SingDemo {// 懒汉式 private static SingDemo s = null; private SingDemo() { } public static SingDemo getInstance() { if (s == null) { synchronized (SingDemo.class) { if...原创 2018-09-04 08:46:13 · 236 阅读 · 0 评论 -
IO流
一、OutputStream抽象类: void close(); void flush();//刷新,作用是将缓冲区中的数据写进目的地。 void write(int b);写一个字节 void write(byte[] b);写一个字节数组 void write(byte[] b,int off,int len)...原创 2018-08-25 08:46:29 · 204 阅读 · 0 评论 -
集合框架
集合: 当数据多了需要存储,需要容器,但是数据的个数又不确定的时候,无法使用数组(数组长度是固定的,集合长度是可变的),这时便使用了Java中的另一个容器集合。存储的元素都是引用类型。集合框架:集合框架是为表示和操作集合而规定的一种统一的标准的体系结构。任何集合框架都包含三大块内容:对外的接口、接口的实现和对集合运算的算法。 Collection接口中有三个子接口(...原创 2018-08-21 14:33:04 · 276 阅读 · 0 评论 -
Thread
创建线程的三种方式:1.创建Thread的子类对象,子类必须重写run方法,调用start()方法开启线程。new Thread() { @Override public void run() { // 任务代码 } }.start();2.往Thread构造器中传入一个Runnable子类对象,调用start()方法开启线程。new Th...原创 2018-08-28 10:06:18 · 503 阅读 · 0 评论 -
String常量池
为了减少在JVM中创建的字符串的数量,字符串类维护了一个字符串池,每当代码创建字符串常量时,JVM会首先检查字符串常量池。如果字符串已经存在池中,就返回池中的实例引用。如果字符串不在池中,就会实例化一个字符串并放到池中。常量池在java用于保存在编译期已确定的,已编译的class文件中的一份数据。它包括了关于类,方法,接口等中的常量,也包括字符串常量,如String s = "java"这种申明...转载 2018-08-30 22:11:49 · 254 阅读 · 0 评论 -
进程&线程
1.进程(Process)进程是资源分配的最小单位,进程是一个实体。每一个进程都有它自己的地址空间,一般情况下,包括文本区域(text region)、数据区域(data region)和堆栈(stack region)。文本区域存储处理器执行的代码;数据区域存储变量和进程执行期间使用的动态分配的内存;堆栈区域存储着活动过程调用的指令和本地变量。进程是一个“执行中的程序”。程序是一个没有生命...原创 2018-08-27 10:45:33 · 342 阅读 · 0 评论 -
Servlet(Server Applet)
Servlet1、概念是Sun(Oracle)公司制定的用于扩展web应用服务器的一个组件规范。2、web应用服务器:可以部署bs架构项目的服务器。最开始,web应用服务器只能进行一些静态资源的处理。无法满足需要经过计算得到的动态资源。之后出现了CGI,通用编程接口,来实现动态技术。但是CGI编程非常复杂,不利于开发与维护。之后就出现了替代CGI的技术,Servlet...原创 2018-09-16 21:34:31 · 551 阅读 · 0 评论 -
Junit单元测试
(1)导入Junit4的jar(2)在非静态方法上添加注解@Test(3)选中非静态方法的名称右键运行或者在类的树形结构中选中方法运行。(4)注解的方法不能有形参。@Before:此注解的位置也是非静态方法上。在运行@Test注解方法前会自动执行。 @After:此注解的位置也是非静态方法上。在运行@Test注解方法后会自动执行。 ...原创 2018-09-13 19:24:43 · 211 阅读 · 0 评论 -
get&post
get请求(1)在地址栏上直接输入地址。(2)表单默认提交方式。(3)点击链接。post请求:(1)当表单的提交方式设置为post时。原创 2018-09-19 09:03:12 · 270 阅读 · 0 评论 -
JVM(HotSpot)垃圾回收器
首先了解两个概念:新生代GC(Minor GC)指发生在新生代的垃圾收集动作,因为Java对象大多都具备朝生夕灭的特性,所以Minor GC非常频繁,一般回收速度也比较快。老年代GC(Major GC/Full GC)指发生在老年代的GC,出现了Major GC,经常会伴随至少一次的Minor GC(但非绝对的,在ParallelScavenge收集器的收集策略里就有直接进行...转载 2018-11-28 22:21:26 · 487 阅读 · 0 评论 -
java对象的初始化
public class B{ public static B t1 = new B(); public static B t2 = new B(); { System.out.println("构造块"); } static{ System.out.println("静态块"); } public stat...原创 2018-11-20 09:34:55 · 316 阅读 · 0 评论 -
线程的6种状态
以下是java源码 public enum State { /** * Thread state for a thread which has not yet started. */ NEW, /** * Thread state for a runnable thread. A ...原创 2018-11-18 08:54:44 · 359 阅读 · 0 评论 -
HashMap原理
HashMap中定义了一个Node数组table用来存储元素。 transient Node<K,V>[] table;如果调用HashMap的无参构造器创建HashMap对象,一开始,HashMap不会实例化table数组。只有第一次调用put(K key, V value)方法时,HashMap才会table创建一个初始容量为16的Node<K,V>[]...原创 2018-10-06 15:26:43 · 230 阅读 · 0 评论 -
优化Hibernate所鼓励的7大措施
1.尽量使用many-to-one,避免使用单项one-to-many2.灵活使用单向one-to-many3.不用一对一,使用多对一代替一对一4.配置对象缓存,不使用集合缓存5.一对多使用Bag 多对一使用Set6.继承使用显示多态 HQL:from object polymorphism="exlicit" 避免查处所有对象7.消除大表,使用二级缓存...原创 2018-10-06 09:37:57 · 212 阅读 · 0 评论 -
JVM堆内存
JVM堆内存分为2块:Permanent Space 和 Heap Space。Permanent 即 持久代(Permanent Generation),主要存放的是Java类定义信息,与垃圾收集器要收集的Java对象关系不大。Heap = { Old + NEW = {Eden, from, to} },Old 即年老代(Old Generation),New 即 年轻代(Young G...原创 2018-10-04 20:22:58 · 247 阅读 · 0 评论 -
Java和C++的区别
1. Java是解释型语言,所谓的解释型语言,就是源码会先经过一次编译,成为中间码,中间码再被解释器解释成机器码。对于Java而言,中间码就是字节码(.class),而解释器在JVM中内置了。2. C++是编译型语言,所谓编译型语言,就是源码一次编译,直接在编译的过程中链接了,形成了机器码。3. C++比Java执行速度快,但是Java可以利用JVM跨平台。4. Java是纯面向对象的...原创 2018-10-04 18:21:41 · 172 阅读 · 0 评论 -
JSP九大内置对象
内置对象名 类型request HttpServletRequestresponse HttpServletResponseconfig ServletConfigapplication ServletContextsession HttpSessionexception Throwa...原创 2018-10-04 17:56:29 · 202 阅读 · 0 评论 -
JVM怎样判断两个类是否相同
Java 虚拟机不仅要看类的全名是否相同,还要看加载此类的类加载器是否一样。只有两者都相同的情况,才认为两个类是相同的。即便是同样的字节代码,被不同的类加载器加载之后所得到的类,也是不同的。比如一个 Java 类 com.example.Sample,编译之后生成了字节代码文件 Sample.class。两个不同的类加载器 ClassLoaderA和 ClassLoaderB分别读取了这个 Sa...原创 2018-10-04 10:39:13 · 1841 阅读 · 1 评论 -
DAO(Data Access Object)数据访问对象
在开发时,我们会使用数据库和编程语言相结合的APP 存储数据 APP------------------->数据库 <------------------- 获取数据ORM:对象关系映射(Object relation mapping) 表的一条记录映射成类的一个对象类的一个对象映射成表的一条...原创 2018-09-14 19:34:48 · 470 阅读 · 0 评论 -
Http数据包的格式
Http请求数据包 请求行 + 请求头 + 数据体(1)请求行包含三个内容 method + request-URI + http-version。method 包含有 post , get, head,delete, put, connect, options, patch, propfind, propatch, mkcol, copy, move, lock, unloc...原创 2018-09-19 09:24:47 · 6883 阅读 · 1 评论 -
解决Servlet出现中文乱码
中文出现乱码的原因服务器端默认使用iso-8859-1解码 浏览器端常用的为utf-8进行编码发送请求时:方式1: 适合 get/post //服务端先编码再解码//例如:city = new String(city.getBytes("ISO-8859-1"), "UTF-8");address = new String(address.getB...原创 2018-09-19 09:09:05 · 299 阅读 · 0 评论 -
正则表达式(Regular Expression)
常用字符集 []:表示匹配括号内的一个字符 [abc]:表示匹配abc中的任意一个 字符 [a-z]:表示匹配a-z中的任意一个字符 [0-9]:表示匹配0-9中的任意一个字符 [a-zA-Z0-9]:表示匹配这些字符中的任意一个字符 [^a]:表示匹配除了a字符的任意一个字符 [a-z&&[^a]]:表示匹配a-z中除了a的任意一个字符...原创 2018-08-15 18:53:07 · 323 阅读 · 0 评论 -
基本运算符的运算规则( +,-,*,/,%,++,--)
运算符:两原一封: 两个原则: 1)、不同类型的数据做运算时,一定会先转换成较大范围类型后再运算。 2)、byte,short,char这些类型运算时,一定会先转成int类型再运算,结果int类型,两个float类型的值进行计算不会变成double。 封: byte、short、char、int、long有封闭式运算。 算术运算符:+,-,*,/,%,...原创 2018-07-19 08:56:04 · 13021 阅读 · 0 评论 -
JAVA基本数据类型
类型 范围 位数 字节数 byte -2^7~2^7-1 8 1 short -2^15~2^15-1 16 2 int -2^...原创 2018-07-19 08:40:10 · 173 阅读 · 0 评论 -
Java程序运行时数据区域
Java虚拟机在执行Java程序的过程中会把它所管理的内存划分为若千个不同的数据区域。这些区域都有各自的用途,以及创建和销毁的时间,有的区域随着虚拟机进程的启动而存在,有些区域则是依赖用户线程的启动和结束而建立和销毁。根据《Java虚拟机规范(第2版)》的规定,Java虚拟机所管理的内存将会包括以下几个运行时数据区域,如图所示。1. 程序计数器 程序计数器...原创 2018-07-24 08:23:32 · 234 阅读 · 0 评论 -
排序&查找算法--------JAVA代码实现
直接插入排序:在逐一取出元素时,该元素与它之前的所有元素找出插入位置,之后移动元素,使之插入。时间复杂度:平均:o(n^2);最好:o(n);最坏:o(n^2)空间复杂度:o(1)稳定性:稳定public void insertSort(int[] a) { if(a==null||a.length<2) return; for (...原创 2018-06-23 08:40:50 · 295 阅读 · 0 评论 -
栈和堆
堆(heap):1对象存在于堆里2堆里的变量(成员变量)默认赋初值(byte=0,short=0,int=0,long=0,float=0.0,double=0.0,boolean=false,char='\u000'),所以成员变量不需要手动初始化也可以使用。3堆内存的释放形式:java采用垃圾回收机制回收。栈(stack):1.每个线程包含一个栈区,栈中只保存基础数据类型...原创 2018-06-23 08:39:20 · 258 阅读 · 0 评论 -
静态内部类
RedCowForm.javaclass RedCowForm { static class RedCow {// 静态内部类是外嵌类中的一种静态数据类型 void speak() { System.out.println("我是红牛"); } }}public class BlackCowForm { ...原创 2018-03-25 18:17:12 · 570 阅读 · 0 评论 -
JAVA访问修饰符
权限 类内 同包 不同包子类 不同包非子类 private ✔ ✘ ✘ ✘ default ✔ ✔ ✘...原创 2018-07-18 08:40:25 · 187 阅读 · 0 评论 -
方法重载(overload)
在同一个类中,方法名相同,参数列表不同的方法。也是多态的表现形式之一。参数列表包括:1.参数个数2.参数类型3.参数顺序原创 2018-07-30 18:09:12 · 217 阅读 · 0 评论 -
构造方法(constructor)
1.构造方法是用来给成员变量初始化的。2.一个类中如果没有定义过构造方法,那么该类中会有一个默认的空参数构造方法。否则就没有。3.一般方法不能直接调用构造方法。4.构造方法如果前面加了void就变成了一般方法。5.构造方法中是有return语句的。6.当构造方法中调用本类其他构造方法时,可以用this完成。 this(实际参数);这种调用必须定义在构造方法的第一行。初始化动作...原创 2018-07-30 18:18:43 · 713 阅读 · 0 评论 -
抽象类&接口
1.一个接口可以被普通类实现(必须实现接口中的方法),也可以被一个抽象类(用abstract修饰的类)实现(可以不实现接口中的方法),还可以被另一个接口继承。2.抽象类中可以有抽象方法,也可以没有抽象方法,也可以有非抽象方法。但是含有抽象方法的类只能是抽象类或者接口。3抽象类不能被实例化,只能被继承,继承的类是非抽象类的话必须重写抽象方法。4.abstract方法,只允许声明,不允许...原创 2018-07-23 08:45:57 · 245 阅读 · 0 评论 -
final
(1)修饰类,此类不能被继承。(2)修饰成员变量,可以直接初始化,也可以构造方法初始化,其它地方不能再次赋值。如果是常量(final和static修饰的)必须在定义的同时初始化或者在静态代码块中赋值。(3)修饰局部变量,只能初始化一次。(4)修饰方法,不能被重写。但是在子类中可以使用(看该方法的访问修饰符)。...原创 2018-08-02 16:57:45 · 186 阅读 · 0 评论 -
重写(override)
1.子类不能重写父类的private修饰的方法。如果写了那么就是子类自己的。默认修饰的方法只能在本包中重写。2.子类重写的方法名和参数列表必须和子类一致。3.访问修饰符可以和父类一致,也可以提高访问权限,但绝不能降低访问权限。4.重写的方法返回值类型可以和父类返回值类型一致,也可以是父类返回值类型的子类。...原创 2018-08-02 16:05:14 · 222 阅读 · 0 评论