cs186-2

【cs186】Project2 B+Tree cs186 Project2 B+tree 阅读详情

这里写图片描述
我一般不把他写的todo去掉,万一以后改防止改错了。前两个主要实现filter方法,因为后面要用
先放上Predicate.java

package simpledb;
import java.io.Serializable;

/**
 * Predicate compares tuples to a specified Field value.
 */
public class Predicate implements Serializable {

    private static final long serialVersionUID = 1L;

    int field;
    Op op;
    Field operand;
    /** Constants used for return codes in Field.compare */
    public enum Op implements Serializable {
        EQUALS, GREATER_THAN, LESS_THAN, LESS_THAN_OR_EQ, GREATER_THAN_OR_EQ, LIKE, NOT_EQUALS;

        /**
         * Interface to access operations by a string containing an integer
         * index for command-line convenience.
         * 
         * @param s
         *            a string containing a valid integer Op index
         */
        public static Op getOp(String s) {
            return getOp(Integer.parseInt(s));
        }

        /**
         * Interface to access operations by integer value for command-line
         * convenience.
         * 
         * @param i
         *            a valid integer Op index
         */
        public static Op getOp(int i) {
            return values()[i];
        }

        public String toString() {
            if (this == EQUALS)
                return "=";
            if (this == GREATER_THAN)
                return ">";
            if (this == LESS_THAN)
                return "<";
            if (this == LESS_THAN_OR_EQ)
                return "<=";
            if (this == GREATER_THAN_OR_EQ)
                return ">=";
            if (this == LIKE)
                return "like";
            if (this == NOT_EQUALS)
                return "<>";
            throw new IllegalStateException("impossible to reach here");
        }
    }

    /**
     * Constructor.
     * 
     * @param field
     *            field number of passed in tuples to compare against.
     * @param op
     *            operation to use for comparison
     * @param operand
     *            field value to compare passed in tuples to
     */
    public Predicate(int field, Op op, Field operand) {
        // some code goes here
        this.field = field;
        this.op = op;
        this.operand = operand;
    }

    /**
     * @return the field number
     */
    public int getField()
    {
        // some code goes here
        return field;
    }

    /**
     * @return the operator
     */
    public Op getOp()
    {
        // some code goes here
        return op;
    }

    /**
     * @return the operand
     */
    public Field getOperand()
    {
        // some code goes here
        return operand;
    }

    /**
     * Compares the field number of t specified in the constructor to the
     * operand field specified in the constructor using the operator specific in
     * the constructor. The comparison can be made through Field's compare
     * method.
     * 
     * @param t
     *            The tuple to compare against
     * @return true if the comparison is true, false otherwise.
     */
    public boolean filter(Tuple t) {
        // some code goes here



        return t.getField(field).compare(op,operand);
    }

    /**
     * Returns something useful, like "f = field_id op = op_string operand =
     * operand_string
     */
    public String toString() {

        return ""+"field = "+field+" op = "+op.toString()+" operand"+operand.toString();
    }
}

再放上JoinPredicate

package simpledb;

import java.io.Serializable;

/**
 * JoinPredicate compares fields of two tuples using a predicate. JoinPredicate
 * is most likely used by the Join operator.
 */
public class JoinPredicate implements Serializable {

    private static final long serialVersionUID = 1L;
    Predicate.Op op;
    int field1;
    int field2;

    /**
     * Constructor -- create a new predicate over two fields of two tuples.
     * 
     * @param field1
     *            The field index into the first tuple in the predicate
     * @param field2
     *            The field index into the second tuple in the predicate
     * @param op
     *            The operation to apply (as defined in Predicate.Op); either
     *            Predicate.Op.GREATER_THAN, Predicate.Op.LESS_THAN,
     *            Predicate.Op.EQUAL, Predicate.Op.GREATER_THAN_OR_EQ, or
     *            Predicate.Op.LESS_THAN_OR_EQ
     * @see Predicate
     */
    public JoinPredicate(int field1, Predicate.Op op, int field2) {
        // some code goes here
        this.field1 = field1;
        this.field2 = field2;
        this.op = op;
    }

