静态函数

JVM init和cinit的理解

匿名 (未验证) 提交于 2019-12-02 23:55:01
JVM的类加载机制中,准备阶段和初始化阶段尤为重要,在程序设计中有时候起到至关重要的作用。因此今天来根据一个例子来讲解JVM中<init>和<cinit>的过程。 吊炸天的Java题目,请问输出结果是什么? public class JavaTest { public static void main ( String [] args ){ f1 (); } static JavaTest javaTest = new JavaTest (); static { System . out . println ( "1" ); } { System . out . println ( "2" ); } JavaTest (){ System . out . println ( "3" ); System . out . println ( "a=" + a + ", b=" + b ); } public static void f1 (){ System . out . println ( "4" ); } int a = 100 ; static int b = 200 ; } 先给出正确答案: 2 3 a = 100 , b = 0 1 4 init和clinit区别 ①init和clinit方法执行时机不同 ②init和clinit方法执行目的不同

方法调用及传参

匿名 (未验证) 提交于 2019-12-02 23:55:01
静态方法:有static修饰的方法。 非静态方法:没有static修饰的方法。 方法调用: 一静态方法调用 静态方法/属性 2)不同类/不同文件: a: 类名.属性名/方法名 b:实例化对象 总结:可直接调用的三种情况 1.一个类中 静态调静态 。 2. 一个类中 非静态调用 静态/非静态。 public class Demo03{ int age; public static void main(String []args){ System.out.println(Demo04.name);//静态调用静态1 Demo04.eat(); Demo04 d = new Demo04();//静态调用静态2 System.out.println(d.name); d.eat(); Demo03 d1 = new Demo03();//静态调用非静态 d1.method(); System.out.println(d1.age); } public void method(){ System.out.println("first method"); } } public class Demo04{ static String name = "张三"; public static void eat(){ System.out.println("肉夹馍"); } } public

静态数据成员和函数

匿名 (未验证) 提交于 2019-12-02 23:52:01
( 1)静态数据成员在同一个类的实例之间可以共享,如果不想让它共享,可以将它设为私有的或保护的。 (2)静态成员函数可以通过类名和对象名来调用, (3)静态成员函数可以直接访问该类的静态数据和函数成员,而访问非静态成员,必须通过对象名。 (4)当static修饰全局变量和函数时,该函数和全局变量只能在本文件中使用。 (5)被static修饰的成员函数是不分配空间的。 (6)被static修饰的数据成员在类外初始化,通过类名来访问。 (7)被static修饰的成员函数的调用(类名::函数名()). (8)静态成员函数没有this指针,因为它不属于任何一个具体的对象。 (9)静态成员函数不能被声明为虚函数或volatile。

SQLServer数据脱敏

匿名 (未验证) 提交于 2019-12-02 23:48:02
  SQLServer有各种加密方式,比如使用加密函数进行数据列加密,Dynamic Data Masking(动态数据屏蔽),但是都达不到数据脱敏的效果,特别是动态数据屏蔽,可以强行绕过加密。而数据脱敏的效果应该是在从生产数据库迁移数据库到其它环境时,屏蔽掉敏感数据,而不改变其数据类型。对比Oracle的Data Masking,SQLServer在新版本的Management studio中推出了静态数据屏蔽的功能。本文就是针对这个功能的详细介绍。   使用场景:            工作原理:    静态数据屏蔽发生在列级别。 用户选择他们希望屏蔽的列,并且对于所选的每列,他们希望应用哪个屏蔽功能。 有几种掩蔽功能可供选择, 它们在掩蔽函数中有详细描述。   然后,静态数据屏蔽将创建数据库的副本。 对于Azure SQL数据库,通过复制功能执行复制。 对于SQL Server,它通过备份操作执行,然后执行还原操作。 从那里,对于每列,静态数据掩蔽开始根据所选择的掩蔽功能用掩蔽后数据替换预掩蔽数据。   替换在存储级别完成, 因此在静态数据屏蔽完成后,无法从数据库的屏蔽副本中检索预屏蔽数据。      操作步骤:   1. 启动SSMS, 连接到您的数据库。 在左侧的“对象资源管理器”窗格中,展开“数据库”文件夹。 右键单击要屏蔽的数据库, 左键单击“任务”,

06 返回静态文件的映射(函数/多线程)web框架

匿名 (未验证) 提交于 2019-12-02 23:48:02
06 / web 1 import socket 2 server = socket.socket() 3 server.bind(("127.0.0.1", 8888)) 4 server.listen() 5 6 def func_html(conn): 7 with open("index.html", "rb")as f: 8 conn.send(f.read()) 9 10 11 def func_js(conn): 12 with open("index.js", "rb")as f: 13 conn.send(f.read()) 14 15 16 def func_css(conn): 17 with open("index.css", "rb")as f: 18 conn.send(f.read()) 19 20 21 def func_img(conn): 22 with open("index.png", "rb")as f: 23 conn.send(f.read()) 24 25 26 def func_ico(conn): 27 with open("favicon.ico","rb")as f: 28 conn.send(f.read()) 29 30 def respones_back(conn,path): 31 conn.send("HTTP/1

1.4 静态文本StaticText

匿名 (未验证) 提交于 2019-12-02 23:39:01
1.设置为呵呵 1.先将需要设置的编辑框 添加变量 (如m_text) 2.可在类视图中的DoDataExchang()中找到 及关联的变量 3.点击按钮使变量变成"哈哈" 4.获取变量并输出: CString str; m_text.GetWindowTextW(str); MessageBox(str); (2)如果想显示一张图片,需要放到项目文件夹中: 1.拖拽一个staic_Text 2。图片后缀必须为.bmp 首先复制图片,找到任意.cpp、.h等文件右键选择 打开所在文件夹,并粘过来。 3.添加变量 变量名如m_pic。 4.代码定位到初始化的位置。函数为OnInitDialog(); //设置静态文本的位图为居中显示 m_pic.ModifyStyle(0xf,SS_BITMAP|SS_CENTERIMAGE); 0xf 十六进制f 为十五 、文本写成bitmap图片、图片居中显示 //通过路径获取bitmap句柄 //静态控件设置bitmap (3)点击按钮修改显示内容 (1) 添加变量 名称如m_btn (2)点击事件修改: //点击按钮 修改显示内容 m_btn.SetWindowTextwTEXT("O(∩_∩)O"); //获取内容(弹出) CString str; m_btn.GetWindowTextW(str); MessageBox(str); (3

c语言中static 用法

匿名 (未验证) 提交于 2019-12-02 23:35:02
static在c里面可以用来修饰变量,也可以用来修饰函数。 先看用来修饰变量的时候。变量在c里面可分为存在全局数据区、栈和堆里。其实我们平时所说的堆栈是栈而不是堆,不要弄混。 int a ; int main() { } a是全局变量,b是栈变量,c是堆变量。 static对全局变量的修饰,可以认为是限制了只能是本文件引用此变量。有的程序是由好多.c文件构成。彼此可以互相引用变量,但加入static修饰之后,只能被本文件中函数引用此变量。 static对栈变量的修饰,可以认为栈变量的生命周期延长到程序执行结束时。一般来说,栈变量的生命周期由OS管理,在退栈的过程中,栈变量的生命也就结束了。但加入static修饰之后,变量已经不再存储在栈中,而是和全局变量一起存储。同时,离开定义它的函数后不能使用,但如再次调用定义它的函数时,它又可继续使用, 而且保存了前次被调用后留下的值。 static对函数的修饰与对全局变量的修饰相似,只能被本文件中的函数调用,而不能被同一程序其它文件中的函数调用。 文件a.c { } { } 上面的全局i变量和init()函数只能用在a.c文件中,全局变量sum的作用域只在callme里。变量j和函数callme()的全局限扩充到整个工程文件。所以可以在下面的b.c中用extern关键字调用。extern告诉编译器这个变量或者函数在其他文件里已经被定义了。

java笔记

独自空忆成欢 提交于 2019-12-02 23:22:42
=====第一个java程序===== public class HelloWorld { public static void main(String[] args) { System.out.println("Hello World"); } } 命令 $ javac HelloWorld.java $ java HelloWorld Hello World javac 后面跟着的是java文件的文件名,例如 HelloWorld.java。 该命令用于将 java 源文件编译为 class 字节码文件 java 后面跟着的是java文件中的类名,例如 HelloWorld 就是类名, 如: java HelloWorld。 =====package===== 1.解决类名冲突的问题 2.同一个包中的类不需要被导入,当代码使用外部包中的类时,需要用import语句导入包含该类的包。 3.代码使用外部包中的类,另外一个方法是在代码中使用类的完全限定名称。例如,在使用Scanner的代码中,如果省略了导入Scanner的语句,则需要在使用Scanner类的位置使用Java.util.Scanner 4.Java编译器默认为所有的Java程序引入了JDK的Java.lang 包中的所有的类。其中定义了一些常用类:System、String、Object、Math等

变量的存储和作用域

北城以北 提交于 2019-12-02 22:44:01
初始化和赋值的区别是什么? 初始化:声明变量的时候同时赋值,声明的时候会划出新的内存区域,同时 赋值: 变量的储存方式:静态储存和动态储存. 静态存储:变量定义的时候,分配了一定的内存单元,在整个程序中,内存单元都不变.只能初始化一次,可以多次赋值,静态存储变量不初始化则初始为0. 动态存储:程序执行过程中才分配内存单元,使用完后就释放,如形参.函数的形式参数就是动态存储方式,声明函数的时候不给它分配内存单元.调用的时候传入实参,就分配内存单元,然后函数执行完后,就释放内存.动态存储变量若不初始化,则初始值为一个随机数. 怎么声明变量的存储方式? 全局变量包括全局变量和静态全局变量,都是静态存储,因此未初始值未0,静态局部变量是静态存储,只有动态局部变量是动态存储. 加上static前缀就是静态存储变量,如 static int a = 0; 不加static前缀默认就是动态存储变量,如 int b = 1; (如果是全局变量则于是静态存储.) 内存存储空间的分配: 动态存储区域:即存储用动态存储方式的变量的内存区域,如函数形参,没有加static前缀的局部变量(即动态局部变量),函数返回地址 静态存储区域:即存储用静态存储方式的变量的内存区域,如全局变量,静态全局变量.(没有动态全局变量) 程序区:存放程序语句. 变量的作用域:局部和全局. 全局变量:在所有函数外定义(包含主函数

Linux内核学习笔记(6)-- 进程优先级详解(prio、static_prio、normal_prio、rt_priority)

匿名 (未验证) 提交于 2019-12-02 21:53:52
  Linux 中采用了两种不同的优先级范围,一种是 nice 值,一种是实时优先级。在上一篇粗略的说了一下 nice 值和实时优先级,仍有不少疑问,本文来详细说明一下进程优先级。linux 内核版本为 linux 2.6.34 。   进程优先级的相关信息,存放在进程描述符 task_struct 中: struct task_struct { ... int prio, static_prio, normal_prio; unsigned int rt_priority; ... }   可以看到,有四种进程优先级: prio、static_prio、normal_prio 和 rt_priority,它们的具体定义在 kernel/sched.c 中,在介绍这四种优先级之前,先介绍一下以下宏定义: /* linux-kernel 2.6.34 /include/linux/sched.h */ /* * Priority of a process goes from 0..MAX_PRIO-1, valid RT * priority is 0..MAX_RT_PRIO-1, and SCHED_NORMAL/SCHED_BATCH * tasks are in the range MAX_RT_PRIO..MAX_PRIO-1. Priority * values are