.NET转JAVA曲折之路

.NET转JAVA曲折之路

响应国家号召,让软件适应国产化系统,我们被迫走上了这条坎坷大路。

道路崎岖,但挺有意思,从拿来主义到主动思考,这是一个质的转变。

我们花了更多时间用来思考,而不是copy。

​ --by zh

常态

  • 函数名首字母改小写
  • 属性操作需要通过get、set函数
  • .net扩展方法改为静态函数
  • 时间函数更改
  • Lambda表达式翻译
  • 解决各种注解相关的问题

一些问题

  1. Meaven是你入门时应该关注的

    项目对象模型(POM),可以通过一小段描述信息来管理项目的构建,报告和文档的项目管理工具软件。
    
  2. 不存在非必传参数,推荐更多的使用重载特性

  3. 不支持静态函数this扩展方法

  4. Lambda表达式使用方式和函数差异较大

    //所有操作基于流stream(),其他请查看教程。
    Select  -> map
    Where   -> filter
    ToList  -> collect(Collectors.toList())
    ToArray -> toArray(String[]::new))
    GroupBy -> collect(Collectors.groupingBy(Student::getCode));
    OrderBy -> sorted(Comparator.comparing(FieldOperation::getSort).reversed())
    
  5. lambda表达式的一种简写

    //双冒号运算操作符是类方法的句柄,lambda表达式的一种简写  
    //方法调用
    person -> person.getAge();
    //可以替换成
    Person::getAgex -> System.out.println(x)
    //可以替换成
    System.out::println
    
  6. Lambda函数式编程

    //常用
    Supplier<String> test = ()->"";
    Function<String, Apple> biLambda = (color) -> new Apple(color);
    BiFunction<String, Integer, Apple> biLambda = (color, height) -> new Apple(color, height);
    
  7. 枚举定义不同

    Java 为枚举类型提供了一些内置的方法,同时枚举常量也可以有自己的方法。

  8. lambda 表达式中使用的变量应为 final 或有效 final

    该表变量属性或通过装箱方式通过编译
    Object[] lambda_para = new Object[]{itemList};
    HashMap<String, Object> para = new HashMap<>();
    
  9. 没有as、is等关键字

    //验证类型用instanceof。
    obj instanceof class
    
  10. 不存在var匿名类型,foreach需指定对象

    for (int x : arr) {}
    
  11. 存在主动异常需要在函数上申明或捕获

    void name() throws Exception {}
    
  12. 代码注释、代码折叠

    //行注释/**
    * 多行注释
    *///region 代码折叠
    //endregion
    
  13. JSON对象区别

    无JObject,使用第三方JSONObject(阿里)
    
  14. 字典类型不同

    Dictionary ->  HashMap
    
  15. 生成随机数

    //生成 [m,n] 的数字
    int i1 = random.nextInt() * (n-m+1)+m;
    
  16. 去掉.NET语法糖

    @、$、()=>{}、var、as、is
    
  17. 事务被springboot统一管理

    默认不需要单独操作

  18. 区分异常处理

    checked 异常 和 RuntimeException
    检查异常  : 编译时被检测的异常 (throw后,方法有能力处理就try-catch处理,没能力处理就必须throws)。编译不通过,检查语法(其实就是throw和throws的配套使用)。
    运行时异常 : 编译时不被检查的异常(运行时异常。RuntimeException及其子类)。编译通过。
    
  19. 判断逻辑中的误区

    equals是判断两个变量或者实例指向同一个内存空间的值是不是相同
    而==是判断两个变量或者实例是不是指向同一个内存空间
    尽量使用equals()!!!
    
  20. int、Integer傻傻分不清楚

    Integer是int的包装类;int是基本数据类型;
    Integer变量必须实例化后才能使用;int变量不需要;
    Integer实际是对象的引用,指向此new的Integer对象;int是直接存储数据值 ;
    Integer的默认值是null;int的默认值是0。
    
  21. ★注解-@Autowired中注入静态方法或者静态变量

    注意:用static去定义一个注入的方法或者配置文件值变量,编译时不会有任何异常,运行时会报空指针。
    通过非静态的setter方法注入静态变量 ,我们可以改成这样就静态变量可以获取到你配置的信息了。
    private static OSSConfMapper ossConfMapper;
    @Autowired
    public  void setOssConfMapper(OSSConfMapper ossConfMapper) {UploadUtil.ossConfMapper = ossConfMapper;
    }
    
  22. ★注解-@Autowired 注入为null 的介绍与解决方式

    可能存在的原因:
    (1)该类没有托管给spring 管理,一般在类的上面添加@Component
    (2)你的这个类有被new出来的实例的,new 过的对象不会交给Spring容器管理 所以里面的 service或者dao注入不进来。一般是指引用某些框架,你是继承某个接口,但是这些框架默认new过这个方法,比如MVC拦截的HandlerInterceptor类。
    +@Component
    
  23. mybatis与ibatis参数区别

    mybatis:#{para}、${para}
    ibatis :#para#、$para$
    
  24. ★奇葩-java.lang.NoSuchMethodException

    在这个实体类里面有一个属性出问题了;(或者序列化失败问题)
    解决方法:在实体类中添加无参构造函数
    注意:存在含参构造函数,则必需手动添加无参构造函数
    
  25. mybatis获取自定义列表

    Dao.ExecuteQueryForObject	//获取对象(获取列表异常)
    Dao.ExecuteQueryForList		//获取列表
    select.resultType=java.util.Map //返回列表(Object只会获取首列)
    <select id=""  parameterType="java.util.Map" resultType="java.util.Map">...
    </select>
    
  26. 【打包】解决 maven多moudle项目 多个root问题

    maven多moudle项目 父pom没有子moudle 就会出现多root目录
    
  27. maven 依赖规则&版本锁定(待测试)

    maven调节原则:
    1.谁先定义的用谁的传递依赖 
    2.直接依赖优先级大于传递依赖
    排除依赖(将不需要的传递依赖的包去除掉) 标签<exclusions>
    
  28. JSONArray JSONObject 转换时出错

    java.lang.reflect.InvocationTargetException在开发中经常会遇到把一个对象转换成JSON时提示转换错误,这个原因一般是JSONArray或JSONObject无法正常转换对象中的类型造成的,这个时候可以考虑把实体类中的所有属性名称打出来进行观察,如果发现有不是常规的类型就必须指定转换。
    
  29. Stopping service [Tomcat] 错误自查

    1.调整日志级别为debug
    2.检查 “CONDITIONS EVALUATION REPORT” 行以上日志
    3.示例:connection timed out(Redis无法连接,框架启动失败)
    

