JAVA-总结

如何在 IntelliJ IDEA 中进行 Java 代码的批量修改 本文旨在为Java开发者提供在IntelliJ IDEA中进行高效批量代码修改的全面指南。内容涵盖从基础到高级的各种批量修改技术,适用于各种规模的代码库重构和维护场景。文章首先介绍基本概念,然后详细讲解各种批量修改方法,包括实际案例和操作步骤,最后总结最佳实践和高级技巧。批量修改:同时对多个文件或代码片段进行统一修改的操作重构:在不改变代码外部行为的前提下改进代码结构的过程结构化搜索替换:基于代码语法结构而非纯文本的搜索替换方式RQΣδq0FRQΣδq0​FQQQ。 阅读详情


(1)总结

1.所有的int都用Integer类型,包括出参和入参

2.写完代码git提交记得格式化

3.对于所有的校验,如果不通过,一定要返回错误的Result

4.代码不要重复调用,应该加一个变量接收,命名需规范-驼峰命名

5.只有一个参数的情况下,就不要用对象传递,一般参数 >3个才用对象,直接用参数Date或String即可

对象传递需进行转换
传入:req->dto
传出:bo->resp

6.所有的类型字段,状态字段,如果值超过2个,需要加枚举对象

枚举遍历

StateEnum[] stateEnums = StateEnum.values();
for (StateEnum stateEnum : stateEnums) {
	if(stateEnum.getCode()) {...}
}

7.多个写操作的语句,需要加事务

@Transactional 事务注解
throw new BusinessException(“msg”);
手动抛出自定义异常;
异常拦截器;

@AdminOptLogTitle(“预约操作接口”)
查询类的不需要加上这个注解,只有写操作,或者有敏感操作才加,加了这个操作就代表要存入数据库记录;

8.Mapper批量操作规范

