自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(34)
  • 收藏
  • 关注

原创 BPAAS化相关概念

举一个例子,线下门店最常见的例子是部分租户的定制化需求,我们可以根据不同的业务身份(这块由框架去实现,比如配置文件与扩展点的绑定关系),走不同的扩展点,这样就能实现更丰富的组合。这种就可以由框架去实现,来达到合理利用资源的目的。领域能力是一个组成领域服务的分子,比如新建商品的领域服务内,可能会有新建参数校验领域能力、重复性校验领域能力、业务参数校验领域能力,新建商品领域能力、商品变动后操作其他相关数据的领域能力等等组成。领域能力是由一个扩展点实现的,扩展点的参数、名称是固定的,就类似于接口和实现类的关系。

2023-06-13 22:03:40 416

原创 缓存与数据库一致性之延迟双删策略

延迟双删是什么?怎么解决缓存与持久化数据不一致的问题的?

2023-02-03 08:15:00 2808

原创 如何保证接口的幂等性

如何保证幂等性

2023-02-01 13:27:36 444 1

原创 Spring如何解决循环依赖的

Spring到底是是怎么解决循环依赖的,以及设计三层缓存的原因。

2022-11-29 11:46:35 391

原创 使用Redis解决高并发方案 以及 思路讲解

使用redis解决分布式项目下的高并发秒杀问题,附带思路,以及一步步解决常见、不常见的bug

2022-11-17 16:02:40 5015

原创 微信支付demo

WeixinJSBridge与wx.chooseWXPay的区别。

2021-08-28 16:31:12 190

原创 CountDownLatch解析以及常用方法

CountDownLatchCountDownLatch是一个可以使其他线程等待某些线程执行完毕后再进行执行的工具类。用我个人的理解来说的话,就是它提供了一个await()方法来阻塞当前线程,直到countDown()方法使得计数器递减到0之后,对阻塞队列中线程进行唤醒,来达到一种等待的效果。CountDownLatch的常用方法CountDownLatch(int count); //构造方法,创建一个值为count 的计数器。 ​await();//阻塞当前线程,将当前线程加入阻塞

2020-07-09 16:18:12 1432

原创 自定义注解进行入参校验,附代码及原理浅析

自定义注解项目开放接口的时候通常需要对接口入参进行一定的校验,此文章拿最常见的非空验证进行举例。首先配置一个自定义注解类/** * 接口参数非空校验注解 */@Target(ElementType.METHOD)@Retention(RetentionPolicy.RUNTIME)@Documented@Inheritedpublic @interface ApiParamValidate { String value();}...

2020-07-06 18:03:22 1372

原创 Arrays.asList生成的list无法进行修改原因附源码解析java.lang.UnsupportedOperationException

我们在使用Arrays.asList生成list,再对生成的list进行操作,例如增加元素,删除元素等等会报一个java.lang.UnsupportedOperationException异常,即不支持操作类型异常。之前在文档中有看到一句话asList方法会返回一个由数组生成的固定大小的 List。为什么生成的list是固定长度呢,我们平时在使用arrayList的时候存在一个扩容机...

2020-04-15 18:17:55 768

原创 Arrays.asList的源码解析

在日常开发中我们经常把数组转换成list类型,使用到的方法是java.util.Arrays.asList();但是可能出现的一个问题是结果不是如我们所期盼的,比如以下代码:int[] array = { 1, 2, 3 };List list = Arrays.asList(array);System.out.println(list.size());可能很多朋友都觉得这个li...

2020-04-07 20:10:01 305

原创 jqgrid “加载中” 文字修改

