perfectism's blog

物来顺应,未来不迎,当时不杂,既往不恋

0%

Java_thinking

父类中的静态变量和方法可以被继承和重写吗?

可以被继承,不能被重写

原因:静态变量和方法属于类,内存中存储于方法区中的静态区,随着类的加载而加载一次,优先于对象存在,由所有对象共享

代码示例:

1
2
3
4
5
6
7
8
9
10
11
package cn.itcast.day09.demo_2020_12_21;

public class Fu {
public static int MemoryFu;
public Fu(int num){
this.MemoryFu = num;
}
public static void Fighting(){
System.out.println("父类在fighting");
}
}
1
2
3
4
5
6
7
8
9
10
11
12
package cn.itcast.day09.demo_2020_12_21;

public class Zi extends Fu{
public Zi(){
super(80);
this.MemoryZi = super.MemoryFu+25;
}
public int MemoryZi;
public static void Fighting(){
System.out.println("子类在奋斗");
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
package cn.itcast.day09.demo_2020_12_21;

public class Demo {
public static void main(String[] args) {
Zi zi = new Zi();//zi为子类引用
Fu zi2 = new Zi();//有默认的向上转型,zi2为父类引用
Fu zi3 = (Fu)zi;//强制将zi转换为父类引用
System.out.println(zi.MemoryZi);//105
zi.Fighting();//子类在奋斗
zi2.Fighting();//父类在fighting
zi3.Fighting();//父类在fighting
}
}

结论:

  • 在Java中,如果父类含有一个静态方法,且在子类中也含有一个返回类型,方法名、参数列表等都与之相同的的静态方法,在子类中只是==对父类的该同名方法进行隐藏====,并不是重写==。父类与子类含有的其实是两个没有关系的方法,两者的行为不具有多态性。
  • 在上面的例子中,Fighting方法与类发生了关联,而不是与特定的类的实例相关联,它不在乎什么类型的类正在创建它,而仅仅在意引用的类型。

抽象方法可以是静态的吗?

1、abstract与static

what
abstract:用来声明抽象方法,抽象方法没有方法体,不能被直接调用,必须在子类overriding后才能使用。 static:用来声明静态方法,静态方法可以被类及其对象调用。

how
static与abstract不能同时使用。

why
用static声明方法表明这个方法在不生成类的实例时可直接被类调用,而abstract方法不能被调用,两者矛盾。

2、abstract与native

what
native:用来声明本地方法,该方法的实现由非Java 语言实现,比如C。一般用于java与外环境交互,或与操作系统交互。
参考:java中 本地方法 Native Method

how
native可以与所有其它的java 标识符连用,但是abstract除外。

why
因为 native 暗示这些方法是有实现体的,只不过这些实现体是非java 的,但是abstract却显然的指明这些方法无实现体。

3、abstract与synchronized

what
synchronized:用于防止多个线程同时调用一个对象的该方法,与static连用可防止多个线程同时调用一个类的该方法。

how
abstract与synchronized不能同时使用

why
从synchronized的功能也可以看出,用synchronized的前提是该方法可以被直接调用,显然和abstract连用。

参考

https://www.cnblogs.com/upcwanghaibo/p/6527443.html

Unity学习笔记

2020.11.10

页面菜单

窗口界面

image-20201121201442544

File文件菜单

image-20201121215314938

  • 与项目的发布有关
  • 勾选Project Settings 中的Player的Run in Background方便测试

image-20201121215527218

  • 正向渲染 最多31个layers来表示物体;延时渲染 只支持4个layers
Edit 编辑菜单
  • 编辑器的内部设置
  • selection
  • lighting包含fog(全局雾化效果)移至window窗口
  • rendering下的全局光照 个人版没有?
Assets资源菜单

对Project项目资源进行管理

  • 导入、导出包
  • 查找依赖项
GameObject

对场景Hierarcy的管理

  • 创建空物体
Component

对选中的物体在Inspector编辑器中添加组件

image-20201122095622256

Window
Help

Scene与场景漫游

image-20201122192756645

image-20201122193710386

  • 如果 Scene 视图处于一个尴尬的视点(颠倒或是让人感到困惑的角度),请按住 Shift 键并单击场景视图辅助图标中心的立方体,即可返回透视图,使用从侧面和略微从上方观察的角度查看场景。
  • 可使用箭头键在场景中移动,就好像在场景中“走动”一样。向上和向下箭头使摄像机朝所在方向前后移动。向左和向右箭头可横向平移视图。使用箭头时按住 Shift 键可以加快移动速度。
  • 单击并按住鼠标右键,使用鼠标移动视图,使用 WASD 键向左/向右/向前/向后移动,使用 QE 键向上和向下移动。
  • 要将 Scene 视图居中于游戏对象上,请在层级视图中选择该游戏对象,然后将鼠标移到 Scene 视图上并按 F。此功能也可在菜单栏中的 Edit > Frame Selected 下找到
  • 在 Hierarchy 窗口中进行的所有场景拾取更改都是持久有效的。每当使用 Select AllDeselect All、关闭然后重新打开场景或进行其他操作时,Unity 都会重新应用这些更改

Blue Noises:噪声虽作为一个随机信号),仍然具有统计学上的特征属性。功率谱密度功率频谱分布)即是噪声的特征之一,从而人们可以通过它来区分不同类型的噪声。

