![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
学习贴
lureSky空城
love coding
展开
-
批量导出Excel到Zip(基于Jxls)
由于公司业务需求,需要批量导出Excel到Zip中,导出Excel使用的技术是Jxls在此不做jxls的讲解,如有需要看大神的专业讲解:https://www.cnblogs.com/foxlee1024/p/7616987.html附上一个小型Demo:明确一件事情:response目前主要是输出zip的内容 @GetMapping(value = "/export/purchaseOrders") public void purchaseAcceptExports(HttpS原创 2020-07-21 09:56:59 · 469 阅读 · 0 评论 -
线程池(值得收藏)
1.说一说你使用的是什么样的线程池,自定义线程池的几个参数是什么一般使用默认线程池,有四种线程池:newCacheThreadPool 缓存线程池,超出部分如果有空闲部分则回收,如果没有则新建 newFixedThreadPool (共享无界)提交一个开辟一个新线程,如果满了就进入到线程池队列 newSingleThreadPool 单线程线程池,确保FIFO线程执行,一个线程结束会顺序执行下一个 newScheduleThreadPool 定长线程池,支持定时的周期的执行线程策略注意如原创 2020-05-29 14:01:00 · 243 阅读 · 0 评论 -
关于Volatile见解
1.基础volatile就可以说是java虚拟机提供的最轻量级的同步机制(1)Synchronized:保证可见性和原子性 Synchronized能够实现原子性和可见性;在Java内存模型中,synchronized规定,线程在加锁时,先清空工作内存→在主内存中拷贝最新变量的副本到工作内存→执行完代码→将更改后的共享变量的值刷新到主内存中→释放互斥锁。(2)Volat...原创 2020-04-29 18:04:15 · 300 阅读 · 0 评论 -
基于Springboot实现不同数据源的操作
1.首先引入依赖 <dependencies> <!-- springboot核心包--> <!-- https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-web --> <dependency&g...原创 2020-04-11 16:25:10 · 822 阅读 · 0 评论 -
使用切面进行方法执行展示
目标:使用切面将调用方法开始+方法结束展示,并显示关联参数@Aspect@Component()@Slf4jpublic class MethodExecutionLogAspect { @Pointcut(value = "execution(public * org.hzqisheng.controller..*Controller.* (..)))") private ...原创 2020-03-23 15:08:24 · 737 阅读 · 0 评论 -
基于BCrypt进行密码加密
之前写了一篇文章关于MD5加密的文章MD5+盐,但是如果知道加盐的规则,很容易进行反向破解,也不安全。因此引入BCrypt加密算法进行加密1.为什么BCrypt比MD5+盐更加安全? BCrpyt也是输入的字符串+盐,但是与MD5+盐的主要区别是:每次加的盐不同,导致每次生成的结果也不相同。无法比对!2.使用Bcrypt(注解开发) 结合SpringSec...原创 2020-01-10 11:41:08 · 1196 阅读 · 0 评论 -
SpringBoot实现自定义注解并解析
注解1.什么是注解(annotation) 最常见的注解就是@Override 覆盖超类的方法。 注解和源码结合在一起,可以经过编译和测试,附带有额外的功能。 自定义注解可以搭配注解处理器生成一些特定的信息和功能。 注解可以使代码变得更加简洁和比编译器的类型检查等。2.注解的基本知识注解主要有四种元注解,主要作用就...原创 2019-12-25 14:25:22 · 1018 阅读 · 0 评论 -
单点登录SSO登录原理
近期公司的一个项目接入了SSO单点登录系统,于是了解了下SSO单点登录的原理。一、共享Session使用场景:子系统少,应用场景简单。使用方法:使用Redis存储sessionId实现session共享缺陷:扩展性弱,使用场景小二、基于Cookie携带OpenId使用场景:在同一个顶级域名下的SSO登陆使用方法:将OpenId放到顶级域名的Cookie中,访问不同...原创 2019-11-04 09:53:20 · 163 阅读 · 0 评论 -
MD5+随机盐
由于传统的MD5加密,黑客可以通过查散列值字典(例如彩虹表),得到某用户的密码。因此目前可以用MD5加密配合上随机盐值,可极大的防止密码被破解。public static String generate(String password, String salt) { password = md5Hex(password + salt); char[] cs = new cha...原创 2019-10-29 16:05:17 · 1703 阅读 · 0 评论 -
关于mysql无法导入数据量很大的sql文件
在导入商城的sql文件的时候,经常会报错,查看报错信息是因为sql文件未完全读取,只读取了大概2M。通过查看文件,mysql默认的读取sql文件就是1024*1024*2因此默认的最大读取就是2M,要通过修改mysql的设置或者配置文件单次解决方案(重启后失效):用cmd进入mysqlset global max_allowed_packet=160*1024*1024;这...原创 2019-08-02 10:25:44 · 433 阅读 · 0 评论 -
分布式Id解决方案
1.UUID常见的方式。可以利用数据库也可以利用程序生成,一般来说全球唯一。优点:1)简单,代码方便。2)生成ID性能非常好,基本不会有性能问题。3)全球唯一,在遇见数据迁移,系统数据合并,或者数据库变更等情况下,可以从容应 对。缺点:1)没有排序,无法保证趋势递增。 2)UUID往往是使用字符串存储,查询的效率比较低。3)存储空间比较大,如果是海量数据库,就需要考虑存储量的...原创 2019-08-03 10:14:11 · 126 阅读 · 0 评论 -
关于抽象类和接口的一些知识
1. 抽象类举一道常见的java基础面试题:抽象类必须要有抽象方法吗?答案是不需要,抽象类中可以有非抽象的方法,可以正常编译。abstract class Cat { public static void sayHi() { System. out. println("hi~"); }}2.接口在看完上面的关于抽象类的问题后,一般会习惯性的联...原创 2019-06-24 14:55:06 · 135 阅读 · 0 评论 -
ajax的跨域问题解决二:利用CORS
1.了解什么是CORSCORS是一个W3C标准,全称是"跨域资源共享"(Cross-origin resource sharing)。它允许浏览器向跨源服务器,发出XMLHttpRequest请求,从而克服了AJAX只能同源使用的限制。CORS需要浏览器和服务器同时支持。目前,所有浏览器都支持该功能,IE浏览器不能低于IE10。 浏览器端: 目前,所有浏览器都支持该功能(IE...原创 2019-06-10 18:45:19 · 198 阅读 · 0 评论 -
ajax的跨域问题解决一:利用jsonp解决
关于jsonp的一些原理,大家可以百度下面贴出一个我找到的jsonp详解传送门关于jsonp的用法:$.ajax({ type : "get", url : url, data : {detailMddm:detailMddm}, dataType : "jsonp", j...原创 2019-06-10 18:39:56 · 135 阅读 · 0 评论 -
springcloud开发过程中遇到的跨域问题
首先我们得明白为什么会出现跨域问题:跨域问题是浏览器对于ajax请求的一种安全限制:当一个页面发起ajax请求时,只能是当前页面路径下的页面可以获得数据,能有效防止跨站攻击解决办法:目前常见的解决办法有三种:1.jsonp 最早的解决方案,利用script标签实现跨域的原理。 限制: 1)需要服务的支持。 2)只能发起Get请求2...原创 2019-06-09 21:39:43 · 532 阅读 · 0 评论 -
mybatis中使用逆向工程
在开发过程中,我们使用mybatis时,书写mapper文件里面的sql语句时,会特别繁琐,特别是表如果特别多,我们书写pojo包都需要很久,因此mybatis集成了一个逆向工程,可以直接生成pojo包和对应的mapper文件。接下来我们了解其怎么实现:1.导入逆向工程项目 里面的GeneratorSqlSqlmap.java是其主程序,与其相关的是generator...原创 2019-05-03 08:15:10 · 158 阅读 · 0 评论 -
hibernate与mybatis的区别
1.hibernate是一个完全的orm框架,利用的是完全面向对象的思想。mybatis是要在mapper.xml中书写sql语句的,mybatis的执行思路是通过xml配置sql语句,用java对象和sql语句映射最终执行sql语句,再将sql语句映射为java对象2.mybatis学习简单,特别是mybatis的逆向工程,可以一步生成,然后使用example可以简洁开发。h...原创 2019-05-03 08:54:41 · 272 阅读 · 0 评论 -
MAVEN中servletFilter报错
今天刚刚接触到MAVEN,然后把MAVEN相应的配置好,创建第一个MAVEN项目并启动时,在控制台报错java.lang.ClassCastException:……通过网络很多大佬的blog,发现这是因为我在整合struts2时,依赖使用了jsp-api 和 servlet-api有重复,因此会报出此类错误。但是我们不能少这两个依赖的任意一个,否则会出现报错。解决方案...原创 2019-04-24 08:34:04 · 1148 阅读 · 0 评论 -
springmvc和struts2的区别
1.struts2的入口主要是org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter过滤器 springmvc的入口主要一个servlet前端过滤器org.springframework.web.servlet.DispatcherServlet2.springmvc主要是根据url进行开发,可以为...原创 2019-05-04 08:58:03 · 273 阅读 · 0 评论 -
不推荐使用JDBC的原因
1.数据库连接创建、释放频繁会造成资源的浪费,从而影响系统的性能。如果使用数据库连接池技术可能会使其好转。2.sql语句中存在硬编码问题,造成代码的不易维护,实际应用中sql变化的可能较大,容易造成整体的java代码的改变3.使用prepreparedStatement向占位符传递参数存在硬编码问题,因为sql中的where条件可能不一定,可能多和少,很容易要造成修改sql代码,系统不易维...转载 2019-04-29 09:35:31 · 753 阅读 · 0 评论 -
IntelliJ IDEA 使用(1)
第一天解除IDEA,对于我这个使用了很久的Eclipse的人来说,有点不适应。在此记录下我的学习日志,主要是和eclipse进行对比:1)project和module相对于eclipse中的对应关系: project相当于eclipse中的workspace,module相当于eclipse的project。这种使用方法,能够更好的适应模块化开发。 比如我在学习...原创 2019-05-06 10:36:57 · 91 阅读 · 0 评论 -
IntelliJ IDEA 使用(2)
通过昨天一天的学习,然后将IDEA中的快捷键设置为了eclipse的快捷键。为了验证idea的使用,我设计开发了一个Maven项目的Demo。在开发过程中还是遇到了点麻烦,简单的说一下:1.tomcat的配置,与eclipse不同,不是直接addprojiect,他是有一个development,这里的选项是一个arifacts,在project struct中我们可以选择该属性,我是...原创 2019-05-07 10:50:58 · 110 阅读 · 0 评论 -
Restful风格的常用四种请求方式
1、GET[select]请求会向数据库发索取数据的请求,从而来获取信息,其只是用来查询一下数据,不会修改、增加数据,不会影响资源的内容。无论进行多少次操作,结果都是一样的。2、PUT[update]请求是向服务器端发送数据的,从而改变信息,其用来修改数据的内容,但是不会增加数据的种类等,无论进行多少次PUT操作,其结果并没有不同。3、POST[insert]请求同PUT请求类似,...转载 2019-05-31 16:43:48 · 3342 阅读 · 0 评论 -
JAVA实现简单的RPC
1.远程调用方式无论是微服务还是SOA,都面临着服务间的远程调用。那么服务间的远程调用方式有哪些呢?常见的远程调用方式有以下几种: RPC:Remote Produce Call远程过程调用,类似的还有RMI。自定义数据格式,基于原生TCP通信,速度快,效率高。早期的webservice,现在热门的dubbo,都是RPC的典型 Http:http其实是一种网络传输协议,基于...转载 2019-06-13 09:32:06 · 246 阅读 · 0 评论 -
当数据库存在外键关联,后台处理list或者map,转换为json时候的死循环问题
在进行一个AJAX请求时,我在后台处理好数据后,得到一个list集合,利用gson转换为json传到前台进行显示。 但是发现,前台的json一直为空,所以进入debug,发现在gson.toJson(list);这一步一直是死循环。通过查看他人bolg和经验贴,发现如果list得到的数据,是存在外键,然后封装数据用对象封装的话,会造成外键的互相关联,导致死循环。解决方案一:直接取了...原创 2019-04-12 18:39:27 · 328 阅读 · 0 评论