【Java 基础篇】Java Map 详解
Map接口是一个键值对的集合,它继承自Collection接口中的size()和isEmpty()等方法,同时还提供了根据键查找值的方法,以及添加、删除和更新键值对的方法。在Java中,Map接口有几个常见的实现类,每个实现类都具有不同的性能和用途。
HashMap:基于哈希表实现,具有快速的查找和插入操作,适用于需要快速查找键值对的场景。
TreeMap:基于红黑树实现,可以对键进行排序,并提供了一系列与排序相关的方法,适用于需要对键进行排序的场景。
LinkedHashMap:基于哈希表和链表实现,保持键值对的插入顺序,适用于需要保持插入顺序的场景。
Java中Map接口存取的有序和无序
HashMap和ConcurrenthashMap键的顺序和keys数组的顺序不一样,也就是插入和读取的顺序不一样;LinkedHashMap是一致的;TreeMap则对键进行了自然排序。
View DetailsJSON.toJSONString时保留null值
private static final SerializerFeature[] serializerFeatures;
static {
serializerFeatures = new SerializerFeature[] {
SerializerFeature.WriteMapNullValue,
SerializerFeature.WriteNullListAsEmpty
};
}
Java中的雪花算法(Snowflake)解析与实践
雪花算法是分布式系统ID生成的经典解决方案,Java实现需要注意:
合理分配各部分的位数
完善时钟回拨处理机制
设计可靠的WorkerId分配方案
根据业务特点进行定制优化
对于超高并发场景,可以考虑结合号段模式或使用改进版算法如Leaf。实际应用中应建立完善的监控体系,确保ID生成服务的稳定性。
View DetailsBigDecimal 比较大小
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"); }
View DetailsMac系统安装多版本 PHP,低版本 PHP
brew tap shivammathur/php
brew search php
brew install shivammathur/php/php@5.6
brew install brew-php-switcher
brew-php-switcher 7.3
MacOS安装nvm实现多Node版本管理和自由切换
虽然可以通过Homebrew安装nvm,但官方推荐使用 nvm 的安装脚本来安装。这是因为Homebrew安装的nvm可能在配置方面稍有不同。
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.4/install.sh | bash
一文搞定POI,再也不怕excel导入导出了
下面是excel导入导出的几个最常用的使用场景:
①企业管理系统:企业管理系统通常需要导入员工信息、客户信息、销售数据等大量数据到系统中,以及导出报表、数据分析结果等信息。
②学校教务系统:学校教务系统可能需要导入学生信息、课程表、成绩等数据,以及导出学生成绩单、教师工资表等信息。
③电子商务平台:电子商务平台需要导入商品信息、订单数据等内容,以及导出销售报表、库存清单等信息,方便管理和分析。
④ 人力资源管理系统:人力资源管理系统需要导入员工档案、薪资信息等数据,以及导出薪资条、考勤报表等信息,方便人力资源管理和工资结算。
⑤ 医院信息系统:医院信息系统可能需要导入患者信息、医疗记录等数据,以及导出医疗报告、统计分析等信息,方便医护人员进行医疗服务和管理。
使用docker 来部署 gitlab社区版并解决gitlab内存过高的问题
vim /home/gitlab-ce/home/config/gitlab.rb
减少数据库缓存
postgresql['shared_buffers'] = "64MB"
减少数据库并发数
postgresql['max_worker_processes'] = 1
减少sidekiq并发数
sidekiq['concurrency'] = 1
nginx['worker_processes'] = 2
禁用prometheus
prometheus_monitoring['enable'] = false
Java POI导出Excel时设置指定列为文本格式
|
1 2 3 4 5 |
// 快递单号列设置为文本格式 CellStyle style = workbook.createCellStyle(); XSSFDataFormat format = workbook.createDataFormat(); style.setDataFormat(format.getFormat("@")); sheet.setDefaultColumnStyle(17, style); |
View Details