java基础_day0022_4个权限修饰符_

Linux命令umask返回的0022怎么理解及其在编程中的应用 在Linux中,每个文件和目录都有权限位,用于控制对它们的读取、写入和执行权限。换句话说,当创建新的文件或目录时,umask的返回值0022会导致所属组和其他用户的写入权限被取消,而所有者的权限则不受影响。在这个特定的问题中,umask返回的值是0022,我们将深入探讨它的含义以及在编程中的应用。通过理解umask返回值的含义,并在编程中使用它,我们可以更好地控制文件和目录的默认权限,确保系统的安全性和隐私。具体来说,它会从新创建的文件或目录的权限中屏蔽掉对应的位,以达到限制默认权限的目的。 阅读详情


权限修饰符  可以修饰 类的的三大要素  属性 方法  构造器。 也可以修饰类本身




   private     只能在本类中调用
    
   default     可以在本类 和 同一个包中调用
   
   protected   可以在本类 和 同一个包 及 子类中调用 
   
   pulbic      可以在任何地方调用。



package day08;

public class Person {
	private  String  name;
	int age;
	protected int id;
	public  String desc;
	
	
}

同一个包下的测试类


package day08;

public class TestPerson {
	public static void main(String[] args) {
		Person p = new Person();
		p.age=1;
		p.desc="描述";
		p.id=100001;
//		同一个包下 无法调用  私有的属性    无法调用私有的属性;
//		p.name="john";
		
	}
}


不同包下的 子类   及 不同包下的 普通类 

package day08.day02;

import day08.Person;

public class Student {
	public static void main(String[] args) {
		Person  p = new  Person();
//		只能调用公共的属性和 方法
		p.desc="dfg";  
		
	
		
		
	}
}



class  Teacher extends  Person {
	public static void main(String[] args) {
		Teacher p = new Teacher();
			p.id=123;
			p.desc="sd";
			
	}
}


构造器函数中 this.();   只能在首行


package day08_01;


public class TestPerson {
	public static void main(String[] args) {
		Person p =new Person();
		System.out.println(p.getAge());
		
		Person p1 =new Person();
		p1.setAge(34);
		System.out.println(p1.compare(p));
	}
}


class  Person{
	private String name;
	private int age;
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public int getAge() {
		return age;
	}
	public void setAge(int age) {
		this.age = age;
	}
	
	public void eat(){
		System.out.println("chifan");
	}
	public void sleep(){
		System.out.println("shuijiao");
	}
	public Person() {
		this.name = "qwe";
		this.age = 2;
	}
	
	public  Person(int  age){
		this();//构造器中 只能在首行
		this.age=age;
	}
	
	public int  compare(Person p){
		if(this.age >p.age)
			return 1;
		else if(this.age<p.age)
			return -1;
		else
			return 0;
		
	}
	
	
	
	
	
	
	
	
	
}










6、Cocos2D游戏开发:精灵添加与角色实现 本文详细介绍了在Cocos2D游戏开发中如何添加背景精灵和玩家角色精灵。通过创建GameScene场景、组织项目资源、使用多分辨率图像适配不同设备,并深入讲解了将角色拆分为上下半身以实现更真实瞄准效果的原理。文章还解析了Cocos2D的图像搜索机制、锚点概念及其应用,以及如何通过父子节点关系管理复合角色。最终实现了猎人角色在场景中的正确显示与定位,为后续动画和交互功能打下基础。 阅读详情

相关推荐

实战案例:用多智能体系统模拟房地产市场的架构设计

房地产市场是典型的复杂自适应系统:买方纠结“要不要上车”、卖方盘算“挂多少钱能快速成交”、中介忙着“撮合两边赚佣金”、政府琢磨“怎么调政策稳房价”——每一个参与者的微小决策,最终都会汇聚成“房价暴涨”“成交冰点”这样的宏观现象。传统的计量经济学模型(比如线性回归)假设“所有人都是理性人”,但现实中没人能算清所有变量——你可能因为“同事买了学区房”就跟风,也可能因为“怕失业”而放弃买房。这时候,多智能体系统(MAS)