    /**
     * Apply the predicate to the two specified tuples. The comparison can be
     * made through Field's compare method.
     * 
     * @return true if the tuples satisfy the predicate.
     */
    public boolean filter(Tuple t1, Tuple t2) {
        // some code goes here
        return t1.getField(field1).compare(op,t2.getField(field2));
    }

    public int getField1()
    {
        // some code goes here
        return field1;
    }

    public int getField2()
    {
        // some code goes here
        return field2;
    }

    public Predicate.Op getOperator()
    {
        // some code goes here
        return op;
    }
}

Filter.java

package simpledb;

import java.util.*;

/**
 * Filter is an operator that implements a relational select.
 */
public class Filter extends Operator {

    private static final long serialVersionUID = 1L;
    Predicate p;
    DbIterator child;



    /**
     * Constructor accepts a predicate to apply and a child operator to read
     * tuples to filter from.
     * 
     * @param p
     *            The predicate to filter tuples with
     * @param child
     *            The child operator
     */
    public Filter(Predicate p, DbIterator child) {
        // some code goes here
        this.p = p;
        this.child = child;
    }

    public Predicate getPredicate() {
        // some code goes here
        return p;
    }

    public TupleDesc getTupleDesc() {
        // some code goes here
        return child.getTupleDesc();
    }

    public void open() throws DbException, NoSuchElementException,
            TransactionAbortedException {
        super.open();
        child.open();
    }

    public void close() {
        // some code goes here
        try {
            super.open();
        } catch (DbException e) {
            e.printStackTrace();
        } catch (TransactionAbortedException e) {
            e.printStackTrace();
        }
        child.close();
    }

    public void rewind() throws DbException, TransactionAbortedException {
        // some code goes here
        super.open();
        child.rewind();
    }

    /**
     * AbstractDbIterator.readNext implementation. Iterates over tuples from the
     * child operator, applying the predicate to them and returning those that
     * pass the predicate (i.e. for which the Predicate.filter() returns true.)
     * 
     * @return The next tuple that passes the filter, or null if there are no
     *         more tuples
     * @see Predicate#filter
     */
    protected Tuple fetchNext() throws NoSuchElementException,
            TransactionAbortedException, DbException {
        // some code goes here
        while (child.hasNext()){
            Tuple tuple = child.next();
            if(p.filter(tuple)){
                return tuple;
            }

        }
        return null;

    }

    @Override
    public DbIterator[] getChildren() {
        // some code goes here
        return new DbIterator[]{child};
    }

    @Override
    public void setChildren(DbIterator[] children) {
        // some code goes here

    }

}

最后Join.java,

this.scan1 = TestUtil.createTupleList(width1,
        new int[] { 1, 2,
                    3, 4,
                    5, 6,
                    7, 8 });
    this.scan2 = TestUtil.createTupleList(width2,
        new int[] { 1, 2, 3,
                    2, 3, 4,
                    3, 4, 5,
                    4, 5, 6,
                    5, 6, 7 });
    this.eqJoin = TestUtil.createTupleList(width1 + width2,
        new int[] { 1, 2, 1, 2, 3,
                    3, 4, 3, 4, 5,
                    5, 6, 5, 6, 7 });
    this.gtJoin = TestUtil.createTupleList(width1 + width2,
        new int[] {
                    3, 4, 1, 2, 3, // 1, 2 < 3
                    3, 4, 2, 3, 4,
                    5, 6, 1, 2, 3, // 1, 2, 3, 4 < 5
                    5, 6, 2, 3, 4,
                    5, 6, 3, 4, 5,
                    5, 6, 4, 5, 6,
                    7, 8, 1, 2, 3, // 1, 2, 3, 4, 5 < 7
                    7, 8, 2, 3, 4,
                    7, 8, 3, 4, 5,
                    7, 8, 4, 5, 6,
                    7, 8, 5, 6, 7 });

上面是测试的代码,可以让你弄懂等于连接,和大于连接是怎么回事
然后就可以开始写代码了

package simpledb;

import java.util.Iterator;
import java.util.NoSuchElementException;

/**
 * The Join operator implements the relational join operation.
 */
public class Join extends Operator {

    JoinPredicate p;
    TupleDesc tupleDesc;
    DbIterator child1;
    DbIterator child2;
    Tuple tuple1;
    Tuple tuple2;
    private static final long serialVersionUID = 1L;

