java开发笔记

news/2024/4/25 9:57:04/文章来源:https://blog.csdn.net/lllwwyy/article/details/127248193

1:java操作文件

MultipartFile file
/File dest = new File(uploadFile+ “/”+fileName);
//判断文件父目录是否存在
if(!dest.getParentFile().exists()){
dest.getParentFile().mkdir();
}
/
保存
file.transferTo(dest);

读取文件
Document document = null;
//读取上传到服务器的文件
document = reader.read(dest);
直接读取客户端上传过来的文件
document = reader.read(file.getInputStream());

2:java最重要的类 String字符串

  • 字符串不可变 作为hashmap的键 线程安全
  • 字符串常量池 String s1 = "aaa"和String s2 = “aa”;用==比较是返回true的,而new 出来的两个相同的字符串是不相等的,直接放堆里面了
  • +和StringBuilder,都是字符串拼接,+的拼接也会转化为StringBuild,字符串拼接数少于4个的时候用+,多余4个用StringBuilder。
  • concat()也是拼接
  • intern()放缓存
  • StringUtils字符串工具类 (是null安全的)

3:java中==

Integer q = 127;
Integer r = 127;
System.out.println(q == r); // true
q = 128;
r = 128;
System.out.println(q == r); // false

??因为Integer作为常量时,对于-128到127范围之间的数,Java会对其进行缓存,so使用如下做Integer类型得判断

System.out.println(q.intValue() == r.intValue());
System.out.println(q.compareTo(r) == 0);

4:关于异常

捕获异常是为了处理它,不要捕获了却什么都不处理而抛弃之,如果不想处理它,请将该异常抛给它的调用者。最外层的业务使用者,必须处理异常,将其转化为用户可以理解的内容。

5:java反射

  • 用Java的反射功能, 可以很轻松的完成上面的要求:
  • //第一步, 先把HelloWorld的类装载进来
  • Class cls = Class.forName(“com.example.HelloWorld”);
  • //第二步, 创建一个HelloWorld的实例, 注意, 这里并没有用强制转型把obj转成HelloWorld
  • Object obj = cls.newInstance();
  • //第三步, 得到这个类的方法, 注意, 一个类的方法也是对象啊
  • Method m = cls.getDeclaredMethod(“sayHello”);
  • //第四部, 方法调用, 输出"hello world"
  • m.invoke(obj);

6:JAVA 对集合list的实体按某一字段(如日期)排序

因为Collections的sort方法默认是升序排列,要重新方法

//按照runTask里面的startTime降序进行排序public void ListSort(List<RunTask> list) {Collections.sort(list,new Comparator<RunTask>() {@Overridepublic int compare(RunTask o1, RunTask o2) {if(o1.getStartTime().getTime() > o2.getStartTime().getTime()){return -1;} else if(o1.getStartTime().getTime() < o2.getStartTime().getTime()){return 1;} else {return 0;}}});}

7:Map知识点

实现map接口

  1. HashMap(无序 线程安全)
    new HashMap(3);//大于3的最小的2的n次方的数4 长度为4的map
    new HashMap(16,0.75) //长度16 负载因子0.75

  2. LinkedHashMap(有序 线程不安全)

  3. TreeMap

  4. ConcurrentHashMap (线程安全)

  5. synchronizedMap(线程安全)

  6. HashTable(线程安全 效率低 已废弃)

  • ConcurrentHashMap线程安全的实现方式
    jdk1.7 使用分段锁 jdk1.8 使用CAS(compare and swap) 比较交换算法

8:LRU(Least Recently Used) 最近最少使用

是一种页面置换算法,选择最近最久未使用的页面予以淘汰;只在缓存中存最新的数据 java中可以使用LinkedHashMap来实现:

  1. 本身实现按照访问顺序的存储
  2. 提供方法用于判断是否需要移除最不常读取的数

9:在单元测试中不要使用@Transactional注解

  • 作用 @Transactional是spring的事务注解,事务的作用是产生错误信息时保证数据的一致性,一个事务是一个只包含所有读/写操作成功的集合(事务的本质:1:原子性 2:一致性 3:隔离性 4:耐久性)
  • 问题 使用@Transactional注解时导致对实例数据的操作都在内存中完成,最终不会进行commit操作,也就不会对数据进行持久化操作,导致测试行为和真实行为不一致
  • 详解 事务管理在应用开发中是种不可或缺的设计,它是数据库持久化处理的一种标准。我们知道,应用程序开发离不开对数据的CRUD(增删改查),事务的ACID性可以更好保证数据的完整性,保证相关数据的同生共死。单个事务生命周期主要分为三个阶段,BEGIN TRANSACTION -> COMMIT TRANSACTION -> ROLLBACK TRANSACTION。