移动开发前沿的博客 1122

java基础知识点

java中有四大修饰符,分别为private,default,protected,public,下面主要是四者之间的区别: private(私有的) private可以修饰成员变量,成员方法,构造方法,不能修饰类(此刻指的是外部类,内部类不加以考虑)。被private修饰的成员只能在其修饰的本类中访问,在其他类中不能调用,但是被private修饰的成员可以通过set和get方法向外界提供访问方式...

yechiyu167的博客 1078

零基础玩转NILM:用nilmtk提取UKDALE电器数据的保姆级教程

本文为零基础用户提供了一份详细的NILM入门指南,重点讲解如何使用nilmtk工具包从UKDALE数据集中提取电器级用电数据。教程涵盖环境搭建、核心概念解析、数据提取实战及常见问题排查,帮助读者快速掌握非侵入式负荷监测的数据预处理关键步骤。

rgv234567的博客 498

Linux文件权限

本文除必要的地方会分开讨论外,将目录视为特殊的文件类型一起讨论。 用户与用户组 在Linux中,用户是能够获取系统资源的权限的集合。而用户组则是将若干用户划分在一起形成的集合,但其成员(用户)之间对文件所拥有的权限不一定相同。Linux是一个支持多用户多任务的系统,因此可能常常会有多人同时使用这台主机来进行工作,为了考虑每个人的隐私权以及每个人喜好的工作环境,也为了保持Linux系统资源分配的...

程序人生 800

海康VM加密狗无法识别常见问题排查

海康VM加密狗无法识别常见问题排查

视觉人机器视觉的博客 2696

stm32f407等芯片(HAL库)时钟频率修改(乱码)

其他片子及库文件未知、未验证,只是在使用stm32f407ZG配置串口打印的时候,出现乱码,就从以下几方面定位问题: 1. 确认串口GPIO相关配置; 2. 确认波特率等参数; 3. 确认时钟频率; 结果这次使用YH的串口打印程序在ZDYZ的开发板调试项目工程(有点另类...),做功能验证,就出现了以上问题,出于好奇开始调试,最终发现是时钟频率问题。 看到下图这个配置,因为ZDYZ开发板使用的是8MHz外部晶振(好像默认的是25MHz,如图2),所以他这里PLL_M是25,不是推荐值,感...

bulefire2009的博客 5514

linux文件和目录权限(umask)

umask命令用来设置所创建文件和目录的默认权限 。 umask默认的值为0022(掩码),其中第一位代表了一项特别的安全特性,叫作粘着位(sticky bit),后面三个数值组成了umask的八进制值。 其中读(r)写(w)执行(x)分别代表着值4、2、1。 相对于文件来说,权限全部开启时只有读取和写入两种权限。所以全权限时对应的八进制值为666; 相对于目录来说,权限全部开启时有读取、写入和执行三种权限。所以全权限时对应的八进制值为777。 umask值只是个掩码,它会屏蔽掉不想授予...

qq_40508591的博客 3266

骨架动作识别新突破:CTR-GCN的通道拓扑优化策略解析

本文深入解析了CTR-GCN在骨架动作识别中的通道拓扑优化策略。通过引入通道级拓扑细化,CTR-GCN克服了传统GCN共享拓扑结构的局限性,显著提升了动作识别的准确率。文章详细介绍了CTR-GCN的三大核心组件设计,包括特征变换模块、通道拓扑建模和通道聚合技术,并提供了实战调参经验和模型压缩技巧,为计算机视觉领域的研究者和开发者提供了有价值的参考。

weixin_27310417的博客 192

【JavaSE学习笔记】权限修饰符(private、default、protected、public)与状态修饰符(final、static)

