- 博客(18)
- 收藏
- 关注
原创 记一次踩坑:ASCII码为160的不间断空格(non-breaking space)的处理
在处理某次excel导入的线上问题过程中,用户反馈某条数据的两个数字内容在导入之后的数据不正常,该数据的这两个字段值未导入库。(库中为默认的0)拿到该用户导入的excel进行本地debug,发现在String.valueOf()转字符串的时候这两个参数的值发生了NumberFormartException(至今我也没明白为啥会抛出这个异常)。忽略这个问题,在debug过程中发现该数字字符串的最后有一个空格符,该空格符在char数组中的显示其ASCII码为160,这就觉得不对劲,正常的空格的ASCII码应
2022-04-02 18:22:17
1544
原创 深入理解JAVA虚拟机(补充中)
深入理解JAVA虚拟机一、Java类加载机制1.1 类加载过程1.2 类加载器总结1.2.1 类加载器1.2.2 类加载器初始化过程1.3 双亲委派机制一、Java类加载机制1.1 类加载过程 Java虚拟机是由C++实现,java进程在启动时会创建一个引导类加载器的实例(C++实现),C++会调用Java代码创建Jvm启动器实例sun.misc.Launcher,该类由引导类加载器加载,该类负责创建其他类加载器。整个类加载的主要流程如下: ![类加载过程](http://assets.proces
2020-09-02 14:49:01
185
1
原创 面试题:在ArrayList和LinkedList集合中都插入随机的100000个数,从中找出某个数返回,哪个效率高?
ArrayList底层封装了可变数组,LinkedList底层是单向链表的数据结构,数组在内存空间中是连续的,其读取的时候,会使用到CPU的缓存机制,即预读连续的一部分数据进行运算,效率很高。单向链表的话它在内存中是分散存在,由指针相连,所以遍历集合的时候无法向数组一样高效的利用CPU的缓存机制,所以ArrayList在遍历的效率上是比LinkedList高。...
2020-07-17 14:35:20
1009
原创 SpringBoot项目通过Maven打包时相关参数的设置
首先,在正式项目放到生产环境中时,可能会有相关需求,就是将部分配置文件不打包到项目的启动jar包中,方便运维同事修改配置文件中的一些敏感配置,比如数据库连接,数据库用户名密码等。这里我们首先要来说下SpringBoot项目在加载配置文件时,读取配置文件的优先级顺序。是先搜索可执行jar包同级目录下是否存在application.yml(或者application.properties)文件,再搜索...
2019-07-16 16:51:02
2721
原创 Springboot整合activemq(二):收发具有优先级的队列方法
在使用mq作为中间件做异步消息推送时,可能会遇到一个场景,就是消息在消费后执行一系列的逻辑到一半,突然遇到异常或者是断电等之类问题,这时消息在mq的队列中已经出队列,而正常逻辑没有执行完就异常终止,这样就可能会造成数据的缺失和数据的不完整,如何解决这个问题?其实挺简单的,就是在消息进入消费者消费的同时做一个记录,再在逻辑执行完成后再删除这条记录或者是改变这条记录的状态,同时,在项目初始化时或者是执...
2018-12-21 23:14:23
3851
原创 工作总结:异步消息处理,插入数据与查询数据解决方案
在我目前的项目中,接口调用通过MQ收发json报文消息来执行接口的调用,遇到了个问题,就是在发消息之前落地的数据需要在接收消息之后调用的接口中需要再次查询,于是出现了一个问题,查询时查不到那条数据,分析原因:接收消息后的查询动作,因为网络延迟等原因,在数据库数据落地之前进行,于是造成了落地与查询的顺序颠倒。解决方案:收到消息后延时调用接口(无法根本解决此问题),但是还是提一下。添加依赖:...
2018-11-08 17:39:17
1283
原创 Springboot整合Dubbo(三):consumer注册到zookeeper上,调用时接口注入为null的问题
解决了与注解配置事物的问题后,又遇到了一个坑,通过@Reference注解注入接口调试项目时发现接口注入显示为null,但是查看dubbo-admin上的消费者已经注册到了zookeeper上,但是为什么引用不到呢?查看了很多大神们的博文,发现这个是因为springboot初始化时加载配置的先后顺序有关,扫描@Reference的步骤是在类加载之后,也就是说consumer注册到zookeeper...
2018-11-04 17:43:32
3456
原创 Springboot整合dubbo(二):服务启用事务(注解实现)所会遇到的坑
在前两天的工作中,遇到了个问题,现在手上在做的系统,从架构到目前的开发都是我自己独立完成,在项目构建时我选择使用了Springboot2.0.6+dubbo作为微服务的基本框架,但是在做的过程中发现有对数据库进行增删改操作,所以在这块接口地方我使用了事务管理,通过springboot的注解模式(懒得写配置文件),但是随后发现,项目正常启动,但是在dubbo-admin上看不到服务注册到zookee...
2018-11-04 17:30:43
2816
1
原创 Springboot整合dubbo(一):搭建一个springboot + dubbo的微服务
现在越来越多的公司开发项目中使用了springboot作为搭建服务的框架,因为springboot集成了一套完整项目所需要的基本的开发工具的jar包,无需再像之前开发一个spring项目中需要引入各种配置,只需要引入简单的几个配置就能达到项目的启动,大大减少了开发周期,使开发越来越便捷,而dubbo是一款国内使用较多的SOA架构开发的中间件,其主要由三个部分组成:生产者,消费者,注册中心。注册中心...
2018-11-03 19:56:16
80274
18
原创 乱序算法: 将整数集合中的元素按一定规则打乱排序,N个相等的数之后从后方不同的数中插入该位置
最近在工作中遇到个打乱算法,需求是一个对象集合,经过一定规则排序后,需要将相同类型的n个元素中插入一个不同类型的元素(从后方元素中查找),网上也没搜索到相应的算法,所以经过一个晚上的思考,最终将此算法安排了。这里我将该算法分享出来,如果有性能更好的算法,也请大伙一起做个分享,也顺带当做笔记记录下来。这里我已整数集合为例子:import java.util.ArrayList;imp...
2018-10-21 17:58:27
1823
原创 对于“集群”概念的理解和“负载均衡”(概念及实现方式)
现实生活中对于“群体”的概念我的理解为:具有一定数量,物种相同,具有相同或相似属性。在服务端开发中所谓的“集群”也可以这么理解,一般我们讲将某个模块做集群来提高并发量,实际上也就是这个意思,比方说我们将一个服务做“集群”,大部分公司的处理就是在多台服务器上部署多个相同的服务,它们处理的业务逻辑都是相同的,这在流行的SOA架构中主要思想,比方一台服务器能够同时处理500个请求,那么多台...
2018-08-16 16:43:51
351
原创 Java解析excel表格中的图片的方式
我们要用java解析首先得在项目中引入解析excel的相关包,我们这里使用的是apache的poi-3.12.jar来做开发。 首先获取excel文件,获取文件的方式这里就不细说了,获取到文件后,将文件转成文件输入流FileInputStream fis = new FileInputStream(new File(pathname));//pathname文件路径 ...
2018-08-16 15:12:40
12805
13
原创 解决部分浏览器下easyUI加载异常问题
最近在开发一个文件上传的功能时,遇到一个很坑爹的问题,就是目前项目做的页面前端使用的是YUI框架,没找到详细的API文档,尤其是文件上传时需要用到弹窗功能,没法解决文件上传后后台返回前端时的数据处理,无奈之下只能另辟蹊径,启用了easyUI来做前端页面,由于浏览器使用的是IE(开发人员都知道IE是有多恶心,所以我选择的是比较旧版本的easyUI,所以官网上的有些案例无法使用),使用...
2018-08-16 11:10:56
1706
原创 设计模式详解之工厂模式
要讲工厂模式,我们得先从一般模式的程序设计讲起,我们一般设计一个程序,通常会将几个类对其相同的属性方法抽象出来放在一个接口中去实现,PML图如下:这里我定义了一个接口Vehicle来表示交通工具,里面实现了一个print()方法,下面有三个类Car、Ship、Airplane实现了print()方法来打印一串字符串,来表示当前对象的类型。具体代码实现比较简单这里就不写了。如果要在主类中调用...
2018-06-29 15:28:26
1101
原创 设计模式详解之单例模式(二)
前面说到了单例模式写法的分析,这篇文章打算写下单例模式的几种写法。 第一种:懒汉式,线程不安全 懒汉式实现了懒加载,也就是将对象的创建放在执行getInstance方法中,只有在调用该方法时才会创建对象,所以我们可以这么实现,首先按单例模式的写法写出一个类:public class SingleObject { //创建 SingleObject 的一个对象 p...
2018-06-29 09:46:51
172
原创 设计模式详解之单例模式(一)
单例模式是一种常用的软件设计模式顾名思义就是在一个程序中只存在一个实例,在它的核心结构中只包含一个被称为单例的特殊类。通过单例模式可以保证系统中,应用该模式的类一个类只有一个实例。下面我们通过几个方面来分部解析单例模式的实现方式。 第一步:构造方法私有化 我们在设计一个程序类时(也就是对象),在每次想要执行类中的方法时我们就需要创建一个对象,下面代码我们来看看普通类的设计方式:...
2018-06-28 11:16:58
152
原创 使用git将本地项目提交至GitHub
最近因为自己在写一些项目demo,为了方便在工作之余写项目能很好地继续完成demo,于是我将自己本地的项目提交到了GitHub上,方便代码的管理。这里记录下使用git将项目提交至GitHub上的步骤。 首先要在你的电脑上安装上git,具体的安装方法网上有很多,这里就不细说。 安装完毕后,我们就可以着手将本地项目提交至GitHub上的操作了。第一步,空白处...
2018-06-27 15:55:33
150
转载 SpringBoot集成activeMQ项目实例(一)
JMS是J2EE中重要的一个规范,这个规范在企业级应用中的应用十分广泛,在做实例之前先简单介绍下JMS的基本概念和它的模式、应用场景、消息的消费。 1.基本概念: JMS是java的消息服务,JMS的客户端之间可以通过JMS服务进行异步的消息传输。 2.消息模式: 两种模式:Point to Point(点对点)/Publish/Su...
2018-06-22 14:31:43
5510
3
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人