- 博客(25)
- 收藏
- 关注
原创 关于Mybatis-plus引入在项目中出现invalid bound statement问题
Invalid bound statement (not found)
2022-07-22 10:35:06 351
原创 简易RPC框架实现——6、实现服务自动注销,引入心跳机制
本章在前篇引入nacos的基础上,继续实现了对于服务下线时,服务自动注销的功能,而且基于Netty心跳机制,来实现服务端与客户端通道的保活。
2022-06-01 13:12:13 513
原创 简易RPC框架实现——5、引入Nacos实现服务管理
本章实现了引入注册中心对于客户端以及服务端服务交互的一个管理,commit的版本号为0286460,并在注册中心对于服务端服务暴露中引入了负载均衡策略。注册中心回顾我们第一章所提到的关于RPC框架的一个整体框图,为了在大量分布式的模块中进行各个模块的通信,我们需要引入一个注册中心实现对于各个模块之间的管理,来保证各个模块之间通信的可靠。目前比较主流的注册中心有Nacos,Zookeeper以及Eruka,以下列举了几种主流注册中心的比较:由于nacos易用,有稳定的控制台,且数据实时更新,因此本
2022-05-30 10:48:09 1583
原创 简易RPC框架实现——4、客户端非阻塞处理
本章将NettyClient中发送请求后的阻塞改为异步非阻塞,利用CompletableFutue.get(),将阻塞环节放置到了代理类中,能更大地提高服务器地吞吐量。本章地commit为8dcf034。利用Map缓存未处理地请求将每一个请求以及其对应的CompletableFuture放入缓存中,之后通过异步地方式去获取请求地结果,首先需要建一个UnprocessedRequest用来缓存request对应地处理结果,为了使得缓存全局唯一,使用单例工厂模式创建UnprocessedRequest:p
2022-05-25 11:55:02 262
原创 简易RPC框架实现——3、引入Netty实现网络通信
本章是在前面基于socket通信基础上的一种改进,引入了netty实现了客户端与服务端的网络通信,本章改动较大,对应的commit为cf7021b。Netty是一个非阻塞I/O客户端-服务器框架,主要用于开发Java网络应用程序,如协议服务器和客户端。异步事件驱动的网络应用程序框架和工具用于简化网络编程,例如TCP和UDP套接字服务器。Netty包括了反应器编程模式的实现。(源自维基百科)。既然涉及到了网络编程,那么就离不开java中网络编程的王者——Netty。Netty的使用方法本文不做过多赘述,如
2022-05-24 11:47:58 564
原创 简易RPC框架实现——2、引人入注册表
本章引入了注册表来存储服务端注册的服务,并实现了对于反射调用与线程池线程解耦的工作。本章对应commit为2e1351e。在上一章我们实现了一个基于jdk序列化机制的简单BIO RPC框架。但是我么在测试中会发现,由于我们的服务是伴随着服务端开启进行注入的,那么我们每一个服务就只能注册一个服务。我们在本章就引入一个服务注册表,来实现多个服务的注册。服务注册表创建一个服务注册的顶级接口,里边分别有着服务注册以及发现服务的方法:public interface ServerPublisher {
2022-05-19 13:47:20 252
原创 简易RPC框架实现——1、基于jdk序列化机制的BIO实现
本文主要实现了一个简易RPC框架的实现,项目地址为https://github.com/fzzfrjf/FZZF-RPC本章对应的commit为43a5918,主要是基于jdk自带的序列机制以及BIO实现了远程方法调用。概述RPC框架,主要就是解决在实现物理隔离的不同服务之间,调用属于其他服务的方法(是不是感觉类似与feign),RPC框架与feign远程调用的最大区别就是feign需要实现http协议,而RPC框架可以不用走http协议。在RPC中习惯于将调用请求者叫做client端,被调用者叫做
2022-05-18 23:14:23 212
原创 java实例对象存储位置
java实例对象存储位置在java内存模型中,运行时数据区是java程序得以运行至关重要的区域,主要的作用就是将字节码文件写入内存中,方便后续执行引擎的调用。而运行时数据区分为五个板块,程序计数器,java虚拟机栈,本地方法栈,java堆以及方法区。程序计数器是一块比较小的内存区域,主要是充当着字节码文件的信号指示器,线程的分支、循环、异常跳出、恢复运行都是依靠着程序计数器对其发号指令。在多线程运行中,实际上就是多个线程不断切换获取cpu执行任务,而每次切换都需要将自己线程的状态存储,就是存储在程序计
2022-05-05 21:33:32 1486
原创 牛客NC3 链表中环的入口结点
牛客NC3 链表中环的入口结点题目如下:主要思想就是首先利用快慢指针判断是否有环,如果有环,再根据下面的思想让快指针重头开始走,慢指针继续走,走到相遇就是环入口结点的地方:代码如下:public class Solution { public ListNode EntryNodeOfLoop(ListNode pHead) { ListNode ft = pHead; ListNode fast = pHead; ListNode slo
2022-05-05 21:31:54 385
原创 Leetcode37题,解数独
编写一个程序,通过填充空格来解决数独问题。数独的解法需 遵循如下规则:数字 1-9 在每一行只能出现一次。数字 1-9 在每一列只能出现一次。数字 1-9 在每一个以粗实线分隔的 3x3 宫内只能出现一次。(请参考示例图)数独部分空格内已填入了数字,空白格用 ‘.’ 表示。主要思想的话就是先创建三个数组来存储每一列每一行每一个块这个字符出现的情况,遍历数独,将每个位置存在的数存入数组,将’.‘所在的行列存入一个数组集合。之后调用递归,来对每一个’.'位置的字符进行尝试,如果尝试失败,则进行回溯。
2022-05-05 21:30:46 116
原创 Leetcode34题,寻找子元素位置
给定一个按照升序排列的整数数组 nums,和一个目标值 target。找出给定目标值在数组中的开始位置和结束位置。如果数组中不存在目标值 target,返回 [-1, -1]。要求时间复杂度为logn。主要思想的话就是寻找大于等于target值在数组中出现的位置,之后再寻找target+1出现的位置,进行判断即可,题解如下:class Solution { public int[] searchRange(int[] nums, int target) { int l = se
2022-05-05 21:29:39 77
原创 KMP算法
KMP算法指的是字符串模式匹配算法,问题是:在主串T中找到第一次出现完整子串P时的起始位置。kpm算法看了几天勉强看懂,但是过了几天就完全忘了当时怎么想的,所以直接背吧!class Kmp{ public int findSubString(String t,String p){ int[] next = getNext(p); for(int i = 0, j = 0; i < t.length();i++){ while(j &g
2022-05-05 21:28:30 76
原创 寻找下一个更大序列
题目:整数数组的一个 排列 就是将其所有成员以序列或线性顺序排列。例如,arr = [1,2,3] ,以下这些都可以视作 arr 的排列:[1,2,3]、[1,3,2]、[3,1,2]、[2,3,1] 。整数数组的 下一个排列 是指其整数的下一个字典序更大的排列。更正式地,如果数组的所有排列根据其字典顺序从小到大排列在一个容器中,那么数组的 下一个排列 就是在这个有序容器中排在它后面的那个排列。如果不存在下一个更大的排列,那么这个数组必须重排为字典序最小的排列(即,其元素按升序排列)。例如,arr
2022-05-05 21:27:02 121
原创 谷粒商城跨域设置增加了CorsWebFilter仍然报错
把addAllowedOrigin("");改成addAllowedOriginPattern("");
2021-11-30 11:08:50 699 2
原创 springboot版本过高(2.6.0)导致openfeign依赖正常启动,发布调用请求报错问题
将spring-cloud-starter-openfeign依赖改为version 2.1.1RELEASE
2021-11-29 10:34:47 919 1
原创 npm install出现问题
大概率是node.js的版本过高,改换为10点几的版本再运行如果换了之后出现gyp ERR! stack Error: gyp failed with exit code: 1则先输入npm install -g cnpm --registry=https://registry.npm.taobao.org然后cnpm install最后就可npm run dev...
2021-11-26 21:29:24 274
原创 Linux创建mysql容器问题
Docker安装mysql报错 ERROR 1045 (28000): Access denied for userhttps://blog.csdn.net/zkzbhh/article/details/100214667sqlyog1251错误码https://www.cnblogs.com/paopao123/p/10749202.html
2021-11-25 21:32:12 915
原创 关于docker创建mysql容器状态为exited(1)
应该为缺少配置文件首先创建文件:touch /mydata/mysql/conf/my.cnf之后在my.cnf中加入如下:[mysqld]user=mysqlcharacter-set-server=utf8default_authentication_plugin=mysql_native_passwordsecure_file_priv=/var/lib/mysqlexpire_logs_days=7sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DA
2021-11-25 17:06:07 2892
原创 Gateway网关搭建
网关搭建步骤1、创建项目,引入nacos以及gateway的依赖2、配置application.yml,配置nacos注册中心地址,以及网关路由配置,如下:spring: application: name: gateway cloud: nacos: discovery: server-addr: localhost:8848 #nacos地址 gateway: routes: - id: user-servic
2021-11-17 22:12:56 1256
原创 springcloud注册中心以及配置中心
springcloud注册中心以及配置中心eureka即在pom.xml中引入eureka的依赖,之后创建不同服务,并创建注册中心,即eureka.service在注册中心中完成如下配置server: port: 10086 #端口spring: application: name: eurekaserver #eureka的服务名称eureka: client: service-url: #eureka的地址信息 defaultZone: http://
2021-11-17 20:17:04 671
原创 windows terminal here配置到右键菜单
01.使用记事本创建一个reg后缀的文件,添加下面的内容,把路径中的username改为自己电脑的用户目录名Windows Registry Editor Version 5.00[-HKEY_CLASSES_ROOT\Directory\Background\shell\wt][-HKEY_CLASSES_ROOT\Directory\Background\shell\runas][HKEY_CLASSES_ROOT\Directory\Background\shell\wt]@="Wind
2021-11-15 15:29:04 1145 2
原创 mysql source导入后出现乱码
在进入mysql时输入命令 mysql -uroot -p --default-character-set=utf8 再进行导入即可。
2021-11-15 10:34:43 1749
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人