java
文章平均质量分 89
tyjlearning
这个作者很懒,什么都没留下…
展开
-
Spring Security 实现多个登录接口
1. 前言欢迎阅读Spring Security 实战干货系列文章 。最近有开发小伙伴提了一个有趣的问题。他正在做一个项目,涉及两种风格,一种是给小程序出接口,安全上使用无状态的JWT Token;另一种是管理后台使用的是Freemarker,也就是前后端不分离的Session机制。用Spring Security该怎么办?2. 解决方案我们可以通过多次继承WebSecurityConfigurerAdapter构建多个HttpSecurity。HttpSecurity对象会告诉我们如何验...转载 2020-12-17 10:58:13 · 8782 阅读 · 2 评论 -
Map总结
一、当两个对象的 hashCode 相同会发生什么?因为 hashCode 相同,不一定就是相等的(equals方法比较),所以两个对象所在数组的下标相同,"碰撞"就此发生。又因为 HashMap 使用链表存储对象,这个 Node 会存储到链表中。二、说说 hash 的实现。为什么要这样实现?JDK 1.8 中,是通过 hashCode() 的高 16 位异或低 16 位实现的:(h = k.hashCode()) ^ (h >>> 16)。主要是从速度、功效和质量来考虑的,减转载 2020-12-14 14:26:48 · 526 阅读 · 0 评论 -
使用formData向后台传递数组对象
1.前端let formDatas = new FormData();let sealValues = t.sealValues;formDatas.append('pdfFile', t.parsePdfFile);for(let i=0,len=sealValues.length;i<len;i++){ let locationInfo = sealValues[i]; formDatas.append('sealLocationInfoList['+i+'].posX原创 2020-09-19 17:19:40 · 8291 阅读 · 0 评论 -
LocalDateTime用法
使用新时间日期API的必要性在java8以前,或许:当你在做有关时间日期的操作时,你会想到用Date; 当你在做日期、月份、天数相加减时,你会想到用Calendar; 当你需要对时间日期进行格式化时,你会想到使用SimpleDateFormat或DateFormat下的其他子类; ……但是,你必须知道,以上有关的时间日期操作对象,都是可变的、线程不安全的,同时,如果作为一个经常写过...转载 2019-11-12 10:15:56 · 3439 阅读 · 0 评论 -
docker入门介绍
Docker是什么?在计算机技术日新月异的今天,Docker在国内发展的如火如荼,特别是在一线互联网公司,Docker的使用是十分普遍的,甚至成为了一些企业面试的加分项,不信的话看看下面这张图。这是我在某招聘网站上看到的招聘Java开发工程师的招聘要求,其中有一条熟悉docker成为了你快速入职的加分项,由此可见熟悉docker在互联网公司的地位之重要。当然对于...转载 2019-11-05 15:27:08 · 639 阅读 · 0 评论 -
文件上传与下载
文件上传 @Test public void whenUploadSuccess() { try { String file = mockMvc.perform(MockMvcRequestBuilders.fileUpload("/file") .file(new MockMultipartFile(...转载 2019-11-01 17:18:43 · 642 阅读 · 0 评论 -
RedisTemplate通用工具类RedisUtils
/*** RedisTemplate 工具类** @author coderBing* @version 2019/04/28*/@Componentpublic class RedisUtils { @Autowired private RedisTemplate redisTemplate; //- - - - - - - - - - -...转载 2019-10-31 13:45:14 · 1134 阅读 · 0 评论 -
多页签导出
1.前端jsvar datas = actives.getTableSelectedData()if(datas&&datas.length>0){ $.each(datas,function (index,value) { window.open(urls.listExport+"?declNo="+value.declNo + "&...原创 2019-10-28 09:09:11 · 883 阅读 · 0 评论 -
图片改变像素,宽高,Base64编码处理
1.改变图片像素private void setAlpha(String os) {/*** 增加测试项* 读取图片,绘制成半透明,修改像素*/try {ImageIcon imageIcon = new ImageIcon(os);BufferedImage bufferedImage = new BufferedImage(imageIcon.getIconWi...转载 2019-10-28 08:56:39 · 2586 阅读 · 0 评论 -
jquery插件cropper使用笔记
1.html<div class="layui-form-item"> <label class="layui-form-label">企业印章</label> <div class="layui-input-block"> <input type="file" id="imgInp" style="dis...原创 2019-10-25 14:40:07 · 725 阅读 · 0 评论 -
导入--多页签
1.前端上传excel文件2.后台接收并转行为map对象Map<Integer, Class> map = new HashMap<Integer, Class>();map.put(0, HandbookExportExg.class);map.put(1, HandbookExportImg.class);map.put(2, HandbookExpor...原创 2019-10-22 17:18:29 · 902 阅读 · 0 评论 -
导入--单页签
1.前台传文件2.后台接收文件并转为实体List@RequestMapping(value = "/to_impt", method = RequestMethod.POST)public WebResponseContext toImpt(HttpServletRequest request , @RequestParam("file") MultipartFile multip...原创 2019-10-22 16:40:54 · 647 阅读 · 0 评论 -
导出
1.前端location.href = urls.exportExg+"?namsNo="+namsNo+"&dataSource="+dataSource+"&chgTmsCnt="+chgTmsCnt;2.后端代码@RequestMapping(value = "/export_nams_exg",method = RequestMethod.GET)publ...原创 2019-10-22 16:16:18 · 597 阅读 · 0 评论 -
mybatils批量更改和批量保存
1.批量更改@Update("<script>" + "UPDATE POLICY SET REFERENCE_TIMES = REFERENCE_TIMES +" + " <foreach collection=\"map.entrySet()\" item=\"value\" index=\"key\" separator=\" \" open=\"c...原创 2019-10-22 15:58:32 · 662 阅读 · 0 评论 -
springMvc后台进行表单效验
1.前端ajax请求 $.ajax({ url: urls['add_related_company'], type: 'post', data: data, async : false, contentType: false, //jax 中 contentType 设置为 false 是为了避免 J...原创 2019-10-22 15:46:15 · 697 阅读 · 0 评论 -
文件随表单通过ajax上传或通过BASE64流上传
表单设置<form class="layui-form" id="related_company_form" action="" lay-filter="related_company_form" enctype="multipart/form-data" method="post"></form>获取表单数据var formSatellite = documen...原创 2019-10-21 09:22:18 · 735 阅读 · 0 评论 -
JVM调优(四)常用调优方案
由于Full GC的成本要远远高于Minor GC,因此尽可能的将对象分配在新生代是一项明智的选择。 大部分情况下,jvm会尝试在eden区域分配对象,但是因为空间紧张等问题,很可能不得不将部分年轻对象提前向老年代压缩。因此,可以为程序分配一个合理的新生代空间,以最大限度避免新对象直接进入老年代的情况。一般来说,当survivor区的空间不够,或者占用量达到50%时,就会将对象进入老年代,不管...转载 2018-11-03 21:54:00 · 354 阅读 · 0 评论 -
SpringBoot整合RabbitMQ之发送接收消息实战
实战前言前几篇文章中,我们介绍了SpringBoot整合RabbitMQ的配置以及实战了Spring的事件驱动模型,这两篇文章对于我们后续实战RabbitMQ其他知识要点将起到奠基的作用的。特别是Spring的事件驱动模型,当我们全篇实战完毕RabbitMQ并大概了解一下RabbitMQ相关组件的源码时,会发现其中的ApplicationEvent、ApplicationListener、App...转载 2019-03-14 16:28:47 · 573 阅读 · 0 评论 -
【Shiro权限管理】10.Shiro为密码加盐
上一篇我们提到了使用Shiro为密码进行MD5加密,这次来说一下密码加盐的问题。当两个用户的密码相同时,单纯使用不加盐的MD5加密方式,会发现数据库中存在相同结构的密码,这样也是不安全的。我们希望即便是两个人的原始密码一样,加密后的结果也不一样。如何做到呢?其实就好像炒菜一样,两道一样的鱼香肉丝,加的盐不一样,炒出来的味道就不一样。MD5加密也是一样,需要进行盐值加密。在之前的加密样例...转载 2019-03-14 11:41:38 · 326 阅读 · 0 评论 -
SpringBoot+Shiro学习(七):Filter过滤器管理
先从我们写的一个自定义Filter来看:public class RoleOrFilter extends AuthorizationFilter { @Override protected boolean isAccessAllowed(ServletRequest request, ServletResponse response, Object mappedValue)...转载 2019-03-04 08:53:22 · 852 阅读 · 0 评论 -
MyBatis foreach小记—— 批量update
经常会用到mybatis的foreach标签来做循环操作,可以做一些sql的拼装等,标签的属性如下:collection 循环对象集合;item 每个迭代对象的别名;index 迭代索引值;open 循环语句的开始内容;separator 每次迭代之间的分隔符;close 循环语句的结束内容; 以mysql为例,批量操作的sql最常见就是通过in语句、批量insert语句等:...转载 2019-02-20 11:39:46 · 11344 阅读 · 0 评论 -
mybatils plus 使用指南
Mybatis-Plus(简称MP)是一个 Mybatis 的增强工具,在 Mybatis 的基础上只做增强不做改变,为简化开发、提高效率而生。我们的愿景是成为Mybatis最好的搭档,就像 Contra Game 中的1P、2P,基友搭配,效率翻倍。特性无侵入:Mybatis-Plus 在 Mybatis 的基础上进行扩展,只做增强不做改变,引入 Mybatis-Plus 不会对您现有...转载 2018-12-10 22:51:43 · 1655 阅读 · 2 评论 -
JVM调优(三)垃圾收集
前言垃圾收集器要处理的基本问题是: 哪些对象需要回收? 何时回收这些对象? 如何回收这些对象? 回收算法 复制算法(copying)标记-压缩算法(mark-compact)...转载 2018-11-03 21:29:29 · 276 阅读 · 0 评论 -
mybatis-plus的使用 ------ 进阶
关于mybatis-plus的简介以及基本使用,我在《mybatis-plus的使用 ------ 入门》一文中已做介绍,此处不再赘述。本文主要对mybatis-plus的AR模式、插件、逆向工程、自定义全局操作、公共字段自动填充等知识点进行讲解。一、ActiveRecord:Active Record(活动记录),是一种领域模型模式,特点是一个模型类对应关系型数据库中的一个表,而模型类的...转载 2018-12-12 19:59:33 · 492 阅读 · 0 评论 -
java锁机制
场景当多个请求同时操作数据库的时候,首先将订单状态改为已支付,在对应的金额上加上200,在同事并发场景查询条件会造成重复通知,也就是会出现数据“脏读”的问题。排它锁引用百度百科里面的一句话若事务T对数据对象A加上X锁,则只允许T读取和修改A,其他任何事务都不能再对A加任何类型的锁,直到T释放A上的锁。这就保证了其他事务在T释放A上的锁之前不能再读取和修改A。悲观锁与乐观锁...转载 2018-12-04 10:39:58 · 261 阅读 · 0 评论 -
spring 与 redis 整合及使用
1、实现目标 通过redis缓存数据。(目的不是加快查询的速度,而是减少数据库的负担) 2、所需jar包 注意:jdies和commons-pool两个jar的版本是有对应关系的,注意引入jar包是要配对使用,否则将会报错。因为commons-pooljar的目录根据版本的变化,目录结构会变。前面的版本是org.apache.pool,而后面的版本是org.apache.p...转载 2018-11-25 21:17:18 · 304 阅读 · 0 评论 -
Java并发编程:volatile关键字解析
Java并发编程:volatile关键字解析 volatile这个关键字可能很多朋友都听说过,或许也都用过。在Java 5之前,它是一个备受争议的关键字,因为在程序中使用它往往会导致出人意料的结果。在Java 5之后,volatile关键字才得以重获生机。 volatile关键字虽然从字面上理解起来比较简单,但是要用好不是一件容易的事情。由于volatile关键字是与Java的内存模...转载 2018-11-20 11:17:33 · 230 阅读 · 0 评论 -
DUBBO集群 简介
dubbo是阿里的一个开源soa框架,详细介绍http://code.alibabatech.com/wiki/display/dubbo/Home-zhzookeeper是Hadoop的子项目,主要功能基于paxos算法对分布式系统的请求进行调度,详细介绍http://www.ibm.com/developerworks/cn/opensource/os-cn-zookeeper/考虑到...转载 2018-11-17 23:11:40 · 897 阅读 · 0 评论 -
DUBBO
1. Dubbo是什么?Dubbo是一个分布式服务框架,致力于提供高性能和透明化的RPC远程服务调用方案,以及SOA服务治理方案。简单的说,dubbo就是个服务框架,如果没有分布式的需求,其实是不需要用的,只有在分布式的时候,才有dubbo这样的分布式服务框架的需求,并且本质上是个服务调用的东东,说白了就是个远程服务调用的分布式框架(告别Web Service模式中的WSdl,以服务者与消费者...转载 2018-11-17 23:09:21 · 246 阅读 · 0 评论 -
JVM调优总结
目录数据类型堆与栈Java对象的大小引用类型按照基本回收策略分按分区对待的方式分按系统线程分如何区分垃圾如何处理碎片如何解决同时存在的对象创建和对象回收问题为什么要分代如何分代什么情况下触发垃圾回收分代垃圾回收流程示意选择合适的垃圾收集算法小结回收器选择辅助信息常见配置汇总调优总结垃圾回收的瓶颈增量收集的演进Garbage Firest(G1)展望JVM调优工具如何调优线程监控内存泄漏检查垃圾...转载 2018-11-07 20:29:39 · 253 阅读 · 0 评论 -
JVM调优(五)对一个web项目的调优
调优前调优过程转载 2018-11-03 21:55:32 · 579 阅读 · 0 评论 -
JDK1.8新特性Lambda表达式入门
摘要:此篇文章主要介绍Java8 Lambda 表达式产生的背景和用法,以及 Lambda 表达式与匿名类的不同等。本文系OneAPM工程师编译整理。Java是一流的面向对象语言,除了部分简单数据类型,Java 中的一切都是对象,即使数组也是一种对象,每个类创建的实例也是对象。在 Java 中定义的函数或方法不可能完全独立,也不能将方法作为参数或返回一个方法给实例。从 Swing ...转载 2019-04-03 11:30:22 · 495 阅读 · 0 评论 -
前端表单字符串日期转换为日期类型
@InitBinder用于在@Controller中标注于方法上,表示为当前控制器注册一个属性编辑器,只对当前的Controller有效。@InitBinder标注的方法必须有一个参数WebDataBinder。所谓的属性编辑器可以理解就是帮助我们完成参数绑定。 @ResponseBody @RequestMapping(value = "/test") public ...转载 2019-05-23 11:04:45 · 2975 阅读 · 0 评论 -
struts2文件上传下载前段html,struts.xml配置和后端代码
单文件上传、多文件上传和文件下载单文件上传:index页面:%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>%String path = request.getContextPath();String basePath = request.getScheme()+"://"+reques转载 2018-01-24 22:05:15 · 387 阅读 · 0 评论 -
前端传递多个对象的数据到后台
1.把前端数据封装成json数组字符串$.fn.serializeJson = function(){ var jsonData1 = {}; var serializeArray = this.serializeArray(); // 先转换成{"id": ["12","14"], "name": ["aaa","bbb"], "pwd":["pwd1","pwd2...原创 2019-09-24 16:25:04 · 30562 阅读 · 10 评论 -
使用 Jib 生成 Java Docker 镜像
使用 Jib 生成 Java Docker 镜像Jib 是谷歌最新开源的 Java 应用的 Docker 镜像生成工具,可以通过 Gradle 或 Maven 直接生成镜像并上传到仓库而不需要 Dockerfile 文件或者其他插件;Jib 支持将资源文件和类分层打包,可以大幅度提升生成镜像的速度有一些其他的插件也可以通过 Docker 实现生成镜像,如com.palantir.docker...转载 2019-09-02 11:02:07 · 796 阅读 · 0 评论 -
spring boot 对跨域请求的设置
现代浏览器处于安全的考虑,在http/https请求时必须遵守同源策略,否则即使跨域的http/https 请求,默认情况下是被禁止的,ip(域名)不同、或者端口不同、协议不同(比如http、https) 都会造成跨域问题。一、 前端解决方案1. 使用 JSONP 来支持跨域的请求,JSONP 实现跨域请求的原理简单的说,就是动态创建script 标签,然后利用 script 的 SR...转载 2019-08-22 10:58:46 · 653 阅读 · 0 评论 -
RabbitMQ-Java Client API Guide
概述RabbitMQ Java client 将com.rabbitmq.client作为其顶层包. 关键类和接口有:Channel Connection ConnectionFactory Consumer协议操作可通过Channel接口来进行.Connection用于开启channels,注册connection生命周期事件处理, 并在不需要时关闭connections.Co...转载 2019-08-12 14:42:13 · 368 阅读 · 0 评论 -
java操作rabbitMq指南
java client的使用本篇博客介绍RabbitMQ java client的一些简单的api使用,如声明Exchange,Queue,发送消息,消费消息,一些高级api会在下面的章节详细的说明。概述首先加入RabbitMQ java client依赖:<dependencies> <dependency> &l...转载 2019-08-12 14:07:00 · 870 阅读 · 0 评论 -
jackson objectMapper相关操作
ObjectMapper mapper = new ObjectMapper();1.对象转json字符串Useruser=newUser();StringuserJson=mapper.writeValueAsString(user);2.Map转json字符串Mapmap=newHashMap();Stringjson=mapper.writeValu...转载 2019-08-08 14:51:46 · 523 阅读 · 0 评论