自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

胡众斌的博客

分享自己的学习心得和自己的理解

  • 博客(35)
  • 收藏
  • 关注

原创 rabbitmq安装

1.下载ErLang语言https://github.com/rabbitmq/erlang-rpm/releases2.下载Rabbitmq-serverhttps://github.com/rabbitmq/rabbitmq-server/releasesErlang与Rabbitmq 版本对应RabbitMQ versionMinimum required Erlang/OTPMaximum supported Erlang/OTPNotes3.9.4 3.9.3 3

2021-08-27 12:19:24 111

原创 环形链表解决约瑟夫问题

环形链表构造图经典应用约瑟夫问题设编号为1,2,… n的n个同学围坐在一起形成一个圈,约定编号为k(1<=k<=n)的人从1开始报数,数到m的那个人出列,下一个人又从1开始报数,以此类推,直到所有人出列为止,产生一个出队编号。思路利用环形链表这种结构模拟n个同学围成一圈通过链表的删除算法,模拟数到m的那个人出列剩下最后一个节点则循环结束,无需在移除class Stu{ //链表节点 private int data; private Stu next

2021-08-04 16:40:42 191 1

原创 数组构造队列

数组构造队列class ArrayQueue{ private int[] arr; private int maxSize = 10; //队列容量,默认容量为10 private int front; //队头 private int rear; //队尾 public ArrayQueue(){ arr = new int[this.maxSize]; fron

2021-07-13 22:18:11 135

原创 稀疏数组的应用

稀疏数组当一个二维数组里面大多数值都是0或者其他相同数字的时候,在存储上可转化为稀疏数组存储。典型的棋盘举例在棋盘的存档设计时,通过二维数组转成稀疏数组保存,减少大量的无效数据。稀疏数组的设计:列固定三列。第一列为行,第二列为列,第三列为值。行为需要存储的值+1。第一行记录整个二维数组有多少行,多少列,多少个值。从第二行开始,记录每个值所在的行,列,以及值是多少。二维数组转稀疏数组: //1.模拟上图棋盘状态 int arr[][] = new int[6][6];

2021-07-12 17:57:11 97

原创 i++和++i的一些区别

i++和++i的一些区别第一种情况(简单的递增)i++;++i;//i不断的递增加1,在使用上没有太多要注意的地方。第二种情况(既要递增又要赋值或者判断)int i = 0;while(i++<10){ .....}和while(++i<10){ .....}//平时我们理解的就是 i++是先去和10判断,然后在自增加1,++i是先自增加1然后再去和10判断//于是i++最后的i是11,++i最后的i是10//没毛病,继续看下一个例子int i

2021-07-12 13:49:08 1380

原创 微服务书城 第(N天)

库存的线程安全问题。

2021-04-13 14:17:55 82

原创 微服务书城(第八天)

工作学习记录2021-3-17 10:50时隔了差不多一个星期才更新博客,原因是因为前段时间去了解这个项目要用到的新技术,再加上回家休息了两天。先记录下昨天遇到的问题把。一. mybatis在UDR操作时,会返回一个影响行数的值,一般来说影响一行就返回1,然后就根据返回值是否为1来判断是否需要抛出异常。昨天由于中间表的数据有多个,用Delete时,还是习惯性的用了判断是否为1,导致一直抛异常。最终改为<1才抛异常,就OK了。二. 后台管理快告一段落,接下来就是前台界面,前台界面要用到的

2021-03-17 11:06:17 71

原创 微服务书城(第七天)

学习工作记录2021-3-11 / 19:47这今天没更新项目进度了,因为我们的界面UI,交互设计那里没有弄清楚,到后面出了问题,然后现在又回到了设计阶段,再加上前端那里的技术选型出了问题,目前的项目还没有进展,我这边正好这学期课程在学习Android开发,于是这几天在了解安卓的前端开发,等项目又成功启动后,继续开始写接口。更新博客。...

2021-03-11 19:51:52 58

原创 微服务书城第(六天)

学习工作记录2021-3-7 / 17:12昨天做前端的搭档在技术选型的时候没有考虑到位,出了一连串的问题。昨天一起研究了很久,最后前端决定重新技术选型,重新做。今天测试完接口,发现服务器数据库没法启动了,报错mysql.pid找不到之类的错误,这个坑也是踩了很久,最后在my.cnf里面的mysqld下面加上innodb_buffer_pool_size = 128又启动成功了,有点懵。...

2021-03-07 17:17:37 63

原创 微服务书城第(五天)

工作学习记录2021-3-5 / 15:02今天在写接口的时候,要自己写一个多表关联查询。前面都只设计到单表查询,通用mapper能够搞定,数据也能正常查询封装。自己写多表关联查询的时候出现了能查询到数据但是封装不进去实体类。后面发现mybatis默认不开启驼峰命名转换,要自己去开启,但是前面都是用的通用mapper,也没在意这件事。所以成功开启后,问题解决。SpringBoot配置mybatis: configuration: mapUnderscoreToCamelCase:

2021-03-07 17:11:37 58 1

原创 微服务书城(第四天)

学习工作记录2021-3-4 / 11:52今天在做接口测试的时候,发现json格式的数据,首字母如果大写没法封装到实体类中,普通的键值对格式是可以的。按照java的基本规范,属性首字母应该小写,所以要成功封装到首字母大写的属性,那么就不应该去更改实体类的属性命名,可以在属性上面添加JsonProperty(“属性名”)注解。...

2021-03-04 23:22:05 68 1

原创 微服务书城(第三天)

学习工作记录2021-3-3 / 13:05今天赶紧来更新博客了,按照昨天的计划我应该在开发图书分类接口,可是前端搭档告诉我微信小程序接口调用要遵循https,可是我们的域名是http。我们作为在校学生的小团队,也不能花几千RMB去买ssl证书,学习的代价太高了。查询了资料最终决定用certbot去获取证书。然后就是连续的踩坑。在写获取证书遇到的坑之前,先给自己做做笔记。linux下,nginx启动后对应着两个进程master process nginx和worker process,要通过杀进

2021-03-03 14:50:08 108

原创 微服务书城(第二天)

学习工作记录2021-3-1 / 20:56今天在启动前端项目的时候没有使用80端口通过nginx反向代理而是直接使用了前端所占用的端口,结果出现了跨域CORS问题,后端网关是做了跨域拦截处理的,也就是允许该域名访问,但是还是失败了。后来发现,允许的域名访问都是没有指定端口号,那就是默认80,而我访问的时候用的不是80所以匹配失败,因此拒绝了访问。今天在总结下跨域请求的整体流程,前端发送请求给后端时,会在请求头里呈现自己的域名或者ip+端口号,请求到后端网关后会被拦截下来,通过配置好的跨域检查来检

2021-03-01 21:50:40 88 2

原创 微服务书城(第一天)

学习工作记录2021-02-28 / 16:07今天和搭档设计了项目数据库,暂时考虑到的有7张表,分别是:图书表图书图片表分类表1分类表2订单表购物车表用户表数据表的详细设计参考word文档。

2021-03-01 19:25:44 143 2

原创 项目开篇简介

开篇最近准备和几个搭档一起做一个微服务架构的书城项目,通过这个项目巩固一下前面学过的一些微服务组件,为后面学习alibaba的微服务组件打地基。承诺在做此项目的这段时间,决定明天都会坚持更新,将每天要完成的功能需求,遇到的BUG,解决的方法写成博客放到这个项目下面,也算是我对知识点和项目开发的一个总结。...

2021-02-28 15:59:43 184

原创 动态规划-----算法考试

动态规划斐波那契求解整数拆分问题求解 0/1 背包问题最长公共子序列斐波那契#include <iostream>#define Max_N 100/** *动态规划 * *fibonacci 数列**/ int memo[Max_N]; //存放斐波那契数 using namespace std;int fib(int n){ //终结条件 n<=2时返回1 if(n<=2) return 1; //如果数组里面不为空 直接返回数组里面的值

2020-07-11 20:27:29 297

原创 贪心法----考试算法

贪心法超市找零钱柠檬水找零简单背包问题求解活动安排问题超市找零钱#include <iostream>/** *贪心法 * *顾客在超市购买物品一共消费 x 元【任意输入 x 的值,x 的值在 1 到 100 之间, *并且是整数】。支付的纸币为 100 元,计算超市收银员应找回顾客多少钱?(尽可能少的纸币数)【告知前提所 *有的纸币数量充足下,纸币包含面额是 100 元、50 元、20 元、5 元、1 元】**/ using namespace std;void f

2020-07-11 19:52:42 3830 1

原创 回溯法----考试算法

回溯法设计一个算法在 1,2,……9(顺序不变)背包问题(回溯法解决)活动安排问题迷宫问题设计一个算法在 1,2,……9(顺序不变)设计一个算法在 1,2,……9(顺序不变)数值之间插入+或者-或者什么都不插入,使得计算结果总是 100 的程序。例如 1+2+34-5+67-8+9=100。输出所有的答案。后面补上背包问题(回溯法解决)#include <iostream>/** *回溯法 *背包问题 **/ using namespace std;int

2020-07-11 16:22:42 398

原创 蛮力法----考试算法

蛮力法选择排序冒泡排序最大值连续子序问题背包问题选择排序#include <iostream>/** *蛮力法 *选择排序 **/ using namespace std;void Swap(int& a,int& b){ int t; t=a; a=b; b=t;}//选择排序 void SelectSort(int*element,int n){ int min; // 最小值 int min_location;//最小值所在的位置

2020-07-11 14:51:09 341

原创 递归--算法考试

递归算法选择排序冒泡排序全排列斐波那契选择排序/** * 选择法排序 P(63) * **/ #include <iostream>using namespace std; void Input(int *element,int n){ for(int i=0;i<n;i++) cin>>element[i];}void Show(int*element,int n){ for(int i=0;i<n;i++) cout<<

2020-07-10 22:22:34 275

原创 分治法--算法考试

分治法快速排序归并排序查找最大值和次大值问题折半查找2019 年女排世界杯快速排序#include <iostream> /** *分治法 *快速排序 **/ using namespace std;//交换函数 void swap(int*a,int*b){ int t; t=*a; *a=*b; *b=t; }//快速排序函数 选取任意一个数,使得左边的数都小于这个数,右边的数都大于这个数//继续重复上述操作,直到递归全部完成 void Quci

2020-07-10 22:13:02 714 1

原创 一个问题多种算法

例:y=a0 + a1x + a2x^2 + …+ an*x^n设计算法,求出给定任意x,得到的y的值第一种思路,通过循环,依次相加代码如下double myfction(int m, int a[],double x) //m表示多少个常数项,数组a接收存放常数项的数组,x存放指定的数据{ double p=0; int i; for (i = 0; i &lt...

2019-09-01 14:05:41 2649

原创 双链表(三)

双链表的插入排序双链表的插入排序和单链表的方法一样,唯一不同的是双链表多了一个指向前一个节点的指针,在交换数据的时候需要多交换一点东西前面分享的单链表的插入排序,方法如下:1.将一个完整的链表分成两部分,一部分是有序的,也就是只含头节点和一个数据节点,另一部分为无序的。2.将无序的部分一个节点一个节点按照从小到大的规则,插入到有序的部分,直到最后一个节点。代码如下:void node_p...

2019-08-26 15:54:01 83

原创 双链表(二)

双链表的插入新节点与删除节点关于插入新节点,双链表和单链表用到的方法一样,唯一不同的是双链表还需要将指向前一个数据节点的指针里面存放的地址按照逻辑进行交换关于删除节点,单链表用到了两个指针,一个指针指向需要删除的某一个节点,另一个指针指向删除前面一个节点,才可以做到整个链表不会乱,双链表因为有一个指针是指向前面一个节点的,因此就不需要再重新声明一个指针。插入节点:void node_ins...

2019-08-25 12:08:18 160

原创 双链表(一)

双链表头节点,数据节点的创建单链表的创建会了之后,双链表也很容易就会,只是多了一个指针指向前面一个节点。头节点的创建#include<iostream>using namespace std;struct node{ int a; struct node *next; //指向下一个节点的指针 struct node *pre; //指向上一个...

2019-08-23 18:03:00 3459

原创 单链表的冒泡法排序

冒泡法排序,是我们在刚一接触程序的时候就掌握了的很简单的一种排序算法,思想主要就是不断循环不断找到最大值依次将最大值向右移动在链表里面,我们要将数据节点里面的数据按从小到大的顺序排序,常用的插入排序,前面有分享到,它是典型的交换地址,从而实现插入,我们当然也可以用不交换地址,只需要交换数据节点值的方式去实现排序。代码如下:void node_px_up(node *head){ n...

2019-08-19 15:43:49 914 1

原创 单链表学习(五)

前面分享了如何删除链表里面的任意数据节点,今天分享如何删除所有数据节点里面含最大值的数据节点。既然要删除含最大值的数据节点,那么首先要找到哪个数据节点含最大值,于是就可以假设第一个数据节点为最大值,那么我们就拿一个最大值指针指向它,然后依次往后面比较,如果有比他更大的数,就让最大值指针指向更大的数,直到比较完所有的节点为止。实现这个算法,会用到四个指针,其中两个指针p,q。p是用来遍历每一个数...

2019-08-18 11:01:37 74

原创 单链表(四)

前面分享了在任意位置插入新的数据节点,今天分享删除任意节点。如图,定义了两个结构体指针p和q,p指向第一个数据节点,q指向p的前面一个,p的作用就是找到需要删除的数据节点,而q则是用来将p指向的数据节点里面存放的下一个数据节点的地址拿给q指向的数据节点,这样保证删除了之后,后面的节点不会消失。找到需要删除的数据节点,和前面找到插入的位置的方法一样代码如下:void node_delete...

2019-08-17 10:54:20 109 1

原创 单链表学习(三)

前几天分享了链表数据节点的创建和访问,今天分享关于计算链表数据节点的长度,然后在此基础上实现任意位置的插入新的数据节点。void node_lenth(node *head) //计算链表长度的函数,不管什么操作,都需要知道头节点的地址,因此需要传递头指针{ int n = 0; //定义一个变量 n用来统计节点的长度 node *p; //定义结构体指针p,用来指...

2019-08-15 11:00:16 101

原创 单链表学习(二)

在链表学习(一)里面分享了链表头节点和数据节点的创建。今天分享一下有关链表节点的访问。如上图所示,我采用的是在头节点后面创建数据节点的方法,我们要访问a1这个数据节点的时候,我们需要得到它的地址才能访问,而a1节点的地址在a2节点的指针里面,所以要访问a1数据节点需要访问到a2数据节点,依次类推,访问a2数据节点,我们又需要a2数据节点的地址,因此我们需要访问a3数据节点,a3数据节点的地址又...

2019-08-14 16:09:31 78

原创 单链表学习(一)

关于链表的概念,原理,具备的优点和缺点,以及示意图等这里就不过多介绍了。书本上或者百度上,其他博主上都可以了解学习。我主要分享链表的一些基础算法。直接进入主题吧。今天分享的是关于链表头节点和数据节点的创建。我们创建一个链表,一般来说都会创建一个头节点,头节点里面不放然后数据,只需要在指针里面放入下一个数据节点的内存地址就行了,当我们需要访问数据节点的时候就从头节点开始依次访问后面的每一个数据...

2019-08-13 16:06:14 128

原创 结构体指针

今天对结构体指针谈一谈自己的看法与理解。一想到指针,自然而然就知道用它来干嘛,可以用来存放内存地址,用来间接访问,间接修改,也可以用到函数里面实现更多值的返回等等,关于结构体指针,当然也肯定少不了用来间接访问结构体里面的数据成员。我觉得更重要的是,为学习后面的链表打下基础。下面是定义好的一个结构体struct node{ int a;};struct node hp; ...

2019-08-11 15:14:36 343 1

原创 链表插入排序——单指针移动

前面分享了双指针移动实现插入排序,第一个指针pre的作用是为了插入数据节点,第二个指针prel作用是和待插入的数据节点进行比较,今天分享只用一个指针实现链表的插入排序。需要注意的只有一点指针必须在比较的数据节点之前,这样才能实现交换内存地址,从而实现插入功能。关于图,请大家看前面的双指针实现链表插入排序的博文,只需要将prel这个指针删除掉就行直接分享核心代码node *q,*p, *pr...

2019-08-09 11:48:38 146

原创 链表插入排序——双指针移动

在链表插入排序时,需要将一个链表拆分成两个链表,其中一个为有序链表,也就是只含头节点和一个数据节点,因为当只有一个数的时候就是有序的,另外一个链表含有剩下的数据节点,我们要实现的就是将这个含有剩下数据节点的链表一个节点一个节点的按从小到大的顺序插入到只有一个数据节点的链表里,从而实现链表从小到大的排序。如上图,将一个链表拆分成两个链表,q指向含剩下数据节点的链表接下来要做的就是将q指向的链表...

2019-08-08 19:49:03 325 1

原创 指针数组的应用

指针数组的应用在实现排序功能的时候,一般都是通过交换值的形式,通过循环逐渐得到我们想要的顺序。但是有时候排序通过值的交换实现起来比较麻烦,因此我们可以引用指针数组,通过交换地址的方式来得到我们想要的顺序。例:char a[4][10]={“CHINA”,“china”,“ABC”,“abcdef”} 将四个字符串通过从小到大的顺序依次排序,如果用交换值的形式,实现起来就会比较麻烦。但是通过指...

2019-08-07 23:29:13 462

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除