精华内容
下载资源
问答
  • 为了解决上述问题,将用户的查询范围引入到匿名区的构造中,匿名服务器首先生成满足用户隐私保护需求的初始子匿名区,再以LSP的查询区域面积为判定标准进行子匿名区合并。安全性和实验分析表明,所提方案在保护用户...
  • java匿名内部类什么是匿名内部类?匿名内部类的使用场景?匿名内部类如何创建?匿名内部类的实现和使用例1(实现接口)例2(继承类) 什么是匿名内部类? 匿名内部类,顾名思义,就是不知道这个类到底是什么名字,也...

    什么是匿名内部类?

    匿名内部类,顾名思义,就是不知道这个类到底是什么名字,也就是不知道类名。

    匿名内部类的使用场景?

    匿名内部类适合创建那种只需要使用一次的类,也就是说创建一个匿名内部类,只需要用一次即可。

    匿名内部类如何创建?

    new 类名(参数) | 实现接口()
    {
    // 匿名内部类的类体部分
    }
    从上面的定义可以看出,匿名内部类必须继承一个父类,或实现一个接口,但最多只能继承一个父类,或者实现一个接口。
    两个规则:
    	匿名内部类不能是抽象类。
    	匿名内部类不能定义构造器。由于匿名内部类没有类名,所以无法定义构造器,但匿名内部类可以初始化块,可以通过初始化块来完成构造器需要完成的工作。
    

    匿名内部类的实现和使用

    例1(实现接口)

    首先,定义一个匿名类要实现的接口,代码如下

    public interface Product{
     double getPrice();
     String getName();
    

    然后,定义一个实体类,实体类定义一个方法,方法的参数为上述的接口对象,到时候会传入一个匿名类对象,这个匿名类实现了上述创建的接口,代码如下

    public class Anony{
    	public void test(Product product){
    	System.out.println("购买了一个"+product.getName()+",花掉了"+product.getPrice());
    	}
    }
    

    最后测试运行:

    pubic class Test{
    	public static void main(String[] args){
    		Anony anony=new Anony();
    		// 注意,此处要传入一个匿名类对象
    		anony.test(new Product(){
    			@Override
    			public double getPrice(){
    					return 578.6;
    				}
    			@Override
    			public String getName(){
    					return "联想笔记本";
    				}
    			}
    		);
    	}
    }
    

    输出:

    购买了一个联想笔记本,花掉了578.6
    

    总结:此处匿名内部类的作用就是实现了一个接口,创建了一个实现了该接口的类的对象,然后重写了这个接口中的方法。

    例2(继承类)

    首先,定义一个匿名类需要实现的抽象类,代码如下:

    public abstract class Device{
    	private String name;
    	public abstract double  getPrice();
    	public String getName(){
    	 	return name;
    	}
    	public Device(){}
    	public Device(String name){
    		this.name=name;
    	}
    } 
    

    然后,定义一个实体类,实体类定义一个方法,方法的参数为上述的抽象类对象,到时候会传入一个匿名类对象,这个匿名类继承了上述创建的抽象类,代码如下

    public class Anony {
    
        public void test(Device device){
            System.out.println("购买了一个"+device.getName()+"花费了"+device.getPrice());
        }
    }
    

    最后测试运行:

    pubic class Test{
    	public static void main(String[] args){
    		Anony anony=new Anony();
    		// 注意,此处要传入一个匿名类对象
    		anony.test(new Device("海尔电视机"){
    			@Override
    			public double getPrice(){
    					return 578.6;
    				}
    		);
    		Device device=new Device(){
    			@Override
    			public double getPrice(){
    				return 556.56;
    			}
    			@Override
    			public String getName(){
    				return "美的电视机";
    			}
    		};
    		annoy.test(device);
    	}
    }
    

    输出:

    购买了一个海尔电视机,花掉了578.6
    购买了一个美的电视机,花掉了556.56
    

    总结:对象匿名类中继承抽象类,对于抽象类里面的抽象方法,必须要重写,对象抽象类里面的非抽象方法,可重写也可以不重写。

    展开全文
  • 随着C#的发展,该语言内容不断丰富,开发变得更加方便快捷,C# 的锋利尽显无疑。下面通过本文给大家分享C# 匿名对象(匿名类型)、var、动态类型 dynamic,需要的的朋友参考下吧
  • 匿名内部类

    千次阅读 2019-10-22 20:28:46
    匿名内部类 匿名内部类:没有名称的类,主要用来创建对象(只创建一次) 匿名内部类需要通过父类或者接口实现。 语法: 父类名/接口名 对象名 = new 父类名/接口名 { 重写的父类的方法 或 实现的接口中的...

    匿名内部类

    匿名内部类:没有名称的类,主要用来创建对象(只创建一次)
    匿名内部类需要通过父类或者接口实现。
    语法:

    父类名/接口名 对象名 = new 父类名/接口名 {
       重写的父类的方法
       或
       实现的接口中的方法
    };
    

    示例1:普通父类

    • 父类:
    public class A {
        public void fun(){
            System.out.println("A fun");
        }
    }
    
    • 测试代码:
    public static void main(String[] args) {
        class B1 extends  A{
    
        }
        B1 obj1 = new B1();
        obj1.fun();
    
        class B2 extends  A{
            @Override
            public void fun() {//重写父类的方法
                System.out.println("B2 fun");
            }
        }
        B2 obj2 = new B2();
        obj2.fun();
    
        
    
        A obj11 = new A(){
    
        };
        obj11.fun();
    
        A obj22 = new A(){
            @Override
            public void fun() {
                System.out.println("22 fun");
            }
        };
        obj22.fun();
    
        new A(){
            @Override
            public void fun() {
                System.out.println("33 fun");
            }
        }.fun();
    }
    

    示例:抽象父类

    • 抽象父类:
    public abstract class CC {
    	public void fun() {
    		System.out.println("fun");
    	}
    	public abstract void fun2();
    }
    
    • 测试代码:
    public static void main(String[] args) {
    	CC obj = new CC() {
    
    		public void fun2() {
    			System.out.println("xixi");
    		}
    
    	};
    	obj.fun2();
    	
    	new CC() {
    
    		public void fun2() {
    			System.out.println("xixi");
    		}
    
    	}.fun2();
    }
    

    示例:接口

    • 接口:
    public interface A {
         void fun();
    }
    
    • 测试代码:
    public static void main(String[] args) {
    
        class B2 implements A {
            @Override
            public void fun() {//重写父类的方法
                System.out.println("B2 fun");
            }
        }
        B2 obj2 = new B2();
        obj2.fun();
    
        
    
        A obj22 = new A() {
            @Override
            public void fun() {
                System.out.println("22 fun");
            }
        };
        obj22.fun();
    
        new A() {
            @Override
            public void fun() {
                System.out.println("33 fun");
            }
        }.fun();
    }
    
    展开全文
  • 匿名上位机v7.zip

    2020-07-16 20:15:32
    匿名上位机v7.........史上最最强,史上最最强史上最最强功能最多可以显示波形的串口调试助手。你值得拥有
  • 匿名上位机 四轴代码 及 上位机
  • mmap创建匿名内存映射: 第二个参数:指定映射大小 第四个参数:需要添加MAP_ANON的宏 第五个参数:-1 anon_mmap.c #include <stdio.h> #include <unistd.h> #include <stdlib.h&...

    关于mmap的基础知识在我之前的博文以及介绍过了,博文地址:https://blog.csdn.net/weixin_38815609/article/details/90082944
    下面就开门见山,直奔主题:

    编译环境:Linux 18.04 Vim
    mmap创建匿名内存映射区:
    第二个参数:指定映射区大小
    第四个参数:需要添加MAP_ANON的宏
    第五个参数:-1
    anon_mmap.c

    #include <stdio.h>
    #include <unistd.h>
    #include <stdlib.h>
    #include <sys/stat.h>
    #include <sys/types.h>
    #include <sys/mman.h>
    #include <sys/wait.h>
    #include <string.h>
    #include <fcntl.h>
    
    int main(int argc,char *argv[])
    {
        int len = 4096;
    
        //创建匿名内存映射区
        void *ptr = mmap(NULL,len,PROT_READ | PROT_WRITE,MAP_SHARED | MAP_ANON,-1,0);
        if(ptr == MAP_FAILED)
        {
            perror("mmap error");
            exit(1);
        }
        //创建子进程
        pid_t pid = fork();
        if(pid == -1)
        {
            perror("fork error");
            exit(1);
        }
        else if(pid > 0)
        {
            
    展开全文
  • 匿名上位机V7.rar

    2020-05-25 21:53:04
    匿名上位机V7版本,其包含飞控显示,波形显示的等功能,可用于调试encoder、PID等,亦可当作普通的串口显示助手来使用,其通信协议在软件内部,可自行查找。
  • 匿名飞控 匿名飞控

    2014-07-11 19:11:12
    匿名飞控 STM32
  • 匿名四轴上位机

    2018-02-28 18:22:38
    匿名四轴上位机软件介绍: 1,该软件为:ANO_Tech匿名四轴上位机_V2.6.exe,由匿名四轴提供,可用于MPU6050的测试调试。 2,该软件双击后,会弹出一个蓝色的小界面,直接关闭即可。然后才会进入主界面。 3, 进入主...
  • 代码基于stm32f103c8t6,通过串口将数据发送到匿名上位机,并将数据波形显示出来,方便调试参数。
  • mmap匿名映射

    千次阅读 2018-11-02 21:51:50
    从原型可知,存在一个参数为fd,根据fd,存在一种情况叫匿名映射,所谓匿名映射,表示不存在fd这么个真实的文件。实现匿名映射的方式主要有以下两种: 1、BSD 提供匿名映射的办法是fd =-1,同时 flag 指定为MAP_...

    一、原理

    mmap是一种内存映射文件的方法,即将一个文件或者其它对象映射到进程的地址空间,实现文件磁盘地址和进程虚拟地址空间中一段虚拟地址的一一对映关系。实现这样的映射关系后,进程就可以采用指针的方式读写操作这一段内存,而系统会自动回写脏页面到对应的文件磁盘上,即完成了对文件的操作而不必再调用read,write等系统调用函数。相反,内核空间对这段区域的修改也直接反映用户空间,从而可以实现不同进程间的文件共享。

    进程在用户空间调用库函数mmap,原型:void *mmap(void *start, size_t length, int prot, int flags, int fd, off_t offset);来实现内存映射。

    从原型可知,存在一个参数为fd,根据fd,存在一种情况叫匿名映射,所谓匿名映射,表示不存在fd这么个真实的文件。实现匿名映射的方式主要有以下两种:
    1、BSD 提供匿名映射的办法是fd =-1,同时 flag 指定为MAP_SHARE|MAP_ANON。
          ptr = mmap(NULL,sizeof(int),PROT_READ|PROT_WRITE,
                      MAP_SHARED|MAP_ANON,-1,0);

    2、SVR4 提供匿名映射的办法是 open  /dev/zero设备文件,把返回的文件描述符,作为mmap的fd参数。
          fd = open("/dev/zero",O_RDWR);
    /dev/zero 是一个特殊的文件,当你读它的时候,它会提供无限的空字符(NULL, ASCII NUL, 0x00)
     一个作用是用它作为源,产生一个特定大小的空白文件。

    匿名内存映射适用于具有亲属关系的进程之间;由于父子进程之间的这种特殊的父子关系,在父进程中先调用mmap(),然后调用fork(),那么,在调用fork() 之后,子进程继承了父进程的所有资源,当然也包括匿名映射后的地址空间和mmap()返回的地址,这样父子进程就可以通过映射区域进行通信了;

    这里不是一般的继承关系,一般来说,子进程单独维护从父进程继承下来的一些变量,而mmap()返回的地址却是由父子进程共同维护的;对于具有亲属关系的进程之间实现共享内存的最好方式应该是采用匿名映射的方式。此时,不必指定具体的条件,只要设置相应的标志即可。

    二、代码

    下面分别以匿名映射方式举例说明父子进程之间的通信:

    1、fd=-1

    #include <unistd.h>
    #include <fcntl.h>
    #include <stdio.h>
    #include <stdlib.h>
    #include <errno.h>
    #include <sys/mman.h>
    #include <semaphore.h>
     
    struct file_content
    {
        	sem_t st;
        	void *pv;
    }file_content;
     
    
    #define NINT 16
    
     
    int main (int argc, char *argv[])
    {
        	struct file_content *pfc;
        	pfc =mmap (NULL, sizeof (file_content) + sizeof (int) * NINT,
    		PROT_READ | PROT_WRITE, MAP_SHARED|MAP_ANON, -1, 0);
     
        	if (pfc == MAP_FAILED)
          	{
    	  	printf ("map failed!\n");
    	  	exit(3);
          	}
    
    	//信号量初始化为1,用于互斥
        	sem_init (&(pfc->st), 1, 1);		
    	//pv指向结构体下一个字节的地址
        	pfc->pv = (void *) ((char *) pfc + sizeof (struct file_content));     
        	printf ("结构体地址:\t\t%x\n结构体下一位置地址:\t\t%x\n", (int)pfc, (int)pfc->pv);
     
    	// 不加上这句的话,可能输出会卡在那里!
    	setbuf(stdout,NULL); 
    
    	//子进程
        	if (fork () == 0)		
          	{
    	  	int i;
    	  	while (1)
    	    	{
    			sem_wait (&(pfc->st));
    			printf ("Child process\n");
    			int *p = pfc->pv;
    			for (i = 0; i < NINT; i++)
    		  	{
    		      		p[i] = 2 * i;
    		  	}
    			
    			for (i = 0; i < NINT; i++)
    		  	{
    		      		printf ("%d ", p[i]);
    		  	}
    			printf ("\n"); 
    			sem_post (&(pfc->st)); 
    			sleep(2); 
    	    	}
          	}
    	// 父进程
        	else			
          	{
    	  	int i;
    	  	while (1)
    	    	{
    			sem_wait (&(pfc->st));
    			printf ("Father process\n");
    			int *p = pfc->pv;
    			/*
    			for (i = 0; i < NINT; i++)
    		  	{
    		      		p[i] = 3 * i;
    		  	}
    			*/
    			
    			for (i = 0; i < NINT; i++)
    		  	{
    		     		printf ("%d ", p[i]);
    		  	}
    			printf ("\n");
    			sem_post (&(pfc->st));
    			sleep(2);
    	    	}
          	}
    
        	if (munmap (pfc, sizeof (file_content) + sizeof (int) * NINT) == -1)
          	{
    	  	printf ("ummap!\n");
    	  	exit (2);
          	}
        	return 0;
    }
    

    2、使用/dev/zero

    #include <unistd.h>
    #include <fcntl.h>
    #include <stdio.h>
    #include <stdlib.h>
    #include <errno.h>
    #include <sys/mman.h>
    #include <semaphore.h>
     
    struct file_content
    {
        	sem_t st;
        	void *pv;
    }file_content;
     
    
    #define NINT 16
    #define FILE_PATH "/dev/zero"
    
     
    int main (int argc, char *argv[])
    {
    
    	int fd;
    	fd = open(FILE_PATH,O_RDWR);
    	if(fd < 0)
    	{
    		printf("open zero fail \n");
    		exit(2);
    	}
    	
        	struct file_content *pfc;
        	pfc =mmap (NULL, sizeof (file_content) + sizeof (int) * NINT,
    		PROT_READ | PROT_WRITE, MAP_SHARED|MAP_ANON, fd, 0);
    
    	close(fd);
     
        	if (pfc == MAP_FAILED)
          	{
    	  	printf ("map failed!\n");
    	  	exit(3);
          	}
    
    	//信号量初始化为1,用于互斥
        	sem_init (&(pfc->st), 1, 1);		
    	//pv指向结构体下一个字节的地址
        	pfc->pv = (void *) ((char *) pfc + sizeof (struct file_content));     
        	printf ("结构体地址:\t\t%x\n结构体下一位置地址:\t\t%x\n", (int)pfc, (int)pfc->pv);
     
    	// 不加上这句的话,可能输出会卡在那里!
    	setbuf(stdout,NULL); 
    
    	//子进程
        	if (fork () == 0)		
          	{
    	  	int i;
    	  	while (1)
    	    	{
    			sem_wait (&(pfc->st));
    			printf ("Child process\n");
    			int *p = pfc->pv;
    			for (i = 0; i < NINT; i++)
    		  	{
    		      		p[i] = 2 * i;
    		  	}
    			
    			for (i = 0; i < NINT; i++)
    		  	{
    		      		printf ("%d ", p[i]);
    		  	}
    			printf ("\n"); 
    			sem_post (&(pfc->st)); 
    			sleep(2); 
    	    	}
          	}
    	// 父进程
        	else			
          	{
    	  	int i;
    	  	while (1)
    	    	{
    			sem_wait (&(pfc->st));
    			printf ("Father process\n");
    			int *p = pfc->pv;
    			/*
    			for (i = 0; i < NINT; i++)
    		  	{
    		      		p[i] = 3 * i;
    		  	}
    			*/
    			
    			for (i = 0; i < NINT; i++)
    		  	{
    		     		printf ("%d ", p[i]);
    		  	}
    			printf ("\n");
    			sem_post (&(pfc->st));
    			sleep(2);
    	    	}
          	}
    
        	if (munmap (pfc, sizeof (file_content) + sizeof (int) * NINT) == -1)
          	{
    	  	printf ("ummap!\n");
    	  	exit (2);
          	}
        	return 0;
    }
    

    通过上述代码即可通过匿名内存映射的方式实现父子进程之间的通信,程序执行结果如下图所示:

    父子进程对于匿名映射空间的修改都会被彼此所见,通过这样一段共享内存,实现了父子进程之间的通信。

     

    展开全文
  • 该文件为使用匿名4.3上位机发送协议,使用匿名上位机可以传输数据和显示波形,该协议编写可以支持IIC,SPI多种方式进行传输
  • 匿名上位机V6.5版本

    2018-11-03 10:42:21
    匿名上位机V6.5版本,2018年11月3日发布,本上位机使用讲解请移步:https://blog.csdn.net/wangjt1988/article/details/83684188
  • 随机匿名聊天软件RandomChat是一个基于webRtc技术,仿造的omegle、ChatRandom和 Chatroulette的随机匿名聊天软件。 特点: 基于webrtc技术,带宽占用低; 算法匹配用户随机聊天,默认一个房间只允许两个人加入 支持...
  • 资源名称:使用Telnet发送匿名邮件   资源太大,传百度网盘了,链接在附件中,有需要的同学自取。
  • 主要给大家介绍了关于Java匿名内部类的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
  • 移植性优良的匿名飞控上位机协议源码,支持V6版本上位机,稍加改动可支持其他任意版本。注释清楚,程序清晰易懂,包含使用例程。
  • 匿名邮件发送工具可以帮你发送匿名邮件,如果你想给某人发一封邮件却不想让其知道你的邮箱地址,用这个软件就能实现,利用它我们就可以发送带有附件的匿名邮件了,一定会成为
  • 匿名地面站6.5版本传输协议,第六版本可用,包括详细的C文件以及头文件,本人已经全部测试完毕可以使用,相关说明可以查阅本人博客或私聊,如果你下载以后使用出现问题,可私聊解决
  • 匿名上位机V6.5版本,2018年11月3日发布 匿名上位机V7.0版本,2020年2月22日发布 最新上位机使用教程:https://www.bilibili.com/video/av90875255/
  • 匿名通信系统是一种建立在应用层之上结合利用数据转发、内容加密、流量混淆等多种隐私保护技术来隐藏通信实体关系和内容的覆盖网络。然而,作为覆盖网络运行的匿名通信系统,在性能和安全保障上的平衡问题上存在不足...
  • 本文介绍了js匿名函数和闭包的相关内容,供大家参考,具体内容如下 匿名函数 [removed] //function(){}//会报错 var fun = function(){};//将匿名函数赋值给变量 (function(){})();//匿名函数自执行 function...
  • 主要介绍了C++编程中的匿名类类型和位域,是C++入门学习中的基础知识,需要的朋友可以参考下
  • 本压缩包里包含了三个版本匿名上位机,总用一个能够在电脑上使用。 三个版本分别为V2.6,V5.12和V6.0
  • 一门专业课要求用python实现k-匿名,在github上找的源码发现都不太符合问题,于是就自己改进了一下,算是个小demo吧,在python2下可以成功跑通,直接运行final.py,数据信息存在.csv
  • 主要介绍了Java匿名类,匿名内部类,结合实例形式分析了Java匿名类,匿名内部类相关原理、用法及操作注意事项,需要的朋友可以参考下
  • 提出了基于匿名化流表的网络数据分组实时匿名方法(Fad-Pan,online trace anonymization based on the anonymous flow table),主要研究Fad-Pan算法以及研发基于DPDK的Fad-Pan原型系统。实验结果表明,Fad-Pan算法...
  • 主要简单给我们介绍了java中匿名内部类构造函数,并附上了简单的示例,有需要的小伙伴可以参考下。
  • 最近做比赛,购买了匿名的东西,这些代码就无偿分享给大家了,仅供学习,如有侵权,联系我删除。(其实我就是想换几个下载积分!!)

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 581,102
精华内容 232,440
关键字:

匿名区