![](https://img-blog.csdnimg.cn/20201014180756926.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
java
文章平均质量分 91
hugh Lee
手下见真章
展开
-
深入了解父类引用指向子类
父类应用指向子类对象指的是: 父类Animal,子类 Cat,Dog。其中Animal可以是接口或类,Cat和Dog是继承或实现Animal的子类。 Animal animal= new Cat(); 声明的为父类,实际指向的是子类对象。我们先从内存角度理解。 假设Aninal父类,它里面的变量需要占用1M,它的子类Dog和Cat,需要占用0.5M内存。通过代码看内存分配:Animal an转载 2017-03-03 21:55:09 · 462 阅读 · 1 评论 -
四个抽象层、三次握手、Socket
TCP/IP要想理解socket首先得熟悉一下TCP/IP协议族, TCP/IP(Transmission Control Protocol/Internet Protocol)即传输控制协议/网间协议,定义了主机如何连入因特网及数据如何再它们之间传输的标准,从字面意思来看TCP/IP是TCP和IP协议的合称,但实际上TCP/IP协议是指因特网整个TCP/IP协议族。不同于ISO模型的七个分层,TC转载 2017-03-25 11:08:45 · 1860 阅读 · 1 评论 -
CPU核心数目 与 多线程
CPU核数跟多线程的关系一直以来有这样的疑惑,单核CPU适合多线程吗?是不是几个核的CPU开几个线程是最合适的?今天就这一问题查了一些资料,现整理如下:要说多线程就离不开进程,进程和线程的区别在这里就不详细说了,只将关键的几点:a)进程之间是相互独立的,不共享内存和数据,线程之间的内存和数据是公用的,每个线程只有自己的一组CPU指令、寄存器和堆栈,对于线程来说只有CPU里的东西是自己独享的,程序中原创 2017-03-16 22:05:23 · 17566 阅读 · 1 评论 -
并发和并行的区别
并发和并行从宏观上来讲都是同时处理多路请求的概念。但并发和并行又有区别,并行 是指两个或者多个事件在 同一时刻 发生;而并发 是指两个或多个事件在 同一时间间隔 内发生。当有多个线程在操作时,如果系统只有一个CPU,则它根本不可能真正同时进行一个以上的线程,它只能把CPU运行时间划分成若干个时间段,再将时间段分配给各个线程执行,在一个时间段的线程代码运行时,其它线程处于挂起状态.这种方式我们称之为并转载 2017-03-17 14:15:22 · 619 阅读 · 0 评论 -
java 注解的几大作用及使用方法详解
Java 注解,从名字上看是注释,解释。但功能却不仅仅是注释那么简单。注解(Annotation) 为我们在代码中添加信息提供了一种形式化的方法,是我们可以在稍后某个时刻方便地使用这些数据(通过 解析注解 来使用这些数据),常见的作用有以下几种:生成文档。 这是最常见的,也是java 最早提供的注解。常用的有@see @param @return 等跟踪代码依赖性,实现替代配置文件功能。转载 2017-04-28 17:09:18 · 355 阅读 · 0 评论 -
理解Java对象序列化
什么是Java对象序列化Java平台允许我们在内存中创建可复用的Java对象,但一般情况下,只有当JVM处于运行时,这些对象才可能存在,即,这些对象的生命周期不会比JVM的生命周期更长。但在现实应用中,就可能要求在JVM停止运行之后能够保存(持久化)指定的对象,并在将来重新读取被保存的对象。Java对象序列化就能够帮助我们实现该功能。使用Java对象序列化,在保存对象时,会把其状态保存为一组字节转载 2017-05-03 19:09:26 · 378 阅读 · 0 评论 -
库(lib)与jar包有什么区别啊?
解释1: library是类库,就是一堆.jar文件的集合 。一般情况下都是若干个.class文件能实现一组功能,这时候便可以把这些.class文件打包成.jar文件。比如说当需要使用集合类的时候,咱们需要import java.uitl.*; 对应的就是一个jar包(.jar文件)它里面就是一堆.class文件。解释2: library是一个库的集合,library可以包含多个jar文件,ja转载 2017-05-03 21:43:48 · 4271 阅读 · 0 评论 -
数据源 和数据库连接池
数据源(数据库连接池)池的概念池(Pool)技术在一定程度上可以明显优化服务器应用程序的性能,提高程序执行效率和降低系统资源开销。这里所说的池是一种广义上的池,比如数据库连接池、线程池、内存池、对象池等。其中,对象池可以看成保存对象的容器,在进程初始化时创建一定数量的对象。需要时直接从池中取出一个空闲对象,用完后并不直接释放掉对象,而是再放到对象池中以方便下一次对象请求可以直接复用。其他几种池的设计原创 2017-05-04 15:43:21 · 1407 阅读 · 0 评论 -
eclipse安装插件 windowbuilder --- 可视化swing设计界面
今天想开发一款swing组件的Java界面小程序,就打算想搭建一个可视化的、可拖拽的简单编程环境。在网上搜了一下,怎么样进行搭建开发环境,最后找到了windowbuilder 这个官方的开发插件,可以像vs一样实现可视化的拖拽界面,快速设计界面,方便了开发。步骤:1、jdk1.8 eclipseluna 已经安装好2、下载winbuilder网址:http://www.eclipse.转载 2017-05-04 20:38:17 · 5794 阅读 · 0 评论 -
java中newInstance()和new()
在Java开发特别是数据库开发中,经常会用到Class.forName( )这个方法。通过查询Java Documentation我们会发现使用Class.forName( )静态方法的目的是为了动态加载类。在加载完成后,一般还要调用Class下的newInstance( )静态方法来实例化对象以便操作。因此,单单使用Class.forName( )是动态加载类是没有用的,其最终目的是为了实例化对象转载 2017-04-22 21:38:18 · 1403 阅读 · 0 评论 -
基于JavaMail的Java邮件发送:简单邮件发送
电子邮件的应用非常广泛,例如在某网站注册了一个账户,自动发送一封欢迎邮件,通过邮件找回密码,自动批量发送活动信息等。但这些应用不可能和我们自己平时发邮件一样,先打开浏览器,登录邮箱,创建邮件再发送。本文将简单介绍如果通过 Java 代码来创建电子邮件,并连接邮件服务器发送邮件。1. 电子邮件协议电子邮件的在网络中传输和网页一样需要遵从特定的协议,常用的电子邮件协议包括 SMTP,POP3,IMAP。转载 2017-05-05 16:26:55 · 352 阅读 · 0 评论 -
jdbc连接mysql5与连接mysql6
1,JDBC连接Mysql5:driverClassName=com.MySQL.jdbc.Driverurl=jdbc:mysql://localhost:3306/test?username=rootpassword=2,JDBC连接Mysql6:driverClassName=com.mysql.cj.jdbc.Driverurl=jdbc:mysql://localhost:33原创 2017-05-17 21:46:49 · 2072 阅读 · 0 评论 -
java--cookie&session
cookie& session -java转载 2017-05-28 20:46:59 · 681 阅读 · 0 评论 -
资源文件路径 && classpath
路径问题和classpath 的无脑整合转载 2017-05-10 09:41:27 · 4254 阅读 · 1 评论 -
关于java 客户端链接不上redis的解决方案
redis java连接原创 2017-06-03 21:40:47 · 5856 阅读 · 1 评论 -
java网络通信编程
网络编程就是在两个或两个以上的设备(例如计算机)之间传输数据。程序员所作的事情就是把数据发送到指定的位置,或者接收到指定的数据,这个就是狭义的网络编程范畴。在发送和接收数据时,大部分的程序设计语言都设计了专门的API实现这些功能,程序员只需要调用即可。所以,基础的网络编程可以和打电话一样简单一:首先看一下网络通讯的两种方式1.TCP(传输控制协议)方式TCP方式就类似于拨打电话,使用该种方式进行网络转载 2017-03-25 10:42:19 · 372 阅读 · 0 评论 -
Java迭代器(iterator详解以及和for循环的区别)
摘自http://www.cnblogs.com/redcoatjk/articles/4863340.html迭代器是一种模式,它可以使得对于序列类型的数据结构的遍历行为与被遍历的对象分离,即我们无需关心该序列的底层结构是什么样子的。只要拿到这个对象,使用迭代器就可以遍历这个对象的内部.IteratorJava提供一个专门的迭代器«interface»Iterator,我们可以对某个序列实现该in转载 2017-03-13 21:50:51 · 1503 阅读 · 0 评论 -
Java泛型
一. 泛型概念的提出(为什么需要泛型)?首先,我们看下下面这段简短的代码: 1 public class GenericTest { 2 3 public static void main(String[] args) { 4 List list = new ArrayList(); 5 list.add("qqyumidi"); 6转载 2017-03-04 12:05:54 · 156 阅读 · 0 评论 -
Java线程唤醒与阻塞
阻塞指的是暂停一个线程的执行以等待某个条件发生(如某资源就绪),学过操作系统的同学对它一定已经很熟悉了。Java 提供了大量方法来支持阻塞,下面让我们逐一分析。 1. sleep() 方法:sleep() 允许 指定以毫秒为单位的一段时间作为参数,它使得线程在指定的时间 内进入阻塞状态,不能得到CPU 时间,指定的时间一过,线程重新进入可执行状态。 典型地,sleep() 被用在等待某个资转载 2017-03-17 21:17:00 · 1075 阅读 · 0 评论 -
Runnable和Thread基础
线程的创建方式有两种:implements Runnable和extends Thread。 继承Thread类:package com.test.threadtest;import android.os.Bundle;import android.app.Activity;import android.view.Menu;public class MainActivity extends Ac转载 2017-03-17 21:49:43 · 259 阅读 · 0 评论 -
java自动装箱、拆箱
什么是自动装箱拆箱基本数据类型的自动装箱(autoboxing)、拆箱(unboxing)是自J2SE 5.0开始提供的功能。 一般我们要创建一个类的对象实例的时候,我们会这样:Class a = new Class(parameter);当我们创建一个Integer对象时,却可以这样:Integer i = 100; (注意:不是 int i = 100; )实际上,执行上面那句代码的时候,系统为转载 2017-03-04 17:00:37 · 271 阅读 · 0 评论 -
java基础目录
本来就学的不咋地,这么久没碰过,自然就,,,,,忘了以下回顾是 对本人的 忘记之处 的总结,对于特别easy的地方请大佬轻喷。首先是输入输出: 输入:使用Scanner工具类来获取用户的输入信息 Scanner工具类位于java.util包中,使用时需要导入此包(里面的Scanner类) 步骤: 1、导入java.util.Scanner类 2、创建Scanner对象 3、接收并保存输入原创 2017-02-25 21:43:07 · 1975 阅读 · 1 评论 -
java集合
在编写java程序中,我们最常用的除了八种基本数据类型,String对象外还有一个集合类,在我们的的程序中到处充斥着集合类的身影!java中集合大家族的成员实在是太丰富了,有常用的ArrayList、HashMap、HashSet,也有不常用的Stack、Queue,有线程安全的Vector、HashTable,也有线程不安全的LinkedList、TreeMap等等!上面的图展示了整个集合大家族的转载 2017-03-04 20:19:19 · 271 阅读 · 0 评论 -
阿里面试回来,想和Java程序员谈一谈
引言其实本来真的没打算写这篇文章,主要是LZ得记忆力不是很好,不像一些记忆力强的人,面试完以后,几乎能把自己和面试官的对话都给记下来。LZ自己当初面试完以后,除了记住一些聊过的知识点以外,具体的内容基本上忘得一干二净,所以写这篇文章其实是很有难度的。但是,最近问LZ的人实在是太多了,为了避免重复回答,给自己省点力气,干脆就在这里统一回复了。其实之前LZ写过一篇文章,但是那篇文章更多的是在讨论“面试前转载 2017-03-18 11:36:34 · 421 阅读 · 0 评论 -
Java 对象锁和类锁 死锁(多线程synchronized关键字)
本文主要是将synchronized关键字用法作为例子来去解释Java中的对象锁 和 类锁。一、synchronized关键字synchronized关键字有如下两种用法:1、 在需要同步的方法的方法签名中加入synchronized关键字。synchronized public void getValue() { System.out.println("getValue method th原创 2017-03-18 17:04:48 · 4279 阅读 · 0 评论 -
类锁 synchronized对象锁 和 Lock对象锁
在并发环境下,解决共享资源冲突问题时,可以考虑使用锁机制。1. 对象锁所有对象都自动含有单一的锁。JVM负责跟踪对象被加锁的次数。如果一个对象被解锁,其计数变为0。在任务(线程)第一次给对象加锁的时候,计数变为1。每当这个相同的任务(线程)在此对象上获得锁时,计数会递增。只有首先获得锁的任务(线程)才能继续获取该对象上的多个锁。 每当任务离开一个synchronized方法,计数递减,当转载 2017-03-18 18:45:49 · 7971 阅读 · 0 评论 -
Java线程:基本概念、可见性与同步
开发高性能并发应用不是一件容易的事情。这类应用的例子包括高性能Web服务器、游戏服务器和搜索引擎爬虫等。这样的应用可能需要同时处理成千上万个请求。对于这样的应用,一般采用多线程或事件驱动的架构。对于Java来说,在语言内部提供了线程的支持。但是Java的多线程应用开发会遇到很多问题。首先是很难编写正确,其次是很难测试是否正确,最后是出现问题时很难调试。一个多线程应用可能运行了好几天都没问题,然后突然转载 2017-03-17 22:00:30 · 220 阅读 · 0 评论 -
对java 内存可见性的理解
同步包括两方面的含义: 独占性和可见性。很多人仅仅理解了独占性,而忽略了可见性。根据Java Language Specification中的说明, jvm系统中存在一个主内存(Main Memory或Java Heap Memory),Java中所有变量都储存在主存中,对于所有线程都是共享的。每条线程都有自己的工作内存(Working Memory),工作内存中保存的是主存中某些变量的拷贝,线程对转载 2017-03-19 11:19:19 · 339 阅读 · 0 评论 -
java反射
java中创建对象时其实不是通过类直接创建的,如果你想要使用Test类,在java中JVM首先加载Test.java文件的字节码文件Test.class(也就是编译后的文件),当JVM(java虚拟机)加载字节码文件后,自动为该类创建自己的class对象,在通过class对象创建你以后要创建的对象例如:Test t1=new Test(); Test t2=new Test(); 我们都知道java原创 2017-03-19 16:55:41 · 355 阅读 · 0 评论 -
java:String不是基本类型,不是数组,是类,而数组也是类
本文可以用一句话总结:String不是基本类型,不是数组,是类,而数组也是类。由于脚本语言使用较多,我在java中也写过这样的代码:String str = "hi";System.out.println(str[1]); // 错误的可惜是错的。str是java.lang.String类的一个对象,无法使用[]运算符。真正可用的代码是这样的:String str = "hi";System.o转载 2017-03-11 14:17:16 · 1889 阅读 · 0 评论 -
Java:String、StringBuffer和StringBuilder的区别
StringString:字符串常量,字符串长度不可变。Java中String是immutable(不可变)的。String类的包含如下定义:/** The value is used for character storage. */ private final char value[]; /** The offset is the first index of the storage th转载 2017-03-11 15:35:53 · 169 阅读 · 0 评论 -
【Java】数组不能通过toString方法转为字符串
java里,所有的类,不管是java库里面的类,或者是你自己创建的类,全部是从object这个类继承的。object里有一个方法就是toString(),那么所有的类创建的时候,都有一个toString的方法。 这个方法是干什么的呢? 首先我们得了解,java输出用的函数print();是不接受对象直接输出的,只接受字符串或者数字之类的输出。那么你想把一个创建好的对象拿来输出怎么办?例转载 2018-01-11 17:41:47 · 1223 阅读 · 0 评论