10:java 小数 0.55转 百分比

float ss = 0.55;
DecimalFormat df = new DecimalFormat("0.00%");
百分比 = df.format(ss);  //55.00%

11:使用sigar监控硬件资源

  1. 引入jar包
  2. windows:
    将sigar-amd64-winnt.dll 或者sigar-x86-winnt.dll 加入system32
  3. linux:
    将libsigar-amd64-linux.so 或者 libsigar-x86-linux.so 加入 usr/lib 或者usr/lib64
    调用的地方加代码,打印文件路径,将相关dll或者so放入对应文件中
System.getProperty("java.library.path");

12: resultful风格的接口请求常用注解

  • @PathVariable
    resultful风格时的url占位符
    例子:
@GetMapping("/user/{id}")
public Response test(@PathVariable Integer id)
  • post请求参数
@PostMapping("/user")
public Response test(@RequestParam("id") Integer id)
  • 集成swagger
@PostMapping("/user")
public Response test(@RequestParam("id") @ApiParam("主键id") Integer id)
  • delete请求
@DeleteMapping("/user/{id}")
public Response test(@PathVariable Integer id)

13: Java8 中使用 skip or limit 来替代 subList

  1. limit: 对一个Stream进行截断操作,获取其前N个元素,如果原Stream中包含的元素个数小于N,那就获取其所有的元素;
  2. skip: 返回一个丢弃原Stream的前N个元素后剩下元素组成的新Stream,如果原Stream中包含的元素个数小于N,那么返回空Stream;

14: 通过文件的字节数组判断文件类型

  • 将byte数组转换为16进制字符串
  • 根据字符串判断文件类型
  • https://blog.csdn.net/ahua186186/article/details/84624522

15: java注释

  • TODO 该处代码代编写
  • FIXME 该处代码需要修正

16: 开发中时间格式处理

  • 对于时间格式的处理 java自带的date类产生的时间是标准时间格式 new Date() —>Thu Sep 23 15:33:09 CST 2021
  • 使用hutool的时间工具类 DateUtil.date() 方法产生的---->2021-09-23 15:33:09
  • 前端传后端的时间格式 在后台对象上使用@DateTimeFormat(pattern = DatePattern.NORM_DATE_PATTERN) 进行格式化
  • 后端返回给前端的格式 在后台对象上使用@JsonFormat(pattern = DatePattern.NORM_DATE_PATTERN) 进行格式化
  • 在mysql数据库中 只要属性类型为Date 不管是那种格式都被转化成标准格式展示,然后可以进行各种格式化

mysql使用decimal

  • 对于MySQL3.23 以前的版本,DECIMAL(M, D) 列的每个值占用M 字节,而符号(如果需要)和小数点包括在M 字节中。因此,类型为DECIMAL(5, 2) 的列,其取值范围为-9.99 到99.99,因为它们覆盖了所有可能的5 个字符的值。
  • 在MySQL 3.23 及以后的版本中,DECIMAL(M, D) 的取值范围等于早期版本中的DECIMAL(M + 2, D) 的取值范围。

Java BigDecimal比较大小

//前提为a、b均不能为null
if(a.compareTo(b) == -1){System.out.println("a小于b");
}
if(a.compareTo(b) == 0){System.out.println("a等于b");
}
if(a.compareTo(b) == 1){System.out.println("a大于b");
}if(a.compareTo(b) > -1){System.out.println("a大于等于b");
}
if(a.compareTo(b) < 1){System.out.println("a小于等于b");
}

Function<T,R>的用法

