==在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
AI 代码审查Review工具 是一个旨在自动化代码审查流程的工具。它通过集成版本控制系统(如 GitHub 和 GitLab)的 Webhook,利用大型语言模型(LLM)对代码变更进行分析,并将审查意见反馈到相应的 Pull Request 或 Merge Request 中。此外,它还支持将审查结果通知到企业微信等通讯工具。 一个基于 LLM 的自动化代码审查助手。通过 GitHub/GitLab Webhook 监听 PR/MR 变更,调用 AI 分析代码,并将审查意见自动评论到 PR/MR,同时支持多种通知渠道。 主要功能 多平台支持: 集成 GitHub 和 GitLab Webhook,监听 Pull Request / Merge Request 事件。 智能审查模式: 详细审查 (/github_webhook, /gitlab_webhook): AI 对每个变更文件进行分析,旨在找出具体问题。审查意见会以结构化的形式(例如,定位到特定代码行、问题、严重程度、分析和建议)逐条评论到 PR/MR。AI 模型会输出 JSON 格式的分析结果,系统再将其转换为多条独立的评论。 通用审查 (/github_webhook_general, /gitlab_webhook_general): AI 对每个变更文件进行整体性分析,并为每个文件生成一个 Markdown 格式的总结性评论。 自动化流程: 自动将 AI 审查意见(详细模式下为多条,通用模式下为每个文件一条)发布到 PR/MR。 在所有文件审查完毕后,自动在 PR/MR 中发布一条总结性评论。 即便 AI 未发现任何值得报告的问题,也会发布相应的友好提示和总结评论。 异步处理审查任务,快速响应 Webhook。 通过 Redis 防止对同一 Commit 的重复审查。 灵活配置: 通过环境变量设置基
【直流微电网】径向直流微电网的状态空间建模与线性化:一种耦合DC-DC变换器状态空间平均模型的方法 (Matlab代码实现)内容概要:本文介绍了径向直流微电网的状态空间建模与线性化方法,重点提出了一种基于耦合DC-DC变换器的状态空间平均模型的建模策略。该方法通过数学建模手段对直流微电网系统进行精确的状态空间描述,并对其进行线性化处理,以便于系统稳定性分析与控制器设计。文中结合Matlab代码实现,展示了建模与仿真过程,有助于研究人员理解和复现相关技术,推动直流微电网系统的动态性能研究与工程应用。; 适合人群:具备电力电子、电力系统或自动化等相关背景,熟悉Matlab/Simulink仿真工具,从事新能源、微电网或智能电网研究的研究生、科研人员及工程技术人员。; 使用场景及目标:①掌握直流微电网的动态建模方法;②学习DC-DC变换器在耦合条件下的状态空间平均建模技巧;③实现系统的线性化分析并支持后续控制器设计(如电压稳定控制、功率分配等);④为科研论文撰写、项目仿真验证提供技术支持与代码参考。; 阅读建议:建议读者结合Matlab代码逐步实践建模流程,重点关注状态变量选取、平均化处理和线性化推导过程,同时可扩展应用于更复杂的直流微电网拓扑结构中,提升系统分析与设计能力。
内容概要:本文介绍了基于物PINN驱动的三维声波波动方程求解(Matlab代码实现)理信息神经网络(PINN)求解三维声波波动方程的Matlab代码实现方法,展示了如何利用PINN技术在无需大量标注数据的情况下,结合物理定律约束进行偏微分方程的数值求解。该方法将神经网络与物理方程深度融合,适用于复杂波动问题的建模与仿真,并提供了完整的Matlab实现方案,便于科研人员理解和复现。此外,文档还列举了多个相关科研方向和技术服务内容,涵盖智能优化算法、机器学习、信号处理、电力系统等多个领域,突出其在科研仿真中的广泛应用价值。; 适合人群:具备一定数学建模基础和Matlab编程能力的研究生、科研人员及工程技术人员,尤其适合从事计算物理、声学仿真、偏微分方程数值解等相关领域的研究人员; 使用场景及目标:①学习并掌握PINN在求解三维声波波动方程中的应用原理与实现方式;②拓展至其他物理系统的建模与仿真,如电磁场、热传导、流体力学等问题;③为科研项目提供可复用的代码框架和技术支持参考; 阅读建议:建议读者结合文中提供的网盘资源下载完整代码,按照目录顺序逐步学习,重点关注PINN网络结构设计、损失函数构建及物理边界条件的嵌入方法,同时可借鉴其他案例提升综合仿真能力。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值