学习教程

授人以渔

受一些大神影响,我自己也对此深有体会:

每个人认知水平的不同、表达方式的差异,都会对知识的传播产生残缺,甚至错误的结果。

所以,本块内容才是你学习的重点,学习别人的学习途径,而不是结果。

IDEA

https://www.jetbrains.com/idea/

IDEA使用Maven

https://blog.csdn.net/qq_42662759/article/details/116382333

java正则

https://www.cnblogs.com/xyou/p/7427779.html

https://www.cnblogs.com/perl6/p/7220209.html

java8-lambda

https://www.runoob.com/java/java8-lambda-expressions.html

https://www.cnblogs.com/franson-2016/p/5593080.html

https://www.cnblogs.com/JonnyJiang-zh/p/13702842.html

https://blog.csdn.net/exodus3/article/details/90511500

lambda操作List

https://blog.csdn.net/fzy629442466/article/details/84629422

https://www.cnblogs.com/yelanggu/p/13508195.html

https://blog.csdn.net/qq_39080512/article/details/105539979

https://blog.csdn.net/weixin_30764137/article/details/97982814

https://blog.csdn.net/qq_34996727/article/details/94472999

**★Lambda函数式编程 **

https://blog.csdn.net/rongtaoup/article/details/97617173

Java枚举详解

https://blog.csdn.net/qq_35385687/article/details/90147104

类型判断

https://www.cnblogs.com/felordcn/p/13796202.html

Java 中 JSON 的使用

https://www.runoob.com/w3cnote/java-json-instro.html

java之HashMap讲解

https://www.cnblogs.com/benwu/articles/7749779.html

时间处理

https://www.cnblogs.com/shuilangyizu/p/6902643.html

https://blog.csdn.net/lz199719/article/details/81261336

checked 异常 和 RuntimeException

https://blog.csdn.net/qq_18505715/article/details/76696439

浅谈Java中equals()和==的区别

https://blog.csdn.net/qq_38162448/article/details/81611894

https://www.cnblogs.com/tinyphp/p/3768214.html

Java基础之int和Integer有什么区别

https://blog.csdn.net/chenliguan/article/details/53888018

★注解相关

https://www.cnblogs.com/huanghongbo/p/10890025.html

