java基础知识
文章平均质量分 83
发呆程序员
好习惯要坚持下去
展开
-
Java并发编程系列
原文地址:https://mp.weixin.qq.com/mp/homepage?__biz=MzIxNTQ3NDMzMw==&hid=2&sn=8f06e890dc3abda4a4919995bd3773b4&scene=1&devicetype=iOS13.1.3&version=17000831&lang=zh_CN&nettype=...转载 2020-01-13 14:45:53 · 257 阅读 · 1 评论 -
Java多线程(一)
进程和线程概念详细理解:https://mp.weixin.qq.com/s?__biz=MzIxNTQ3NDMzMw==&mid=2247483721&idx=1&sn=fc5a1b4b3bcd589f7b68e99d6ed1c374&scene=19#wechat_redirect多线程作为Java中很重要的一个知识点,在此还是有必要总结一下的。一、进程...转载 2015-09-24 12:00:11 · 451 阅读 · 0 评论 -
java多线程(二)
四.Java多线程的阻塞状态与线程控制上文已经提到Java阻塞的几种具体类型。下面分别看下引起Java线程阻塞的主要方法。1.join()join —— 让一个线程等待另一个线程完成才继续执行。如A线程线程执行体中调用B线程的join()方法,则A线程被阻塞,知道B线程执行完为止,A才能得以继续执行。 1 public class ThreadTest { 2 3转载 2015-09-24 12:01:47 · 307 阅读 · 0 评论 -
java多线程(三)
本文主要接着前面多线程的两篇文章总结Java多线程中的线程安全问题。一.一个典型的Java线程安全例子 1 public class ThreadTest { 2 3 public static void main(String[] args) { 4 Account account = new Account("123456", 1000);转载 2015-09-24 12:02:53 · 313 阅读 · 0 评论 -
一个利用反射进行对象拷贝的例子(java反射一)
如下例程ReflectTester类进一步演示了Reflection API的基本使用方法。 ReflectTester类有一个copy(Object object)方法,这个方法能够创建一个和参数object同样类型的对象,然后把object对象中的所有属性拷贝到新建的对象中,并将它返回。 这个例子只能复制简单的类,假定类的每个属性都有public类型的getXXX()和setXXX转载 2015-09-24 17:49:39 · 484 阅读 · 0 评论 -
使用反射机制对类字段进行选择性校验(java反射二)
这是一个使用java反射机制对类字段进行校验的工具,在工厂类中定义map存储需要校验的类类型和该类中需要校验的字段,在校验类中使用反射获取相关类的字段并进行校验,多用于接口开发时对字段的校验。1、定义三个常用类用于测试package validation;//测试用的动物类public class Animal { private String animalName; pr原创 2016-03-11 16:44:57 · 1809 阅读 · 0 评论 -
Java并发编程:CountDownLatch、CyclicBarrier和Semaphore
一.CountDownLatch用法 CountDownLatch类位于java.util.concurrent包下,利用它可以实现类似计数器的功能。比如有一个任务A,它要等待其他4个任务执行完毕之后才能执行,此时就可以利用CountDownLatch来实现这种功能了。 CountDownLatch类只提供了一个构造器:1转载 2017-10-20 15:41:13 · 296 阅读 · 0 评论 -
java内存模型(一)
1. 概述 多任务和高并发是衡量一台计算机处理器的能力重要指标之一。一般衡量一个服务器性能的高低好坏,使用每秒事务处理数(Transactions Per Second,TPS)这个指标比较能说明问题,它代表着一秒内服务器平均能响应的请求数,而TPS值与程序的并发能力有着非常密切的关系。在讨论Java内存模型和线程之前,先简单介绍一下硬件的效率与一致性。2.硬件的效率与一致性转载 2016-05-31 17:44:06 · 426 阅读 · 0 评论 -
sleep和wait区别以及线程池简单实现示例
一、sleep和wait的主要区别: 1、这两个方法来自不同的类分别是Thread和Object 2、最主要是sleep方法没有释放锁,而 wait 方法释放了锁,使得其他线程可以使用同步控制块或者方法。 3、wait,notify和notifyAll只能在同步控制方法或者同步控制块里面使用,而sleep可以在任何地方使用(使用范围) 4、sleep必须捕获异常,而...原创 2016-03-07 11:49:19 · 4747 阅读 · 0 评论 -
java内存模型(二)
Java内存模型规范了Java虚拟机与计算机内存是如何协同工作的。Java虚拟机是一个完整的计算机的一个模型,因此这个模型自然也包含一个内存模型——又称为Java内存模型。如果你想设计表现良好的并发程序,理解Java内存模型是非常重要的。Java内存模型规定了如何和何时可以看到由其他线程修改过后的共享变量的值,以及在必须时如何同步的访问共享变量。原始的Java内存模型存在一些不足,转载 2016-05-11 16:10:38 · 601 阅读 · 0 评论 -
为什么说Java中只有值传递
本文转载自公众号 Hollis对于初学者来说,要想把这个问题回答正确,是比较难的。在第二天整理答案的时候,我发现我竟然无法通过简单的语言把这个事情描述的很容易理解,遗憾的是,我也没有在网上找到哪篇文章可以把这个事情讲解的通俗易懂。所以,就有了我写这篇文章的初衷。这篇文章中,我从什么是方法的实际参数和形式参数开始,给你讲解为什么说Java中只有值传递。辟谣时间关于这个问题,在Sta...转载 2019-03-07 11:39:35 · 230 阅读 · 0 评论 -
五分钟读懂UML类图
原文地址:https://www.cnblogs.com/shindo/p/5579191.html平时阅读一些远吗分析类文章或是设计应用架构时没少与UML类图打交道。实际上,UML类图中最常用到的元素五分钟就能掌握,下面赶紧来一起认识一下它吧:一、类的属性的表示方式在UML类图中,类使用包含类名、属性(field) 和方法(method) 且带有分割线的矩形来表示,比如下图表示一个E...转载 2019-02-22 17:47:30 · 283 阅读 · 0 评论 -
java泛型
一. 泛型概念的提出(为什么需要泛型)?首先,我们看下下面这段简短的代码: 1 public class GenericTest { 2 3 public static void main(String[] args) { 4 List list = new ArrayList(); 5 list.add("qqyumidi转载 2015-09-24 11:52:08 · 308 阅读 · 0 评论 -
重载和重写、接口和继承
java中重载与重写的区别 首先我们来讲讲:重载(Overloading) (1) 方法重载是让类以统一的方式处理不同类型数据的一种手段。多个同名函数同时存在,具有不同的参数个数/类型。重载Overloading是一个类中多态性的一种表现。 (2) Java的方法重载,就是在类中可以创建多个方法,它们具有相同的名字,但具有不同的参数和不同的定义。调用方原创 2015-09-23 16:00:21 · 2538 阅读 · 0 评论 -
深入理解java异常处理机制
1. 引子 try…catch…finally恐怕是大家再熟悉不过的语句了,而且感觉用起来也是很简单,逻辑上似乎也是很容易理解。不过,我亲自体验的“教训”告诉我,这个东西可不是想象中的那么简单、听话。不信?那你看看下面的代码,“猜猜”它执行后的结果会是什么?不要往后看答案、也不许执行代码看真正答案哦。如果你的答案是正确,那么这篇文章你就不用浪费时间看啦。public clas...转载 2015-11-25 17:13:46 · 383 阅读 · 0 评论 -
我是一个Java class
前言:本文主要想讲一下Java虚拟机的故事, 可能有点偏门,不妥之处欢迎留言交流。第一回 陌生警察我出生在C盘下面一个很深层次的目录下, 也不知道是谁把我放到这里的。 我一直在睡觉,外边的日出日落,风雨雷电和我一点关系都没有。直到有一天,有个家伙咣咣咣砸我房门把我叫醒。 这个家伙穿着像警察的制服, 左手拿着一个对讲机, 右手递过来他的工作证: “你好转载 2016-11-09 17:07:45 · 401 阅读 · 0 评论 -
我是一个线程
我是一个线程,我一出生就被编了个号: 0x3704,然后被领到一个昏暗的屋子里, 这里我发现了很多和我一模一样的同伴。 我身边的同伴0x6900待的时间比较长, 他带着沧桑的口气对我说: “我们线程的宿命就是处理包裹。把包裹处理完以后还得马上回到这里,否则可能永远回不来了。” 我一脸懵懂,包裹,什么包裹? “不要着急,马上你就会明白了, 我们这里是不养闲人的转载 2016-11-09 16:58:39 · 329 阅读 · 0 评论 -
java基本名词
一、&和&&的区别。&和&&都可以用作逻辑与的运算符,表示逻辑与(and),当运算符两边的表达式的结果都为true时,整个运算结果才为true,否则,只要有一方为false,则结果为false。&&还具有短路的功能,即如果第一个表达式为false,则不再计算第二个表达式,例如,对于if(str != null && !str.equals(“”))表达式,当str为null时,后面的表原创 2015-09-23 12:33:27 · 455 阅读 · 0 评论 -
重写equals方法和hashcode方法
没有重写equals示例代码[java] view plaincopy//2. 验证唯一性,存入自定义元素 class Person{ private String name; private int age; public static void sop(Object o){转载 2015-09-23 11:36:16 · 641 阅读 · 0 评论 -
java静态方法和实例方法以及父子类初始化加载顺序
Java系列之:看似简单的问题 静态方法和实例化方法的区别Java程序启动class文件被读取时类被加载,如果有static方法,此时会分配内存,非static方法实例化类时才在内存中分配控件存储,引用存储在堆栈中,实体存储在堆中最大的区别在于内存。静态方法在程序开始时生成内存,实例方法在程序运行中生成内存,所以静态方法可以直接调用,实例方法要先成生实例,通过实例调用方法,静态速度原创 2015-09-23 12:36:15 · 20869 阅读 · 7 评论 -
java异常的栈轨迹
throw和throws的区别:1、throw代表动作,表示抛出一个异常的动作;throws代表一种状态,代表方法可能有异常抛出2、throw用在方法实现中,而throws用在方法声明中3、throw只能用于抛出一种异常,而throws可以抛出多个异常 Java异常的栈轨迹(Stack Trace) 捕获到异常时,往往需要进行一些处理。比较简单直接的方式就是打印异常原创 2015-09-23 14:38:33 · 1030 阅读 · 0 评论 -
java中的序列化
java 中的序列化?1、序列化是干什么的?简单说就是为了保存在内存中的各种对象的状态,并且可以把保存的对象状态再读出来。虽然你可以用你自己的各种各样的方法来保存Object States,但是Java给你提供一种应该比你自己好的保存对象状态的机制,那就是序列化。2、什么情况下需要序列化 a)当你想把的内存中的对象保存到一个文件中或者数据库中时候;b)当你想用套原创 2015-09-23 15:20:28 · 412 阅读 · 0 评论 -
Java正则表达式入门
Java正则表达式入门^ 和 $他们是分别用来匹配字符串的开始和结束,以下分别举例说明: "^The": 开头一定要有"The"字符串; "of despair$": 结尾一定要有"of despair"的字符串; 那么, "^abc$": 就是要求以abc开头和以abc结尾的字符串,实际上是只有abc匹配。转载 2015-09-23 15:56:47 · 362 阅读 · 0 评论