类,成员方法,成员变量使用不同的权限修饰符进行修饰,他们的访问权限也会不同。作用范围从小到大依次为private

wrjwww的博客 712

STM32版CCD线性摄像头寻线寻迹小车_stm32接ccd

目前大多数的小车寻线寻迹都是用红外对管寻线,这是比较简单也比较成熟的技术方案,且成本也低。本文将介绍使用CCD线性摄像头寻线寻迹。TSL1401 线性传感器由一个 1x128 的光电二极管阵列、相关的电荷放大电路以及一个内部像素数据保功能组成。内部像素数据保功能可以为所有像素点提供同时积分的开始和停止时间。该阵列由 128 个像素组成,每个像素的感光面积为 3,524.3 平方微米。像素之间的间隔为 8μm。内部控制逻辑简化了操作,该模块需要串行输入(SI)信号和时钟信号(CLK)。

2401_87557129的博客 3228

Power EM与Signal EM解决办法与原理分析

1.面对power EM,首先检查missing via,补全via,还可以加宽,加密局部power mesh,一些power IO出pin有power EM问题,可以叠加多层线和垂直方向补power形成网络降低并联电阻和提供更多电流通路解决,这种方法还可以降低ir drop。3.先进工艺有一个via ladder的方法可以解决power/signal em问题,clock cell出pin绕线或者power rail连接power stripe通过搭梯子的方式连接,原理还是分流。

m0_61544122的博客 4739

几分钟让你了解Linux下文件权限掩码及作用

除此之外剩下九个字母,三个一组分别表示文件所有者(owner)对当前文件享有的权限,与文件所有者同用户组的用户(group)对文件享有的权限,其他用户(other)对文件享有的权限。而权限掩码的作用是根据用户的需求屏蔽掉不希望给别人的权限,比如普通文件的权限是“-rw-rw-rw-”,所有用户对文件都享有读写权限,而这带来的问题就是文件可以被任何人修改从而导致文件数据被篡改导致数据丢失。r-x:表示其他用户对当前文件有读权限,可执行权限,没有写权限不能修改文件。文件最终的权限是0644。

m0_70888041的博客 2617

麻辣香锅病毒分析

Spicy Hot Pot浏览器劫持病毒(麻辣香锅病毒)从2020年初被安全公司监测到,因其病毒模块带有MLXG_KM被安全行业代称麻辣香锅病毒。目前通过各种激活工具传播, 包括暴风激活、小马激活和KMS激活等诸多工具,疑似与下载站进行合作推广此类激活工具。Spicy Hot Pot 是一个浏览器劫持 Rootkit,它会将用户的主页更改为指向恶意软件操作员控制的页面,此外还会将内存转储从机器上传到预定义的服务器,并结合本地更新功能以确保其保持更新。通常浏览器劫持者会通过更改用户主页的恶意可执行文件或注册表

不忘初心,护天下安全! 4787

java四个权限修饰符

注意: default是指不写,而不是写了 “ default ” public protected default private 同类 yes yes yes yes 同包 yes yes yes 不同包子类 yes yes 不同包非子类 yes ...

Chengqb的博客 475

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

java四大权限修饰符之间的区别

java中有四大修饰符,分别为private,default,protected,public,下面主要是四者之间的区别: - private(私有的) private可以修饰成员变量,成员方法,构造方法,不能修饰类(此刻指的是外部类,内部类不加以考虑)。被private修饰的成员只能在其修饰的本类中访问,在其他类中不能调用,但是被private修饰的成员可以通过set和get方法...

一只鱼的博客 1万+

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

Java中4种权限修饰符及其作用范围

Java中四种权限修饰符:public(公共的)、protected(受保护的)、default(默认的)、private(私有的) 修饰符 同一个类 同一个包 子类 任何地方 private yes       default yes yes     protected yes yes yes...

唐蹦桶的博客 9227

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

