==在Integer中和String类中的使用问题

本文详细解析了Java中Integer和String类在引用和缓存方面的特性,包括堆和栈的区别,Integer缓存机制以及String pool的作用。
双等于号在Integer中和String类中的使用问题
/**
* Java中new出来的东西存放在heap中,==是判断两个对象的引用是否相同
* 局部变量存放在Stack中,Integer t1等用于存放new出来的东西的引用地址
*/
public static void testInteger(){
System.out.println("======双等于号在Integer中的使用========");
Integer t1 = new Integer(5);
Integer t2 = new Integer(5);
System.out.println(t1==t2);
Integer t3 = 5;//Integer对象中IntegerCache缓存对象,缓存了-128-127的数
Integer t4 = 5;//从缓存中拿到同一个
System.out.println(t3==t4);
Integer t5 = 128;//超出了IntegerCache缓存的界限,需要自动装包成新的对象
Integer t6 = 128;
System.out.println(t5==t6);
System.out.println("=============比较字符串=========");
//String中有个String pool池对象:如果字符串已经存在,则直接拿出来指向stack
//不存在,则创建一个新的String对象
String s1 = "hello";
String s2 = "hello";//已经存在,直接拿取
System.out.println(s1==s2);
String s3 = new String("hello");//new出来的对象,分配新的内存引用
String s4 = new String("hello");
System.out.println(s3==s4);
String s5 = "hello";//创建一个
String s6 = new String("hello");//创建另外一个
System.out.println(s5==s6);
}
Integer类中有一个Integer缓存对象IntegerCache class
private static class IntegerCache {
        static final int low = -128;
        static final int high;
        static final Integer cache[];
        static {
            // high value may be configured by property
            int h = 127;
            String integerCacheHighPropValue =
                sun.misc.VM.getSavedProperty("java.lang.Integer.IntegerCache.high");
            if (integerCacheHighPropValue != null) {
                int i = parseInt(integerCacheHighPropValue);
                i = Math.max(i, 127);
                // Maximum array size is Integer.MAX_VALUE
                h = Math.min(i, Integer.MAX_VALUE - (-low));
            }
            high = h;


            cache = new Integer[(high - low) + 1];
            int j = low;
            for(int k = 0; k < cache.length; k++)
                cache[k] = new Integer(j++);
        }


        private IntegerCache() {}
    }