    /**
     * Constructor. Accepts to children to join and the predicate to join them
     * on
     *
     * @param p      The predicate to use to join the children
     * @param child1 Iterator for the left(outer) relation to join
     * @param child2 Iterator for the right(inner) relation to join
     */
    public Join(JoinPredicate p, DbIterator child1, DbIterator child2) {
        // some code goes here
        this.p = p;
        tupleDesc = TupleDesc.merge(child1.getTupleDesc(), child2.getTupleDesc());
        this.child2 = child2;
        this.child1 = child1;
        //必须用类似克隆的方法
    }

    public JoinPredicate getJoinPredicate() {
        // some code goes here
        return p;

    }

    /**
     * @return the field name of join field1. Should be quantified by
     * alias or table name.
     */
    public String getJoinField1Name() {
        // some code goes here
        return tupleDesc.getFieldName(p.field1);
    }

    /**
     * @return the field name of join field2. Should be quantified by
     * alias or table name.
     */
    public String getJoinField2Name() {
        // some code goes here

        return tupleDesc.getFieldName(p.field2);

    }

    /**
     * @see simpledb.TupleDesc#merge(TupleDesc, TupleDesc) for possible
     * implementation logic.
     */
    public TupleDesc getTupleDesc() {
        // some code goes here
        return tupleDesc;
    }

    public void open() throws DbException, NoSuchElementException,
            TransactionAbortedException {
        // some code goes here
        super.open();
        child1.open();
        child2.open();

    }

    public void close() {
        // some code goes here
        super.close();
        child2.close();
        child1.close();

    }

    public void rewind() throws DbException, TransactionAbortedException {
        // some code goes here
        super.rewind();
        child2.rewind();
        child1.rewind();


    }

//    @Override
//    public boolean hasNext() throws DbException, TransactionAbortedException {
//        return super.hasNext();
//    }

    /**
     * Returns the next tuple generated by the join, or null if there are no
     * more tuples. Logically, this is the next tuple in r1 cross r2 that
     * satisfies the join predicate. There are many possible implementations;
     * the simplest is a nested loops join.
     * <p>
     * Note that the tuples returned from this particular implementation of Join
     * are simply the concatenation of joining tuples from the left and right
     * relation. Therefore, if an equality predicate is used there will be two
     * copies of the join attribute in the results. (Removing such duplicate
     * columns can be done with an additional projection operator if needed.)
     * <p>
     * For example, if one tuple is {1,2,3} and the other tuple is {1,5,6},
     * joined on equality of the first column, then this returns {1,2,3,1,5,6}.
     *
     * @return The next matching tuple.
     * @see JoinPredicate#filter
     */
    protected Tuple fetchNext() throws TransactionAbortedException, DbException {
        // some code goes here

        if (tuple1 == null && child1.hasNext())
            tuple1 = child1.next();
        while (tuple1 != null) {
            while (child2.hasNext()) {
                tuple2 = child2.next();
                if (p.filter(tuple1, tuple2)) {
                    Tuple newTuple = new Tuple(getTupleDesc());
                    Iterator<Field> iterator = tuple1.fields();
                    int i = 0;
                    while (iterator.hasNext()) {
                        newTuple.setField(i++, iterator.next());
                    }
                    iterator = tuple2.fields();
                    while (iterator.hasNext()) {
                        newTuple.setField(i++, iterator.next());
                    }
                    //child2.rewind();
                    return newTuple;
                }
            }
            child2.rewind();
            if (child1.hasNext()) {
                tuple1 = child1.next();
            }else return null;

        }

        return null;

    }

    @Override
    public DbIterator[] getChildren() {
        // some code goes here
        return new DbIterator[]{child1, child2};
    }

    @Override
    public void setChildren(DbIterator[] children) {
        // some code goes here
        if (children.length != 2) return;
        child1 = children[0];
        child2 = children[1];
    }

}
ASL 集睿致远芯片CS5366带DSC影像解压 替代PS186替代RTD2173替代AG9411 方案设计优势 CS5366替换VMM7100/VMR7100/VM6100, PS196/PS186/PS188/PS176, RTD2173/RTD2172/RTD2173,IT6265B/IT6565/IT6563,CH7217A, AG9411/AG9410/AG9311/AG9310。3.音频对比:CS5366经过多种设备测试,力求更多音频设备兼容,同时全真保留高频采样率,最高可支持192khz高品质音频采样率,支持多编码格式的音频,这点上部分友商会将音频采样率高于48khz滤掉,在接音频分离器时。 阅读详情

