04 2020 档案

摘要:复制observeTest的代码,改成toObserveTest 修改方法名 访问方式改成toObservable 我们来看下调用结果 底下报了一个错。 说我们执行的次数太多 那么为什么会报出这样一个错误呢? 首先我们在执行Observe和toObservable的区别,就是下面这个对象我们不能用多 阅读全文
posted @ 2020-04-30 23:50 高山-景行 阅读(283) 评论(0) 推荐(0) 编辑
摘要:它的返回对象是Observeable里面的泛型是Command里面的泛型。 这是阻塞式调用。 运行阻塞式调用测试 发现和execute区别不是很大 名称改一下 非阻塞式调用 提供了三个方法,第一个是编译,第二个是报错的时候,onNext是就类似于它们在执行方法的时候,在做的一个事情。 这里参数名改成 阅读全文
posted @ 2020-04-30 22:51 高山-景行 阅读(264) 评论(0) 推荐(0) 编辑
摘要:command这里除了execute还有queue队列。execute是同步执行,queue是异步执行。 还有另外的两条线,observe和toObservable 演示queue 增加开始时间和结束时间。 运行测试 增加queue的测试方法。这里执行完成后立马返回的是一个Future对象,但是这个 阅读全文
posted @ 2020-04-30 22:28 高山-景行 阅读(584) 评论(0) 推荐(0) 编辑
摘要:准备好的依赖包 把依赖包拷贝到我们的pom.xml内 新建test包,然后按照下面路径建包 首先演示command,那就先创建command包 创建CommandDemo 继承HystrixCommand指定泛型为String,然后实现Run方法。 上面之所以还会报错,是因为还需要构造函数,然后把n 阅读全文
posted @ 2020-04-30 20:44 高山-景行 阅读(380) 评论(0) 推荐(0) 编辑
摘要:构建演示的工程,轻量级的 在show工程下在单独新建工程 复制groupId 改成下划线即可 删除文件。没用的 修改配置文件为yml格式 test文件夹删除 复制过来parent节点 这里先都去掉 复制一个日志配置文件 配合文件复制过来 指定端口和服务名 父工程内加入这个模块 导入依赖 结束 阅读全文
posted @ 2020-04-30 20:20 高山-景行 阅读(184) 评论(0) 推荐(0) 编辑
摘要:Hytrix官方的 第一部分是这里。熔断依赖命令来实现的 可以认为是线程的入口,所有需要Hytrix支持的内容 都必须要走 HystrixCommand、HystrixObservableCommand:只有这两种形式,没有其他可选的形式。除非你们继承它实现了自己的子类 第二部分 都是入口,这四个的 阅读全文
posted @ 2020-04-30 20:08 高山-景行 阅读(1015) 评论(0) 推荐(0) 编辑
摘要:容错就是兼容错误,包容错误。 延迟:限流和快速失败的一些措施 级联故障 雪崩效应 订单服务进来, 订单服务需要 库存和交易服务的支持。 雪崩,代金券的服务出问题了。交易服务就可能出现超时。 调用一个节点失败了,可能会重试 级联故障,就是底下一个出问题了影响上面的 服务熔断后,会触发降级 降级和快速失 阅读全文
posted @ 2020-04-30 12:52 高山-景行 阅读(171) 评论(0) 推荐(0) 编辑
摘要:世面上最好之一的熔断器。 熔断很大程度上依赖它的隔离 结束 阅读全文
posted @ 2020-04-30 12:38 高山-景行 阅读(174) 评论(0) 推荐(0) 编辑
摘要:影厅新增时候要从影片那里获取东西 当时也是通过choose获取服务地址 课后作业 ,自己改成ribbon的形式 结束 阅读全文
posted @ 2020-04-30 12:32 高山-景行 阅读(504) 评论(0) 推荐(0) 编辑
摘要:所有默认参数的配置可以去找DefaultClientConfigImpl 全局搜索一下 这些都是参数的默认实现 只看具体的key 而我们配置文件配置的参数是这样的 客户端配置的方法。client是你要指定的客户端。 如果想针对,hello-service的配置,那么就是下面这么配置,第二行ribbo 阅读全文
posted @ 2020-04-30 12:28 高山-景行 阅读(1274) 评论(0) 推荐(0) 编辑
摘要:演示IPing 提前启动了这些服务 这样IPing就写完了。 重启consumer服务 访问报错。 报错原因就是IPing在起作用,本身就是通过请求访问我们的服务, 这里我们配置的IPing是全局的,所以他不区分服务,不区分服务的情况下呢,它这里访问的就是任何服务的/abc的地址。如果这个url是存 阅读全文
posted @ 2020-04-29 23:47 高山-景行 阅读(245) 评论(0) 推荐(0) 编辑
摘要:allServerList是所有的服务 upServerList:是在线的服务。 结束 阅读全文
posted @ 2020-04-29 23:29 高山-景行 阅读(581) 评论(0) 推荐(0) 编辑
摘要:自定义IRule Ctrl+Shift+Alt+N搜索,ribbon-loadbalancer 所有的实现都在这个包下 包含了很多的规则 来看下RandomRule的规则继承AbstractLoadBalancerRule并实现choose方法。 全量的是所有的服务列表。在线的是保持在线的服务列表 阅读全文
posted @ 2020-04-29 23:24 高山-景行 阅读(364) 评论(0) 推荐(0) 编辑
摘要:最快的可实现的算法, 根据返回的时候动态的平衡的算法 用什么算法直接在这里返回对象 重启Consumer服务 随机切换 换一个规则 再次重启consumer服务 结束 阅读全文
posted @ 2020-04-29 23:14 高山-景行 阅读(188) 评论(0) 推荐(0) 编辑
摘要:启动我们的consumer服务。 这个有个sayHello的方法 刷新页面,默认的就已经是负载均衡了。 http://localhost:7201/sayhello?message=eureka 简化开发的流程 让restTemplate 具有负载均衡的能力。加上@Loadbalanced注解 re 阅读全文
posted @ 2020-04-29 23:05 高山-景行 阅读(339) 评论(0) 推荐(0) 编辑
摘要:演示环境修改,解决ribbon和eureka的整合 复制配置文件改个名字 把端口改成7102 再复制一个端口是7103 这样我们就有个三个配置文件,我们来启动三次 分别启动不同的配置文件。 复制 再来创建两个 再继续添加 原来那个01改回来,改成02. 启动测试 先启动eureka server 启 阅读全文
posted @ 2020-04-29 22:56 高山-景行 阅读(185) 评论(0) 推荐(0) 编辑
摘要:生态都是官方提供的,不用纠结于选型。 数据是单向的 一份数据在多个组件中的使用。下图EFI同时都要展示userName。它还可能被用户修改,修改之后其他组件也要去同步的修改。 那么userName怎么管理,最简单的方式是在共同的父节点去管理这份数据。也就是下图的A里面。这种通过属性的传递的方式非常脆 阅读全文
posted @ 2020-04-28 22:48 高山-景行 阅读(450) 评论(0) 推荐(0) 编辑
摘要:问题7 输入停止后上面的值才会发生变化 用了一个setTimeout 问题8 我们需要两个属性,秒杀开始时间,秒杀结束时间 moment是对时间做格式化的一个库 修改开始时间和结束时间 可以点击立即购买 参加过就不能再点击了。 这个组件主要的难点就是我们如何做时间的校验,因为我们做时间计时,是取的用 阅读全文
posted @ 2020-04-28 22:30 高山-景行 阅读(155) 评论(0) 推荐(0) 编辑
摘要:具体的还是使用了Object.defineProperty的API 看代码 input框在输入后会触发修改this.info.name的行为, 在父组件里面,我们之生命了info这个对象。这个info里面有没有这个name字段,我们是不知道的。并没有声明name的key 现在依然在子组件内成功的修改 阅读全文
posted @ 2020-04-28 21:41 高山-景行 阅读(184) 评论(0) 推荐(0) 编辑
摘要:看demo 最终生成的html 通过属性控制level jsx的写法 手写render函数的形式 通过函数式组件渲染jsx的标签。 最终都是编译成CreateElement 课后习题 结束 阅读全文
posted @ 2020-04-28 20:17 高山-景行 阅读(786) 评论(0) 推荐(0) 编辑
摘要:跨层级的获取组件实例 如果是普通的元素,ref="p"获取的是真实的dom元素,如果是自定义组件,那么获取到的就是这个组件的实例了。 this.$ref.XXXX可以获取当前组件上下文的实例。如果说要获取跨层级的组件的实例?那就很不方便了。 如果要获取父组件的,可以通过parent.refs. 获取 阅读全文
posted @ 2020-04-28 19:53 高山-景行 阅读(661) 评论(0) 推荐(0) 编辑
摘要:平时开发用到的不多,但是如果你开发底层的一些通用组件的话,这是一个使用频率相当高的特性。 它主要解决的问题是组件之间通讯的问题。 i节点要和B节点通信,通常是使用属性的传递。i节点通过一个属性传递给b节点。b节点要和i节点通信也是通过this.$.emit去和i节点通讯。 如果i节点要和E节点通讯的 阅读全文
posted @ 2020-04-28 12:59 高山-景行 阅读(395) 评论(0) 推荐(0) 编辑
摘要:如果你经常使用Template语法的话,那你会经常用到指令。如果你使用的render或者jsx的话,指令可能就显得没那么常用了。 指令的demo,这是14种指令罗列出来的。 指令会把子元素下面的所有内容替换掉。 v-html内最终也会替换hello world。最终会变成span标签。开发时候不建议 阅读全文
posted @ 2020-04-28 12:36 高山-景行 阅读(399) 评论(0) 推荐(0) 编辑
摘要:创建和销毁只会执行一次,更新阶段会执行多次。 demo 刷新页面控制台的输出,声明周期的几个步骤 点击按钮,按钮内容变成停止。 控制台一直在输出 点击了销毁时钟 点击开始的执行事件 外层的销毁 销毁的事件 函数式组件 借助函数式组件来实现模板中做临时变量这样一个事情。在vue的模板中是没有提供临时变 阅读全文
posted @ 2020-04-28 00:09 高山-景行 阅读(454) 评论(0) 推荐(0) 编辑
摘要:可以理解为在里面可以写计算逻辑的属性, 运用 this.$forceUpdate()强制刷新 反转字符串,用了两种方式,一种是计算属性,写在computed里面,另外一种是方法写在了methds里面。 点击按钮控制台的输出,message1并没有去执行,因为我们的message没有变化,所以说如果我 阅读全文
posted @ 2020-04-27 23:43 高山-景行 阅读(354) 评论(0) 推荐(0) 编辑
摘要:看demo,上面有三个按钮, 页面并没有发生改变 下面这两种情况,并不会触发组件的更新。首先因为我们的name并没有做响应式。 第二个this.info.number,响应式只是存在info上,info下面再进一步的数据字段,是没有去做的,我们如何把它变为响应式的呢? 把name放到我们的retur 阅读全文
posted @ 2020-04-27 23:15 高山-景行 阅读(1783) 评论(0) 推荐(0) 编辑
摘要:vue解决jquery的痛点,通过引入一个数据中间层,我们的事件不再直接的操作DOM,而是通过事件改变我们的数据,数据再去映射到我们的真实的DOM。这块功能是由vue的底层帮我们处理的。也就是我们不再直接去操作dom。,数据的更新就会导致dom的更新。 如何尽可能的高效的去更新我们的dom,操作do 阅读全文
posted @ 2020-04-27 23:02 高山-景行 阅读(630) 评论(0) 推荐(0) 编辑
摘要:这是一个个人信息的demo 输入手机号和邮编 这是两个组件,两种不同的写法 第一种是通过v-model进行的双向绑定 第二种是属性的传递,事件的回调。去做数据的更新。 实际上v-model的形式,就是我们第二种方式,最终编译出来的效果。 所以v-model仅仅是语法糖而已。 有时候一个组件需要多个属 阅读全文
posted @ 2020-04-27 00:22 高山-景行 阅读(325) 评论(0) 推荐(0) 编辑
摘要:新建一个配置文件 准备好的配置文件 # Max number of retries on the same server (excluding the first try) jiangzh-client.ribbon.MaxAutoRetries=1 # Max number of next ser 阅读全文
posted @ 2020-04-26 00:32 高山-景行 阅读(267) 评论(0) 推荐(0) 编辑
摘要:这些蓝色的都是一些服务 被选中的都是eureka的Client服务。 eureka的client和Ribbon的Client他们是在一起的。在同一个客户端。 结束 阅读全文
posted @ 2020-04-25 23:45 高山-景行 阅读(155) 评论(0) 推荐(0) 编辑
摘要:结束 阅读全文
posted @ 2020-04-25 22:54 高山-景行 阅读(151) 评论(0) 推荐(0) 编辑
摘要:提前把这三个服务都启动起来 先测试影厅查询 请求方式:GET 请求地址:http://localhost:8501/halls 遇到的问题 最后发现是xml内配置where条件的地方写错了。这里应该是ew,前面写错了。 继续 传一个cinemaId=3的参数。这个接口没写。 新增 请求方式:POST 阅读全文
posted @ 2020-04-25 22:45 高山-景行 阅读(197) 评论(0) 推荐(0) 编辑
摘要:创建包config,然后里面定义restTemplate Service实现类里面需要注入这两个 远程调用获取影片的信息。 需要下面几个步骤 解析的数据是在data里面的 { "code": 200, "message": "", "data": { "filmId":"1", "filmName" 阅读全文
posted @ 2020-04-25 22:33 高山-景行 阅读(154) 评论(0) 推荐(0) 编辑
摘要:hallFilmInfo是个冗余的表,是为了查询播放厅数据更快,而单独做的一个表。实际的开发过程中,redis里面会存一份。 这里漏掉了一个HallName的属性字典。 Price票价应该是个小数,但是这里因为是演示的,所以用了int类型也就不改了。 通过自己单独封装一个方法describeFilm 阅读全文
posted @ 2020-04-25 22:22 高山-景行 阅读(251) 评论(0) 推荐(0) 编辑
摘要:这种的写法相对比较固定。 下面我们来看一下用了 Mybatis Plus的写法。 之前我们讲解过QueryWrapper。可以在QueryWrapper上加查询条件。MyBatis Plus在这个QueryWrapper上使用还是比较灵活的。 可以认为QueryWrapper就是一个字符串拼接器 把 阅读全文
posted @ 2020-04-25 22:10 高山-景行 阅读(246) 评论(0) 推荐(0) 编辑
摘要:加上注释 Page参数一定要在前面 XML内 因为我们是单库,所以可以用关联表的形式查询出cinemaName SELECT (SELECT cinema_name from mooc_cinema_t c WHERE c.`UUID` = fie.cinema_id) as cinemaName, 阅读全文
posted @ 2020-04-25 18:10 高山-景行 阅读(267) 评论(0) 推荐(0) 编辑
摘要:创建save方法的VO对象 然后再来继承我们的BaseRequestVO 正常这里我们就是要做一下 参数的选择 接口内定义保存的方法 :add是添加自定义动作 创建实现类 实现方法 结束 阅读全文
posted @ 2020-04-25 15:57 高山-景行 阅读(151) 评论(0) 推荐(0) 编辑
摘要:这次主要针对影厅模块。 首先创建controller 创建service 创建service接口类 创建HallController 这里是需要分页的 所以需要原来写的分页组件拷贝过来。 复制到了我们这里 然后开始写接口的代码 请求一共有三个参数 请求方式:GET 请求地址:http://local 阅读全文
posted @ 2020-04-25 14:31 高山-景行 阅读(308) 评论(0) 推荐(0) 编辑
摘要:先复制groupId 文件夹改成下划线的形式 删除这三个 复制parent节点 复制依赖的包过来 build部分的代码整个复制过来 复制logback.xml 修改配置文件为yml yml的配置 全部复制过来 端口改成8501 改名为hall-service eureka的默认端口为是8761,下面 阅读全文
posted @ 2020-04-18 23:54 高山-景行 阅读(293) 评论(0) 推荐(0) 编辑
摘要:主要接触的表是下面部分 结束 阅读全文
posted @ 2020-04-18 21:56 高山-景行 阅读(151) 评论(0) 推荐(0) 编辑
摘要:第二个参数是queryWrapper,因为我们这里没有传递查询条件,所以这里直接是传一个null就可以了。 可以参考网上的代码: https://github.com/zhongxuebinwin8/backend-parent/blob/master/backend-cinema/src/main 阅读全文
posted @ 2020-04-18 21:49 高山-景行 阅读(148) 评论(0) 推荐(0) 编辑
摘要:创建vo的包 创建controller 请求方式:POST 请求地址:http://localhost:8301/cinemas/cinema:add { "brandId": "1", "areaId": "1", "hallTypeIds": "1#2#3", "cinemaName": "大地 阅读全文
posted @ 2020-04-18 21:29 高山-景行 阅读(164) 评论(0) 推荐(0) 编辑
摘要:构建影院的模块 先复制groupId 新建一个模块 删除一些没必要的文件 替换一下 照着film模块复制的 复制film的build模块复制到这里 然后引入这些包 自动生成的这里的包引入的Junit5 改成Jinit4的包 复制一个logback.xml过来。 application改成yml格式 阅读全文
posted @ 2020-04-18 20:49 高山-景行 阅读(262) 评论(0) 推荐(0) 编辑
摘要:影院表是主表。 影院模块留给大家的作业。 mooc_cinema_t mooc_brand_dict_t mooc_area_dict_t mooc_hall_dict_t 结束 阅读全文
posted @ 2020-04-18 15:07 高山-景行 阅读(237) 评论(0) 推荐(0) 编辑
摘要:提前启动这两个服务 测试 首先是演员列表: http://localhost:8401/films/actors 分页的参数是可传,可不传的 影片新增 直接把这个例子拷贝过来 自己测试发现一个错误 把json复制过来,直接添加影片。返回一个错误。 { "timestamp": "2020-04-24 阅读全文
posted @ 2020-04-18 15:04 高山-景行 阅读(140) 评论(0) 推荐(0) 编辑
摘要:保存这里,给大家准备了一个工具类 检查是否是int类型 字符串转int类型。 复制到我们的ToolUtils下。 把对应的包引用下 加上注释 前端传递过来的都是字符串,所以这里都需要进行转换 但是字符串转换为localDateTime的话是需要时分秒的,所以我们在字符串后面手动的的拼接一下 影片信息 阅读全文
posted @ 2020-04-18 14:55 高山-景行 阅读(137) 评论(0) 推荐(0) 编辑
摘要:使用安装的插件生成set 只有上面的保存成功后,才能知道下面的filmId MybatisPlus在做操作的时候,它本身会进入缓存期。在缓存期,就可以把uuid取出来。 取出来uuid放在同一个映射对象里 我们通过这个引用对象就可以获取到uuid 结束 阅读全文
posted @ 2020-04-18 14:30 高山-景行 阅读(121) 评论(0) 推荐(0) 编辑
摘要:根据主键获取电影信息,这可能是这个模块最复杂的一个场景了。 sql语句有点复杂 返回的对象 比较麻烦的字段 接口文档里面,我们要转换成这个格式 数据库内存的是这个。我们要把这个转换成中文 演员我们应该查的是这个表 mysqk本身给我们提供了一个现成的函数。纵列转横列 SELECT GROUP_CON 阅读全文
posted @ 2020-04-18 14:20 高山-景行 阅读(280) 评论(0) 推荐(0) 编辑
摘要:开始影片的查询 定义接口方法 返回的数据类型 对照着这个返回类,把数据一个个的返回回来。 现在sql的编辑器里面把sql写好 复制到xml内,然后再调整下格式 select film.`UUID` AS filmId, film.`film_status` AS filmStatus, info.` 阅读全文
posted @ 2020-04-18 13:58 高山-景行 阅读(268) 评论(0) 推荐(0) 编辑
摘要:逻辑层和数据层组织一下 比如说这里的describeActors方法,这里自定义一个sql 大家做分页,记得,第一个参数一定是这个Page对象。在MoocActorMapper里面定义describeActors方法,参数是Page<DescribeActorsResqVO>,返回的是IPage 在 阅读全文
posted @ 2020-04-18 13:46 高山-景行 阅读(165) 评论(0) 推荐(0) 编辑
摘要:stable就是稳定版本 主要讲的是在苹果本和服务器上去做升降级的操作。 结束 阅读全文
posted @ 2020-04-16 23:28 高山-景行 阅读(139) 评论(0) 推荐(0) 编辑
摘要:node -v:展示当前安装的node的版本 结束 阅读全文
posted @ 2020-04-16 23:21 高山-景行 阅读(243) 评论(0) 推荐(0) 编辑
摘要:结束 阅读全文
posted @ 2020-04-16 23:12 高山-景行 阅读(312) 评论(0) 推荐(0) 编辑
摘要:请求方式:POST 请求地址:http://localhost:8401/films/film:add { "filmStatus": "1", "filmName": "我不是药神", "filmEnName": "Dying To Survive", "mainImgAddress": "fil 阅读全文
posted @ 2020-04-15 23:34 高山-景行 阅读(153) 评论(0) 推荐(0) 编辑
摘要:根据电影编号,获取电影信息 请求方式:GET 请求地址:http://localhost:8401/films/{filmId} { "code": 200, "message": "", "data": { "filmId":"1", "filmName":"我不是药神", "filmLength 阅读全文
posted @ 2020-04-15 23:25 高山-景行 阅读(299) 评论(0) 推荐(0) 编辑
摘要:浏览影片的接口 请求方式:GET 请求地址:http://localhost:8401/films { "code": 200, "message": "", "data": { "films": [ { "filmId":"1", "filmStatus":"1", "filmName":"我不是 阅读全文
posted @ 2020-04-15 23:18 高山-景行 阅读(180) 评论(0) 推荐(0) 编辑
摘要:下面来看表现层这里。 新建controller的包 提前准备好的接口文档,有这四个接口 这里写的端口是8401 把我们的film模块也改成8401的端口。application.yml 演员列表 请求方式:GET请求地址:http://localhost:8401/films/actors { "c 阅读全文
posted @ 2020-04-15 22:41 高山-景行 阅读(178) 评论(0) 推荐(0) 编辑
摘要:数据的初始化。 每个模块就要有代码生成器。从user模块拷贝过来。 复制过来后,里面有一些需要改的配置、 复制java的文件夹的物理路径 复制到输出的路径上。 复制dao的包路径 要生成的表 运行代码生成器。 报了一个错 生成后的,把controller和service都删掉。 xml 结束 阅读全文
posted @ 2020-04-15 22:16 高山-景行 阅读(134) 评论(0) 推荐(0) 编辑
摘要:数据库的表结构 猫眼前台轮播图,一般都是手动插入的,所以这一步不存在维护的事情。 主表 主表的字表,存不太常用的信息。通过film_id来关联。 有三个字典表。分别代表这分类 剧情 动作、循环、等类型 影片的来源。中国、韩国、美国等 属于哪个年代的影片。80年代 90年代 电影的演员表 电影演员表 阅读全文
posted @ 2020-04-15 22:02 高山-景行 阅读(354) 评论(0) 推荐(0) 编辑
摘要:新建模块 和user模块及其的类似,更多的是复制user模块的代码 到我们新的模块里 手动复制groupId 右下角 复制parentId 删除没必要的文件 父工程内加上对应的子模块 删除依赖 去user模块内复制。common的依赖。 复制film。这样基础的环境就搭建完成了。 配置文件处理 复制 阅读全文
posted @ 2020-04-15 19:19 高山-景行 阅读(138) 评论(0) 推荐(0) 编辑
摘要:总共有四个服务。影片模块比较复杂。带着大家去开发完成,影院模块是留给大家的作业。大家自己去完成开发。 传统模块各个模块服务之间的调用。 微服务的结构 影片服务和院线服务,服务之间的远程调用。 我们先来构建我们的影片服务。右边的部分。 结束 阅读全文
posted @ 2020-04-15 12:55 高山-景行 阅读(202) 评论(0) 推荐(0) 编辑
摘要:自我保护在单节点的情况下,经常会遇到。 AP的特性导致不会轻易的剔除注册的信息。 所有注册过我的,理论上都是可用的 阅读全文
posted @ 2020-04-15 12:49 高山-景行 阅读(203) 评论(0) 推荐(0) 编辑
摘要:随着系统的大小,注册会越来越慢。 阅读全文
posted @ 2020-04-15 12:45 高山-景行 阅读(402) 评论(0) 推荐(0) 编辑
摘要:可用性:系统不能轻易的挂掉。 分区容错性:系统划分到很多的地方,哪怕是在一个机房 也是在不同的分区里。防止一个地方挂了,另一个地方也会挂掉。 没有任何系统可以满足CAP,顶多其中两个满足, eureka更多的保证的是可用性和分区容错性,。出现错注册中心的情况下,先保证的是可用性,就像剔除服务的时候, 阅读全文
posted @ 2020-04-15 12:43 高山-景行 阅读(286) 评论(0) 推荐(0) 编辑
摘要: 阅读全文
posted @ 2020-04-15 12:34 高山-景行 阅读(333) 评论(0) 推荐(0) 编辑
摘要: 阅读全文
posted @ 2020-04-15 12:32 高山-景行 阅读(197) 评论(0) 推荐(0) 编辑
摘要:服务续约,每30秒汇报一次,每一次收到心跳续约90秒。<br /><br /><br />续约可以从控制台看到,例如这里我们什么都没看,控制台也在打印日志<br /><img alt="" id="img1586924888382" src="https://img2020.cnblogs.com/ 阅读全文
posted @ 2020-04-15 12:31 高山-景行 阅读(278) 评论(0) 推荐(0) 编辑
摘要:心跳机制,默认是30秒一次 结束 阅读全文
posted @ 2020-04-15 12:26 高山-景行 阅读(190) 评论(0) 推荐(0) 编辑
摘要:eureka client本身给我提供的一个东西 需要参数serviceId 就是provider的yml里面配置的这个hello-service-provider ServiceInstance接收。里面有很多的方法,可以获取到端口号 urli、host等 重启comsumer的服务。 访问: h 阅读全文
posted @ 2020-04-15 12:18 高山-景行 阅读(164) 评论(0) 推荐(0) 编辑
摘要:准备工作 最终拼成的链接地址的样子 返回值是String 重启consumer的服务 控制台日志的输出。 hostname和port都是写死的 域名和端口我们不应该写死,应该去动态的获取。 结束 阅读全文
posted @ 2020-04-15 00:24 高山-景行 阅读(150) 评论(0) 推荐(0) 编辑
摘要:构建comsumer 新建config和controller、service的包。这里就来模拟正式的调用了。 定义接口类 接口的实现类。目标就是要在接口内实现provider里面的测试方法。 创建ComsumerController service层加上注解 远程调用 spring 默认给我们提供好 阅读全文
posted @ 2020-04-15 00:02 高山-景行 阅读(189) 评论(0) 推荐(0) 编辑
摘要:演示剩余的两部分内容 provider要有可供我们可调用的方法。provider里面我们直接写controller就可以了 provider服务里面新建controller包,新建ProviderController package com.mooc.meetingfilm.provider.con 阅读全文
posted @ 2020-04-14 23:46 高山-景行 阅读(276) 评论(2) 推荐(0) 编辑
摘要:引入依赖 Eureka Client的配置。 这个依赖comsumer和provider都是需要的。 从ppt也可以看出来,不管是comsumer还是provider都会去连接Eureka Server 这个其实在父工程里面,可以在父工程里面引用,引完之后,这两个子工程自然就有了。但是为了给大家演示 阅读全文
posted @ 2020-04-14 13:34 高山-景行 阅读(206) 评论(0) 推荐(0) 编辑
摘要:创建演示用的show父工程 额外建几个模块用来演示用 先复制我们的groupId 新建show模块 改成下划线 删除一些不必要的文件 复制user模块的下的parent 复制到show模块 删除 build不删也没关系 然后倒入一些包 这个工程什么都不会写 所以把src目录也删除掉 这个模块只会作为 阅读全文
posted @ 2020-04-14 12:45 高山-景行 阅读(468) 评论(0) 推荐(0) 编辑
摘要:eureka server的一些配置 复制到我们的配置里 logback.xml复制过去。 还有logging的配置也复制到yml内。这里复制User这个模块下 复制到了eureka_server的项目里 启动类的配置 启动eureka服务 8761端口已经被占用 换一个端口号8762 这个是集群, 阅读全文
posted @ 2020-04-14 12:27 高山-景行 阅读(192) 评论(0) 推荐(0) 编辑
摘要:之前准备好的文本 SpringCloud 依赖: <dependencyManagement> <dependencies> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-depe 阅读全文
posted @ 2020-04-14 00:15 高山-景行 阅读(188) 评论(0) 推荐(0) 编辑
摘要:Eureka官方网站提供的 结束 阅读全文
posted @ 2020-04-13 23:44 高山-景行 阅读(185) 评论(0) 推荐(0) 编辑
摘要:Eureka就是注册中心。 spring cloud 提供了完整的服务治理的实现。怎么解决注册中心、负载均衡、熔断、统一的请求处理。怎么解决我们的配置, 整门课程都会贯穿服务治理。 结束 阅读全文
posted @ 2020-04-13 23:43 高山-景行 阅读(258) 评论(0) 推荐(0) 编辑
摘要:结束 阅读全文
posted @ 2020-04-13 20:24 高山-景行 阅读(148) 评论(0) 推荐(0) 编辑
摘要:简单的测试下。 启动user的服务 我们添加的密码 把密码改成正确的 演示不输入密码的错误 总结 数据验证和自定义的异常 统一异常处理类 具体业务的处理 jwt的内容。生成randomKey。然后根据randomKey再去生成token 然后就是postman的测试 结束 阅读全文
posted @ 2020-04-13 20:19 高山-景行 阅读(207) 评论(0) 推荐(0) 编辑
摘要:jwt的依赖包 <!-- guava支持 --> <dependency> <groupId>com.google.guava</groupId> <artifactId>guava</artifactId> <version>28.1-jre</version> </dependency> <!- 阅读全文
posted @ 2020-04-13 13:11 高山-景行 阅读(286) 评论(0) 推荐(0) 编辑
摘要:jwt的介绍:https://www.imooc.com/article/42967 oken是三个部分组成的分别用点做了分隔 单独的授权服务器 现在要做的是圈中的这部分 第二部是带着token去访问其他的web服务器 结束 阅读全文
posted @ 2020-04-13 12:57 高山-景行 阅读(211) 评论(0) 推荐(0) 编辑
摘要:验证用户名密码然后生成randomkey和token 抛出CommonServiceException,如果用户名密码错误就抛出这个异常CommonServiceException User实现类 说下UserServiceAPI然后加上@Service的注解。 实现接口内的方法。这里加注解的两种方 阅读全文
posted @ 2020-04-13 12:37 高山-景行 阅读(329) 评论(0) 推荐(0) 编辑
摘要:spring boot本身扫描的是自己同级别的目录以及子级别的目录。 所以它能扫描的范围就是在com.mooc.mettingfilm.user这个范围下。 但是我们utils里面也有东西需要被扫描到。比如我们刚刚建的这个统一的异常处理类 所以我们要手工指定我们的扫描。指定扫描的目录到metting 阅读全文
posted @ 2020-04-13 12:24 高山-景行 阅读(212) 评论(0) 推荐(0) 编辑
摘要:放在utils里面 先引入日志 SpringBoot提供的ControllerAdvice 我们要捕获的是CommonServiceException.class 打印异常的信息。这里serviceExceptionHandler方法上面两个注解,一定不要漏了。@ExceptionHandler(C 阅读全文
posted @ 2020-04-12 22:47 高山-景行 阅读(325) 评论(0) 推荐(0) 编辑
摘要:调整字体 加粗,字体大小32 返回数据的标准格式 这是之前做测试的时候写好的类,BaseResponseVO。下面这张截图是我自己写的代码的截图。 我自己写的代码 修改下包名,前面加上,common 记得上面@Data注解。这BaseRequestVO是在utils包下的common.vo包下面的。 阅读全文
posted @ 2020-04-12 22:22 高山-景行 阅读(411) 评论(0) 推荐(0) 编辑
摘要:这是提前准备好的接口文档 新建UserController 接收的参数用对象的形式 controller下新建vo的包,然后新建登陆接口需要的对象类LoginReqVO 下面这个时候就要写数据的验证了,一般都要几十行的验证代码。 提供另外一种方法,在util模块下新建BaseRequestVO,教程 阅读全文
posted @ 2020-04-12 21:40 高山-景行 阅读(334) 评论(0) 推荐(0) 编辑
摘要:数据库 数据库清空,密码都是明文的 下面就是密码加密的问题。 提前准备的工具类 复制到utils模块内。创建一个util的包,然后复制到util下面。 这个是一个写好的工具类。不用做修改,直接调用就可以了。 调用加密的方法 测试 保存的密码就是加密后的 结束 阅读全文
posted @ 2020-04-12 21:19 高山-景行 阅读(204) 评论(0) 推荐(0) 编辑
摘要:user模块下分别建这三个包 generator从common里面复制过来的。为什么generator这里还要复制一份呢,因为在正式的环境中,不同的模块可能是不同的小组的人来维护的。各自独立,所以这里也放一份代码生成的代码。 compyPath这个java包的路径 运行生成代码。删除生成的contr 阅读全文
posted @ 2020-04-12 21:11 高山-景行 阅读(199) 评论(0) 推荐(0) 编辑
摘要:首先是复制我们的groupid 什么也不选,直接下一步 都改成下划线 删掉一些没用的文件 修改成yml格式的 把日志从common里面复制过来 配置信息从common复制过来 复制user模块。 pom.xml修改 复制一下common模块的 放在user上 父模块已经有了这里直接删除 这里buil 阅读全文
posted @ 2020-04-12 20:40 高山-景行 阅读(359) 评论(0) 推荐(0) 编辑
摘要:复制一下我们的groupId 建新的模块 删除一些没用的东西 删除test文件夹,这里不需要做test的东西 resources也删除 Application也删除 common的复制到utils里面 这里删掉,父工程里面有,二是utils模块本身是不需要的 build删除 然后倒入变化的包 父节点 阅读全文
posted @ 2020-04-12 17:51 高山-景行 阅读(214) 评论(0) 推荐(0) 编辑
摘要:工具模块属于一个非常基础的内容 结束 阅读全文
posted @ 2020-04-12 17:29 高山-景行 阅读(1042) 评论(0) 推荐(0) 编辑
摘要:结束 阅读全文
posted @ 2020-04-12 17:24 高山-景行 阅读(311) 评论(0) 推荐(0) 编辑
摘要:创建一个演示目录lomboksshow目录,然后创建类UserModel package com.mooc.meetingfilm.backend.common.lombokshow; import lombok.Builder; import lombok.Data; @Data @Builder 阅读全文
posted @ 2020-04-12 16:48 高山-景行 阅读(229) 评论(0) 推荐(0) 编辑
摘要:接口内定义一个方法 然后在xml内配置这个方法,接收的参数类型是Map类型的,返回的参数类型有两种方式。 返回的类型。一个是resultType直接写这个类型,就是对应的实体类。 xml上面配置的username对应的就是这里写的@Param("username") 方法调用自定义sql 这是典型的 阅读全文
posted @ 2020-04-12 16:32 高山-景行 阅读(4893) 评论(0) 推荐(0) 编辑
摘要:分页想用之前要把MybatisPlusConfig配置好,否则就用不了。 确认里面有分页的插件。 注意下面这个包下的Page<T> selectPage需要两个参数 分页效果 改成第一页取三条 如果想排序就用setOrders,里面封转一个对象叫做OrderItem 下面讲自定义sql语句 结束 阅读全文
posted @ 2020-04-12 16:20 高山-景行 阅读(373) 评论(0) 推荐(0) 编辑
摘要:拼接条件看看怎么玩,循环来多加几条测试数据。 查询条件封装的wrapper对象。 还有一个叫做UpdateWrapper的东西。其实和QueryWrapper是一样的,只不过因为Mybatis-plus的版本导致的 这就相当于没有条件 查出来5条记录 加条件 里面封装了很多的方法,看来和我们的sql 阅读全文
posted @ 2020-04-11 13:10 高山-景行 阅读(1306) 评论(0) 推荐(0) 编辑
摘要:update update单独说是因为要给大家推荐一个插件。 有一些表字段比较多,一个个set值很麻烦。这里给大家推荐一个插件。 安装后重启下IDEA 选中user这个变量Alt+回车 比如选择Generator all setter with no default value。自动生成所有的set 阅读全文
posted @ 2020-04-11 12:56 高山-景行 阅读(158) 评论(0) 推荐(0) 编辑
摘要:演示MyBatis-plus基础的 CRUD 创建包backend 再创建包user 再创建UserTest类 演示增删改查的方法 注入我们的mapper 这是MyBatis-plus代码生成器生成的我们数据库内对应的表的接口类 如果使用Autowired这种方式如果无法识别的话。那么backend 阅读全文
posted @ 2020-04-11 12:45 高山-景行 阅读(260) 评论(0) 推荐(0) 编辑
摘要:创建一个新库 执行sql 改成正确的数据库 修改下输出目录 生成的代码输出的目录 生成到common的目录下 修改下要生成的表明 执行代码生成这个类。 生成后会自动打开文件夹。 controller和service我们是不需要的,这里删除。 生成后的代码 创建一个dao的包,把entity和mapp 阅读全文
posted @ 2020-04-11 00:05 高山-景行 阅读(204) 评论(0) 推荐(0) 编辑
摘要:新建一个config的包 把这两个类复制进来 默认初始化的数据库链接 数据的用户密码 这是驱动 修改MybatisPlusConfig包的扫描:**代表的是任意目录。也就是mettingfilm下任意目录找到dao,再找到mapper 复制到test目录下的generator目录下,generato 阅读全文
posted @ 2020-04-10 23:46 高山-景行 阅读(261) 评论(0) 推荐(0) 编辑
摘要:提前准备好的东西。 logback.xml就是日志的xml 复制到common的resources下。 首先是pom依赖,然后是配置文件。 EntityGenerator是Mybatis-plus给我们提供的代码生成器。根据你的表结构生成controller、service、dao。其实我们并不需要 阅读全文
posted @ 2020-04-10 23:33 高山-景行 阅读(5907) 评论(1) 推荐(1) 编辑
摘要:结束 阅读全文
posted @ 2020-04-10 23:04 高山-景行 阅读(446) 评论(0) 推荐(0) 编辑
摘要:我们用的是Spring Boot 这个版本号我们用默认的就可以了 Spring Boot DevTools的快捷是Ctrl+F9是录屏的快捷键,怕影响了录屏,这里就没有选择,大家可以自己选择上。 当前Spring boot的版本是2.1.8 直接Next 文件件不喜欢用横线的形式。 把没用的删一删 阅读全文
posted @ 2020-04-10 23:00 高山-景行 阅读(262) 评论(0) 推荐(0) 编辑
摘要:重点是后端这一部分。BO是对POJO对象做了进一步的封装, 页面是在前端部分 先来看下Mybatis-plus 结束 阅读全文
posted @ 2020-04-10 22:31 高山-景行 阅读(256) 评论(0) 推荐(0) 编辑
摘要:数据库的脚本有一些是不支持5.6以下的脚本的,所以至少是MySql5.7的版本 结束 阅读全文
posted @ 2020-04-10 22:26 高山-景行 阅读(193) 评论(0) 推荐(0) 编辑
摘要:结束 阅读全文
posted @ 2020-04-10 22:21 高山-景行 阅读(224) 评论(0) 推荐(0) 编辑
摘要:中台服务的核心就是服务组件化 资源分配更合理,不代表资源更少了。 结束 阅读全文
posted @ 2020-04-10 13:43 高山-景行 阅读(200) 评论(0) 推荐(0) 编辑
摘要:单体应用阶段。 SOA阶段 微服务阶段 结束 阅读全文
posted @ 2020-04-10 13:42 高山-景行 阅读(209) 评论(0) 推荐(0) 编辑
摘要:结束 阅读全文
posted @ 2020-04-10 13:40 高山-景行 阅读(193) 评论(0) 推荐(0) 编辑
摘要:结束 阅读全文
posted @ 2020-04-10 13:39 高山-景行 阅读(190) 评论(0) 推荐(0) 编辑
摘要:这次不会涉及到前端开发,但是前端的代码会提供给大家。 所有的请求通过网关来做转发。 之前的课程。 结束 阅读全文
posted @ 2020-04-10 13:35 高山-景行 阅读(360) 评论(2) 推荐(0) 编辑
摘要:github上搜到的的几个代码: 这个比较全一些。 https://github.com/chivalry727/backend-parent https://github.com/qinseheming/backend-parent https://github.com/zhongxuebinwi 阅读全文
posted @ 2020-04-10 13:33 高山-景行 阅读(1916) 评论(0) 推荐(0) 编辑
摘要:自定义错误信息。 内置的Attribute的 ErrorMessage就可以传递错误信息。 自定义属性也支持ErrorMessage。但是想让这个ErrorMessage正常的返回。必须改下自定义的Attribute的代码。 先写上ErrorMessage 这里使用属性ErrorMessage就可以 阅读全文
posted @ 2020-04-10 12:33 高山-景行 阅读(225) 评论(0) 推荐(0) 编辑
摘要:数据库多元化的操作。 这里默认就是false,可以不用管 单库模式 这两个都设置为false了。就是单库模式。 这是当前的主库 自动创建好的数据库 查看下表内的数据 做测试 id为1的title自己修改了。 多库模式 开启多库,设置为true 下面所有Enabled为true都表示为启用。 为了测试 阅读全文
posted @ 2020-04-10 00:07 高山-景行 阅读(717) 评论(0) 推荐(0) 编辑
摘要:https://www.bilibili.com/video/BV1BJ411B7mn?p=5 https://github.com/anjoy8/Blog.Core.Teach 创建好项目后,就根据思维导图一点点的来写代码 首先引用nuget包 这个作者是一个个人,2016年发布的 这个最早的版本 阅读全文
posted @ 2020-04-09 17:11 高山-景行 阅读(486) 评论(0) 推荐(0) 编辑
摘要:api权限的分配。 拿到最新的项目首先是F6编译一下。 创建一个新控制器 默认生成包含增删改的api 运行后端api项目,可以搜索到刚才添加的demoApi 运行测试一下 打开admin前端项目,运行起来。 后端使用的注意事项。这里的Name等于Get 再添加一个控制器 创建后,直接运行就会报错 属 阅读全文
posted @ 2020-04-09 00:00 高山-景行 阅读(975) 评论(0) 推荐(0) 编辑
摘要:vue的部署,第一种是在iis里面部署 第二种是nginx做反向代理。 第三种用docker 本质就是部署html静态页面 部署vue的两大核心难点,1是路由 2是跨域 这几天对T4模板做了处理。批处理的时候本来是没法用的,现在可以用了。 后端程序换端口号可以在这里修改 修改启动文件同样可以。lau 阅读全文
posted @ 2020-04-08 22:14 高山-景行 阅读(1257) 评论(0) 推荐(1) 编辑
摘要:讲解如何去跑通Blog.Core 双击CreateYourProject.bat这个批处理文件。 输入一个自己要创建的名字 刚才你输入的名字就会生成的这个名字的项目文件LiveCode,在.1YourProject文件夹下。 双击即可运行新生成的解决方案 使用Sql server就把SqlServe 阅读全文
posted @ 2020-04-08 00:09 高山-景行 阅读(869) 评论(0) 推荐(1) 编辑
摘要:先安装node环境 安装最新的vue cli https://cli.vuejs.org/guide/installation.html npm install -g @vue/cli 卸载之前电脑安装的2.0的vue cli:npm uninstall vue-cli -g vue -V或者是vu 阅读全文
posted @ 2020-04-04 22:53 高山-景行 阅读(2132) 评论(1) 推荐(0) 编辑
摘要:登陆页,公用的账号admin 123456 忘记密码是通过发送邮件的方式 会给邮箱发送右键, 密码的找回。 首页 编辑的效果 搜索vue 表单管理 账户管理 右上角 admin不允许修改密码 新增账户。 默认的密码是123456 修改自己的密码 客服角色不能看到用户的管理 结束 阅读全文
posted @ 2020-04-03 23:41 高山-景行 阅读(1311) 评论(0) 推荐(0) 编辑
摘要:课程地址:https://ke.qq.com/course/429006 课时1 VueCli3+Ts实战项目-成果展示 课时2 VueCli3+Ts实战项目-文件结构目录 阅读全文
posted @ 2020-04-03 23:38 高山-景行 阅读(3899) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示