
笔记
兄dei!
坚信泥沙也能堆出山川。
展开
-
菜鸟的进阶--手写一个小型dubbo框架
本项目为参考dubbo打造的一个rpc框架。原创 2023-03-15 16:02:17 · 804 阅读 · 1 评论 -
探究ReentrantLock原理
了解一下ReentrantLock加锁,解锁,可重入,可打断,条件变量等原理原创 2023-02-27 14:01:05 · 421 阅读 · 0 评论 -
java的一些冷知识
记录一下自己都可能懵圈的java冷知识..原创 2023-02-26 19:50:43 · 892 阅读 · 0 评论 -
聊聊MySQL中的事务,MVCC
聊聊Mysql中的事务,redolog,undolog,MVCC。原创 2023-02-12 17:31:51 · 432 阅读 · 0 评论 -
浅谈动态代理
浅浅谈一下java的动态代理。原创 2023-02-11 19:41:43 · 876 阅读 · 0 评论 -
java集合框架内容整理
阶段性笔记整理原创 2023-02-11 16:48:45 · 651 阅读 · 0 评论 -
对象实例化之后一定会存放在堆内存中?
JVM里堆和栈那点事原创 2022-08-04 17:07:53 · 1078 阅读 · 0 评论 -
学习笔记——搞懂FST数据结构
搞懂FST原创 2022-06-19 17:43:40 · 7988 阅读 · 4 评论 -
浅谈ES以及索引的本质
倒排索引的两个压缩算法:FOR以及RBM原创 2022-06-12 18:06:39 · 780 阅读 · 1 评论 -
解决:Feign令牌中继问题:feign.FeignException$Unauthorized:[401] during [GET] toxxx
在使用OAuth2的时候碰到的两个问题:问题1首先,不引入JWT的时候,为了单点登录,我们使用携带Token的方式去请求资源服务。但是我们的微服务是需要进行原程调用的,这时就会发现使用了Feign进行远程调用的服务报错了。正如标题所报的那样,因为就算我们携带了token去访问了该服务,但是由于远程调用的时候并没有携带token去请求对应的资源,导致请求失败了。解决的方法也简单,引入配置就行。feign: oauth2: enabled: true load-balanced原创 2022-05-20 14:18:56 · 2183 阅读 · 0 评论 -
nacos集群解决:failed to req API:/nacos/v1/ns/instance after all servers([127.0.0.1:8801]) tried
参考文章:参考主要原因:1.未按集群启动nacos:解决办法:需要在启动startup.cmd 那里添加 -m clusterIDEA下操作:按照这样去启动就好了。2.nacos配置文件写错:cluster.conf文件那里面配置集群的时候,不能写localhost:8848这样会让客户端无法识别的。正确写法:你的真实ip:8801真实ip在本机上,cmd下命令:ipconfig弄了两小时最终终于成功了。。...原创 2022-05-15 21:51:10 · 1769 阅读 · 0 评论 -
智能语音转换文字——百度API
想实现一个功能——即通过语音转换为文字进行写博客(个人博客)百度API很好提供了这个功能——语音技术 (baidu.com)新用户有五万次的免费请求次数,使用也不难,申请成功之后区控制台添加应用即可看到对应三个码复制好这三个码,后面有用。使用步骤:1.导入依赖<dependency> <groupId>com.baidu.aip</groupId> <artifactId>java-sdk<......原创 2022-04-16 20:59:01 · 9142 阅读 · 2 评论 -
数据结构实训作业——哈夫曼树(c语言)
目录一.概述二.构建哈夫曼树三.哈夫曼编码四.打印树形结构五.完整代码一.概述本系统主要功能主要有三:1.可将哈夫曼树的构建过程清楚地展现出来;2.可通过哈夫曼树的成功构建得到哈夫曼编码;3.可将哈夫曼树的树形结构清楚地展现出来;此处将权值序列{8 5 29 7 8 14 23 3 11}构建成哈夫曼树;输入各节点权值:先通过权值排序得到初态:开始构建哈夫曼树:此处省略若干步直接到完成状态......原创 2021-12-28 21:20:43 · 4815 阅读 · 1 评论 -
会话(Session)入门以及基本用法
客户访问Web应用时,许多情况下,web服务器必须跟踪客户的状态,比如客户登录信息,购物车信息等。当一个会话开始,servlet容器会创建一个HttpSession对象存放客户状态的信息,servlet容器为每个HttpSession对象分配一个唯一的标识符——SessionID具体流程是这样的:1.当浏览器第一次请求访问某web应用中任意一个支持会话的网页(登录页面),servlet容器会寻找http请求中表示sessionID的cookie,由于第一次访问不存在cookie,因此认为新的会话原创 2021-09-27 11:20:03 · 1252 阅读 · 0 评论 -
Servlet入门及其基本用法(下载文件,上传文件,BaseServlet)
Servlet(Server Applet)是Java Servlet的简称,称为小服务程序或服务连接器,用Java编写的服务器端程序,具有独立于平台和协议的特性,主要功能在于交互式地浏览和生成数据,生成动态Web内容。(百度百科)Servlet常用:请求对象(ServletRequest&&HttpServletRequest)相应对象(ServletResponse&&HttpServletResponse)Servlet配置对象(ServletConfi原创 2021-09-26 21:15:12 · 448 阅读 · 0 评论 -
JDBC--Druid数据库连接池以及Template基本用法
数据库连接池1. 概念:其实就是一个容器(集合),存放数据库连接的容器。当系统初始化好后,容器被创建,容器中会申请一些连接对象,当用户来访问数据库时,从容器中获取连接对象,用户访问完之后,会将连接对象归还给容器。2. 好处: 1. 节约资源 2. 用户访问高效Druid:数据库连接池实现技术,由阿里巴巴提供 使用步骤: 1. 导入jar包 druid-1.0.9.jar 2. 定义配置文件:...原创 2021-09-25 12:27:36 · 481 阅读 · 0 评论 -
java反射的基本使用
反射概念:将类的各个组成部分封装为其他对象,这就是反射机制获取class对象的方式:1.Class.forName(“全类名”):将字节码文件加载进内存,返回Class对象*多数用于配置文件 将类名定义在配置文件中 读取文件加载类2.类名.class :通过类名的属性class获取*用于参数传递3.对象.getClass() :该方法在object类中定义着 *用于对象的获取字节码的方式结论:同一个字节码文件(.Class...原创 2021-09-24 16:39:52 · 235 阅读 · 0 评论 -
7-44 基于词频的文件相似度 (30 分)
原题:https://pintia.cn/problem-sets/15/problems/891题意:给出N个文件,文件里面含有各个单词,再给出若干对编号,找出每对编号文件里面共同单词,并且算出它们所占两者总单词数的比例。这个两者总单词数要注意,相同的不用加进去。例如:aaabbb ccc 和aaa ddd ggg 这俩的总词数是5而不是6坑点:AAA 和AAA1是共同的 qqqqqqq@abc 是两个: qqqqqqq和abc aa1a不行,必须连续起来才行,麻烦的点还是处理字符串。...原创 2021-07-23 21:59:49 · 274 阅读 · 0 评论 -
7-43 字符串关键字的散列映射 (25 分) 谜之测试点
原题:https://pintia.cn/problem-sets/15/problems/8900 sample 1 无冲突 答案正确 6 4 ms 452 KB 1 sample 2 有冲突 答案正确 8 5 ms 320 KB 2 有重复关键字 答案正确 3 5 ms 448 KB 3 最大和最小字符串,以及不足3位的字符串 答案原创 2021-07-22 21:42:29 · 584 阅读 · 2 评论 -
7-42 整型关键字的散列映射 (25 分)
原题:https://pintia.cn/problem-sets/15/problems/889本题是考察对哈希表的理解,这里面哈希函数是用的除留余数法。【H(key)=key%p】除留余数法的关键在于找到那个余数p;题中已经给出。规定处理哈希冲突的方法是线性探测法,就是简单地加一就行了。#include<stdio.h>#include<stdlib.h>typedef struct h{ int *data; int TableSize; }*Ha原创 2021-07-21 21:08:27 · 243 阅读 · 0 评论 -
7-41 PAT排名汇总 (25 分)多样排序
原题:https://pintia.cn/problem-sets/15/problems/888思路:创建一个结构体,里面包含每个考生的各种信息:姓名,成绩,分区排名,最终排名,地区struct stu { string name; int score,place,Sum_rank,zone_rank;}List[MAXSIZE];排序分成三步:第一步,对分区学生按照成绩高低进行排名,同时将排名记录进该考试信息中;第二步,对所有考生按照成绩高低进行排名,同时将排名记录进该考原创 2021-07-20 16:03:26 · 1094 阅读 · 0 评论 -
7-40 奥运排行榜 (25 分)多项排序
原题:https://pintia.cn/problem-sets/15/problems/867无脑解法:创建了四个结构体,依次为金牌总数,奖牌总数,人均金牌数,人均奖牌数,每一个对应一个id存入这些信息之后,利用c++的sort函数,将这四个队列按从大到小排序;最后按照优先级顺序处理同个国家同时多项排名高的:金牌总数>奖牌总数>人均金牌数>人均奖牌数处理那些同个奖项里面并列的,就是判断前一项是否和当前项相等,再利用while循环找到头这样无脑的解法思路比较简单,原创 2021-07-19 20:30:31 · 562 阅读 · 0 评论 -
7-39 魔法优惠券 (25 分)c++优先队列
原题:https://pintia.cn/problem-sets/15/problems/866优先级队列定义:priority_queue<int,vector<int>,greater<int> >q;//Int类型//greater 默认为从小到大//换成less 就是从大到小本题思路:将优惠券放入两个队列,分别是存放负值的队列和存放正值的队列;存放负值的队列从小到大排序,存放正值的相反;商品价值同理;根据负负得正,正正还是正,我原创 2021-07-19 15:36:11 · 350 阅读 · 0 评论 -
7-36 社交网络图中结点的“重要性”计算 (30 分) 不用迪杰斯特拉也不用弗洛伊德
原题:https://pintia.cn/problem-sets/15/problems/863这种无权图的最短路径直接用类似于BFS的思路就可以计算了;#include<iostream>#include<queue> #define MAXSIZE 10010#define inf 666666666using namespace std;int N,M,K;int FLAG=1;int G[MAXSIZE][MAXSIZE];int dist[MAX原创 2021-07-17 20:52:45 · 276 阅读 · 0 评论 -
7-35 城市间紧急救援 (25 分)c语言(测试点二未通过)
原题:https://pintia.cn/problem-sets/15/problems/862思路:对迪杰斯特拉算法进行一些添加,不仅要计算最短路径,还要计算最短路径的的条数和可调动起来最多的救援队伍。最后把路径条数和队伍数量输出,把选择的那条完整路径输出。调试过很多例子了,都没发现问题。。第二个测试点就是没过。实在是没辙了。#include<stdio.h>#define MAXSIZE 1010#define inf 666666666int N,M,S,D;int原创 2021-07-17 20:48:07 · 1466 阅读 · 2 评论 -
7-34 任务调度的合理性 (25 分)c++ vector
原题:https://pintia.cn/problem-sets/15/problems/861思路:1.计算每个结点的入度数2.入度数为0的结点表示无需依赖其他工程自己就可以完成,将这些结点入栈同时计数3.当栈未空时,取出栈一结点,对与它有关的结点度数减一,如果又产生入度数为0的结点则入栈同时计数。直到堆栈为空。4.如果计数结果和结点总数相等说明每一个任务都可以完成,输出1#include<iostream>#include<stack>#defin原创 2021-07-17 20:39:17 · 280 阅读 · 0 评论 -
7-33 地下迷宫探索 (30 分)c语言
原题:https://pintia.cn/problem-sets/15/problems/860看题目给出的输入输出样例就知道,这是要我们对该图从起点S出发进行深度优先搜索(DFS)遍历该图,同时要我们给出返回的路线,那么只要对DFS稍加修改就可以实现了。题中还要求说要我们判断是否能够全部走完,如果不能还要在结尾输出0#include<stdio.h>#define MAXSIZE 1010int G[MAXSIZE][MAXSIZE];int n,m,k; int visi原创 2021-07-15 20:00:25 · 955 阅读 · 1 评论 -
7-32 哥尼斯堡的“七桥问题” c语言
原题:https://pintia.cn/problem-sets/15/problems/859思路:两点:1.判断图是否联通。使用dfs 看看每一个点是否都被visit过2.以及每个节点的度数是否为偶数算出每个点的度数,判断是否为偶数可以自己拿草稿纸试试看,只要每个节点上的度是偶数,真的可以一笔划过。至于上面两个条件实现起来就很简单了。#include<stdio.h>#define MAXSIZE 1010int G[MAXSIZE][MAXSIZE];..原创 2021-07-15 18:59:43 · 687 阅读 · 0 评论 -
1017 Queueing at Bank (25)银行排队
原题:题目详情 (pintia.cn)题目大意:输入N,K;N代表客户总人数,K代表窗口的个数;然后N行,分别输入 每个顾客的到达时间(h:m:s)以及他们办事所需的时间(min)要求我们算出每位顾客的平均等待时间;特别提醒:银行开业时间是8:00-17:00。提前到的要等,迟到的直接没得办理,也不用把他算进总数去平均;排队不是按窗口排的,可以理解成排成一条长龙,然后先到先得。一开始我想成是有几个窗口排几条队了。。md思路:我们需要算出所有人等待的总时间TOTAL 再让这个总时间原创 2021-07-14 18:06:54 · 182 阅读 · 0 评论 -
7-31 笛卡尔树 (25 分)c语言
笛卡尔树是一种特殊的二叉树,其结点包含两个关键字K1和K2。首先笛卡尔树是关于K1的二叉搜索树,即结点左子树的所有K1值都比该结点的K1值小,右子树则大。其次所有结点的K2关键字满足优先队列(不妨设为最小堆)的顺序要求,即该结点的K2值比其子树中所有结点的K2值小。给定一棵二叉树,请判断该树是否笛卡尔树。输入格式:输入首先给出正整数N(≤1000),为树中结点的个数。随后N行,每行给出一个结点的信息,包括:结点的K1值、K2值、左孩子结点编号、右孩子结点编号。设结点从0~(N-1)顺序编号。若某结点原创 2021-07-13 21:06:54 · 563 阅读 · 0 评论 -
7-29 修理牧场 (25 分) 哈夫曼树思想,c++优先级队列
农夫要修理牧场的一段栅栏,他测量了栅栏,发现需要N块木头,每块木头长度为整数Li个长度单位,于是他购买了一条很长的、能锯成N块的木头,即该木头的长度是Li的总和。但是农夫自己没有锯子,请人锯木的酬金跟这段木头的长度成正比。为简单起见,不妨就设酬金等于所锯木头的长度。例如,要将长度为20的木头锯成长度为8、7和5的三段,第一次锯木头花费20,将木头锯成12和8;第二次锯木头花费12,将长度为12的木头锯成7和5,总花费为32。如果第一次将木头锯成15和5,则第二次锯木头花费15,总花费为35(原创 2021-07-13 15:15:05 · 248 阅读 · 0 评论 -
7-28 搜索树判断 (25 分)c语言
对于二叉搜索树,我们规定任一结点的左子树仅包含严格小于该结点的键值,而其右子树包含大于或等于该结点的键值。如果我们交换每个节点的左子树和右子树,得到的树叫做镜像二叉搜索树。现在我们给出一个整数键值序列,请编写程序判断该序列是否为某棵二叉搜索树或某镜像二叉搜索树的前序遍历序列,如果是,则输出对应二叉树的后序遍历序列。输入格式:输入的第一行包含一个正整数N(≤1000),第二行包含N个整数,为给出的整数键值序列,数字间以空格分隔。输出格式:输出的第一行首先给出判断结果,如果输入的序列是某棵二原创 2021-07-13 14:04:07 · 527 阅读 · 0 评论 -
7-27 家谱处理c++ map
人类学研究对于家族很感兴趣,于是研究人员搜集了一些家族的家谱进行研究。实验中,使用计算机处理家谱。为了实现这个目的,研究人员将家谱转换为文本文件。下面为家谱文本文件的实例:John Robert Frank Andrew Nancy David家谱文本文件中,每一行包含一个人的名字。第一行中的名字是这个家族最早的祖先。家谱仅包含最早祖先的后代,而他们的丈夫或妻子不出现在家谱中。每个人的子女比父母多缩进2个空格。以上述家谱文本文件为例,John这个家族最早的祖先,他有原创 2021-07-13 10:37:04 · 562 阅读 · 0 评论 -
7-26 Windows消息队列 (25 分)(c语言最小堆)
消息队列是Windows系统的基础。对于每个进程,系统维护一个消息队列。如果在进程中有特定事件发生,如点击鼠标、文字改变等,系统将把这个消息加到队列当中。同时,如果队列不是空的,这一进程循环地从队列中按照优先级获取消息。请注意优先级值低意味着优先级高。请编辑程序模拟消息队列,将消息加到队列中以及从队列中获取消息。输入格式:输入首先给出正整数N(≤105),随后N行,每行给出一个指令——GET或PUT,分别表示从队列中取出消息或将消息添加到队列中。如果指令是PUT,后面就有一个消息名称、以及一个原创 2021-07-12 23:19:32 · 1158 阅读 · 2 评论 -
7-25 朋友圈 (25 分)c语言
某学校有N个学生,形成M个俱乐部。每个俱乐部里的学生有着一定相似的兴趣爱好,形成一个朋友圈。一个学生可以同时属于若干个不同的俱乐部。根据“我的朋友的朋友也是我的朋友”这个推论可以得出,如果A和B是朋友,且B和C是朋友,则A和C也是朋友。请编写程序计算最大朋友圈中有多少人。输入格式:输入的第一行包含两个正整数N(≤30000)和M(≤1000),分别代表学校的学生总数和俱乐部的个数。后面的M行每行按以下格式给出1个俱乐部的信息,其中学生从1~N编号:第i个俱乐部的人数Mi(空格)学生1(空格)学生原创 2021-07-12 17:14:10 · 1793 阅读 · 0 评论 -
7-23 还原二叉树 (25 分)c语言
给定一棵二叉树的先序遍历序列和中序遍历序列,要求计算该二叉树的高度。输入格式:输入首先给出正整数N(≤50),为树中结点总数。下面两行先后给出先序和中序遍历序列,均是长度为N的不包含重复英文字母(区别大小写)的字符串。输出格式:输出为一个整数,即该二叉树的高度。输入样例:9ABDFGHIECFDHGIBEAC输出样例:5思路:通过先序序列找出根节点,通过中序序列的【特性】找出左右子树中序序列的特性:在根节点左侧的序列是左子树,右侧是右子树;通过根节原创 2021-07-12 15:36:54 · 1549 阅读 · 1 评论 -
7-22 堆栈模拟队列 (25 分) c++
设已知有两个堆栈S1和S2,请用这两个堆栈模拟出一个队列Q。所谓用堆栈模拟队列,实际上就是通过调用堆栈的下列操作函数:int IsFull(Stack S):判断堆栈S是否已满,返回1或0; int IsEmpty (Stack S ):判断堆栈S是否为空,返回1或0; void Push(Stack S, ElementType item ):将元素item压入堆栈S; ElementType Pop(Stack S ):删除并返回S的栈顶元素。实现队列的操作,即入队void AddQ(E原创 2021-07-12 11:26:40 · 497 阅读 · 1 评论 -
7-21 求前缀表达式的值 (25 分)c语言
算术表达式有前缀表示法、中缀表示法和后缀表示法等形式。前缀表达式指二元运算符位于两个运算数之前,例如2+3*(7-4)+8/4的前缀表达式是:+ + 2 * 3 - 7 4 / 8 4。请设计程序计算前缀表达式的结果值。输入格式:输入在一行内给出不超过30个字符的前缀表达式,只包含+、-、*、/以及运算数,不同对象(运算数、运算符号)之间以空格分隔。输出格式:输出前缀表达式的运算结果,保留小数点后1位,或错误信息ERROR。输入样例:+ + 2 * 3 - 7 4 / 8 4输原创 2021-07-11 20:16:11 · 4804 阅读 · 0 评论 -
7-20 表达式转换 (25 分) c语言
算术表达式有前缀表示法、中缀表示法和后缀表示法等形式。日常使用的算术表达式是采用中缀表示法,即二元运算符位于两个运算数中间。请设计程序将中缀表达式转换为后缀表达式。输入格式:输入在一行中给出不含空格的中缀表达式,可包含+、-、*、\以及左右括号(),表达式不超过20个字符。输出格式:在一行中输出转换后的后缀表达式,要求不同对象(运算数、运算符号)之间以空格分隔,但结尾不得有多余空格。输入样例:2+3*(7-4)+8/4输出样例:2 3 7 4 - * + 8 4 / +原创 2021-07-10 23:27:46 · 1435 阅读 · 2 评论 -
c语言写一个五子棋小游戏
部分效果图:总体设计这里我将叙述一个大概的设计过程。玩家一使用的棋子是’*’玩家二以及电脑使用的棋子是’#’。这两个字符只是方便做相关操作。实际显示时,我将玩家一显示为白棋子,玩家二显示为黑棋子。而不是直接把’*’和’#’显示给用户。棋盘用的是二维数组。一盘游戏几乎所有操作都是在这个二维数组上面实现。主要功能有:游戏背景音乐,实时棋盘的更新,棋子的移动,判断胜负,胜负播报音乐,电脑实现智能化落子。本程序分为两大部分,一部分是人机对战,另一部分是人人对...原创 2021-06-22 20:09:46 · 7419 阅读 · 67 评论