Java
文章平均质量分 53
谁动了我的bug
不为失败找理由,只为成功找方法。
展开
-
toString()、String.valueOf、(String)强转,有啥区别?
1、基本类型(1)基本类型没有toString()方法(2)推荐使用(3)无法强转(String)是标准的类型转换,将Object类型转为String类型,使用(String)强转时,最好使用instanceof做一个类型检查,以判断是否可以进行强转,否则容易抛出ClassCastException异常。需要注意的是编写的时候,编译器并不会提示有语法错误,所以这个方法要谨慎的使用。2、封装类型(1)toString(2)String.valueOf()(3)封装类型也无法强转3、n翻译 2022-01-18 17:04:20 · 263 阅读 · 0 评论 -
一个由“ YYYY-MM-dd ”引发的严重问题
代码如下:package tset;import java.text.DateFormat;import java.text.SimpleDateFormat;import java.util.Calendar;import java.util.Date;public class Teat { public static void main(String[] args) { Calendar calendar = Calendar.getInstance(); calendar.set原创 2022-01-13 16:01:44 · 244 阅读 · 0 评论 -
SpringBoot联合Poi导出Excel表格
最近接了一个外包项目,其中一个功能是按条件查询数据后展示表格,并能按条件查询后导出数据到excel表格中,他这个项目的数据量不大,项目又要的紧,我就按最简单的方式实现了此功能,重要代码如下所示:设备数据实体类package com.bootdo.system.domain;import java.io.Serializable;import java.util.Date;/** * 设备数据实体类 * @author xhz * */public class DevmonitorData原创 2021-11-02 19:02:53 · 528 阅读 · 0 评论 -
SpringBoot + Redis 解决海量重复提交问题
在实际的开发项目中,一个对外暴露的接口往往会面临很多次请求,我们来解释一下幂等的概念:任意多次执行所产生的影响均与一次执行的影响相同。按照这个含义,最终的含义就是 对数据库的影响只能是一次性的,不能重复处理。如何保证其幂等性,通常有以下手段:1、数据库建立唯一性索引,可以保证最终插入数据库的只有一条数据。2、token机制,每次接口请求前先获取一个token,然后再下次请求的时候在请求的header体中加上这个token,后台进行验证,如果验证通过删除token,下次请求再次判断token。3、悲观锁转载 2021-10-28 17:17:34 · 266 阅读 · 0 评论 -
bootstraptable行内显示图片
devinfo.html如下:<!DOCTYPE html><html lang="zh_CN" xmlns:th="http://www.thymeleaf.org" xmlns:shiro="http://www.pollix.at/thymeleaf/shiro"><meta charset="utf-8"><head th:include="include :: header"></head><body class="gr原创 2021-10-19 15:54:53 · 1971 阅读 · 0 评论 -
9种常见For 循环优化方式
我们都经常使用一些循环耗时计算的操作,特别是for循环,它是一种重复计算的操作,如果处理不好,耗时就比较大,如果处理书写得当将大大提高效率,下面总结几条for循环的常见优化方式。首先,我们初始化一个集合 list,如下:List list = new ArrayList();方法一:最常规的不加思考的写法优点:较常见,易于理解缺点:每次都要计算list.size()for (int i = 0; i < list.size(); i++) { System.out.println(lis原创 2021-09-27 09:54:25 · 623 阅读 · 0 评论 -
isEmpty 和 isBlank 的用法区别,你都知道吗?
isEmpty系列StringUtils.isEmpty()是否为空. 可以看到 " " 空格是会绕过这种空判断,因为是一个空格,并不是严格的空值,会导致 isEmpty(" ")=falseStringUtils.isEmpty(null) = trueStringUtils.isEmpty("") = trueStringUtils.isEmpty(" ") = falseStringUtils.isEmpty(“bob”) = falseStringUtils.isEmpty(" bob原创 2021-08-31 09:35:29 · 4261 阅读 · 0 评论 -
支付宝转账到个人账户
pom.xml配置如下:<!-- https://mvnrepository.com/artifact/com.alipay.sdk/alipay-sdk-java --> <dependency> <groupId>com.alipay.sdk</groupId> <artifactId>alipay-sdk-java</artifactId> <version>4.10.119.ALL</v原创 2021-07-27 17:59:28 · 1140 阅读 · 3 评论 -
事务注解 @Transactional 失效的3种场景及解决办法
Transactional失效场景介绍第一种Transactional注解标注方法修饰符为非public时,@Transactional注解将会不起作用。例如以下代码。定义一个错误的@Transactional标注实现,修饰一个默认访问符的方法@Componentpublic class TestServiceImpl { @Resource TestMapper testMapper; @Transactional void insertTestWrongModi转载 2021-07-22 10:09:53 · 402 阅读 · 0 评论 -
别再乱打日志了,这样才是定位 bug 打日志的方式!
日常工作中,程序员需要经常处理线上的各种大小故障,如果业务代码没打印日志或者日志打印的不好,会极大的加大了定位问题的难度,使得解决bug的时间变长了。对于那种影响比较大的bug,处理时间是分秒必争的,慢几秒处理完,可能GMV就哗啦啦的掉了很多。一个程序员是否优秀,其中一个判断维度就是:处理线上问题是否快狠准,而其中日志是帮我们快速定位问题的绝佳手段。下面分享一下笔者平时在业务系统里记日志的一些手法和习惯,希望对大家有一些帮助。请统一日志格式日志格式最好是统一的,即方便查看定位问题又方便统计收集。我转载 2021-07-20 12:05:05 · 239 阅读 · 0 评论 -
Spring Boot 接入支付宝,实战来了!
支付宝推出了新的转账接口alipay.fund.trans.uni.transfer(升级后安全性更高,功能更加强大) ,老转账接口alipay.fund.trans.toaccount.transfer将不再维护,新老接口的一个区别就是新接口采用的证书验签方式。使用新接口要将sdk版本升级到最新版本,博主升级时最新版本是4.10.97。接下来看集成步骤。1.将支付宝开放平台里下载的3个证书放在resources下面2.写支付宝支付的配置文件alipay.propertiesalipay.ap转载 2021-07-19 11:13:12 · 285 阅读 · 0 评论 -
The requested profile “pom.xml“ could not be activated because it does not exist
错误描述:在执行maven install的时候有时会出现 The requested profile “pom.xml” could not be activated because it does not exist 的错误解决办法:在项目中单击右键 --属性 --maven,将此处清空保存即可原创 2021-07-02 14:39:34 · 2076 阅读 · 0 评论 -
几百万数据量的Excel导出会内存溢出和卡顿?那是你没用对方法!
一. 简介导出是后台管理系统的常用功能,当数据量特别大的时候会内存溢出和卡顿页面,曾经自己封装过一个导出,采用了分批查询数据来避免内存溢出和使用SXSSFWorkbook方式缓存数据到文件上以解决下载大文件EXCEL卡死页面的问题。不过一是存在封装不太友好使用不方便的问题,二是这些poi的操作方式仍然存在内存占用过大的问题,三是存在空循环和整除的时候数据有缺陷的问题,以及存在内存溢出的隐患。无意间查询到阿里开源的EasyExcel框架,发现可以将解析的EXCEL的内存占用控制在KB级别,并且绝对不会内转载 2021-06-28 10:16:56 · 1826 阅读 · 0 评论 -
判断两个list是否有相同值
/** * 判断两个list是否有相同值 * @param list1 list * @param list2 list * @return boolean */ private boolean isSame(List<String> list1,List<String> list2){ if(list2.isEmpty()) { return true; } list1 = new ArrayList<>(list1);...原创 2021-03-23 16:20:56 · 1909 阅读 · 0 评论 -
电商产品设计:后台营销功能模块设计-砍价活动(二)
砍价是诞生在社交电商的时代,是社交电商最常见的几种玩法之一,目的都是低成本获客,在完成拉新及留存的作用的基础上,实现粉丝裂变增长的商业目标。一、什么是砍价活动,为什么要做,有什么好处?1、提高用户活跃度用户都希望能够花最少的钱得到更高质量的产品,商家推出砍价活动后,用户为了得到商品势必会将砍价链接发给好友,让对方帮助砍价,在这个过程中用户活跃度也会明显上升。2、促进交易达成砍价活动能够帮助商家增加商品销量,减少商品库存积压,微信的用户群体非常巨大,已经达到了10个亿的规模,这样的一个.原创 2021-03-22 15:19:12 · 870 阅读 · 0 评论 -
电商产品设计:后台营销功能模块设计-拼团活动(一)
提起拼团,大家自然而然地想到拼多多,在流量红利已经触底的情况下,以拼团这种新模式杀出一条血路。页面上的“发起拼团”或“去拼团”按钮大家都看的到,但是否真正思考过其背后的逻辑。接下来我将结合最近一周做的拼团活动,细说拼团背后的逻辑,按拼团的整个流程来讲解。一、创建拼团活动拼多多的所有商品都有拼团模式,淘宝、京东或其他平台只有部分商品有拼团模式,两种后台设计肯定不同。我此次负责的项目是后者,故以此种类型谈如何创建拼团活动。创建拼团活动的过程中,至少包含以下元素:拼团活动时间、成团有效时间、成原创 2021-03-22 14:59:19 · 982 阅读 · 1 评论 -
在SSM框架中出现Field error in object ‘xxx‘ on field ‘XXX‘: rejected value [];错误
实体类属性这么定义的private int stockCount;//库存public int getStockCount() { return stockCount;}public void setStockCount(int stockCount) { this.stockCount = stockCount;}前端代码如下:<div class="form-group"> <label class="col-sm-3 control-label">原创 2021-03-20 14:08:12 · 10544 阅读 · 0 评论 -
如何将本地Jar包添加到本地的Maven仓库
一、问题描述项目开发过程中,经常遇到项目缺少依赖的问题。这些Jar包无法从远程仓库中下载,究其原因有以下几点:(1)依赖的Jar包是与该项目关联的公司其他项目(2)依赖的Jar包是其他公司开发,并未发布到远程仓库(3)网络原因导致从远程仓库中无法下载Jar包二、解决方案需要将依赖的Jar包从其他途径下载到本地,然后添加到本地仓库。这样在每次构建项目就能够从本地加载到依赖的Jar包。三、操作方法1.打开命令行cmd窗口,执行mvn install这里以“chinapayse原创 2021-02-01 16:16:08 · 1133 阅读 · 0 评论 -
An exceptionCaught() event was fired, and it reached at the tail of the pipeline.
今天系统里面继承了redis就报了下面的错误:解决办法:我们在自己的SocketHandler 里面重写一个exceptionCaught 方法public class BinaryWebSocketHandler extends SimpleChannelInboundHandler<BinaryWebSocketFrame> { @Override public void exceptionCaught(ChannelHandlerContext ctx, Thro原创 2021-01-31 14:52:55 · 7657 阅读 · 0 评论 -
提取根证书失败AlipayRootCert Is Invalid
问题解决:当项目打为jar时,支付宝证书不能存储在classes目录下最开始我的配置信息如下所示:ali.pay.appCertPath=classpath:appCertPublicKey_2021001166627070.crtali.pay.alipayCertPath=classpath:alipayCertPublicKey_RSA2.crtali.pay.alipayRootCertPath=classpath:alipayRootCert.crt运行项目测试支付功能时,一直报原创 2021-01-18 10:37:22 · 3548 阅读 · 2 评论 -
SpringBoot解决跨域的几种方案
方法一:注解在Spring Boot 中给我们提供了一个注解 @CrossOrigin 来实现跨域,这个注解可以实现方法级别的细粒度的跨域控制。我们可以在类或者方添加该注解,如果在类上添加该注解,该类下的所有接口都可以通过跨域访问,如果在方法上添加注解,那么仅仅只限于加注解的方法可以访问。 @RestController @RequestMapping("/user") @CrossOrigin public class UserController {原创 2021-01-07 15:27:45 · 1949 阅读 · 0 评论 -
如何使用Java技术实现微信公众号海报裂变功能
海豚精灵:https://www.whhtjl.com;优课GO:https://mgo.whhtjl.com;张新民;财务报表分析我们先看效果图:项目地址:https://mgo.whhtjl.com我这里后端使用的SpringBoot,Maven项目,代码如下:<!--公众号(包括订阅号和服务号) --><dependency> <groupId>com.github.binarywang</groupId> <.原创 2020-12-16 12:28:00 · 1223 阅读 · 0 评论 -
如何设计缓存系统:缓存穿透,缓存击穿,缓存雪崩解决方案分析
设计一个缓存系统,不得不要考虑的问题就是:缓存穿透、缓存击穿与失效时的雪崩效应。缓存穿透缓存穿透是指查询一个一定不存在的数据,由于缓存是不命中时被动写的,并且出于容错考虑,如果从存储层查不到数据则不写入缓存,这将导致这个不存在的数据每次请求都要到存储层去查询,失去了缓存的意义。在流量大时,可能DB就挂掉了,要是有人利用不存在的key频繁攻击我们的应用,这就是漏洞。解决方案有很多种方法可以有效地解决缓存穿透问题,最常见的则是采用布隆过滤器,将所有可能存在的数据哈希到一个足够大的bitmap转载 2020-09-29 14:55:18 · 205 阅读 · 0 评论 -
SpringBoot注解大全,收藏一波!!!
一、注解(annotations)列表@S****pringBootApplication:包含了@ComponentScan、@Configuration和@EnableAutoConfiguration注解。其中@ComponentScan让spring Boot扫描到Configuration类并把它加入到程序上下文。@Configuration等同于spring的XML配置文件;使用Java代码可以检查类型安全。@EnableAutoConfiguration自动配置。@Comp..转载 2020-09-29 14:36:50 · 609 阅读 · 0 评论 -
BigDecimal进行乘除运算时注意事项
一.做乘法(精度问题)优课GO业务要求:购卡用户付款成功后,将卡费的30%奖励给直接推广员,保留2位小数,从不在舍弃(即截断)的小数之前增加数字。package test;import java.math.BigDecimal;import java.math.RoundingMode;public class Test { public static void main(String[] args) { String money="0.1";//卡费 BigDecimal rea原创 2020-09-11 10:20:51 · 1401 阅读 · 0 评论 -
jsoup解析与爬虫
大家先看哈下面的网页:现在有个需求,项目组要求我们爬取到“自专业名称”,直接上代码。 /** * 获得子专业名称 * @param url * @return */ public static String getSonSubjectName(String url){ String sonSubjectName=null; try { if(url!=null&&!"".equals(url.trim())){ // 创建httpClient原创 2020-08-28 19:04:03 · 230 阅读 · 0 评论 -
java开发微信模板消息推送
看到这里时,我猜大家已在网上翻阅了各种资料,废话不多说,直接上重点,大家可以点击下列链接去官方查询资料。https://developers.weixin.qq.com/doc/offiaccount/Message_Management/Template_Message_Interface.html关于使用规则,请注意:1、所有服务号都可以在功能->添加功能插件处看到申请模板消息功能的入口,但只有认证后的服务号才可以申请模板消息的使用权限并获得该权限;2、需要选择公众账号服务所处的原创 2020-08-28 18:37:59 · 615 阅读 · 0 评论 -
com.alibaba.fastjson.JSONException: syntax error, expect {, actual error, pos 1
用ajax发送JSON数据,其中数据类型为List,出现com.alibaba.fastjson.JSONException: syntax error, expect {, actual error, pos 1这种类型的错误一般是数据格式问题,首先我们必须清楚JSON的数据格式JSON中,对象用{ }包围,映射用“:”表示,集合或数组用[ ]包围比如一个Java类的JSON格式为{ 名称1:值1,名称2:值2 }一个List的JSON格式为[ ..原创 2020-08-03 16:05:24 · 17120 阅读 · 2 评论 -
解决memcached存入list<bean>的问题
今天用memcached存取List<bean>的时候,遇到问题,存入String是正常的,但是存入bean的时候失败,在网上找了各种资料,有的人说memcached不能存List<bean>,有的人说用HashMap,我最后找到的解决方法是使用fastjson,将List<bean>序列化,存入memcached,取出时再反序列化,成功了,具体实现:1. 下载fastjson的jar包,我用的是最新的fastjson-1.1.28.jar2. 序列化存入的代码原创 2020-08-01 22:58:16 · 447 阅读 · 0 评论 -
java制作二维码并返回base64
我这里后端使用的SpringBoot,Maven项目,代码如下:<!-- 二维码 --><!-- https://mvnrepository.com/artifact/com.google.zxing/core --><dependency> <groupId>com.google.zxing</groupId> <artifactId>core</artifactId> <version>2.1原创 2020-07-18 08:52:24 · 752 阅读 · 1 评论 -
lineNumber: 61; columnNumber: 18; 值为 "after" 的属性 "order" 必须具有列表 "BEFORE AFTER " 中的值。
今天使用Mybatis,配置了XML文件后,启动时候报错,错误信息如下:xml中的insert配置如下:<!-- 添加用户 --> <insert id="addUser" parameterType="com.ltf.entity.User" useGeneratedKeys="true" keyColumn="id" keyProperty="id"> <selectKey keyProperty="id" resultType="java.la..原创 2020-05-14 10:55:35 · 467 阅读 · 0 评论 -
Map与Xml互转
package com.ltf.utils;import java.io.ByteArrayInputStream;import java.io.StringWriter;import java.io.UnsupportedEncodingException;import java.util.ArrayList;import java.util.HashMap;import java.util.LinkedHashMap;import java.util.List;import java.原创 2020-05-08 22:14:00 · 503 阅读 · 0 评论 -
Spring Boot使用@Scheduled实现定时器任务
首先,我们需要搭建一个基于SpringBoot的项目,然后我们要在Application中设置启用定时任务功能@EnableScheduling。启动定时任务package com.ltf;import org.springframework.boot.SpringApplication;import org.springframework.boot.autoconfigure.S...原创 2020-03-15 16:07:22 · 725 阅读 · 0 评论 -
只因少写一个判空,我的代码上线后炸了!
代码炸了!前一段时间,项目紧急迭代,临时加入了一个新功能,具体功能就不描述了,反正就是业务功能:用户通过浏览器在系统界面上操作,然后Java后台代码做一些数据的查询、计算和整合的工作,并对第三方提供了操作接口。当晚凌晨上线,本系统内测试,完美通过!第二天将接口对外提供,供第三方系统调用,duang!工单立马来了很明显,后台代码炸了!拉了一下后台日志,原来又是烦人的空指针异常 N...转载 2020-02-26 12:10:39 · 213 阅读 · 0 评论 -
SpringBoot整合Redis
maven价包:<parent> <!-- 依赖管理,引入以后在声明其它dependency的时候就不需要version --> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactI...原创 2020-01-15 09:53:52 · 244 阅读 · 0 评论 -
JSONObject,JSONArray,JSONString之间转换问题
最近,我在做一个视频上传功能,其中一个需求是:待视频上传成功之后需要获取当前视频的时长,由于我们的视频是放在第三方平台上,所以我们需要调用第三方平台接口来获取我想要的数据,API如下:接口名称:批量获取视频的时长和大小接口URLhttp://api.polyv.net/v2/video/{userid}/info接口说明获取多个视频的时长和大小请求方式G...原创 2019-12-05 15:49:26 · 1980 阅读 · 0 评论 -
今日霜降
秋深山有骨,霜降水无痕。天地供吟思,烟霞入醉魂。今日1时20分我们迎来霜降节气这是秋季的最后一个节气气候由凉转寒万物随寒气增长而逐渐萧瑟“九月中,气肃而凝,露结为霜矣”此时,若一件薄衣般的霜白悄然无息地披在大地身上在最后一缕秋风和一抹残阳中冬季的脚步声渐行渐近曾经活跃的昆虫垂头不食进入冬眠曾经雀跃的飞鸟蛰伏等待下一个无霜期...转载 2019-10-24 09:17:33 · 239 阅读 · 0 评论 -
lombok @EqualsAndHashCode 注解的影响
通过查询官方文档得知如下信息:1. 此注解会生成equals(Object other) 和 hashCode()方法。 2. 它默认使用非静态,非瞬态的属性 3. 可通过参数exclude排除一些属性 4. 可通过参数of指定仅使用哪些属性 5. 它默认仅使用该类中定义的属性且不调用父类的方法 6. 可通过callSuper=true解决上一点问题。让其生成的方法中调用父类的方法。...原创 2018-02-26 10:21:08 · 494 阅读 · 0 评论 -
java.lang.NoClassDefFoundError: org.apache.ibatis.transaction.TransactionFactory
抛java.lang.NoClassDefFoundError: org.apache.ibatis.transaction.TransactionFactory错误如果你曾经或正在使用MyBatis或iBatis,那么,根据java.lang.NoClassDefFoundError: org.apache.ibatis.transaction.TransactionFactory这个异常就...原创 2018-02-06 11:28:47 · 1475 阅读 · 0 评论 -
List转Json数组
java--List转换成json格式方法一首先导入jar包,json-rpc-1.0.jarpublic class List2Json {public static JSONArray ProLogList2Json(List<ProgramLog> list){JSONArray json = new JSONArray();for(ProgramLog...原创 2018-02-06 11:29:03 · 12117 阅读 · 0 评论