- 博客(170)
- 资源 (3)
- 收藏
- 关注
原创 程序员过中秋的方式是怎样的(附~教你用22种语言写中秋祝福语~ )
java: System.out.println("祝大家中秋快乐");powerBuilder:messagebox("祝大家中秋快乐")Golang : fmt.Println("祝大家中秋快乐")Asp : Response.Write "祝大家中秋快乐"J:document.write("祝大家中秋快乐")QBasic : Print "祝大家中秋快乐"C++ : cout
2022-08-24 14:01:54
1425
1
原创 搞懂 冒泡排序原理 锁和事务的原理(图文并茂)
原理机制: 相邻元素两两比较,大的/小的往后排,一轮比较结束,最大值出现在最大下标处.会比较多轮。MVCC(Multi-Version Concurrency Control)- 多版本并发控制。mysql默认的隔离级别可重复读是如何实现的?数据库中出现死锁,数据库是如何解决的?三者如何配合实现mysql的隔离级别。数据库中事务自动提交默认开启。四种隔离级别可能产生的问题。四种隔离级别由低到高。数据库默认的隔离级别。
2022-08-23 20:02:21
512
原创 IntelliJ 项目迁移到 Java 17
我们仍然编译了一些模块以与旧 Java 版本兼容,因此我们可以支持在这些版本下运行用户的项目。但是,现在大多数平台和插件模块都使用 Java 17,而即将推出的所有基于 IntelliJ 的 IDE 的 2022.3 版本都需要 Java 17 才能启动。如果您开发插件,则可以使用 Java 17 中的新语言功能和 API,但。. 如果您的插件分发需要在多个版本的 IDE 上运行,例如。前提是 plugin.xml 中的属性设置为。,那么您必须继续使用 Java 11。IntelliJ 项目的源代码最近。
2022-08-23 19:48:23
400
转载 学习Redis这一篇就够了
Redis是基于c语言编写的开源非关系型内存数据库,可以用作数据库、缓存、消息中间件,这么优秀的东西客定要一点一点的吃透它。这是关于Redis五种数据结构详解,包括这五种的数据结构的底层原理实现。理论肯定是要用于实践的,因此最重要的还是实战部分,也就是这里还会讲解五种数据结构的应用场景。String:字符串类型List:列表类型Set:无序集合类型ZSet:有序集合类型Hash:哈希表类型。
2022-08-22 16:45:16
2096
原创 修改order模块支持Dubbo 续 负载均衡 修改business模块 Seata概述Sentinel 介绍
Seata 是一款开源的分布式事务解决方案,致力于在微服务架构下提供高性能和简单易用的分布式事务服务也是Spring Cloud Alibaba提供的组件Seata官方文档更多信息可以通过官方文档获取AT模式运行有一个非常明显的条件就是事务分支都必须是操作关系型数据库(mysql\MariaDB\Oracle)但是如果一个事务中有操作例如Redis这样的非关系型数据库时就不能使用AT模式了除了AT模式之外还有TCC、SAGA 和 XA 事务模式TCC模式。...
2022-08-11 09:16:15
602
原创 创建order\stock模块 Dubbo 负载均衡
RPC是Remote Procedure Call的缩写 翻译为:远程过程调用目标是为了实现两台(多台)计算机\服务器,互相调用方法\通信的解决方案RPC的概念主要定义了两部分内容1.序列化协议2.通信协议为了方便大家理解RPC,下面的图片帮助理解上面图是老婆和老公在家的时,老婆让老公洗碗的调用流程但这个流程是本地的,我们再换成远程调用的图片通信协议通信协议指的就是远程调用的通信方式再上面图片调用中,老婆使用手机信息的方法通知老公去洗碗实际上这个通知的方式可以有多种。...
2022-08-11 09:08:12
422
原创 面试题之秒杀
1,商城有高并发情况,在数据库中减库存,数据库扛不着,在redis中使用lua脚本减库存,先得库存数量,判断库存数量够不够,如果够的话,减库存。2,订单发到消息队列服务器的延迟队列中,订单消息先保存30分钟,30分钟后,订单消息进了延迟队列。3,消息消费者拿到订单信息后,去数据库中查询是否支付,没有支付,回库。刷子流量占60%,进入系统内部,可能使用tomcat宕机了。商城买普通商品,下订单时不减库存,支付时减库存。缓存是多级,缓存离用户越近,速度越快。1级是浏览器缓存,只能缓存静态资料源。...
2022-07-25 18:13:42
599
原创 面试题之微服务
商城的项目,有很多模块,商品管理,用户管理,营销管理,订单管理,开发人员多了,有200个开发人员在一起开发,每个微服务可以独立上线,每个微服务可以使用不同的技术。开发规模大了,开发人员多,必须用微服务。缺点是性能低了[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-hx21H0mn-1658743423015)(day01.assets/image-20220713184458123.png)]内部调用用dubbo,允许别的公司调用用spring cloud alibaba[外链
2022-07-25 18:10:01
180
原创 创建commons和cart模块
Nacos收到这个"心跳包"如果发现这个服务的信息不在注册列表中,就进行注册,如果这个服务的信息在注册列表中就表明这个服务还是健康的。做具体配置之前,要明确,启动business之前,一定保证nacos在运行状态,否则启动business会报错的。启动之后,business一切功能正常,而且可以在nacos的服务列表中看到nacos-business的名称。默认情况下,启动服务后,每隔5秒会向nacos发送一个"心跳包",这个心跳包中包含了当前服务的基本信息。...
2022-07-25 18:02:56
883
原创 什么是Vant? Spring Cloud Nacos注册中心
Vant是一个轻量,可靠的移动端组件库,2017开源目前 Vant 官方提供了 Vue 2 版本、Vue 3 版本和微信小程序版本,并由社区团队维护 React 版本和支付宝小程序版本。课程中使用Vant 2.x版本可以浏览网站https://youzan.github.io/vant/v2/#/zh-CN/ElementUI是开发电脑浏览器页面的组件库而Vant是开发移动端显示页面的组件库酷鲨商城前台设计的是手机来访问,所以使用移动端更合适也就是使用Vant🚀 性能极佳,组件平均体积小于 1KB(min.
2022-07-06 10:03:47
3225
1
原创 框架学习的前置基础技术清单
你必须知道“环境变量”的作用,并将必须的命令的路径配置到环境变量的PATH中。示例–配置Java环境变量:http://doc.canglaoshi.org/doc/windows_jdk_eclipse.html注意:无论是CMD命令提示符窗口,还是IntelliJ IDEA中的Terminal窗口,都是在启动时就加载了环境变量的,如果你在其后修改过环境变量的配置,必须重新打开CMD命令提示符窗口,或重启IntelliJ IDEA,才可以应用新的配置。你必须知道Maven是有远程仓库服务器的,当你在Mav
2022-06-22 08:35:51
657
原创 IDEA Git操作(三)使用 cherry-pick、交互式 rebase 自由修改提交树
本教程按照 git在线练习 顺序进行,将在线测试的命令操作落地到 IDEA,使用开发工具来实现所有在线练习中的操作。你可以结合 git在线练习 来学习本教程,先在线学习git命令,再在 IDEA 中实现相同操作。新建 bugFix、side 和 another 分支上面的提交历史对照 learngitbranching.js.org 的结构图选中这三个提交右键选择 cherry-pick如果出现代码合并提示,选择 merge,将 bufFix 2 提交的代码合并到 master 的代码按照正确代码逻辑,向
2022-06-20 21:15:01
635
原创 IDEA Git操作(二)HEAD分离状态、操作符^和~、用reset和revert撤销提交
本教程按照 git在线练习 顺序进行,将在线测试的命令操作落地到 IDEA,使用开发工具来实现所有在线练习中的操作。你可以结合 git在线练习 来学习本教程,先在线学习git命令,再在 IDEA 中实现相同操作。切换到 master 并将 master 重置到第二次提交删除 bugFix新建 bugFix 分支切换到 master 并做一次提交切换到bugFix,并做一次提交对 bugFix 再做一次提交上面的提交历史对照 learngitbranching.js.org 的结构图用哈希值切换到最后一次提
2022-06-20 21:14:13
593
原创 IDEA Git操作(一)分支、分支合并、rebase
本教程按照 git在线练习 顺序进行,将在线测试的命令操作落地到 IDEA,使用开发工具来实现所有在线练习中的操作。你可以结合 git在线练习 来学习本教程,先在线学习git命令,再在 IDEA 中实现相同操作。创建本地仓库将工程目录 git-test1 设置为本地仓库目录在 git 工具窗口中查看提交历史添加一句打印按 ctrl+k 执行提交操作查看提交历史,可以看到有两次提交上面的提交历史对照 learngitbranching.js.org 的结构图执行以下两步操作:上面的提交历史对
2022-06-20 21:13:08
2265
原创 IDEA起步(四) - 创建Springboot项目,以及使用EditStarters插件快速添加依赖
使用创建Springboot项目STS 的 工具可以方便地控制Spring boot 项目的启停,IDEA提供了类似的工具: 工具窗口。执行下面操作开启Spring boot控制台:2. 找到 工具窗口3. 点击添加按钮4. 选择5. 选择添加这里列出所有 Spring boot 项目的启动类,可以方便的控制项目启停。STS开发工具中提供的 功能非常好用,可以方便的设置 Springboot 和 Spring Cloud 的依赖。IDEA中可以使用 插件来添加此功能。...
2022-06-20 21:12:05
1011
原创 IDEA起步(二) - 界面主题和字体设置
IDEA初次启动时可以选择黑或白主题:以后也可以根据个人偏好,自由的设置IDEA的界面主题:针对编辑器,可以单独设置它的颜色方案:如果要设置字体,可以在这里设置:
2022-06-20 21:09:25
312
原创 IDEA起步(一) - 工程结构
IDEA与Eclipse工程的组织结构不同。Eclipse是在一个工作空间目录中存放多个工程,而IDEA没有工作空间的概念,你可以在任意文件夹中创建工程。一个IDEA的工程,既可以是一个单独的工程,也可以把它当做Eclipse的工作空间,在其中存放其他“工程”,即Module(模块),对应关系如下:选择菜单: File - New - Project为项目命名,并选择存放路径(任意设置)作为独立的项目,可以在src目录中添加类你也可以把一个工程看作是Eclipse的工作空间,在其中可以创建其他“工
2022-06-20 21:07:51
472
原创 IDEA起步(五) - 常用快捷键,以及自定义快捷键
eclipse中代码辅助提示使用 ,IDEA中的代码辅助提示使用的是,可以把它改成与eclipse相同的 但快捷键已经被分配给了另外一项操作,所以我们要修改以下两个快捷键:第一步、修改第二步、修改快捷键设置这个鼠标快捷操作,可以方便地缩放字号。同理,继续设置增加字号操作即可...
2022-06-20 21:06:31
1093
原创 KNIFE4J框架
Knife4j是一款可以提供在线API文档的框架,是基于Swagger框架实现的。在Spring Boot项目中,使用Knife4j需要添加依赖:然后,需要添加配置,则在项目的包下创建类:注意:必须修改以上配置中的包名,保证是当前项目中控制器类所在的包!其它各项均可不修改,以上配置代码可以从Knife4j的官网找到!最后,还需要在配置文件中开启Knife4j的增强模式:完成后,启动项目,在浏览器中访问 http://localhost:8080/doc.html 即可查看当前项目的API文档。在控制器
2022-06-19 23:11:40
184
原创 创建Spring Boot的基本流程
Spring Boot是Spring官方的一个产品,其本质上是一个基于Maven的、以Spring框架作为基础的进阶框架,很好的支持了主流的其它框架,并默认完成了许多的配置,其核心思想是“约定大于配置”。在IntelliJ IDEA中,在创建向导中选择Spring Initializer即可开始创建Spring Boot工程,在创建向导的界面中,需要关注的部分有:以上2个值会共同构成一个Package name,如果Artifact Id的名字中有减号,在Package name中会去除,推荐手动添加小数点
2022-06-19 23:10:43
1325
原创 Maven配置 - settings.xml
缺少jar文件方法一: maven update在本地仓库目录搜索 “*.lastupdate”删除所有找到的文件在eclipse中,右键点击项目–maven–Update Project方法二: 使用中央仓库使用的国内镜像仓库可能缺少最新的jar文件可以把所有镜像仓库注释掉,使用maven的中央仓库以上方法都没用,那么可以复制别人可用的仓库,复制缺少的jar文件......
2022-06-19 23:08:36
111
原创 02-类别管理--添加类别--(持久层\业务逻辑层)
续前日,无新增续前日,无新增此前需要执行的SQL语句大致是:在的根包下创建类,用于封装以上查询结果:在的接口中添加抽象方法:8.4. 配置SQL语句在的中添加配置:8.5. 测试在的下创建文件,用于插入测试数据:然后,在中添加测试方法:完成后,执行整个测试类(将执行此类中所有测试方法),应该全部通过测试。在使用Dubbo的微服务架构中,需要将业务逻辑层的接口声明在专门的Module中,便于被其它微服务Module依赖,所以,先在下创建新的Module,名为,创建参数:首先,应该调用新Modu
2022-06-19 23:08:06
204
原创 07-Spring Security + JWT
此前,在处理登录的业务中,当视为登录成功时,返回的字符串并不是JWT数据,则应该将此数据改为必要的JWT数据。在控制器中,应该响应JSON格式的数据,所以,需要在中添加依赖。将控制器中处理请求的方法的返回值类型改为,并调整返回值:此时,重启项目,在浏览器中,使用正确的用户名和密码访问,响应的结果例如:注意:以上只是访问时会执行所编写的流程(发送用户名和密码,得到含JWT的结果),并不代表真正意义的实现了“登录”!登录的流程应该是:客户端提交用户名和密码到服务器端 >>> 服务器端认证成功后响应JWT
2022-06-19 23:06:45
299
原创 06-关于用户身份认证与授权
Spring Security是用于解决认证与授权的框架。在根项目下创建新的子模块,最基础的依赖项包括与(为避免默认存在的测试类出错,应该保留测试的依赖项),完整的的为:调整完成后,即可启动项目,在启动的日志中,可以看到类似以下内容:Spring Security有默认登录的账号和密码(以上提示的值),密码是随机的,每次启动项目都会不同。Spring Security默认要求所有的请求都是必须先登录才允许的访问,可以使用默认的用户名和自动生成的随机密码来登录。在测试登录时,在浏览器访问当前主机的任意网址
2022-06-19 23:06:10
591
原创 05-使用Redis缓存数据,管理员相关数据表
使用Redis可以提高查询效率,一定程度上可以减轻数据库服务器的压力,从而保护了数据库。通常,应用Redis的场景有:一旦使用Redis,就会导致Redis和数据库中都存在同样的数据,当数据发生变化时,可能出现不一致的问题!所以,还有某些数据在特定的场景中不能使用Redis:需要学会评估是否要求数据一定保持一致!要使用Redis缓存数据,至少需要:在使用Redis之前,还必须明确一些问题:暂定目标:在创建接口,并在接口中添加抽象方法:然后在创建(接口的实现类),实现以上接口:完成后,测试:然后,需要修
2022-06-19 23:05:37
683
原创 04-类别管理–根据id查询类别详情–持久层\业务逻辑层\控制器层, 使用Redis
本次需要执行的SQL语句大致是:关于字段列表,应该包括:13.2. 抽象方法(可能需要创建VO类)在的根包下的包下创建类,封装以上设计的字段对应的属性:在接口中添加:13.3. 在XML中配置SQL在中添加配置:13.4. 测试14. 类别管理–根据id查询类别详情–业务逻辑层14.1. 接口和抽象方法在中添加:14.2. 实现在中执行查询并返回。14.3. 测试15. 类别管理–根据id查询类别详情–控制器层在中添加:在中测试:16. 使用RedisRedis是一款
2022-06-19 23:04:48
436
原创 03-类别管理--添加类别--控制器层,类别管理–根据父级类别查询其所有子级类别–持久层\业务逻辑层\控制器层
当需要方法是事务性的,可以使用注解,此注解可以添加在:Spring JDBC是通过接口代理的方式进行事务管理,所以,只对接口中声明的方法有效!通常,应该将添加在接口中的抽象方法上(如果偷懒,或为了避免遗漏,也可以直接添加在接口上)。目前,由于没有添加相关依赖,所以,并不能直接在接口中使用注解(因为尚不可识别),则应该在此Module中添加依赖:11. 类别管理–添加类别–业务逻辑层(续)目前,在业务实现中,视为“错误”时始终抛出,且没有任何异常信息,是不合理的!在略大规模的项目中,“错误”的种类可能较大
2022-06-19 23:03:32
620
原创 RocketMQ (五) Springboot 整合 RocketMQ 收发消息样例
创建 springboot 项目,添加依赖。yml 配置application.ymlapplication-demo1.yml使用 demo1 profile 指定生产者组组名application-demo2.yml使用 demo2 profile 指定生产者组组名demo 1发送普通消息发送 Spring 的通用 Message 对象发送异步消息发送顺序消息测试类,需要放在 test 文件夹这个测试激活 demo1 profiledemo 2发送事务消息测
2022-06-18 22:48:38
486
原创 RocketMQ 发送事务消息原理分析和代码实现
RocketMQ 提供了可靠性消息,也叫事务消息。下面分析一下其原理。下面来看 RocketMQ 的事务消息是如何来发送“可靠消息”的,只需要以下三步:完成事务消息发送后,消费者就可以以正常的方式来消费数据。RocketMQ 的自动重发机制在绝大多数情况下,都可以保证消息被正确消费。假如消息最终消费失败了,还可以由人工处理进行托底。上面分析的是正常情况下的执行流程。下面再来看两种错误情况:回滚:消息回查:...
2022-06-18 22:47:41
353
原创 RocketMQ (四) 使用RocketMQ原生API收发消息代码样例
新建 maven 项目或 module,添加 依赖。同步消息同步消息发送要保证强一致性,发到master的消息向slave复制后,才会向生产者发送反馈信息。这种可靠性同步地发送方式使用的比较广泛,比如:重要的消息通知,短信通知。消费者消费者的要点:1. push 和 pull消费者有两种模式:push 和 pull。push 模式由服务器主动向消费者发送消息;pull 模式由消费者主动向服务器请求消息。在消费者处理能力有限时,为了减轻消费者的压力,可以采用pull模式。多数情况下都采用 pull
2022-06-18 22:46:24
344
原创 RocketMQ (三) 基本原理
在管理界面中新建主题,为了方便观察测试效果,这里把写队列和读队列的数量都设置成3。这样,在 broker-a 和 broker-b 上都创建了 Topic1 主题,并各创建了3写3读队列,共6写6读,如下图所示:你也可以修改Topic1分别配置 broker-a 和 borker-b 上的队列数量。 参数是设置队列的读写权限,下面表格列出了可配置的值及其含义:生产者将消息发送到 Topic1 的其中一个写队列,消费者从对应的一个读队列接收消息。生产者以轮询的方式向所有写队列发送消息,这些队列可能会分布
2022-06-18 22:45:16
179
原创 RocketMQ (二) 双主双从同步复制集群方案
作为测试环境,我们使用两台虚拟机来部署双主双从环境,具体结构如下:整个集群由两个 name server 实例和四个 broker 实例组成name server:broker A 主从:broker B 主从:首先参照《RocketMQ (一) 安装》笔记,在两台虚拟机上安装 Rocketmq。或在一台虚拟机上装好后进行克隆。在一台服务器上启动两个 broker 实例,需要为不同实例设置单独的数据存储目录。为了方便起见,我们在两台服务器上都创建这四个实例所需要的的目录。配置在 目录下提供了四种集群
2022-06-18 22:43:08
785
原创 RocketMQ (一) 安装_Wanght6的博客
1. 上传jdk压缩文件将文件上传到 /root 目录2. 解压缩执行解压命令3. 配置环境变量修改 /etc/profile 配置文件, 配置环境变量修改完后, 让环境变量立即生效4. 验证安装 RocketMQ1. 下载 rocketmq 二进制文件2. 解压缩 rocketmq将 rocketmq 解压到 /usr/local/ 目录3. 配置环境变量 ROCKETMQ_HOME 和 PATH为了后续操作方便可以配置环境变量,之后在任意位置都可以执行rocketmq的操作命令。
2022-06-18 22:41:57
221
原创 01-创建项目 创建数据表-类别管理--添加类别--持久层
此项目是一个自营性质电商类型的项目。当前目标是设计后台管理相关功能。开发项目的标准流程应该有:需求分析、可行性分析、总体设计、详细设计等。建议课后学习《软件工程》。在具体开发时,应该先创建数据库、数据表,然后创建项目进行开发。创建数据库:在此数据库中创建数据表:4. 关于Project与ModuleProject:项目 / 工程Module:模块在较大规范的项目开发中,可能会把代码区分为多个Module进行开发,即某1个Project中可能有多个Module,各Module允许独立开发、独立运行,并且
2022-06-18 18:37:34
398
原创 Kubernetes - 一键安装Kubernetes集群
使用三台物理机或VMware虚拟机来搭建集群环境,一台主控服务器,两台工作节点服务器。如果资源有限也可以去掉一个工作节点,使用两台服务器。kubeasz项目(https://github.com/easzlab/kubeasz)极大的简化了k8s集群的安装过程,他提供的工具可以轻松安装和管理k8s集群。先准备主控服务器调整 VMware 虚拟机的内存和 cpu:在主控服务器上下载安装环境初始化脚本工具 :使用工具脚本下载离线文件,并安装Docker默认下载最新推荐k8s/docker等版本(更多关于ezd
2022-06-18 09:59:57
638
原创 K8s部署Spring Cloud应用
https://github.com/benwang6/spring-cloud-repo只导入前5个项目修改2,3,4,5项目的yml配置,添加相面配置,使用ip注册按项目顺序执行:创建四个空文件夹,将2,3,4,5四个项目的jar文件复制到四个文件夹中:复制centos7-docker-image.gz到服务器并导入新建文件夹 jdk, 复制jdk-8u212-linux-x64.tar.gz到jdk目录在 jdk目录创建 Dockerfile 文件构建镜像eureka镜像进入eureka目录,
2022-06-17 08:38:37
662
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人