我会什么开发技能

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、小程序主流

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

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/45820.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

mysql笔记1

查询是在mysql中耗时最多的&#xff0c;约束是非常消耗cpu性能&#xff0c;外国不承认阿里的代码规范&#xff0c;在页面小报错没关系&#xff0c;库1与库2相互不影响&#xff0c;mysql被orcle收购了&#xff0c;所以mysql也属于oracle,企业中不允许推倒重来utf8mb3更适合中文 …

基于FPGA设计基础知识

基于FPGA设计基础知识 数字电路&#xff08;数电&#xff09;知识模拟电路&#xff08;模电&#xff09;知识1. 放大器1.1. 晶体管放大器1.2. 运算放大器1.3. 管子放大器&#xff08;真空管放大器&#xff09;微处理器/单片机知识其他相关知识 基于FPGA的算法设计是一个跨学科的…

底软驱动 | U-boot移植点点滴滴

u-boot 移植要点 一般厂家直接提供 u-boot 源码&#xff0c;做查看、修改(增加新功能) 或 u-boot 版本升级这三大块的用处&#xff1b;后两种都需要对新板子做适配/移植。 如果没有提供 u-boot 源码&#xff0c;那么就从 u-boot 官方版本中找到一个最相近的板子配置进行移植&…

【QT】布局管理器

布局管理器 布局管理器1. 垂直布局2. 水平布局3. 网格布局4. 表单布局5. Spacer 布局管理器 之前使⽤ Qt 在界⾯上创建的控件, 都是通过 “绝对定位” 的⽅式来设定的&#xff1b;也就是每个控件所在的位置, 都需要计算坐标, 最终通过 setGeometry 或者 move ⽅式摆放过去。 …

Log4j的原理及应用详解(四)

本系列文章简介&#xff1a; 在软件开发的广阔领域中&#xff0c;日志记录是一项至关重要的活动。它不仅帮助开发者追踪程序的执行流程&#xff0c;还在问题排查、性能监控以及用户行为分析等方面发挥着不可替代的作用。随着软件系统的日益复杂&#xff0c;对日志管理的需求也日…

深入理解C++ 中的可调⽤对象

C中的可调⽤对象总结 普通函数类成员函数类静态成员函数与类成员函数的区别 仿函数简单示例高级用法-状态保持优缺点优点缺点 函数指针获取函数地址声明并调用函数指针 lambda表达式语法定义捕获单个捕获符 std::function()协程 可调用对象用处⼴泛&#xff1a; ⽐如在使⽤⼀些…

排序-java(详解)

一&#xff0c;分类 主要的排序大致分为以下几类&#xff1a; 1&#xff0c;插入排序&#xff0c;又分为直接插入排序和希尔排序 2&#xff0c;选择排序&#xff0c;又分为选择排序和堆排序 3&#xff0c;交换排序&#xff0c;又分为冒泡排序和快速排序 4&#xff0c;归并…

【linux】服务器安装及卸载pycharm社区版教程

【linux】服务器安装及卸载pycharm社区版教程 【创作不易&#xff0c;求点赞关注收藏】 文章目录 【linux】服务器安装及卸载pycharm社区版教程1、到官网下载安装包2、通过终端wget下载安装包3、解压4、安装5、设置环境变量6、运行pycharm7、删除pycharm安装包、卸载pycharm …

从“卷模型”到“卷应用”:AI时代的价值重塑与个性化智能探索

&#x1f308;所属专栏&#xff1a;【其它】✨作者主页&#xff1a; Mr.Zwq✔️个人简介&#xff1a;一个正在努力学技术的Python领域创作者&#xff0c;擅长爬虫&#xff0c;逆向&#xff0c;全栈方向&#xff0c;专注基础和实战分享&#xff0c;欢迎咨询&#xff01; 您的点…

使用独享代理IP安全性高不高?怎么辨别独享IP和共享IP?

在网络安全的多种工具和技术中&#xff0c;代理IP是常用的一种手段&#xff0c;尤其是在处理需要隐私保护和安全性的网络请求时。独享代理IP&#xff08;专用代理&#xff09;和共享代理IP是两种主要的代理类型&#xff0c;它们在安全性、性能和成本方面有着本质的区别。本文将…

