学习记录

2018.06.06
工作内容:
1.尝试解决前端开发手册,开发新功能,已经全局安装了gulp但是不能启动问题;尝试本地安装,重新全局安装,未解决;卸载gulp,重新安装gulp,依然不能启动,未解决;
2.尝试搭建后端开发手册,测试与集成;按照流程搭建,能够通过http://localhost:8000/访问到正常界面;但是manager-service服务一直连不上数据库,启动不成功;重新拉取镜像,重新初始化数据库,能启动所有服务;但是访问http://localhost:8000/出现 EMERGENCY! EUREKA MAY BE INCORRECTLY CLAIMING INSTANCES ARE UP WHEN THEY'RE NOT. RENEWALS ARE LESSER THAN THRESHOLD AND HENCE THE INSTANCES ARE NOT BEING EXPIRED JUST TO BE SAFE.未解决;
3.学习了解k8s、docker、后端开发流程,git常用指令;
4.参与平台培训。
学习内容:
1.k8s组件
是基于容器技术的分布式架构领先方案,是容器集群管理系统。
1)master是集群管理节点,负责管理集群;
2)Node是集群架构中运行pod的服务节点;
3)Pod 运行于Node节点上,若干相关容器的组合;
4)Replication Controller管理Pod的副本,保证集群中存在指定数量的Pod副本;
5)Service定义了Pod的逻辑集合和访问策略;
6)Label在k8s中任意对象都通过Lable进行标识;
2.Docker
相关概念;
1)镜像(Image),镜像是静态的/可以被用户分享的文件,只能pull或者push;
2)容器(Container),可以理解为镜像的动态状态;
3)仓库(Repository),Docker中的仓库很像git的代码仓库。
基本操作:查看镜像 docker images 获取镜像 docker pull 启动容器 docker-compose up,
从docker进入mysql docker exec -it mysql /bin/bash,
3.后端开发流程熟悉
1)infa层
DO类--》对应数据库中的具体类
mapper--》mapper接口类和mapper.xml
2)domain层
entity类--》对应DO类
convertor类--》用于E。DTO。DO三者之间转换
Repository--》对数据库进行操作,有对应接口和实现类
service--》进行业务操作
3)app层 应用层
4)api层 展现层
DTO--》封装用户请求
controll--》是对一个具体的DTO资源进行处理

2018.06.07
工作内容:
1.前端开发手册--》开发新功能--》开发新模块,按照流程走,不能启动gulp,切换nodejs版本,重新全局安装gulp不能解决;咨询前端同事,demo文件夹为空,加入相关文件,gulp能够运行。
2.后端开发手册--》集成与测试,服务启动报错,删除现有镜像,新建文件夹重新拉取;所有服务都能启动成功,但是不能访问loaclhost:8000,logs发现不能启动manager-service服务;改为从github上下载项目本地运行,启动服务成功;但是不能在eureka上显示,给启动类加上@EnableEurekaClient,成功显示;但是不能访问http://localhost:8963/swagger-ui.html,重新初始化数据库,配置路由,访问成功。

学习内容:spring boot
1.Profile,在不同环境下使用不同配置@Profile("dev"/"prod")
2.事件(Application Event)为Bean与Bean之间的消息传递提供了支持;步骤,定义事件,定义监听,容器发布
3.多线程,实现AsyncConfigurer接口,获取一个基于线程池的TaskExecutor,@EnableAsync开启对异步的支持,@Async声明异步
4.this 1)表示构造函数传递,this(a,b) 2)在类的非static成员内部使用,表示这个类本身或者对象类型
super 1)调用父类构造方法 2)调用父类的protected方法
5.spring boot配置文件 https://blog.csdn.net/lpfsuperman/article/details/78287265

2018.06.08
工作内容:
1.跟据文档搭建前端开发手册--》开发新功能,需要改动的小细节已经发到群里;
2.重新搭建后端开发手册--》测试与集成部分,能启动所有服务,手动配置路由,能进入到http://localhost:8963/swagger-ui.html页面。

