静态方法

用静态成员函数调用非静态成员变量

倾然丶 夕夏残阳落幕 提交于 2020-03-28 04:39:05
今天写程序要用到一个计时器,然后需要创建一个新的线程,这个线程是CtestDLG的一个成员函数,必须定义为静态的.但是这个时候就不能去访问非静态成员变量了,这里找到一个很好的解决办法: 先上代码: 1.线程函数的定义: private: int Count_time; CTime C_time; bool GetQuestion(); int mark;//考试分值,五个题目,一个20分,满分100 int QS[5];//随机题库序号 int count2;//题库总数 int count_Q;//当前输出的题目数量 static DWORD WINAPI Fun_Time(LPVOID lpParameter); }; 我们可以看到这个是一个类的成员函数 2.创建线程 void CTESTDlg::ONTIME() { HANDLE pThread_time = NULL; pThread_time = CreateThread(NULL,0,Fun_Time,this,0,NULL); } 这个是在一个消息函数中创建的.第四个参数传递的是一个this指针,指向当前的窗口类(这里很重要) 2.具体实现 DWORD WINAPI CTESTDlg::Fun_Time(LPVOID lpParameter) { CTESTDlg* temp = (CTESTDlg*

Java内部类(二十三)

女生的网名这么多〃 提交于 2020-03-26 15:45:58
内部类 什么是内部类 内部类就是在一个类内部进行其它类结构的嵌套操作。 定义一个内部类 public class TestClass { //成员变量 private String id; //成员方法 public void test() { System.out.println("成员方法"); } //内部类 class OnClass{ //内部类里面的方法 public int id; //内部类里面的方法 public void OnMethod(){ System.out.println("内部类"); } } } 内部类的作用 1、内部类提供了更好的封装,只能让外部类直接访问,不允许同一个包中的基他类直接访问。 2、内部类可心直接访问外部类的私有属性,内部类被当成其外部类的成员,但外部类不能直接访问内部类的内部属性。 内部类的使用场合 由于内部类提供了更好的封装特性,并且可以很方便的访问外部类的属性,所以,通常内部类在只为所在外部类提供服务的情况下优先使用。 内部类的使用 成员内部类 内部类就象是外部类的成员一样。(可以使用private,proteted,public 任意进行修饰,生成的类文件是:外部类$内部类.class) 非静态内部类 成员内部类也是最普通的内部类,它是外围类的一个成员,所以他是可以无限制的访问外围类的所有的成员变量和方法的

spring boot --开发web应用程序

拈花ヽ惹草 提交于 2020-03-26 09:47:33
3 月,跳不动了?>>> Spring MVC 自动配置 Spring Boot 提供了适用于大多数 Spring MVC 应用的自动配置 自动配置在 Spring 默认功能上添加了以下功能: 引入 ContentNegotiatingViewResolver 和 BeanNameViewResolver bean。 支持服务静态资源,包括对 WebJar 的支持。 自动注册 Converter 、 GenericConverter 和 Formatter bean。 支持 HttpMessageConverter 。 自动注册 MessageCodesResolver 。 支持静态 index.html。 支持自定义 Favicon 。 自动使用 ConfigurableWebBindingInitializer bean。 HttpMessageConverters Spring MVC 使用 HttpMessageConverter 接口来转换 HTTP 的请求和响应 自定义 JSON Serializer 和 Deserializer 自定义序列化器(serializer)的做法通常是通过 一个模块来注册 Jackson , 然而 Spring Boot 提供了一个备选的 @JsonComponent 注解,它可以更加容易地直接注册 Spring Bean。

如何为CentOS 7配置静态IP地址

て烟熏妆下的殇ゞ 提交于 2020-03-26 04:38:10
问题 :在 CentOS 7上,我想要将我其中一个网络接口从DHCP改为静态IP地址配置,如何才能永久为CentOS或RHEL 7上的网络接口分配静态IP地址? 如果你想要为CentOS 7中的某个网络接口设置静态IP地址,有几种不同的方法,这取决于你是否想要使用网络管理器。 网络管理器(Network Manager)是一个动态网络的控制器与配置系统,它用于当网络设备可用时保持设备和连接开启并激活。默认情况下,CentOS/RHEL 7安装有网络管理器,并处于启用状态。 使用下面的命令来验证网络管理器服务的状态: $ systemctl status NetworkManager . service 运行以下命令来检查受网络管理器管理的网络接口: $ nmcli dev status 如果某个接口的nmcli的输出结果是“已连接”(如本例中的enp0s3),这就是说该接口受网络管理器管理。你可以轻易地为某个特定接口禁用网络管理器,以便你可以自己为它配置一个静态IP地址。 下面将介绍 在CentOS 7上为网络接口配置静态IP地址的两种方式 ,在例子中我们将对名为enp0s3的网络接口进行配置。 不使用网络管理配置静态IP地址 进入/etc/sysconfig/network-scripts目录,找到该接口的配置文件(ifcfg-enp0s3)。如果没有,请创建一个。

线程的等待唤醒机制;线程的生命周期;线程池;单例设计模式;Java8 接口新特性 (Java Day23)

空扰寡人 提交于 2020-03-25 23:17:33
一,线程的等待唤醒机制【线程的通信机制】 概述:就是线程和线程之间的相互沟通的通信手段。 案例:顾客来包子铺不停的吃包子 ​ 分析: 顾客:可以是一条线程 任务是吃包子 包子铺:可以是一条线程 任务做包子 包子:被线程共享资源 ​ 操作的共同资源是包子,顾客有包子开始吃,吃完了叫包子铺开始做包子,没有包子需要等待 ​ 包子铺有包子等着顾客来吃包子,吃完了开始做包子,做好了等着叫顾客吃 ​ 注意事项: 操作的是同一个资源,需要同步加锁 执行机制是抢占式, ​ 顾客有可能先抢到了要执行,没有包子 等着让给包子铺 ​ 有包子 开始吃 吃完了叫包子铺来做包子 ​ 包子铺抢到了 没有包子开始做包子,做好了把顾客叫过来吃包子 ​ 有包子等待 代码示例 //定义一个包子铺类继承Thread package com.ujiuye.demo; import java.util.ArrayList; public class Baozipu extends Thread { //定义一个存放包子的容器 private ArrayList<String> list; // 有参构造 public Baozipu(ArrayList<String> list) { super(); this.list = list; } //重写run方法指定包子铺的任务 [做包子] @Override public

成员变量和局部变量有什么区别?

此生再无相见时 提交于 2020-03-25 15:00:34
3 月,跳不动了?>>> FAQ2.13 成员变量和局部变量有什么区别? class A { int a;// 成员变量 public static void main(String[] args) { int b;// 局部变量 } } ———————————————————————————————————————————————————————————————————————————————————————— 类体由 2 部分构成 : 一部分是变量的定义 ; 一部分是方法的定义 ( 一个类中可以有多个方法 ) 在变量定义部分定义的变量叫做类的成员变量 , 成员变量在整个类中都有效 . ( 全局变量应该是成员变量的俗称 ) 在方法体中定义的变量叫做局部变量 , 局部变量只在定义它的方法中有效 . 成员变量又分为 实例变量 和 类变量 (static 静态变量 ). class One { float x; //x 为实例变量 static int y; // 只要有关键字 static,y 为类变量 } ———————————————————————————————————————————————————————————————————————————————————————— 1. 成员变量可以被 public , protect , private , static

静态方法和类方法之间的区别

*爱你&永不变心* 提交于 2020-03-25 00:52:21
3 月,跳不动了?>>> 问题: 用 @staticmethod 装饰的函数和用 @staticmethod 装饰的函数有 @staticmethod @classmethod ? 解决方案: 参考一: https://stackoom.com/question/ZP7/静态方法和类方法之间的区别 参考二: https://oldbug.net/q/ZP7/Difference-between-staticmethod-and-classmethod 来源: oschina 链接: https://my.oschina.net/stackoom/blog/3210465

JDK动态代理和Cglib的动态代理

匆匆过客 提交于 2020-03-24 13:37:14
3 月,跳不动了?>>> 最简单的是静态代理方法,即代理模式,这里就不多啰嗦了。。 重点说一下JDK的动态代理和Cglib的动态代理吧 先说JDK的,需要被代理的类需要有接口,否则无法实现 package proxy.dynamic; public interface IBook { void add(); } 实现接口的类如下 package proxy.dynamic; public class Book implements IBook { @Override public void add() { System.out.println("Add Method!"); } } 创建一个代理类,需要实现一个接口InvocationHandler接口,里面有一个invoke方法需要实现 同时创建一个生成实例的方法 package proxy.dynamic; import java.lang.reflect.InvocationHandler; import java.lang.reflect.Method; import java.lang.reflect.Proxy; public class BookProxy implements InvocationHandler{ private Object target; public Object bind(Object

JavaSE复习日记 : 多态

时光毁灭记忆、已成空白 提交于 2020-03-24 11:36:22
/** * 里氏替换原则 : * 能使用父类的地方,一定可以使用子类 * 什么是多态 : * 父类的引用,指向子类的对象 * 多态的前提条件 : * 有继承关系的两个类 * 多态的目的 : * ☆☆☆ 代码的重用 * 多态发什么在什么时候 : * 赋值的时候 * * !!!!!!!!! 多态中的 ☆☆☆ 覆写 是特指的 成员方法!!!!!!!!! * 什么是覆写 : * 就是在子类有个和父类相同的方法 : 方法名 , 参数列表 , 返回值类型 (和修饰符列表没关系) * 1 方法名相同 : 不相同,就是两个不一样的方法了 不是覆写 * 2 参数列表相同 : 参数列表不同,就是方法的重载了,也不是覆写 * 参数列表的 个数 和 数据类型 都相同 才叫相同吧 * 3 返回值类型相同 ; 返回值代表函数(方法)的功能,覆写是为了功能更强大,不能降低功能,所以必须相同 * 覆写之后 不能比原有的方法有更低的访问权限 ( 权限的降低 就意味着 功能的降低 ) * 覆写之后 不能比原有的方法有更宽泛的异常 ( 只能异常越来越低 ) * *!!!!! ☆☆☆ 父类的属性列表是在编译的时候就生成了 : 就是javac的时候☆☆☆ *!!!!! ☆☆☆ 子类的属性列表是在运行时才生成 : 就是java运行的时候☆☆☆ * * 父类和子类的调用有两种形式 : * 1 多态 父类引用指向子类的对象

浅谈对static的理解

余生长醉 提交于 2020-03-23 21:46:58
相信很多朋友在面试过程中都遇到过关于static的相关题目,接下来我们来分析一下static。 static(静态的),用来修饰成员变量,成员方法,它随着类的加载而加载,使用static修饰的数据可以直接使用类名来调用。由此可以得出,静态的方法是不可以访问非静态的成员方法和成员变量的,因为非静态需要依赖对象来调用。但是相反的,非静态的方法是可以访问静态的成员方法和成员变量的。 使用static修饰的方法不能使用this,这是因为static随着类的加载而加载,不存在依赖对象的情况。 根据上述两点我们可以总结出来静态的特性:只在类加载时执行一次,根据这个特性还可以得出静态使用的地方,那就是在创建对象前就需要调用方法或者变量。 最后大家可以看一下下面这个题的运行结果 public class son extends Farther{ static { System.out.println("子类的静态代码块被调用了"); } public son() { System.out.println("子类的构造方法执行了"); } public static void main(String[] args) { new son(); } } class Farther { static { System.out.println("父类的静态代码块被调用了"); } public