- 博客(89)
- 资源 (2)
- 收藏
- 关注
原创 Java NIO学习笔记(全面详解)
NIO 中的 N 可以理解为 Non-blocking,不单纯是 New,是解决高并发、I/O高性能的有效方式。Java NIO是Java1.4之后推出来的一套IO接口,NIO提供了一种完全不同的操作方式, NIO支持面向缓冲区的、基于通道的IO操作。新增了许多用于处理输入输出的类,这些类都被放在java.nio包及子包下,并且对原java.io包中的很多类进行改写,新增了满足NIO的功能。
2023-03-07 08:21:00 952
原创 MySQL客户端和服务器进程通信的几种方式
真实环境中,数据库服务器进程和客户端进程可能运行在不同的主机中,它们之间必须通过网络来进行通讯。MySQL采用TCP作为服务器和客户端之间的网络通信协议。在网络环境下,每台计算机都有一个唯一的IP地址,如果某个进程有需要采用TCP协议进行网络通信方面的需求,可以向操作系统申请一个端口号,这是一个整数值,它的取值范围是0~65535。这样在网络中的其他进程就可以通过IP地址 + 端口号的方式来与这个进程连接,这样进程之间就可以通过网络进行通信了。
2024-03-05 14:18:58 1063
原创 gRPC学习笔记详解
1. gRPC 是由google开源的一个高性能的RPC框架。Stubby Google内部的RPC,演化而来的,2015正式开源。云原生时代是一个RPC标准。2. gRPC 核心的设计思路1. 网络通信 ---> gRPC自己封装网络通信的部分 提供多种语言的 网络通信的封装 (C Java[Netty] GO)2. 协议 ---> HTTP2 传输数据的时候 二进制数据内容。支持双向流(双工)连接的多路复用。
2024-02-04 12:01:12 863
原创 一文学习Thrift RPC
1. thrift-client 代表的是服务的调用者2. thrift-server 代表的是服务的提供者3. thrift-common RPC编程共有的内容 1,实体类型 2,服务接口。
2024-01-25 18:09:41 1442
原创 从零学习Hession RPC
Hessian使用的resin服务器,类似于Tomcat,使用的是HTTP协议,由于使用的是JDK做代理,所以必须要用接口定义调用类。对象的数据类型,必须要实现Serliazble。服务的发布需要使用HessanServlet进行配置,在web.xml进行配置。基于Java编程语言设计的RPC框架,只支持Java编程语言使用,现在新出的gRPC Thrift,支持多语言。Hessian的序列化是二进制的。那么如何进行调用配置的服务,客户端进行代理,HessianProxyFactory做代理服务。
2024-01-24 17:06:02 792
原创 Netty学习笔记
Netty isNetty是一个异步事件驱动的网络应用框架。用于快速开发可维护的高性能协议服务器和客户端。Netty是一个NIO客户服务器框架,它能够快速和容易地开发网络应用,如协议服务器和客户端。它大大简化和精简了网络编程,如TCP和UDP套接字服务器。快速和简单 "并不意味着开发出来的应用程序会出现可维护性或性能问题。Netty的设计是经过精心设计的,其经验来自于许多协议的实施,如FTP、SMTP、HTTP以及各种基于二进制和文本的遗留协议。
2023-03-09 10:10:25 556 1
原创 自定义注解实现AOP
从JDK5开始,Java增加对元数据的支持,也就是注解,注解与注释是有一定区别的,可以把注解理解为代码里的特殊标记,这些标记可以在编译,类加载,运行时被读取,并执行相应的处理。通过注解开发人员可以在不改变原有代码和逻辑的情况下在源代码中嵌入补充信息。/*** @return 操作类型}/*** 定义切点} /*** 切点后置通知* @param joinPoint 切点* @param result 返回结果。
2022-09-28 11:12:53 2843
原创 idea 无法识别SpringBoot配置文件,没有提示
打开项目配置:Project Settings -> Modules -> 点击小绿叶
2022-07-06 11:53:58 1612
转载 vue组件间通信六种方式
组件是 vue.js最强大的功能之一,而组件实例的作用域是相互独立的,这就意味着不同组件之间的数据无法相互引用。一般来说,组件可以有以下几种关系:
2022-06-12 15:58:09 970
转载 vuex使用教程--入门篇
按照官网的说法,Vuex 是一个专为 Vue.js 应用程序开发的状态管理模式。它采用集中式存储管理应用的所有组件的状态,并以相应的规则保证状态以一种可预测的方式发生变化。
2022-06-10 17:32:16 2766
原创 An attempt was made to call a method that does not exist. The attempt was ma
SpringBoot整合MyBatis出错。原因:我同时引入了这两个依赖。<dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis</artifactId> <version>3.2.2</version></dependency> <dependency>
2022-04-20 11:31:35 7270 1
原创 Redis实现单设备登录
在有些场景下,我们希望用户一个账号只能登录一个设备。这个时候我们可以用Redis来实现。原理: 用户首次登录时,将用户信息存入Redis,key是用户id,value是token。当用户在其他设备登录时,会重新生成token,这个时候原先的token已经被覆盖了。所以用户在访问需要登录账号的操作时,系统会拦截请求判断token是否存在。当然是不存在的,所以我们就实现了单个设备登录的需求。这里只提供大概的样例。用户登录@PostMapping("login")@ApiOperation(val
2022-04-18 18:36:10 1660 1
原创 SpringBoot全局异常处理及前端请求参数校验
SpringBoot全局异常捕获处理及参数校验为什么要用全局异常处理?在日常开发中,为了不抛出异常堆栈信息给前端页面,每次编写Controller层代码都要尽可能的catch住所有service层、dao层等异常,代码耦合性较高,参数校验逻辑业务逻辑还长,不利于后期维护。为解决该问题,可以将Controller层异常信息统一封装处理,且能区分对待Controller层方法返回给前端。如何进行全局异常捕获和处理?一共有两种方法:Spring的AOP@ControllerAdvice结合@Exc
2022-04-15 21:59:11 1728 1
原创 Java生成验证码工具类,并响应给浏览器
生成验证码工具类import java.awt.*;import java.awt.image.BufferedImage;import java.util.Random;/** * @description: 绘制验证码图片 */public class CreateVerifiCodeImage { private static int WIDTH = 90; private static int HEIGHT = 35; private static int
2022-04-14 18:40:32 1015
原创 Springboot中使用swagger2
添加pom坐标<!--swagger--><dependency> <groupId>io.springfox</groupId> <artifactId>springfox-swagger2</artifactId> <version>2.7.0</version></dependency><!--swagger ui--><dependency&
2022-04-14 18:15:47 1014
原创 Springboot解决跨域问题的三种方式以及引入SpringSecurity跨域解决方案失效的情况
参考:什么是跨域?跨域解决方法为什么会出现跨域出于浏览器的同源策略限制。同源策略(Sameoriginpolicy)是一种约定,它是浏览器最核心也最基本的安全功能,如果缺少了同源策略,则浏览器的正常功能可能都会受到影响。可以说Web是构建在同源策略基础之上的,浏览器只是针对同源策略的一种实现。同源策略会阻止一个域的javascript脚本和另外一个域的内容进行交互。所谓同源(即指在同一个域)就是两个页面具有相同的协议(protocol),主机(host)和端口号(port)什么是跨域当一个请求
2022-04-11 16:51:01 7810 7
原创 RabbitMQ连接超时Timed out
RabbitMQ连接超时Exception in thread “main” java.net.ConnectException: Connection timed out: connect在本地连接云服务器的RabbitMQ时,需要开启5672端口。5672:client端通信端口15672:管理界面ui端口云服务器放行端口在服务器中开启端口# 开启5672端口firewall-cmd --add-port=5672/tcp --permanent # 更新防火墙规则firewa
2022-04-05 11:25:02 5644
原创 使用Session+Cookie实现7天免登录
session存在于服务器端,cookie存在于浏览器端。如果我们在服务器端使用Session保存用户信息,那么在用户登录某个页面时,访问服务器的时候,就会生成一个cookie返回到浏览器端,如果没有设置cookie的过期时间,浏览器关闭的时候cookie失效。关闭浏览器重新打开这个网站,就要重新登录,这是用户不愿意看到的。在浏览器没有关闭的情况下,用户访问服务器,是不需要频繁登录的。服务器是通过浏览器携带的cookie找到对应的session对象。具体就是根据cookie的JSESSIONID对.
2022-03-16 22:05:06 2957
原创 Linux安装MySQL8.x详细步骤
一、获取mysql可以官网下载或者使用wget指令下载1.下载mysqlwget https://dev.mysql.com/get/Downloads/MySQL-8.0/mysql-8.0.20-linux-glibc2.12-x86_64.tar.xz2.解压 mysqltar xvf mysql-8.0.20-linux-glibc2.12-x86_64.tar.xz3.重命名mv mysql-8.0.20-linux-glibc2.12-x86_64 mysql-8.04.移
2022-02-15 14:19:42 8275 11
原创 Spring复杂对象创建的三种方式
在Spring中,对于简单类型的创建,我们可以使用set注入和构造注入。但是对于复杂类型的如何创建?什么是复杂类型,比如连接数据库的Connection对象,以及Mybatis中的SqlSessionFactory对象。在以前我们是通过这种方式获取Connection对象的:Connection conn = null; try { Class.forName("com.mysql.cj.jdbc.Driver"); conn = D.
2022-01-09 17:15:22 894
转载 Linux防火墙Centos8
#进程与状态相关systemctl start firewalld.service #启动防火墙systemctl stop firewalld.service #停止防火墙systemctl status firewalld #查看防火墙状态systemctl enable firewalld #设置防火墙随系统启动systemctl disable firewalld
2021-12-31 11:48:31 435
原创 Python爬取照片
具体分析可以查看我的这篇文章import urllib.requestfrom bs4 import BeautifulSoupimport reimport requests# 影片图片的链接findImgSrc=re.compile(r'<img alt=".*?".src="(.*?)"/>',re.S) # re.S忽略换行符def getData(baseurl): html=askURL(baseurl) #一个页面的html # 解析
2021-12-29 22:17:13 842
原创 Spring及Springboot中使用拦截器
开发流程Maven依赖servlet-api<dependency> <groupId>javax.servlet</groupId> <artifactId>javax.servlet-api</artifactId> <version>4.0.1</version> <scope>provided</scope></dependency>实现HandlerI.
2021-11-17 16:18:36 753
原创 SpringBoot无法连接https://start.spring.io
IDEA创建SpringBoot无法连接https://start.spring.io,可以使用这个https://start.springboot.io/或者阿里云的:https://start.aliyun.com
2021-11-16 14:41:40 1776
原创 Springboot中快速使用MybatisPlus以及具体细节
快速使用1.新建springboot项目2.加入mybatis-plus依赖<dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-boot-starter</artifactId> <version>3.4.3.4</version></dependency> <dependency> &
2021-11-14 22:51:21 1796
原创 通用后端响应返回结果对象
import exception.ImoocMallExceptionEnum;/** * 描述: 通用返回对象 */public class ApiRestResponse<T> { private Integer status; private String msg; private T data; private static final int OK_CODE = 10000; private static final
2021-11-13 10:58:39 922 2
原创 SpringMVC中文乱码问题解决方案
请求中文乱码浏览器向服务器请求Get请求乱码修改Tomcat 文件夹conf 中server.xml配置文件在这个标签中添加URIEncoding="UTF-8" 属性 ,网址请求中乱码<Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" URIEncoding="UTF-8" />注意:在Tom
2021-11-04 18:47:40 2124
原创 Spring常用注解以及如何实现纯注解
@Around(value="execution(* login(..))")环绕通知,value里面是切入点表达式 @Component("id") 替换原有的<bean>标签 衍生注解 @Component@Service 用于Service层@Repository 用于Dao层@Controller 用户控制层更加准确的表达一个类型的作用 @Scope 控制对象创建次数作用:控制简单对象创建次数注意:不添加@Scope Spring提供默认值 single
2021-10-30 10:04:49 620
原创 基于java8函数式接口Function实现MyBatisUtils
import org.apache.ibatis.io.Resources;import org.apache.ibatis.session.SqlSession;import org.apache.ibatis.session.SqlSessionFactory;import org.apache.ibatis.session.SqlSessionFactoryBuilder;import java.io.IOException;import java.io.Reader;import jav
2021-10-29 16:52:57 525
原创 力扣653. 两数之和 IV - 输入 BST
给定一个二叉搜索树 root 和一个目标结果 k,如果 BST 中存在两个元素且它们的和等于给定的目标结果,则返回 true前面也碰到了两数之和的题目,不过题目给的是数组,而本题目给的是二叉搜索树。虽然数据结构不一样,但是求解的思路还是类似的。借用官方的话来说就是:如果存在两个元素之和为k,即 x+y=k,并且已知x是树上一个节点的值,则只需判断树上是否存在一个值为y 的节点,使得y=k−x。基于这种思想,在树的每个节点上遍历它的两棵子树(左子树和右子树),寻找另外一个匹配的数。在遍历过程中,将每
2021-09-14 16:01:19 426
原创 使用xshell连接linux虚拟机
在linux中查看IP地址使用命令ifconfig在本机上使用ping命令查看两个系统是否连接,这种情况说明连接成功使用xshell连接两个系统,新建会话,只修改这两个,其他不用动
2021-08-29 21:28:34 472
原创 CentOS7安装VMware Tools详细步骤
1.进入centos2.点击vm的重新安装vm tools有些小伙伴安装VMware Tools显示灰色,可以看一下这个博客。进入系统之后会发现,多了一个光驱,里面有vm tools3.复制这个工具点击其他位置->计算机->opt粘贴到这里4.点击右键,打开终端,进入到这个文件夹这个窗口相当于windows 的dos窗口,我们在这里使用命令安装vm tools软件5.使用命令解压tar -zxvf VMwareTools-10.3.23-17030940.tar
2021-08-29 17:05:37 15601 18
原创 Lambda和Stream练习
- 一个 Lambda 表达式可以有零个或多个参数 参数的类型既可以明确声明,也可以根据上下文来推断。- 所有参数需包含在圆括号内,参数之间用逗号相隔。 空圆括号代表参数集为空。 当只有一个参数,且其类型可推导时,圆括号()可省略。- Lambda 表达式的主体可包含零条或多条语句 如果 Lambda表达式的主体只有一条语句,花括号{}可省略。 - 匿名函数的返回类型与该主体表达式一致 如果 Lambda表达式的主体包含一条以上语句,则表达式必须包含在花括号{}中(形成代码块)。匿名函数.
2021-08-27 09:08:22 523
原创 Git常用命令
Git常用命令git config --global user.name 用户名设置用户签名git config --global user.email email地址设置用户email地址git add 文件名添加到暂存区git reflog查看版本号git status查看状态git log详细日志地址git commit -m “说明信息” 文件提交git reset --hard 版本号回滚/不同版本穿梭关于分支
2021-08-15 11:50:22 395
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人