同步操作将从 edgevagrant/JAVA-000 强制同步,此操作会覆盖自 Fork 仓库以来所做的任何修改,且无法恢复!!!
确定后同步将在后台操作,完成时将刷新页面,请耐心等待。
作业提交地址:https://github.com/JAVA-000/JAVA-000/issues
1、(必做)分别用 100 个字以上的一段话,加上一幅图 (架构图或脑图),总结自己对下列技术的关键点思考和经验认识:
PS:其他的后面复习总结完再补
1) JVM:ava训练营 模块一 JVM 总结 总览
常规
1(选做)自己写一个简单的 Hello.java,里面需要涉及基本类型,四则运行,if 和 for,然后自己分析一下对应的字节码,有问题群里讨论。
2(必做)自定义一个 Classloader,加载一个 Hello.xlass 文件,执行 hello 方法,此文件内容是一个 Hello.class 文件所有字节(x=255-x)处理后的文件。文件群里提供。
3(必做)画一张图,展示 Xmx、Xms、Xmn、Meta、DirectMemory、Xss 这些内存参数的关系。
4(选做)检查一下自己维护的业务系统的 JVM 参数配置,用 jstat 和 jstack、jmap 查看一下详情,并且自己独立分析一下大概情况,思考有没有不合理的地方,如何改进。
进阶 从Classloader到模块化,动态加载的插件机制。
常规
进阶 实现一个http 文件服务器和一个ftp文件服务器。
常规
1.(选做)使 Java 里的动态代理,实现一个简单的 AOP。
2.(必做)写代码实现 Spring Bean 的装配,方式越多越好(XML、Annotation 都可以), 提交到 Github。
3.(选做)实现一个 Spring XML 自定义配置,配置一组 Bean,例如:Student/Klass/School。
4.(选做,会添加到高手附加题)netty相关代码
4.1 (挑战)讲网关的 frontend/backend/filter/router 线程池都改造成 Spring 配置方式;
4.2 (挑战)基于 AOP 改造 Netty 网关,filter 和 router 使用 AOP 方式实现;
4.3 (中级挑战)基于前述改造,将网关请求前后端分离,中级使用 JMS 传递消息;
4.4 (中级挑战)尝试使用 ByteBuddy 实现一个简单的基于类的 AOP;
4.5 (超级挑战)尝试使用 ByteBuddy 与 Instrument 实现一个简单 JavaAgent 实现无侵入下的 AOP。
1.(选做)总结一下,单例的各种写法,比较它们的优劣。
2.(选做)maven/spring 的 profile 机制,都有什么用法?
3.(选做)总结 Hibernate 与 MyBatis 的各方面异同点。
4.(必做)给前面课程提供的 Student/Klass/School 实现自动配置和 Starter。
5.(选做)学习 MyBatis-generator 的用法和原理,学会自定义 TypeHandler 处理复杂类型。
6.(必做)研究一下 JDBC 接口和数据库连接池,掌握它们的设计和用法:
附加题(可以后面上完数据库的课再考虑做):
Week06 作业题目(周四):
Week06 作业题目(周六):
Week07 作业题目(周四):
Week07 作业题目(周六):
Week08 作业题目(周六):
周四:
4、(选做☆☆)升级自定义RPC的程序:
周六:
4、(挑战☆☆)尝试扩展Dubbo
1、(选做)rpcfx1.1: 给自定义RPC实现简单的分组(group)和版本(version)。
2、(选做)rpcfx2.0: 给自定义RPC实现:
3、(挑战☆)在2.0的基础上继续增强rpcfx实现:
4、(挑战☆☆)在3.2的基础上继续增强rpcfx实现:
5、(挑战☆☆☆)在4.3的基础上继续增强rpcfx实现:
6、(挑战☆☆☆☆)6.0:压测,并分析调优5.4版本。
1、(选做)命令行下练习操作Redis的各种基本数据结构和命令。
2、(选做)分别基于jedis,RedisTemplate,Lettuce,Redission实现redis基本操作的demo,可以使用spring-boot集成上述工具。
3、(选做)spring集成练习:
4、(必做)基于Redis封装分布式数据操作:
5、基于Redis的PubSub实现订单异步处理
1、(挑战☆)基于其他各类场景,设计并在示例代码中实现简单demo:
2、(挑战☆☆)升级改造项目:
3、(挑战☆☆☆)以redis作为基础实现上个模块的自定义rpc的注册中心。
1、(必做)搭建ActiveMQ服务,基于JMS,写代码分别实现对于queue和topic的消息生产和消费,代码提交到github。
2、(选做)基于数据库的订单表,模拟消息队列处理订单:
3、(选做)将上述订单处理场景,改成使用ActiveMQ发送消息处理模式。
4、(挑战☆☆)搭建ActiveMQ的network集群和master-slave主从结构。
5、(挑战☆☆☆)基于ActiveMQ的MQTT实现简单的聊天功能或者Android消息推送。
6、(挑战☆)创建一个RabbitMQ,用Java代码实现简单的AMQP协议操作。
7、(挑战☆☆)搭建RabbitMQ集群,重新实现前面的订单处理。
8、(挑战☆☆☆)使用Apache Camel打通上述ActiveMQ集群和RabbitMQ集群,实现所有写入到ActiveMQ上的一个队列q24的消息,自动转发到RabbitMQ。
9、(挑战☆☆☆)压测ActiveMQ和RabbitMQ的性能
1、(必做)搭建一个3节点Kafka集群,测试功能和性能;实现spring kafka下对kafka集群的操作,将代码提交到github。
2、(选做)安装kafka-manager工具,监控kafka集群状态。
3、(挑战☆)演练本课提及的各种生产者和消费者特性。
4、(挑战☆☆☆)Kafka金融领域实战:在证券或者外汇、数字货币类金融核心交易系统里,对于订单的处理,大概可以分为收单、定序、撮合、清算等步骤。其中我们一般可以用mq来实现订单定序,然后将订单发送给撮合模块。
1、基于内存Queue实现生产和消费API(已经完成)
2、去掉内存Queue,设计自定义Queue,实现消息确认和消费offset
3、拆分broker和client(包括producer和consumer)
1)考虑实现消息过期,消息重试,消息定时投递等策略
2)考虑批量操作,包括读写,可以打包和压缩
2)考虑消息清理策略,包括定时清理,按容量清理等
3)考虑消息持久化,存入数据库,或WAL日志文件,或BookKeeper
4)考虑将spring mvc替换成netty下的tcp传输协议
5、对接各种技术(各条之间没有关系,可以任意选择实现)
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。