1、安装idea,安装maven,mysql数据库
2、创建一个多maven的springboot的项目,可以正常启动以及可以访问web页面
3、引入日志使用slf+logbck进行日志打印,同时封装统一的日志打印工具,idea安装maven analyzer工具,需要排日志的包,因为启动的时候会一直报错,找不到绑定的slf的实现类--自己一定要学会排包(非常重要)
4、开始写统一的门面服务,主要简单的注解校验、回调模版,统一日志打印,异常捕获,接口限流,灰度组件,分布式锁-先把简单的几个功能完善 然后在一步一步的补充能力
注解校验:使用javax接口,实现hibernate-validator,注意pom引入的jar包需要完整,否则会在运行的时候异常
日志打印:打印入参数、出参数、耗时、成功失败用于业务统计
5、安装mysql软件,可以直接下载mysql.dmg现在本机上进行安装,后序有时间在使用docker启动一个mysql的镜像,进行多机器的访问,先把数据库安装好,然后与springboot项目结合
6、学会使用mybatis的orm框架进行数据库的访问,了解jdbc被封装的原理,最简单的封装就是Springjdbc的封装,很好使用;同时还要学会使用mysql的客户端,直接页面创建表结果;同时使用开源的代码生成工具进行代码生成;springboot与数据库连接池进行融合进行数据库的访问。
7、springboot 与mybtais结合使用是最广泛的使用,可以最原始的手动写,也可以使用代码自动生成dal层的代码。都需要尝试使用。 idea使用 myabtis generator插件,mybatis free插件
8、使用切面针对数据库层进行日志的打印,成果:就是封装统一日志打印,无论是数据库,外部调用,消息,定时任务,接口的日志打印统一使用日志打印模块,然后支持不同场景的扩展(实现的一个小组件的扩展)
9、必须要掌握spring事务的传播特性,这样在操作多个sql的时候,才知道使用哪个传播的特定。数据库的隔离级别是数据库本身提供的。事务的传播特性是spring提供的,要搞清楚这些区别代码写的才能健壮
10、如何生成唯一的traceid需要调研一下??
11、数据库的唯一不重复的随机值需要调研一下??
12、封装线程池调用组件,可以支持线程超时抛弃,系统内统一调用服务,也确实比较好用;封装最原始的callable,future接口。
13、面向对象最重要就是的扩展点,说白了就是一个接口如果有多个实现类,如何实现类加载以及运行的时候,找到对应的实体类进行执行;面对这种思想有很多种方式实现;写几种简单的方式实现; 这个思想是非常、非常重要的,如果你还没有这种想法,那就可以多百度一下
14、在你的业务中,某个接口串行,并行,串行如何实现接口耗时最短,使用一个框架实现,使用树结构存储每个节点,然后使用层次遍历方式进行调用;也可以使用workflow的方式都是串行执行,然后在某个节点需要并行执行的时候,那么则需要自动识别出来,然后动态的并发执行。会根据这2个思路进行封装,封装2个通用的框架,针对这种复杂的场景可以直接接入,写业务代码
15、封装内部重试任务框架,支持落任务、任务捞取、任务异步执行,任务放到队列,异步线程定时拉取任务,通用任务捞取等基本能力,主要解决数据最终一致性
16、有的时候B端系统,调用a,b,c,d等多个系统,如何保证数据的最终一致。如果一个请求调用失败,可以落一个异步任务,然后定时任务捞起来在执行,下游需要做好幂等。还有就是在落任务的时候记录当前在哪个节点,然后在捞起数据之后,在断点接着执行。如何在上游实现跳过某些节点,那就需要针对每个外部调用都要落一个流水,然后在系统重试的时候,针对流水中的字段做幂等跳过。千万不要每一步使用发送消息的方式进行执行,这样大大使系统变得复杂。
17、如何实现线程的异步转同步? 可以针对线程设置等待时间,如果超过多少秒就直接返回;
还有一种就是接口内部死循环,等待外部调用接口返回,如果到了指定的时候还没有返回,那么则直接返回,但是需要下游系统在发送消息告诉上游系统完结,上游系统在推进内部逻辑;
18、安装redis这个nosql数据库,然后在使用redis实现分布式锁,缓存数据,库存计数,redis的可视化客户算redis insight
19、会场搭建、各种页面搭建,可以设计一个通用的B端模型,然后C端访问B端的配置数据,进行数据组装以及展示,需要写一个spring 的jar包,让业务方直接使用我们的jar,jar包中类直接注入到对方的系统中,这种方式可以降低对系统的压力,直接走缓存。
20、今天封装了一个通用的组件,支持串行和并行交替执行,使用树数据结构+层次遍历+线程池组件+业务扩展点,将这些组件组合在一起,就形成一个业务产品,任何一个需要复杂的查询以及耗时缩短且支持扩展,集成一个门面,就可以了--花了2天的时间
21、封装http的内部组件,使用okhttp,进行二次封装,内部统一封装。对于公开的http就可以获取的数据,就可以直接访问这些网站进行数据的获取了。
22、对于B端的开发,修正数据是不可避免的,因此如何批量的订正数据,以及海里数据同步到数据库,如何做呢?因此可以开发一个平台,定时在线数据,以及一个数据同步平台,支持数据的转换,同步,传输。--本周开发这个 开发完毕,写了一个一共通用的组件,就是动态加载jar包,动态加载groovy的脚本能力,这样就可以在系统不发布的时候。用户直接写个脚本就可以直接执行这个脚本。然后基于这个能力,可以实现的产品就是数据工厂,接口的动态泛化调用(类加载器+groovy脚本+动态代理)
23、准备开发一下针对大文件如何处理?大文件存储--文件系统,获取文件--文件切割,小文件执行,因此基于这个问题 就可以开发一个批处理系统,就是针对大文件、系统数据(开源文件访问+文件切割操作+业务定时调度+断点重试+spi业务回调)
24、规则引擎,比如如何计算复杂的公式,如何动态的执行。可是使用qlexpress这个开源的动态脚本实现规则引擎,这个用法比较简单,主要还是业务表的设计,这个脚本执行也是比价简单的。
25、简单写个rpc远程调用,主要使用动态代理+netty+序列化+配置中心(zk)