所以,
问题
从SQL我得到一个带字符串的数组(平面数组) - 让它成为
$rgData = ['foo', 'bar', 'baz', 'bee', 'feo'];
现在,我希望得到这个数组的对和三元组的可能组合(并且,通常情况下,4个元素的组合e tc).更具体一点:我的意思是数学意义上的组合(没有重复),即那些计数等于的组合

- 对于上面的数组,对于对和三元组都是10.
我的方法
我从映射可能的值开始
可能的数组选定项目.我目前的解决方案是指出一个元素被选为"1",否则为"0".对于上面的示例,将是:
foo bar baz bee feo 0 0 1 1 1 -> [baz, bee, feo] 0 1 0 1 1 -> [bar, bee, feo] 0 1 1 0 1 -> [bar, baz, feo] 0 1 1 1 0 -> [bar, baz, bee] 1 0 0 1 1 -> [foo, bee, feo] 1 0 1 0 1 -> [foo, baz, feo] …
假设我有与此类似的多态
| document_id | owner_type | owner_id |
| 1 | Client | 1 |
| 1 | Client | 2 |
| 2 | User | 1 |
Run Code Online (Sandbox Code Playgroud)
我知道我会调用查询来寻找owner_type和owner_type+owner_id
SELECT * FROM document_name_ownerships WHERE owner_type = 'Client`
SELECT * FROM document_name_ownerships WHERE owner_type = 'Client` and owner_id = 1
Run Code Online (Sandbox Code Playgroud)
让我们忽略如何索引document_id 我想知道在此 SQL 场景中索引所有者列的最佳方式(性能)是什么
解决方案1:
CREATE INDEX do_type_id_ix ON document_ownerships (owner_type, owner_id)
Run Code Online (Sandbox Code Playgroud)
这样我就只有一个适用于这两种情况的索引
解决方案2:
CREATE INDEX do_id_type_ix ON document_ownerships (owner_id, owner_type)
CREATE INDEX do_type_ix …Run Code Online (Sandbox Code Playgroud) 我想为MySQL数据库中的字段提供自动编号?
这就像
我有字段名称,编号
name number -------------------- aaaa 1 bbbb 2 cccc 3 dddd 4 eeee 5
现在我要删除第3个字段(即cccc)删除后,如果我选择了该表中的所有行,我希望得到输出像
name number ----------------------- aaaa 1 bbbb 2 dddd 3 eeee 4
谁能为此提供更好的解决方案?
所以,
问题
假设我们有平面阵列,结构如下:
$array = [
['level'=>1, 'name' => 'Root #1'],
['level'=>1, 'name' => 'Root #2'],
['level'=>2, 'name' => 'subroot 2-1'],
['level'=>3, 'name' => '__subroot 2-1/1'],
['level'=>2, 'name' => 'subroot 2-2'],
['level'=>1, 'name' => 'Root #3']
];
Run Code Online (Sandbox Code Playgroud)
问题是 - 转换该数组,使其成为一棵树.仅通过元素顺序和level字段确定从属.让我们定义children为存储子节点的维度名称.对于上面的数组将是:
array (
array (
'level' => 1,
'name' => 'Root #1',
),
array (
'level' => 1,
'name' => 'Root #2',
'children' =>
array (
array (
'level' => 2,
'name' => 'subroot 2-1',
'children' = … 细节
Foo实现\Iterator接口的类,我们知道迭代器中的所有项都是class的实例Bar.题
如何提示它Foo是可迭代的并且只包含Bar?当然,提示应该保留信息,这是它的实例Foo
到目前为止我尝试了什么
如果我们有一个数组Bar的情况下,那么这是一件容易的事情(它的描述,例如,在这个问题)Bar[].此外,如果意图是迭代Foo,它仍然可以解决(或多或少):
//assume that $foo is instance of Foo
//..
/* @var $object Bar */
foreach ($foo as $object) {
}
Run Code Online (Sandbox Code Playgroud)
但是,有一个非常重要的事情是使用就地提示无法实现的:返回类型.如果我有一些应该返回的方法Foo,我只知道如何提示Foo,但该函数的用户仍然无法公开,它实际上是可迭代的并且包含Bar实例(就像我指定的那样)@return Bar[]如果是Bar实例数组)
代码和输入
我正在尝试建立 SSL 连接,但收到400 No required SSL certificate was sent了服务器的响应。我正在以标准方式执行此操作,例如此处描述的那样;我运行 Java 8。
我的代码示例是:
OkHttpClient client = new OkHttpClient();
KeyStore keyStoreClient = getClientKeyStore();
KeyStore keyStoreServer = getServerKeyStore();
String algorithm = ALGO_DEFAULT;//this is defined as "PKIX"
KeyManagerFactory keyManagerFactory = KeyManagerFactory.getInstance(algorithm);
keyManagerFactory.init(keyStoreClient, PASSWORD_SERVER.toCharArray());
SSLContext sslContext = SSLContext.getInstance("TLS");
TrustManagerFactory trustManagerFactory = TrustManagerFactory.getInstance(algorithm);
trustManagerFactory.init(keyStoreServer);
sslContext.init(keyManagerFactory.getKeyManagers(), trustManagerFactory.getTrustManagers(), new SecureRandom());
client.setSslSocketFactory(sslContext.getSocketFactory());
client.setConnectTimeout(32, TimeUnit.SECONDS); // connect timeout
client.setReadTimeout(32, TimeUnit.SECONDS); // socket timeout
return client;
Run Code Online (Sandbox Code Playgroud)
这是我用来发送 GET 请求的代码:
public String get(String url) throws IOException
{ …Run Code Online (Sandbox Code Playgroud) 所以,
问题
众所周知,伪随机数."伪"实际上意味着,尽管它们通常是随机的(即不可预测的),但它们仍然是相同的,其中使用相同的生成器初始值.例如,在PHP中有mt_srand()函数来做到这一点.例:
mt_srand(1);
var_dump(mt_rand(), mt_rand(), mt_rand());
Run Code Online (Sandbox Code Playgroud)
- 无论如何,我们将启动我们的脚本多少次:生成的三个数字将始终相同.
现在,我的问题是如何做同样的事情 - 但是为了改组数组.即我想创建一个函数,它将接受输入数组以随机播种和播种.在相同的种子值内,洗牌必须具有连续的相同顺序.即让我们调用该函数shuffleWithSeed()- 然后跟随应该适用于每个脚本启动:
$input = ['foo', 'bar', 'baz'];
$test = shuffleWithSeed($input, 1000);//1000 is just some constant value
var_dump($test); //let it be ['bar', 'foo', 'baz']
$test = shuffleWithSeed($test, 1000);
var_dump($test); //let it be ['baz', 'foo', 'bar']
$test = shuffleWithSeed($test, 1000);
var_dump($test); //let it be ['baz', 'bar', 'foo']
//...
Run Code Online (Sandbox Code Playgroud)
-ie无论我们多少次为我们的数组进行洗牌 - 我希望下一个脚本启动顺序序列在一个seed值内总是相同的.
我的方法
我记得这个算法:
seedN随机数,其中N …我在使用 TIMEDIFF 和两个不同的日期时遇到问题。以下查询“应该”返回 00:04:51
mysql> SELECT TIMEDIFF(TIME('2013-07-21 00:04:50'),TIME('2013-07-20 23:59:59'));
+-------------------------------------------------------------------+
|TIMEDIFF(TIME('2013-07-21 00:04:50'),TIME('2013-07-20 23:59:59')) |
+-------------------------------------------------------------------+
| -23:55:09 |
+-------------------------------------------------------------------+
1 row in set (0.00 sec)
Run Code Online (Sandbox Code Playgroud)
有小费吗?哪种方法最简单?谢谢
所以,
我在使用命名空间创建动态对象时遇到问题.这是命名空间代码:
namespace Foo
{
class Bar
{
}
}
Run Code Online (Sandbox Code Playgroud)
现在,我正在尝试创建类的对象Bar:
include('namespace.php');
$sName = 'Bar';
$sClass = '\\Foo\\'.$sName;
$rObj = new $sClass; //correct object
Run Code Online (Sandbox Code Playgroud)
一切顺利.但是,现在我想使用别名并执行以下操作:
include('namespace.php');
use Foo as Baz;
$sName = 'Bar';
$sClass0= '\\Foo\\'.$sName;
$sClass1= '\\Baz\\'.$sName;
$rObj = new $sClass0; //correct object
$rObj = new $sClass1; //Fatal error
Run Code Online (Sandbox Code Playgroud)
而且我无法以这种方式实例化对象(并且通过全名访问仍然可以正常工作).所以,我的问题是 - 是否有可能通过别名以某种方式访问该类,如果是,如何?我还试图在使用时访问$sClass1='Baz\\'.$sName- 没有成功.另外,我通过get_declared_classes()函数检查了声明的类,它表明我只有\Foo\Bar类(没有引用别名).
我不确定它是否重要,但我使用的是PHP 5.5版本.
数组和使用什么算法使它比一些循环更快?
是前缀sum/suffix sum还是其他什么?
我有一些功能需要由管理我的软件的一个共同方面的几个类共享.在Java中,我将所有这些类放在同一个包中,并且通用功能将在辅助类中的受保护方法中.
在PHP中,受保护的方法意味着您只能在子类中使用它,因此我当前的解决方案是使方法受到保护,并使所有需要此方法的类扩展帮助程序类.我当前的解决方案的问题是,事实上你不能继承多个类,所以让我说我需要帮助类,即时通讯...
那么,有没有办法让方法可见性与PHP中的java保护相媲美?如果没有,任何更清洁的方法来解决我的问题?
提交表单后,我总是检查表单是否正确isset,然后检查是否所有字段都是isset
这是我的php代码:
if(isset($_POST)) {
if(isset($_POST['username'], $_POST['password'])) {
// process
}
}
Run Code Online (Sandbox Code Playgroud)
我的问题是,我的第一次检查isset是表单本身是否已提交,然后再次检查每个表单input是否isset或如果我使用的时刻
if(isset($_POST)) { }
它会实际检查该表单中的字段吗?
我希望你事先得到我的意见.
$f = sprintf ("%.1f",$per);
echo "You hit".$f."
Run Code Online (Sandbox Code Playgroud)
通过这段代码我可以在浮点后只显示一位数.但是当我的结果是100%时,它显示100.0%.我想100%显示.我怎么能这样做????