我知道大多数OOP语言(如果不是全部)的私有可见性在类的基础上定义隐私,即同一类的不同实例可以访问彼此的私有属性/方法.
我想阻止这一点,我想知道什么是最好的设计/实现,以便在不产生负面性能影响的情况下做到这一点.
例如,我知道我可以实现AOP并使用符号,但这会导致性能下降,因为languange引擎必须创建类的反射并检查注释.所以,基本上,我的问题是,避免同一个类的实例访问彼此的私有方法/属性的最佳方法是什么?
例:
class Product
{
private $_prize;
public function __construct($prize)
{
$this->_prize = $prize;
}
public function calculateDiscount(Product $extraProduct)
{
$extraProduct->_prize = 0; //How to avoid this?
}
}
$productA = new Product(10);
$productB = new Product(25);
$productA->calculateDiscount($productB);
Run Code Online (Sandbox Code Playgroud) 我注册了GitHub 集成并下载了 RSA 私钥(PEM 文件)。在我的 PHP 脚本中,我使用这个库来编码我的令牌,方式如下:
use Firebase\JWT\JWT;
$token = [
"iat" => time(),
"exp" => time() + 3600,
"iss" => $my_integration_id
];
$key = file_get_contents($path_to_pem_file);
echo JWT::encode($token, $key, "RS256");
Run Code Online (Sandbox Code Playgroud)
PEM文件是这样的(我已经重新生成了私钥):
-----BEGIN RSA PRIVATE KEY-----
MIIEpQIBAAKCAQEA1bT61yW2fo4SI6TZXo+3dsyyxitcsw0kdhoGufsEkgdqbpeF
2/TfJtwYj9Veq11LNHuyoYk51DxUIyoC2Ul45E/s9kOw+qjXDJAOf3z9kq+obcOL
145ivQwsRF8bB1MQf8YsE/jAhVdxdIfRbw4UG8Fn0RPce/WQ18RI7Li4xfM138RP
2MQhZsx289ale7n+OtDzzajC4oj9qlaNFFKpSuCVGf6fqnktCOoFu1+ouB/+u3oc
eneS/qmSxwI7N7MrxOTnoHqhxIiatNFisK85Anc/WZ9duWS9i88GhtK86YMaWnCj
5nodzFwSF6SzBS+iOrI2AJennOTjsOrtjjQXzQIDAQABAoIBAQDKVhoRTfGljRn7
iX8NGwFXh6PUIQYZuN3GvAmWWOYQ5NiOcQQaJ5SIlGbk9940XZZw0JVmgCiym5QF
3ybnV7sQX+Q5ngmYqfdCO7qeVlc3ZP0RP83Nf1BZMYdQDMPogWrjr1vYZPLSzOHs
tRNEFI5RYSLMQAPHkc9bmsp45sR7FXj+tZEjM3NkcF4n8Jud/ARVAX/tzOWfF6A4
rhtGJfqYCvEF69J/dsHyy28egawrTxqPd6d1BKLdOh05xHkFL26wtgJWpHcNAZNZ
DUZs0Twe6Cw3XYQtlUD6D5mkj3zzh5hZ4xsoKftNfD2ZA1N0RVks0j5wrUjPI6jV
bVDRvvbBAoGBAPp2yjhTuchwpVOcGVYnqF1jVgXssSYdiydUglKtxzhta7c23xqK
v5B/cWdsz8mIKFmOcjr97GFUT8K6sZG77im05gDBCV7YuIMwekNmZ3m1MqUWtiZY
sEqCarIYPzQk9iPPxyZrmOVL/5KqlgRj9YmYFzjLpfnaxvk4rIMyVF21AoGBANpu
NLw7LfufPeSbIkSIeZ6X1ndspuZDzWVjgi0hmVdozMwxT1wmfoinJ27gxhKStwmG
9kbYE4QbGBSAlkJqoSf8QWVIH+/Qq9/9mbi1T4p+AgJSYiz1voOGnOk0RoJku6Zn
9XkcGXCUh5ckxWyYbXjHqBqHTXHeJzk9zoRfBuC5AoGBAI1/yPUTkBUGVtCqksHS
u9KuyS2lr9spu7DnlIzjMnbVkpI6hMa49krLRSU6GxXvP2SBDlX3mLDP8hPAZ4s+
0elsErkAVavo4izzmU80rmbbEJamAxgc6NPfZCnjeumZrBlFTGyPQxzf165jg0dN
ta0baJskqktC50BrXULtjy41AoGANa4j06aPlGj8IvRlJYaMrQcPs+XF1o0PKz2b
PlAliS++NOhhYnorWpYJwNwIkYPw66x5VcvAcBTghBld1BC0bkk2IRfqkVstAi0m
3Bfi5lw1TjDE49u46EXqxf0M3vq2ixy9XPgk4GAAOorU4e1L6gTXMT3TMIqyBQVF
fY6E+DECgYEA22HhPud5KLAX6drbMEe54uttiUrs/K3nft/xTYWU1BIG9r/HPKQh
3OWD/Dknek+i5hW89OOROPaUmnjaTR3/ARAxTlpxDdBWKu2mCXS/LcdEWdy7teEu
dDbqqotO4jmTh94FVWgVLDVVmrVSp++fwstI6foPGPABlbsrJxyGUsc=
-----END RSA PRIVATE KEY-----
Run Code Online (Sandbox Code Playgroud)
我将整个字符串传递给JWT::encode,并得到以下输出:
eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiJ9.eyJpYXQiOjE0NzQzOTI0NjQsImV4cCI6MTQ3NDM5NjA2NCwiaXNzIjoyMDF9.ZodSJyrq_SJfLTx4ifnCRWC9cbX1NmqOY3bADcuU7Wc18oZnH3EtZErvLgW6-reuR1-flsNbrji2dL9Zsm3rE-1FtEambcs1Xxynz3PE42yFMimQ5WyiAHdJhbh8-fB0hLIxn2I0oBiJbpZp92Rm2E2xxA1m4lmAubatY0JDR3FS4MmjR-pOZRbkgA4QwaTb0Q7R0tSUaoJo1ETLZoApp5ofsyt5hciB7wogTigA08H4r8TBUuSY4LeHWX9IfmDqHh5gVLDHhFXuLp1Qfm-8ltnLMgcelTmA9QE9NxxVcHQtYvNnE-EvXsh04Oqiyg51eq5cDoc4wA_WhTB4w-9NWg
Run Code Online (Sandbox Code Playgroud)
我将此输出(没有尾随换行符,我可以确认)存储到 Bash 变量中$JWT,并尝试像这样访问 GitHub API: …
两年前在一台suse 10.1 Linux机器上编译的以下C++代码.
#ifndef DATA_H
#define DATA_H
#include <iostream>
#include <iomanip>
inline double sqr(double x) { return x*x; }
enum Direction { X,Y,Z };
inline Direction next(const Direction d)
{
switch(d)
{
case X: return Y;
case Y: return Z;
case Z: return X;
}
}
inline ostream& operator<<(ostream& os,const Direction d)
{
switch(d)
{
case X: return os << "X";
case Y: return os << "Y";
case Z: return os << "Z";
}
}
...
...
Run Code Online (Sandbox Code Playgroud)
现在,我试图在Ubuntu 9.10上编译它,我得到错误:
data.h:20: …Run Code Online (Sandbox Code Playgroud) 如何解决 X-Content-Type-Options 标头丢失等问题?
错误检测器发现了这个问题。
我已经阅读了有关JSON Schema和JSON指针的RFC,但我仍然在努力理解如何正确引用其他文档.
可以说我有以下文件(在磁盘上):
/foo/bar/schema/base.json
/foo/bar/schema/model/model.json
Run Code Online (Sandbox Code Playgroud)
base.json像这样:
{
"$schema": "http://json-schema.org/draft-04/schema#",
"id": "/schema/base",
"title": "Base Response",
"description": "Schema descriptions of common properties of a response",
"type": [ "object" ],
"definitions": {
"data": {
"descrpition": "The response data is encapsulated within here",
"example": "true",
"type": [ "object", "array", "boolean", "null" ]
}
},
"properties": {
"data": { "$ref" : "#/definitions/data" }
}
}
Run Code Online (Sandbox Code Playgroud)
model.json文件是这样的:
{
"$schema": "http://json-schema.org/draft-04/schema#",
"id": "/schema/model/model",
"type": "object",
"$ref": "/schema/base.json"
}
Run Code Online (Sandbox Code Playgroud)
我在询问model.json中的$ ref值.我对标准的理解是在文档的id和$ ref之间,我们应该能够找到该文档.
或者,我想知道是否像:
"$ref": "../../base.json"
Run Code Online (Sandbox Code Playgroud)
会工作?
但是这些解决方案似乎都不能使用我尝试过的Python或PHP库.我不确定我哪里出错了?
我试图在Liquid Studio 2017中使用“ $ ref”来引用位于不同文件中的JSON模式。引用的JSON模式和引用的JSON模式都位于同一目录中。
我尝试使用相对路径:
"$ref": "referredSchema.json/propertyName"
Run Code Online (Sandbox Code Playgroud)
并使用绝对路径:
"$ref": "file:///C:/JSON/referredSchema.json/propertyName"
"$ref": "file:///JSON/referredSchema.json/propertyName"
"$ref": "file:///JSON/referredSchema.json#/propertyName"
Run Code Online (Sandbox Code Playgroud)
和其他一些变化。它们都不起作用,我总是收到错误消息“无效的URI”。此外,文档仅提及在没有给出合理示例的情况下可以引用其他文档。
所以我想知道预期的URI格式是什么。
我正在创建一个应用程序,它将生成随机数.所以每次它会产生三个数字num1,num2和num3.这些数字不应重复.例如,如果num1 = 1而不是num2且num3不能等于1.我尝试过这段代码,它会显示三个不同的数字,范围从0到2.它的工作.但是我想生成1-3,2-4,3-5等随机数.那么我怎么能通过使用下面的代码来实现这一点.因为我是新手,所以请帮助我.谢谢.
for(int i=0; i<images.length; i++)
{
num[i] = (int)(Math.random()*3);
if (i == 0)
{
if(num[i]== 0)
images[i].setImageResource(R.drawable.zero);
else if(num[i]==1)
images[i].setImageResource(R.drawable.one);
else
images[i].setImageResource(R.drawable.two);
}
else
{
while (num[i] == num[i-1] || num[i] == num[0] )
num[i] = (int)(Math.random()*3);
if(num[i]==0)
images[i].setImageResource(R.drawable.zero);
else if(num[i]==1)
images[i].setImageResource(R.drawable.one);
else
images[i].setImageResource(R.drawable.two);
}
}
Run Code Online (Sandbox Code Playgroud) 想象一下,你有一个像这样的简单数据集:
ive
region Edad
1 Española 23
2 Española 37
3 Española 40
4 Española 21
5 Africana 29
6 Española 42
7 Europea 29
8 Española 25
9 Española 32
10 Española 20
Run Code Online (Sandbox Code Playgroud)
我有兴趣为region按颜色分类的变量执行条形图。所以我创建了以下代码:
g1 <- ggplot(ive, aes(x=reorder(ive$region, -table(ive$region)[ive$region])))
g1 + geom_bar(aes(fill=ive$region)) + geom_text(stat='count',aes(label=..count..),vjust=-0.7) + xlab("")
Run Code Online (Sandbox Code Playgroud)
但是图例显示ive$region,我希望它显示自定义标题。
我几乎可以肯定这是一个愚蠢的问题,但我一直在尝试解决它 2 天,但我没有找到解决方法。
谢谢你,阿尔瓦罗