# springboot-demos **Repository Path**: liox/springboot-demos ## Basic Information - **Project Name**: springboot-demos - **Description**: 我就是个作业 我就是个作业 我就是个作业 - **Primary Language**: Java - **License**: MulanPSL-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2022-11-17 - **Last Updated**: 2023-03-10 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README ## 第一次作业 ### springbucks #### 介绍 (1)使用 Druid + mybatis + redis 改造 springbucks 项目(简单) ->已实现,redis使用app.redislabs.com提供的在线redis * 实现:CURD,查询时需要实现翻页及根据主键批量查询 * 查询时增加将结果缓存到 redis * 增删改需要加入事务管理,可以通过注解或者切面 (2) 使用 Druid 实现无侵入式 SQL 校验功能(偏难) ->已实现,ConnectionLogFilter类实现 * 不允许进行 SQL 拼接。 * 条件参数中,如果有 in ,in 列表不能超过 10 个。 (3)搭建 Redis Cluster ,将搭建步骤输出文档(中等) (4)命令行中练习 Redis 相关的各种数据结构的命令操作。(中等) (5)基于其他各类场景,设计并在示例代码中实现简单 demo(偏难) - 实现分数排名或者排行榜; - 实现全局 ID 生成; - 基于 Bitmap 实现 id 去重; - 基于 HLL 实现点击量计数12 =========================================================================================================================== ## 第二次作业 ### 作业题目如下:(大家可根据自身基础情况选择难度合适的作业作答提交) * (0).首先导入springboot-approot maven模块 * (0.5).所有单表的DAO分离到springentity 工程,业务复杂查询和更新保留在自己工程内,单独写xml实现 * (1).写代码实现 Spring Bean的装配,方式越多越好(XML、Annotation 都可以)【简单】 -- 已实现 springboot-registbean 模块 * (2).通过springmvc实现两个restful查询数据接口:第一个返回json数据格式,第二个返回xml数据格式(可通过改造第一次作业的springbuck项目实现)【正常】 -- 已实现 springbucks模块 spring.springbucks.controller.TestRestController * (3).新建一个Springboot项目,通过远程调用方式访问作业2提供的web接口,访问方式越多越好。【较难】 --springwaiters =========================================================================================================================== ## 第三次作业 ### 作业题目如下:(大家可根据自身基础情况选择难度合适的作业进行作答,至少作答1道题) (0.1).zk环境准备 ``` * (0.1.1)docker run --name zookeeper -p 2181:2181 -d zookeeper:3.7 启动镜像 * (0.1.2)docker start zookeeper 启动zk * (0.1.3)docker exec -it zookeeper bash 进入zk控制台 * (0.1.4)cd bin ./zkCli.sh 进入zk客户端 ``` (0.2).rabbitMq环境准备 ``` * (0.2.1)docker pull rabbitmq:3.7-management * (0.2.2)docker run --name rabbitmq -d -p 5672:5672 -p 15672:15672 -e RABBITMQ_DEFAULT_USER=spring -e RABBITMQ_DEFAULT_PASS=spring -d rabbitmq:3.7-management 启动镜像 管理界面:http://localhost:15672/ ``` (0.3).mysql环境准备 ``` * (0.3.1) docker pull mysql:latest * (0.3.2) docker run -itd --name mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=springbucks mysql docker exec -it mysql bash * (0.3.2) Mysql数据库的配置 建立mysql远程访问账户 mysql -u root -p 命令:use mysql; 命令:select host,user from user; 命令:ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'springbucks'; 命令:flush privileges; 把root用户的密码改成 mysql_native_password 模式,即可远程连接 #创建一个账号-springbucks,用来进行远程访问; CREATE USER 'springbucks'@'%' IDENTIFIED BY 'springbucks'; 赋予所有权限给之前创建的账号:springbucks GRANT ALL ON *.* TO 'springbucks'@'%'; 确认使用密码{springbucks}登录此账号{springbucks} 密码尽量复杂,安全性更高。 ALTER USER 'springbucks'@'%' IDENTIFIED WITH mysql_native_password BY 'springbucks'; 刷新权限 FLUSH PRIVILEGES; drop schema if exists springbucks;–删除数据库 create schema springbucks default character set utf8 collate utf8_general_ci;–创建数据库 grant select,insert,update,delete,create on springbucks to root;–用户授权数据库 grant select,insert,update,delete,create on springbucks to springbucks;–用户授权数据库 flush privileges;–立即启用配置 create database if not exists springbucks; 目前数据库已经从H2迁移到Docker的mysql上了 ``` (0.4).consul环境准备 ``` * (0.4.1) docker pull consul * (0.4.2) docker run --name=consul --hostname=a16ddfed4ce7 --mac-address=02:42:ac:11:00:05 --env=PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin --env=HASHICORP_RELEASES=https://releases.hashicorp.com --volume=/consul/data -p 8500:8500 --label='org.opencontainers.image.authors=Consul Team ' --label='org.opencontainers.image.description=Consul is a datacenter runtime that provides service discovery, configuration, and orchestration.' --label='org.opencontainers.image.documentation=https://www.consul.io/docs' --label='org.opencontainers.image.source=https://github.com/hashicorp/consul' --label='org.opencontainers.image.title=consul' --label='org.opencontainers.image.url=https://www.consul.io/' --label='org.opencontainers.image.vendor=HashiCorp' --label='org.opencontainers.image.version=1.11.1' --runtime=runc -d consul:latest ``` (0.5).kafka环境准备 ``` * (0.5.1) docker-compose.yml 编写 * (0.5.2) docker-compose.yml目录下启动终端 docker-compose up -d ``` (0.6).apollo环境准备 ``` 参考blog https://blog.csdn.net/m0_37367413/article/details/84074715 * (0.6.1) 下载工程 * (0.6.2) 创建C:\opt\settings\server.properties目录,并填写内容【env=DEV】 ``` (1).通过 spring stream 访问 rabbit mq 与kafka【简单】 springbucks springbarista工程 rabbitMq消息驱动成功 测试请求文件 springbucks/src/main/resources/Test.http kafka springkafka-waiter/springkafka-customer工程 测试请求文件 springkafka-customer/src/main/resources/Test.http (2).整合apollo 作为服务配置中心【正常】 springapollo 项目 (3).用zookeeper作为服务注册中心,并通过服务发现正确发起远程调用【较难】 springzookeeper 工程