相关推荐

project-gitbook:CS186项目规格。 (工作人员注意

概述 RookieDB是一个准系统的数据库实现,它支持按顺序执行简单的事务。 在此类的作业中,您将添加对B +树索引,高效连接算法,查询优化,多粒度锁定以允许并发执行事务和数据库恢复的支持。 为了方便起见,工作人员将在维护一个只读的公共回购协议其中包含项目框架。 启动项目时,请记住不要使用通过GitHub Classroom提供给您的私有存储库,而不是通过公共存储库。 代码概述 在本学期的剩余时间里,您将使用此代码库,因此熟悉它是一个好主意。 代码位于src/main/java/edu/berkeley/cs186/database目录中,而测试位于src/test/java/edu/berkeley/cs186/database目录中。 以下是代码库每个主要部分的简要概述。 cli cli目录包含数据库命令行界面的所有逻辑。 运行CommandLineInterface.java的

【数据库】UCB-CS186 pro0---set up笔记

P.S:可能会出现List<Record类>定位错误的问题,注意此处的Record是。大多数数据库提供命令行界面(CLI)来发送和查看查询的结果。注意要设置成maven工程。

SweetoRm的博客 589

cs186-databases:CS186 的作业

cs186-数据库 CS186 的作业,2015 年Spring,加州大学伯克利分校

伯克利CS186-proj1 SQL

CS186 project1 SQL

2301_77729899的博客 1814

CS186 SimpleDB

是从官方下载的资料

CS186-proj1.tar.gz(伯克利大学数据库系统作业1)

从无到有,一步步,手把手,用Java实际程序例子教学数据库设计,美国名校伯克利大学的数据库系统的作业系列

UCB cs186学习日记 第一章sql Ⅰ

在给定的查询中,如果使用 SELECT DISTINCT AVG(S.gpa), S.dept,当两个不同的部门 A 和 B 的平均GPA值都是 3.5 时,将会输出两行数据,分别显示部门 A 和 3.5,以及部门 B 和 3.5。每个不同的组合 (平均GPA, 部门) 将作为单独的行出现在查询结果中。是当x是null的时候,如果要判断的条件是x>3,1=x,x+4(对于表达式 x + 4,如果 x 是 NULL,根据标准的SQL行为,其结果应该是 NULL),x=NULL,这些表达式的值都是NULL。

m0_62153438的博客 402

CS186-proj2-supplement.tar.gz(伯克利大学数据库系统作业2)

从无到有,一步步,手把手,用Java实际程序例子教学数据库设计,美国名校伯克利大学的数据库系统的作业系列2

cs186lab2

Task1 根据Inner Node实现Leaf Node的fromBytes方法 Inner Node第一个byte表示节点类型,0是内部节点,1是叶子节点,后一个int表示有多少个主键数,孩子节点的个数是主键数+1 就是将buffer中的二进制码转换成节点。 该方法的意思即先获取方法,然后通过获取nodeType,然后建立keys和children的列表,再次从buffer中获取key数量和值,其中children存放的也是页号,最后创建innernode Leaf Node第一个byte表示类

一只菜鸟的练级路 350

SimpleDB:加州大学伯克利分校的数据库类CS186:实现一个简单的数据库管理系统

简单数据库 伯克利大学的数据库作业:实现一个简单的数据库管理系统 您可以在获得更多详细信息和我的博客(中文版): : (请参阅README中的英文版本) API变更 在Pro1中,我更改了几种方法的参数 在Pro3中,我更改了JoinOptimizer.java中的方法computeCostAndCardOfSubplan()以获得左深树(我可能在该课程提供的代码中发现了一些错误)。 此外,我在LogicalPlan.java中更改方法physicalPlan()。 具体来说,我添加的代码将检查查询是否包含联接,如果不包含联接,则不会调用JoinOptimizer。 我的博客的英文版 我在

CTF逆向-[GWCTF 2019]babyvm-WP-虚机模拟流程反向编码和z3约束求解器解方程工具的使用

CTF逆向-[GWCTF 2019]babyvm-WP-虚机模拟流程反向编码和z3约束求解器解方程工具的使用 来源:https://buuoj.cn/ 内容: 附件:https://pan.baidu.com/s/1FKkXN6JDI0QkGw-UE2crNA?pwd=grb0 提取码:grb0 答案:Y0u_hav3_r3v3rs3_1t! 总体思路 发现是虚机模拟 形成每个指令的逆向 找到加密值位置(有可能不止一个位置,该题就给了一个误导的) 找到命令执行的流程(也是不止一个) 逆向编写反向加密得到f

serfend's blog 977

cs186 lecture2 --Data Models

Data Models Logical data independence: Maintain views when logical structure changes Phisical data independence: Maintain logical structure when phisical structure changes ER Model Key constraints arrow: 可以divided(从尾到头at most one) #mermaid-svg-SUoQXSri8CA

毛线岛民的博客 197

手把手复现论文:SVPWM过调制I区与II区算法仿真(附MATLAB源码)

本文详细介绍了SVPWM过调制I区与II区算法的MATLAB仿真实现,从理论推导到Simulink建模逐步解析。通过源码示例展示幅值补偿和六边形跟踪等关键技术,帮助电力电子研究者掌握过调制算法的核心实现方法,适用于电机控制、变频器等工业应用场景。

weixin_28739079的博客 530

【cs186】Project3 Join and Query Optimization part2

在part1中我们知道了join两张表的基本操作和方法,但是我们日常的使用中,经常一个sql语句要join多张表,那么如果join是多个的时候应该怎么做呢, Naive Way 左深树 最简单的办法就是将所有的table都放在一颗左深树中,进行依次join 这里的左深树是,前面的两个tables的join结果作为下一个table的左兄弟,然后进行下一次join。 join方法我们都知道,对于左右两张表,我们要为左表进行一个哈希表的映射,放入内存。那么对于左深树而言,我们得到⋈1后,对⋈1进行哈希表的映射,

To Be A Coder 539

Keil MDK-ARM v5.43a 部署 STM32F103 开发环境全流程

嵌入式开发环境是 Cortex-M 微控制器工程落地的基础支撑,其核心在于编译器链、设备支持包(DFP)与调试驱动的协同一致性。Keil MDK-ARM 作为工业级 ARM Cortex-M 开发套件,依托 Arm Compiler 和 CMSIS 标准,提供从代码编译、外设抽象到实时调试的全栈能力。其技术价值体现在对 STM32 等主流 MCU 的深度适配、高可靠性 SWD 调试支持,以及与 HAL 库、CubeMX 工程的无缝集成。典型应用场景涵盖温湿度传感终端、工业 PLC 子模块及低功耗边缘节点开发

weixin_33750664的博客 890

基于Lumerical FDTD的光栅耦合器宽带特性仿真与实验验证

本文详细介绍了基于Lumerical FDTD软件对光栅耦合器进行宽带特性仿真的完整流程。通过复现一个针对1310nm波段优化的经典光栅耦合器案例,文章从结构建模、光源设置、监视器布置到仿真运行与结果分析,逐步解析了如何准确模拟其耦合效率与带宽特性,并将仿真结果与实验数据进行对比验证,为硅光芯片的设计与优化提供了实用指导。

weixin_29294597的博客 512

CS5366AU集成PD140W可拓展USB-C to HDMI4K60 by 2Lane拓展芯片

3. DSC支持RGB, YCbCr4:4:4, YCbCr4:2:2, Native YCbCr4:2:2, YCbCr4:2:0, 实现4K60 10 bit-per-color。,可做无线充 ,功能可替代谱瑞(Parade)的PS186/PS188/PS176,是一系列Type-C/DP转HDMI 4K60的视频转换芯片。2. 集成DSC1.2a decoder,支持2 lane 8.1G的source, 也支持2 lane 5.4G输出4K60 video。4. 支持在线更新程序。

QQ1540182856的博客 469

Unity URP管线下的Highlight Plus插件,从导入到实现物体高亮的保姆级避坑指南

本文详细解析了在Unity URP管线中使用Highlight Plus插件实现物体高亮的完整流程与常见问题解决方案。从URP环境配置、插件导入避坑到相机设置优化,提供了一套完整的保姆级指南,帮助开发者高效解决高亮效果不显示等典型问题,并包含移动端性能优化与复杂场景管理的高级技巧。

weixin_27379781的博客 408

CS186 Berkeley

CS186 Berkeley

weixin_43085694的博客 1097

基于STM32的室内环境监测系统设计与实现

摘要 本文设计了一种基于STM32的室内环境监测系统,通过传感器实时采集温湿度、空气质量、烟雾浓度等数据,并利用Wi-Fi模块上传至云服务器。系统采用STM32F103C8T6作为主控芯片,结合DHT11、MQ系列传感器及BMP280气压传感器实现数据采集,通过ESP8266模块实现远程数据传输。用户可通过手机APP实时查看环境参数,并在数据超标时触发报警。实验表明,系统运行稳定,监测精度高,具有低成本、易扩展等特点,为改善室内环境质量提供了有效解决方案。 关键词:STM32;室内环境监测;传感器;Wi-F

3254968421的博客 221

相机Camera日志分析之二十六:高通相机Camx 基于预览1帧的process_capture_request重要完整日志【见注释】

文章摘要:该日志记录了一个相机预览请求的处理流程。系统从HAL层开始处理capture_request,填充预览/拍照的buffer数据,并激活相关pipeline。流程涉及多个模块(ChiNodeWrapper、IFE、IPE等)的协同工作,包括获取ImageBuffer、设置请求映射关系、处理特征美颜参数(开关状态0,级别1)等关键步骤。日志详细展示了从请求下发到各节点处理的完整链路,包含多次buffer获取、fence设置及数据传递过程,最终完成预览帧数据的处理和保存(第0帧和第1帧)。该流程体现了移

517

CS2星星号和汰换号全面解析:2026年最新获取方式与平台对比

全面解析CS2星星号和汰换号的概念、获取方式与平台对比。涵盖自开号模式、Steam官方市场、第三方交易平台、汰换合约四种方式,帮助玩家选择最适合的获取途径。

youdangshiji的博客 665

从数据到行动:客服运营必分析的8大核心维度

服务运营正从被动响应升级为数据驱动型战略体系。客服中心的海量交互数据能精准反映服务效能、客户体验及运营短板,关键在于实现数据的可视化与可操作化。本文系统剖析了八类核心数据指标:1)客户行为数据(CSAT/NPS/投诉内容);2)通话效率指标(AHT/接通率);3)服务质量(质检体系/情绪识别);4)坐席绩效(FCR/客户评价);5)流程与知识库(转接率/工单时效);6)渠道流量分析;7)异常预警机制;8)成本收益模型。通过构建多维数据分析体系,企业可在客户全生命周期管理中实现服务升级、风险防控与资源

