背景
cglib是基于继承的代理的,但是final修饰的类的方法不能被代理,毕竟虚拟机规范限定了final关键字,想要实现代理的功能,自己不要加上final就是了。但是现在别人写好了库里的类,不方便修改想要尝试。
cglib是基于继承的代理的,但是final修饰的类的方法不能被代理,毕竟虚拟机规范限定了final关键字,想要实现代理的功能,自己不要加上final就是了。但是现在别人写好了库里的类,不方便修改想要尝试。
1 | public class Main{ |
Java里的线程和操作系统的线程是一一对应的,为了方便理解Thread 类的底层实现,我们可以自己来仿造一个MyThread, 同样接受一个Runable接口,调用start实现run方法。
https://thispointer.com/c-how-to-pass-class-member-function-to-pthread_create/
1 | int pthread_create(pthread_t *thread, const pthread_attr_t *attr,void *(*start_routine) (void *), void *arg); |
接受一个参数和返回值都是void * 的函数
class Task
目前Spark(2.3) 还不支持直接调用GPU , 需要自己通过JNI的方式实现调用GPU来做一些加速计算。通常是自己定义好接口,在用NVCC生成动态链接库,然后在Spark中调用。
sudo curl https://mirrors.aliyun.com/kubernetes/apt/doc/apt-key.gpg | apt-key add -
sudo apt update
查看源中的软件版本
sudo apt-cache madison kubelet
sudo apt install kubelet=1.14.0-00 kubeadm=1.14.0-00 kubectl=1.14.0-00