java
Jahnsonxi
这个作者很懒,什么都没留下…
展开
-
NoClassDefFoundError&ClassNotFoundException
前言同事将was平台工程迁移至tomcat平台,使用idea部署开发。我这边使用eclipse进行开发发布,按照默认方式检出代码后,启动报错。错误一:启动报错,没有找到配置文件 默认没有将配置文件加入classPath: 错误二:重启后报以下错java.lang.NoClassDefFoundError: com/opensymphony/util...原创 2018-12-12 10:02:09 · 300 阅读 · 0 评论 -
【学习笔记-并发编程实战】第5章 基础构建模块
同步容器类将状态封装起来,对公共方法都进行同步,确保一次只有一个线程可是访问容器。同步容器类的问题在组合同步容器如Vector时,如果发布含有Vector的复合操作,多个复合操作可能不会有线程安全方面的问题,但是会出现不希望的结果,比如P67所示的抛出异常(但是这个结果又与Vector规范所一致)。所以可使用客户端加锁的方式,来保证复合操作符合使用预期。迭代器与Concurrent...原创 2019-09-09 07:42:29 · 122 阅读 · 0 评论 -
【学习笔记-并发编程实战】第4章 对象的组合
设计线程安全的类1、构成对象的状态的变量有哪些2、构造的这些变量的不变性条件3、控制管理对象状态的并发访问收集同步需求什么情况下需要同步,类中是否有一些不变性条件,后验条件,施加在状态及状态转换上的各种约束,当然也包含多个状态之间的相互约束(约束多个状态变量的不变性条件)。依赖状态的操作有些状态变量的操作依赖于当前状态中的值,或者叫做先验条件,并发操作可能需要等到某些状...原创 2019-09-02 21:36:28 · 139 阅读 · 0 评论 -
【学习笔记-并发编程实战】第3章 对象的共享
可见性一个共享变量被一个线程修改后,另外一个线程能够正确的获取到共享变量最新值,此共享变量具有可见性。失效数据缺乏同步的共享变量,在多线程访问中,就可能获取到失效数据,从而导致不可预见的错误。非原子的64位操作正常情况下,即使是非同步变量,不同线程获取到的不是最新数据,为失效数据,但至少它是之前存在过的值,这个值曾经出现过,这种就是所谓的最低安全性。jvm将非volatile类...原创 2019-08-28 17:10:45 · 107 阅读 · 0 评论 -
【学习笔记-并发编程实战】第2章 线程安全性
什么是线程安全性要搞清线程安全性的定义,书上说最核心的概念是“正确性”,所谓“正确性”,我感觉就是一段代码执行的确定性,类的代码能够正确的工作。当多个线程访问某个类、某个方法时,都能表现出确定的行为,能够预知的行为,这就是线程的安全性。原子性原子性应该就比较好理解了,正如其义,原子,不可分割(如果原子可以被分割为夸克,那就是夸克性吧)。一段代码块块或者一个方法,不可以被cpu分...原创 2019-08-24 19:19:52 · 209 阅读 · 0 评论 -
【关键字】java中final关键字的六种用法
final类(1)修饰的类不可被继承不变类的意思是创建该类的实例后,该实例的实例变量是不可改变的。满足以下条件则可以成为不可变类: 使用private和final修饰符来修饰该类的成员变量 提供带参的构造器用于初始化类的成员变量; 仅为该类的成员变量提供getter方法,不提供setter方法,因为普通方法无法修改fina修饰的成员变量;...原创 2019-07-03 11:35:22 · 571 阅读 · 0 评论 -
【关键字】java中transient关键字的用法
java中transient关键字的用法其实不用多说,另外需要注意两个问题,这里简单介绍用法及注意事项:1、实现Serializable后使用transient修改时的字段不能序列化 实现Serializable接口,使用transient修饰type变量,type字段将不会序列化//实现Serializable后使用transient修改时的字段不能序列化public...原创 2019-07-09 14:53:55 · 166 阅读 · 0 评论 -
【关键字】java中volatile关键字的用法
这个关键字是比较简单的,用法大致只有两种,但是通过java内存模型可以进行深入的理解,这篇文章就不多于赘述,主要做一个记录,方便自己能够快速回忆相关用法:1、禁止线程内部缓存变量,被volatile关键字修饰的变量,再线程读取时,直接通过公共内存进行读取(将主内存中的值刷新到自己的工作内存),不是在自己的cpu缓存中获取,所以保证每次获取到的都是最新的值。在写入的时候,也会直接同步到内存中。但...原创 2019-08-29 18:00:12 · 139 阅读 · 0 评论 -
java中static关键字的五种用法
修饰成员变量类实例存放在堆中,成员变量属于类实例,也存放在堆中。使用static修饰后,成员变量便属于类,而不属于某个具体的对象,存放位置发生改变存放在方法区中。修饰成员方法成员方法属于类实例,但是相同类的不同实例共用同一个方法,方法都存在与方法区,使用static修饰后不会改变方法存放位置,但是会改变归属修饰代码块static块中的代码将在类加载的时候进行执行,多个stati...原创 2019-06-19 11:07:52 · 1653 阅读 · 0 评论 -
【学习笔记-并发编程实战】第6章 任务执行
在线程中执行任务以任务执行为结构的应用程序设计的关键是找出清晰的任务边界,大多数服务器应用程序都是以独立的客户请求为界。串行的执行任务一种串行的web服务器,接受请求和提供服务都在同一线程中,这种串行的方式无法提供高吞吐率或快速响应。显示地为任务创建线程为在主循环中为每个请求的任务创建一个线程,将任务处理放在子线程进行处理。任务处理的代码必须是线程安全的,因为其有多个任务时会并...原创 2019-09-15 11:26:26 · 119 阅读 · 0 评论