java 基础
对的man
要想成为朋友,首先自己得够朋友!
展开
-
java中多个用户调用同一个方法程序的处理过程以及并发问题
java中多个用户在访问同一段代码的时候,后台会为每一个请求分配一个单独的线程来处理,线程之间是相互独立的,互不干扰,当然也可以相互通信。并发问题只有在多个线程之间可能修改同一资源的时候才会出现,解决并发问题可以通过加锁来解决。好比说多个用户同时登陆一个系统时,都需要用到登陆的相关代码,是不会发生什么冲突的。好比说对一个财务系统,两个人同时对总钱数进行操作,一个加10块一个减100...原创 2019-12-02 16:38:32 · 9120 阅读 · 5 评论 -
JDK、JRE、JVM三者间的关系
JDK、JRE、JVM三者间的关系 JDK(Java Development Kit)是针对Java开发员的产品,是整个Java的核心,包括了Java运行环境JRE、Java工具和Java基础类库。Java Runtime Environment(JRE)是运行JAVA程序所必须的环境的集合,包含JVM标准实现及Java核心类库。JVM是Java Virtual Machine(Java转载 2015-11-19 10:58:31 · 337 阅读 · 0 评论 -
java 乱码原因分析
转载:http://www.ibm.com/developerworks/cn/java/j-lo-chinesecoding/几种常见的编码格式为什么要编码不知道大家有没有想过一个问题,那就是为什么要编码?我们能不能不编码?要回答这个问题必须要回到计算机是如何表示我们人类能够理解的符号的,这些符号也就是我们人类使用的语言。由于人类的语言有太多,因而表示这些语言的符号太多,转载 2015-10-30 15:50:23 · 139 阅读 · 0 评论 -
java线程同步(生产者消费者应用-模拟叫号系统)
执行结果:顾客取得:票据0票据0:顾客请到窗口11顾客取得:票据1票据1:顾客请到窗口10顾客取得:票据2票据2:顾客请到窗口11顾客取得:票据3票据3:顾客请到窗口10顾客取得:票据4票据4:顾客请到窗口11顾客取得:票据5票据5:顾客请到窗口10顾客取得:票据6票据6:顾客请到窗口11顾客取得:票据7票据7:顾客请到窗口10原创 2015-10-15 16:49:13 · 1053 阅读 · 0 评论 -
java synchronized关键字详解
synchronized关键字修饰方法或代码块,为了保证多个线程访问同一对象中同步方法时任一时刻都只有一个线程访问。当线程访问同步方法时会给当前对象加锁直至执行结束,其他线程此时为阻塞状态。在此期间非同步方法可以被任一线程自由访问。Java语言的关键字,当它用来修饰一个方法或者一个代码块的时候,能够保证在同一时刻最多只有一个线程执行该段代码。 一、当两个并发线程访问同一转载 2015-10-14 17:32:29 · 290 阅读 · 0 评论 -
java 接口及抽象类
原文:http://blog.csdn.net/sunboard/article/details/3831823接口及抽象方法的子类若非抽象类必须实现其全部抽象方法。1.概述一个软件设计的好坏,我想很大程度上取决于它的整体架构,而这个整体架构其实就是你对整个宏观商业业务的抽象框架,当代表业务逻辑的高层抽象层结构 合理时,你底层的具体实现需要考虑的就仅仅是一些算法和一些具体的业务转载 2015-09-24 10:29:23 · 236 阅读 · 0 评论 -
java 序列化
Java 序列化Serializable详解(附详细例子)1、什么是序列化和反序列化Serialization(序列化)是一种将对象以一连串的字节描述的过程;反序列化deserialization是一种将这些字节重建成一个对象的过程。2、什么情况下需要序列化 a)当你想把的内存中的对象保存到一个文件中或者数据库中时候;b)当你想用套接字在网络上传送对象的时候转载 2015-10-27 17:14:41 · 270 阅读 · 0 评论 -
提高java编程性能的好习惯
通过使用一些辅助性工具来找到程序中的瓶颈,然后就可以对瓶颈部分的代码进行优化。一般有两种方案:即优化代码或更改设计方法。我们一般会选择后者,因为不去调用以下代码要比调用一些优化的代码更能提高程序的性能。而一个设计良好的程序能够精简代码,从而提高性能。下面将提供一些在JAVA程序的设计和编码中,为了能够提高JAVA程序的性能,而经常采用的一些方法和技巧。一、对象的生成和大小的调整。转载 2015-10-27 18:17:01 · 330 阅读 · 0 评论 -
String StringBuffer StringBuilder
相信大家看到过很多比较String和StringBuffer区别的文章,也明白这两者的区别,然而自从Java 5.0发布以后,我们的比较列表上将多出一个对象了,这就是StringBuilder类。String类是不可变类,任何对String的改变都会引发新的String对象的生成;而StringBuffer则是可变类,任何对它所指代的字符串的改变都不会产生新的对象,可变和不可变类这一对对象已经齐全转载 2015-10-27 10:10:01 · 69 阅读 · 0 评论 -
java 编写常见坏习惯
原文链接:http://macrochen.iteye.com/blog/1393502每天在写Java程序,其实里面有一些细节大家可能没怎么注意,这不,有人总结了一个我们编程中常见的问题。虽然一般没有什么大问题,但是最好别这样做。另外这里提到的很多问题其实可以通过Findbugs( http://findbugs.sourceforge.net/ )来帮我转载 2015-10-26 17:21:17 · 332 阅读 · 0 评论 -
java 不同数据库连接代码
转自:http://developer.51cto.com/art/201202/314928.htmJava数据库连接接口(JDBC)是Java里定义的一套用于数据库连接和操作的API的集合。有不同的数据库厂商提供这套接口的实现类,对于Java程序员来说,程序员不需要关心数据库的底层的实现,统一的调用JDBC里面的抽象出来的API来完成数据库的访问功能,在Data access的功能和接转载 2015-10-26 16:40:32 · 175 阅读 · 0 评论 -
java 堆、栈与数据类型
1. 栈(stack)与堆(heap)都是Java用来在Ram中存放数据的地方。与C++不同,Java自动管理栈和堆,程序员不能直接地设置栈或堆。2. 栈的优势是,存取速度比堆要快,仅次于直接位于CPU中的寄存器。但缺点是,存在栈中的数据大小与生存期必须是确定的,缺乏灵活性。另外,栈数据在多个线程或者多个栈之间是不可以共享的,但是在栈内部多个值相等的变量是可以指向一个地址的,详见第3点。堆原创 2015-09-23 16:01:53 · 273 阅读 · 0 评论 -
java 集合类
数组是很常用的一种的数据结构,我们用它可以满足很多的功能,但是,有时我们会遇到如下这样的问题:1、我们需要该容器的长度是不确定的。2、我们需要它能自动排序。3、我们需要存储以键值对方式存在的数据。如果遇到上述的情况,数组是很难满足需求的,接下来本章将介绍另一种与数组类似的数据结构——集合类,集合类在Java中有很重要的意义,保存临时数据,管理对象,泛型,Web框架等转载 2015-09-22 15:43:13 · 206 阅读 · 0 评论 -
java中static 和 final
一、final1.final变量: 当你在类中定义变量时,在其前面加上final关键字,那便是说,这个变量一旦被初始化便不可改变,这里不可改变的意思对基本类型来说是其值不可变,而对于对象变量来说其引用不可再变。其初始化可以在两个地方,一是其定义处,也就是说在final变量定义时直接给其赋值,二是在构造函数中。这两个地方只能选其一,要么在定义时给值,要么在构造函数中给值,不转载 2015-09-18 11:32:51 · 249 阅读 · 0 评论 -
java Abstract(抽象)详解
Abstract(抽象)可以修饰类、方法 如果将一个类设置为abstract,则此类必须被继承使用。此类不可生成对象,必须被继承使用。 Abstract可以将子类的共性最大限度的抽取出来,放在父类中,以提高程序的简洁性。 Abstract虽然不能生成对象,但是可以声明,作为编译时类型,但不能作为运行时类型。 Final和abstract永远不会同时出现。 当abstrac转载 2015-09-18 11:14:26 · 449 阅读 · 0 评论 -
Java并发编程:线程间协作的两种方式:wait、notify、notifyAll和Condition
在前面我们将了很多关于同步的问题,然而在现实中,需要线程之间的协作。比如说最经典的生产者-消费者模型:当队列满时,生产者需要等待队列有空间才能继续往里面放入商品,而在等待的期间内,生产者必须释放对临界资源(即队列)的占用权。因为生产者如果不释放对临界资源的占用权,那么消费者就无法消费队列中的商品,就不会让队列有空间,那么生产者就会一直无限等待下去。因此,一般情况下,当队列满时,会让生产者交出对临界转载 2015-09-25 11:17:36 · 209 阅读 · 0 评论