创建学生课程表(多对多),两张表,一个学生可以上多个课程,一个课程包含多个学生。 使用列限定符来标识课程号以及学生id。 在关系数据库中和在hbase中的表设计       使用filter查询:             1.根据学号student_id查询学生选课编号course_id和名称title             2.根据课程号course_id查询选课学生学号student_id和姓名name             3.根据教员号teacher_id查询该教员所上课程编号course_id和名称title             4.上课最多的学生             5.上课最少的学生 1. 创建表 import java.io.IOException; import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.hbase.HBaseConfiguration; import org.apache.hadoop.hbase.HColumnDescriptor; import org.apache.hadoop.hbase.HTableDescriptor; import org.apache.hadoop.hbase.MasterNotRunningException; import org.apache.hadoop.hbase.ZooKeeperConnectionException; import org.apache.hadoop.hbase.client.HBaseAdmin; import org.apache.hadoop.hbase.client.HTable; import org.apache.hadoop.hbase.client.Put; import org.apache.hadoop.hbase.util.Bytes; public class Student_Course { static Configuration configuration = HBaseConfiguration.create(); public static void main(String[] args) throws IOException { createTable("student", "info", "course"); createTable("course", "info", "student"); int age=(int)( Math.random()*10+10); for(int i=0;i<10;i++){ insertData("student", "s"+i, "info", "name", "name"+i); insertData("student", "s"+i, "info", "age", "20"); insertData("student", "s"+i, "info", "sex", ""+age); for(int j=0;j<=(int)( Math.random()*9+1);j++){ int x=(int)( Math.random()*10); insertData("student", "s"+i, "course", "c"+x, "course"+x); } } for(int k=0;k<10;k++){ insertData("course", "c"+k, "info", "tittle", "tittle"+k); insertData("course", "c"+k, "info", "introduction", "intro"+k); insertData("course", "c"+k, "info", "techear", "teacher"+k); for(int j=0;j<=(int)( Math.random()*9+1);j++){ int x=(int)( Math.random()*10); insertData("course", "c"+k, "student", "s"+x, "student"+x); } } } @SuppressWarnings({ "deprecation", "resource" }) public static void createTable(String tableName,String family1,String family2) { System.out.println("start create table ......"); try { HBaseAdmin hBaseAdmin = new HBaseAdmin(configuration); if (hBaseAdmin.tableExists(tableName)) {// 如果存在要创建的表,那么先删除,再创建 hBaseAdmin.disableTable(tableName); hBaseAdmin.deleteTable(tableName); System.out.println(tableName + " is exist,detele...."); } HTableDescriptor tableDescriptor = new HTableDescriptor(tableName); tableDescriptor.addFamily(new HColumnDescriptor(family1)); tableDescriptor.addFamily(new HColumnDescriptor(family2)); hBaseAdmin.createTable(tableDescriptor); } catch (MasterNotRunningException e) { e.printStackTrace(); } catch (ZooKeeperConnectionException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } System.out.println("end create table ......"); } @SuppressWarnings({ "deprecation", "resource" }) public static void insertData(String tablename, String row, String columnFamily, String column, String data) throws IOException { HTable table = new HTable(configuration, tablename); Put p1 = new Put(Bytes.toBytes(row)); p1.add(Bytes.toBytes(columnFamily), Bytes.toBytes(column), Bytes.toBytes(data)); table.put(p1); System.out.println("put'" + row + "','" + columnFamily + ":" + column + "','" + data + "'"); } } AI写代码 java 运行 2. 查询 import java.io.IOException; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.hbase.HBaseConfiguration; import org.apache.hadoop.hbase.KeyValue; import org.apache.hadoop.hbase.client.Get; import org.apache.hadoop.hbase.client.HTable; import org.apache.hadoop.hbase.client.Result; import org.apache.hadoop.hbase.client.ResultScanner; import org.apache.hadoop.hbase.client.Scan; import org.apache.hadoop.hbase.filter.BinaryComparator; import org.apache.hadoop.hbase.filter.CompareFilter; import org.apache.hadoop.hbase.filter.Filter; import org.apache.hadoop.hbase.filter.RowFilter; import org.apache.hadoop.hbase.filter.SubstringComparator; import org.apache.hadoop.hbase.filter.ValueFilter; import org.apache.hadoop.hbase.util.Bytes; public class Stu_Cour_Filter { static Configuration conf = HBaseConfiguration.create(); static String stableName="student"; static String ctableName="course"; public static void main(String[] args) throws IOException { Stu_id_Cour_id_tit("s1"); Cour_id_Ttu_id_name("c0"); Tea_id_Cour_tit("teacher4"); More_Class_Stu(); Less_Class_stu(); } // 根据学号student_id查询学生选课编号course_id和名称title public static void Stu_id_Cour_id_tit(String stuid) throws IOException{ HTable stable=new HTable(conf, stableName); HTable ctable=new HTable(conf, ctableName); List<String> courseid=new ArrayList<String>(); Scan scan=new Scan(); System.out.println("scan student通过id查找.........................................................."); Filter filter=new RowFilter(CompareFilter.CompareOp.EQUAL, new BinaryComparator(Bytes.toBytes(stuid))); scan.setFilter(filter); ResultScanner resultScanner=stable.getScanner(scan); for (Result result : resultScanner) { // System.out.println(result); for (KeyValue keyValue : result.raw()) { String courfamilier=new String(keyValue.getFamily()); // System.out.println(courfamilier); if(courfamilier.equals("course")){ System.out.println("列:" + new String(keyValue.getFamily()) +"===列限定符"+new String(keyValue.getQualifier()) + "====值:" + new String(keyValue.getValue())); String courQualifier=new String(keyValue.getQualifier()); courseid.add(courQualifier); } } } resultScanner.close(); System.out.println("courseid 该学生选的课程有:"+courseid); System.out.println("scan course 课程名称..........................................................."); for (int i = 0; i < courseid.size(); i++) { System.out.println("课程号:"+courseid.get(i)); Filter filter2=new RowFilter(CompareFilter.CompareOp.EQUAL, new BinaryComparator(Bytes.toBytes(courseid.get(i)))); scan.setFilter(filter2); ResultScanner resultScanner2=ctable.getScanner(scan); for (Result result : resultScanner2) { // System.out.println(result); for (KeyValue keyValue : result.raw()) { if(new String(keyValue.getQualifier()).equals("tittle")){ System.out.println("====值:" + new String(keyValue.getValue())); } } } resultScanner.close(); } } // 根据课程号course_id查询选课学生学号student_id和姓名name public static void Cour_id_Ttu_id_name(String courid) throws IOException{ HTable stable=new HTable(conf, stableName); HTable ctable=new HTable(conf, ctableName); List<String> studentid=new ArrayList<String>(); Scan scan=new Scan(); System.out.println("scan course通过id查找.........................................................."); Filter filter=new RowFilter(CompareFilter.CompareOp.EQUAL, new BinaryComparator(Bytes.toBytes(courid))); scan.setFilter(filter); ResultScanner resultScanner=ctable.getScanner(scan); for (Result result : resultScanner) { // System.out.println(result); for (KeyValue keyValue : result.raw()) { String courfamilier=new String(keyValue.getFamily()); // System.out.println(courfamilier); if(courfamilier.equals("student")){ System.out.println("列:" + new String(keyValue.getFamily()) +"===列限定符"+new String(keyValue.getQualifier()) + "====值:" + new String(keyValue.getValue())); String courQualifier=new String(keyValue.getQualifier()); studentid.add(courQualifier); } } } resultScanner.close(); System.out.println("courseid 该学生选的课程有:"+studentid); System.out.println("scan course 课程名称..........................................................."); for (int i = 0; i < studentid.size(); i++) { System.out.println("课程号:"+studentid.get(i)); Filter filter2=new RowFilter(CompareFilter.CompareOp.EQUAL, new BinaryComparator(Bytes.toBytes(studentid.get(i)))); scan.setFilter(filter2); ResultScanner resultScanner2=stable.getScanner(scan); for (Result result : resultScanner2) { // System.out.println(result); for (KeyValue keyValue : result.raw()) { if(new String(keyValue.getQualifier()).equals("name")){ System.out.println("====值:" + new String(keyValue.getValue())); } } } resultScanner.close(); } } // 根据教员号teacher_id查询该教员所上课程编号course_id和名称title @SuppressWarnings("deprecation") public static void Tea_id_Cour_tit(String teacherid) throws IOException{ // HTable stable = new HTable(conf, stableName); HTable ctable = new HTable(conf, ctableName); List<String> plist = new ArrayList<String>(); String teacher=""; Filter filter = new ValueFilter(CompareFilter.CompareOp.EQUAL, new SubstringComparator(teacherid)); Scan scan = new Scan(); scan.setFilter(filter); ResultScanner resultScanner = ctable.getScanner(scan); for (Result result : resultScanner) { System.out.println("pro rowkey:" + new String(result.getRow())); teacher=new String(result.getRow()); for (KeyValue keyValue : result.raw()) { System.out.println( " 列:" + new String(keyValue.getQualifier()) + ",值:" + new String(keyValue.getValue())); } } resultScanner.close(); Filter filter2=new RowFilter(CompareFilter.CompareOp.EQUAL, new BinaryComparator(Bytes.toBytes(teacher))); scan.setFilter(filter2); ResultScanner resultScanner2=ctable.getScanner(scan); for (Result result : resultScanner2) { // System.out.println(result); for (KeyValue keyValue : result.raw()) { if(new String(keyValue.getQualifier()).equals("tittle")){ System.out.println("====值:" + new String(keyValue.getValue())); } } } resultScanner.close(); } // 上课最多的学生 @SuppressWarnings({ "unchecked", "unused" }) public static void More_Class_Stu() throws IOException{ HTable stable=new HTable(conf, stableName); HTable ctable=new HTable(conf, ctableName); List<String> studentidlist=new ArrayList<String>(); int num=0; String studentid=""; Scan scan = new Scan(); ResultScanner resultScanner = stable.getScanner(scan); for (Result result : resultScanner) { // System.out.println(result); studentidlist.add(new String(result.getRow())); int tempnum=0; for (KeyValue keyValue : result.raw()) { if(new String(keyValue.getFamily()).equals("course")){ tempnum++; } } if(tempnum>num){ num=tempnum; } } System.out.println("stuidlist:"+studentidlist); System.out.println("morenum:"+num); System.out.println("scan studernt通过id查找.........................................................."); Map<String, Integer> coursecount= new HashMap<String,Integer>(); for (String stuid : studentidlist) { Get get=new Get(Bytes.toBytes(stuid)); get.addFamily(Bytes.toBytes("course")); Result result=stable.get(get); int count=0; for(KeyValue keyValue:result.raw()){ count++; } coursecount.put(stuid, count); } for(Map.Entry<String, Integer> entry:coursecount.entrySet()){ if(num==entry.getValue()){ studentid=entry.getKey(); System.out.println("上课最多的学生为:"+studentid+",上了"+num+"门课。"); } } // Filter filter=new RowFilter(CompareFilter.CompareOp.EQUAL, // new BinaryComparator(Bytes.toBytes(courid))); // scan.setFilter(filter); // ResultScanner resultScanner=ctable.getScanner(scan); // for (Result result : resultScanner) { // System.out.println(result); // for (KeyValue keyValue : result.raw()) { // // String courfamilier=new String(keyValue.getFamily()); // System.out.println(courfamilier); // if(courfamilier.equals("student")){ // System.out.println("列:" + new String(keyValue.getFamily()) // +"===列限定符"+new String(keyValue.getQualifier()) // + "====值:" + new String(keyValue.getValue())); // String courQualifier=new String(keyValue.getQualifier()); // studentid.add(courQualifier); // } // } // } // resultScanner.close(); // System.out.println("courseid 该学生选的课程有:"+studentid); } // 上课最少的学生 public static void Less_Class_stu() throws IOException{ HTable stable=new HTable(conf, stableName); HTable ctable=new HTable(conf, ctableName); List<String> studentidlist=new ArrayList<String>(); int num=0; String studentid=""; Scan scan = new Scan(); ResultScanner resultScanner = stable.getScanner(scan); for (Result result : resultScanner) { // System.out.println(result); studentidlist.add(new String(result.getRow())); int tempnum=0; for (KeyValue keyValue : result.raw()) { if(new String(keyValue.getFamily()).equals("course")){ tempnum++; } } num=tempnum; } ResultScanner resultScanner2 = stable.getScanner(scan); for (Result result : resultScanner2) { // System.out.println(result); // studentidlist.add(new String(result.getRow())); int tempnum=0; for (KeyValue keyValue : result.raw()) { if(new String(keyValue.getFamily()).equals("course")){ tempnum++; } } if(tempnum<num){ num=tempnum; } } System.out.println("stuidlist:"+studentidlist); System.out.println("lessnum:"+num); System.out.println("scan studernt通过id查找.........................................................."); Map<String, Integer> coursecount= new HashMap<String,Integer>(); for (String stuid : studentidlist) { Get get=new Get(Bytes.toBytes(stuid)); get.addFamily(Bytes.toBytes("course")); Result result=stable.get(get); int count=0; for(KeyValue keyValue:result.raw()){ count++; } coursecount.put(stuid, count); } for(Map.Entry<String, Integer> entry:coursecount.entrySet()){ // lessnum=entry.getValue(); if(num==entry.getValue()){ // number=entry.getValue(); studentid=entry.getKey(); System.out.println("上课最少的学生为:"+studentid+",上了"+num+"门课。"); } } } }详细的教我怎么重新配置
06-24
内容概要:本文介绍了一个基于多传感器融合的定位系统设计方案,采用GPS、里程计和电子罗盘作为定位传感器,利用扩展卡尔曼滤波(EKF)算法对多源传感器数据进行融合处理,最终输出目标的滤波后位置信息,并提供了完整的Matlab代码实现。该方法有效提升了定位精度与稳定性,尤其适用于存在单一传感器误差或信号丢失的复杂环境,如自动驾驶、移动采用GPS、里程计和电子罗盘作为定位传感器,EKF作为多传感器的融合算法,最终输出目标的滤波位置(Matlab代码实现)机器人导航等领域。文中详细阐述了各传感器的数据建模方式、状态转移与观测方程构建,以及EKF算法的具体实现步骤,具有较强的工程实践价值。; 适合人群:具备一定Matlab编程基础,熟悉传感器原理和滤波算法的高校研究生、科研人员及从事自动驾驶、机器人导航等相关领域的工程技术人员。; 使用场景及目标:①学习和掌握多传感器融合的基本理论与实现方法;②应用于移动机器人、无人车、无人机等系统的高精度定位与导航开发;③作为EKF算法在实际工程中应用的教学案例或项目参考; 阅读建议:建议读者结合Matlab代码逐行理解算法实现过程,重点关注状态预测与观测更新模块的设计逻辑,可尝试引入真实传感器数据或仿真噪声环境以验证算法鲁棒性,并进一步拓展至UKF、PF等更高级滤波算法的研究与对比。
内容概要:文章围绕智能汽车新一代传感器的发展趋势,重点阐述了BEV(鸟瞰图视角)端到端感知融合架构如何成为智能驾驶感知系统的新范式。传统后融合与前融合方案因信息丢失或算力需求过高难以满足高阶智驾需求,而基于Transformer的BEV融合方案通过统一坐标系下的多源传感器特征融合,在保证感知精度的同时兼顾算力可行性,显著提升复杂场景下的鲁棒性与系统可靠性。此外,文章指出BEV模型落地面临大算力依赖与高数据成本的挑战,提出“数据采集-模型训练-算法迭代-数据反哺”的高效数据闭环体系,通过自动化标注与长尾数据反馈实现算法持续进化,降低对人工标注的依赖,提升数据利用效率。典型企业案例进一步验证了该路径的技术可行性与经济价值。; 适合人群:从事汽车电子、智能驾驶感知算法研发的工程师,以及关注自动驾驶技术趋势的产品经理和技术管理者;具备一定自动驾驶基础知识,希望深入了解BEV架构与数据闭环机制的专业人士。; 使用场景及目标:①理解BEV+Transformer为何成为当前感知融合的主流技术路线;②掌握数据闭环在BEV模型迭代中的关键作用及其工程实现逻辑;③为智能驾驶系统架构设计、传感器选型与算法优化提供决策参考; 阅读建议:本文侧重技术趋势分析与系统级思考,建议结合实际项目背景阅读,重点关注BEV融合逻辑与数据闭环构建方法,并可延伸研究相关企业在舱泊一体等场景的应用实践。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值