最近的项目用到的是jqgrid作为表格控件,有一个页面因为加载大量的数据,导致可能需要加载一秒到两秒的时间,页面就会展示一个"加载中...",因为字相对于表格来说实在是太小了,所以想动手修改一下这个提示。原本大小大概就是这么大:首先引用jqgrid只需要一个jqgrid的js和css,查阅css发现jqgrid有一个默认的参数配置(对于中文jqgrid)defaults : { ...

2019-08-08 12:09:07 1129

原创 laydate只显示时分 不显示秒的功能实现

场景最近有个需求,需要选择时间段,例如10:00 ~ 12:30。目前的系统前端用的是layui,时间插件自然是选择了laydate。查阅了laydate的api发现并没有直接可以设置去掉秒并且分钟只显示整10的配置。然后就决定动手自己写一下。layui.use('laydate', function(){ var laydate = layu...

2019-07-11 10:17:59 3679 1

原创 关于main方法调用service和tomcat启动后调用service不同结果的思考

今天调用腾讯地图的api的时候,先在main方法中进行了测试,测试通过后写到代码里面,结果发现tomcat运行之后去调用api得到的返回值不一样了。查阅了网上的资料有一部分可能是因为tomcat容器启动导致不能下推消息,需要将线程休眠5到10秒(注意是线程不是进程)。而我出这个问题的原因是tomcat编码格式的问题,导致调用api的时候传参出现问题。所以在代码里面直接加上URLE...

2019-07-03 17:56:26 737

原创 PostgreSQL报错,操作符不存在

最近才接触到一个用PostgreSQL的项目,然后在开发的过程中发现了这样的一个问题。错误: 操作符不存在: character = integer反正还有很多报错的,原因都是类型的转换问题。在mysql中似乎对类型这个概念不是那么敏感,而在PostgreSql中Integer 、Long、Date、String 等等之间转换都会存在操作符不存在的报错。所以在使用非实体进行数据传输的时...

2019-06-24 15:15:46 4001 1

原创 jqgrid表格单行新增,单行编辑,单行删除

前言之前公司使用jqgrid的新增修改都是基于单条数据弹一个框进行插入/修改数据库后,返回表格进行刷新来实现的。最近有一个需求想让直接在页面上进行编辑单条数据,新增直接新增在表格上进行操作然后保存。查阅了jqgrid的api之后找到了如下方法://新增行:$("#jqGrid").jqGrid("addRowData", id, dataRow, "first");...

2019-06-06 11:50:39 2719 1

原创 关于在Mybatis使用Integer与‘‘进行比较的坑

前段时间遇到一个bug,就是修改某一个integer类型的值的时候,除了修改为0 其他的值都可以进行修改。只要想把这个字段改成0 就似乎没有走update这个字段的语句。(前段时间比较忙也就没有记下这个笔记)相信很多朋友在使用Mybatis的时候都会去使用通用一点的insert或者update语句,类似加入以下这种判断来进行复用。<if test="orgName != null ...

2019-05-30 11:14:36 2008 1

原创 Mybatis执行多条语句/批量更新

Mybatis里面实现多条语句通常用在删除主表信息同时删除子表信息。如果利用多次Dao进行执行sql,程序就写起来麻烦并且阅读难度会提升。(删除income表中的信息,同时删除子表income_detail表中的相关信息)delete from income_detail where income_id=#{id}; delete from income where id=#{i...

2019-04-22 11:42:26 5429 1

原创 ajax请求 遮罩不生效解决方案以及引发思考

遮罩不生效 直接设置ajax的beforeSend:loadMask()以及unLoadMask()后遮罩并没有显示出来。debug进行调试,发现遮罩生效了只是在正常请求模式下没有展示出来而已。听起来似乎这句话有点别扭,实际上就是渲染线程被阻塞了。 解决方案 $.ajax({ async: true, //直接设置请求...

2019-03-25 11:36:04 1605 2

原创 关于输入框按回车自动刷新页面的4个解决方案

起因 最近加入了一套回车自动查询的方法,好几个界面都加好了,可是就是有一个界面的回车事件总是不生效并且似乎还自动刷新了整个界面。$("input[name='projectName']").keyup(function(){ if(event.keyCode == 13){ reloadGrid(); }}); 分析问题所在 ...

2019-03-20 10:56:15 5084 5

原创 js运算精度丢失问题

今天出现了一个运算bug,求总计的时候出现精度问题。下面的输入框求和,总计之后得到了这样的数字。现在很多人js加法运算都是调用了这么一套代码。// 加function floatAdd(arg1, arg2) { var r1, r2, m; try { r1 = arg1.toString().split(".")[1].length; } catch (e)...

2019-03-01 14:54:37 977

原创 ArrayList扩容机制及不可变性详解(附源码分析)

前言我们都知道ArrayList是不可变的,但是为什么是不可变的呢?网上能搜索到ArrayList扩容机制是扩容为原本的1.5倍,那是怎么去实现的呢?package org.lyz;import java.util.ArrayList;import java.util.List;public class WINGZINGDemo { public static void ...

2019-02-28 15:13:23 323

原创 java.util.ConcurrentModificationException异常原因(附源码分析)

前言今天看书看到关于for-each相比jdk1.5之前的for循环的优缺点,有一个地方说道"for-each循环中不能使用list.remove()"草草就带过去了,自己不太理解为什么,然后决定自己写一个简单的Demo进行测试一下。public class WingzingDemo { public static void main(String[] args) { ...

2019-02-27 14:36:29 430 1

原创 Lamba表达式简析

Java8的一个新特性:Lamba表达式Lambda 表达式是一种匿名函数 Lambda 表达式没有声明的方法,也没有访问修饰符、返回值声明和名字 当某个方法只使用一次,而且定义很简短,使用lamba替代之尤其有效,这样,你就不必在类中费力写声明与方法了Lambda 表达式 Lambda 表达式通常使用 (argument) -&gt; (body)(type1 arg1, t...

2019-02-25 14:50:03 778

原创 去除集合中重复的元素的3个方法(set newlist 递归)

利用Set去除集合中重复字符串元素首先list和set的一大区别就是set不可包含重复的元素,这样就可以利用这一特性自动筛选掉重复的数据。利用set去重是比较便捷的方法,但是要注意hashset是无序且唯一的,会导致新生成的集合顺序发生改变。 ArrayList list = new ArrayList(); list.add("aa"); list.add("...

2019-02-14 11:15:53 1227

原创 JAVA实现自动弹出公告栏 可设置24小时内不显示

公司因每次停机更新导致用户的操作不便,所以希望我能做一个公告页出来,进行分析大概自己给自己拟定了一下需求。进入首页,如果有存在有效时间内的、状态为正常的公告则自动弹出框进行显示。 弹出框有关闭和24h内不再显示按钮,优化用户已经知晓通知后的使用体验。24小时之后公告继续弹出。 当有新的公告时,就算用户设置24小时不弹出也需要弹出以保证公告的传达性。 用户可以手动点击首页查看公告按钮进行查...

2019-02-12 10:53:54 4742 1

原创 Excel导入时,日期格式的判断 isCellDateFormatted(Cell cell)不成功原因

在文件excel文件上传之后,进行单个单元格的值进行处理以及验证。对单元格的处理如下:public Object getCellValue(Cell cell) { Object value = null; DecimalFormat df = new DecimalFormat("0"); // 格式化为整数 SimpleDateFormat sdf = new Simpl...

2019-01-18 17:39:09 15650 3

原创 java新建文件夹以及文件规范

上传文件时,尽量不要选择项目路径以免重新打包后文件丢失。上传文件的命名,最好以时间格式命名方便通过日志进行查找,后面加上4位随机数保证文件名的不重复。 java例子如下:Random random = new Random();SimpleDateFormat df = new SimpleDateFormat("yyyyMMddHHmmssSSS");String exce...

2019-01-07 16:42:37 863

原创 ArrayList和LinkedList的区别、扩容机制以及底层实现

ArrayListArrayList的底层实现为数组存储在内存中,线程不同步。可通过数组下标的形式进行查找,所以在查询方面的效率较为出色,常用在查询较多的情景下。LinkedListLinkedList的底层实现为链表形式,也为线程不同步。而链表的底层也决定了它在查询方面不如数组底层的ArrayList而在指定位置插入等修改操作下,性能优于ArrayList。...

2018-11-08 13:26:07 11508

原创 Integer的数值比较所引发的思考

IntegerInteger是int的包装类,int则是java的一种基本数据类型 //Integer 类在JDK1.0的时候就有了,它是一个类,是 int 基本数据类型的封装类Integer变量必须实例化后才能使用,而int变量不需要 //如1中,Interger为包装类而int为基本数据类型Integer实际是对象的引用,当new一个Integer时,实际上是生成一个指针指向此对象...

2018-10-08 11:07:02 257

原创 MySql数据库实现自定义排序

1

2018-09-14 13:49:01 2173

原创 Java实现简单爬虫

爬虫爬虫可以理解为一个从第三方网站获取其数据的技术。关于爬虫语言博主是只是对Java有一定浅显的见解,对于很多语言不敢造次。在这里说一下关于爬虫常用的语言。最常用的爬虫语言是python,python有完善的爬虫框架,获取网页数据十分方便,而爬虫时候很多时候都会出现较长时间的延迟和等待,python的多线程、进程模型比较完善所以多数人都会用python进行爬虫。本文简单聊一下J...

2018-08-09 19:25:13 478 1

原创 java中的super关键字 以及构造方法调用时间

super关键字可以理解为父类的,即调用父类的变量,方法等等。1、直接引用 和this类似,super直接指向父类,来取得父类中的成员,super.xxx来引用。 2、与父类中的成员变量或方法重名时class Country { String name; void value() { name = &quot;中国&quot;; }}class Ci...

2018-08-01 21:30:05 372

原创 Linux系统搭建nexus私服

私服的概念通常开发java项目需要较多的jar包,而从maven中央仓库进行下载,访问外国网站速度通常较慢并且可能没有所需要的第三方jar包,所以多数公司都会搭建属于自己公司的私服。1.下载https://www.sonatype.com/download-oss-sonatype 我下载的版本是nexus-2.14.9-01-bundle.zip 目前有一些公司使用的...

2018-07-27 10:16:59 484

原创 SQL语句的四大分类

SQL语句分类如大家所知 sql语句被分为四大类:数据定义语言DDL数据查询语言DQL数据操纵语言DML数据控制功能DCL相信大多数人都对SQL有一定的了解 我这里就不细讲具体内容 简单介绍一下具体内容 方便理解数据定义语言DDL(Data Ddefinition Language)CREATE,DROP,ALTER 主要为以上操作 即对逻辑结构等...

2018-07-26 15:23:18 18566 3

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除