https://blog.csdn.net/wcy18818429914/article/details/106858974/

依赖相关

https://www.cnblogs.com/songcuiting/p/8783750.html

https://www.jianshu.com/p/e29633d12c19

JSONArray JSONObject 转换时出错

https://www.iteye.com/blog/piranha-1973852

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

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

相关文章

M1安装服务一条龙Mysql (解决PID的不存在的方法)

遇到的各种奇葩离谱问题 dev.mysql.com/downloads/mysql/&#xff0c;登入下载就行&#xff0c;下载这块最简单&#xff0c;就不详细说明了 首先注意一个点M1可以下载ARM&#xff0c;也可以X86&#xff0c;目前暂时不用考虑效率能用就行&#xff0c;5.7也可以用哈 然后下载完&…

GPT系列模型技术路径演进

目录 前言TransformerGPT-1BERTGPT-2GPT-3InstructGPT/ChatGPTGPT-4类ChatGPT产品Google Bard&#xff08;诗人&#xff09;facebook LLaMA(羊驼)复旦 MOSS清华 ChatGLM-6B/130B百度 文心一言 总结参考&#xff1a; 前言 人工智能发展的历程如上图所示&#xff0c;从基于规则统…

如何利用 GPT4创建引人注目的流程图

如何利用 GPT4创建引人注目的流程图 流程图是可视化复杂思想和过程的首选工具。然而&#xff0c;创建一个好的流程图可能需要很多时间。 在本文中&#xff0c;我将向你展示如何在不到一分钟的时间内使用ChatGPT&#xff08;最好是GPT-4&#xff09;创建令人惊叹的流程图。 生…

CSS3---选择器分类,最全版

目录 标签选择器(元素选择器) 类选择器 id选择器 通配符选择器 伪类选择器 链接伪类选择器 结构伪类选择器 目标伪类选择器 标签选择器(元素选择器) 标签选择器&#xff0c;是指用HTML标签名称作为选择器&#xff0c;按照标签名称分类&#xff0c;为某一类标签指定统一的…

ChatGPT已过时?Auto-GPT迅速走红,无需人类插手自主解决复杂任务,GitHub标星5万

来源: AI前线 微信号&#xff1a;ai-front 作者 | Luke Larsen ChatGPT 之所以能风靡全球&#xff0c;很大程度上要归功于其简单的功能框架。作为一款 AI 聊天机器人&#xff0c;它唯一的作用就是生成令人信服的自然语言文本、顺畅回应用户的提问。 但 AI 聊天机器人的使用体…

ChatGPT已过时?Auto-GPT迅速走红,无需人类插手自主解决复杂任务,GitHub标星5万...

来源&#xff1a;AI前线 作者&#xff1a;Luke Larsen 译者&#xff1a;核子可乐 策划&#xff1a;冬梅 ChatGPT 之所以能风靡全球&#xff0c;很大程度上要归功于其简单的功能框架。作为一款 AI 聊天机器人&#xff0c;它唯一的作用就是生成令人信服的自然语言文本、顺畅回应用…

telegram纯协议电报群发,自动加群,引流自动化解放双手*

全自动协议批量发送&#xff0c;一键简便操作&#xff0c;极大节省时间和精力。遇到问题时&#xff0c;日志自动诊断&#xff0c;整个过程无需人工干预。目前市场上功能最全面的国内外营销软件&#xff0c;吸引流量效果卓越&#xff01;

智能黑白图像自动上色——C++实现

前言 《Colorful Image Colorization》是加里福利亚大学Richard Zhang发表在ECCV 2016上的文章&#xff0c;论文主要解决的问题是给灰度图的自动着色&#xff0c;算法并不是为恢复灰度图的真实颜色&#xff0c;而是用灰度图中物体的纹理、语义等信息作为线索&#xff0c;来预测…

解密银行客户经理展业利器系列一:商机共享、创收增长

2023年银行业面临存款、贷款、利润三大变局&#xff0c;与此同时&#xff0c;商业银行的数字化转型正延展至前台建设&#xff0c;期望通过科技手段布局应对&#xff0c;数字化重装身处一线的客户经理&#xff0c;带动单位时间创收提升&#xff0c;更有力地支撑银行业务战略发展…

chatgpt赋能python:Python安装paramiko,实现SSH远程连接

