Python工程师Java之路(c)面向对象速查

开源入门实战:Python/C++/Java三栈贡献路径与避坑指南 开源贡献不是语法考试,而是工程能力的综合验证。理解项目协作规范、构建可复现的开发环境、撰写可验证的PR描述,是跨越‘围观者’到‘可信贡献者’的核心能力。Python强调可读性即文档,适合从docstring和示例入手;C++聚焦构建确定性与内存模型,破局点常在CMake脚本与头文件管理;Java则深植于企业级复杂度,高杠杆贡献往往来自JVM调优、配置诊断与自动化工具。结合‘vscode配置c/c++环境’‘java环境变量配置’等高频搜索场景,本文直击真实构建失败(如error: #5)、运行时异常(如Ou 阅读详情

成员变量

成员变量的内存图

区域名称作用
程序计数器程序计数器是CPU中的寄存器,它包含每一个线程下一条要执行的指令的地址
本地方法栈当程序中调用了native的本地方法时,本地方法执行期间的内存区域
方法区存储已被虚拟机加载的类信息、常量、静态变量、即时编译器编译后的代码等数据。
堆内存存储对象(包括数组对象),new出来的那些
虚拟机栈存储正在执行的每个Java方法的局部变量表等。局部变量表存放了编译期可知长度的各种基本数据类型、对象引用,方法执行完,自动释放
class MyDate{
	int year;
	int month;
	int day;
}
class Employee{
	String name;
	MyDate birthday;
}
public class Hello{
	public static void main(String[] args){
		//创建两个员工对象
		Employee e1 = new Employee();
		Employee e2 = new Employee();
		
		//为两个员工对象的成员变量赋值
		e1.name = "张三";
		e1.birthday = new MyDate();
		
		e2.name = "李四";
		e2.birthday = new MyDate();
		
		e1.birthday.year = 2000;
		e1.birthday.month = 1;
		e1.birthday.day = 1;
		
		e2.birthday.year = 2000;
		e2.birthday.month = 3;
		e2.birthday.day = 8;
	}
}

上面代码的内存图

构造方法、方法重载、方法重写、继承、多态

  • 构造方法:constructor
  • 方法重载:overload
  • 方法重写:override
  • 继承:extends(extend的第三人称单数形式)
  • 多态:polymorphic
public class Hello {
    public static void main(String[] args) {
        // 创建对象
        Dogface d = new Dogface("小兵");
        Hero h = new Hero("先知", 200, 15, 15);
        // 互相攻击
        d.attack(h); // 多态
        h.attack(d); // 本态
        // 打印现有血量
        System.out.println(d.name + "现有血量为:" + d.hp); // 小兵现有血量为:70
        System.out.println(h.name + "现有血量为:" + h.hp); // 先知现有血量为:190
    }
}

class Dogface {
    // 类里面的变量(下面3个是普通成员变量)
    String name;
    int hp = 100;
    int ad = 10;

    // 构造器(类似Python的__init__)
    Dogface(String name) {
        this.name = name;
    }

    // 构造器重载(overload)
    Dogface(String name, int hp, int ad) {
        this.name = name;
        this.hp = hp;
        this.ad = ad;
    }

    // 方法(method,类似Python的函数)
    public void attack(Dogface other) {
        other.hp -= ad;
    }
}

// 继承(extends)
class Hero extends Dogface {
    int ap = 0;

    Hero(String name, int hp, int ad, int ap) {
        super(name, hp, ad); // 继承父类特性
        this.ap = ap; // 子类新特性
    }

    // 重写方法(override,关键词可写可不写,建议写)
    @Override
    public void attack(Dogface other) {
        super.attack(other); // 调用父类方法
        other.hp -= ap;
    }
}

代码块

public class Hello {
    public static void main(String[] args) {
        new A();
        new A();
    }
}

class A {
    {
        System.out.println("代码块");
    }
    static {
        System.out.println("静态代码块");
    }
}

打印结果

静态代码块
代码块
代码块

对象初始化

实例化初始化方法

public class Hello {
    public static void main(String[] args) {
        new A();
    }
}

class A {
    {
        System.out.println("1、代码块");
    }

    private int a = setA();

    A() {
        System.out.println("2、构造方法");
    }

    public int setA() {
        System.out.println("3、赋值");
        return 1;
    }

    {
        System.out.println("4、代码块");
    }
}
/*
打印结果
    1、代码块
    3、赋值
    4、代码块
    2、构造方法
*/

父子类实例化初始化方法

public class Hello {
    public static void main(String[] args) {
        new B();
    }
}

class A {
    {
        System.out.println("1、A代码块");
    }

    private int a = setA();

    A() {
        System.out.println("2、A构造方法");
    }

    public int setA() {
        System.out.println("3、A赋值");
        return 1;
    }
}

class B extends A {
    {
        System.out.println("4、B代码块");
    }
    private int b = setB();

    B() {
        System.out.println("5、B构造方法");
    }

    public int setB() {
        System.out.println("6、B赋值");
        return 2;
    }
}
/*
打印结果
    1、A代码块
    3、A赋值
    2、A构造方法
    4、B代码块
    6、B赋值
    5、B构造方法
*/

类初始化

public class Hello {
    public static void main(String[] args) {
        new A();
    }
}

class A {
    {
        System.out.println("1、代码块");
    }

    static {
        System.out.println("2、静态代码块");
    }

    private int a = setA();
    private static int b = 2;

    A() {
        System.out.println("3、构造方法,打印a值:" + a);
    }

    public int setA() {
        System.out.println("4、a现值" + a);
        return b;
    }
}
/*
打印结果
    2、静态代码块
    1、代码块
    4、a现值0
    3、构造方法,打印a值:2
*/
public class Hello {
    public static void main(String[] args) {
        new B();
    }
}

class A {
    {
        System.out.println("1、A代码块");
    }

    int a = setA();

    static {
        System.out.println("2、A静态代码块");
    }

    A() {
        System.out.println("3、A构造方法,并打印a:" + a);
    }

    public int setA() {
        System.out.println("4、A的a赋值前:" + a);
        return 1;
    }
}

class B extends A {
    {
        System.out.println("5、B代码块");
    }

    int b = setB();

    static {
        System.out.println("6、B静态代码块");
    }

    B() {
        System.out.println("7、B构造方法,并打印a值:" + a + "和b值:" + b);
    }

    public int setB() {
        System.out.println("8、B的b赋值前" + b);
        return 2;
    }
}
/*
打印结果
    2、A静态代码块
    6、B静态代码块
    1、A代码块
    4、A的a赋值前:0
    3、A构造方法,并打印a:1
    5、B代码块
    8、B的b赋值前0
    7、B构造方法,并打印a值:1和b值:2
*/

封装

packaging

修饰符本类本包其他包子类其他包非子类其他模块
private√××××
缺省√√×××
protected√√√××
public√√√√默认不可以,可以建立依赖
名称修饰允许
外部类public和缺省
成员变量public,protected,缺省,private
成员方法public,protected,缺省,private
构造器public,protected,缺省,private

JavaBean:Java语言编写类的一种标准规范

  1. 类必须是具体的和公共的
  2. 具有无参数的构造方法
  3. 成员变量私有化,并提供用来操作成员变量的set 和get 方法
public class ClassName{
  //成员变量
    
  //构造方法
  	//无参构造方法【必须】
  	//有参构造方法【建议】
  	
  //getXxx()
  //setXxx()
  //其他成员方法
}
public class Student {
	// 成员变量
	private String name;
	private int age;

	// 构造方法
	public Student() {
	}

	public Student(String name, int age) {
		this.name = name;
		this.age = age;
	}

	// get/set成员方法
	public void setName(String name) {
		this.name = name;
	}

	public String getName() {
		return name;
	}

	public void setAge(int age) {
		this.age = age;
	}

	public int getAge() {
		return age;
	}
    
    //其他成员方法列表
    public String getInfo(){
        return "姓名:" + name + ",年龄:" + age;
    }
}

类型转换

数据类型转换

double i2f = 2; //自动类型转换
int f2i = (int)2.3; //强制类型转换
System.out.println(i2f); // 2.0
System.out.println(f2i); // 2

引用数据类型转换

public class Hello {
    public static void main(String[] args) {
        // 创建对象
        Animal a = new Animal();
        Cat c = new Cat();

        // 向上转型(upcasting):子类 -> 父类(猫 -> 动物)
        Animal c2a = c;
        c2a.eat(); // 吃鱼
        //c2a.attack(); // 没有这个方法

        // 向下转型(downcasting):父类 -> 子类(动物 -> 猫)
        Cat a2c = (Cat) c2a;
        a2c.eat(); // 吃鱼
        a2c.attack(); // 喵喵拳

        // 编译通过,但运行报错
        //Cat c2 = (Cat) a; // ClassCastException
    }
}

class Animal {
    public void eat() {
        System.out.println("吃");
    }
}

class Cat extends Animal {
    public void eat() {
        System.out.println("吃鱼");
    }

    public void attack() {
        System.out.println("喵喵拳");
    }
}

判断实例是否属于某类(instance of)

instance of(类似Python的is instance)

public class Hello {
    public static void main(String[] args) {
        // 创建对象
        Animal a = new Animal();
        Cat c = new Cat();
        // 猫属于动物
        System.out.println(a instanceof Animal); // true
        System.out.println(a instanceof Cat);    // false
        System.out.println(c instanceof Animal); // true
        System.out.println(c instanceof Cat);    // true
    }
}

class Animal {}
class Cat extends Animal {}

修饰符

静态(static):类方法、静态属性、静态代码块

static(类似Python的@classmethod)

public class Hello {
    public static void main(String[] args) {
        Cat.attack();
    }
}

class Cat {
    static void attack() {
        System.out.print("喵爪");
    }
}

静态方法没有多态,也没有重写

public class Hello {
    public static void main(String[] args) {
        Animal a = new Cat();
        a.attack(); // 打印【攻击】而不是【喵爪】
    }
}

abstract class Animal {
    static void attack() {
        System.out.print("攻击");
    }
}

class Cat extends Animal{
    static void attack() {
        System.out.print("喵爪");
    }
}

最终(final)

子类不能重写父类的最终方法

子类不能继承final类

原生的(native)

  • 只能修饰方法
  • 表示这个方法的方法体代码不是用Java语言实现的,而是由C/C++语言编写的。
  • 但是对于Java程序员来说,可以当做Java的方法一样去正常调用它,或者子类重写它。

一些源码

抽象(abstract):抽象方法、抽象类

public class Hello {
    public static void main(String[] args) {
        Graph[] g = new Graph[2];
        g[1] = new Circle(1.0);
        System.out.println(g[1].Area());
    }
}

// 抽象类
abstract class Graph {
    // 抽象方法,抽象方法必须在抽象类中,没有方法体
    abstract double Area();
}

class Circle extends Graph {
    double radius;

    Circle(double radius) {
        this.radius = radius;
    }

    @Override
    double Area() {
        return Math.PI * radius * radius;
    }
}

接口(interface):比抽象类更抽象

IDE可以创建接口

// 接口:翅膀
public interface Wing {
    // 默认的【public、abstract】可省略
    public abstract void fly();

    // default修饰的方法,有方法体,由实现类的对象来调用
    public default void lay() {
        System.out.println("default方法:下蛋");
    }

    // static修饰的方法,有方法体;调用方法:Wing.information()
    public static void information() {
        System.out.println("static方法:翅膀");
    }
}
// 抽象类:动物
abstract class Animal {
    private String name;

    Animal(String name) {
        this.name = name;
    }

    @Override
    public String toString() {
        return "名字:" + this.name;
    }
}

// 鸟类:继承1个抽象类,实现n个接口
class Bird extends Animal implements Wing {

    Bird(String name) {
        super(name);
    }

    @Override
    public void fly() {
        System.out.println("implement方法:树上飞");
    }
}

// 运行,打印
public class Hello {
    public static void main(String[] args) {
        Bird b = new Bird("鹏");
        System.out.println(b); // 名字:鹏
        b.fly(); // implement方法:树上飞
        b.lay(); // default方法:下蛋
        Wing.information(); // static方法:翅膀
    }
}

枚举(enumerate)

IDE可以创建枚举

public enum Gender {
    BOY("男"), GIRL("女");

    private String str;
    Gender(String str) { this.str = str; }

    @Override
    public String toString() { return str; }
}
// 打印
System.out.println(Gender.BOY); // 男
System.out.println(Gender.GIRL); // 女
// 遍历
for (Gender g : Gender.values()) { System.out.print(g); }  // 男女

内部类

// 外部类:外部类里面有内部类
public class Outer{
    // 成员内部类
    class Inner {}

    // 静态成员内部类
    static class staticInner {}

    public void myMethod() {
        // 局部内部类
        class localInner {}
    }
}

成员内部类

// 心脏
interface Heart {
    void beat();
}

// 青蛙
public class Frog {
    String name;
    boolean live;
    private Heart heart = new FrogHeart();

    Frog(String name, boolean live) {
        this.name = name;
        this.live = live;
    }

    private class FrogHeart implements Heart {
        @Override
        public void beat() {
            System.out.print(name);
            // 直接访问外部类成员
            if (live) {
                System.out.println("心脏在跳动");
            } else {
                System.out.println("心脏不跳了");
            }
        }
    }

    public Heart getHeart() {
        System.out.println("取出" + name + "心脏");
        return heart;
    }
}
public class Hello {
    public static void main(String[] args) {
        Frog f1 = new Frog("青蛙1号", true);
        Heart b1 = f1.getHeart();
        b1.beat();
        Frog f2 = new Frog("青蛙2号", false);
        Heart b2 = f2.getHeart();
        b2.beat();
    }
}

打印结果

取出青蛙1号心脏
青蛙1号心脏在跳动
取出青蛙2号心脏
青蛙2号心脏不跳了

局部内部类

// 接口(将会被局部内部类实现)
interface Shoot {
    void shoot(String bullet);
}

// Hello是外部类
public class Hello {
    public static void main(String[] args) {
        // 局部内部类(有名)
        class Gun implements Shoot {
            @Override
            public void shoot(String bullet) {
                System.out.println("射" + bullet);
            }
        }
        (new Gun()).shoot("箭");
        // 局部内部类(匿名)
        (new Shoot() {
            @Override
            public void shoot(String bullet) {
                System.out.println("射" + bullet);
            }
        }).shoot("枪");
        // 接口参数,必须传入接口的实现类对象
        shoot((new Shoot() {
            @Override
            public void shoot(String bullet) {
                System.out.println("射" + bullet);
            }
        }), "水");
        // IDE优化
        shoot((bullet -> System.out.println("射" + bullet)), "水");
    }

    // 方法的参数要求:传入接口的实现类对象
    private static void shoot(Shoot s, String bullet) {
        s.shoot(bullet);
    }
}
/*
打印结果
    射箭
    射枪
    射水
    射水
*/

根父类(Object)

其它类的父类

import java.util.Objects;

class Hello {
    public static void main(String[] args) {
        Object[] a = new Object[2];
        a[0] = new Object();
        a[1] = new Hero("剑圣", 6);
        for (Object o : a) {
            // toString
            System.out.println(o);
            // hashCode
            System.out.println(o.hashCode());
            // getClass
            System.out.println(o.getClass());
            // equals
            System.out.println(o.equals(new Hero("剑圣", 6)));
            System.out.println("-------------------------------------");
        }
        // finalize
        System.gc();
    }
}


class Hero {
    String name;
    int lv;

    Hero(String name, int lv) {
        this.name = name;
        this.lv = lv;
    }

    @Override
    public String toString() {
        return "Hero:name=" + name;
    }

    @Override
    protected void finalize() {
        System.out.println("__del__");
    }

    @Override
    public boolean equals(Object o) {
        if (this == o) return true;
        if (o == null || getClass() != o.getClass()) return false;
        Hero hero = (Hero) o;
        return lv == hero.lv && Objects.equals(name, hero.name);
    }

    @Override
    public int hashCode() {
        return Objects.hash(name, lv);
    }
}

/*
打印结果
    java.lang.Object@677327b6
    1735600054
    class java.lang.Object
    false
    -------------------------------------
    Hero:name=剑圣
    20943637
    class agu.com.hell0.Hero
    true
    -------------------------------------
    __del__
    __del__
 */
pythonstrclassdelhasheq
javatoStringgetClassfinalizehashCodeequals
class Hero:
    def __init__(self, name, lv=1):
        self.name = name
        self.lv = lv

    def __str__(self):
        return 'toString:' + self.name

    def __del__(self):
        print('finalize')

    def __hash__(self):
        return hash(self.name)

    def __eq__(self, other):
        return (self is other) and \
               (self.__class__ == other.__class__) and \
               (hash(self) == hash(other)) and \
               (self.name == other.name)


h = Hero('剑圣')
print(h)
# toString:剑圣
print(hash(h), hash(h.name) == hash(h))
# 445903300893569928 True
print(h == Hero('剑圣', 6))
# finalize
# True
# finalize

包装类

用包装类来包装基本数据类型,方便用API

基本数据类型包装类(java.lang包)缓存对象
byteByte-128~127
shortShort-128~127
intInteger-128~127
longLong-128~127
floatFloat没有
doubleDouble没有
charCharacter0~127
booleanBooleantrue和false
voidVoid

装箱、拆箱

  • 装箱:把基本数据类型转为包装类对象
  • 拆箱:把包装类对象拆为基本数据类型
int i = 99;
String s = "100";
// int -> Integer
Integer integer2 = i; // 自动装箱
// Integer -> i
int v1 = integer; // 自动拆箱
// String -> Integer
Integer s1 = Integer.valueOf(s);
// String -> int
int si = Integer.parseInt(s);
// int -> String
String is1 = Integer.toString(i);
String is2 = "" + i;
// Integer -> String
String is3 = integer.toString();
String is4 = "" + integer;

缓存对象

Integer i = 1;
Integer j = 1;
System.out.println(i == j);//true

Integer i = 128;
Integer j = 128;
System.out.println(i == j);//false

Integer i = new Integer(1);//新new的在堆中
Integer j = 1;//这个用的是缓冲的常量对象,在方法区
System.out.println(i == j);//false

Integer i = new Integer(1);//新new的在堆中
Integer j = new Integer(1);//另一个新new的在堆中
System.out.println(i == j);//false

注解(annotation)

系统预定义的常用注解

@Override
检测被修饰的方法为有效的重写方法,如果不是,则报编译错误
只能标记在 方法上
它会被编译器程序读取
@SuppressWarnings
抑制编译警告
可用于修饰 类、属性、方法、构造、局部变量、参数
它会被编译器程序读取
@Deprecated
表示 反对使用
可用于修饰 属性、方法、构造、类、包、局部变量、参数
它会被编译器程序读取

自写注解

元注解说明例如
@Target描述注解的使用范围TYPE、FIELD、METHOD、CONSTRUCTOR、PACKAGE…
@Retention描述注解的生命周期SOURCE(源代码)、CLASS(字节码)、RUNTIME(运行时)
@Documented该被javadoc工具记录
@Inherited允许子类继承父类中

IDE可以创建

import java.lang.annotation.ElementType;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Retention;
import java.lang.annotation.Target;

@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
@interface Table {
    String value();
}

@Target(ElementType.FIELD)
@Retention(RetentionPolicy.RUNTIME)
@interface Column {
    String name();
    String type();
}

@Table("t_user")
class User {
    @Column(name = "identification", type = "int")
    private String id;
    @Column(name = "username", type = "varchar(20)")
    private String name;
    @Column(name = "password", type = "char(6)")
    private String pwd;
}

附录

en🔉cn
nativeˈneɪtɪvadj. 本地出生的;天生的;土著的;天然的;n. 本地人;
bean/biːn/n. 豆;嘴峰;毫无价值的东西;vt. 击…的头部
construct/kənˈstrʌkt/v. 建造;n. 构想
constructor/kənˈstrʌktər/n. 构造函数
overload/ˌoʊvərˈloʊd/v. (使)过载,超载;(使)负担过重;(使)电力系统超负荷;n. 超载量
override/ˌoʊvərˈraɪd/vt. 推翻;不顾;践踏;n. 代理佣金
extend/ɪkˈstend/v 延伸
polymorphic/pɑlɪ’mɔrfɪk/adj. [生物] 多态的;[生物] 多形的;多形态的;
retentionrɪˈtenʃnn. 保留;滞留;记忆力
annotationˌænəˈteɪʃnn. 注释;注解
protectedprəˈtektɪdadj. 受保护的
inheritɪnˈherɪtvt. 继承
-Xms初始堆内存大小
-Xmx最大堆内存大小
Python面向对象编程实战:从库存系统理解OOP核心价值 面向对象编程(OOP)是组织复杂业务逻辑的基础范式,其本质在于将数据与行为绑定,通过封装控制状态访问、继承复用共性逻辑、多态统一调用接口、抽象建立协作契约。在Python中,OOP并非语法装饰,而是应对需求变化、保障协作安全、支撑系统演进的工程实践方法论。结合动态类型、鸭子类型和MRO机制,Python的OOP更轻量也更需设计自觉。本文以可运行的库存管理系统为载体,深入解析__init__初始化边界、@property行为拦截、super()与MRO协同、Liskov替换原则落地等关键细节,直击OOPs C 阅读详情

相关推荐

python-openCV—入门到精通系列讲解(配效果图)- 总览

python-openCV是一种强大的计算机视觉库,可用于处理图像和视频等多媒体数据。它可以帮助您快速处理和分析图像和视频数据,并且在计算机视觉领域具有广泛的应用。在学习python-openCV时,一个速查手册是一个必不可少的工具。你可以当本专栏当做一个速查手册,可以看到每一个方法的实际效果图片,而不用看繁杂的文档说明。速查手册可以为您提供清晰的方法说明,帮助您快速查找需要的信息。为了更好地帮助用户,这个速查手册致力于提供每个方法的实例图片,以便用户可以更直观地了解每个方法的效果。

qq_38334677的博客 1888

Java程序设计实验二 面向对象程序设计

[1]实验目的:通过编程和上机实验,掌握类和构造方法的定义及创建对象的方法,掌握类的封装及继承原则,正确使用重载和覆盖等多态概念设计可复用方法,熟悉包、接口的使用方法,掌握面向对象的程序设计方法。 [2]实验内容: 1、编写MyDate类,完善上次实验中的人员信息录入,实现日期合法性判断,包括大小月和闰年。 *2、声明一个Person类和派生类Student,成员变量包括学号、姓名、入学时间、身份证号、学分绩点等信息,成员方法包括开户、存款、取款、查询(余额、明细)、销户等操作。 *3、设计一个汽车

Ace2NoU的博客 6535

深入理解C# 装箱和拆箱(整理篇)

通过装箱和拆箱操作,能够在值类型和引用类型中架起一做桥梁.换言之,可以轻松的实现值类型与引用类型的互相转换

C#中定义装箱和拆箱详解

1. C#装箱和拆箱是一个抽象的概念。 2. C#装箱是将值类型转换为引用类型;拆箱是将引用类型转换为值类型。 利用装箱和拆箱功能,可通过允许值类型的任何值与Object 类型的值相互转换,将值类型与引用类型链接起来。 例如: int val = 100; object obj = val; Console.WriteLine (“对象的值 = {0}", obj); 这是一个装...

qq_34573534的博客 7086

Python面向对象之类和对象属性的增删改查操作示例

本文实例讲述了Python面向对象之类和对象属性的增删改查操作。分享给大家供大家参考,具体如下: 一、类属性的操作 # -*- coding:utf-8 -*- #! python2 class Chinese: country = 'China' def __init__(self,name): self.name = name def play_ball(self,ball): print('%s play %s' %(self.name,ball)) #查看属性 print(Chinese.country) #修改属性 Chinese.country = '

VSCode玩转ESP-ADF音频开发:从环境搭建到成功播放MP3的避坑全流程

本文详细介绍了如何在VSCode环境下使用ESP-ADF框架进行ESP32音频开发,从环境搭建到成功播放MP3的全流程。重点解析了`IDF_PATH`和`ADF_PATH`的配置问题,以及如何解决`xTaskCreateRestrictedPinnedToCore`等常见编译错误,帮助开发者快速上手ESP-ADF音频开发。

weixin_42520909的博客 339

C#中的装箱和拆箱操作详解

C#中的装箱和拆箱操作详解

qq_35320456的博客 2130

matlab物元可拓模型程序,熵权可拓物元模型

1 概述物元分析方法是中国学者蔡文于20世纪80年代提出的用于解决矛盾问题的技术方法,是研究物元及其变化规律,解决现实世界中不相容问题的有效方法,可应用于生态环境,水资源承载力,农用地分级和土地生态水平等综合评价研究中.本文主要介绍了熵权可拓物元模型的相关概念与该模型的建立过程.2 概念2.1 物元物元分析法的主要思想是把事物用"事物,特征,量值"(分别用N,C,V表示)3个要素以有序三元组的形式...

weixin_33823399的博客 4126

C# 装箱和拆箱

1. 装箱和拆箱是一个抽象的概念 。 2. 装箱是将值类型转换为引用类型 ;拆箱是将引用类型转换为值类型 ;    利用装箱和拆箱功能,可通过允许值类型的任何值与Object 类型的值相互转换,将值类型与引用类型链接起来。    例如:int val = 100; object obj = val; Console.WriteLine (“对象的值 = {0}", 

程序员天空 1380

深度学习---双层神经网络中矩阵的运算及其含义记录

深度学习---双层神经网络中矩阵的运算及其含义记录神经网络的正向传播与反向传播正向传播第一层的权重矩阵第一层的输入矩阵Z^1^ = W^1^X^1^ + b^1^A^1^ = σ(Z^1^)第二层的权重矩阵第二层的输入矩阵Z^2^ = W^2^A^1^ + b^2^反向传播dz^2^ = A^2^ - Ydw^2^ = 1/n dz^2^A^1T^db^2^ = 1/n np.sum(dz^2...

qq_43228441的博客 3748

基于深度强化学习的柔性作业车间动态调度

在追求敏捷和灵活的生产调度方面,处理不可预测的动态事件的能力变得越来越重要。与此同时,生产系统中的网络-物理融合产生了大量需要实时挖掘和分析的工业数据。为了便于这种实时控制,本研究提出了一种分层分布式的体系结构来解决动态柔性作业车间调度问题。采用双深度Q网络算法(DDQN)训练调度智能体,捕捉生产信息与调度目标之间的关系,为具有恒定任务到达的柔性作业车间实时做出调度决策。为了处理动态调度中问题的可变规格说明,提出了专门的状态和动作表示法。此外,还提出了一种代理奖励整形技术(surrogate reward

太剧烈的快乐与太剧烈的悲哀是有相同之点的——同样地需要远离人群! 1万+

C#装箱和拆箱的理解

装箱和拆箱是值类型和引用类型之间相互转换是要执行的操作。 1、将值类型隐式(可显示)转换成 object 或者接口类型的过程称之为装箱。 2、将一个对象显示转换成值类型的过程称之为拆箱。 装箱: int value= 10; object obj = value; 这儿我们先声明了一个值类型value,它将放在栈上; 我们又声明了一个引用类型obj,它需要放在堆上面; 然后我们再把v...

chwu 813

MuJoCo与Isaac Sim的无缝对接:利用USD导出功能实现强化学习场景的跨平台迁移

本文详细介绍了如何通过USD导出功能实现MuJoCo与Isaac Sim的无缝对接,助力强化学习场景的跨平台迁移。文章解析了USD格式的核心优势,包括分层合成、物理属性继承和时间轴动画,并提供了从MJCF到USD的完整转换流程及在Isaac Sim中的高级应用技巧,帮助开发者高效迁移和优化强化学习环境。

weixin_29073241的博客 519

新手向:C语言、Java、Python 的选择与未来指南

别迷信“学了C就懂计算机”—— 大部分工作其实不需要你懂指针。别觉得Python“不正统”—— 2026年它已经是事实上的“第一生产力语言”。别只学语法—— 学完基础后立刻做项目,哪怕是抄的、改的。用AI辅助学习—— Cursor / Claude / 通义灵码 / GitHub Copilot 能把学习速度提升2–3倍。就业最重要的事不是语言,而是“能解决什么问题 + 项目经历 + 表达能力”。

m0_57545130的博客 665

CryoEM - 使用 ChimeraX 工具 操作 冷冻电镜的 MRC 密度图(Density Map) 教程

由冷冻电镜 CryoSparc 软件所生成的 Volume,需要观察其内部结构,建议使用 ChimeraX 进行操作。

AGI 4964

基于LLM【M3】驱动的自动化攻击智能体AK(受控使用)

摘要:文章实测了基于大模型的目标驱动型云攻击智能体,展示攻击者仅需输入业务目标(如"窃取BigQuery数据")即可自动完成SSRF、令牌解析、数据导出等全链条攻击。研究发现:(1)攻击编排范式已从固定脚本升级为自适应路径;(2)传统基于IOC的防御与新型攻击存在结构性错位;(3)防御需转向元数据加固、跨服务行为序列检测和AI驱动的紫队演练。实验在授权靶场使用合成数据,验证了攻击智能体"监督者模型+专业执行组"的协作模式,强调防御体系需从单点检测升级为攻击链理解能力。

云上笛暮 307

一站式开发速查表大全 - 覆盖主流编程语言与工具

Awesome Cheatsheets 是一个精心整理的编程速查表集合,旨在为开发者提供快速参考和学习的便利。无论你是初学者还是经验丰富的开发者,这个项目都能帮助你在短时间内掌握各种技术和工具的核心概念。

分享技术点滴 894

李航《统计学习方法》课后习题答案(第2版)

李航《统计学习方法》课后习题答案(第2版) 章节 链接 第1章 统计学习及监督学习概论 点击进入 第2章 感知机 点击进入 第3章 k近邻法 点击进入 第4章 朴素贝叶斯法 点击进入 第5章 决策树 点击进入 第6章 逻辑斯谛回归与最大熵 点击进入 第7章 支持向量机 点击进入 第8章 提升方法 点击进入 第9章 EM算法及其推广 点击进入 第10章 隐马尔可夫模型 点击进入 第11章 条件随机场 点击进入     也可进入我的个人主页查看分类专栏

weixin_43646592的博客 2万+

Ubuntu 14.04离线命令速查:cheat工具零依赖部署与工业级定制

Linux命令行速查工具是提升运维效率的基础能力,其核心价值在于将man手册中高频、易错、需上下文对照的命令用法结构化呈现。在嵌入式、工控、电力等资源受限场景中,网络不可靠、系统锁定、权限受限成为常态,传统在线文档或GUI帮助完全失效。cheat作为轻量级纯文本速查框架,仅依赖Python标准库,支持离线运行、用户级部署与速查表自定义,特别适配Ubuntu 14.04等EOL但仍在产线长期服役的LTS系统。本文围绕零网络依赖、最小系统侵入、向后兼容锚点三大刚性约束,详解cheat在老旧环境中的源码部署、中文

A458545418的博客 368

假人有限元模型

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

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

面向对象编程核心概念解析:从封装继承到多态原理与面试实战

面向对象编程是软件工程中应对复杂业务的核心思想之一,它通过类与对象、抽象、封装、继承和多态等机制,将现实世界的实体映射为代码中的角色,从而清晰划分责任边界、控制状态变化、提升系统扩展性。理解面向对象不能止步于背诵定义,更要掌握其底层原理与取舍:例如Java的动态绑定、C++的虚函数表、Python的鸭子类型,都体现了多态在不同语言中的实现差异。在工程实践中,合理运用设计模式依赖这些面向对象基础设施,同时也要警惕继承带来的耦合、多层抽象导致的维护成本。本文从基础概念出发,结合三语言对比和面试高频追问,帮助你从

weixin_34384557的博客 420

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

如何用终极学习路线在3个月内准备好软件工程师面试?[特殊字符]

想要成为顶尖科技公司的软件工程师吗?面对海量的面试准备资料,你是否感到迷茫,不知从何入手?coding-interview-university 就是为你量身打造的完整计算机科学学习路线图!这个开源项目为技术面试提供了系统化的学习路径,涵盖了数据结构、算法、系统设计等核心内容,帮助无数开发者成功获得了亚马逊、谷歌等大厂的offer。🚀 ## 💡 为什么选择这个学习计划? 传统的面试准备往往

gitblog_00525的博客 438

用故事学 Python 面向对象编程:从宠物店到代码世界

本文系统讲解Python面向对象编程,从类与对象基础到封装、继承、多态三大特性,深入魔术方法、描述符、元类等高级主题,涵盖工厂模式、观察者模式等设计模式实战,帮助你真正掌握Python OOP。

热爱技术与前沿创新,深耕科技领域,在科创中精进自我;探索技术乐趣,分享技术干货与成长心得,以技术为伴,热爱生活,在科创与生活中双向成长。 891

【工作经验】进击的工程师

书不在多,而是需要充分发挥作用。同样作用的书,精选一本就行。固然,编程是靠工程实践经验积累,有些环境配置,新技术的应用实例甚至看网上帖子更好,因为会不断更新。有些晦涩难懂的概念与实战应用,例如如何开始一个项目看一些教学视频会更好。但是书也有其取代不了的作用: 语法工具 一个领域的通俗入门及知识图谱 在学习的过程中,我精选了所从事领域的一些好书,可以当做工具书随身带的那种(大学可以丢很多书,...

凌bb的笔记本 541

Java开发者转型AI工程师的实战指南

机器学习作为人工智能的核心技术,其底层依赖线性代数、概率统计等数学基础。通过Python生态中的NumPy、Pandas等工具,开发者可以高效实现矩阵运算和数据处理。Java开发者转型AI工程师具有独特优势,成熟的工程化思维和编码能力可直接迁移到机器学习项目开发中。本文重点分享从数学基础补全到深度学习框架选择的完整路径,特别适合具备Java背景的开发者快速掌握AI核心技术栈。内容涵盖Kaggle实战、模型部署等工程实践,帮助开发者顺利完成从后端开发到AI工程师的转型。

weixin_33402252的博客 297

如何准备软件工程师面试?coding-interview-university 学习计划完全指南

coding-interview-university 是一份完整的计算机科学学习计划,帮你按清单备战软件工程师面试:数据结构、算法、树、图、动态规划全都有。它不是一套代码,而是一份可以逐项勾选、追踪进度的待办清单。你从上往下学就行。 ## 刷题之前,先知道自己缺什么 大多数人备面的问题不是题量不够,而是说不出自己到底缺什么。这个项目源于作者 Jeremy Washam 的个人备考清单。他全职

gitblog_00103的博客 410

Google Interview University学习路径:从Web开发者到软件工程师的转型秘籍

Google Interview University是一个全面的学习计划,旨在帮助Web开发者转型为软件工程师,特别针对Google等科技公司的面试准备。本指南将详细介绍如何利用这个项目实现从Web开发者到软件工程师的蜕变,为你的职业发展提供清晰的学习路径和实践方法。 ## 为什么选择Google Interview University? 对于没有计算机科学学位的Web开发者来说,转型为软

gitblog_00266的博客 851
上一篇: Python工程师Java之路(b)IntelliJ IDEA
下一篇: Python工程师Java之路(e)多线程、单例设计模式、生产者消费者模式
小基基o_O
博客等级 码龄9年 4414粉丝 467原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小基基o_O

您的鼓励是我创作的巨大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值