谷粒学院笔记P250之前

谷粒学院笔记

ES复习:

1.索引一个文档:PUT customer/external/1
{
 "name":"John Doe"
}

索引即表示创建。也可以使用post方式,post方式创建的时候可不带id(上面的1),如果使用put必须带上id,否则会报错。使用post方式带上id的方式是修改/更新操作。

区别:post会去对比原文档,如果修改和原文档相同,则不会操作,version也不会增加。如果使用put则会将数据重新保存,并增加version。

2.查看文档GET /customer/external/1

3.删除文档/删除索引

DELETE customer/external/1————删除文档——文档相当于数据库中的一张表
DELETE customer——删除索引——索引相当于数据库中的
4. eleasticsearch的批量操作——bulk

P193

  1. 实现异步的方法:
  1. 继承Thread类。重写里面的run(), 最后通过创建该继承子类,调用其start()方法启动子线程。
  2. 实现Runable接口,在实现类里面重写run方法,然后把实现类作为参数传给thread(),然后调用start方法,即——new Thread(new Runable(){}).start();
  3. Callable方法和runable的区别,是callable可以获取到异步线程的执行结果。

Callable接口的使用方法。实现类实现callable接口(里面可自己重写call方法),然后实现类作为一个参数传递给FutureTask对象。 实际上futureTask对象实现了Runable接口,因此可以将futureTask对象作为参数传给thread().start();想要获取到异步任务的执行结果是使用futuretask.get()方法,获取对应的执行结果。这个是一个阻塞等待,一直等到子线程执行完后main线程才会执行结束。也可以在futuretask的构造方法中直接传入一个tunable对象,同时还可以传入一个可赋值的对象。

P194

详细讲解了线程池的相关内容,可以翻看。

线程池的创建方法

  1. Executers.newsingleTaskThreadPool().
  2. 原始

P195

  1. 一个java类可以实现多个接口,但是java不支持多继承,只能继承一个父类。
  2. 但是一个接口可以继承多个接口。
  3. Lambd表达式/兰姆达表达式:相当于在对应的位置创建了一个匿名内部类。

P203

  1. 写详情页的controller,因为是页面跳转的controller,因此需要在类的前面写@Controller
  2. 因为是跳转的controller,因此类方法的返回类型是String类型。最终方法返回return “item”

P210

1.@configurationproperties——这个注解用于将配置文件和配置类之间进行关联。

2.@component——这个注解的作用是将当前类放到容器中。

P212

  1. 写前端的时候。a标签主要作用?
  2. 针对a标签绑定单击事件

 

绑定之前需要先对a标签设定一个id,这个id来标识和找到a标签

  1. 之前页面跳转是写了controller。

 

现在使用config配置:

 

P213

  1. 端上直接发送请求申请验证码的方式不可取,因为别人可能通过检测元素看到发送的请求,和APPCode,导致恶意发送大量的验证码申请,导致被攻击,因此应该端上给云端先发送请求。
  2. 自定义组件,如果需要放到容器中,需要给组件添加注解@Component,如果组件里面需要有geter/setter方法,需要另外加上@Data注解,如果组件里面的变量需要额外的配置文件来定义,则需要在该类加上注解@ConfigurationProperties
  3. 发送验证码的功能,需要端上直接给我们自己的云端发送请求,然后云端再给阿里云发送请求。需要先封装HttpUtils,

P214

  1. 注释@RestController 用于返回json数据。Spring4之后新加入的注解,原来返回json需要@ResponseBody@Controller配合。即@RestController@ResponseBody@Controller的组合注解。
  2. 注释@ResquestMapping 用于标识基准路径,即端上发送请求的路径请求,到对应的controller进行处理。
  3. 注释@GetMapping用于处理请求。 GetMapping后面可以定义(),里面存放对应的URL
  4. 一个请求的方法,如果要返回json数据,必须要加上注释@ResponseBody

P215

  1. 对某个函数传入的变量,通过添加注解@Valid来标识该变量需要校验。后面还能增加一个变量BindingResult来标识校验的结果:
  2. @RequestBody注解主要用于表示请求体包含json。可以将对应的json转换成请求的数据类型。

 

 

  1. 微服务之间进行远程调用,是通过Http+json,远程调用之间传递数据使用json。
  2. 数据库不能保存明文密码,需要进行加密存储。

P239——拦截器

  1. 针对service包下的类,和类的实现impl,在类上方加上注释@service是讲当前的代码放进容器里。
  2. 如果要查看日志,同时需要加上注释:@slf4j
  3. 拦截器——首先用于判断客户端发来的请求是否登陆,如果登陆直接传给controller,如果没有登陆的话,就生成一个user-key。拦截器在框架里是一个组件,因此需要在拦截器前面加一个注释:@Component
  4. 要想使用Spring MVC的拦截器,自定义的拦截器需要实现接口:HandlerIntercepter
  5. ThreadLocal 同一个线程共享数据。不同类之间可以共享数据。其使用方法:通过模板的方式传入一个参数,创建一个threadlocal对象,然后可以再线程之间共享同一个loginUser对象。如如图所示: 

 

  1. 在Cart这个服务中,新增了拦截器的包:interceptor。拦截器实现了上面说的接口HandlerIntercepter,之后需要重写方法preHandle(),所有的请求发到cart后会先经过过滤器,之后过滤器先判断发来的请求是否带了cookie,httpsSession(通过httpSevletRequest参数获取到request.getsession方法可以获取到)中是否返回了redis存储的用户信息,如果redis中存在用户信息,就将对应的用户信息T O里面的userId赋值。同时cookie中如果有user-key也对TO赋值。
  2. 拦截器不应以@component的方式放到框架里,应该写一个配置类。这个类想要实现定制化配置,需要实现webMvcConfigurer接口。这个配置类需要在类前面添加@Configuration注解,用于表示这个是注释类, 之后在这个配置类里面重写add Intercepter方法,将注册器注册进来。并且在里面写好在业务逻辑接受之前需要做的事情。
  3. 在执行完之后需要做的事情,可以在过滤器里面重写一个方法:postHandle

P247

  1. 接口方法申明是不需要标注作用域的,即不需要表明pubilc等。例如: 

 

同时也不需要写花括号,标明接口只需要写方法签名和返回值即可。

P248

  1. 开始讲RabitMQ,消息中间件
  2. 作用:应用解耦、流量控制、异步请求——节省时间。
  3. JMS vs AMQP:

JMS:java message service 专门针对java的,例如JM S的实现:active MP  如果当前系统的所有服务都是java实现的,那么JMS是首选,因为涉及到组件升级一定是会支持的。

如果是涉及到各个服务间通信,但是各自使用的是不同的语言编写的,那么使用AMQP协议就更合适。而rabit MQ就是AMQP协议的一个实现。同时它还兼容JMS

  1. Spring整合了JMSTemplate和rabbitTemplate用于发送消息,是对原生JMS和RabbitMQ的整合 。
  2. 可以发现在Spring的所有对第三方业务的整合中,都使用的是XX Xtemplate进行的。
  3. 一条连接(长连接),多条信道。即一个服务(publisher/consumer)和Rabbit MQ服务器之间建立一个连接,这个连接里面承载很多信道。

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值