深入浅出linux系统umask值及其对应的文件权限讲解 (转)

晋显中国 晋显中国风--晋中   加博友   关注她   她的网易微博 最新日志 某人,我想和你有个家,过这所有爱几米的人娱乐做个会享受生活的女人写给自己用Windows Server 2003配置V 随机阅读 同气质美女大PK 你最中意谁任正非之女孟晚舟的风头12星座的情人该如何关心?后危机大国利益得失盘点国五条离婚北京人成了"京白梨"?活用“团购”,避免电

meimei1223865690的专栏 1019

Java四个权限修饰符

封装的四个权限修饰符作用 一.作用范围 private : 作用范围是当前类 类可见性 默认 : 作用范围是当前包 包可见性 protected : 作用范围是当前包+其他包中的子类 public : 作用范围是当前包+其他包=当前项目的所有包 二.作用的对象 类的成员可以使用四个修饰符修饰: private,默认 ,protected ,pub...

水滴kai的博客 528

java四个权限修饰符的区别

jz6666jz的博客 241

四种权限修饰符

public public是访问权限最高的修饰符,可以在不同包,不同类中被访问。 protected protected能被该类的子类所访问(子类可以和父类不在一个包中)也可以被本包中其他类访问。 default default只能在本包中被访问。 private private只能在本类中被访问。在其他类中是不能被访问的。 | public | prote...

jingjingpwj的博客 568

Java中封装的4个权限修饰符

Java中封装的4个权限修饰符 使用访问权限修饰符对类的成员进行控制,在Java中称为“封装”。 用来控制类的成员和类的使用范围 权限修饰符包括: private : 私有的 default :默认的 protected : 受保护的 public : 公共的 4个修饰符的权限如下: private default protected public ...

_纳川 871

linux文件与目录的默认权限和隐藏权限。

touch新建文件或修改文件时间 每个文件在liux下都会记录许多时间参数,其实有三个主要的变动时间,三个时间的意义有多少: * modification time(mtmie): 当文件内容数据改变时,就会更新这个时间,内容数据是指文件内容,而不是文件属性或权限 status time(ctime): 该文件状态改变时,就会更新这个时间,像权限或属性改变,就会更新时间 access tim

wq1856225的博客 790

linux2权限设置篇

********为文件或文件夹添加权限的主要依据还是按照 修改普通权限--->隐藏权限--->特殊权限的顺序来设置。 1:***********修改文件权限,从文件权限的顺序来判断是否具有改文件的权限。 -rwxrwxrwx     r=4 w=2 x=1 第一个wrx代表user的权限,第二个rwx代表user的group的权限, 第三个rwx代表other的权限 2:修改

酒徒词客 984

java 四种权限修饰符

四种权限修饰符:

_清风明月的博客 374

Java 四种访问修饰符区别

在Java编程语言中有四种权限访问控制符,这四种访问权限的控制符能够控制类中成员的可见性。 一、public (1)定义:public是公共的,被public所修饰的成员可以在任何类中都能被访问到。 (2)修饰的成分: public能用来修饰类,在一个java源文件中只能有一个类被声明为public,而且一旦有一个类为public,那这个java源文件的

初学者 1万+

java 访问权限修饰符理解

访问权限修饰符 a、私有权限(private)    private可以修饰数据成员,构造方法,方法成员,不能修饰类(此处指外部类,不考虑内部类)。被private修饰的成员,只能在定义它们的类中使用,在其他类中不能调用。    b、默认权限(default)    类,数据成员,构造方法,方法成员,都能够使用默认权限,即不写任何关键字。默认权限即同包权限,同包权限的元素只能在定义它们的类

eclipse_yin的博客 1648
上一篇: java基础_day0021_类的继承_
下一篇: java基础_day0022_java关键字_this_super_构造器_子类对象实例化
prefectjava
博客等级 码龄16年 26粉丝 101原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

prefectjava

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值