JAVA
文章平均质量分 92
With_Her
这个作者很懒,什么都没留下…
展开
-
JWT实现Token会话校验
前述:最近新项目,会话相关不是我搞的,但是比较好奇,就翻了翻,发现用到了JWT。之前没听过更没用过。所以更好奇了。要扩充知识的广度。所以专门了解一下。JWT是啥?比较官方的表述是这样的:JWT(JSON WEB TOKEN):JSON网络令牌,JWT是一个轻便的安全跨平台传输格式,定义了一个紧凑的自包含的方式在不同实体之间安全传输信息(JSON格式)。它是在Web环境下两个实体之间传输数据的一项标准。实际上传输的就是一个字符串。广义上讲JWT是一个标准的名称;狭义上JWT指的就是用来传递原创 2022-01-05 14:36:27 · 1066 阅读 · 0 评论 -
Nacos配置与踩坑总结
核心问题:1.不同域名,走不同配置2.开关、配置、JSON三种配置类型解决方案设计思路:1.分三大类:业务配置、域名配置、域名自定义配置业务配置:用于配置所有业务中的配置信息针对业务情况,分为三类业务配置:开关配置、基础配置、数据配置(黑/白名单) 每种配置都为单独的nacos针对大促情况:将三类配置各自再两个环境配置,共三个环境配置,方便在不同配置环境中自由切换域名配置:用于配置域名走哪个配置环境,实现出现问题快速将某域名切换到不同环境域原创 2021-11-30 10:38:11 · 3691 阅读 · 2 评论 -
使用mybatis按时间范围查询数据与数据库查询不一致(时区问题)
前述:有个按时间范围查询的需求,结果总是查不到今天的数据,或者说查不到最近13小时内的数据很奇怪详述:原来是时区问题,没有走默认的东八区,而是走了其他时区mysql时区设置默认是操作系统时区 而mybatis中间使用Calender做类型转换,为CST时区其他在ym中配置dataSource信息中,我们需要在url中指定时区:在url后加上serverTimezone=GMT%2B8 即可总述:以前都是默认走东八区,这次遇到了竟然没有走默认的东八区,我也很奇...原创 2020-07-02 22:45:26 · 3175 阅读 · 0 评论 -
浅谈SpringBoot自动配置
要点: 约定大于配置 starter、spring.factories @EnableAutoConfiguration 前述:MAC中的配置:Boot中的配置:这是springboot相较springmvc,带给我们最直观的使用感受曾经在mvc框架下,我们要构建项目,需要以xml形式写一堆配置文件,书写易错,配置繁杂,管理麻烦终于!springboot的出现,将我们从这配置的苦海中带到天堂。"腰不疼了,头发掉的也少了"详述:一、..原创 2020-05-31 23:47:43 · 756 阅读 · 0 评论 -
Mybatis踩坑记:JOIN ON 后多条件要加()
前述:今天遇到一个诡异的问题,mybatis按时间范围查询数据不正确,拿Console窗口打印出来的sql去数据库跑又没问题我怀疑人生了详述:sql需要按时间查询,结果发现数据不正确,结果查询出来的时间竟然还有超出的!匪夷所思!经排查原来是我LEFT JOIN ON后面有多个筛选条件,这里一定要将ON后面的筛选条件加(),不然mybatis处理时逻辑会不正确!总述:知其然,还要知其所以然特此记录...原创 2020-05-28 13:30:10 · 3124 阅读 · 0 评论 -
MAC下Redis开启局域网IP可访问
前述:MAC下搭建了本地Redis后,127.0.0.1可以访问,但在尝试局域网IP访问,却发现并不行。我目前本地用的redis 4.0.14详述:原因是因为redis.conf中的bind,保护模式的原因1.关闭 bind2.关闭保护模式:protected-mode no3.题外,开不开这个都没事,主要是为了后台可运行redis开启守护进程:daemonizeyes4.重启redis(终端进入到redis所在的文件目录)启动命令:redis-server指定配..原创 2020-05-22 22:14:11 · 1630 阅读 · 0 评论 -
Jrebel
https://jrebel.qekang.com/1d5c08ec-76e7-49c8-8737-f9bd98a7465f2286581377@qq.com仅个人用途,商业用途请自行购买正版原创 2020-05-16 18:32:21 · 311 阅读 · 0 评论 -
IO多路复用原理解析(C10k问题,select,poll,epoll)
目录前述:何为C10k问题?何为多路复用?select、poll与Epollselect与poll的主要思路:但能不能减少遍历?能不能保存就绪的socket?Epoll就彻底解决了这些问题Epoll总结前述:何为C10k问题?即:最初的服务器是基于进程/线程模型。新到来一个TCP连接,就需要分配一个进程。假如有C10K,就需要创建1W个进程,...原创 2020-01-05 22:37:41 · 885 阅读 · 0 评论 -
零拷贝,NIO中的零拷贝
目录前述什么是“零拷贝”?目的与好处详述(Linux中的零拷贝)普通拷贝(I/O)操作sendfile方式的零拷贝带有DMA收集拷贝功能的sendfile实现的I/O注意⚠️新问题解决mmap(内存映射)方式NIO中的零拷贝ChanneltransferTo()——sendFilemap()/MappedByteBuffer——mmap...原创 2020-02-05 00:42:49 · 946 阅读 · 1 评论 -
布隆过滤器
目录前述:概述:1.结构:2.特点:3.为什么要用它?详述:1.存储原理:2.查询原理问题1.可能存在?2.一定不存在?使用:1.防止redis穿透2.防止恶意链接或者垃圾邮件,短信之类3.检索系统查询当前的输入信息是否存在于数据库中4.总之总结:前述:最近在深入了解redis时,提到了在遇到redis穿透问题时,可以利...原创 2020-01-29 17:21:50 · 310 阅读 · 0 评论 -
Redis概述与进阶技术点
前述:一直有用redis,但对redis的了解很片面,这次花了些时间,系统性的将redis了解的一遍,在这里记录,如果疑惑、补充、不对的地方,希望你可以及时留言交流!基本概念 redis是什么?(https://www.jianshu.com/p/2a23257af57b) 1.基于内存亦可持久化的日志型、Key-Value数据库。 2.支持存储的valu...原创 2020-01-14 16:49:37 · 497 阅读 · 1 评论 -
浅谈lambda表达式
Java8发布已经有一段时间了,这次发布的改动比较大,很多人将这次改动与Java5的升级相提并论。Java8其中一个很重要的新特性就是lambda表达式,允许我们将行为传到函数中。想想看,在Java8 之前我们想要将行为传入函数,仅有的选择就是匿名内部类。Java8发布以后,lambda表达式将大量替代匿名内部类的使用,简化代码的同时,更突出了原来匿名内部类中最重要的那部分包含真正逻辑的代码。尤其...转载 2019-12-17 15:11:50 · 248 阅读 · 0 评论 -
系统操作日志的实现——自定义注解、切面、线程池...
前述:项目需要系统操作日志,非查询操作,都进行统计,如:小明编辑用户信息。我的实现思路:1.利用注解+切面实现,自定义注解:@SysLog,切面使用@AfterReturning(value = "sysLog()",returning="rObj")注解,注:只有当执行方法正常返回时,进行切面拦截2.由子线程执行。有这么几个看得见好处:(1.)这样降低切面中的操作与业务代码的耦合,(...原创 2019-11-17 21:02:30 · 1119 阅读 · 0 评论 -
修改HttpServletRequest中header中的信息
废话一堆:由于业务有统一的鉴权系统,页面请求时在header中带过来gsid,正常业务没有问题,但是当需要下载文件时,前端统一用json解析响应,当响应文件时,对于前端来说不好处理,就决定使用简单的get请求下载文件,将gsid通过url带过来,这样的话后端鉴权就需要处理,当header中没有gsid时,从参数中取,为了尽可能少的改变公用的业务代码(指sso),就在当前项目中自定义权限拦截器。...转载 2019-11-17 19:48:31 · 2622 阅读 · 0 评论 -
IDEA类和方法注释模板设置(非常详细)
IDEA自带的注释模板不是太好用,我本人到网上搜集了很多资料系统的整理了一下制作了一份比较完整的模板来分享给大家,我不是专业玩博客的,写这篇文章只是为了让大家省事。这里设置的注释模板采用Eclipse的格式,下面先贴出Eclipse的注释模板,我们就按照这种格式来设置:类注释模板: ...转载 2018-08-31 11:33:17 · 245 阅读 · 0 评论 -
TCC分布式事物、可靠消息服务、服务降级方案
之前网上看到很多写分布式事务的文章,不过大多都是将分布式事务各种技术方案简单介绍一下。很多朋友看了还是不知道分布式事务到底怎么回事,在项目里到底如何使用。所以这篇文章,就用大白话+手工绘图,并结合一个电商系统的案例实践,来给大家讲清楚到底什么是 TCC 分布式事务。首先说一下,这里可能会牵扯到一些 Spring Cloud 的原理,如果有不太清楚的同学,可以参考之前的文章:《一文读懂Spr...转载 2019-07-26 15:36:38 · 721 阅读 · 0 评论 -
将springboot升级到springcloud
前述:之前公司来了个项目,那会儿自己用的是springboot框架搭的,后来又接手了公司另一个已开发的项目,是springcloud架构的微服务项目,而且要和之前的自己用springboot项目要相互打通,一个是springboot,一个springcloud。那么相互之间如何调用的问题便抛了出来springcloud服务之间是服务调用,而未集成cloud的springboot框架的项目...原创 2019-08-08 11:02:12 · 5439 阅读 · 0 评论 -
springcloud-config的服务化,高可用配置
在上一篇的《springcloud-config配置中心的搭建与使用》中:https://blog.csdn.net/With_Her/article/details/99288542,我们已经搭建并使用了springcloud-config服务中心,但是会发现,客户端直接通过配置的uri来调用服务中心,那么客户端和服务中心的耦合程度太高,如果服务中心修改ip地址,那么所有的客户端都要修改一遍配...原创 2019-08-13 16:26:11 · 260 阅读 · 0 评论 -
Spring Cloud版本 version命名说明
spring boot/cloud 项目中,看到如下配置: <parent> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-parent</artifactId> <...转载 2019-08-07 16:43:55 · 1791 阅读 · 0 评论 -
springcloud-config配置中心的搭建与使用
前言:公司的所有cloud微服务项目,目前都是在配置文件中配置了多套环境的配置文件,然后在启动时指定配置文件来加载启动。这样虽说可以,但是十分不便捷。在项目启动后,不能动态的修改配置参数,如果修改配置信息,只能通过重启服务器来实现。之前对接的一个其他团队做的项目中,他们用到了apollo配置中心来统一管理配置文件,那么springcloud中有没有提供类似的配置中心服务呢?答案是 当...原创 2019-08-12 16:22:48 · 1148 阅读 · 0 评论 -
关于切面的ProceedingJoinPoint
我们在使用切面解决问题时,经常用到下面的方法: @Around("productor()") public Object beforeMethod(ProceedingJoinPoint point){ return joinpoint.proceed(); }当时用@Around进行切面时,会传入ProceedingJoinPoint对象,那该对象我们可以进行哪些操作呢...原创 2019-09-11 17:51:04 · 2020 阅读 · 0 评论 -
EJB是什么?
1.我们不禁要问,什么是"服务集群"?什么是"企业级开发"?既然说了EJB 是为了"服务集群"和"企业级开发",那么,总得说说什么是所谓的"服务集群"和"企业级开发"吧!这个问题其实挺关键的,因为J2EE 中并没有说明白,也没有具体的指标或者事例告诉广大程序员什么时候用EJB 什么时候不用。于是大家都产生一些联想,认为EJB"分布式运算"指得是"负载均衡"提高系统的运行效率。然而,估计很...转载 2019-09-16 17:58:14 · 175 阅读 · 0 评论 -
redis的 : 命名方式以及模糊查询与删除
朋友向我发了一个redis缓存的截图,如下:问我该如何删掉region内所有的缓存我一开始也不太清楚,平时对redis都是一般get,set,对于这种有层级的显示缓存就不太了解不了解就去了解一下然后发现:原来在set的时候,key命名时以冒号分开,即可实现这种分层级的展示如:redis.set("a:b:c");在redis可视化工具中就会这样展示那么问题来了...原创 2019-10-09 09:54:32 · 1214 阅读 · 0 评论 -
一文读懂SpringCloud与Eureka,Feign,Ribbon,Hystrix,Zuul核心组件间的关系
概述毫无疑问,Spring Cloud是目前微服务架构领域的翘楚,无数的书籍博客都在讲解这个技术。不过大多数讲解还停留在对Spring Cloud功能使用的层面,其底层的很多原理,很多人可能并不知晓。因此本文将通过大量的手绘图,给大家谈谈Spring Cloud微服务架构的底层原理。实际上,Spring Cloud是一个全家桶式的技术栈,包含了很多组件。本文先从其最核心的几个组件入手,来剖...转载 2019-07-24 20:44:40 · 1060 阅读 · 0 评论 -
接收处理时间类型(Date)
在新项目中,突然遇到用postman去传一个时间格式字符串,接口是date类型,无法自动转换的问题以前项目框架都会自动转的,很费解后来引入了如下pom,即可自动将string类型转换为Date类型<!--接口返回数据data时间转换字符串--> <dependency> <groupId>com.fasterxml.jackson....原创 2019-07-17 11:17:48 · 2311 阅读 · 0 评论 -
SpringBoot下Redis切换db
我的springboot版本:1.5.6redis下,数据库是由一个整数索引标识,而不是由一个数据库名称。默认情况下,一个客户端连接到数据库0。一个redis实例,一般有默认有16个db,当然,也可以自己在redis的配置文件中配置redis的db数量/etc/redis/redis.conf文件中,有个配置项 databases = 16(‘16’,可自己配置具体大小,一般默...原创 2019-06-04 16:59:17 · 7399 阅读 · 6 评论 -
Java使用AES加密和解密
前言:高级加密标准(英语:Advanced Encryption Standard,缩写:AES),是一种区块加密标准。这个标准用来替代原先的DES,已经被多方分析且广为全世界所使用。AES的基本要求是,采用对称分组密码体制,密钥长度的最少支持为128、192、256,分组长度128位,算法应易于各种硬件和软件实现。1998年NIST开始AES第一轮分析、测试和征集,共产生了15个候选算法...原创 2018-09-05 15:54:39 · 1656 阅读 · 1 评论 -
SpringBoot下,利用@WebFilter配置使用与注意Filter
Filter简介Filter也称之为过滤器,它是Servlet技术中最实用的技术,WEB开发人员通过Filter技术,对web服务器管理的所有web资源:例如JSP,Servlet,静态图片文件或静态HTML文件进行拦截,从而实现一些特殊功能。例如实现URL级别的权限控制、过滤敏感词汇、压缩响应信息等一些高级功能。Filter工作原理当客户端发出Web资源的请求时,Web服务器根据应用...原创 2018-09-11 18:08:04 · 55288 阅读 · 20 评论 -
JAVA网络编程:使用NetworkInterface 获得本机在局域网内的IP
1、问题提出在使用 Java 开发网络程序时,有时候我们需要知道本机在局域网中的 IP 地址。很常见的一种做法是调用本地命令(比如 Windows 上的 ipconfig 命令和 Linux 上的 ifconfig 命令),接着解析本地命令的输出,最后得到本机在局域网内的 IP 地址。很明显,这种做法不够方便,也不够 Java。于是引出了 Java 在 JDK1.4 的时候添加的一个类: N...转载 2018-08-30 15:56:16 · 3343 阅读 · 1 评论 -
Servlet的Request.getInputStream()只能读取一次问题
目录原因分析解决方案 原因分析 在使用HTTP协议实现应用间接口通信时,服务端读取客户端请求过来的数据,会用到request.getInputStream(),第一次读取的时候可以读取到数据,但是接下来的读取操作都读取不到数据原因:1. 一个InputStream对象在被读取完成后,将无法被再次读取,始终返回-1;2. InputStream并没有实现reset...转载 2018-09-04 14:29:56 · 4169 阅读 · 0 评论 -
slf4j+logback日志框架的搭建与使用
据说马上要开项目了,自己闲来无事就基于SpringBoot来搭建一套开发框架,在日志框架上,我本次选用了Slf4j+Logback的日志框架。特此在这里记录一下。 前景提要:slf4j :定义了一套接口,是一个日志门面,可实现多个日志系统间快速切换(通过修改配置文件)。ps:Slf4j相当于一个接口,它没有具体的日志实现,但可以通过它来调用如log4j、logback等具体的log日...原创 2018-08-29 17:18:03 · 887 阅读 · 0 评论 -
外行人都能看懂的SpringCloud,错过了血亏!
一、前言只有光头才能变强认识我的朋友可能都知道我这阵子去实习啦,去的公司说是用SpringCloud(但我觉得使用的力度并不大啊~~)...所以,这篇主要来讲讲SpringCloud的一些基础的知识。(我就是现学现卖了,主要当做我学习SpringCloud的笔记吧!)当然了,我的水平是有限的,可能会有一些理解错的的概念/知识点,还请大家不吝在评论区指正啊~~SpringCloud ...转载 2018-08-28 14:01:33 · 370 阅读 · 0 评论 -
FastJson与Jackson,修改SpringBoot默认的JSON
JSON在前后台数据通信过程中,json数据格式是一种比较常用的方式。将javabean转化为json格式字符串,可以通过简单的字符串拼接JSON的全称是”JavaScript Object Notation”,意思是JavaScript对象表示法,它是一种基于文本,独立于语言的轻量级数据交换格式。JSON有两种表示结构,对象和数组。对象结构以”{”大括号开始,以”}”大括号结束...原创 2018-08-23 15:14:55 · 11087 阅读 · 0 评论 -
JAVA正则表达式,matcher.find()和 matcher.matches()的区别
1.find()方法是部分匹配,是查找输入串中与模式匹配的子串,如果该匹配的串有组还可以使用group()函数。matches()是全部匹配,是将整个输入串与模式匹配,如果要验证一个输入的数据是否为数字类型或其他类型,一般要用matches()。 2.Pattern pattern= Pattern.compile(".*?,(.*)"); Matcher matcher =...转载 2018-08-30 16:12:42 · 1665 阅读 · 0 评论 -
整理了HttpURLConnection与HttpClient的使用Demo
HttpURLConnection与HttpClient是java目前较为常用的访问HTTP的api接口的方法。自己将这两种方法整理为demo,在此保存。Demo目录Connection类package com.Util.connection;import org.apache.http.HttpEntity;import org.apache.http.NameVal...原创 2018-08-20 14:00:37 · 877 阅读 · 0 评论 -
关于HttpURLConnection与HttpClient
写了俩小时的博客,没有自动保存,点了关闭网页,然后没了...没了...这种心情,就想...算了,直接粘贴复制吧...0.所需jar <!--HttpClient所需jar--> <dependency> <!-- httpclient的接口基本都在这儿--> <groupI...转载 2018-08-13 17:54:43 · 281 阅读 · 0 评论 -
SpringBoot配置热加载(idea)
热部署是啥?我在开发中最直观的感受,就是配置了热部署,在你启动项目后,如果你修改了某行代码,Ctrl+S保存后,项目就会自动重新编译。不需要改完代码后,再手动的去重新启动项目。当然了,对于我这种习惯了写几个代码就Ctrl+S的人来说,可能就会经常重启了....好了,直接上如何配置使用吧1.Jar<!-- spring boot devtools 热部署依赖包. -->...原创 2018-09-13 10:48:22 · 453 阅读 · 0 评论 -
Lombok的使用
作用我们的一些实体类,都需要get,set,tostring等,如果使用了Lombok,那我们则只需在实体类上加上@data的注解,无需手写get,set等方法。极大的提高了我们代码的效率配置1.idea添加安装Lombok控件打开IDEA的Setting –> 选择Plugins选项 –> 选择Browse repositories –> 搜索lombok...转载 2018-09-25 19:48:48 · 1171 阅读 · 0 评论 -
mybatis分页插件的使用——pagehelper
引入jar<dependency> <groupId>com.github.pagehelper</groupId> <artifactId>pagehelper</artifactId> <version>4.1.0</version></dependency&am原创 2018-09-25 20:02:55 · 255 阅读 · 0 评论 -
jetty启动配置JVM参数 与-D命令
cd到start.jar所在目录,jetty的webapps的父目录运行命令java -jar start.jar --add-to-start=jvm这个命令会帮你在start.ini里面加上一些JVM默认配置参数(注释状态),然后你想用哪些参数,把相关的注释取消掉就好了。注意:记得把--exec这个参数取消注释,官方解释是想要在ini文件里面加JVM参数配置,就要加上--e...原创 2019-06-03 09:59:04 · 3850 阅读 · 0 评论