我会什么开发技能

java我会什么?

一、并发编程

1、并发编程:jdk中的courren包只能够类实现(seamplore,CountDownLaunch,Pharse,CycliBarrier,CompletableFuture),AQS的原理,线程,线程同步(如何控制多个线程),锁(控制多个线程对一个数据结构并发),CAS,synchronized,voliatle,线程池

2、并发数据结构:concurrentHashMap,ArrayBlockIngQueue,LinkedBlockingQueue,PriorityBlockingQueue

并发编程能干什么?

主要就是在写代码的时候,多个线程需要控制同一个成员变量,才会出现,如果业务上没有这个场景,都可以不用考虑并发的case

实战:

在工作中,我用到比较多的一般使用spring容器,系统在启动的时候,如果需要往成员变量集合或者队列中注入对象,一般在启动时候完成,所有没有啥并发

一般在懒加载的时候是需要控制并发的,防止多次初始化一个对象。这种控制并发的代码一般在中间件中使用,因为涉及到操作成员变量操作的时候,就需要考虑。

假设没有线程池这个工具类,让你自己写的时候,你就需要思考如何实现这个池子,以及创建池子,创建线程是否超过总数,系统并发就来了。

目前在工作中使用更多的是分布式的锁,防止同一个请求连续请求2次,控制不住;

需要对一个文件追加数据,如果并发时候会报错,因为需要知道上一个位置?需要落一个任务,然后每次执行最新的一个,单机控制并发可以实现吗?不可以 需要落任务解决

二、类加载器

都知道基本原理,双亲委托,但是自己应该在哪些场景

1、数据订正工厂,使用自定义类加载器加载把业务上传的jar包,然后在写一个groovy脚本,上传,系统定时加载新的脚本,然后编译,且用指定的类加载器加载,做到类隔离

2、动态测试工具

三 、IO模型

BIO,NIO,AIO,io多路复用, 网络编程 reactor模式,单线程,多线程,多reactor的多线程模式,netty实现reactor模式。tcp的通信原理。java中nio可以实现io多路复用,太复杂使用netty;

自己写一个rpc的框架demo,主要涉及zk,序列化和反序列化(hession),动态代理,网络通信(netty)

做过一个将aws的base64图片转存在公司s3中,如何防止一次把所有数据加载到内存中。使用了commons-io的类,然后在获取流数据的时候,把前缀剔除,然后然后阶段之后进行commons-io的经过base64解码;然后在直接把这个流输出到s3中

一般需要把图片上传的文件服务器,不能占用太大的内存,因此都是流的存储

文件下载,比较low的就是查询出全部,然后文件输出下载。一般采用实时数仓的方式下载

营业执照的图片识别,可以自己训练模型,然后进行图片的识别,一般都是传递文件的地址,然后对方拉去数据,然后进行识别

发起http请求,一般使用okhttp,httpclient进行http的外围调用,主要控制超时时间。

rpc服务使用netty进行服务的监听

四、spi业务回掉机制

serviceLoader是java中比较常用的,C端业务想开发的好,那就扩展一定要设计好,就一个原则面向接口编程,一般都是要定以后业务身份,Map<String,Map<String,Extend>> 在你的系统定义好接口,外围实现这个jar包,自己的系统使用serviceLoader加载这些jar包 到内存中

一个系统是否扩展,主要就是一个接口的实现不要在系统启动的时候注入好,而是在运行的时候动态的决策走哪个?怎么实现

1、定义数据结构Map<String,Map<String,接口>> 运行的根据传入的参数,自然会找到对应的实现类

2、针对接口系统启动的时候注入一个动态代理,运行的时候写逻辑决策走哪个业务身份

3、一个接口定义标准,然后spi回掉外围,还可以使用rpc的方式进行调用,下游实现

五、面向对象的基本想法

DDD设计(就是把方法放到一个类中,不好理解,后续很难维护)、多态(父类的对象指向子类的引用),设计模式一定要多使用,否则业务代码很难扩展也很容易出问题,策略,工厂,构建者,单例,抽象工厂,动态代理,模版,装饰,适配器

六、中间件

springboot,mybatis,docker,netty,xxxjob,zk,redis,配置中心,kafka,rocketmq,hbase,mysql,hadoop,hive,postgresql

七、大数据开发

了解hadoop的生态系统,hdfs,mapreduce,hbase

实时计算 flink,storm

数据同步 datax,sqoop,cancel

八:数据挖掘、数仓搭建

基本的机器学习算法、分类、聚类、神经网络、深度学习

llm大模型,langchain二次开发,rag

算法平台、数仓搭建

八、最值钱的就是业务

此处省略1w字

九、前端

h5、小程序主流

低代码开发平台,动态化、报表系统

后续想做一些基础系统的能力

相关推荐
欧恩意6 小时前
【Tools】Java反汇编工具推荐
java·汇编
geovindu6 小时前
python: Memento Pattern
开发语言·python·设计模式·备忘录模式
学无止境_永不停歇6 小时前
十、C++多态
开发语言·c++
寻星探路6 小时前
【JVM 终极通关指南】万字长文从底层到实战全维度深度拆解 Java 虚拟机
java·开发语言·jvm·人工智能·python·算法·ai
lbb 小魔仙6 小时前
【Java】Java 实战项目:手把手教你写一个电商订单系统
android·java·python
Aric_Jones6 小时前
JavaScript 从入门到精通:完整语法指南
开发语言·javascript·ecmascript
星河耀银海6 小时前
Java安全开发实战:从代码防护到架构安全
java·安全·架构
青云交6 小时前
Java 大视界 -- 基于 Java 的大数据可视化在城市水资源管理与节水策略制定中的应用
java·java 大数据·java 大数据可视化·城市水资源管理·spark 数据清洗·echarts 热力图·管网漏损控制
岱宗夫up6 小时前
FastAPI入门(上篇):快速构建高性能Python Web API
开发语言·前端·python·fastapi
Dxy12393102166 小时前
中文乱码恢复方案
开发语言·python