JAVA基础
呆呆_小茗
梦想总是遥远,一步一脚印,只会越来越近
展开
-
Java中BigDecimal的详细介绍和使用
前言: 借用《Effactive Java》这本书中的话,float和double类型的主要设计目标是为了科学计算和工程计算。他们执行二进制浮点运算,这是为了在广域数值范围上提供较为精确的快速近似计算而精心设计的。然而,它们没有提供完全精确的结果,所以不应该被用于要求精确结果的场合。但是,商业计算往往要求结果精确,这时候BigDecimal就派上大用场啦。比较大小//前提为a、b均不能为nullif(a.compareTo(b) == -1){ System.out.prin...原创 2021-01-21 15:16:28 · 320 阅读 · 0 评论 -
JAVA常用正则表达式
java 手机号正则表达式原创 2020-12-17 11:09:21 · 148 阅读 · 1 评论 -
解决idea导入gradle项目,报找不到符号问题
前言:idea导入gradle项目,运行项目,结果报错或者导包找不到…问题:解决:勾选上,即可原创 2020-11-18 16:15:57 · 3122 阅读 · 4 评论 -
拦截机制中Aspect、ControllerAdvice、Interceptor、Fliter之间的区别详解
在项目的开发中,在某些情况下,我们需要对客户端发出的请求进行拦截,常用的API拦截方式有Fliter,Interceptor,ControllerAdvice以及Aspect。上图是spring中的拦截机制,如果出现异常的话,异常的顺序是从里面到外面一步一步的进行处理,如果到了最外层都没有进行处理的话,就会由tomcat容器抛出异常。下面我将详细的解释这四个拦截方式的不同。因为只是演示就不是所有的使用了日志记录。这里相关的依赖自己可以去https://mvnrepository.com/下载,我就..转载 2020-07-14 14:49:28 · 912 阅读 · 0 评论 -
Spring Boot整合Security+Swagger2踩坑记录,Swagger2无法访问首页
问题: 访问不了Swagger的页面有可能出现的原因:1.Security将访问拦截掉了2.给拦截器拦截了3.Swagger返回的结果,被自己定义的拦截器or其他方式给篡改了数据,导致无法正常显示,也就无法得到想要的结果解决:1.放开访问 //忽略swagger访问权限限制 .antMatchers( "/userlogin", ..原创 2020-07-08 10:20:18 · 2363 阅读 · 0 评论 -
异常:Class net.sf.cglib.core.DebuggingClassWriter overrides final method visit
异常:java.lang.VerifyError: class net.sf.cglib.core.DebuggingClassWriter overrides final method visit.(IILjava/lang/String;Ljava/lang/String;Ljava/lang/String;[Ljava/lang/String;)V原因: 我做的是SpringBoot的项目,在SpringBoot的架构中已经存在了cglib的jar包。这时候如果再在POM文件中引入...原创 2020-06-30 15:05:06 · 2987 阅读 · 0 评论 -
Java 对Entity(PO) VO DTO理解
Entity(PO): 每个属性都对应数据库的某个字段,完全是一个符合Java Bean规范的纯Java对象。VO 分两种: 1.(Value Object) : 通常用于业务层之间的数据传递。 2.(View Object) :主要对应展示界面显示的数据对象,用一个VO对象来封装整个界面展示所需要的对象数据。DTO(Data Transfer Object): 对Entity 的一个映射,减少或者增加数据的请求参数的个数...原创 2020-06-19 10:09:13 · 687 阅读 · 0 评论 -
关于POI sheet API 获取行数不正确的问题
getLastRowNumint getLastRowNum()获取工作表上的最后一行注意:Excel和Apache POI可能仍将之前具有内容并稍后设置为空的行计为行,因此此方法的结果将包括此类行,因此返回值可能会更高超出预期!返回值:此工作表中包含的最后一行(从0开始);如果不存在,则为-1getPhysicalNumberOfRowsint getPhysicalNumberOfRows()返回物理定义的行数(不是工作表中的行数)返回值:此工作表中实际定义的行数以上的官网文.原创 2020-06-18 14:53:18 · 2911 阅读 · 0 评论 -
后台管理: CRUD单表操作,参数校验,统一规范
前言: 在对管理后台,一般都有对单表的CRUD操作,这些操作,为了业务安全,都牵扯到一个参数校验的问题,所以需要统一一下规范,好处在于,减少代码的臃肿,让代码更清晰,讲重点只需要关注业务即可,也减少后续维护成本….使用技术点: javax.validation或者org.springframework.util.AssertCRUD使用javax.validation示例:1.定义AddParam UpdateParam 两个注解,用于后续的参数校验import ...原创 2020-06-11 11:54:41 · 434 阅读 · 0 评论 -
Spring Boot 启动 出现异常The bean xxx could not be injected as a xx.xxxx because it is a JDK dynami
@Resourceprivate IUserMapper userMapper;分析:如上代码会报错,这是因为程序中有一个UserMapper,所以当命名为userMapper会首先查找UserMapper这个类而不是IUserMapper这个类解决: 修改变量命名, 启动则正常,注入时的变量命名很重要...扩展: 注解@Resource与@Autowired的区别...原创 2020-06-09 14:05:40 · 6123 阅读 · 1 评论 -
WEB知识: 同源策略介绍以及规避方法
所谓同源策略(Same origin policy),其实就是一种约定,它是浏览器最核心也最基本的安全功能,如果缺少了同源策略,则浏览器的正常功能可能都会受到影响。可以说Web是构建在同源策略基础之上的,浏览器只是针对同源策略的一种实现。何谓同源策略:同源即是指域名、协议与端口相同,不同源的客户端脚本(JavaScript、ActionScript)在没明确授权的情况下,不能读写对方的资源。详细情况见下图:同源策略的目的:它的目的是为了保证用户信息的安全,防止恶意的网站窃取数据。试想一下转载 2020-06-09 09:50:50 · 472 阅读 · 0 评论 -
Spring Boot中@Valid和@Validated的区别和使用总结
@Valid和@Validated的区别总结1. @Valid:@Valid注解用于校验,所属包为:javax.validation.Valid。① 首先需要在实体类的相应字段上添加用于充当校验条件的注解,如:@Min,如下代码(age属于Girl类中的属性):@Min(value = 18,message = "未成年禁止入内") private Integer age; ② 其次在controller层的方法的要校验的参数上添加@Valid注解,并且需要传入BindingRes转载 2020-06-08 11:36:32 · 927 阅读 · 0 评论 -
JAVA 处理Mysql唯一约束,将异常信息自定义处理,返回给前端
前言: 有时候在数据库表中,对某列设置了唯一约束, 在对某条数据,进行修改或者新增时候,程序中会抛出异常:SQLIntegrityConstraintViolationException简单处理: try { //修改or新增sql }catch (Exception e){ Throwable cause = e.getCause(); if (cause instance...原创 2020-06-02 10:19:27 · 3551 阅读 · 1 评论 -
springboot打成jar后获取classpath下文件异常解决
前言: 写了一个工具类,要读取classpath下的文件,使用 Resource resource = new ClassPathResource(filePath); File file = resource.getFile();在本地测试,没发现问题,但是将项目打包成jar包后运行,发现报错Caused by: java.io.FileNotFoundExcep...原创 2019-07-10 21:39:42 · 3532 阅读 · 2 评论 -
阿里开源分布式事务解决方案: FESCAR
开源地址:https://github.com/alibaba/fescar什么是FESCAR?一种分布式事务解决方案,具有高性能和易用性的微服务架构。微服务中的分布式事务问题让我们想象一下传统的单片应用程序。其业务由3个模块构成。他们使用单个本地数据源。当然,本地事务将保证数据的一致性。微服务架构的情况发生了变化。上面提到的3个模块被设计为3个不同数据源之上的3个服务...翻译 2019-01-11 10:26:10 · 4450 阅读 · 3 评论 -
MyBatis排序时使用order by 动态参数注意事项
ORDER BY ${columnName}这里MyBatis不会修改或转义字符串。重要:接受从用户输出的内容并提供给语句中不变的字符串,这样做是不安全的。这会导致潜在的SQL注入攻击,因此你不应该允许用户输入这些字段,或者通常自行转义并检查。#{}相当于jdbc中的preparedstatement${}是输出变量的值简单的说就是#{}传过来的参数带单引号'',...原创 2018-04-19 20:28:04 · 9612 阅读 · 0 评论 -
spring的Aspect,Filter、Interceptor、ControllerAdvice区别
1、filter,这是java的过滤器,和框架无关的,是所有过滤组件中最外层的,从粒度来说是最大的。配置方式,有直接实现Filter+@component,@Bean+@configuration(第三方的filter)2、interceptor,spring框架的拦截器配置方式,@configuration+继承WebMvcConfigurationSupport类添加过滤器。3...原创 2018-11-01 13:43:19 · 1491 阅读 · 0 评论 -
.d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named
1.出现原因之一:在controller上加了@RequestMapping注解后,在方法上mapping注解,必须是POST或GET,不然后启动项目的时候就会出现2.解决方法上的mapping注解指定请求类型,即可!!!...原创 2019-10-22 16:30:00 · 12147 阅读 · 5 评论 -
js自定义格式化函数
/**************************************时间格式化处理************************************/Date.prototype.format = function(fmt) { var o = { "M+" : this.getMonth()+1, //月份...原创 2019-04-09 16:53:09 · 511 阅读 · 0 评论 -
WEB基础之innerHTML添加标签后class触发js的问题
先说下事件绑定:可以了解一下比较新的jQuery版本中的的on方法,基本上可以取代之前习惯用的事件绑定的方法了。然后用下面这样的方法就可以给动态添加的dom绑定事件了,思路就是将新生成的元素类的事件委托给一开始就存在的父容器进行处理。假设动态插入的div类名是.child,他们的父容器id是#parent$("#parent").on('click','.child',function(){}原创 2017-06-22 10:46:04 · 1240 阅读 · 0 评论 -
WEB基础,select触发事件,获取option自定义属性的值
<select id="cpid" onchange="gradeChange()"> <option value="乐" id="1">游玩</option> <option value="玩" id="2">游玩</option&原创 2017-06-13 13:31:58 · 4115 阅读 · 0 评论 -
WEB基础之默认选中redio,select
redio的默认选中第一种:普通的判断默认选中 <input type="radio"value="旅游" <c:if test="${2>1}">checked</c:if>/>第二种: 循环遍历的判断默认选中<c:forEach items="${cartypeList}" var="type"原创 2017-06-13 13:42:15 · 401 阅读 · 0 评论 -
jsp页面加载css文件不生效
问题: 有时候大家修改了css文件里的样式,但是刷新浏览器,利用工具看样式的时候,发现样式根本没加载或者说没更新,其实这出现的问题就是缓存的问题解决: 如何避免发生这种事,其实很简单,只需要每次请求css文件的时候,加个请求时间后缀就可以达到目地.front/css/myorder.css?v=" />核心就是这句代码: ?v=原创 2017-07-06 14:41:52 · 8848 阅读 · 9 评论 -
在js中如何遍历List集合,并且动态渲染下拉列表数据
后台: List 存的是数据 存放在model中,List下拉列表的数据,存在model中 我的需求: 页面加载完毕,要显示数据,并且下拉列表要有选项值 思路: 在js中动态渲染下拉列表,我得到的是一个List,我首先要遍历List,取到每个值,然后将每个值,添加到一个数组里,遍历数组,动态渲染 var array = new Array();原创 2017-07-06 16:20:43 · 11957 阅读 · 0 评论 -
在jsp中if else的使用方法
采用这两个标签来座if else 判断 ,注意要先导入JSTL标签库 我是男生 我是女生原创 2017-07-07 12:55:24 · 4531 阅读 · 0 评论 -
web前段--js/jquery定义键盘回车事件导致页面刷新的问题(踩坑)
后台管理早写好了,运营过来跟我说,这个搜索能不能修改一下,直接用回车键来搜索,不希望每次都要去点击搜索按钮,后来我去改了下触发事件,发现怎么改都是刷新页面的效果,根本就没去ajax调取搜索接口,百度了一番,发现原来是form表单的原因.原因:当form表单只有一个input框时,按下回车键,会自动提交表单,并且不会把你刚输入的关键字传递给服务器端.修改思路:1.去掉表单2.不要让表单中只有一个文本...原创 2018-04-16 17:13:27 · 799 阅读 · 0 评论 -
记录: JAVA冒泡排序(Bubble Sort)
常规写法: int[] arr = {2,3,1,8,6}; for (int i = 0; i < arr.length; i++) { for (int j = 0; j < arr.length -1; j++) {// -1代表,防止越界 if (arr[j] > arr[j+1]) { int temp = arr[j]; ...原创 2018-12-07 17:57:03 · 197 阅读 · 0 评论 -
[java]String.format的用法和详解
原贴找不到地址了,这是后转载的地址:https://blog.csdn.net/cunjue/article/details/51959864 名称 说明 Format(String, Object) 将指定的 String 中的格式项替换为指定的 Object 实例的值的文本等效项。 Format(String, array<>[]()[]) 将指定 Stri...转载 2018-06-25 18:09:31 · 2213 阅读 · 0 评论 -
Integer比较不要使用==使用equals()或Integer.intValue()
昨天在开发中遇到一个问题,定义了两个Integer变量,暂且定义为Integer a; Integer b;这两个值由前端赋值并传到后台,前台传的是a = 12345, b = 12345, 但我在后台比较的时候 if (a == b),却返回false,好无语啊,不都是12345吗?为什么返回false,后来改为equals(),返回true,但其中的有些端倪还不太清楚,现总结下: ...转载 2018-04-19 20:22:27 · 6748 阅读 · 4 评论 -
JAVA中的特殊注解的含义
特殊注释:1 TODO表示需要实现,但目前还未实现的功能2 XXX勉强可以工作,但是性能差等原因3 FIXME代码是错误的,不能工作,需要修复TODO: + 说明:如果代码中有该标识,说明在标识处有功能代码待编写,待实现的功能在说明中会简略说明。FIXME: + 说明:如果代码中有该标识,说明标识处代码需要修正,甚至代码是错误的,不能工作,需要修复,如何修正会...转载 2019-03-26 10:59:09 · 209 阅读 · 0 评论 -
分布式&高并发&多线程概念理解
1.什么是分布式?分布式更多的一个概念,是为了解决单个物理服务器容量和性能瓶颈问题而采用的优化手段。该领域需要解决的问题极多,在不同的技术层面上,又包括:分布式文件系统、分布式缓存、分布式数据库、分布式计算等,一些名词如Hadoop、zookeeper、MQ等都跟分布式有关。从理念上讲,分布式的实现有两种形式:水平扩展:当一台机器扛不住流量时,就通过添加机器的方式...原创 2019-10-10 10:40:18 · 259 阅读 · 0 评论 -
WEB基础之拼接标签的onclick传参问题
.一般使用onclick传参2.使用append或者innerHTML进行拼接语句的时候,绑定onclick事件并且传参,单个参数''+v.cartypename+''3.使用append或者innerHTML进行拼接语句的时候,绑定onclick时间并且传参,多个参数document.getElementById("div1").innerHTML += "";原创 2017-06-29 11:21:35 · 5049 阅读 · 0 评论