注意:
我可以使用像Pspell、Aspell或Hunspell这样的字典,但这种情况不适用于企业名称或城市。此外,我不想查询数据库以获取所有建议的更正(尤其是每 300 毫秒触发一次预输入)(有关这些词典的更多问题)
我可以使用补充搜索引擎,例如Elasticsearch或Sphinx,但我没有为此 MVP 分配的财务或人力资源。正如在这个答案中所建议的,MySQL 全文应该足够了,而且不那么复杂。
MySQL 5.7 InnoDB,在所需字段上使用全文索引布尔模式,使用 php-fpm 的 PHP 7.0,使用 Centos 7 的 VPS,corejs-typeahead
我想从 MySQL 返回用户搜索的结果,无论是正确的搜索还是拼写错误的搜索。
连字符
潜在的解决方案:
我必须将搜索查询包含在 "" 中以搜索短语(请参阅 [在此处输入链接描述] [来自 man 的示例]。仍然找不到名为 '"le dé-k-lé"' 的企业,因为to ft_min_word_len=3AND "de" 和 "le" 是停用词(在许多语言中过于频繁)
我可以,但我不会进入以下解决方案,因为我不够熟练或这是不合适的。根据 MySQL 手册的建议修改 MySQL 源或修改字符集文件或添加新的排序规则。比如我以后想用减号(-)来过滤掉一些单词,就不行了。
撇号/单引号
双字母遗漏
潜在的解决方案:
我知道使用准备好的语句可以防止注入,因为准备好的语句执行由两个阶段组成:准备和执行。
好的,但我真的不明白如果将绑定参数值用作MySQL 中的用户定义变量会发生什么情况。
最初安全绑定的参数过程是否可以用于步骤 2 中的执行(以及注入)?
// The user input that may be the target for injection
$userInput = "input";
// STEP 1 -------------------
$q = "SET @param1 = :param1;";
// Execute query to set mysql user-defined variables
$param = [
'param1' => $userInput
];
$stmt = $pdo->prepare($q);
$stmt->execute($param);
// STEP 2 -------------------
// Query DB with User-Defined Variables
$q = "
SELECT ...
WHERE
table.field1 = @param1 OR
table.field2 = @param1 OR
table.field3 = …Run Code Online (Sandbox Code Playgroud) 基本信息
目标SDK版本28
目标:课程的目标是在发送到我的服务器之前调整视频大小。
问题:应用程序仅在 API 29 上崩溃,无论是使用真实设备还是使用 AVD。例如,该代码在Pixel 2 API 28上运行良好,但在Pixel 2 API 29上运行不佳
源代码:我主要使用来自bigflake.com的示例代码。
错误信息(详细日志见下文):
E/AndroidRuntime: FATAL EXCEPTION: Thread-20
Process: com.myapp.myapp, PID: 9189
android.media.MediaCodec$CodecException: Error 0xfffffff3
at android.media.MediaCodec.native_queueInputBuffer(Native Method)
at android.media.MediaCodec.queueInputBuffer(MediaCodec.java:2450)
Run Code Online (Sandbox Code Playgroud)
我尝试过的
由于 的日志信息有限,我尝试从 更改为MediaCodec$CodecException,但没有成功。MediaCodecInfo.CodecCapabilities.COLOR_FormatSurfaceMediaCodecInfo.CodecCapabilities.COLOR_FormatYUV420Flexible
日志将显示最后两个缓冲周期。我希望你能看到一些有价值的东西。
D/VideoResolutionChanger: no audio encoder output buffer
D/VideoResolutionChanger: loop: V(true){extracted:49(done:false) decoded:45(done:false) encoded:43(done:false)} A(true){extracted:45(done:false) decoded:44(done:false) encoded:1(done:false) pending:-1} muxing:true(V:0,A:1)
D/VideoResolutionChanger: video decoder: returned input buffer: 3
video …Run Code Online (Sandbox Code Playgroud) android video-encoding input-buffer mediamuxer android-mediacodec