
JAVA
花辞树oo
最是人间留不住,朱颜辞镜花辞树
展开
-
Mysql 查询优化成本的计算,索引一定快?
在一些Mysql的面试题中,一定会问到Mysql优化的问题,可能大部分人都会回答,加索引就可以解决,查询慢的问题,那么接下来别人可能又会问到,那索引是不是加的越多越好呢,或者说索引是不是什么字段都可以加,什么字段不应该加呢,又或者说为什么有些查询明明加了索引还是慢呢?今天来说说mysql是如何计算查询优化的成本的。一.计算全表扫描的代价计算全部扫描需要2个重要的数据:1.聚簇索引占用的页面数2.表中的记录数这两数使用 SHOW TABLE STATUS LIKE ‘single_table’ (s原创 2020-12-06 13:17:11 · 566 阅读 · 2 评论 -
Mybatis plus 开发时区的问题, serverTimezone 参数
今天在进行与数据库交互的时候,数据时间出现时区的问题,很多人都说在mysql连接的地方加上 serverTimezone=UTC,就可以解决时区的问题,但是我看我自己的加上了也没啥用,没有解决时区的问题解决方法:&serverTimezone=GMT%2B8加上就解决时区的问题了。...原创 2020-12-04 11:43:02 · 3261 阅读 · 1 评论 -
If you insist running as root, then set the environment variable RUN_AS_USER=root before running thi
今天在linux上面使用 nexus 的时候,在启动的时候出现了上述的错误,在进行百度之后,发现问题也没有解决,在细心的查看下,发现是很多博客的博主都写的错误,导致后续的人也出现了错误,先看看解决的方法吧,大家都是两种方法去解决,一种的临时方法 一种是永久的方法,临时的方法设置过后,关闭客户端再次就不能用了临时方法:export RUN_AS_USER=root 后在执行 ./nexus start看下永久的方法:这是截的图,大部分都是一模一样的,错的都是一致的,这复制进去能有效?空格呢?ex原创 2020-12-02 17:44:28 · 365 阅读 · 0 评论 -
JavaScript 页面跳转传参数乱码问题
今天在写页面的时候发现了页面乱码的问题。大致就是传参数是中文,所有导致直接乱码的问题,大致分享一下,这里是我调整的代码,参数如果不是中文是没有问题的,但是如果是中文那么就乱码,接下来我们来看看是那种乱码?这种的乱码我还是第一次见到,根本不知道这么去进行解码,最后在查看 w3c 文档的时候,发现了解决的方法:https://www.w3school.com.cn/jsref/jsref_unescape.asphttps://www.w3school.com.cn/tiy/t.asp?f=js原创 2020-11-24 11:01:33 · 487 阅读 · 0 评论 -
Pig项目学习一,启动Nacos 出错问题
首先最新的pig项目中的nacos 配置的版本是 1.4的版本,我不知道为啥要使用这个版本来做注册中心,官网的稳定版本推荐的使用 1.3.1版本,Nacos 官网 : https://nacos.io/zh-cn/docs/quick-start.html项目中确用了1.4.0版本导致源码启动到处出错误。先来看下完整的错误2020-11-22 09:59:33,547 INFO The cluster resource is initialized2020-11-22 09:59:35,60原创 2020-11-22 13:27:03 · 8372 阅读 · 1 评论 -
Linux 部署安装禅道教程
一,首先进入官网查看官网推荐的下载安装教程:https://www.zentao.net/book/zentaopmshelp/76.html注意下载的操作系统:根据自己所需看官网的文档.二.下载禅道的包进行安装部署https://www.zentao.net/dynamic/zentaopms12.4-80248.html注意一下细节问题,自己系统操作系统版本等问题1.查看当前操作系统:cat /etc/redhat-release2.查看系统是多少位的(64 还是32)unam原创 2020-11-18 17:58:11 · 1843 阅读 · 0 评论 -
JAVA8与9之间的类加载机制的更新
在JAVA与JAVA9都保留了,三层加载,这一点是没有更改的,还是为了保证类只加载一次的原则,大致的更改就是 把 ExtClassLoader 移除,替换成了PlatformClassLoader 加载器,并且 加载方式也更改了,引入了模块化的加载方式,接下来,我们来看看图中的对比加载的不同:左边的是 JAVA8的加载方式:当类进行加载时,会优先去找父类加载器,如果父类没有那么就会在去向上加载,一直加载到引导类加载器的时候,如果还是没有那么就会向下加载,也就是这时候才会加载到系统类加载器去进行加载。原创 2020-11-18 17:47:48 · 340 阅读 · 0 评论 -
org.springframework.web.HttpMediaTypeNotAcceptableException: Could not find acceptable representatio
Spring boot 项目中进行下载文件的时候出现的异常,当前异常出现之后,文件还是能够下载,这就很奇怪,所有我们得去解决这个问题,不能看着问题不管,接下来我们来看看完整的异常:org.springframework.web.HttpMediaTypeNotAcceptableException: Could not find acceptable representation at org.springframework.web.servlet.mvc.method.annotation.Abstr原创 2020-11-13 09:54:58 · 3190 阅读 · 0 评论 -
Thereisnogetterforpropertynamedidinclasscom.baomidou.mybatisplus.core.conditions.query.QueryWrapper
Mybatis plus 异常。全异常为:Caused by: org.apache.ibatis.reflection.ReflectionException: There is no getter for property named 'id' in 'class com.baomidou.mybatisplus.core.conditions.query.QueryWrapper'从这些异常的信息可以看出,是调用 QueryWrapper 查询 的时候,少了id 属性,也可以说是我们调用 查询的原创 2020-11-10 11:22:10 · 3839 阅读 · 0 评论 -
java.lang.ClassCastException: java.util.ArrayList cannot be cast to com.github.pagehelper.Page 异常
使用 com.github.pagehelper 分页插件 出现上述的错误大致意思就是类型转换错误使用的是 spring boot 项目要以加载下面的依赖: <dependency> <groupId>com.github.pagehelper</groupId> <artifactId>pagehelper-spring-boot-starter</artifactId>原创 2020-11-10 10:37:08 · 2882 阅读 · 0 评论 -
Activiti工作流 安装部署教程
Activiti 业务流程管理(BPM)和工作流系统Activiti是一个业务流程管理(BPM)和工作流系统,适用于开发人员和系统管理员。其核心是超快速,稳定的BPMN2流程引擎。它易于与 Spring集成使用。工作流可以用于系统中的审批等流程,如果熟悉责任链模式和状态模式的就应该很清楚工作流是怎么样去操作的,今天说下Activiti 6.0 的安装部署教程首先环境一致:Activiti 6.0Tomcat8.0jdk1.8这里大家先把环境都装好,装好之后,给Activiti 6.0.zi原创 2020-10-27 22:18:32 · 412 阅读 · 0 评论 -
JAVA8中Optional 使用详解
前言:1965年,英国一位名为Tony Hoare的计算机科学家在设计ALGOL W语言时提出了null引用的想法。ALGOL W是第一批在堆上分配记录的类型语言之一。Hoare选择null引用这种方式,“只是因为这种方法实现起来非常容易”。虽然他的设计初衷就是要“通过编译器的自动检测机制,确保所有使用引用的地方都是绝对安全的”,他还是决定为null引用开个绿灯,因为他认为这是为“不存在的值”建模最容易的方式。很多年后,他开始为自己曾经做过这样的决定而后悔不迭,把它称为“我价值百万的重大失误”原创 2020-10-20 11:27:38 · 547 阅读 · 0 评论 -
Spring Boot 读取 resources 的模板文件
Spring Boot 项目中读取 xlsx 模板文件,用于导出的,之前在项目中的框架用的是mvc,所有当时读取使用 Request去读取模板文件,没有问题,但是在Spring boot中读取到的确实 C盘的地址,不是当前项目中的地址:HttpServletRequest().getServletContext().getRealPath("/")这样子在boot项目中不能读取到当前项目的路径,所有就换了一种方式Resource resource = new ClassPathResource(""原创 2020-10-19 18:34:07 · 1152 阅读 · 0 评论 -
mybatis xml错误: include with refid ‘com.newwebla.user.mapper.RoleMapper.Base_Column_List‘
今天启动项目的时候报错了一个mybatis xml的错误,记录一下,完整的日志org.apache.ibatis.builder.IncompleteElementException: Could not find SQL statement to include with refid 'com.newwebla.user.mapper.RoleMapper.Base_Column_List'这里其实是发现了一个很基础的错误,可以从日志的提示看出来错误的地方‘com.newwebla.user.m原创 2020-10-16 10:15:37 · 582 阅读 · 0 评论 -
Spring Boot 前后端分离部署 @CrossOrigin 部署没有效果的问题
在使用 Spring Boot 做服务端,做前后端分离的项目时候,难免会出现跨域的问题,这里我使用spring 自带注解去解决跨域问题@CrossOrigin 在每个类上面加上这个注解,或者使用 CorsFilter 去解决,这里我说一下使用 @CrossOrigin等一些问题,@CrossOrigin(origins = “") 这里在本地访问是没有一点问题,可以进行跨域访问,但是一部署到服务器上面就立马抛出了 跨域访问的异常,访问就是不能通过,在一查资料发现,这里就是问题的原因,在设置后,发现成功了原创 2020-10-12 11:19:27 · 572 阅读 · 0 评论 -
IDEA安装jclasslib 插件查看字节码详解
查看JAVA字节码有两种方式一种是使用 jdk命令 javap,还有一种就是 使用 插件了,打开IDEA 找到这个页面,搜索 jclasslib 然后进行安装下载,下载好了后进行重启就好了,那接下来就是使用他了,先随便找个java文件写几个变量首先使用 进行编译当前文件:进行编译成Class文件然后我们就可以是用jclasslib进行查看当前字节码了找到class文件,然后点击打开点击选中就可以看到字节码文件了打开是这样的页面,大家要需要关注 Methods就可以了点击打开这就原创 2020-09-30 11:39:37 · 1035 阅读 · 0 评论 -
JVM运行时数据区学习一:程序计数器(PC寄存器)
我们先来看看运行时数据区包括哪些东西:今天总结一下 运行时数据区的程序计数器(Program Counter Register):每一个Java线程都有一个程序计数器来用于保存程序执行到当前方法的哪一个指令,对于非Native方法,这个区域记录的是正在执行的VM原语的地址,如果正在执行的是Natvie方法,这个区域则为空(undefined)。此内存区域是唯一一个在VM Spec中没有规定任何OutOfMemoryError情况的区域。可以理解为,记录下一步指令,然后发送给执行引擎,然后给cpu原创 2020-09-30 11:25:47 · 161 阅读 · 0 评论 -
Spring Boot Maven聚合工程 打包部署教程
Spring Boot 给聚合工程 打包部署,这里打jar包进行部署,首先等保证父子工程能正常运行,依赖都能加载,不会造成maven之间循环依赖等问题,如图从上面的图来看,就会发生循环依赖的问题,这样子编译时就会发现错误,一定要注意,避免发生循环依赖的问题,A模块 引入了B模块的依赖,B模块引入了 C模块,那么A模块也间接的引入了C模块的依赖,而这时 C模块又引入了A模块,这时候就会出现循环依赖等错误,maven加载的时候就会把这个错误给提示出来,这时候是启动不起来的,所以大家要注意的一点,还有就是M原创 2020-09-29 09:57:16 · 2352 阅读 · 5 评论 -
spring boot 配置 jackson 时间解析不起作用详解
在spring boot 项目中,我们有时候要放回Date 类型的时候,返回出去的值是一段数据而不是时间,这里我们使用 jackson 做序列化,反序列化,在yml配置文件中加入: spring: jackson: time-zone: GMT+8 date-format: yyyy-MM-dd HH:mm:ss serialization: write-dates-as-timestamps: false这样启动应该是可以原创 2020-09-28 09:27:03 · 2533 阅读 · 0 评论 -
JVM学习一:类加载最重要的两种机制(双亲委派机制,全盘委托负责机制)
首先来说说Classloader,类加载包括:引导类加载器,扩展类加载器,系统类加载器,自定义加载器他们分别加载的范围,已经分类,主要分为两类加载器,一种是不是java编写的,一种是java编写的引导类加载器: 不是java编写的 c编写的加载器,所有我们在代码中是获取不到的,是最顶层的加载器:这里就是获取到的就是null,范围:java javax,sun下的包都是用他进行加载扩展类加载器: 负责 rt.jar下面类的加载器 ExtClassloader系统类加载器:自己创建的类的加载器 app原创 2020-09-25 09:55:12 · 465 阅读 · 1 评论 -
JApiDocs 无需额外注解的 SpringBoot API文档生成工具使用
JApiDocs 用于生成项目接口文档,无需额外注解使用生成,先来看看生成长啥样子吧这就是生成的样子了,感觉还不错,现在我们来快速入门吧,https://japidocs.agilestudio.cn/#/zh-cn/?id=japidocs-143 接口文档支持JDK:1.8+添加maven 依赖:<dependency> <groupId>io.github.yedaxia</groupId> <artifactId>japidoc原创 2020-09-22 10:02:34 · 568 阅读 · 0 评论 -
HTTP URL文件下载名称带有[]特殊字符无法下载的问题
这个问题主要出现在,服务端请求下载文件的时候,所下载的文件名字带有特殊字符,并没有编码到的问题,比如 xxx[xxxx].jpg,当我编码过后的名字还是带有[] 特殊字符,在查看资料后找到了问题的原因。https://www.w3school.com.cn/tags/html_ref_urlencode.html这是w3c列出来的所有 编码的特殊字符,找到我们所需要的查看从这个文章中我们就知道了URL编码是这么样子去实现的,最后修改我的代码如下:String s = “/1592536467原创 2020-09-21 22:06:29 · 2109 阅读 · 0 评论 -
阿里网盘内侧地址,快来获取吧
填好一下信息然后就等待就好了https://survey.aliyun.com/apps/zhiliao/_o6XQjioM今天还收到了阿里的app设计稿,可以看一下了原创 2020-09-18 11:42:40 · 568 阅读 · 0 评论 -
Kodo 对象存储 WEB 直传(JAVA)实现
这里介绍一下Kodo是 七牛云对象存储的一种称呼,一般来说,公司基本做文件存储,选择的服务器就这些,七牛云比较便宜,所有可以试着对接一下接口,先看下官方文档吧https://developer.qiniu.com/kodo/manual/1277/product-introduction大家都看下,基本概念等一下介绍,这样大家对Kodo 有一些认识,并且对接起来也好快速上手,看完之后,点击快熟入门,一直按照下面的来就可以了,先试着跑一编,接下来我们就来对接他的接口,先来看看直传的文档下面的接口实原创 2020-09-18 10:04:24 · 332 阅读 · 0 评论 -
OSS JavaScript客户端签名直传(JAVA实现服务端详解)
使用 OSS 上传到文件服务器做文件存储,还是一样通过 客户端直传,服务端只需要做一个签名的加密,这样子既可以做到安全性,又降低了服务端的压力:OSS 客户daunt直传官方文档点击查看官方文档,大致的实现流程可以看下,签名对于我的理解是防止 篡改性,保证安全性这上面的流程大家看下,应该就懂了,就是签名,上传,然后接收回调信息,然后告诉客户端成功了,这样子就是一个上传成功的实现了,先来体验一下OSS上传OSS官方demo大家点击上去体验一波,这里面我集合了COS ,七牛云的文件存储,大家都可以原创 2020-09-17 11:00:27 · 1056 阅读 · 1 评论 -
腾讯云COS对象存储 Web 端直传实践(JAVA实现)
使用 腾讯云COS对象存储做第三方存储云服务,把一些文件都放在上面,这里主要有三中实现方式:第一种就是在控制台去设置好,直接上传文件。第二种就是走服务端,上传文件,就是说,上传文件是从服务端去上传上去的,这样子对于服务端的压力是非常大的,特别是IM系统,用户发送的图片,文件如果都走服务端然后在上传文件到COS的话,用户访问量一旦多,会非常难控制第三种就是web 直传,在客户端上传文件到 COS,服务端只是生成一个token,然后验证之后就上次到 COS上面,这样子上传文件就不需要在服务端处理,那么能减原创 2020-09-16 15:19:59 · 1841 阅读 · 4 评论 -
使用 Nexus 搭建 Maven 私服 详细教程
使用 Nexus 搭建一个maven的私服,用来存一下公司的内部jar包,先来看看 Nexus的介绍吧:Nexus是一个强大的Maven仓库管理器,它极大地简化了自己内部仓库的维护和外部仓库的访问。利用Nexus你可以只在一个地方就能够完全控制访问 和部署在你所维护仓库中的每个Artifact。Nexus是一套“开箱即用”的系统不需要数据库,它使用文件系统加Lucene来组织数据。Nexus 使用ExtJS来开发界面,利用Restlet来提供完整的REST APIs,通过m2eclipse与Eclips原创 2020-09-15 15:38:05 · 779 阅读 · 0 评论 -
exception is java.lang.ArrayStoreException: sun.reflect.annotation.TypeNotPresentExceptionProxy
spring boot 项目启动报错,先看看启动报错的日志信息:org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'requestMappingHandlerMapping' defined in class path resource [org/springframework/web/servlet/config/annotation/DelegatingWebMvcConfigu原创 2020-09-13 17:33:15 · 3964 阅读 · 0 评论 -
spring boot 依赖注入失败问题
今天在看项目中的代码时,发现了一个问题。那就是依赖注入失败,所有注入的类都是null,这种错误,在我反复dug的情况下面,或者是在不断的去查询资料的情况下,终于发现了这一问题,也不是很厉害的问题,也是一个写代码的小问题,但是也是很难发生的问题。因为当我去调用其他的方法的时候,他不会注入失败,我们来看下问题的原因看上面的代码,其实是很难发现有啥问题的,或者说没有啥问题,这是一个控制层的代码,但是问题就出在了,方法上面,私有变量,导致 jdk动态代理无法帮助我们创建对象,所以一直注入失败。改成public就原创 2020-09-10 17:37:30 · 1908 阅读 · 0 评论 -
Cannot resolve com.sun:tools:1.8.0 错误解决
首先我们看错误:Cannot resolve com.sun:tools:1.8.0主要是整合 shiro 的时候 用 redis 做 RedisSessionDAO 这里就会需要这个jar,并且版本必须是3以上的,低版本的jar虽然不报错,但是会发现 方法会少,网上很多说,什么这个jar在本地jdk引入不了,很硬核的引入进去,我也没有证实过,因为感觉不太对,借下来看我解决的方法 <dependency> <groupId>org.crazyc原创 2020-09-08 17:00:14 · 16751 阅读 · 3 评论 -
Linnux下消费 kafka 报错zookeeper is not a recognized option 解决方法
sh bin/kafka-console-consumer.sh --zookeeper localhost:2181 --topic sports_test --from-beginningzookeeper is not a recognized optionOption Description ------原创 2020-09-02 14:49:30 · 449 阅读 · 0 评论 -
java.lang.ClassCastException: class com.sun.proxy.$Proxy111 cannot be cast to class xxxxxxx.mapper.x
java.lang.ClassCastException: class com.sun.proxy.Proxy111cannotbecasttoclassxxxxxxx.mapper.xxxxxxxxxxxxxxxxxxMapper(com.sun.proxy.Proxy111 cannot be cast to class xxxxxxx.mapper.xxxxxxxxxxxxxxxxxxMapper (com.sun.proxy.Proxy111cannotbecasttoclassxxxxxxx.ma原创 2020-08-21 17:41:34 · 1368 阅读 · 3 评论 -
JAVA 实现WebSocket推送数据到数据大屏页面
上篇文章,说到做一个大数据可视化的数据大屏,这里我用了开源的项目去进行二次开发,然后进行数据对接就好,不知道的可以看看数据大屏实例接下来,我们要考虑的是这么把数据进行对接的问题了,起初我是使用 jquery 的ajax进行数据对接,但是你会发现一个问题,就是数据更新的时候你这么处理?刷新页面再次请求服务端接口,这里我听到一个朋友说,他们之前开发的时候,前端是通过ajax轮询去调用服务端接口的,这样看似是解决问题了,其实是不可取的,对服务端很不又好,确却的说是错误的,然后他们就使用了WebSocket 进行原创 2020-07-21 11:46:23 · 4900 阅读 · 2 评论 -
大数据可视化大屏实例
最近得到公司的一个任务,就是开发可视化大屏,这个我也没有弄过啊,所以当时是有一点手足无措的感觉,然后在进行借助搜索之后,发现数据大屏其实也就是那样,一般最经典的数据大屏就是 图加背景然后加数据就搞定了,接下来我就介绍下所了解的技术,进行开发数据大屏。EchartsApache ECharts (incubating) 是由百度捐给 Apache 开源基金会的开源项目,目前正在孵化中。ECharts是一款基于Javascript的数据可视化图表库,提供直观,生动,可交互,可个性化定制的数据可视化图表。原创 2020-07-21 11:08:54 · 11488 阅读 · 4 评论 -
JAVA JDK1.7 try-with-resources 特性理解分析
我们都知道,在执行 io 操作时都需要在执行finally 里面进行 colse 方法进行 关闭流,这样可以出现 资源出现占用等一系列问题,在jdk1.7中出现了try-with-resources 特性帮助我们做了这些事情,我们先来看看 api文档对特性的描述jdk文档try-with-resources特性描述文档中给出了几个实例,我们先来看看前面2个实例就可以很好的看出了try-with-resources 特性 :static String readFirstLineFromFile(Stri原创 2020-07-15 11:34:31 · 339 阅读 · 0 评论 -
使用docker 搭建线上项目基础环境(JAVA)
最近得到一个任务,就是帮助客户搭建项目的环境,基本的项目环境大概就是 JDK环境变量 ,Mysql,Tomact,nginx基本就这样环境了,在以前我们配置环境变量所实话是真的难受,在网上找很多的资料,然后就各种的出问题,访问不了啥的问题,这里我使用 docker 去进行搭建环境,不仅快,还安全,好了,下面我们一步一步的进行安装吧。首先安装 Docker :查看服务器系统,我这里是 Aliyun CentOS 系统 所以我们安装 CentOS dockerlsb_release -a安装命令 :原创 2020-07-03 10:57:40 · 529 阅读 · 0 评论 -
Mybatis 使用Redis 作为 二级缓存
Mybatis 开启二级缓存,使用 Redis 去实现 cache 进行缓存处理,这样就不用一直去请求数据库,降低数据库的压力,并且查询也会快一点设置mybatis 开启二级缓存<setting name="cacheEnabled" value="true"/> Redis 工具类:public class JedisPoolUtil { private JedisPoolUtil() { } public static volatile JedisPoo原创 2020-06-22 14:15:06 · 481 阅读 · 0 评论 -
JAVA多线程进行压缩文件(线程池)(CountDownLatch)详解
先说说我要做的事情吧,上一遍我已经写出了这么把文件夹进行压缩成一个zip包,所以在这个文章的基础上面就可以实现,但是问题是我这边要弄一个批量的操作,就是一次下载很多文件然后放到目录中,在进行压缩,并且文件还是线上的文件,所以我的进行下载文件到本地,这里是很需要时间的,所以在下载线上的文件这里我想着用多线程去进行下载,然后一次去进行压缩文件,好了看看代码吧 String realPath = new File(request.getSession().getServletContext().ge原创 2020-06-17 19:17:17 · 3117 阅读 · 0 评论 -
JAVA 实现 微信公众号发送模板信息
做这个功能前,如果是小白请先看微信公众号开发文档,https://developers.weixin.qq.com/doc/offiaccount/Message_Management/Template_Message_Interface.html这里我们只需要发送模板信息所以只需要看一个接口就可以了接口很明显,只需要一个access_token,然后就传参数就可以,access_token这个是需要调用接口去获取的,不知道的可以去看官方文档,这里就不解释了这个接口的参数,关键点就是要发送给谁,发原创 2020-06-09 10:53:06 · 562 阅读 · 0 评论 -
JAVA 实现批量PDF 打印,线程池多线程执行(附完整代码)
还是说到前面那篇使用 JAVA 使用 pdfbox实现打印 PDF 文件,使用 pdfbox调用 pdf是可以进行打印的,我在本地电脑进行打印的时候是对的,那是因为,我本地电脑是连接过打印机的,所以当然是可以进行打印文件的,那如果部署到服务器上面,老是会报,未连接打印机的问题,然后我查询了很多的资料,都没有找到答案,有的说服务器上面要安装打印机连接工具才可以,那肯定是不可以的,因为我们做的功能不能说我们知道客户的打印是叫啥然后去连接,既然服务端无法识别,那我还是只能用客户端去实现了,这里我想到的方法就是,批原创 2020-06-09 10:34:20 · 3020 阅读 · 1 评论