Python安装paramiko&#xff0c;实现SSH远程连接 作为一种开源的Python库&#xff0c;Paramiko提供了SSH 协议的实现方式&#xff0c;使得Python程序能够方便地与SSH服务器通信&#xff0c;完成以SSH协议为基础的操作&#xff0c;比如服务器批量管理、远程执行命令和文件传输等…

GPT4 api 申请

从官网申请 GPT4 api 的申请权限&#xff0c;似乎在这之前您必须是一个ChatGPT的plus会员 填写表格 注意&#xff0c;组织ID&#xff0c;从图所示的小字部分点击链接&#xff0c;获取组织ID&#xff0c;也可以点击这How do you primarily plan to use GPT-4? * 这个选项可以…

Unity3d 使用Chart And Graph插件进行数据可视化(柱状图、折线图、饼图等)基本使用

前言 首先来夸夸这个插件&#xff0c;美观性、响应速度和互动性。易于上手和快速设置。每项功能都可以从代码和编辑器中自定义。“图形和图表”兼容性强&#xff0c;包括 VR/AR、移动端、网页和桌面端等。与 UGUI Canvas 完美集成。一句话数据可视化选它完美。 使用 插件导入…

R:热图解释 | pheatmap包参数及详细聚类图绘制流程(一篇解决热图绘制问题)

热图解释及pheatmap绘制热图 一、热图绘制原理1.1 热图介绍1.2 热图绘制准备——均一化1.3 热图绘制方式1.4 热图数据查看示例 二、pheatmap包简介2.1 pheatmap介绍2.2 pheatmap详细参数解释2.3 pheatmap安装及加载 三、pheatmap包绘制热图示例3.1 数据准备3.2 数据导入及绘图3…

R | 可视化 | 热图(Heatmap)

1 基础绘制 R绘制热图时&#xff0c;数据需要输入一个矩阵&#xff0c;可以用as.matrix()把它转换成矩阵。这里利用R自带的数据集绘制热图。 > # 数据 > data <- as.matrix(mtcars) > > # 绘制热图 > heatmap(data) OUTPUT: 热图的每一列是一个变量&…

TeeChart绘制Gant图

软件安装 及使用 VS2010 使用TeeChart绘图控件 - 之一 - 控件和类的导入_尘中远的博客-CSDN博客_teechartVS2010 使用TeeChart绘图控件 - 之一 - 控件和类的导入VS2010 使用TeeChart绘图控件 - 之二 - 绘制图形&#xff08;折线图&#xff0c;柱状图&#xff09;TeeChart绘图控…

使用GraphInsight打造TuGraph可视化分析应用

图的可视化是分析和理解图数据的一种重要手段。TuGraph 内置了TuGraph Browser&#xff0c;为大多数用户提供了一个简单易用的图可视化界面。由于 TuGraph Browser 不支持自定义界面&#xff0c;因此一些有自定义界面需求的用户只能选择自行搭建新的前端界面。11月22日&#xf…

热图 -- pheatmap or ggplot2

文章目录 brief数据准备 pheatmap实例最朴素的方式数据缩放取消聚类更改每个小方格的大小聚类以及聚类方式和参数修改热图呈现的颜色修改legend ggplot2实例ggplot2实例变式添加 group bar做成dotplot pheatmap 多图组合问题 brief 这里主要记录了pheatmap 以及 ggplot2实现热…

GTK渲染摄像头图像数据

GTK渲染摄像头图像数据 1.GDK简介 绘图工具集(GDK&#xff0c;Graphics Drawing Kit)是在GTK 和特定操作系统的应用编程接口(API,Application Program Interface)之间的低级绘图制层—— Linux的API是Xlib。由于GTK和机器的API之间没有直接接口&#xff0c;移植GTK就成为移植G…

Pheatmap热图的绘制及如何调整图片

Pheatmap热图的绘制及如何调整图片 Pheatmap包是R语言绘制热图比较强大的软件包&#xff0c;当然现在也有很多资料介绍这个包的使用&#xff0c;但是今天我写的重点不是如何使用这个包绘制热图&#xff0c;而是如何绘制出更好看的热图。&#xff08;我使用的矩阵是1663x594&am…

unity可视化图表插件XCharts绘制折线图、饼图、柱状图

一、简介 一款基于UGUI的功能强大、易用、参数可配置的数据可视化图表插件。支持折线图、柱状图、饼图、雷达图、散点图、热力图等常见图表。 特性&#xff1a; 内置丰富示例和模板&#xff0c;参数可视化配置&#xff0c;效果实时预览&#xff0c;纯代码绘制。 支持折线图、柱…