图像的蓝噪声采样:https://zodiac911.github.io/blog/blue-noise.html

斯坦纳树:https://oi-wiki.org/graph/steiner-tree/

img

Voronoi 图和 Delaunay 三角剖分:https://www.ryanligod.com/2018/10/09/2018-10-09%20%E7%BB%B4%E8%AF%BA%E5%9B%BE%EF%BC%88Voronoi%20Diagram%EF%BC%89%E5%88%86%E6%9E%90%E4%B8%8E%E5%AE%9E%E7%8E%B0/

测地线距离:http://lemonc.me/average-geodesic-distance.html

音乐发现日期

歌手 歌名 date
孙伯纶 一生一程 2020.10.24
jj 交换余生 2020.10.24
jj 幸存者 2020.10.24
卢冠廷/莫文蔚 一生所爱 2020.10.23

电影发现日期

CS-未解决问题

数据结构

序列

  • [ ] 顺序对或逆序对的计算与归并排序的结合

二叉树

  • [ ] 遍历中的递归版本的时间与空间复杂度的常系数为何比迭代版本大

  • [ ] 图的遍历中生成的森林为什么是c颗树,n-c条树边

    每个树对应一个连通域,若两颗树有公共边,则其属于同一树

数据结构与算法 笔记

基本概念

一、数据结构

1. 其他定义

  • 数据结构是数据对象,以及存在于该对象的实例和组成实例的数据元素之间的各种联系。这些联系可以通过定义相关的函数来给出。 ——Sartaj Sahni 《数据结构、算法与应用》
  • 数据结构是 ADT(Abstract Data Type,数据抽象类型)的物理实现。 ——Clifford A.Shaffer 《数据结构与算法分析》
  • 数据结构(data structure)是计算机中存储、组织数据的方式。通常情况下,精心选择的数据结构可以带来最优效率的算法。 ——中文维基百科

2. 解决问题方法的效率

  • 跟数组的组织方式有关
  • 跟空间的利用效率有关
  • 跟算法的巧妙程度有关

3. 最终定义

  • 数据对象在计算机中的组织方式
    • 逻辑结构
    • 物理存储结构
  • 数据对象必定与一系列加在其上的操作相关联
  • 完成这些操作所用的方法就是算法

4. 抽象数据类型(Abstract Data Type)

  • 数据类型
    • 数据对象集
    • 数据集合相关联的操作集
  • 抽象:描述数据类型的方法不依赖于具体实现
    • 与存放数据的机器无关
    • 与数据存储的物理结构无关
    • 与实现操作的算法和编程语言均无关

只描述数据对象集和相关操作集“是什么”,并不涉及“如何做到”的问题

阅读全文 »

用Keras实现视频动作分类

使用LSTM或者RNN处理时序信息太费时间

所以我们先训练一个用于图片上运动信息分类的CNN,通过采用一种滚动平均的方法将其应用在视频分类中

阅读全文 »

问题:

  1. frame = cv2.resize(frame, (224, 224)).astype("float32")
    
  2. 数据预处理是用sklearn比较好还是自带的

  3. 动作识别和人体姿态估计(只是识别出骨骼关键点)有关系吗

  4. 光流法能用在动作识别上吗

随笔

2019.2.16

有的时候其实要及时行乐,不去想那些没有发生的事情,豁达一点,其实事情并没有想象的那么重要,那么糟糕,但是当人们真正面对的时候,往往头脑冲动,自甘堕落,一直活在对过去的内疚和对未来的恐惧中,这其实是很可悲的。

阅读全文 »

使用Google Colab训练模型

挂载Google Drive并修改运行路径

方法一

1
2
3
4
5
6
7
8
9
10
11
12
!apt-get install -y -qq software-properties-common python-software-properties module-init-tools
!add-apt-repository -y ppa:alessandro-strada/ppa 2>&1 > /dev/null
!apt-get update -qq 2>&1 > /dev/null
!apt-get -y install -qq google-drive-ocamlfuse fuse
from google.colab import auth
auth.authenticate_user()
from oauth2client.client import GoogleCredentials
creds = GoogleCredentials.get_application_default()
import getpass
!google-drive-ocamlfuse -headless -id={creds.client_id} -secret={creds.client_secret} < /dev/null 2>&1 | grep URL
vcode = getpass.getpass()
!echo {vcode} | google-drive-ocamlfuse -headless -id={creds.client_id} -secret={creds.client_secret}
阅读全文 »