java
想要胖胖的豪
Life may have thrown me a curve ball,but we wil face the future...together
展开
-
svg工具类
1原创 2022-08-24 09:44:23 · 223 阅读 · 1 评论 -
开发中遇到的神奇问题集
1、org.apache.lucene.store.LockObtainFailedException: Lock held by this virtual machine: /data/statics/upload/index/write.locklucene释放不了锁原因:我使用了try-with-resources实现自动关闭流。本地和测试机都没问题。正式机之前也没问题,换了文件共享盘之后就报错了解决过程: (1)删除write.lock文件,无效果 (2)删除全部索引文...原创 2020-10-20 23:14:20 · 778 阅读 · 0 评论 -
SpringBoot事务机制学习
1、同一事务下,删除更新新增操作后,查到的数据是否是操作的最新数据 答:是的,这个是于mysql事务的隔离性有关,由于事务的隔离性,本事的操作都是最新的数据,其他事务操作的都是本事务提交前的数据(mysql默认是可重复读,不会出现脏读、幻读、可重复读)###查询mysql的事务隔离级别select @@tx_isolation;######一个事务中(假设表A)###########开启事务start transaction;###查询当前数据select * from A;...原创 2020-08-17 16:49:21 · 608 阅读 · 2 评论 -
HTTP学习笔记之TCP协议的三次握手策略
HTTP的传输层中的TCP,提供了可靠的字节流服务。所谓的字节流服务定义是:为了方便传输,将大块的数据分割成以报文段为单位的数据包进行管理。为了保证将数据送达目标处的准确可靠性,TCP协议采用了三次握手策略。 过程: 发送端首先发送一个带有SYN(synchronize)标志的数据包给对方。然后,接收端收到后返回一个带有SYN/ACK标志的数据包向发送端传递确认信息。最后...原创 2018-12-16 17:27:58 · 213 阅读 · 0 评论 -
代理模式之JDK的动态代理
JDK的动态代理比较简单,是内置在JDK中的,不需要引入第三方jar包,但相对其他代理它的功能就比较弱了。 下面就以demo为例来学习它。分为延迟加载demo和安全作用的demo 延迟加载demo 主题接口: 定义代理类和真实主题的公共对外方法/** * 主题接口 */public interface IDBQuery { ...原创 2018-12-18 12:08:21 · 157 阅读 · 0 评论 -
java常用工具类的使用(持续更新)
1、java对象的拷贝 BeanUtils.copyProperties(Object source, Object target) 是属于spring和apache都有提供org.springframework.beans.BeanUtils org.apache.commons.beanutils.BeanUtil PropertyUtils.copyPropertie...原创 2019-01-16 11:00:49 · 352 阅读 · 0 评论 -
RabbitMQ知识点总结
1、 常用端口: 5672 用于常规连接 5671用于TLS连接2、队列 (1)队列的长度是有限的,队列和消息由TTL(Time To Live 存活时间).这两个功能可以用于数据过期,并且可以设置队列最多可以使用多少资源。 这个功能可以设置消息的延迟加载(下面详细介绍)。 (2)消息订阅: 队列是有序的消息集合,消息以FIFO方式进出队列(先进先出) (3)持久...原创 2019-02-24 12:23:26 · 503 阅读 · 0 评论 -
Redis知识点总结
1、Redis是什么: redis是内存中的数据结构存储系统,它可以作数据库、缓存和消息代理。它支持多种类型的数据结构:字符串strings、列表lists、散列 hashes、集合sets、有序集合sorted sets(zset)。它可以持久化数据到磁盘中,也可以通过主从复制的特性,提高访问速度。使用redis进行数据缓存可以极大的提高系统的响应速度。它是key-value型的数据库...原创 2019-02-25 14:49:33 · 325 阅读 · 0 评论 -
集合Map问答
1、常用的Map集合有哪些 答:线程不安全的有HashMap、TreeMap、LinkedHashMap。 线程安全的有:HashTable、ConcurrentHashMap 当然Collections包中提供了synchronizedMap(Map map)来包裹线程不安全的map,已达到线程安全的目的2、 HashMap和HashTable有什么区别 ...原创 2019-02-25 15:56:40 · 175 阅读 · 0 评论 -
集合list的问答
1、list集合是有序的吗?主要有那些list集合 list是有序可重复的集合。ArrayList、LinkedList是线程不安全的。线程安全的lst有Vector、CopyOnWriteArrayList。2、ArrayList和LinkedList有什么区别 ArrayList底层使用的是数组。由于数组结构,也就是顺序链表结构,它逻辑上和物理上都是相邻的。所...原创 2019-02-25 18:37:50 · 446 阅读 · 0 评论 -
遇到JPA的一些问题记录
1、count(*)在java中该用什么数据类型来接收select a.uuid,a.title , (select count(*) from zc_attachment b WHERE b.notice_id=a.uuid ) as attachmentNum from zc_infomation a where a.tenant_id='4040e48b6956ca340169571c...原创 2019-06-19 14:28:40 · 408 阅读 · 0 评论 -
java 多文件压缩后下载(zip)
说明:从服务器上读取文件流写入到zip流中后下载本工具可以直接拿去使用import org.slf4j.Logger;import org.slf4j.LoggerFactory;import javax.servlet.http.HttpServletResponse;import java.io.*;import java.net.URLEncoder;import j...原创 2019-06-21 10:01:43 · 3561 阅读 · 1 评论 -
HTTP学习之Cookie和Session
如果了解过HTTP,你或许会知道HTTP是无状态协议 ,由于是无状态协议,所以它是不会对之前发生过的请求和响应的状态进行管理。因此无法根据之前的状态进行请求处理。这种无状态请求由于不必保存状态,可以减少对服务器的cup和内存资源的消耗,但是如果需要web登陆,就必须保存登陆状态,但是HTTP是无状态协议,如何保存登陆状态呢? 这就需要引入Cookie技术。 什么是Cook...原创 2018-12-16 11:44:27 · 179 阅读 · 0 评论 -
代理模式之静态代理
动态代理比静态代理使用更多,也比静态代理使用更加简单,可是为何还要学习静态代理呢? 本人认为静态代理需要自己去实现,在学习的过程中可以让我们更好的理解代理模式。 本文将结合代理模式的延迟加载和安全性能来实现静态代理。 延迟加载 在上一文中我们可以了解到代理模式可以实现延迟加载来缩短系统的开启时间,文本中不会在提延迟加载的作用了,主要精力放在代码实现上。...原创 2018-12-15 16:35:46 · 126 阅读 · 0 评论 -
解决SpringBoot @Value对static属性无效(为null)的问题
今天在写一个工具类,使用@Value注入配置文件的值,但是一直为空,后来查资料发现@Value对static的属性注入无效。解决办法,其实也挺简单的,就写一个setter方法,在setter方法中注入。当然这个工具类首先得是一个Bean否则是不能被扫描到的,我在这个工具类上加一个组件注解@Component。详细代码如下: @Componentpublic class PegsusUt...原创 2018-09-27 16:56:22 · 7610 阅读 · 3 评论 -
springBoot+vue实现类QQ评论功能
本文将讲如何使用一个评论功能。本文的评论功能,是我自己写的一个网站的中的评论,所以大家可以先看看效果,地址:http://www.toheart.xin(已被注销)。好了废话不说直接开讲。 使用技术介绍:后端使用了springBoot+mybatis。前端使用了vue.js+element框架。数据库使用的是mysql。 关于后端: 一...原创 2018-10-08 18:47:33 · 4477 阅读 · 10 评论 -
java设置Access-Control-Allow-Origin允许多域名访问
对于前后端分离的项目难免会遇到跨域的问题,在设置跨域的问题中有许多需要注意的事情,如本次将要将的设置Access-Control-Allow-Origin使其允许多域名请求。 (1)设置允许多域名访问最简单的方法是使用通配符,但是这种方式允许所有域名都可以访问,并不安全,而且这种方式浏览器不能携带cookie信息(携带cookie信息只能使用真实域名,如下面第二中方式)。这种...原创 2018-10-10 11:41:08 · 16831 阅读 · 2 评论 -
axios解决跨域问题
最近把我自己的网站升级生成前后端分离的项目(vue+springBoot),不可避免的就遇到了跨域问题。从中学到了许多知识,随便分享出来,也巩固下所学。 谈到跨域,首先得了解CORS(Cross origin resource sharing) 跨域资源共享,它是w3c的一个标准,是一份浏览器技术规范,提供了web服务从不同网域传来沙盒脚本的方法,以避免浏览器的同源策略,是比...原创 2018-10-10 17:44:34 · 111291 阅读 · 8 评论 -
设计模式之单例模式
在面试时谈到单例模式,一般都会回答懒汉式单例模式和饿汉式单例模式,但是什么又是懒汉式单例模式和饿汉式单例模式呢?只有临时突击设计模式的人才会这么回答吧。 (1)什么是单例模式 单例模式是一种对象创建模式,用于确保一个类只产生一个实例。 (2)为什么要用单例模式 a、对于频繁使用的对象(特别是重量级对象而...原创 2018-11-13 14:16:33 · 193 阅读 · 0 评论 -
String字符串学习之String对象认识
String字符串是java的一种重要数据类型,从String源码中可以看出String是对char数组的一种封装和延伸,主要组成部分是char数组、offset偏移量、count长度。String的真实内容由偏移量和长度在char数组中定位和截取。 本文章中将会讲到String的不变性和常量池 1、String对象具有不变性,对象一旦生成就不能再改变。源码中是这样说...原创 2018-11-22 17:32:55 · 200 阅读 · 0 评论 -
String字符串的累加操作
在程序的开发中,String的拼接会经常用到,如何使它工作的更好,就需要我们考虑和研究一下了。String的拼接的底层真的非常有趣,不信?那咱们走着瞧.... 案例一:String str = "I" + "love" + "you" + "love"; 这段代码会生成几个对象? 很多初学者会回答:3个、4个、6个。 按照我之前...原创 2018-11-23 10:39:04 · 10337 阅读 · 0 评论 -
String、StringBuilder、StringBuffer的选择
上文中谈到了String的累加操作会在编译时会被jvm优化,性能上会比想象中好的多,但是这种编译器上对程序的优化也不是很智能,请看下面的例子:public class StringTest5 { @Test public void StringTest() { String str = ""; for(int i=0;i<...原创 2018-11-23 14:47:38 · 363 阅读 · 0 评论 -
com.microsoft.sqlserver.jdbc.SQLServerException: SQL Server version 8 is not supported by this drive
出现这样问题的原因时导入sqlserver的依赖不对,虽然mssql-jdbc依赖可以在开发中使用,但仅仅时可以在开发项目时候使用,如果打成jar,就会发生这样的错误。因此需要把mssql-jdbc依赖改成sqljdbc4,但是pom.xml中又依赖不了sqljdbc的依赖。因此我们需要先下载sqljdbc.jar,然后使用mvn install 把这个jar包下载到本地仓库中去:mvn...原创 2018-12-04 19:37:03 · 3346 阅读 · 0 评论 -
集合学习之List(1)
List 是java中重要的一种数据结构,最常用的是ArrayList、LinkedList,当然还包括线程安全的Vector。 List主要使用的数据结构是线性表。现在就结合线性表来谈谈这三个种的优缺点。 本节将会讲到 List的底层实现和List末尾添加元素的性能比较。 1、各自的底层实现 (1)ArrayList和Vector使用了数组实...原创 2018-11-27 14:45:26 · 165 阅读 · 0 评论 -
选择排序及其优化(Selection sort)
上次讲了冒泡排序及其优化,可以发现每一次排序的是时候都要交换元素位置好几次,虽然算法稳定,但是频繁交换元素消耗系统资源,性能并不是很佳。是不是还有比冒泡排序快的排序方法呢?当然有,还不止一种,本节将谈到其中一种---》选择排序。 选择排序的思想:每一次排序找出最小的(或者最大的)元素与此次参与排序的第一个(或者最后一个)元素交换位置,直至排序成功。以找正序排序为例...原创 2018-11-30 18:03:33 · 181 阅读 · 0 评论 -
集合学习之List(2)
本节将会聊到ArrayList和LinkedList在任意位置查入和删除元素的优缺点。 从上一节(集合之List(1))中我们已经知道ArrayList的底层实现是用数组来实现的,而数组在数据结构中对应的顺序结构的线性表,比较认真的学过数据结构的同学肯定是知道: 顺序结构的线性表在任意位置的插入和删除操作平均需要移动一半元素,越靠前移动的元素就越多,开销越...原创 2018-11-28 13:03:51 · 282 阅读 · 0 评论 -
设计模式之代理模式
什么是代理模式,简单的来说代理模式是使用代理对象完成用户请求,屏蔽用户对真实对象的访问。比如日常生活中的房屋中介,他们代理房主去出售房间,而不用房主亲自出马,客户直接接触的是中介,并不能接触到房主,这样节约了房主的时间,也保护了房主的隐私。 代理模式的结构 代理模式的角色 角色 作用 主题接口(抽象角色) 定义代理类和真实主题的公共对外方...原创 2018-12-12 16:51:16 · 153 阅读 · 0 评论 -
Google Guava缓存的学习和使用
最近在工作中使用到了Google Guava缓存功能,感觉还是不错,这周末顺便把它深入一点的学习了一下。 我们为什么需缓存?主要原因是:当计算或获取一个值的时候代价很高,或者频繁获取一个值的时候,我们为了提高系统的性能,就得考虑使用缓存了。而Google Guava的缓存功能就是一种选择。 那Google Guava缓存适合什么场景用呢?Google Guava官方文...原创 2018-12-12 19:33:54 · 817 阅读 · 0 评论 -
浅谈打印流是真的自动刷新吗?
今天简单的谈谈java语言中IO流中的打印流的使用中的自动刷新。希望能给大家打来帮助,特别针对初学者。首先,大家都知道这样的打印流的特性及优点吧: (1) 打印流都是输出流 (2)打印流是节点流 (3)打印流具有字符与字节的转换功能 (4)打印流可以自动刷新(是真的自动吗?)现在我们就讨论打印流到底是不是真的自动刷新:(注:以PrintWriter为例)首先原创 2017-08-11 08:37:42 · 631 阅读 · 0 评论