【漏洞复现】华测监测预警系统2.2 UserEdit.aspx SQL注入

声明&#xff1a;本文档或演示材料仅用于教育和教学目的。如果任何个人或组织利用本文档中的信息进行非法活动&#xff0c;将与本文档的作者或发布者无关。 一、漏洞描述 华测监测预警系统2.2&#xff08;HuaCe Monitoring and Early Warning System 2.2&#xff09;是一款由华…

人工智能算法工程师(中级)课程9-PyTorch神经网络之全连接神经网络实战与代码详解

大家好&#xff0c;我是微学AI&#xff0c;今天给大家介绍一下人工智能算法工程师(中级)课程9-PyTorch神经网络之全连接神经网络实战与代码详解。本文将给大家展示全连接神经网络与代码详解&#xff0c;包括全连接模型的设计、数学原理介绍&#xff0c;并从手写数字识别到猫狗识…

【第32章】MyBatis-Plus之代码生成器配置

文章目录 前言一、概述1.特点说明2.示例配置3. 数据库配置 (DataSourceConfig) 二、全局配置 (GlobalConfig)1.方法说明2.示例配置 三、包配置 (PackageConfig)1. 方法说明2. 示例配置 四、模板配置 (TemplateConfig)1. 方法说明2. 示例配置 五、注入配置 (InjectionConfig)1. …

使用 exe4j 转换 Java jar 程序为 Windows 平台可执行文件 (.exe)

使用 exe4j 转换 Java jar 程序为 Windows 平台可执行文件 &#xff08;.exe&#xff09; 介绍exe4j 特点&#xff1a;转换全过程&#xff08;软件操作&#xff09;1、注册2、选择模式3、配置应用4、选择执行的方式&#xff08;我这里管这个叫呈现方式&#xff09;5、选择 JAR …

Mybatis 学习之 数字字符串判断“失效”问题

目录 1. 现象2. 原因3. 解决4. 特别注意 1. 现象 <?xml version"1.0" encoding"UTF-8"?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper…

Java 中的正则表达式

转义字符由反斜杠\x组成&#xff0c;用于实现特殊功能当想取消这些特殊功能时可能在前面加上反斜杠\ 例如在Java中\也具有特殊意义&#xff0c;前面加一个反斜杠表示取消特殊意义&#xff0c;表示1个普通的反斜杠\&#xff0c;\\\\表示2个普通的反斜杠\\。其实就是要求Java中的…

Python那些优质可视化工具!

作者&#xff1a;Lty美丽人生 https://blog.csdn.net/weixin_44208569 本次分享10个适用于多个学科的Python数据可视化库&#xff0c;其中有名气很大的也有鲜为人知的&#xff01; 1、matplotlib 两个直方图 matplotlib 是Python可视化程序库的泰斗。经过十几年它任然是Pytho…

【前端速通系列|第二篇】Vue3前置知识

文章目录 1.前言2.包管理工具npm2.1下载node.js2.2配置 npm 镜像源2.3 npm 常用命令 3.Vite构建工具4.Vue3组件化5.Vue3运行原理 1.前言 本系列文章旨在帮助大家快速上手前端开发。 2.包管理工具npm npm 是 node.js中进行 包管理 的工具. 类似于Java中的Maven。 2.1下载nod…

Autoware 定位之基于ARTag的landmark定位(六)

Tip: 如果你在进行深度学习、自动驾驶、模型推理、微调或AI绘画出图等任务&#xff0c;并且需要GPU资源&#xff0c;可以考虑使用UCloud云计算旗下的Compshare的GPU算力云平台。他们提供高性价比的4090 GPU&#xff0c;按时收费每卡2.6元&#xff0c;月卡只需要1.7元每小时&…

CSS相对定位和绝对定位的区别

CSS相对定位和绝对定位的区别 区别1&#xff1a;相对的对象不同 相对定位是相对于自己绝对定位是相对于离自己最近的有定位的祖先 区别2:是否会脱离文档流 相对定位不会脱离文档流&#xff0c;不会影响其他元素的位置绝对定位会脱离文档流&#xff0c;会影响其他元素的布局 代…