批量增加,删除,更新

	<insert id="insertList" parameterType="java.util.List">
	  insert into reserve_rule_config (rule_date, rule_start_tm, rule_end_tm, rule_number) values
	  <foreach collection="list" separator="," item="item">
		  (#{item.ruleDate,jdbcType=DATE}, #{item.ruleStartTm,jdbcType=VARCHAR},
		  #{item.ruleEndTm,jdbcType=VARCHAR},#{item.ruleNumber,jdbcType=INTEGER})
	  </foreach>
	</insert>
	
	<delete id="deleteList" parameterType="java.util.List">
		delete from reserve_rule_config
		where reserve_rule_config_id in (
		<foreach collection="list" separator="," item="item">
			#{item}
		</foreach>
		)
	</delete>
	
	<update id="updateRecords" parameterType="java.util.List">
		<foreach collection="list" item="item" separator=";">
			update reserve_rule_config
			<set>
				<if test="item.ruleStartTm != null">
					rule_start_tm = #{item.ruleStartTm,jdbcType=VARCHAR},
				</if>
				<if test="item.ruleEndTm != null">
					rule_end_tm = #{item.ruleEndTm,jdbcType=VARCHAR},
				</if>
			</set>
			where reserve_rule_config_id = #{item.reserveRuleConfigId}
		</foreach>
	</update>

9.XML中Date类型一定要加jdbcType=DATE

	rule_date = #{ruleDate,jdbcType=DATE}

10.引用yml中配置的值

	@Value("${spring.profiles.active}")
	private String profiles;

11.什么时候定义code?

1.前端需要这个code做一些交互,或者提示,或者跳转,前端需要通过code写逻辑代码,比如code=401,前端要跳转到登陆页面
2.这个code很特殊,通过code方便直观的定位问题,比如通过code直接查询文档,知道报错原因,或者通过code的规则知道是哪个模块的报错,去找对应模块开发人员等
3.通用系统类code(如系统异常,服务器异常请重试),通用业务类code(用户不存在,状态已更新请刷新)

12.Pattern(正则表达式)

指定为字符串的正则表达式必须首先被编译为此类的实例。然后,可将得到的模式用于创建 Matcher 对象,依照正则表达式,该对象可以与任意字符序列匹配。
典型的调用顺序

  Pattern p = Pattern.compile("a*b"); 
  Matcher m = p.matcher("aaaaab"); 
  boolean b = m.matches();

在仅使用一次正则表达式时,可以方便地通过此类定义 matches方法。此方法编译表达式并在单个调用中将输入序列与其匹配。

boolean b = Pattern.matches("a*b", "aaaaab");

等效于上面的三个语句,尽管对于重复的匹配而言它效率不高,因为它不允许重用已编译的模式。

13.对于接口传入的参数都要进行校验

为空校验、匹配校验、重合校验等,避免恶意调接口。

14.分页排序时,排序不要有二义性,二义性情况下可能会导致分页结果乱序,可以在后面追加一个主键排序

order by reserve_date desc,reserve_record_id

15.判断相等或不等时尽量使用equals

如果使用==或!=判断interger类型,当interger 类型的数据超过128的时候,此时保存的是引用地址,这时候相同的值比较也会报false,用equals就不会有问题。

16.循环里面不要涉及到与其他控件(数据库,mq(消息队列),外部应用之类的)交互,尽量一次性批量查询

网络通信是很耗时的,单个查询可能会忽略不计,在循环里面查询就会很慢

17.@JsonProperty和@JSONField

2个注解都是为了解决json字符串的某些属性名和JavaBean中的属性名匹配不上的问题。

  • @JsonProperty
    该注解为jackson包下的,在starter-web启动器下已经存在。
    使用方法,在bean属性或方法上加上该注解, 出现重复字段解决办法,@JsonProperty改为加在get方法上。
  • @JSONField
    该注解为fastjson包下的,启动类配置fastjson转换(如果仅仅是内部使用转换json字符串则不需要配置)
  • 需要注意的是在使用这2个注解进行转换时必须使用相应的方法否则不起作用(fastjson、jackson)
    fastjson忽略属性注解为@JSONField(serialize = false)
    jackson忽略属性注解为@JsonIgnore

18.Redis - increment 递增方法 | 处理防重复和并发问题

什么是increment?
Redis 的 INCR 命令将key中存储的数字值递增。如果key不存在,那么key的值会先被初始化为0,然后在执行 INCR 操作。如果值包含错误的类型,或字符串类型的值不能表示为数字,那么返回一个错误。本操作的值限制在 64 位(bit)有符号数字表示之内。
在这里插入图片描述
问题:redis是单线程操作,上图获取和插入是两个原子操作,并发可能会获取到相同的值。
解决:使用redis自带的自增函数increment()。

19. MySQL for update使用详解

  • 排他锁(S):select * from table_name where … for update;

for update是在数据库中上锁用的,可以为数据库中的行上一个排它锁。当一个事务的操作未完成时候,其他事务可以读取但是不能写入或更新。

for update 和 for update nowait区别(前者阻塞其他事务,后者拒绝其他事务)
for update锁住表或者锁住行,只允许当前事务进行操作(读写),其他事务被阻塞,直到当前事务提交或者回滚,被阻塞的事务自动执行
for update nowait 锁住表或者锁住行,只允许当前事务进行操作(读写),其他事务被拒绝,事务占据的statement连接也会被断开

20. args用来匹配方法参数。

SpringBoot使用AOP,PointCut详解
@Around(“paramCheckPointCut() && args(…, param)”)

  • args() : 匹配不带参数的方法。
  • args(java.lang.String) : 匹配方法参数是String类型的。
  • args(…) :带任意参数的方法。
  • args(java.lang.String,…) :匹配第一个参数是String类型的,其他参数任意。

21. MDC(Mapped Diagnostic Context,映射调试上下文)

MDC 是 log4j 、logback及log4j2 提供的一种方便在多线程条件下记录日志的功能。MDC 可以看成是一个与当前线程绑定的哈希表,可以往其中添加键值对。MDC 中包含的内容可以被同一线程中执行的代码所访问。

当前线程的子线程会继承其父线程中的 MDC 的内容。当需要记录日志时,只需要从 MDC 中获取所需的信息即可。MDC 的内容则由程序在适当的时候保存进去。对于一个 Web 应用来说,通常是在请求被处理的最开始保存这些数据。

22. mybatis新增后返回主键id

在xml文件,insert标签属性中,添加useGeneratedKeys和keyProperty,如图
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

23. 根据对象动态生成表头

根据对象动态生成表头map,key为字段名,value为注解参数值

	public static Map<String, String> setHeaderField(Class<?> entityClass) {
		Map<String, String> tableHeader = new LinkedHashMap();
		Arrays.stream(entityClass.getDeclaredFields()).forEach(field -> {
			ApiModelProperty annotation = field.getAnnotation(ApiModelProperty.class);
			if (annotation != null) {
				tableHeader.put(field.getName(), annotation.value());
			}
		});
		return tableHeader;
	}

24. 使用try-with-resources自动关闭OutputStream

在Java中使用try-with-resources语句可以自动关闭资源,包括OutputStream,从而简化代码并减少资源泄露的风险。

public class OutputStreamExample {
    public static void main(String[] args) {
        try (OutputStream outputStream = new FileOutputStream("example.txt")) {
            outputStream.write("Hello, World!".getBytes());
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

在这个例子中,outputStream在try代码块执行完毕后会自动关闭,无需手动调用close()方法‌。

(2)问题

  1. 所以的实体类都必须实现序列化吗?
    序列化
  2. 系统部署到linux服务器(非分布式)定时任务会重复执行两次?
    分布式锁
  3. 分布式是否属于微服务?
    答案是属于。微服务的意思也就是将模块拆分成一个独立的服务单元通过接口来实现数据的交互。但是微服务不一定是分布式,因为微服务的应用不一定是分散在多个服务器上,他也可以是同一个服务器。这也是分布式和微服务的一个细微差别。
  4. group_concat函数详解?
SELECT parking_order_id,GROUP_CONCAT(DISTINCT `job_number`) as `job_number`
FROM `order_peer` GROUP BY parking_order_id;

在这里插入图片描述

  1. mysql锁表原因及解决方法?
    锁表的原理:数据库使用独占式封锁机制,当执行insert,update,delete语句时,对表进行锁住,直到发生commite 或者 回滚 或者退出数据库用户;
    解决方法:
show full processlist;

查看进程id,然后用kill id杀掉进程

  1. 聚簇索引的概念,回表操作?

  2. 惰性删除方案?

  3. 接口返回数据,为什么有一个或多个?
    带宽限制,高并发导致服务器崩;

  4. 面向过程编程—>面向对象编程?
    校验类的封装一个方法,通用类的封装public方法,独立逻辑的封装private方法。

  5. SpringBoot配置LocalDateTime自动返回前端时间戳
    直接在yml配置,前后端统一使用13位毫秒级时间戳进行交互。

spring:
  jackson:
    serialization:
      # Date返回前端转时间戳
      write-dates-as-timestamps: true
  1. feign远程调用失败
    okhttp 和 HttpURLConnection 不支持 @RequestBody + RequestMethod.GET,只有 httpclient 支持,默认使用 HttpURLConnection。
    解决方法:更改为Post请求,使用 httpclient。=
feign:
  hystrix:
    enabled: true
  okhttp:
    enabled: false
  httpclient:
    enabled: true
  1. 为什么使用RequestBody只能读取一遍请求数据流?
    那是因为流对应的是数据,数据放在内存中,有的是部分放在内存中。read 一次标记一次当前位置(mark position),第二次read就从标记位置继续读(从内存中copy)数据。 所以这就是为什么读了一次第二次是空了。 怎么让它不为空呢?只要inputstream 中的pos 变成0就可以重写读取当前内存中的数据。javaAPI中有一个方法public void reset() 这个方法就是可以重置pos为起始位置,但是不是所有的IO读取流都可以调用该方法!ServletInputStream是不能调用reset方法,这就导致了只能调用一次getInputStream()。
    解决办法:重写HttpServletRequestWrapper方法
    这种方法就是通过重写HttpServletRequestWrapper把request的保存下来,然后通过过滤器保存下来的request在填充进去,这样就可以多次读取request了。

  2. 为什么表单Content-Type为multipart/form-data时上传文件,后台数据的接收为空?
    request 特性
    1、在form表单提交是默认类型的时候可以通过request.getParameter()获取请求参数。但是当请求类型不是默认类型(例如enctype="multipart/form-data"类型,上传一个文件)的时候,需调用request.getInputStream()或request.getReader()方法来获取请求内容值。
    2、 request.getParameter(),request.getInputStream(),request.getReader()三个方法是不能共存的。调用其中一个就会影响剩下两个方法的使用,会导致request中的字节流为空。导致后面再次调用的时候读取不到。

public RequestWrapper(HttpServletRequest request) throws IOException {
        super(request);
        // 读取输入流里的请求参数,并保存到bytes里
        bytes = IOUtils.toByteArray(request.getInputStream());
    }
  1. Copy ‘xxx‘ to effectively final temp variable 问题解决
    在这里插入图片描述
    便用if函数对变量进行了校验,编译后发现报错了。筛查后发现,在这块代码下有一处匿名内部类调用了该变量。
    出错的原因是:内部类对象的生命周期会超过局部变量的生命周期。
    所以在匿名内部类中,只能调用被final修饰的局部变量,而在java 8中,如果局部变量被匿名内部类访问,那么该变量会自动被final隐性修饰。Lambda大致同理。

  2. SpringCloud Feign 的 @RequestParam 长度过长,导致服务降级
    @RequestParam会经过Query String的方式,即便设置了提交方式是post也会将参数拼接在url的后面,然而url传参是有长度限制的(类似于Get请求),会截断后面的参数,致使请求失败 。
    解决方法:把@RequestParam 的参数全部封装成一个对象,用@RequestBody 方式对该对象进行请求,这样就能解决长度过长的问题。

  3. maven依赖死活都下载不了
    在这里插入图片描述
    解决方法:项目想下载一个依赖,在idea中死都下不了,查看网上各种解决方案都没有效果,使用命令下载导入到maven仓库。先去中央仓库,下好包,使用cmd打开命令行输入。

mvn install:install-file -Dfile=d:\env\logback-kafka-appender-0.2.0-RC2.jar -DgroupId=com.github.danielwegener -DartifactId=logback-kafka-appender -Dversion=0.2.0-RC2 -Dpackaging=jar
  1. 调用Arrays.asList()产生的List中add、remove等方法时报异常
    这是由于Arrays.asList()返回的是Arrays的内部类ArrayList, 而不是java.util.ArrayList。Arrays的内部类ArrayList和java.util.ArrayList都是继承AbstractList,remove、add等方法在AbstractList中是默认throw UnsupportedOperationException而且不作任何操作。java.util.ArrayList重写这些方法而Arrays的内部类ArrayList没有重写,所以会抛出异常。

  2. MySQL 8.0 默认的排序规则为 utf8mb4_0900_ai_ci,使用脚本还原的表的排序规则可能是 utf8mb4_general_ci,之后又自己在库中建的表是 utf8mb4_0900_ai_ci,于是库中存在这两种排序规则,在做关联查询时就会报错。

解决方案
将库中所有表的排序规则改为一致,此处将 utf8mb4_general_ci 批量改为 utf8mb4_0900_ai_ci
生成修改脚本

SELECT 
	CONCAT('ALTER TABLE `', table_name, '` MODIFY `', column_name, '` ', DATA_TYPE, 
        '(', CHARACTER_MAXIMUM_LENGTH, ') CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci', 
        (CASE WHEN IS_NULLABLE = 'NO' THEN ' NOT NULL' ELSE '' END),
        (case when IFNULL(column_comment,'')='' then '' else concat(' COMMENT \'' , column_comment ,'\'') end),
        ';') as `sql`
FROM information_schema.COLUMNS
WHERE 1=1
	and TABLE_SCHEMA = 'LT_PMP_Dev' #要修改的数据库名称
	and DATA_TYPE = 'varchar'
	and COLLATION_NAME='utf8mb4_general_ci'

执行生成的sql语句

19.@Transactional事务注解和切换数据源的自定义注解冲突
Spring的@Transactional注解默认是基于单一数据源的配置。当你试图在同一个事务中切换数据源,Spring会抛出异常,因为它无法保证事务的一致性和隔离性。

核心原理详解

  1. 动态数据源路由机制
    AbstractRoutingDataSource 是 Spring 提供的抽象类
    通过重写 determineCurrentLookupKey() 返回数据源标识
    内部维护 Map 结构存储所有数据源(targetDataSources)

  2. 线程级数据源隔离
    ThreadLocal 特性:
    每个线程独立存储数据副本
    线程结束后自动释放资源
    完美支持 web 请求的线程隔离

java批量复制修改文件参考 Test= null) {@Test= null) { 阅读详情

相关推荐

【Java】JAVA知识总结浅析

Java是一门功能强大的编程语言,广泛应用于多个领域。Java的编程思想,包括面向过程和面向对象编程,Java的发展历史,各版本的特点,JVM原理,数据类型,Java SE与Java EE的区别,应用场景,JDK与JDBC,Java Web技术,Spring Boot系列,以及MyBatis框架的基本实现,最后还将讨论Java在大数据、人工智能、嵌入式和Android等领域的应用。

wnm23的专栏 5231

java批量修改数据库数据

这句sql的意思是,更新display_order 字段,如果id=1 则display_order 的值为3,如果id=2 则 display_order 的值为4,如果id=3 则 display_order 的值为5。确保sql语句仅执行需要修改的行数,这里只有3条数据进行更新,而where子句确保只有3行数据执行。replace into 操作本质是对重复的记录先delete 后insert,如果更新的字段不全会将缺失的字段置为缺省值。一条记录update一次,这样性能很差,也很容易造成阻塞。

2301_78008478的博客 3427

java实现批量修改文件类型(附完整源码)

java实现批量修改文件类型(附完整源码)

希望我的博客,能帮上你解决学习中工作中所遇到的问题 612

java 批处理 大量数据的增删改

java 快速处理超大数据的增删改

qq_40426135的博客 2198

Mac版Burp Suite专业版破解与汉化完整指南

在Web安全测试领域,Java应用程序的许可证验证机制与本地化实现是常见的技术课题。其原理通常涉及Java Agent技术,通过在JVM启动时动态修改字节码,实现对软件授权状态的校验逻辑进行拦截与重写,从而绕过官方验证。同时,软件界面的国际化(i18n)与本地化(l10n)则依赖于资源文件的替换与加载。从技术价值角度看,深入理解这些机制不仅能满足特定场景下的工具定制需求,更能加深对Java安全机制、软件保护与逆向工程的理解。在实际的工程实践中,安全研究人员与开发者常面临功能受限或语言障碍的挑战,尤其是在渗透

weixin_29327525的博客 1044

从选卡到验证:CST仿真GPU加速全流程实战指南

本文详细介绍了CST仿真中GPU加速的全流程实战指南,从硬件选型到软件配置,再到性能验证和常见问题排查。通过对比专业卡与游戏卡的性能差异,提供硬件选型建议,并分享驱动安装、关键设置及CST软件配置的黄金法则,帮助用户显著提升仿真效率。

weixin_30650039的博客 394

Java 9 ← 2017,2019 → Java 13 ,来看看Java两年来的变化

距离 2019 年结束,只剩下 10 几天了。你做好准备迎接 2020 年了吗? 一到年底,人就特别容易陷入回忆和比较之中,比如说这几天, 的对比挑战就火了! 这个话题登上了微博的热搜榜,也刷爆了朋友圈,人们纷纷晒出自己2017和2019的照片对比。 作为一个技术宅,我也做了一个对比: 2017 年 9 月 21 日,Java 9 正式发布,并且在2017年8月,JCP执行委员会提出将J...

HollisChuang's Blog 2万+

机器视觉--线扫相机触发:从原理到选型,构建高效成像方案

本文深入解析线扫相机触发技术,从硬件编码器触发到软件触发方案,提供详细的性能对比和选型指南。通过实际案例展示如何构建高效成像方案,特别适合机器视觉领域需要精准控制的应用场景,如工业检测和自动化生产线。

weixin_42531886的博客 417

Java笔记——Java命令大全

使用jstat命令可以实时查看Java应用程序的性能状况,例如堆内存的使用情况、类加载器的状态、JIT编译器运行时间等重要信息,有助于开发人员及时发现性能问题并进行优化。需要注意的是,jstack命令只能获取Java进程当前的线程信息和调用栈信息,并不能记录历史数据,如果需要跟踪Java进程的历史性能指标,建议使用其他性能分析工具。-source version:指定要编译的Java源代码的版本(例如,-source 8表示使用Java 8的语言功能进行编译)。

a25847a的博客 6579

W5500+STM32F103C8T6进行TCP通信(modbus)

一路生花一、w5500资料二、modbus通信三、从机代码四、总结五、参考 一、w5500资料 w5500的资料就放在下面了,单纯的客户端和其他模式上面有教程 https://www.aliyundrive.com/s/enPnnZgNtpE 二、modbus通信 Modbus RTU通信时使用的数据帧结构如下图,而Moubus TCP通信的数据帧和这个稍微不一样,没有crc检验,因为tcp本就是一种可靠传输协议 这里是Modbus TCP数据帧 公共功能码定义 三、从机代码

junseven164的博客 5778

避坑指南:ESP32S3驱动INMP441麦克风时的常见硬件冲突与解决方案

本文详细解析了ESP32S3驱动INMP441麦克风时常见的硬件冲突问题,包括GPIO资源冲突、电源噪声、I2S时钟同步等,并提供了实用的解决方案和优化策略。通过实测数据和代码示例,帮助开发者快速排查和解决音频设备开发中的疑难问题,提升系统稳定性和音频质量。

embedding5hiker的博客 942

Java 8、Java 11、Java 17和Java 21的比较

从Java 9开始,Oracle引入了新的六个月发布周期。这意味着每年会发布两个新的Java版本。然而,长期支持(LTS)版本——如Java 8、11、17和现在的21——每隔几年发布一次,并且支持时间更长。

qq_28791753的博客 2940

银河麒麟V10系统下VLC播放器安装全攻略(附3.0.9.2版本离线包下载)

本文详细介绍了在银河麒麟V10操作系统无网络环境下,从零开始编译安装VLC 3.0.9.2播放器的完整攻略。通过构建本地YUM仓库解决依赖问题,提供离线资源包下载,并逐步指导完成编译环境配置、软件编译与安装,帮助用户在国产麒麟系统上成功部署强大的多媒体播放能力。

a2b3c4d5e的博客 1212

一文搞懂 Java、Java EE、Java SE 和 Java Web

在学习和使用 Java 编程语言的过程中,我们常常会遇到“Java SE”、“Java EE”、“Java ME”和“Java Web”这些术语。对于很多开发者尤其是新手来说,这些术语可能会显得有些混淆。理解它们的区别和联系对于选择适合的技术栈和提高编程效率非常重要

m0_61118741的博客 3363

基于matlab实现的水果识别系统设计

本项目针对多种常见水果混合的图像,利用 Matlab 软件,对水果的识别进行研究。根据水果和背景的差别选取阈值,对去噪增强对比度后的图像进行二值化处理。再对图像进行边缘检测,选定连通区域,标记后再对不同种水果的颜色,形状,大小等特征进行快速识别水果,从而实现对水果的正确分拣。:水果识别、MATLAB、数字图像处理。

热情、奔放、快乐编程! 4854

踩坑实录:C#上位机YOLOv11从2FPS到45FPS,ONNX Runtime GPU加速全解析

算力迁移:将推理核心从CPU迁移至GPU(核心提速手段);内存复用:避免重复分配/释放内存,减少GC压力;维度固定:工业场景固定输入分辨率,关闭动态维度;资源限制:合理限制GPU/CPU/内存占用,避免资源耗尽;解耦设计:推理线程与UI线程解耦,避免跨线程问题。

这里只有干货:从 Modbus 通信到 MES 对接,从 YOLO 训练到工控机部署,带你搞定工业软件开发全流程。 573

Mac下如何降级Java、卸载Java

前言 安装一些组件或插件时,有时会提示错误: * What went wrong: Could not determine java version from '11'. 查看组件或插件对应的Java版本会发现,可能只支持 Java 8,但本地安装的Java版本不一定能对应。 查看Java版本: #查看版本 java -version #查看安装位置 /usr/libexec/java_home...

专注于技术开发、项目管理 6562

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

现代java,Java 8 到 Java 21特性一览

Java 是一种多功能编程语言,它经历了变革之旅。从 Java 8 开始,令人兴奋的功能改变了开发人员的编码方式。从用于更好功能的漂亮 lambda 表达式到使处理数据更容易的 Stream API,Java 8 改变了游戏规则。我们将查看 Java 21 之前的更新,其中密封类可让您更好地控制类,而记录使创建数据对象变得轻而易举。加入旅程,我将用简单的解释和实际示例分解这些现代 Java 功能。由于这将是一个漫长的旅程,而且文章会很长,我建议将其分成较小的部分以方便您阅读。

周国通的博客 1604

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

Java笔记——Java 初识_java 版本历史

(Java Micro Edition,小型版):支持 Java 程序运行在移动终端(手机,PDA)上的平台,对 Java API 有所精简,并加入了针对移动终端的支持,此版本以前称为 J2ME。JDK 是提供给 Java 开发人员使用的,其中包含了 Java 的开发工具,也包括了 JRE,所以如果安装了 JDK,就不用再单独安装 JRE 了。因为不同的操作系统需要不同的 JVM,而 JVM 又是包含于 JDK 的,因此不同的操作系统就需要安装不同的 JDK。负责执行指令,管理数据,内存,寄存器。

a25847a的博客 1615

Java 进化之路:从 Java 8 到 Java 21 的重要新特性

谁能想到这个1995年诞生的语言,在2023年居然已经更新到Java 21了!看到这里你可能要问:Oracle这更新速度是要逼死开发者吗?不过学新特性这件事…毕竟面试官最爱问这些(手动狗头)这行代码当年让多少开发者感动到流泪(终于不用写冗长的匿名内部类了)(企业级应用建议锁定Java 11/17/21这三个LTS版本)→ “hello”(比trim()更智能的空白处理)(垃圾回收延迟<1ms不是梦!(终于不用写匿名类了!(再也不用第三方库了!游戏服务器和金融系统狂喜。(集合操作从此起飞)

binbinaishijie88的博客 1064

Java、Java SE、Java EE与Java ME之间的区别

Java SE、Java EE和Java ME构成了Java技术的三大支柱。Java SE提供了Java技术的基础,Java EE则在此基础上为企业级应用提供了丰富的功能和API,而Java ME则专注于小型设备和嵌入式系统的应用开发。了解这三者之间的区别和联系,将有助于我们在实际工作中更好地选择和应用Java技术。

m0_61196886的博客 2108

Java笔记——Java注释、Java API文档、Java核心机制

JVM(Java Virtual Machine,Java虚拟机):是一个虚拟的计算机,是Java程序的运行环境。-原理:只要在需要运行Java应用程序的操作系统上,先安装一个Java虚拟机(JVM,Java Virtual Machine)即可。吸收了C/C++语言的优点,但去掉了其影响程序健壮性的部分(如指针、内存的申请和释放等),提供了一个相对安全的内存管理和访问机制。-GC的自动回收,提高了内存空间的利用效率,也提高了编程人员的效率,很大程度上减少了因为没有释放空间而导致的内存泄漏。

a25847a的博客 1079

java天堂,认识Java

一、基本术语简介JVM:(Java Vritual Machine )Java 虚拟机,它也是整个 Java 技术的核心。Java 语言的跨平台就多亏了 JVM。JDK: (Java Development Kit Java) 开发工具包,没有 JDK 就没有办法进行 Java 程序的开发。JRE:(Java Runtime Environment)Java运行环境,如果我们需要运行一个J...

weixin_42131601的博客 4805

Java各版本比较(Java SE、java EE、Java ME)

java是作为长时间流行的语言,在这过程中出现了很多版本,各版本之间又进行的新的派生,导致版本很多,对于初入java的人来说,会产生混乱。

coderge's 优快云 Blog. 4093

Java历史版本官方下载地址(Java 6、Java 7、Java 8)

Java历史版本官方下载地址: 1、Java 7官方下载地址;2、Java 8官方下载地址;

大道至简 16万+
上一篇: Javaweb-学习路线
下一篇: 获取SpringCloud gateway 响应的response的值 乱码
百里 Jess
博客等级 码龄8年 3999粉丝 125原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

百里 Jess

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值