首页 文章 精选 留言 我的

精选列表

搜索[Java],共10000篇文章
优秀的个人博客,低调大师

Java上传csv文件踩坑记

前言 最近在做交通优化分析工具的产品时,有一个需求是用户上传一份包含路段信息的csv文件,后端需要解析csv的文件内容并将信息插入数据库中。这是一个常规的操作,也不复杂,但是在实现的过程中却踩到了一个utf-8 BOM的坑,随手记录一下。 实现方式 完整的实现方式如下: 在spring中通过MultipartFile file这个对象来接受前端传过来的文件 获取file对象的InputStream输入流 将上一步的输入流和定义好的DTO对象传给opencsv的CsvToBeanBuilder方法, CsvToBeanBuilder方法会自动解析输入流中的内容并生成对应的DTO List 最后根据业务需求,生成相应的DO对象存入数据库 前面有坑 csv文件样例: path_id,path_name 1,文一路 2,文二路 DTO定义: @Data publ

优秀的个人博客,低调大师

Java常用命令之jstat

jstat命令可以查看堆内存各部分的使用量,以及加载类的数量。 jstat -options查看可用参数如下 [root@localhost servers]# jstat -options option -class -compiler -gc -gccapacity -gccause -gcmetacapacity -gcnew -gcnewcapacity -gcold -gcoldcapacity -gcutil -printcompilation jstat -class 用于查看类加载信息 Loaded Bytes Unloaded Bytes Time 12408 22663.9 0 0.0 11.13 12408 22663.9 0 0.0 11.13 12408 22663.9 0 0.0 11.13 12408 22663.9 0 0.0 11.13 Loaded 加载类的数量 Bytes 加载类合计大小 Unloaded 卸载类的数量 Bytes 卸载类合计大小 Time 表示加载和卸载类总共的耗时 jstat -compiler 用于编绎统计 Compiled Failed Invalid Time FailedType FailedMethod 14276 2 0 54.43 1 com/mysql/jdbc/AbandonedConnectionCleanupThread run Compiled:编译数量。 Failed:失败数量 Invalid:不可用数量 Time:时间 FailedType:失败类型 FailedMethod:失败的方法 jstat -gc 查看gc信息 jstat -gc 16002 S0C S1C S0U S1U EC EU OC OU MC MU CCSC CCSU YGC YGCT FGC FGCT GCT 512.0 512.0 0.0 320.0 173568.0 82801.1 349696.0 92495.3 72192.0 69136.8 8704.0 8192.9 687 8.424 3 0.408 8.832 S0C:第一个幸存区的大小 S1C:第二个幸存区的大小 S0U:第一个幸存区的使用大小 S1U:第二个幸存区的使用大小 EC:伊甸园区的大小 EU:伊甸园区的使用大小 OC:老年代大小 OU:老年代使用大小 MC:方法区大小 MU:方法区使用大小 CCSC:压缩类空间大小 CCSU:压缩类空间使用大小 YGC:年轻代垃圾回收次数 YGCT:年轻代垃圾回收消耗时间 FGC:老年代垃圾回收次数 FGCT:老年代垃圾回收消耗时间 GCT:垃圾回收消耗总时间

优秀的个人博客,低调大师

Beetl 3.0.11 版本发布,Java 模板引擎

