java高级
文章平均质量分 94
阿尔法小师妹
这个作者很懒,什么都没留下…
展开
-
volatile不保证原子性及其解决办法
1.volatile不保证原子性既然它可以保证修改的值立即能更新到主存,其他线程也会捕捉到被修改后的值,那么为什么不能保证原子性呢?首先需要了解的是,Java中只有对基本类型变量的赋值和读取是原子操作,如i = 1的赋值操作,但是像j = i或者i++这样的操作都不是原子操作,因为他们都进行了多次原子操作,比如先读取i的值,再将i的值赋值给j,两个原子操作加起来就不是原子操作了。所以,如果一个变量被volatile修饰了,那么肯定可以保证每次读取这个变量值的时候得到的值是最新的,但是一旦需要对变量原创 2021-08-18 16:15:22 · 1875 阅读 · 0 评论 -
幂等性设计
1.概念 幂等性原本是数学上的概念,即使公式:f(x)=f(f(x)) 能够成立的数学性质。用在编程领域,则意为对同一个系统,使用同样的条件,一次请求和重复的多次请求对系统资源的影响是一致的。2.场景 2.1在一次发票申请传入接口的时候,两次发票申请的单号一样,接口不能接收两个同样的单据,为防止重复,需要设计幂等。 2.2在更新业务数据状态或者财务系统设计金额的时候更新操作在分布式系统中需要防止状态更新错误或者金额操作错误,例如重复累加或重复累减。3.幂等的设计方法 ...原创 2020-12-28 20:45:03 · 1053 阅读 · 0 评论 -
java.lang.OutOfMemoryError: PermGen space的解决办法
一、遇到的问题Caused by: java.lang.OutOfMemoryError: PermGen space at org.apache.ibatis.reflection.wrapper.BeanWrapper.getBeanProperty(BeanWrapper.java:160) at org.apache.ibatis.reflection.wrapper.BeanW...原创 2020-01-15 20:03:24 · 382 阅读 · 0 评论 -
后台controller返回给前端页面值的方式Model、ModelAndView、redirect、ajax的json返回
1.ModelModel是接口,接口源码如下public interface Model { Model addAttribute(String attributeName, Object attributeValue); Model addAttribute(Object attributeValue); Model addAllAttributes(Colle...原创 2019-08-02 11:25:27 · 4134 阅读 · 0 评论 -
java.lang.IllegalStateException: getOutputStream() has already been called for this response
问题:java.lang.IllegalStateException: getOutputStream() has already been called for this responseat org.apache.catalina.connector.Response.getWriter(Response.java:611)出现问题的代码: @AuthAnnotatio...原创 2019-07-25 11:38:19 · 404 阅读 · 0 评论 -
web页面传递参数到后台controller的@RequestParam 、@RequestBody、@ModelAttribute 的应用场合及区别联系
1.@RequestParam 1.1可以用在get请求,也可以用在post请求。用于基础类型参数的传递,不能传递对象Object. 1.2post请求,@RequestParam用来处理Content-Type: 为 application/x-www-form-urlencoded编码的内容,ajax的content-type默认为 application/x-www-form...原创 2019-07-30 11:38:07 · 885 阅读 · 1 评论 -
ajax嵌套ajax下载excel文件之问题解决
目录一、场景介绍二、设计过程三、借助第三方平台来下载文件四、不稳定性解决一、场景介绍按照模版导入excel文件,把符合规则的数据更新后,把异常数据导出excel,并记录导出原因。导入导出需要一键操作!!!二、设计过程 用ajax上传文件,ajax上传成功后,在ajax的success中嵌套ajax实现文件的下载。 前端代码如下:<div id=...原创 2019-07-24 19:47:19 · 1068 阅读 · 0 评论 -
JAVA集合的三种集合容器详解
JAVA框架有三种集合容器1.Collection2.Map3. Array、Arrays一、CollectionCollection包含三个子类,List、Set、Queue.ListList 元素可重复,且有序。ArrayList和LinkedList是List的子类。集合名称 存储结构 时间复杂度 优缺点 ArrayList ...原创 2019-07-04 15:50:58 · 1310 阅读 · 0 评论 -
@Value注解失效的原因分析
目录一、@Value的注意事项二、错误的方式三、正确的方式一、@Value的注意事项1.不能作用于静态变量(static);2.不能作用于常量(final);3.不能在非注册的类中使用(类需要被注册在spring上下文中,如用@Service,@RestController,@Component等);4.使用这个类时,只能通过依赖注入的方式,用new的方式是不会自动...原创 2019-07-13 10:36:44 · 6996 阅读 · 2 评论 -
HashMap原理解析及源码解析
1.HashMap的结构 HashMap的结构框图如下: 如上图所示,HashMap是数组加链表的存储结构,存储的是键值对Entry<K,V>。横向以数组的结构存储,数组的长度一般为2的整数次幂,默认数组的初始值为1<<4,即16.怎样存储一个键值对Entry<K,V>?通过key值的hashcode值与上数组长度减1...原创 2019-06-27 15:58:49 · 229 阅读 · 0 评论 -
@Transactional的用法详解及Transactional事务无效的源码分析
数据库事务正确执行的四要素1.原子性事务是不可分割的最小的工作单元,事务内的操作要么全做,要么全不做,不能只做一部分。2.一致性事务执行前数据库的数据按照逻辑处于正确的状态,事务执行后数据库的数据按照逻辑也处于正确状态。如果事务执行前后不是逻辑应该的正确状态,那么数据是不一致的。3.隔离性在并发事务的条件下,事务之间互不影响,即一个事务的内部操作对其他事务不影响,需要设...原创 2019-07-02 18:46:50 · 1574 阅读 · 0 评论 -
数据库锁和java锁介绍(表级锁/行级锁/页级锁/共享锁/独占锁/意向锁/记录锁/间隙锁/NK锁/乐观锁/悲观锁/公平锁/非公平锁/互斥锁/读写锁/可重入锁/自旋锁/分段锁/偏向锁/轻量级锁/重量级别
java的主要两种加锁机制synchronized 关键字java.util.concurrent.Lock (Lock是一个接口,ReentrantLock是该接口一个很常用的实现)这两种机制的底层原理存在一定的差别,synchronized 关键字通过一对字节码指令 monitorenter/monitorexit 实现, 这对指令被 JVM 规范所描述;java.util.conc...原创 2019-06-03 18:29:11 · 1852 阅读 · 0 评论 -
AtomicReference源码解析及应用与应用拓展
AtomicReference赋值操作是非线程安全的,一般会在数据库中用锁来实现变更赋值,如果不用锁,可以用AtomicReference<V>类,实现将对象进行原子操作。提供了一种读和写都是原子性的对象引用变量。原子意味着多个线程试图改变同一个AtomicReference(例如比较和交换操作)将不会使得AtomicReference处于不一致的状态。一、源码解析pub...原创 2019-06-03 15:05:04 · 275 阅读 · 1 评论 -
文件流操作工具
1.Base64 与文件的相互转化 一般用于外部接口传文件的交互方式,如果没有文件的url链接,选择用文件流的形式,因为url占用的容量小,而文件流占用的容量大,接口的网络传输会出现传输慢或者传输失败的情况,所以一般没有文件url链接的时候才会选择文件流的形式传文件,这种情况下一般会限制文件流的大小,例如:一张图片不超过1M,一个文件不超过5M,甚至限制图片与文件的个数,实现接口网...原创 2019-03-26 16:44:09 · 1103 阅读 · 0 评论 -
try()catch{}资源自动释放
static String readFirstLineFromFile(String path) throws IOException { try (BufferedReader br = new BufferedReader(new FileReader(path))) { return br.readLine(); }...原创 2019-01-30 18:53:47 · 2142 阅读 · 0 评论 -
jar 包冲突解决
大家在开发过程中会遇到各种各样的包冲突问题,怎样查到冲突的包并且排除,请看如下讲解:1.包冲突运行代码出现error的提示信息,一般有java.lang.UnsupportedClassVersionError、ClassNotFoundException等异常提示。包冲突会提示冲突的类,一般也会提示冲突的jar包,如果没有提示冲突的jar包,也可以通过类找到冲突的jar包。2.在idea...原创 2018-12-13 16:39:38 · 587 阅读 · 0 评论 -
文件下载的4种方式
转自:https://www.cnblogs.com/sunny3096/p/8204291.html1.以流的方式下载public HttpServletResponse download(String path, HttpServletResponse response) { try { // path是指欲下载的文件的路径。 ...转载 2018-11-07 16:31:07 · 313 阅读 · 0 评论