public static void main(String[] args) {Function<String,String> function = a->a+" jack";Function<String,String> function1 = a->a+" Bob";System.out.println(function.apply("hello")); //hello jackString greet = function.andThen(function1).apply("hello");System.out.println(greet);//hello jack Bob  之后String greeet1 = function.compose(function1).apply("hello");System.out.println(greeet1);//hello Bob jack 之前}

mybatis时间区间查询

mybatis框架支持直接用>=或<=查询日期范围,如:

<if test="startTime != null and startTime != ''">and timer.create_time  >= #{startTime}
<if test="endTime != null and endTime != ''">and timer.create_time  <= #{endTime}
</if>但这种方式,如果开始时间和结束时间是同一个日期,就查不出来了,一种解决方法是用DATE_FORMAT转一下日期,如:
<if test="startTime != null and startTime !='' "><![CDATA[ and DATE_FORMAT(create_time, '%Y-%m-%d') >= #{startTime} ]]>
</if><if test="endTime != null and endTime !='' "><![CDATA[ and DATE_FORMAT(create_time, '%Y-%m-%d') <= #{endTime} ]]>
</if>

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

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

相关文章

SkeyeVSS智慧国土高点视频监控解决方案

随着经济的快速发展、城镇化的快速推进&#xff0c;耕地及矿产资源等不断减少&#xff0c;未批先建、批少用多、私自改变土地用途等各种违法违规用地行为时有发生&#xff0c;在这种情况下&#xff0c;传统的人力巡查工作效率低、执法成本高的弊端进一步凸显。 SkeyeVSS智慧国土…

科技云报道:私有云市场加速洗牌,超云为何异军突起?

科技云报道原创。 近年来在国家相关政策的大力推动下&#xff0c;中国私有云市场发展渐入佳境&#xff0c;一股新的建设高潮汹涌而至。 根据IDC对于2022-2026中国SDS及HCI的市场预测&#xff0c;中国私有云基础架构市场正在从成长阶段迈向成熟阶段&#xff0c;未来3-5年将保持…

自己动手写ls命令——Java版

自己动手写ls命令——Java版 介绍 在前面的文章Linux命令系列之ls——原来最简单的ls这么复杂当中&#xff0c;我们仔细的介绍了关于ls命令的使用和输出结果&#xff0c;在本篇文章当中我们用Java代码自己实现ls命令&#xff0c;更加深入的了解ls命令。 代码实现 文件操作的…

3000字神经网络论文

你遇到了哪些困难和挫折是怎样克服的写下来的作文 我学会了骑自行车人生的道路上&#xff0c;谁都会遇到困难或挫折&#xff0c;就看你敢不敢去挑战它。那一次学自行车&#xff0c;一直让我记忆犹新。一天傍晚&#xff0c;我和爸爸妈妈一起推着车来到体育馆&#xff0c;这次我…

Android同文输入法的使用(开源输入法Trime)

Trime输入法背景源码APP试用下载安装配置部署成功后再一步&#xff1a;学习如何 DIY总结背景 想找一款开源的Android中文输入法&#xff0c;然后发现了这款备受推崇的输入法框架rime。 RIME&#xff0f;中州韵输入法引擎&#xff0c;是一个跨平台的输入法算法框架。 基于这一…

【MySQL】检索数据

每日鸡汤 &#xff1a; —— 若你困于无风之地&#xff0c;我将奏响高空之歌 要和我一起花 10 min 学一会 SQL 嘛&#xff1f; - 当然愿意&#xff0c;我美丽的小姐 &#xff08;封寝期间练就的自言自语能力越来越炉火纯青了~~~&#xff09; 前言&#xff1a; 本实验中所用数据…

Kotlin第二章:kotlin基础

1. 基础数据类型 1. 整数类型 序号类型位宽最小值最大值1Byte8-1281272Short16-32768327673Int32-2,147,483,648 (-2^31)2,147,483,647 (2^31 - 1)4Long64-9,223,372,036,854,775,808 (-2^63)9,223,372,036,854,775,807 (2^63 - 1) val number 100 //默认Int类型 类比java的…

0050 Enum枚举类

/* 枚举是一种特殊的类&#xff0c;里面只包含一组有限的特定对象枚举的两种实现方式1.自定义类实现枚举2.使用enum关键字实现枚举自定义类实现枚举1.构造器私有化2.本类的内部创建一组对象[]3.对外暴露对象&#xff08;为对象添加public final static修饰&#xff09;4.提供g…

第三章 Flink基础理论之内存优化及常见内存报错解决方案

第三章 Flink基础理论之内存优化及常见内存报错解决方案 哇. 1、总体内存模型 1.1、内存模型概述 ​ Flink内存配置分为JobManager内存配置和TaskManager内存配置。 配置项TaskManager配置参数JobManager配置参数Total Flink Memorytaskmanager.memory.flink.sizejobmana…

土方量计算的准确作法

​现在说到土方量结算&#xff0c;绝大多数土木行业的人都说某某软件很方便&#xff0c;但是我要问到手算会吗&#xff0c;大多数人都会支支吾吾&#xff0c;虽然手算确实不现实&#xff0c;但是我们做为专业人员&#xff0c;总不能沦为软件使用者吧&#xff1f;其中的原理大家…

公众号网课题库系统-注册即可使用

公众号网课题库系统-注册即可使用 本平台优点&#xff1a; 多题库查题、独立后台、响应速度快、全网平台可查、功能最全&#xff01; 1.想要给自己的公众号获得查题接口&#xff0c;只需要两步&#xff01; 2.题库&#xff1a; 题库&#xff1a;题库后台&#xff08;点击跳转…

大数据专题-spark mysql python爬虫携程景点爬取(含虚拟机镜像)

博主介绍&#xff1a;✌在职Java研发工程师、专注于程序设计、源码分享、技术交流、专注于Java技术领域✌ 项目名称 大数据专题-spark mysql python爬虫携程景点爬取&#xff08;含虚拟机镜像&#xff09; 视频效果 大数据专题-spark mysql python爬虫携程景点系统说明 一&…

Vue组件之间的数据共享详解

目录前言一&#xff0c;props的作用二&#xff0c;父向子传值2.1 子元素2.2 父元素2.3 整体代码三&#xff0c;子向父传值3.1 子组件3.2 父组件3.3 整体代码四&#xff0c;兄弟之间的数据传递4.1 事件总线EventBus介绍(面试高频&#xff09;4.2 传值方4.3 接收方后记前言 组件…

Servlet - Filtering (过滤器))

[TOC](Servlet - Filtering (过滤器) ) 1. What 1.1 什么是Filter Servlet过滤器Filter是一个小型的web组件&#xff0c;它们通过拦截请求和响应&#xff0c;以便查看、提取或以某种方式操作客户端和服务器之间交换的数据&#xff0c;实现“过滤”的功能。Filter通常封装了一…

深度神经网络的优化算法,进化算法优化神经网络

有哪些手段可以提升深度神经网络的泛化性能 人工神经网络以其智能性见长&#xff0c;那么神经网络能真的学到一个映射的本质吗&#xff1f;也就是说&#xff0c;对一个映射给出一定的必要的训练样本训练后&#xff0c;网络能否对样本以外的样本给出较为准确的预测。 泛化能力…

概率论与数理统计学习:随机向量(三)——知识总结与C语言实现案例

hello&#xff0c;大家好 这里是第八期概率论与数理统计的学习&#xff0c;我将用这篇博客去总结这期的知识点以及实现用C语言去做题的过程。 本期知识点&#xff1a; 条件分布 条件分布的概念离散型随机变量的条件概率分布连续型随机变量的条件概率密度 随机变量的独立性 那…

ROS学习笔记三(TF的类)

1.数据类型 数据类型定义在tf/transform_datatypes.h.里 1.1 基本数据类型(Quaternion, Vector, Point, Pose, Transform) TypetfQuaterniontf::QuaternionVectortf::Vector3Pointtf::PointPosetf::PoseTransformtf::Transform 1.2 tf::Stamped tf::Stamped在上面的数据类型…

RocketMQ 5.0:无状态代理模式的探索与实践

本文作者&#xff1a;金吉祥&#xff0c; Apache RocketMQ PMC Member&#xff0c;阿里云智能高级技术专家 背景 首先&#xff0c;让我们来看下是遇到了哪些痛点问题&#xff0c;促使我们去探索一种无状态代理的RocketMQ新架构的&#xff1b; RocketMQ 拥有一套极简的架构&am…

安卓投屏 QtScrcpy

一、电脑安装adb 版本大于1.0.40以上 40不行 adb 1.0.41下载链接 链接&#xff1a;https://pan.baidu.com/s/1WIPI-p7a4ErTLFYHaTC2kw?pwdadbt 提取码&#xff1a;adbt 安装参考 https://blog.csdn.net/M7_xbc/article/details/122957311 二、打开无线调试并且配对 手机打…

驱动开发(10/10-林雪阵)

终端输入1--->LED1点亮 终端输入2--->LED2点亮 终端输入3--->LED3点亮 终端输入0--->LED熄灭 chdev.c (底层驱动代码&#xff09; #include <linux/init.h> #include <linux/module.h> #include <linux/fs.h> #include <linux/uaccess.h>…