MySQL如何存储varchar字段?我可以假设以下模式表示合理的存储大小:
1,2,4,8,16,32,64,128,255(最大)
通过示例澄清.假设我有一个20个字符的varchar字段.MySQL在创建这个字段时,基本上保留了32个字节的空间(不确定它们是否为字节)但只允许输入20个字节?
我想我担心为大型表优化磁盘空间.
允许用户输入他们喜欢的任何数学方程式(使用一个变量):
x + 5
1 - x/2
(x/3) * (56/13)
它们作为字符串存储在数据库中.当它们被检索时,我需要用'x'代替数字并检查等式的值.
我怎么能这样做?
我正在考虑编写一个解析器来解构字符串并将它们转换为方程式,但这听起来既昂贵又有问题.另一个选择是通过eval传递它们(但如果我可以帮助它,我不是使用eval的忠实粉丝).
有任何想法吗?
更新:我还需要能够获得类似"(x> 5)"的布尔值.evalMath无法做到这一点
更新2:我要火很多这些秒.我一直在研究eval在php中但是不能让它为(5> 4)返回一个布尔值但是我注意到js会这样做...也许我应该调查node.js ...
更新3:在尝试了node.js(并让它工作)之后,我回过头来获得eval以便在PHP中工作看到:php eval可以返回一个布尔值吗?
所以我将使用eval和一个非常非常硬核的用户输入过滤器.
如何将以下命令转换为bash别名?
find . -name '*.php' | xargs grep --color -n 'search term'
Run Code Online (Sandbox Code Playgroud)
我可以在哪里指定文件扩展名和'搜索词'显然是搜索词:)
所以我想做的是:
searchFiles 'php' 'search term'
Run Code Online (Sandbox Code Playgroud)
如何将输入传递给别名?我应该只创建一个bash脚本并将别名指向脚本吗?
我有一些我想在VIM中记住的提示.如果我可以通过按键(比如说F4)在当前窗口顶部的水平分割中打开它们,那么当再次点击F4时再次隐藏(切换)会有什么好处.
那么如何通过切换按键将文本文件打开(在当前窗口上方的(小)分割中?
也许有一个我不知道的插件是什么呢?
我正在尝试优化PHP应用程序中的特定函数,并愚蠢地假设'if'语句中的布尔查找比字符串比较更快.但为了检查它,我使用microtime进行了一个简短的测试(见下文).令我惊讶的是,字符串查找更快.
我的测试有什么问题(我连接太多咖啡了,所以我对自己的代码有疑问)?如果没有,我会对PHP中有关字符串与布尔查找的任何评论感兴趣.
第一次测试(布尔查找)的结果是0.168秒.
第二次测试(字符串查找)的结果是0.005秒.
<?php
$how_many = 1000000;
$counter1 = 0;
$counter2 = 0;
$abc = array('boolean_lookup'=>TRUE, 'string_lookup'=>'something_else');
$start = microtime();
for ($i = 0; $i < $how_many; $i++)
{
if ($abc['boolean_lookup'])
{
$counter1++;
}
}
echo ($start - microtime());
echo '<hr>';
$start = microtime();
for ($i = 0; $i < $how_many; $i++)
{
if ($abc['string_lookup'] == 'something_else')
{
$counter2++;
}
}
echo ($start - microtime());
Run Code Online (Sandbox Code Playgroud) 假设我们在局域网上有3台服务器:
APP - php应用服务器
MASTER - 掌握Mysql数据库服务器
SLAVE - 从属Mysql数据库服务器(复制MASTER)
在一个代码块(php)APP中插入MASTER,检索last_insert_id,然后使用它来选择刚从SLAVE插入的数据.
所以问题是,复制是否会及时发生,以便SLAVE从MASTER获取数据?这是受MASTER还是SLAVE上的负载影响?
最后,如果数据存在问题,是否有办法确保从SLAVE收到最新数据?