![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
JAVA
完美缺陷
书到用时方恨少事非经过不知难
展开
-
redis java client - redisson - 标准的分布式系统下秒杀编程
之前用到redis java client来实现锁解决高并发问题,考虑的是用jedis或者spring 的redisTemplate编程。不过要考虑的小细节比较多,比如:1. 加锁后,某台应用程序不巧down了,还没来得及解锁,即死锁怎么办? 自动解锁,设置expire time2. 多长时间自动解锁? 30秒?1分钟?都不合适3. 30秒,1分钟如果解锁了,业务没处理完怎么办?...原创 2019-11-06 15:38:09 · 361 阅读 · 0 评论 -
系统经常504错误,请求nginx timeout了
系统经常504错误,请求nginx timeout了。 解决方式: 1. Tcp连接数从2000增加到16000。 (是否还可以继续增加,需要运维这边判断一下)2. TcpTime_Wait的释放时间改为30秒,默认2分钟。3. Windows的画面和服务,日志批量10条发送一次。以前是一条就发送一次。4. 运维另准备了一台前台画面和...原创 2019-08-06 09:49:14 · 854 阅读 · 0 评论 -
hashmap容量初始化
创建hashmap对象方法如下:Map<String, Object> map = new HashMap<String, Object>(size);在平时coding中,put元素个数很少,加上偷懒。size往往就忽略不写了。但这次put 15个元素之多..., 我决定要给size赋值了。赋多少呢?hashmap默认容量是16,但是当元素达到0.75...原创 2019-07-08 18:13:40 · 2046 阅读 · 0 评论 -
让Mybatis更好用的一些工具
1. Mybatis GeneratorMybatis代码生成器:POJO,Mapper接口,SQL Map XMLhttp://www.mybatis.org/generator/在生成策略中可以加一些常用的plugins,比如:<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE generatorConfigur...原创 2019-09-12 10:30:37 · 416 阅读 · 0 评论 -
java.lang.ArrayIndexOutOfBoundsException: Coordinate out of bounds!
pdf (多页)生成jpg的时候,报错java.lang.ArrayIndexOutOfBoundsException: Coordinate out of bounds!代码片段: for (int i = 0; i < picNum; i++) { buffer = piclist.get(i); heightArray[i] = _heig...原创 2019-08-30 17:47:47 · 4563 阅读 · 0 评论 -
canvas拖拽电子签章 想盖哪里就拖哪里
背景:现在代码生成合同,并且附带电子章水印,这个功能已经很常见了,前提是你知道电子章水印要盖在哪里。如果是客户上传的合同呢,合同内容千差万别,那章的位置可能是个未知数。下面分析一个手动拖拽电子签章的方法先看效果图:下面是个canvas,左边是合同,可以是pdf等jpg文件;右边是公章,你可以随意拖拽,之后点击确认签章按钮即可,生成盖好章的图片。代码说明:...原创 2019-08-12 18:02:01 · 2875 阅读 · 4 评论 -
sun.misc.Base64Encoder 和 sun.misc.Base64Decoder无法引用问题
java7以前:BASE64Encoder encoder = new BASE64Encoder();BASE64Decoder decoder = new BASE64Decoder();java7之后:import java.util.Base64.Encoderimport java.util.Base64.DecoderEncoder encoder = B...原创 2019-08-07 17:53:39 · 820 阅读 · 0 评论 -
Failed to read HTTP message: org.springframework.http.converter.HttpMessageNotReadableException
ajax提交到Controller时,报错:WARN [org.springframework.web.servlet.mvc.support.DefaultHandlerExceptionResolver] (default task-18) Failed to read HTTP message: org.springframework.http.converter.HttpMessag...原创 2019-08-07 17:41:56 · 3506 阅读 · 0 评论 -
HashMap为什么会出现死循环
问题如果是在单线程下使用HashMap,自然是没有问题的,如果后期由于代码优化,这段逻辑引入了多线程并发执行,在一个未知的时间点,会发现CPU占用100%,居高不下,通过查看堆栈,你会惊讶的发现,线程都Hang在hashMap的get()方法上,服务重启之后,问题消失,过段时间可能又复现了。这是为什么?原因分析在了解来龙去脉之前,我们先看看HashMap的数据结构。在内部,Ha...转载 2019-08-01 14:56:22 · 3897 阅读 · 5 评论 -
为什么选择使用Netty
我们在编写网络服务器和客户端程序时,也就是web应用,就必须和IO打交道。一般,web应用容器或者IO框架帮你封装了实现。I/O模型,数据,网络传输协议,是web应用编程的基础。数据:客户端和服务器之间传输的内容协议:https, http,tcp,udp等I/O,一句话描述不了,慢慢道来:主流的 I/O 模型通常有 5 种类型,理论上,性能是递增的:阻塞式 I/...原创 2019-08-01 09:31:11 · 366 阅读 · 1 评论 -
kafka生产者消息如何分区 和 压缩算法
一、 生产者消息如何分区kafka的消息组织结构是: topic(主题)--partition(分区)--record(消息),topic下的每条record只会保存在某一个partition中。分区的主要作用,就是提供负载均衡的能力,分区是部署在不同节点的机器上,通过加节点来提升系统的吞吐量。在考虑系统的分区策略时,一般有,将消息数据均匀地分配到各个分区上,或者,按具体业务规则实现某...原创 2019-08-28 15:44:42 · 1618 阅读 · 0 评论 -
如何正确使用stackoverflow
做技术的,遇到问题时往往会去stackoverflow搜下有没有类似解答或者思路。如果你能准确给出需要搜索的问题(最好是英文的),请绕道。当你拋出一个技术问题时,最终是否能得到有用的回答,往往取决于你所提问和追问的方式。 —— Eric S. Raymond提问是门技术,也是艺术。我技术不好,也没艺术细菌。在stackoverflow 里搜索了几次,结果告诉我 0 resul...原创 2019-07-30 13:58:54 · 6607 阅读 · 3 评论 -
并发编程(四)多线程设计模式
1.Single Threaded Execution Pattern[同一时刻只允许一个线程操作] 比喻:三个挑水的和尚,只能同一时间一个人过桥,不然都掉河里喂鱼了。 总结:在多个线程同时要访问的方法上加上synchronized关键字。2.Immutable Pattern[变量赋值一次后只能读取,不能改变。利用不变性解决并发问题] 比喻:一...转载 2019-07-05 17:53:38 · 172 阅读 · 0 评论 -
并发编程(三)实战篇 线程池优化 CountDownLatch线程等待 CyclicBarrier线程同步 CompletionService 并行任务
本文来自我的微信公众号 :https://mp.weixin.qq.com/s/Ldq-GsaAMLbHZ6enhwaB7A系统开发中,可能会有这么一系列的操作,来处理数据的重复或者不对称,流程如下:while(条件) {//查询AaList = getAList();//查询BbList = getBList();...原创 2019-07-05 17:43:45 · 706 阅读 · 0 评论 -
并发编程(二)java.util.concurrent 并发容器类 Lock锁 原子类
本文自来我的公众号:https://mp.weixin.qq.com/s/JWoN10ydbVJKET_Xf8NagA下面来了解下Doug Lea老大爷的sdk并发包java.util.concurrent,了解这些常用的实用工具类后可以加深我们对并发编程的印象。SDK concurrent并发包图下面分3块,讲解其中的某些工具类,以及这些类的产生过程。这里并...原创 2019-07-05 17:42:20 · 1149 阅读 · 0 评论 -
并发编程(一)可见性、原子性、有序性 线程生命周期 最佳线程数
本文讲的并发编程,并非指分布式技术中的高并发,采用水平扩展或者垂直拆分实现,将并发流量分到不同的物理服务器上。而是将服务器的服务性能最大化,提升cpu的利用率,从而加快响应速度和增大吞吐量,主要技术包括多线程。并发编程,绕不开的三个核心问题:分工、同步、互斥。分工,指的是如何高效地拆解任务并分配给各个线程;同步,指的是线程之间如何协作;互斥,则是保证同一时刻只允许一个线程访问共享资源;并...原创 2019-07-05 17:37:33 · 131 阅读 · 0 评论 -
缓存计数器
是在一次比较偶然的情况下,可能是页面卡顿或者网络延迟,发生了重复提交事件,原因是:按钮的loading效果没出来。 经过了优化,或者是给按钮加disable,是可以解决这个问题的。上面都是前端页面防止重复提交的解决方法。但是,可能有比较极端的情况下,前端没check住重复提交。那后端呢,用什么办法来防止。可以利用缓存,以redis为例,key可以根据实际业务命名。一、set缓存...原创 2019-07-10 16:15:02 · 825 阅读 · 0 评论 -
Java:String和Date、Timestamp之间的转换
一、String与Date(java.util.Date)互转 1.1 String -> DateJava代码 String dateStr = "2010/05/04 12:34:23"; Date date = new Date(); //注意format的格式要与日期String的格式相匹配转载 2013-06-08 16:52:44 · 426 阅读 · 0 评论 -
backup restore数据库那点事
1.今天从主机数据库那 backup了一份,想挪到本地用。这个数据库日志文件有80G。 奇怪的是,同事restore要了1分钟,而我10分钟,20分钟。。。没反应。无解2. 于是,他从他那a 数据库属性->选项: 恢复模式=简单b 数据库右键-》任务 -》收缩c backup把日志文件改小了然后,我restore这份数据库,很快。15秒,就成功了。ba...原创 2019-08-06 09:40:06 · 236 阅读 · 0 评论 -
BaseDao 的设置
private BaseDao baseDao; public BaseDao getBaseDao() { return baseDao; } public void setBaseDao(BaseDao baseDao) { this.baseDao = baseDao; } set 是由:spring里 baseDao" class="dao原创 2013-02-01 17:03:59 · 583 阅读 · 0 评论 -
jquery的一些小技巧
1. 提交前的validate $("[name='price']").attr("class","{required:true,number:true}"); $("#EditView").validate(); $(":hidden[name='mode']").val("add"); $("#Edi原创 2013-01-16 16:52:11 · 250 阅读 · 0 评论 -
getParameter时之乱码
String nameChn = request.getParameter("name");nameChn = new String(nameChn.getBytes(response .getCharacterEncoding()), "UTF-8");原创 2013-01-16 23:49:03 · 412 阅读 · 0 评论 -
hibernate 里super.getHibernateTemplate().clear() 和 flush()
flush() : 刷新缓存,把内存中的sql文及时的给执行clear() :清空缓存,常常用于,先删除,后增加,再查询的情况。原创 2013-01-24 13:21:40 · 1739 阅读 · 0 评论 -
had objects of type "java.lang.String" but expected signature "org.apache.struts.upload.FormFile"
如果提交时不加 enctype="multipart/form-data“ 就会报错:java.lang.IllegalArgumentException: - argument type mismatch - had objects of type "java.lang.String" but expected signature "org.apache.struts.upload.转载 2013-01-05 12:02:03 · 12821 阅读 · 0 评论 -
web jsp通过classes 读取config properties文件
Properties props = new Properties(); InputStream in = new BufferedInputStream (new FileInputStream(Thread.currentThread().getContextClassLoader().getResource("resource/config.properties").getFile原创 2012-12-25 15:52:29 · 270 阅读 · 0 评论 -
对Spring的IoC和DI最生动的解释
http://www.blogjava.net/hh-lux/archive/2006/12/10/86757.html 首先想说说IoC(Inversion of Control,控制倒转)。这是spring的核心,贯穿始终。所谓IoC,对于spring框架来说,就是由spring来负责控制对象的生命周期和对象间的关系。这是什么意思呢,举个简单的例子,我们是如何找女转载 2013-10-29 20:37:23 · 457 阅读 · 0 评论 -
通过jquery dialog为什么提交不了form表单 和 $("#Form").ajaxSubmit(options) is not a function 的原因
1.jquery dialog为什么提交不了form表单 $("#dialog").dialog({ autoOpen: false, height: 500, width: 800, modal: true, butt原创 2012-12-02 00:45:12 · 3090 阅读 · 0 评论