![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
java基础
记录点滴人生
这个作者很懒,什么都没留下…
展开
-
java打印菱形
最近在网上看到了打印菱形的程序,觉得通用性太差,就自己写了一个,变量名起的都不太好,凑合看~public static void test(int bian){for(int i=1;iint j=2*i-1;int space=bian-i;for(int k=0;kSystem.out.print(" ");//打印空格}for(int k=原创 2013-12-04 22:39:45 · 807 阅读 · 0 评论 -
Java编码需注意细节
今天一个前辈教育我,告诉我了一些很多应该注意而对于我这种新人不太注意的地方,我觉得说的很有道理,在此分享一下:1、在for循环中,在判断条件中别用 i 2、在循环中,如果得到了想要的结果,应立即使用break跳出循环,这样减少了循环次数。3、如果if语句中的条件相同时,应尽量使用switch,这样既减少了判断的次数,又增加了程序的可读性。原创 2013-12-17 11:22:04 · 950 阅读 · 0 评论 -
正确理解ThreadLocal
首先,ThreadLocal 不是用来解决共享对象的多线程访问问题的,一般情况下,通过ThreadLocal.set() 到线程中的对象是该线程自己使用的对象,其他线程是不需要访问的,也访问不到的。各个线程中访问的是不同的对象。 另外,说ThreadLocal使得各线程能够保持各自独立的一个对象,并不是通过ThreadLocal.set()来实现的,而是通过每个线程中的new 对象 的操作转载 2015-05-05 17:57:08 · 504 阅读 · 0 评论 -
Google Java Style 中文版
Google Java Style 中文版 基于官方文档2013.12.19最后一次改动。翻译人:Weir Zhang (zh.weir)旁白:水平有限,很多地方只是意译。不准确的地方,大家以原版文档为准。原版地址: http://google-styleguide.googlecode.com/svn/trunk/javaguide.html转载 2015-10-13 10:05:19 · 537 阅读 · 0 评论 -
Builder模式在Java中的应用
在设计模式中对Builder模式的定义是用于构建复杂对象的一种模式,所构建的对象往往需要多步初始化或赋值才能完成。那么,在实际的开发过程中,我们哪些地方适合用到Builder模式呢?其中使用Builder模式来替代多参数构造函数是一个比较好的实践法则。我们常常会面临编写一个这样的实现类(假设类名叫DoDoContact),这个类拥有多个构造函数,DoDoContact(String转载 2015-12-30 13:56:22 · 804 阅读 · 0 评论 -
java.util.concurrent并发包诸类概览
也可以任意时刻调用方法动态增减;每一个party都有unarrived和arrived两种状态,可以通过调用arriveXXX方法使得它从unarrived变成arrived;每一个线程到达barrier后会等待(调用arriveAndAwaitAdvance方法),一旦所有party都到达(即arrived的party数量等于registered的数量),就会触发advance操作,同时转载 2016-08-08 18:02:33 · 650 阅读 · 0 评论 -
关于volatile的一些问题
Q:什么是可见性? A:可见性是一个线程改变值得时候 如果不用volatile对其他线程是不可见的Q:volatile可以保证线程安全么? A:不安全,volatile只能保证可见性,不能保证原子性Q:volatile线程不安全的原因? A:在线程操作一个volatile修饰的参数时每次读取都会把这个数据从主空间复制到工作空间,假如两个线程完全同时操作了这个对象,这时候他们两个会同时复制这个对原创 2016-11-03 10:08:47 · 721 阅读 · 0 评论 -
JAVA CAS原理深度分析
看了一堆文章,终于把Java CAS的原理深入分析清楚了。感谢GOOGLE强大的搜索,借此挖苦下百度,依靠百度什么都学习不到! 参考文档:http://www.blogjava.net/xylz/archive/2010/07/04/325206.htmlhttp://blog.hesey.net/2011/09/resolve-aba-by-atomicstampedrefe转载 2016-11-12 17:08:32 · 311 阅读 · 0 评论 -
StringUtils的各项用法
StringUtils 源码,使用的是commons-lang3-3.1包。下载地址 http://commons.apache.org/lang/download_lang.cgi以下是StringUtils的各项用法1.空字符串检查使用函数: StringUtils.isBlank(testString)函数介绍: 当testString为空,长度为转载 2014-08-16 18:39:11 · 542 阅读 · 0 评论 -
JAVA System.getProperty() System.getenv() 示例
最近的程序中优先使用系统环境设置的变量,其次使用默认的路径。查找了java中如何获取环境变量,发现System. getenv()时最实用的方法, 其实这个也可以用材程序调式设置,一起其他类似的环境中。 public class TestSystemproperty {public static void main(String[] args){ System.out转载 2014-08-28 17:18:49 · 759 阅读 · 0 评论 -
ConcurrentHashMap之实现原理
ConcurrentHashMap是Java 5中支持高并发、高吞吐量的线程安全HashMap实现。在这之前我对ConcurrentHashMap只有一些肤浅的理解,仅知道它采用了多个锁,大概也足够了。但是在经过一次惨痛的面试经历之后,我觉得必须深入研究它的实现。面试中被问到读是否要加锁,因为读写会发生冲突,我说必须要加锁,我和面试官也因此发生了冲突,结果可想而知。还是闲话少说,通过仔细阅读源代码转载 2014-04-03 10:26:03 · 887 阅读 · 0 评论 -
总结Java解惑
1.java判断是否为奇数用:public static boolean isOdd(int i){return (i & 1) != 0;}因为a摩b被定义为:a % b == a-(a / b) * b ,当a为负数时,a摩b结果为-1。2.精确小数计算用int、long或者BigDecimal,当使用BigDecimal时,一定要用BigDecimal(String)原创 2013-12-31 17:35:42 · 837 阅读 · 0 评论 -
序列化和反序列化工具类
package util;import java.io.ByteArrayInputStream;import java.io.ByteArrayOutputStream;import java.io.ObjectInputStream;import java.io.ObjectOutputStream;public class SerializeUtil {原创 2013-12-19 14:56:18 · 1463 阅读 · 0 评论 -
java回调函数
1.回调接口:/** * 回调接口 * @author KOOK * */public interface CallBack { /** * 执行回调方法 * @param objects 将处理后的结果作为参数返回给回调方法 */ public void execute(Object... objects );}2. 消息的发送者:/** * 简单本地转载 2013-12-23 10:22:58 · 912 阅读 · 0 评论 -
synchronized块
最近阅读网上关于synchronized块的资料,说法也不尽相同,经过自己代码测试,以下仅为个人理解,如有错误,麻烦指出问题所在,谢谢~synchronized块参数表示的是以什么为锁,参数可以为固定字符串,this,数组对象等等,但不能为int等8种基本数据类型,只有锁相同,才能导致等待。public class SynchronizedKuai{ private static i原创 2013-12-24 10:05:57 · 871 阅读 · 0 评论 -
将一个Arraylist去重
首先说明一下ArrayList和HashSet的区别:ArrayList是List(列表),数据是有序的,可以有重复元素。HashSet是Set(集合),数据没有顺序,没有重复元素,元素搜索速度快。之后我们利用ArrayList->HashSet->ArrayList后即可实现对List的去重工作,实现代码如下:import java.util.ArrayL原创 2014-02-12 09:56:15 · 1659 阅读 · 0 评论 -
JAVA 对象引用,以及对象赋值
写了一年多的java,今天突然对自己曾经写过的一段代码迷茫了,不知道自己所写的对象是不是会随着另一个对象的改变而赋值,想到是最近又抛弃了基础知识的问题,所以拿出来重新学习一下。以下是看到的一篇讲述很清楚的文章。Java对象及其引用关于对象与引用之间的一些基本概念。 初学Java时,在很长一段时间里,总觉得基本概念很模糊。后来才知道,在许多Java书中转载 2014-03-18 16:41:00 · 860 阅读 · 0 评论 -
HashMap实现原理
1. HashMap概述: HashMap是基于哈希表的Map接口的非同步实现。此实现提供所有可选的映射操作,并允许使用null值和null键。此类不保证映射的顺序,特别是它不保证该顺序恒久不变。 2. HashMap的数据结构: 在java编程语言中,最基本的结构就是两种,一个是数组,另外一个是模拟指针(引用),所有的数据结构都可以用这两个基本转载 2014-04-02 16:27:22 · 710 阅读 · 0 评论 -
java 中的 final 变量
工作了这么久,其实一直对final的理解不够深入,或者说是错误的,今天看到了一篇讲得很好的文章,一起共享一下~【java中为什么会有final变量】: final这个关键字的含义是“这是无法改变的”或者“终态的”; 那么为什么要转载 2014-04-03 09:54:53 · 963 阅读 · 0 评论 -
Java CAS 和ABA问题
独占锁:是一种悲观锁,synchronized就是一种独占锁,会导致其它所有需要锁的线程挂起,等待持有锁的线程释放锁。乐观锁:每次不加锁,假设没有冲突去完成某项操作,如果因为冲突失败就重试,直到成功为止。一、CAS 操作乐观锁用到的机制就是CAS,Compare and Swap。CAS有3个操作数,内存值V,旧的预期值A,要修改的新值B。当且仅当预期值A和内存值V转载 2016-11-14 09:46:45 · 302 阅读 · 0 评论