iloooo
iloooo
@Snailclimb “1. 面向对象和面向过程的区别”, 根据guide中解释的内容我觉得应该是面向对象和面向过程优缺点更准确些,而它们两个区别应该讨论OOP和POP解决问题的方式不同。 面向过程解决问题方式:把解决问题的过程,拆成一个个方法,通过一个个方法的执行解决问题。 面向对象解决问题方式:先抽象出对象,然后用对象执行方法的方式解决问题。 @ryouaki 我还想补充讨论下,首先面向过程和对象是一种编程思想,就像@cjjMichael 所言“直接比较语言性能本来就是不恰当的”,语言执行性能应该从他们最终执行方式上讨论。直接编译成机器码,然后执行的语言(比如C,编译器一次性编译为平台相关的机器码),从过程复杂度上,肯定比解释执行的语言(HTML,JavaScript,浏览器的解释器,把代码一行行解释为机器码)和 Java这种中间码(编译)+虚拟机(解释成机器码)的方式,要性能高的多。
@guang19 老哥又要叨扰你下,网上说的“饿汉式单例在类加载阶段就已经初始化了,典型的空间换时间...”确实容易理解成 **加载阶段就已经new好了**,那肯定不对的。 可以通过下面字节码得知,是在类加载系统的**初始化**阶段给类变量new的对象:  老哥我觉得你上面说的一些细节也有问题,比如 >以我个人的理解:最多在准备阶段,会给类的静态字段的变量赋零值,引用类型为null。 这里**准备**阶段赋初值是正确的,但是**初始化**阶段会执行``JVM方法, 顺序完成父类子类静态成员变量(类变量)显示初始化和父类子类静态代码块语句。具体请参考#https://github.com/Snailclimb/JavaGuide/issues/941#issuecomment-747338107 欢迎老哥讨论,我觉得网上说的欠严谨但是对于不懂JVM的人来说也对。我觉得也不用这么细抠,其实这句话完善成 "饿汉式单例在**类加载系统阶段**就已经初始化了" 或者更细一点 "饿汉式单例在**类加载的初始化阶段**就已经初始化了”。最开始说这话的人应该是想让人区分开饿汉模式在方法执行阶段才new对象,不过确实容易让人理解成 类加载系统的 “加载”阶段。
@Snailclimb 我总结的对于 \docs\java\jvm\[加餐]大白话带你认识JVM.md 下面一句话的补充和修改,请参考讨论: `2.1.3 初始化 ##初始化其实就是一个赋值的操作,它会执行一个类构造器的()方法。由编译器自动收集类中所有变量的赋值动作,此时准备阶段时的那个 static int a = 3 的例子,在这个时候就正式赋值为3` 字节码文件中初始化方法有两种,非静态资源初始化的``和静态资源初始化的``,类加载过程的初始化阶段就是执行类构造器``方法,顺序完成父类子类静态成员变量(类变量)显示初始化和父类子类静态代码块语句。 (注意:静态代码块中可能会对类变量再次赋值而覆盖显示初始化) ## 代码及字节码说明:     请参考: https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-2.html#jvms-2.9 https://blog.csdn.net/u013309870/article/details/72975536
@nilaoda 请问Windows怎么解决?已试过 BBDown.exe login BBDown.exe -c "SESSDATA=xxx"都不行(xxx用的是cookie中SESSDATA对应的value) 都不可以,也不像mac有BBDown.data
> > @nilaoda 请问Windows怎么解决?已试过 > > BBDown.exe login > > BBDown.exe -c "SESSDATA=xxx"都不行(xxx用的是cookie中SESSDATA对应的value) > > 都不可以,也不像mac有BBDown.data > > 大佬给的方法就是Windows 的, 你在 BBDown.data 里复制 cookie 里的全部内容, 在 shell 里执行就可以了.... > 但是...