2202_75469062的博客 1400

谱瑞PS186|替代PS186方案|TypeC转HDMI4K视频转换方案设计

谱瑞PS186/PS188/PS176,是一系列Type-C/DP转HDMI 4K60的视频转换芯片,其中PS186是DP 2lane转HDMI 4K60,若是设计Type-C转HDMI方案还需加一颗C转DP协议转换芯片,这样成本更高。竞品接华为P40 休眠后画面会闪且不稳定。接充电器拔插Type-C,85%大概率的不出图显示。2.CS5366支持4K@24/25/30/50/60Hz刷新率的HDR竞品不支持4K@60Hz刷新率的HDR,且没有4K@50Hz刷新率。接小新pad稳定输出4K@30Hz。

QQ1540182856的博客 538

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

MAX186模拟开关扩展语音多传感器轮询采集

本文介绍基于MAX186与模拟开关的多传感器轮询采集系统,适用于语音与环境感知融合场景。通过CD4051扩展通道,实现高精度、低成本信号采集,并提供关键设计要点与避坑指南。

weixin_34163588的博客 697

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

cs186-proj1笔记

binid是按照工资划分的10个范围的序号,从0到9。当binid=9的工资上限大于最大薪水,答案测试会返回。avgheight取小数点后四位四舍五入。向下取整,若值为3.80 ,结果为3。3,q4ii的测试指令。

qq_51334993的博客 366
上一篇: Java NIO(1)
下一篇: Trapping Rain Water II
王Clever
博客等级 码龄11年 9粉丝 83原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值