学习内容:
1.spring-retry是针请求超时情况采取一下重试操作
1)添加maven依赖 org.springframework.retry 2)在启动项添加重试配置 @EnableRetry 3)@Retryable 标注此注解的方法在发生异常时会进行重试
2.zuul主要功能是路由转发和过滤器;路由功能是将外部请求转发到具体的微服务上;过滤器是对请求处理的过程进行干预;@EnableZuulProxy开启服务
3.Eureka服务注册发现
server
1)添加依赖 spring-cloud-starter-eureka-server
2)application.yml配置
security:
basic:
enabled: true #开启认证
eureka:
client:
register-with-eureka: false
fetch-registry: false
service-url:
defaultZone: http://user:password@localhost:8761/eureka
3)主程序入口添加 @EnableEurekaServer//开启Eureka Server
Clients  
同上,application.yml配置:
eureka:
client:
serviceUrl:
defaultZone: http://user:123456@localhost:8761/eureka #注册 中心已经开启认证
链接:https://www.cnblogs.com/brant/p/6298342.html
4.bootstrap与application
1)bootstrap.yml先加载 application后加载
2)bootstrap.yml 可以理解成系统级别的一些参数配置,这些参数一般是不会变动的。
application.yml 可以用来定义应用级别的
5.@Order控制配置类的加载顺序

2018.06.11
学习内容:
1.spring基础学习
Spring IOC容器,Spring BaenFactory/ApplicationContext,Spring依赖注入,基于构造器注入和set方法注入/自动装配等。
2.学习springboot+mybatis,用注解方式实现,能够正常访问;用配置文件方式,报错org.apache.ibatis.binding.BindingException: Invalid bound statement (not found): com.scptest.springbootmybatisdemo1.mapper.UserMapper.getUserById,修改配置文件,修改mapper文件,未解决;修改application.yml文件,解决。

2018.06.12
1.Docker for windows一直启动不成功;
报错:[Docker for Windows error: “Hardware assisted virtualization and data execution protection must be enabled in the BIOS” [closed]]
https://stackoverflow.com/questions/39684974/docker-for-windows-error-hardware-assisted-virtualization-and-data-execution-p,解决方法都尝试了一遍,未解决;win10
一直不能开启hyper-v虚拟机,准备重新升级系统。
2.访问404错误
将@Countller改为@RestController或者加上@ResponseBody;
1)@responseBody注解的作用是将controller的方法返回的对象通过适当的转换器转换为指定的格式之后,写入到response对象的body区,通常用来返回JSON数据或者是XML
2)@RestController是@ResponseBody + @Controller合体,当你在这个controller中方法只是想返回一个页面时,就不能用@RestController,因为它会把你的返回值当作数据返回,而不是页面名字,所以这时候就只能用@Controller。
3.Establishing SSL connection without server's identity verification
解决:在mysql连接上加上?&useSSL=true&useUnicode=true&characterEncoding=utf8
4.git checkout master
error: pathspec 'master' did not match any file(s) known to git.
解决:git checkout -b master
https://blog.csdn.net/wankui/article/details/53328369
5.jmeter学习
1)status 415错误
为该次请求修改请求头里的 Content-Type ,修正为 application/json;charset=UTF-8
2)status 401错误
在HTTP管理头添加对应的Jwt_Token。

2018.06.13
用jmeter对gilab-service进行测试;
1)一直status 415错误,即使添加了Content-Type = application/json,删掉http管理,重新添加或者删除Content-Type重新添加;
2)status 403或者其他,都是参数未传递正确。

2018.06.14
1.git解决分支冲突,两个分支都对同一个文件进行了提交,对这两个分支进行合并会失败,手动更改进行合并;分支合并时加上--no-ff 禁用Fast forward模式,可以从历史上看出分支信息。
2、@ApiOperation不是spring自带的注解是swagger里的
@ApiOperation(value = “接口说明”, httpMethod = “接口请求方式”, response = “接口返回参数类型”, notes = “接口发布说明”;
@ApiParam(required = “是否必须参数”, name = “参数名称”, value = “参数具体描述”)
3、地址①http://localhost:8989/SSSP/emps?pageNo=2
地址②http://localhost:8989/SSSP/emp/7
如果想获取地址①中的 pageNo的值 ‘2’ ,则使用 @RequestParam ,
如果想获取地址②中的 emp/7 中的 ‘7 ’ 则使用 @PathVariable
4、@RequestBody 注解则是将 HTTP 请求正文插入方法中,使用适合的 HttpMessageConverter 将请求体写入某个对象。
5.Java 8中的[Optional]以包含非空值的容器对象,在 [Stream API]中很多地方也都使用到了Optional。
1)Optional someValue = someMethod();
if (someValue.isPresent()) { // check
someValue.get().someOtherMethod(); // retrieve and call
}
2)orElseThrow如果有值则将其返回,否则抛出supplier接口创建的异常
3)map如果返回值不为null,则创建包含mapping返回值的Optional作为map方法返回值,否则返回空Optional
4)ofNullable 指定的值创建一个Optional,如果指定的值为null,则返回一个空的Optional
6.java Patter.matches https://www.cnblogs.com/ggjucheng/p/3423731.html
7.projectDO.getStatusCode().is2xxSuccessful()
1)ResponseEntity是Spring对HTTP请求响应的封装,包括了几个重要的元素,如响应码、contentType、contentLength、响应消息体等;
2)getStatusCode()方法取得HttpStatus对象;getBody();getHeaders();等
3)is2xxSuccessful();判断状态吗是否是2开头
https://blog.csdn.net/u012702547/article/details/77917939
8.Class以及Class的理解
Class在实例化的时候,T要替换成具体类
Class它是个通配泛型,?可以代表任何类型
9.lambda () -> 5 不需要参数,返回值为 5

