JAVA
文章平均质量分 71
hy_coming
不忘初心 方得始终
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
为什么HashMap线程不安全?
假设线程1和线程2同时执行put,线程1执行put(“1”, “A”),线程2执行put(“5”, “B”),hash算法就是用key mod 表的长度,表长度为4,在mod 4 以后都冲突在table[1]这里了。注:下面的例子,只演示了。JDK1.7中的 HashMap 使用头插法插入元素,在多线程的环境下,扩容的时候有可能导致环形链表的出现,形成死循环。我们来看看多线程下的ReHash,假设现在有两个线程同时进行,线程1和线程2,两个线程都会新建新的数组,下面是resize 的过程。转载 2023-04-10 22:19:55 · 517 阅读 · 1 评论 -
Mysql tinyint长度为1时在java中被转化成boolean型
Mysql tinyint长度为1时在java中被转化成boolean型转载 2022-08-15 19:41:13 · 940 阅读 · 0 评论 -
MySQL批量更新死锁案例分析(转载)
问题描述在做项目的过程中,由于写SQL太过随意,一不小心就抛了一个死锁异常,如下:com.mysql.jdbc.exceptions.jdbc4.MySQLTransactionRollbackException: Deadlock found when trying to get lock; try restarting transaction at sun.reflect.GeneratedConstructorAccessor247.newInstance(Unknown S...转载 2022-03-26 13:16:47 · 1472 阅读 · 0 评论 -
Preconditions 使用总结
1 .checkArgument(boolean) :功能描述:检查boolean是否为真。 用作方法中检查参数失败时抛出的异常类型: IllegalArgumentException2.checkNotNull(T): 功能描述:检查value不为null, 直接返回value;失败时抛出的异常类型:NullPointerException3.checkState(boolean):功能描述:检查对象的一些状态,不依赖方法参数。 例如, Iterator可以用来next是否在re...转载 2021-04-28 10:25:53 · 499 阅读 · 0 评论 -
【延时队列】——实现方式
在开发中,往往会遇到一些关于延时任务的需求。例如 生成订单30分钟未支付,则自动取消 生成订单60秒后,给用户发短信 其实实现方式有很多种,这篇文章写得不错:https://www.cnblogs.com/wangwust/p/9467783.html...转载 2020-11-30 21:53:32 · 167 阅读 · 0 评论 -
【转】Java new一个Object对象占用多少内存?
Java的自动内存管理机制(automatic storage management system known as a garbage collector)省却了很多编码工作,大大地提高了Java的生产力,而且JVM的性能也越来越好,特别是G1的出现,改善了垃圾回收中stop the world的状况。也许很多人都没有考虑过这个问题,new一个Object对象到底占用多少内存呢( Object obj = new Object() )?这里很明确的是obj是一个指向对象的引用(refe..转载 2020-11-11 20:57:18 · 1445 阅读 · 0 评论 -
dependencyManagement和dependencies区别
dependencies:依赖,jar包管理。dependency:具体的依赖项。dependencyManagement:依赖,jar包管理。dependencyManagement和dependencies区别:1)dependencies:自动引入声明在dependencies里的所有依赖,并默认被所有的子项目继承。如果项目中不写依赖项,则会从父项目继承(属性全部继承)声明在父项目dependencies里的依赖项。2)dependencyManagement里只是声明依赖,并不实..原创 2020-09-22 19:21:07 · 1086 阅读 · 0 评论 -
普通的登录权限流程,结合jwt+redis
废话不多说,直接上图吧其实上面用到的jwt只是一个生成token 的作用,并没有用到jwt优化资源的作用(但是安全性就是比较大的问题),当然你也可以自行生成token也是可以的,具体的代码也就不写了,网上一搜一大堆,稍微说下token相对于传统的session、cookie的优势吧支持跨域访问,将token置于请求头中,而cookie是不支持跨域访问的; 无状态化,服务端无需存储to...原创 2020-05-03 12:22:14 · 1031 阅读 · 0 评论 -
如何设计一个秒杀系统
前言其实秒杀系统可以看成是现实系统的一个升级版,也可以说是对平时所有技术的一个高效的、综合的运用,下面简单看下之前做过的一个基于redis+mysql的一个简单秒杀流程上面这种其实适用于一些秒杀用户量和奖品都不是很多的情况,如果用户量特别大的情况,可能就需要更加复杂的设计了。正文其实上面的方案中减库存虽然使用库存量大于0作为条件,但是对于并发超过500,访问量超过2000依然可...原创 2020-04-19 15:55:14 · 342 阅读 · 0 评论 -
java split()使用“.” “\” "|" "*" "+"要转义
java中\\表示一个\,而regex中\\也表示\,所以当\\\\解析成regex的时候为\\,同理其他的转义就会是\\.,\\\,\\|,\\*,\\+原创 2020-03-26 17:34:51 · 350 阅读 · 0 评论 -
Java中序列化实现原理研究
原文地址:https://blog.youkuaiyun.com/weixin_39723544/article/details/80527550转载 2020-03-25 10:32:59 · 218 阅读 · 0 评论 -
关于parallelStream()引发线程不安全问题
一、问题代码public class ParallelStreamTest { public static void main(String[] args) { List<DataA> dataAList =new ArrayList<>(); List<DataB> dataBList = new ArrayLi...原创 2020-03-19 17:46:17 · 1317 阅读 · 2 评论 -
SpringBoot @Transactional注解失效排查
问题描述:最近发现一个加了@Transactional注解的事务没有生效问题分析:一、注解特性1、service类标签(一般不建议在接口上)上添加@Transactional,可以将整个类纳入spring事务管理,在每个业务方法执行时都会开启一个事务,不过这些事务采用相同的管理方式。2、@Transactional 注解只能应用到 public 可见度的方法上。 如果应用在prot...原创 2020-03-15 14:12:33 · 2676 阅读 · 0 评论 -
put请求:报错(Content type 'text/plain;charset=UTF-8' not supported")
解决办法:重置消息头 Content-Type:application/json;charset=UTF-8原创 2020-02-25 11:39:11 · 1786 阅读 · 0 评论 -
分布式ID——雪花算法
背景随着现在业务量的越来越大,数据库的划分也变的越来越细,分库分表的理念也渐渐的落地,自增主键或者序列之类的主键id生成方式已经不再满足需求,所以分布式ID的生成就应运而生,总的来说就是生成规则更加负责,减少重复的概率。一、雪花算法雪花算法的原始版本是scala版,用于生成分布式ID(纯数字,时间顺序),订单编号等。自增ID:对于数据敏感场景不宜使用,且不适合于分布式场景。GU...原创 2020-01-18 15:40:21 · 2334 阅读 · 0 评论 -
pinyin4j的使用
maven依赖:https://mvnrepository.com/artifact/com.belerweb/pinyin4jpinyin4J 是一个可以将汉字转换成拼音的lib,非常实用,在我们的日常开发过程中可能会用到,这里记录一下@Slf4jpublic class PinyinUtil { /** * 汉字转拼音 * * @param c...原创 2020-01-16 16:17:36 · 1004 阅读 · 3 评论 -
各种加密算法比较
各种加密算法比较算法选择:对称加密AES,非对称加密: ECC,消息摘要: MD5,数字签名:DSA对称加密算法(加解密密钥相同) 名称 密钥长度 运算速度 安全性 资源消耗 DES 56位 较快 低...转载 2020-01-16 11:15:29 · 3346 阅读 · 0 评论 -
spring常用的工具类
原文地址:https://www.jianshu.com/p/1d8efe684f48转载 2020-01-14 16:54:37 · 237 阅读 · 0 评论 -
apache-commons 常用工具类
原文地址:https://blog.youkuaiyun.com/sanri1993/article/details/99698674转载 2020-01-14 16:42:24 · 312 阅读 · 0 评论 -
Mybatis拦截器
1、拦截器@Component@Slf4j@Intercepts({@Signature(type = Executor.class, method = "update", args = {MappedStatement.class, Object.class})})public class MyInterceptor implements Interceptor { @Ove...原创 2020-01-10 16:31:06 · 242 阅读 · 0 评论 -
Javassist 的使用
原文:https://www.jianshu.com/p/43424242846b转载 2020-01-03 11:52:23 · 264 阅读 · 0 评论 -
Java内部类
转载 2020-01-03 11:01:41 · 142 阅读 · 0 评论 -
拦截器和过滤器的区别
一、概览二、区别拦截器是基于java的反射机制的,而过滤器是基于函数回调。 拦截器不依赖与servlet容器,是spring容器的,是spring支持的,过滤器依赖与servlet容器。 拦截器只能对action请求起作用,而过滤器则可以对几乎所有的请求起作用。 拦截器可以获取IOC容器中的各个bean,而过滤器就不行,这点很重要,在拦截器里注入一个service,可以调用...原创 2019-12-20 20:49:51 · 249 阅读 · 0 评论 -
java.toString() ,(String),String.valueOf的区别
1、Object#toString()方法在这种使用方法中,因为java.lang.Object类里已有public方法.toString(),所以对任何严格意义上的java对象都可以调用此方法。但在使用时要注意,必须保证object不是null值,否则将抛出NullPointerException异常。采用这种方法时,通常派生类会覆盖Object里的toString()方法。2、采用...原创 2019-12-02 15:21:37 · 217 阅读 · 0 评论 -
为什么需要继承SpringBootServletInitializer
在说这个之前先来说一下java中jar包和war包的区别:war包:是做好一个web应用后,通常是网站,打成包部署到容器中,包含所有的资源信息,是可以直接运行的web模块。 jar包:通常是开发时要引用通用类,打成包便于存放管理,通常只是包括一些class文件,在声明了Main_class之后是可以用java命令运行的好,接下来说下为什么需要继承SpringBootServletIni...原创 2019-11-29 11:21:59 · 3401 阅读 · 1 评论 -
【合成图片】——Graphics2D
背景在之前的文章当中我们已经说过【二维码】——生成解析,可是现实中需要将二维码合成到海报的指定位置中,这样来扩展我们的产品销售渠道,基于这样的一种需求我们就需要将之前的二维码合成到另外一张海报图片中,所以接下来说一说怎么合成两张图片一、代码/** * @author 2019/6/23 15:32 */@Slf4jpublic class MergeImg { pr...原创 2019-06-23 16:48:00 · 2255 阅读 · 0 评论 -
Dump文件分析
本文主要介绍Dump文件结构,理解Dump文件对于分析线程高占用、死锁、内存溢出等高级问题有非常重要的指导意义。什么是Dump文件Dump文件是进程的内存镜像。可以把程序的执行状态通过调试器保存到dump文件中。Dump文件是用来给程序编写人员调试程序用的,这种文件必须用专用工具软件打开。如何生成Dump文件使用命令:jstack pid可以查看到当前运行的java进程的dump信...转载 2019-09-25 16:00:06 · 3735 阅读 · 0 评论 -
urlEncoder和urlDecoder的作用和使用
背景说明:用rsa加密了一个参数传到前端,前端通过get请求将参数放在url中传给后端,结果后端解密的时候失败了,是因为浏览器会自动对url中的特殊字符进行转义,所以我们需要将数据以一种格式进行编码,然后以相同的格式进行解码,这样就能够得到原始数据。URLEncoder.encode(String s, String enc)使用指定的编码机制将字符串转换为 application/x...原创 2019-08-29 19:22:51 · 918 阅读 · 0 评论 -
在非controller中获取HttpServletRequest (如在service中获取)
HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.currentRequestAttributes()).getRequest();原创 2019-08-12 18:45:35 · 1147 阅读 · 0 评论 -
通过实现ConstraintValidator完成自定义校验注解
链接地址:https://blog.youkuaiyun.com/qq_38439885/article/details/81227063转载 2019-06-28 17:56:25 · 2028 阅读 · 0 评论 -
@JsonFormat、@JSONField、@DateTimeFormat的使用以及其区别
三者出处1、JsonFormat来源于jackson,Jackson是一个简单基于Java应用库,Jackson可以轻松的将Java对象转换成json对象和xml文档,同样也可以将json、xml转换成Java对象。Jackson所依赖的jar包较少,简单易用并且性能也要相对高些,并且Jackson社区相对比较活跃,更新速度也比较快。2、JSONField来源于fastjson,是阿里巴巴的...转载 2019-06-28 14:53:26 · 729 阅读 · 0 评论 -
【微信机器人】——你懂的
最近在脉脉上看到别人发的微信机器人能够定时给女朋友发送微信消息,嘘寒问暖,还能够自动回复,太有趣了,于是就是找到了地址,自己弄了一下,感觉还可以,地址是https://github.com/sfyc23/EverydayWechatps:弄完之后才发现自己根本就没有女朋友。。。。。。。。...原创 2019-06-24 08:48:09 · 582 阅读 · 0 评论 -
【字符转换】——全角和半角转换
背景在我们使用搜狗输入法的时候会有全角和半角的切换,首先看一下这两者的区别吧全角,指一个字符占用两个标准字符位置的状态,也是排字的度量单位,宽度等于所使用的文字的磅数汉。半角,即一个字符占用一个标准字符的位置,排字的量度单位,宽度等于同一磅数全角的一半。全角和半角的使用1、在中文输入法中,切换全角和半角格式的快捷键为SHIFT+空格。2、一般的系统命令是不用全角字符的,只是...原创 2019-06-23 17:29:17 · 12502 阅读 · 0 评论 -
理解Java中的引用传递和值传递
1.基本类型和引用类型在内存中的保存Java中数据类型分为两大类,基本类型和对象类型。相应的,变量也有两种类型:基本类型和引用类型。基本类型的变量保存原始值,即它代表的值就是数值本身;而引用类型的变量保存引用值,"引用值"指向内存空间的地址,代表了某个对象的引用,而不是对象本身,对象本身存放在这个引用值所表示的地址的位置。基本类型包括:byte,short,int,long,char...转载 2019-03-14 18:02:00 · 110 阅读 · 0 评论 -
Hibernate的get和load方法学习
一.Hibernate简介 Hibernate是一个轻量级的持久层框架,是一个全自动的orm框架,为什么这说呢?因为它可以自动生成SQL语句,使得Java开发者可以随心所欲的运用对象编程思维来操纵数据库,从这点来说大大减轻了开发者的负担,在日常生活中大量SQL语句的书写会让开发者焦头烂额,我想这也是开发这套框架作者的初衷吧。但是万事皆有它的利弊,当你得到一些东西的同时总会失去一些东西原创 2017-10-10 15:12:51 · 345 阅读 · 0 评论 -
Java和JS中的随机数生成办法
在日常开发的过程中总是经常用到随机数,无论是java后端开发还是js前端的开发,这里作一个小小的总结。Java:Math.random():系统默认随机数范围 0.0 ~ 1.0 之间的double值(能取到0,但是取不到1)如果需要输出m~n之间的整数,正确的写法是(int)(Math.random()*(n-m+1)+m),注意(int)Math.ran原创 2017-10-30 17:52:29 · 408 阅读 · 0 评论 -
多线程包初识
认识多线程包之前,我们先来说说为什么要有多线程包?意义又在哪里? 我们都知道,在JDK1.5之前,Java中要进行业务并发时,通常需要有程序员独立完成代码实现,当然也有一些开源的框架提供了这些功能,但是这些依然没有JDK自带的功能使用起来方便。而当针对高质量Java多线程并发程序设计时,为防止死蹦等现象的出现,比如使用java之前的wait()、notify()和synchroniz...原创 2018-06-21 10:05:21 · 453 阅读 · 0 评论 -
浅析current包中的高级同步对象-Semaphore
前言:atomic和locks包提供的Java类可以满足基本的互斥和同步访问的需求,但这些Java类的抽象层次较低,使用比较复杂。更简单的做法是使用java.util.concurrent包中的高级同步对象。Semaphore:信号量信号量一般用来表示数量有限的资源,每类资源有一个对象的信号量,信号量的值表示资源的可用数量。在使用资源时,需要从该信号量上获取许可,成功获取许可,资源的可用数-1;完...原创 2018-06-21 17:15:22 · 225 阅读 · 0 评论 -
mybatis和hibernate怎么同时配置两套数据库
之前在面试的时候总是有很多的面试官问我怎么配置两套或者是多套数据库连接,正好之前的项目上也用到两套数据库连接,分别是访问AS400数据库和DB2数据库,接下来就简单说说(以两套为例):第一:jdbc.properties需要配置两套数据源的基本参数#--------------------IBM DB2 Database Config--------------------jdbc.driver...原创 2018-07-06 21:56:19 · 1684 阅读 · 0 评论 -
【密码学】轻松理解“加盐”的原理与java实现
地址:https://blog.youkuaiyun.com/DavidHuang2017/article/details/80283469转载 2018-09-03 16:16:38 · 808 阅读 · 0 评论
分享