Java进阶
文章平均质量分 66
追逐梦想永不停
在此起誓,我愿为梦想拼上一切,只要梦想还未实现,我就不会停下。
展开
-
前端框架里url中#的真正作用
最近看本人公司的前端项目,发现url中经常会包含 # 号,如下:其中,是一个controller的mapping,也是一个controller的mapping,是个参数,的controller会接收这个参数,根据值不同进行不同的处理、展示不同的菜单。但是,其中的,一直搞不懂是什么意思。主要有2个问题:1.如果点击页面按钮,后的内容就会变化,展示不同的页面例如:2.但是,如果直接修改浏览器中的url中#后面的内容,页面却不会变,没有任何作用汇总一下,问题就是:后的内容有什么用?到底是怎么实现页面跳原创 2022-12-05 11:04:25 · 2821 阅读 · 0 评论 -
java过滤器设置匹配的url与忽略的url的方法
配置java过滤器时,会用到FilterRegistrationBean,可以设置匹配的url与忽略的url。()原创 2022-08-24 17:39:07 · 4885 阅读 · 1 评论 -
Java后台解决request请求体不能重复读取+解决XSS漏洞问题
本文使用了3个java类,原理是使用过滤器,封装一个自定义的HttpServletRequest对象,重写其中的、等方法,替换掉非法字符\等,使得从request中获得的key-value类型参数、header参数、请求体(包含json)参数是合法字符,以防止XSS漏洞;同时增加了request请求体可以重复读取的功能。原创 2022-08-24 16:59:36 · 2171 阅读 · 0 评论 -
腾讯会议对接日记——JWT Tocken使用方法
最近有个需求,要对接腾讯会议。主要有3个方面:1.人员信息要传给腾讯,才能生成用户,才能参与腾讯会议;用到了IDaaS开放平台。2.要通过接口创建会议、取消会议等。3.后续主要需要从腾讯获取参会人员信息、参会时长等数据。调用IDaaS开放平台的接口,用到了JWT Tocken;在此记录下使用方法。原创 2022-08-23 19:53:28 · 813 阅读 · 0 评论 -
sql的join中使用函数导致查询变慢的坑
sql中联查其它表时,不要用多余的函数,会导致查询变的非常慢;如果实在要用函数,就修改表结构,加索引,然后不用这个函数。原创 2022-08-22 10:11:32 · 873 阅读 · 0 评论 -
kettle使用db2的sql中--不生效的坑
使用kettle时,如果连接的数据库是db2,需要注意,写sql时如果用--注释是不会生效的,会让--后的所有sql语句失效。原创 2022-08-22 09:46:07 · 1039 阅读 · 0 评论 -
一个项目中同时使用ibmMQ5与ibmMQ9的jar包的方法(Maven引入本地jar包方法)
有一个java后台项目,之前一直使用着版本的jar包;这个后台项目与另外2个系统通过ibmMQ队列有交互。突然有一天,其中1个系统要升级ibmMQ环境,升级后,要求其它系统使用版本的jar包,必须更换,不换会报错;但是另1个系统仍然需要用版本的jar包,不能换成9,换了就会报错。原创 2022-08-19 14:00:03 · 867 阅读 · 0 评论 -
生产环境sql优化日记——从几十分钟优化到几十秒钟
真实sql优化案例原创 2022-07-05 19:28:24 · 361 阅读 · 0 评论 -
xss漏洞修复踩坑总结
一、前言最近测试发现系统某个接口有个xss漏洞,比如,保存数据入库时,会把<a>标签保存入库;然后查看列表时,会把<a>标签显示出来;说是这个漏洞可以构建恶意链接,点击会跳转到恶意网址,让修复掉。二、修复方法:前端修复这个问题之前也遇到过,于是就按照之前的修复方法,让前端加一个xss.js,过滤掉不合法的标签后,再把数据传给后台。谁知道这次不行了,测试直接抓包,用postman直接给后台发送含有<a>标签的请求,结果又存入数据库了。如果从前端输入含有<a原创 2022-05-18 20:04:08 · 3333 阅读 · 1 评论 -
java正则表达式匹配域名
下方代码可以把url中的域名用正则表达式匹配找出来。然后可以做白名单、黑名单之类的。ArrayList<String> whiteList = new ArrayList<String>();whiteList.add("www.baidu.com");whiteList.add("editor.csdn.net");//例子String url="http://www.baidu.com/abc/def/index.html";url=URLDecoder.deco原创 2022-05-05 14:59:44 · 2301 阅读 · 0 评论 -
svn多个项目迁移到同一个git的不同分支下的方法
一、前言最近要把svn多个项目迁移到同一个git的不同分支下。如果只迁移代码的话,那当然好说;问题是想把svn多个项目的提交记录也迁移到git,还是迁移到同一个git的不同分支下,就有点麻烦了。在此总结下具体操作流程。二、迁移目标SVN项目my_project,有2个url,分别是生产与测试的代码:http://svncloud.it.com/my_project/prodhttp://svncloud.it.com/my_project/test要迁移到同一个git的main分支与te原创 2022-04-14 14:22:38 · 1030 阅读 · 0 评论 -
连接远程redis的详细步骤
一、前言最近生产环境迁移redis,原来是自己搭建的一套redis,现在迁移到云平台的redis了。登录生产redis的方法也变了;原来是直接登录到redis服务器的小黑窗,输入命令就能连接了;现在由于无法登录云平台的服务器,也就不能这样登录redis了。以下是连接远程redis的方法。二、详细步骤1.选择一台生产可以登录的服务器,并且这台生产服务器可以连接到云平台的reidstelnet 10.123.123.123 6379确定telnet能通。(假设这台服务器上的jar/war包,原创 2022-04-02 11:25:02 · 29319 阅读 · 3 评论 -
redis批量删除key命令
1.cd到redis的src目录,要使用其中的文件redis-cli执行后续命令(也可能不需要这步)cd /home/useradmin/redis-5.0.3/src2.redis批量删除key命令如下:redis-cli -n 1 -c -h 10.123.123.123 -p 37652 -a abc123@456 keys "exam:*" | xargs redis-cli -n 1 -c -h 10.123.123.123 -p 37652 -a abc123@456 del说明原创 2022-04-01 12:32:09 · 15006 阅读 · 0 评论 -
kafka队列不消费的一种情况(找错group的情况)
一、问题概述最近碰到了一个问题,使用命令查看kafka的某个topic的消费情况,发现这个topic没有消费者,剩余消息(LAG)一直是满的;但是查看java后台日志,发现确实消费了这个topic,功能正常;所以问题就是查看kafka的topic的消费情况时,LAG为什么不减少、并且显示没有消费者呢?二、问题详情1.kafka有一个命令,可以查看某个组中的topic的消费情况,样例如下:./kafka-consumer-groups.sh --bootstrap-server 127.0.0.1原创 2022-04-01 06:39:11 · 7339 阅读 · 0 评论 -
HashMap最全中文注释+源码(个人总结)
一、中文注释+源码(个人总结)package java.util;import java.io.IOException;import java.io.InvalidObjectException;import java.io.Serializable;import java.lang.reflect.ParameterizedType;import java.lang.reflect.Type;import java.util.*;import java.util.function.BiC原创 2022-03-10 16:49:22 · 923 阅读 · 0 评论 -
java webSocket wss踩坑总结
一、前言之前项目中有一套http环境下的webSocket前后台项目(ws协议);突然测试环境要切换成https,导致webSocket通信遇到了问题(wss协议)。以下是遇到的问题与解决方法个人总结。二、问题与解决方法1.问题概述:vconsole中只报错WebSocket Open Error,但是没有具体错误原因。问题详情:前端项目是vue移动端app项目,其中有vconsole可以查看debug时控制台打印的信息;切换为https后,前端代码执行建立webSocket连接的代码时,建立原创 2022-03-02 15:42:08 · 11743 阅读 · 6 评论 -
23种设计模式个人简要总结(更新中)
常用设计模式可以分为三大类:1 创建型模式(5种)●工厂模式(Factory Pattern)●抽象工厂模式(Abstract Factory Pattern)●单例模式(Singleton Pattern)●建造者模式(Builder Pattern)●原型模式(Prototype Pattern)2 结构型模式(7种)●适配器模式(Adapter Pattern)●装饰器模式(Decorator Pattern)●代理模式(Proxy Pattern)●外观模式(Facade Pa原创 2022-02-11 17:12:17 · 1370 阅读 · 1 评论 -
Java使用WebSocket发送消息后前端无法收到的坑与解决办法
一、前言最近在把后台Golang版的WebSocket项目修改为Java版的WebSocket项目;由于没有Golang的代码,只能自己想办法硬猜该怎么写。在踩了一堆坑后,终于基本写完了。以下是踩坑总结与解决办法。二、问题描述1.前后台的WebSocket通信,传递的是字节数组(byte[]),而不是String。2.因此,后台使用wsSession.getAsyncRemote().sendText(string)给前台发送消息的话,前台会报错,无法解析。3.后台尝试用ByteBuffer对象原创 2022-01-12 17:24:44 · 11318 阅读 · 1 评论 -
Java Socket实用样例
一、前言最近用到了Java的Socket通信。在搜索用法的过程中,发现好多都是用System.in举例的;但是实际工作中,并不是用System.in从控制台输入消息的,不太好用。以下是个人从工作中总结的Socket实用代码样例。二、服务器端(ServerSocket)服务器端等待Socket连接的建立,接收Socket请求报文,处理后给Socket客户端返回响应报文。1.SocketThread类,主要处理类,用来接收Socket请求报文、处理、返回响应报文。@Slf4jpublic cl原创 2022-01-10 15:14:19 · 4043 阅读 · 0 评论 -
mybatis多数据库连接配置方法简单实例
一、前言最近一个Java项目中,需要配置多个不同的mybatis数据库连接,在此总结下配置方法。【也可以叫做mybatis多数据源(DataSource)配置方法】二、步骤1.springboot项目中,在pom.xml中导入mybatis(或mybatis-plus)的jar包<dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifact原创 2021-12-17 14:40:59 · 12187 阅读 · 5 评论 -
Consider defining a bean named ‘entityManagerFactory‘ in your configuration的正确解决方法
一、简述有一个Java项目A,使用了mybatis-plus;有一个Java项目B,使用了jpa(hibernate);现在要把B项目整个合并到A项目中,遇到了这个错误:Consider defining a bean named 'entityManagerFactory' in your configuration也就是说,mybatis-plus与jpa(hibernate)在一个Java项目中同时使用时,报错,找不到:entityManagerFactory。二、踩坑过程1.刚开始合原创 2021-12-15 15:17:19 · 16096 阅读 · 7 评论 -
ElasticSearch常用命令与curl操作总结
ElasticSearch生产环境配置与curl操作总结ElasticSearch生产环境配置查看ES是否启动查看Kibana是否启动启动ES的命令启动kibana的命令ES设置密码kibana设置用户名密码CURL操作ElasticSearchcurl删除索引curl创建索引curl查看索引相关语句curl新增数据curl查询数据curl清空索引数据(保留索引结构)ElasticSearch生产环境配置查看ES是否启动jps -l可以查看ES进程号,例如17323 org.elasticsea原创 2021-07-12 17:09:17 · 1535 阅读 · 0 评论 -
mybatis-plus多数据库不打印日志的java解决方法
最近遇到一个问题,项目中用的是mybatis-plus,配置了多个数据库,不打印sql日志;网上一大堆说yml中配置的,但是配置后执行sql会报错:table不存在,不能用。java.sql.SQLSyntaxErrorException: Table 'main_db.user_msg' doesn't existuser_msg表确实不在main_db库中,在另一个库user_db中。本人分析,yml中配置后,mybatis-plus就会用另一个SqlSessionFactory了,而原创 2021-07-06 17:57:01 · 3932 阅读 · 0 评论 -
ElasticSearch与Mysql对比(ElasticSearch常用方法大全,持续更新)
ElasticSearch是一个开源的搜索引擎,可以它可以被下面这样准确的形容:一个分布式的实时文档存储,每个字段可以被索引与搜索 一个分布式实时分析搜索引擎 能胜任上百个服务节点的扩展,并支持 PB 级别的结构化或者非结构化数据...原创 2021-07-01 16:30:47 · 1508 阅读 · 0 评论 -
git下开发方法与svn下开发方法对比与总结
一、前言通过实际开发经历发现,git与svn下代码开发的步骤是不同的,先二、git下开发方法三、svn下开发方法原创 2021-06-16 12:14:46 · 304 阅读 · 0 评论 -
前后端分离后nginx与项目路径配置方法总结
一、前言前后端分离后,在同一台主机上,前端无法直接访问后台接口,会跨域;因此需要使用nginx,才能让前后端通信,便于开发。原创 2021-06-04 13:21:13 · 12520 阅读 · 2 评论 -
考试系统交接日记(五):高并发架构简述与kafka处理高并发业务
一、高并发架构简述考试系统是一个百万级高并发的系统,可能同时有百万级的用户参加考试。考试系统主要涉及到高并发的功能为:用户报名考试、获取试卷、用户提交试卷答案、返回用户得分。考试系统其余主要功能为:管理员与老师管理试卷、老师查看自己班的考生得分、考试记录推送到其它系统等。考试系统使用了30多个服务器,其中某些服务器上(性能比较好的),1个服务器部署2个项目实例。考试系统后台大部分为springboot项目。●架构记录如下:1.使用nginx做网关,实现负载均衡、静态资源访问.原创 2021-05-17 16:41:21 · 784 阅读 · 3 评论 -
生产环境通用java项目发版脚本
此脚本用来先kill之前运行中的java进程,之后启动新的java进程。启动脚本的命令例如:/home/admin/shell/publish_jar.sh prod all start代码如下:#! /bin/shprofile=$1port=$2ports=(8080 8081 8082 8083)jar_file=/home/admin/jar/springboot.jars_start(){ nohup java -jar $jar_file --server.原创 2021-04-28 16:00:35 · 356 阅读 · 0 评论 -
springcloud笔记(下),Nacos项目搭建方法
简要总结一下Nacos项目搭建方法。Nacos + Sentinel + Dubbo个人笔记,大佬可直接忽略。一、概念1.Nacos:是阿⾥巴巴开源的⼀个针对微服务架构中服务发现、配置管理和服务管理平台。 Nacos就是注册中心+配置中心的组合(Nacos=Eureka+Confifig+Bus)2.Sentinel:是⼀个⾯向云原⽣微服务的流量控制、熔断降级组件。替代Hystrix,针对问题:服务雪崩、服务降级、服务熔断、服务限流3.Dubbo RPC:...原创 2021-03-22 16:48:22 · 495 阅读 · 0 评论 -
springcloud笔记(上),Eureka等
【这篇文章是纯笔记了,有点混乱,先发上去保存一下,后期有空再优化】SOA->Dubbo微服务架构->Spring Cloud提供了一个一站式的微服务解决方案--------------------------单体应用:优点:项目前期开发节奏快,团队成员少的时候能够快速迭代架构简单,MVC架构,只需要借助IDE开发、调试即可易于测试,只需要通过单元测试或者浏览器完成易于部署,打包成单一可执行的jar或者打成war包放到容器内启动缺点:随着不断的功能迭代,单个项目过原创 2021-02-05 17:24:59 · 349 阅读 · 1 评论 -
Java进阶:Dubbo相关
DubboDubbo是一款高性能的Java RPC(远程过程调用)框架。====================================================<架构发展流程>单体架构单体架构所有模块和功能都集中在一个项目中,部署时也是将项目所有功能都整体部署到服务器中。拉勾网V1.0:模块:登录/注册、C端业务、B端业务、搜索业务(站内搜索)、admin后台、活动业务(线上短期活动、业务推广等)MVC结构,SSM框架,所有的业务都放在一个tomcat里。优原创 2020-12-31 19:23:59 · 236 阅读 · 0 评论 -
Java进阶:Zookeeper相关笔记
概要总结:●Zookeeper是一个开源的分布式协调服务,需要下载并部署在服务器上(使用cmd启动,windows与linux都可用)。●zookeeper一般用来实现诸如数据订阅/发布、负载均衡、命名服务、集群管理、分布式锁和分布式队列等功能。●有多台服务器,每台服务器上部署一个zookeeper,在每个zookeeper中要创建myid文件,标注自己的id,然后在配置文件zoo.cfg中写好其它zookeeper的ip与通信端口,这些zookeeper之间就可以通信了。●搭建zookee原创 2020-12-08 10:16:00 · 1339 阅读 · 0 评论 -
Java进阶:Netty实现RPC的代码
一、RPC是什么RPC,全称为Remote Procedure Call,即远程过程调用。它允许像调用本地服务一样调用远程服务。个人感觉,与http类似,都需要本地给远程服务器发报文,获取返回信息,因此记录下两者的区别。RPC与http区别:http://www.ccutu.com/244407.htmlRPC可以基于TCP协议,也可以基于HTTP协议;RPC主要用于公司内部的服务调用,性能消耗低,传输效率高,服务治理方便。HTTP主要用于对外的异构环境,浏览器接口调用,..原创 2020-11-29 09:18:04 · 529 阅读 · 0 评论 -
Java进阶:分布式理论、架构设计(自定义RPC)
分布式系统:是一个硬件或软件组件分布在不同的网络计算机上,彼此之间仅仅通过消息传递进行通信和协调的系统。集群:多个人在一起做同样的事。分布式:多个人在一起做不同的事。====================================CAP定理:一个分布式系统不可能同时满足一致性(C:Consistency),可用性(A:Availability)和分区容错性(P:Partition tolerance)这三个基本需求,最多只能同时满足其中的2个。C 一致性:分布式系统当中的一致性原创 2020-11-27 17:47:28 · 254 阅读 · 0 评论 -
Java进阶:Cluster(集群)模式潜在问题及解决方案、Web服务综合解决方案
一、一致性hash问题及解决方案分布式与集群:分布式一定是集群,但是集群不一定是分布式。分布式:把一个系统【拆分】成多个子系统,每个子系统负责各自的那部分功能,独立部署,各司其职。(功能拆分)集群:多个实例共同工作,最简单/最常见的集群是把一个应用复制多分部署。(功能不一定拆分)------------------一致性hash算法为什么需要使用Hash?Hash算法较多应用在数据存储和查找领域,最经典的就是Hash表,它的查询效率非常高,其中的hash算法如果设计比较好的话,那么ha原创 2020-11-20 11:26:54 · 994 阅读 · 0 评论 -
Java进阶笔记(七):Nginx相关
Nginx是什么是一个高性能的HTTP和反向代理web服务器(及电子邮件IMAP/POP3代理服务器),特点是占有内存少,并发能力强。Nginx源代码是使用C语言开发的。Nginx可以做什么http服务器(web服务器)反向代理服务器负载均衡服务器动静分离(动态文件与静态文件分离)Nginx注重效率,能够经受高负载的考验,支持5万个并发连接数,同时对CPU和内存占用非常低。(1万个没有活动的连接仅占用2.5M的内存)Nginx的特点跨平台,可以在大多数类Unix操作系统上编译原创 2020-11-09 11:30:16 · 280 阅读 · 0 评论 -
Java进阶笔记(六):Tomcat相关
什么是TomcatTomcat是一个轻量级Web应用服务器(Web容器),可以接收客户端发来的http、https请求,并返回给客户端相应的资源信息。用Java编写的Servlet、jsp程序需要部署在Web容器上,才能实现功能。Tomcat体系结构一、Connector和Container1.Tomcat有两个功能:●和客户端浏览器进行交互,进行socket通信,将字节流和Request/Response等对象进行转换●使用Servlet容器处理业务逻辑2.这两..原创 2020-11-09 10:41:00 · 773 阅读 · 0 评论 -
Java进阶课程笔记免费分享_资源整合帖
一、前言最近本人报了一个《拉勾教育Java高薪训练营》,花了9800元,算是为了提高自己(的薪资)的投资吧。课程有12个阶段,每个阶段有一堆模块,全部学完预计得6个月……在此,本人准备把每个模块的笔记整理出来,免费分享给大家,一起学习进步,如果有什么问题,欢迎留言沟通。笔记内容保证干货,假一赔一!(如有大佬指出错误,本人一定修改,赔您一篇正确的笔记^_^)其实主要是想证明自己没有白学,钱没有白花!二、Java进阶课程笔记链接(笔记会定期更新)第一阶段 开源框架源码剖析模.原创 2020-11-09 13:09:38 · 2293 阅读 · 2 评论 -
Java进阶笔记(五):SpringBoot相关
一、springboot是什么是一种快速使用spring的方式,简化了大量配置文件。SpringBoot是所有基于spring开发的项目的起点。SpringBoot的目的是为了让用户尽可能快的跑起来Spring应用程序并尽可能减少配置文件。=========================二、springboot原理基于"约定优于配置"(Convention over Configuration)思想,使用默认值简化配置,开发人员仅需规定应用中不符约定的部分。(如果不想用默..原创 2020-10-28 15:39:12 · 443 阅读 · 0 评论 -
Java进阶笔记(四):SpringMVC相关
springMVC是什么:spring提供的用于简化web开发的框架。--------------------------------view:视图(html)Controller:只负责接收请求、转发请求service:处理业务逻辑Dao:操作数据库经典三层(代码架构):表现层(view、controller)业务层(service)Dao层(dao)MVC模式(代码组织方式/形式):Model模型(数据模型[pojo、vo、po]+业务模型[业务逻辑]):View视图(j原创 2020-10-16 16:43:14 · 368 阅读 · 1 评论