2018.06.19
1、给所有api都加上对应的角色;
2、IDEA中pom.xml报错project上Failed to read artifact descriptor for
1)去库文件夹中查询对应的jar文件,删除文件,重新下载;
2)在m2文件夹下放入setting.xml文件,清理项目重新加载;

2018.06.20-2018.06-22
1、从业务角度测试所有api角色是否添加正确;
2、mvn pacakge项目报错,找不到指定的jar文件,spring-cloud和spring-boot版本要配套,从官网或者对应版本,解决;
3、搭建eureka,eureka-sever能够正常启动;但是eureka-client不能注册到server,一直报错,There was a problem with the instance info replicator com.netflix.discovery.shared.transport.TransportException: Cannot execute request on any known server.尝试更换spring-boot和cloud版本,未解决。
4、ZooKeeper典型应用场景
ZooKeeper 是一个高可用的分布式数据管理与协调框架。基于对ZAB算法的实现,该框架能够很好地保证分布式环境中数据的一致性。也是基于这样的特性,使得 ZooKeeper 成为了解决分布式一致性问题的利器。

2018.06.25
1、优化开发(DEV)、测试(QA)、运维(OPS)的流程,开发运维一体化,通过高度自动化工具与流程来使得软件构建、测试、发布更加快捷、频繁和可靠。
里面两个核心点是:持续集成与持续交付
1)持续集成:
CI是一种将被测代码频繁集成到项目稳定分支的做法。所谓的”被测代码”,指的是单独分支上开发的功能,因此这部分的代码会被测试然后集成在主线上。
持续集成是指软件个人研发的部分向软件整体部分交付,频繁进行集成以便更快地发现其中的错误。
2)持续交付:
持续交付在持续集成的基础上,将集成后的代码部署到更贴近真实运行环境的「类生产环境」(production-like environments)中。持续交付优先于整个产品生命周期的软件部署,建立在高水平自动化持续集成之上。
3)持续部署:
持续部署是指当交付的代码通过评审之后,自动部署到生产环境中。持续部署是持续交付的最高阶段。这意味着,所有通过了一系列的自动化测试的改动都将自动部署到生产环境。
4)“开发人员提交代码,持续集成服务器获取代码,执行单元测试,根据测试结果决定是否部署到预演环境,如果成功部署到预演环境,进行整体验收测试,如果测试通过,自动部署到产品环境,全程自动化高效运转。”
https://www.cnblogs.com/zhuwenlubin/p/5888498.html
2、1)Optional.of(T value),该方法通过一个非 nullvalue 来构造一个 Optional,返回的 Optional 包含了 value 这个值。对于该方法,传入的参数一定不能为 null,否则便会抛出 NullPointerException
2)Optional.ofNullable(T value),该方法和 of 方法的区别在于,传入的参数可以为 null —— 但是前面 javadoc 不是说 Optional 只能包含非 null 值吗?我们可以看看 ofNullable 方法的源码:
原来该方法会判断传入的参数是否为 null,如果为 null 的话,返回的就是 Optional.empty()
3)Optional.empty(),该方法用来构造一个空的 Optional,即该 Optional 中不包含值 —— 其实底层实现还是 如果 Optional 中的 valuenull 则该 Optional 为不包含值的状态,然后在 API 层面将 Optional 表现的不能包含 null 值,使得 Optional 只存在 包含值不包含值 两种状态。
3.matches() 方法用于检测字符串是否匹配给定的正则表达式。
调用此方法的 str.matches(regex) 形式与以下表达式产生的结果完全相同:
Pattern.matches(regex, str)
4.一个接口有两个实现类,
1) @Resource(name = "manImpl")//注意是manImpl不是ManImpl,因为使用@Service,容器为我们创建bean时默认类名首字母小写
2)@Autowired @Qualifier("manImpl")
5.Mybatis动态SQL Parameter 'name' not found. Available parameters are [arg1, arg0, param1, param2]
1)将语句中的具体参数名称改为param1,param2即可。

  1. 采用map传递参数parameterType="Map"

你可能感兴趣的:(学习记录)