java基础专题
文章平均质量分 60
程序男
java 服务端开发者。
展开
-
看麻了呀,线程池日志错乱问题
初步怀疑是对象引用问题,导致 PushDataContext newPushDataContext虽然是新对象,但是其值却不是,由于排查过程中并不太方便打印sql,所以仅仅针对pushTaskList做了一次深拷贝,然后测试,结果也不对,另外也在多个地方打印了newPushDataContext对象的地址,印证了每个线程只会持有自己的对象,另外也排除掉了嵌套调用的情况。每个线程只处理一类数据,上下文是隔离的,但是当前日志的内容却打印了别的类型的数据,明显出现错乱,所以可能是组装数据的上下文不是纯隔离的。原创 2024-02-04 11:29:48 · 816 阅读 · 1 评论 -
maven java 如何打纯源码zip包
cd 到src/java目录,打zip包。打纯源码包给第三方进行安全漏洞扫描。项目中加入下面的maven 插件。原创 2024-02-04 11:06:42 · 499 阅读 · 0 评论 -
component-kv设计与实现
这个组件是接着这篇文章《用一个极致简单的场景演练领域建模》进行设计的,根据不同业务场景实现不同的业务场景Service能力。从组件的应用架构图上看,麻雀虽小,五脏俱全。这个组件可以方便的进行集成和二次开发,基本可以作为组件小而美的典型。原创 2022-01-27 14:39:27 · 1122 阅读 · 0 评论 -
Java classLoader源码分析(上)
Launcher类的构造函数public Launcher() { Launcher.ExtClassLoader var1; try { //1.先通过内部类获取ExtClassLoader var1 = Launcher.ExtClassLoader.getExtClassLoader(); ...原创 2019-12-10 19:35:22 · 916 阅读 · 0 评论 -
ConcurrentHashMap源码解读
基于jdk1.7进行源码阅读1.chm的类图2.chm的属性和构造方法 /** * Creates a new, empty map with the specified initial * capacity, load factor and concurrency level. * * @param initialCapacity th...原创 2019-12-09 16:01:50 · 920 阅读 · 0 评论 -
Java classLoader那些事儿
1.java类加载的定义&过程1.定义将类的.class文件中的二进制数据读入到内存中,将其放在运行时数据区的方法区内,然后在堆区创建一个java.lang.Class对象,用来封装类在方法区内的数据结构。类的加载的最终产品是位于堆区中的Class对象,Class对象封装了类在方法区内的数据结构,并且向Java程序员提供了访问方法区内的数据结构的接口。2.类加载的过程3.类编译的过程4....原创 2019-12-07 11:01:42 · 983 阅读 · 0 评论 -
HashMap源码解读
源码是基于JDK1.7的类图构造方法构造默认容量为16个字符的数组大小追加操作追加实现追加实现默认调用父类方法针对追加对象的不同有不同的实现方法和实现逻辑扩容操作在进行追加之前需要保障字符数组足够长插入操作插入不等同于追加插入需要先进行入参判断为了保障高效插入使用jni方法进行数组复制(system.arraycopy)字符...原创 2019-12-07 00:19:53 · 860 阅读 · 0 评论 -
java并发编程第六章(4)使用基于优先级的阻塞式线程安全列表
3.使用按优先级排序的阻塞式线程安全列表 PriorityBlockingQueue实现一个有序列表 说明:所有添加进入PriorityBlockingQueue的元素必须实现Comparable接口。 这个接口提供了compareTo()方法,传入的参数是一个同类型的对象。 当插入元素时,PriorityblockingQueue使用comp原创 2015-08-31 19:04:21 · 559 阅读 · 0 评论 -
java并发实战第六章(2)非阻塞式线程安全列表与一般List集合多线程情况下的比较
这里我把ConcurrentLinkedDeque与List进行对比测试了一下,发现在多线程情况下一般的集合会出现很大的并发性问题,下面就一起探索一下 1.使用ConcurrentLinkedDeque实现的多线程读写数据 任务:添加大量的数据到一个列表集合中 从同一个列表中移除大量的数据/** * * @author fcs * @date 2015-6原创 2015-08-30 20:04:21 · 2250 阅读 · 0 评论 -
java并发编程第六章(3)使用阻塞式线程安全列表
使用阻塞式线程安全列表 2.使用阻塞式线程安全列表 阻塞式列表与非阻塞式列表的主要区别是:阻塞式列表在插入和删除操作时,如果列表已经满或者已经空了的话,操作不会被立即执行。 而是将调用换这个操作的线程阻塞 直到操作可以执行成功。 本节使用LinkedBlockingDeque类来实现阻塞式列表。 使用方法: ta原创 2015-08-30 20:16:02 · 820 阅读 · 0 评论 -
java并发编程实战第六章(1)并发集合介绍
1.java中提供了两类适用于并发应用的集合。 1.阻塞式集合(Blocking Collection):这类集合包括添加移除数据的方法。当集合已经满或者为空的时候,被调用的添加或者移除方法就不能立即 被执行,那么调用这个方法的线程将被阻塞,直到该方法可以被成功执行。 2.非阻塞式集合(Non-Blocking Collection):这类集合也包括添加和移除数据的方法原创 2015-08-30 19:44:39 · 583 阅读 · 0 评论 -
java并发编程第五章(1) 创建Fork/Join线程池
说明:执行器框架(Executor FrameWork) 将任务的创建和执行进行了分离,通过这个框架,只需要实现Runnable接口的对象和使用Executor对象, 然后将Runnable对象发送给执行器,执行器再负责运行这些任务所需要的线程,包括线程的创建,线程的管理和线程的结束。 java 7新特性 包括了ExecutorService接口的另一种实现方式,用来解决特殊问原创 2015-07-20 08:26:49 · 1041 阅读 · 0 评论 -
cmd下运行java程序的注意事项
在cmd下运行java类程序是一个java程序员的基本功,但是弄了挺长时间都没怎么弄好,这次算是一个插曲吧,有点丢人了。以前也弄过几次,但是都没怎么弄好,这次终于好使了。下面是我的环境变量设置: 其实一般只要在系统变量下设置java的环境变量就行,因为运行java程序时会根据系统中的环境变量寻找路径上的运行环境。 然后的一点是我们如果是在项目中运行程序,比如这原创 2015-07-19 20:46:46 · 1319 阅读 · 0 评论 -
java并发编程第四章 总结
java并发编程手册学习知识点原创 2015-07-19 13:44:51 · 902 阅读 · 0 评论 -
java并发编程第四章 线程执行器(5)
10.在执行器中分离任务的启动与结果的处理 当我们要在一个对象中发送任务给执行器,在另一个对象中处理结果时,对于这种需求可以使用CompletionService类。 该类有一个方法用来发送任务给执行器,还有一个方法为下一个已经执行结束的任务获取Future对象。从内部实现机制来看,CompletionService类使用Executor对象来执行任务。 这个行为原创 2015-07-19 13:43:58 · 487 阅读 · 0 评论 -
java并发编程实战 第五章(2)合并任务的结果
2、合并任务的结果 Fork/Join框架提供了执行任务并返回结果的能力,这类任务都是通过RecursiveTask实现的,并且该类实现了Future接口, 所以通过Future接口得到返回结果。 RecursiveTask类有个抽象方法compute该方法返回由子类决定的泛型类型,并且该方法是执行任务的主要方法。 可以在该方法执原创 2015-07-24 09:53:29 · 1054 阅读 · 0 评论 -
java并发编程实战第五章(4)在任务中抛出异常
4、在任务中抛出异常 1.非运行时异常:必须在方法上通过throws子句抛出,或者在方法体内通过try,catch方式进行捕捉处理,比如IOException或者 ClassNotFounException异常。 2.运行时异常:z这些异常不需要在方法上通过throws处理,也不需要try,catch处理。 说明:不能再ForkJoin类中的compute()原创 2015-08-16 22:20:40 · 811 阅读 · 0 评论 -
java基础之面向对象的基本概念(上)
Java基础第三篇(上)------面向对象的基本概念 本文主要基于面向对象着重阐述关于面向对象的几个关键字和其中的思想 一、类 中国有句古话叫物以类聚,人以群分。也就是说万物都有相通之处,而在java中用类来描述这些具有相似点的事物。1.1类的基本概念: 简单的说:类是一组相似事物的统称。 从面向对象方面来说:类是组成Java程序的基本要原创 2014-08-10 16:53:13 · 889 阅读 · 0 评论 -
java并发编程实战第六章(8)使用原子变量
7.使用原子变量 说明:原子变量(Atomic Variable): 提供了单个变量上的原子操作。在编译程序时, java代码中的每个变量,每个操作都将被转换成机器可以理解的指令。 例如,当给一个变量赋值时,在java代码中只使用一个指令, 但是编译这个程序时,指令被转换成JVM语言的不同指令。 当多个线程共享同一个变量时,就会发生数据不一原创 2015-09-05 08:26:36 · 823 阅读 · 0 评论 -
java并发编程第六章(9)使用原子数组
8.使用原子数组 针对容易引发问题的同步机制(比如Synchronized关键字)等java引入了比较和交换操作(CAS)。这个操作使用 以下三步修改变量的值。 1.取得变量值,即变量的旧值 2.在一个临时变量中修改变量值,即变量的新值。 3.如果上面获得的变量旧值与当前变量值相等,就用新值替换旧值。如果已有其他线程修改了这个变量的值,原创 2015-09-05 09:05:56 · 1183 阅读 · 0 评论 -
java并发编程第六章(7)生成并发编程随机数
6.生成并发随机数 java并发API提供了一个特殊类用以在并发程序中生成伪随机数。在java 7中新引入的ThreadLocalRandom类。是线程本地变量。 每个生成随机数的线程都有一个不同的生成器, 但是都在同一个类中被管理,对程序员来说是透明的。相比于使用共享的Random对象为所有线程生成随机数,这种机制具有更好的性能。 该方法是一个静态方法原创 2015-09-02 19:29:46 · 1328 阅读 · 0 评论 -
java并发编程第六章(6)使用线程安全可遍历映射
5.使用线程安全可遍历映射 本范例用到的接口和实现类:ConcurrentNavigableMap接口及其实现类。实现这个接口的类以如下两部分存放元素 1.一个键值(key),它是元素的标示并且是唯一的。 2.元素其他部分数据。 ConcurrentSkipListMap类实现了ConcurrentNavigaleMap接口。从内部实现机制来讲,它使原创 2015-09-02 19:24:58 · 861 阅读 · 0 评论 -
java并发编程实战第六章(5)使用带有延迟元素的线程安全列表
4.使用带有延迟元素的线程安全列表 本范例使用DelayQueue类;这个类可以存放带有激活日期的元素。当调用方法从队列中返回或者提取元素时,未来的日期将被忽略。这些元素对于这些方法是不可见的。 为了具有调用行为,存放到DelayQueue类中的元素必须继承Delayed接口。Delayed接口使对象成为延迟对象,它使存放在DelayQueue类中的对象具原创 2015-08-31 19:11:25 · 622 阅读 · 0 评论 -
java并发编程实战第五章(3)异步运行任务
3、异步执行任务 在ForkJoinPool中执行ForkJoinTask时,可以采用同步或者异步方式,当采用同步方式执行时,发送任务给Fork/Join线程池的方法直到 任务执行完成后才会返回结果。而采用异步的方式执行任务时,发送任务给执行器的方法将立即返回结果,但是任务仍能继续执行。 当采用同步的方式,ForkJoinPool类采用工作者窃取算法,采用异步的时候不能使用该算法原创 2015-07-24 10:19:38 · 674 阅读 · 0 评论 -
java并发编程第四章线程执行器(3)
java并发编程实战手册第四章 线程执行器中执行周期性任务和延时任务原创 2015-06-14 11:30:08 · 642 阅读 · 0 评论 -
java并发编程第四章 线程执行器(2)
java并发编程实战手册第四章第二大部分,线程执行器处理返回任务原创 2015-06-14 11:15:48 · 554 阅读 · 0 评论 -
Java基础之面向对象的多态和接口(4)续
本篇是作为第四篇多态与接口出现的续篇,由于在第四篇篇幅感觉较大,因此以本篇作为扩展和延伸。在java设计模式中,处处都蕴含着面向对象的基本思想和概念,如果没有基本的java程序设计经验,和很深的面向对象的功力是比较难读懂这些设计模式的,它们都是大牛们在多年开发经验和软件设计过程中逐渐提炼出来的。因此如果想向更高一层研修,这些东西都是必须掌握的。一、面向接口编程的介绍。因为接口非常适合于原创 2014-08-30 18:58:19 · 874 阅读 · 0 评论 -
java基础第四篇(续1)
java基础第四篇(续1) -------------Java创建对象的四种方法上一篇说到了关于对象创建的四种方法,和注意事项,本篇作为续篇自然要有一个实例了。 实例代码1:本文以PersonInfo为例进行说明原创 2014-08-15 19:29:32 · 748 阅读 · 0 评论 -
Java基础第四篇 面向对象的基本概念(中)
本文是面向对象的原创 2014-08-13 15:18:03 · 877 阅读 · 0 评论 -
Java基础之面向对象多态和接口(4)
本篇是面向对象的又一大精华,面向对象的过程,就是在不断的抽象和总结,把关注的事物从不同的方面,根据不同的角度和需求总结出自己的看法和基本规律,笔者最近在看java设计模式之禅,刚看完组合模式就觉得那些玩软件架构的真是非常厉害,把平常所见事物和组织可以归纳出各个不同的部件,进而描述客观世界。有句话叫做大道至简,正好符合咱们这个行业。好了,来看本篇的内容吧。 一、多态在这里先学一个单词原创 2014-08-24 19:14:39 · 1048 阅读 · 0 评论 -
Java基础之面向对象的概念 继承---组合----枚举类
Java基础之面向对象的概念 继承---组合----枚举类本章作为面向对象概念的最后一篇,但是作为一名java程序员在面向对象的这条路上还很长。 一、继承与组合简介 继承是实现类重用的重要手段,但是继承的最大缺点是破坏了封装性,组合也是实现类重用的重要手段之一,这种方式则能提供更好的封装性。本章的上半部分将讲解继承和组合的区别和联系。 1.1使用继承应该注意的原创 2014-09-07 19:20:18 · 2215 阅读 · 0 评论 -
Java中数组的操作(一)
Java中数组的操作(一) 一、说明 1.数组是最常见的一种数据结构,可以用于存储多个数据,每个数组元素存放一个数据,可以通过索引检索数组元素。通过数组名加数组下标,来使用数组中的数据。下标从 0 开始排序。2.一个数组里只能存在一种数据类型,如果存储对象的话,则该对象必须具有继承关系。3.Java中的数组可以存储基本数据类型,也可以存储引用数据类型,只要数据元素的类原创 2014-09-18 18:20:56 · 2993 阅读 · 0 评论 -
java基础之运算符表达式,语句
Java基础第二篇--------算术运算符,表达式,语句 一、运算符1.1 加减运算符: + , - ;乘,除和取余运算符:*, / , % 自增,自减运算符: ++,--; 算术混合运算的精度: 精度从“低”到“高”的排序是: Byte short int long float double 注原创 2014-08-08 21:30:24 · 1188 阅读 · 0 评论 -
Java基础之面向对象的方法参数和对象上转型
本篇博客着重说明方法的参数传递机制和 对象上转型,作为前几篇博客的续貂之作,当然面向对象我还没有回顾完呢。言归正传。 一、方法的参数传递机制1.1说明:java里的方法不能单独存在,调用方法必须使用类或者对象作为主调者。如果声明的方法有形式参数声明,则在调用时必须指定这些形式参数的实际值。 那么java的参数实际值是怎么传递到方法体内部的呢? 首先说一下:java原创 2014-08-21 16:15:49 · 1389 阅读 · 0 评论 -
Java基础之面向对象的基本概念(3)
Java基础之面向对象的基本概念(3)原创 2014-08-17 17:26:31 · 879 阅读 · 0 评论 -
Java基础之面向对象的基本概念(3--续)
Java基础之面向对象的基本概念(3--续)原创 2014-08-19 16:24:37 · 866 阅读 · 0 评论 -
Java 基础之String的基本方法(1)
Java中提供了String类针对字符串的处理,另外为了使String在实际应用中更加方便提供了StringBuffer,StringBuilder来解决String在实际运用中的缺点。String等这三个类在java.long包中是Final类型的。也就是说该类不能被继承,并且实现了java.io.Serializable,Comparable,CharSequence接口。同时String类型原创 2014-09-26 18:44:40 · 953 阅读 · 0 评论 -
Java中 数组作业的练习
Java中 数组的练习 结合上一篇的数组复习,本篇给出一些数组的练习实例代码一:原创 2014-09-26 18:42:16 · 8854 阅读 · 0 评论 -
Myeclipse突然崩溃问题解决方案
Myeclipse突然崩溃问题解决方案: 这两天项目刚开始有时间写,突然就出现了这个崩溃的问题,昨天出现了一次,没在意,只是认为可能有缓冲啥的,或者电脑卡的问题(太浅显了),现在看来是一个myeclipse的系统环境问题,于是百度之,做总结如下: 当我们正在兴致勃勃的写代码时,编辑器,突然挂了是一件非常蛋疼的事情,今天是第二次,忘了截图作为纪念,不过首先第一句话记住了如下:JVM原创 2014-10-30 14:30:59 · 14989 阅读 · 0 评论 -
java并发编程第四章 线程执行器(1)
java并发编程实战手册 线程执行器原创 2015-06-14 10:59:32 · 696 阅读 · 0 评论