本次发布增加按照社区要求增加了一些类似JSTL的标签函数,内置如下html标签 TAG.html.include= org.beetl.ext.tag.html.IncludeResourceHtmlTag TAG.html.layout= org.beetl.ext.tag.html.LayoutResourceHtmlTag TAG.html.set= org.beetl.ext.tag.html.SetHtmlTag TAG.html.if= org.beetl.ext.tag.html.IfHtmlTag TAG.html.foreach= org.beetl.ext.tag.html.ForeachHtmlTag 如下例子 <#html:include file="" arg1="" arg2="" /> include包含file属性指名一个模板路径,后面若干属性可选,会在子模板里引用 <#html:layout parent="" args1 arg2=""> ....... </#html:layout> 同layout标签函数,包含必须的parent,指明布局模板路径 html:set, 使用export 设置一个变量名,在此后可以使用此变量名引用这个变量(export和var的区别,前者申明的变量可以在模板后面是使用,而var只能在标签体使用) <#html:set value="${usere.age+1}" export="age"/> html:if,包含test用于测试条件是否为真,如果为真,执行标签体 <#html:if test="${condtion}"> ..... </#html:if> html:foreach,通过items申明要循环的变量,通过var申明循环元素的名称,可以申明一个状态,这个与for循环一样,是一个ILoopStatus对象 <#html:foreach items="${xxx}" var="item"> ${item} </#html:foreach> <#html:foreach items="${xxx}" var="item,status"> ${status.index}--${item} </#html:foreach> Maven <dependency> <groupId>com.ibeetl</groupId> <artifactId>beetl</artifactId> <version>3.0.11.RELEASE</version> </dependency> Beetl 在线使用体验http://ibeetl.com/beetlonline/ Beetl 模板(文本处理)引擎功能齐全,使用体验优秀,具备许多创新功能和实现。也是当今世界跑的最快的模板引擎,从 JDK6以来,有一些新生代模板引擎诞生,Beetl 仍然是性能王者,如下是一个性 JMH 能测试结果,来自template-benchmark

优秀的个人博客,低调大师

浅谈Java多线程与并发原理

前序 线程安全问题的主要诱因 存在共享数据(也称临界资源) 存在多条线程共同操作这些共享数据 解决方法:同一时刻有且只有一个线程在操作共享数据,其他线程必须等到该线程处理完数据后再对共享数据进行操作 互斥锁的特征 互斥性:即在同一时间只允许一个线程持有某个对象锁,通过这种特性来实现多线程协调机制,这样在同一时间只有一个线程对需要同步的代码块(复合操作)进行访问。互斥性也称为操作的原子性。可见性:必须确保在锁被释放之前,对共享变量所做的修改,对于随后获得该锁的另一个线程是可见的(即在获得锁时应该获得最新共享变量的值),否则另一个线程可能是在本地缓存的某个副本上继续操作,从而引起不一致。注:synchronized 锁的不是代码,锁的是对象 获取锁的分类:获取对象锁、获取类锁 获取对象锁的两种用法: 同步代码块(synchronized(this),s

资源下载

更多资源
Nacos

Nacos

Nacos /nɑ:kəʊs/ 是 Dynamic Naming and Configuration Service 的首字母简称,一个易于构建 AI Agent 应用的动态服务发现、配置管理和AI智能体管理平台。Nacos 致力于帮助您发现、配置和管理微服务及AI智能体应用。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据、流量管理。Nacos 帮助您更敏捷和容易地构建、交付和管理微服务平台。

Spring

Spring

Spring框架(Spring Framework)是由Rod Johnson于2002年提出的开源Java企业级应用框架,旨在通过使用JavaBean替代传统EJB实现方式降低企业级编程开发的复杂性。该框架基于简单性、可测试性和松耦合性设计理念,提供核心容器、应用上下文、数据访问集成等模块,支持整合Hibernate、Struts等第三方框架,其适用范围不仅限于服务器端开发,绝大多数Java应用均可从中受益。

Rocky Linux

Rocky Linux

Rocky Linux(中文名:洛基)是由Gregory Kurtzer于2020年12月发起的企业级Linux发行版,作为CentOS稳定版停止维护后与RHEL(Red Hat Enterprise Linux)完全兼容的开源替代方案,由社区拥有并管理,支持x86_64、aarch64等架构。其通过重新编译RHEL源代码提供长期稳定性,采用模块化包装和SELinux安全架构,默认包含GNOME桌面环境及XFS文件系统,支持十年生命周期更新。

Sublime Text

Sublime Text

Sublime Text具有漂亮的用户界面和强大的功能,例如代码缩略图,Python的插件,代码段等。还可自定义键绑定,菜单和工具栏。Sublime Text 的主要功能包括:拼写检查,书签,完整的 Python API , Goto 功能,即时项目切换,多选择,多窗口等等。Sublime Text 是一个跨平台的编辑器,同时支持Windows、Linux、Mac OS X等操作系统。

用户登录
用户注册