JAVA
文章平均质量分 60
bamboo_cqh
自律的白丁>_<客观的评判,有责任心的发言。
展开
-
java中CAS出现的原因及原理分析
目录前言解决方案AtomicInteger源码分析UnsafevalueOffsetcompareAndSwapIntincrementAndGet总结前言CAS:即compare and swap(比较并替换),CAS需要解决的是多线程并发时线程间切换时间片导致的原子性问题。我们先看一段代码public class CasDemo1 { static int k = 0; public static void main(String[] args) {...转载 2022-02-11 14:40:14 · 364 阅读 · 0 评论 -
幂等怎么保证的
实现幂介绍幂等性就是同一个操作执行多次,产生的效果一样。如http的get请求,数据库的select请求就是幂等的在分布式系统中,保证接口的幂等性非常重要,如提交订单,扣款等接口都要保证幂等性,不然会造成重复创建订单,重复扣款,那么如何保证接口的幂等性呢?前端保证幂等性的方法按钮只能点击一次用户点击按钮后将按钮置灰,或者显示loading状态RPG模式即Post-Redirect-Get,当客户提交表单后,去执行一个客户端的重定向,转到提交成功页面。避免用户按F5刷新导致的重复提交,原创 2022-02-11 09:29:05 · 4004 阅读 · 0 评论 -
Java8 Map集合中为什么加putIfAbsent()
Map集合中put与putIfAbsent的区别put方法:V put(K key, V value);putIfAbsent方法:V putIfAbsent(K key, V value);这两种方法都是以key-value键值对的形式存在到map集合中,那么它们两个有什么区别呢?我们可以从map官网注释中看出:1.使用put方法添加键值对,如果map集合中没有该key对应的值,则直接添加,并返回null,如果已经存在对应的值,则会覆盖旧值,value为新的值。2.使用putIf原创 2022-02-11 08:52:21 · 307 阅读 · 0 评论 -
链表转红黑树的原因?为什么阈值为8?
为什么 Map 桶中超过 8 个才转为红黑树? 我们知道Java8后,当Map链表长度大于或等于阈值TREEIFY_THRESHOLD(默认为 8)的时候,如果同时还满足容量(数组的长度)大于或等于 MIN_TREEIFY_CAPACITY(默认为 64)的要求,就会把链表转换为红黑树。同样,后续如果由于删除或者其他原因调整了大小,当红黑树的节点小于或等于 6 个以后,又会恢复为链表形态。首先要知道为什么要转换为红黑树? 每次遍历一个链表,平均查找的时间复杂度是 O(n),n 是链表的长度。转载 2022-02-11 08:43:02 · 1222 阅读 · 1 评论 -
tableSizeFor方法
/** * 根据容量参数,返回一个2的n次幂的table长度。 */private static final int tableSizeFor(int c) { int n = c - 1; n |= n >>> 1; n |= n >>> 2; n |= n >>> 4; n |= n >>> 8; n |= n >>> 16; return (n &l.转载 2022-02-11 08:39:49 · 330 阅读 · 0 评论 -
Java并发线程安全5种
线程安全与锁优化文章目录线程安全与锁优化一、线程安全概念不可变绝对线程安全相对线程安全线程兼容线程对立二、线程安全的实现方法互斥同步最基本互斥手段就是synchronized另一种手段JUC下的ReentrantLock阻塞同步的问题:非阻塞同步实现方式CAS操作:无同步方案三、锁优化自旋锁与自适应锁锁消除锁粗化轻量级锁偏向锁一、线程安全概念为了更好的理解线程安全,我们不把线程安全看做是一个二元对立的选项来看,而是按照线程安全的”安全程度“由强至弱来排序。转载 2022-02-10 17:06:59 · 726 阅读 · 0 评论 -
springboot设置文件上传大小,默认是1mb
springboot默认文件大小的限制是1MB,超过1MB会出现这个错误:org.springframework.web.multipart.MultipartException。通过设置application.yml文件属性更改文件大小限制如图:spring: servlet: multipart: enabled: true #是否启用http上传处理 max-request-size: 100MB #最大请求文件的大小 max-file-size...转载 2021-08-23 09:30:55 · 3193 阅读 · 1 评论 -
@scheduled注解配置时间_spring 定时任务@Scheduled
1、配置文件2、调用有两种使用方式1)如果需要以固定速率执行,只要将注解中指定的属性名称改成fixedRate即可,以下方法将以一个固定速率5s来调用一次执行,这个周期是以上一个任务开始时间为基准,从上一任务开始执行后5s再次调用:2)使用cron表达式,可以实现定时调用如:每天凌晨调用,详细的cron相关参数见后面介绍3、cron相关参数意义一个cron表达式有至少6个(也可能7个)有空格分隔的时间元素。按顺序依次为秒(0~59) 分钟(0~59) 小时(0转载 2021-07-09 08:41:55 · 5036 阅读 · 0 评论 -
mybatis添加记录时返回主键id
方法:int insert(PdProduct record);int insertSelective(PdProduct record);int 返回来的其实他影响的行数,也就是你插入一条数据, 他返回来的并不是你插入进去他数据的唯一ID使用xml配置方式1.xml配置:<!-- 插入数据:返回记录的id值 --><insert id="insertOneTest" parameterType="org.chench.test.mybatis.model.Tes.转载 2021-04-20 17:20:23 · 232 阅读 · 0 评论 -
Mac上svn用户名密码注销最简单方式之一
启动台-->其他-->终端:执行以下命令cd ~cd .subversion/rm -rf auth/转载 2021-03-31 09:19:34 · 490 阅读 · 0 评论 -
dubbo的超时和重试
超时<dubbo:consumer timeout="1000"></dubbo:consumer>消费者取消重试retries="0"dubbo源码分析:超时原理以及应用场景本篇主要记录dubbo中关于超时的常见问题,实现原理,解决的问题以及如何在服务降级中体现作用等。超时问题为了检查对dubbo超时的理解,尝试回答如下几个问题,如果回答不上来或者不确定那么说明此处需要再多研究研究。我只是针对个人的理解提问题,并不代表我理解的就是全面深入的,但我的问题..转载 2021-03-22 18:05:56 · 636 阅读 · 0 评论 -
线程池不建议使用Executors去创建,而是通过ThreadPoolExecutor方式的原因
今天sonar代码检测,发现的问题,百度后记录一下,原文https://blog.csdn.net/qq_31615049/article/details/80756781首先用的是new Threadpublic void doSummaryJob() throws Exception { try{ HandlerMappingSummaryJobRunnable handlerMappingSummaryJobRunnable = new Handler...转载 2021-03-18 15:47:26 · 861 阅读 · 3 评论 -
代码优化细节一二
让代码性能更高需要 Map 的主键和取值时,应该迭代 entrySet()当循环中只需要 Map 的主键时,迭代 keySet() 是正确的。但是,当需要主键和取值时,迭代 entrySet() 才是更高效的做法,比先迭代 keySet() 后再去 get 取值性能更佳。反例:Map<String,String>map=...;for(String...转载 2019-10-31 16:00:51 · 154 阅读 · 0 评论 -
Tomcat部署Web应用时出现异常
Tomcat部署Web应用时出现异常开发环境:IDE:IntelliJ IDEA 2017.1.4JRE: 1.8.0_112-release-736-b21 amd64JVM: OpenJDK 64-Bit Server VM by JetBrains s.r.oOS:Windows 10 10.0Tomcat:8.5.16Tomcat部署Web应用时出现异常问题解决方法问...转载 2019-10-28 10:11:32 · 551 阅读 · 0 评论 -
详解java类的生命周期
引言 最近有位细心的朋友在阅读笔者的文章时,对Java类的生命周期问题有一些疑惑,笔者打开百度搜了一下相关的问题,看到网上的资料很少有把这个问题讲明白的,主要是因为目前国内java方面的教材大多只是告诉你“怎样做”,但至于“为什么这样做”却不多说,所以造成大家在基础和原理方面的知识比较匮乏,所以笔者今天就斗胆来讲一下这个问题,权当抛砖引玉,希望对在这个问题上有疑惑的朋友有所帮转载 2017-06-06 15:52:05 · 246 阅读 · 0 评论 -
http接口、api接口、RPC接口、RMI、webservice、Restful等概念
在这之前一定要好好理解一下接口的含义,我觉得在这一类中接口理解成规则很恰当。 http接口:基于HTTP协议的开发接口.这个并不能排除没有使用其他的协议。 api接口:API(Application Programming Interface)应用程序编程接口,应用也包括网络应用程序,就像api文档基本上就是使用说明书,API接口可以简单理解成“应用程序使用接口...转载 2018-10-12 09:34:23 · 271 阅读 · 0 评论 -
Java中的hashcode方法
哈希表这个数据结构想必大多数人都不陌生,而且在很多地方都会利用到hash表来提高查找效率。在Java的Object类中有一个方法:1public native int hashCode(); 根据这个方法的声明可知,该方法返回一个int类型的数值,并且是本地方法,因此在Object类中并没有给出具体的转载 2017-11-15 11:14:21 · 212 阅读 · 0 评论 -
Java爬虫,信息抓取的实现
这个例子算抄的吧,但是是自己测试过的,原先少了一个TextUtil.java思想很简单:就是通过Java访问的链接,然后拿到html字符串,然后就是解析链接等需要的数据。技术上使用Jsoup方便页面的解析,当然Jsoup很方便,也很简单,一行代码就能知道怎么用了:[java] view plain copyDocument原创 2017-10-31 13:55:58 · 481 阅读 · 0 评论 -
java过滤器和监听器
1、Filter工作原理(执行流程) 当客户端发出Web资源的请求时,Web服务器根据应用程序配置文件设置的过滤规则进行检查,若客户请求满足过滤规则,则对客户请求/响应进行拦截,对请求头和请求数据进行检查或改动,并依次通过过滤器链,最后把请求/响应交给请求的Web资源处理。请求信息在过滤器链中可以被修改,也可以根据条件让请求不发往资源处理器,并直接向客户机发回一个转载 2017-10-31 09:28:26 · 224 阅读 · 0 评论 -
Java-第6章 访问权限控制
访问控制(或隐藏具体实现)与”最初的实现并不恰当“有关。所有优秀的作者,包括那些编写软件的程序员,都清楚其著作的某些部分直至重新创作的时候才变得完美,有时甚至要重写多次。如果你把一个代码段放到了某个位置,等过一会回头再看时,有可能会发现有更好的方式去实现相同的功能。这正是重构的原动力之一,重构即重写代码,以使它更可读、更易理解,并因此而更具可维护性。原创 2017-06-22 17:16:47 · 399 阅读 · 0 评论 -
浅谈HTTP中Get与Post的区别
Http定义了与服务器交互的不同方法,最基本的方法有4种,分别是GET,POST,PUT,DELETE。URL全称是资源描述符,我们可以这样认为:一个URL地址,它用于描述一个网络上的资源,而HTTP中的GET,POST,PUT,DELETE就对应着对这个资源的查,改,增,删4个操作。到这里,大家应该有个大概的了解了,GET一般用于获取/查询资源信息,而POST一般用于更新资源信息。 1转载 2017-06-30 13:39:19 · 305 阅读 · 0 评论 -
java-第五章 初始化与清理
初始化和清理正是设计安全的两个问题。比如C程序忘记初始化变量,当使用完一个元素时,它也很容易忘记清理。C++引入构造器(constructor)的概念,这是一个创建对象时会被自动调用的特殊方法。Java中也采用了构造器,并额外提供了“垃圾回收器”。对于不在使用的内存资源,垃圾回收器能自动将其释放。1.用构造器确保初始化(助于理解)可以假想为编写的每个类都定义一个initialize()原创 2017-06-20 10:15:56 · 295 阅读 · 0 评论 -
Java:按值传递还是按引用传递详细解说
1:按值传递是什么指的是在方法调用时,传递的参数是按值的拷贝传递。示例如下:[java] view plain copypublic class TempTest { private void test1(int a){ //做点事情 } public static void main(String[] arg转载 2017-06-30 13:12:38 · 280 阅读 · 0 评论 -
图片验证码
做注册登陆需要图片验证码。遂如下 package com.dtyunxi.jingbo.common.utils;import java.awt.Color;import java.awt.Font;import java.awt.Graphics;import java.awt.image.BufferedImage;import java.util.Random;i...原创 2018-10-18 17:57:01 · 155 阅读 · 0 评论 -
MD5加密的简单java实现
1.先大致说一下什么是MD5加密。MD5的全称是Message-Digest Algorithm 5(信息-摘要算法),看了很多大神的文章,自己有了点理解 ,MD5其实不算是加密算法,而是一种信息的摘要。它的特性是不可逆的,所以除了暴力破解 一般逆序算法是得不到结果的。举个例子:比如1+99=100,MD5接到的字符是1和99 然后通过自己的算法最后生成100 但知道结果是100却很难推测出是通过...转载 2018-10-09 14:58:36 · 197 阅读 · 0 评论 -
Java删除ArrayList中的重复元素的2种方法
ArrayList是Java中最常用的集合类型之一。它允许灵活添加多个null元素,重复的元素,并保持元素的插入顺序。在编码时我们经常会遇到那种必须从已建成的ArrayList中删除重复元素的要求。这篇文章将给出两种从ArrayList中删除重复元素的方法。方法1:使用HashSet删除ArrayList中重复的元素在该方法中,我们使用HashSet来删除重复的元素。如你所知,Ha原创 2016-12-21 16:33:45 · 529 阅读 · 0 评论 -
Java泛型的重要目的:别让猫别站在狗队里
《Java编程思想》第四版足足用了75页来讲泛型——厚厚的一沓内容,很容易让人头大——但其实根本不用这么多,只需要一句话:我是一个泛型队列,狗可以站进来,猫也可以站进来,但最好不要既站猫,又站狗!01、泛型是什么泛型,有人拆解这个词为“参数化类型”。这种拆解其实也不好理解,还是按照沉默王二的意思来理解一下吧。现在有一只玻璃杯,你可以让它盛一杯白开水,也可以盛一杯二锅头——泛型的概念就在于...转载 2019-06-11 15:21:31 · 192 阅读 · 0 评论 -
使用 Google Guava 美化你的 Java 代码
文章转载自:http://my.oschina.net/leejun2005/blog/172328目录:[-]1-使用 GOOGLE COLLECTIONS,GUAVA,STATIC IMPORTS 编写漂亮代码 1、Google Collections一览 2、操作lists和maps 3、静态导入和Eclipse模板 4、Guava走马观花 2-深入探索 GOOGLE ...转载 2019-06-11 11:21:58 · 313 阅读 · 0 评论 -
使用try语句自动关闭流
今天面试被问到,关闭流,不用close,还有什么方法,哈哈,不知道~~虽然在java程序在结束时自动关闭所有打开的流,但是当使用完流后,显示的关闭所有打开的流仍然是一个好习惯。一个被打开的流有可能会用尽系统的资源,这取决于平台和实现。如果没有将流关闭,另一个程序试图打开另一个流时,可能会得到不需要的资源。 从JDK1.7后,有两种关闭数据流的方法,分别如下: 1) 使用cl...原创 2019-05-22 15:02:42 · 16012 阅读 · 3 评论 -
java的反射机制原理
一 反射机制的概念:指在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法,对于任意一个对象,都能调用它的任意一个方法.这种动态获取信息,以及动态调用对象方法的功能叫java语言的反射机制.二 反射机制的应用:生成动态代理,面向切片编程(在调用方法的前后各加栈帧).三 反射机制的原理:1 首先明确的概念: 一切皆对象----类也是对象.2 然后知道类中的...转载 2019-05-21 13:07:48 · 628 阅读 · 0 评论 -
HashMap的扩容机制---resize()
面试的时候闻到了Hashmap的扩容机制,之前只看到了Hasmap的实现机制,补一下基础知识,讲的非常好原文链接:http://www.iteye.com/topic/539465Hashmap是一种非常常用的、应用广泛的数据类型,最近研究到相关的内容,就正好复习一下。网上关于hashmap的文章很多,但到底是自己学习的总结,就发出来跟大家一起分享,一起讨论。1、...转载 2019-05-21 11:36:00 · 392 阅读 · 0 评论 -
JVM(四)—一道面试题搞懂JVM类加载机制
有这样一道面试题:class Singleton{ private static Singleton singleton = new Singleton(); public static int value1; public static int value2 = 0; private Singleton(){ value1++; ...转载 2019-04-09 20:46:33 · 145 阅读 · 0 评论 -
Error:java:JDK isn't specified for module
今天用idea编写程序过程中,电脑出现问题,显示电脑重启。结果问题就出来了。首先是打开项目:1、idea里面的project下面只有两个东西。Power_manager.iml和External Libraries两个东西而且下面显示Error:java:JDK isn't specified for module。(我的项目名:Power_manager)我还不信邪,打开其他的项目,...原创 2018-12-21 15:15:10 · 6795 阅读 · 1 评论 -
IDEA下lombok安装,解决找不到get,set的问题
今天尝试在IDEA中使用Lombok,但是在编译时,提示找不到set()和get()方法,我明明在javabean中使用了@Data注解,但是编译器就是找不到。于是从网上查询了很多的方法去解决,最后终于解决了。接下来我就将过程分享一下,希望能够帮助需要的人:Idea下安装lombok(需要二步) 第一步: pom.xml中加入lombok依赖包 <!-- https...原创 2018-10-09 15:03:16 · 557 阅读 · 0 评论 -
UnresolvableModelException
[INFO] Scanning for projects...[ERROR] The build could not read 1 project -> [Help 1][ERROR] [ERROR] The project com.iflytek.ossp:ossp-resserver-service:1.0.0-SNAPSHOT (C:\Users\moon\Desktop\os原创 2017-06-06 13:16:08 · 3650 阅读 · 0 评论 -
JAVA_OPTS设置
AVA_OPTS ,顾名思义,是用来设置JVM相关运行参数的变量。 JVM:JAVA_OPTS="-server -Xms2048m -Xmx2048m -Xss512k"-server:一定要作为第一个参数,在多个CPU时性能佳-Xms:初始Heap大小,使用的最小内存,cpu性能高时此值应设的大一些-Xmx:Java heap最大值,使用的最大内存上面两个值是分配J转载 2017-05-31 15:30:35 · 31704 阅读 · 0 评论 -
学习Java必看书籍和步骤
Java语言基础 谈到Java语言基础学习的书籍,大家肯定会推荐Bruce Eckel的《ThinkinginJava》。它是一本写的相当深刻的技术书籍,Java语言基础部分基本没有其它任何一本书可以超越它。该书的作者BruceEckel在网络上被称为天才的投机者,作者的《Thinking in C++》在1995年曾获SoftwareDevelopmentJoltAward最佳书籍大奖,《T转载 2017-02-05 16:49:03 · 427 阅读 · 0 评论 -
Java反射机制详解
首先,我们在开始前提出一个问题:1.在运行时,对于一个Java类,能否知道属性和方法;能否去调用它的任意方法? 答案是肯定的。本节所有目录如下:什么是JAVA的反射机制JDK中提供的Reflection APIJAVA反射机制提供了什么功能获取类的Class对象获取类的Fields获取类的Method获取类的Constructor新建类的实例转载 2017-02-05 13:07:15 · 214 阅读 · 0 评论 -
源代码管理工具概述
一. 源代码管理工具概述1. 源代码管理工具的作用?> 能追踪一个项目从诞生一直到定案的过程> 记录一个项目的所有内容变化,无限制返回> 查看特定版本的修订情况2. 常见的源代码管理工具有哪些?> CVS - 开启版本控制之门 - 1990年诞生,“远古时代”的主流源代码管理工具> SVN - 全称是Subversion,集中式版本控制之王者转载 2017-02-05 09:11:15 · 1575 阅读 · 0 评论 -
Java初学者常见错误
妖孽看黄瓜本文回答了30个JAVA入门级初学者的常见问题。 我可以用%除以一个小数吗? a += b 和 a = a + b 的效果有区别吗? 声明一个数组为什么需要花费大量时间? 为什么JAVA库不用随机pivot方式的快速排序? 1.2 基本数据类型Q. 为什么 -0/3 结果是 0,而 -0.0/3.0 结果是 -0.0?(注意后边的结果0带负号)原创 2016-12-23 09:52:56 · 596 阅读 · 0 评论