当我正在尝试登录时,我正面临着这个错误.
remote: /tmp/build_f459d376d1bc10ac2e93e52575ac5ea9/Sources/App/main.swift:368:49: error: argument type 'String' does not conform to expected type 'CVarArg'
remote: NSLog("FILE NOT AVAILABLE", "TESTNOTI")
remote: ^~~~~~~~~~
remote: as! CVarArg
Run Code Online (Sandbox Code Playgroud)
mycode的
if fileManager.fileExists(atPath: (drop.config["servers", "default", "KeyURL"]?.string ?? "default")) {
NSLog("FILE AVAILABLE", "TESTNOTI")
} else {
NSLog("FILE NOT AVAILABLE", "TESTNOTI")
}
Run Code Online (Sandbox Code Playgroud) 当我尝试从 PHP 7.3 升级到 PHP 7.4 时,收到此错误:
执行 caching_sha2 auth 109 时出现意外的服务器响应
在我看来,这表明 PHP 7.4 MySQLi 正在尝试使用该caching_sha2_password插件。这篇文章指出 PHP MySQLi 不支持该插件(它也暗示未来会支持它),但由于 PHP 7.4 是新的并且似乎正在尝试使用它,我想它应该可以工作。此外,错误消息与不受支持的情况不同(访问被拒绝与身份验证方法未知)。
所以我将我的 MySQL 身份验证插件更改为caching_sha2_password(使用与以前相同的密码):
ALTER USER 'root'@'localhost' IDENTIFIED WITH caching_sha2_password BY '';
FLUSH PRIVILEGES;
Run Code Online (Sandbox Code Playgroud)
但这导致了另一个错误:
用户 'root'@'localhost' 的访问被拒绝(使用密码:YES)。
切换回 PHP 7.3 并mysql_native_password再次运行。
我对两个插件、同一个网站使用了相同的密码,并应用了相同的 php.ini 更改。但是,我没有更改任何mysqli配置。MySQL 的日志什么也没显示,apache2 日志只显示“拒绝访问”错误消息。
php7.4-mysqli 支持caching_sha2_password吗?是的
为什么我的密码被拒绝,我该如何解决? 查看我的后续问题
另外,如果 MySQLi 仍然不支持该插件:我如何使用mysql_native_password它?
更新:
23.02.2020:该错误已在PHP 7.4.3 中修复。
23.12.2019:我发现了哪些密码受到影响。看我下面的回答。仍然非常感谢为什么拒绝长密码的答案。
免责声明:我已经尝试了大约 2 个小时,只是设置了不同的密码。我绝对相信下面的密码会导致问题。它适用于其他密码。我知道如何修复它:使用不同的密码。我想知道为什么它不起作用。因为这种不一致是不可接受的。
我能够在我的系统上重现该问题。
最近切换到 PHP 7.4 和 MySQL 8,默认情况下使用caching_sha2_password. 在验证它实际上受 PHP 支持后,我无法使用随机生成的密码使其工作,因此我mysql_native_password再次使用 PHP 7.3 。
现在,我设置了一个新服务器并且它工作正常,所以我试图找出问题所在,以便我可以caching_sha2_password在我的其他服务器上使用。
MySQL(通过 mysql shell 使用root)
ALTER USER 'test'@'localhost' IDENTIFIED WITH caching_sha2_password BY '';
FLUSH PRIVILEGES;
QUIT
Run Code Online (Sandbox Code Playgroud)
PHP
const DB_HOST = '127.0.0.1';
const DB_USERNAME = 'test';
const DB_PASSWORD = '';
const DB_NAME = 'test_db';
$mysqli = new mysqli(DB_HOST, DB_USERNAME, DB_PASSWORD, DB_NAME);
Run Code Online (Sandbox Code Playgroud)
测试(重现)
php db.php
Run Code Online (Sandbox Code Playgroud)
错误 …
我是Appdevelopment的新手,并尝试在Windows 10 x64上更改Android Studio 1.4.1(最新版)中的应用主题,但我总是得到例外,这就是我所做的:(是的,我现在已经有很多了问题,但我找不到答案)
渲染问题
无法实例化以下类:
小费: [...]
例外细节
java.lang.IllegalArgumentException:您需要将Theme.AppCompat主题(或后代)与设计库一起使用.位于android.support.design.wck.CoordinatorLayout的android.support.design.design.widget.ThemeUtils.checkAppCompatTheme(ThemeUtils.java:34)处于android.support.design.widget.CoordinatorLayout.(CoordinatorLayout.java:178).(CoordinatorLayout) .java:172)at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)at java. lang.reflect.Constructor.newInstance(Constructor.java:422)org.jetbrains.android.uipreview.ViewLoader.createNewInstance(ViewLoader.java:458)org.jetbrains.android.uipreview.ViewLoader.loadClass(ViewLoader.java: 170)在android.view.BridgeInflater.loadCustomView的com.android.tools.idea.rendering.LayoutlibCallbackImpl.loadView(LayoutlibCallbackImpl.java:190)的org.jetbrains.android.uipreview.ViewLoader.loadView(ViewLoader.java:103) (BridgeInflater.java:218)在andro 位于android.view.LayoutInflater的android.view.LayoutInflater.inflate(LayoutInflater.java:492)的android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:704)中的id.view.BridgeInflater.createViewFromTag(BridgeInflater.java:145) .inflate(LayoutInflater.java:394)位于com.android.layoutlib.bridge.impl.RenderSessionImpl.inflate(RenderSessionImpl.java:223)的com.android.layoutlib.bridge.Bridge.createSession(Bridge.java:426)at at COM.android.ide.common.rendering.LayoutLibrary.createSession(LayoutLibrary.java:350)位于com.android.tools.idea的com.android.tools.idea.rendering.RenderTask $ 2.compute(RenderTask.java:510) .rendering.RenderTask $ 2.compute(RenderTask.java:498)at com.intellij.openapi.application.impl.ApplicationImpl.runReadAction(ApplicationImpl.java:888)at com.android.tools.idea.rendering.RenderTask.createRenderSession( RenderTask.java:498)com.android.tools.idea.rendering.RenderTask.access $ 600(RenderTask.java:72)at com.android.tools.idea.rendering.RenderTask $ 3.call(RenderTask .java:610)com.android.tools.idea.rendering.RenderTask $ 3.call(RenderTask.java:607)at com.android.tools.idea.rendering.RenderService.runRenderAction(RenderService.java:366)at com .android.tools.idea.rendering.RenderTask.render(RenderTask.java:607)位于com.intellij.android.designer.designSurface的com.android.tools.idea.rendering.RenderTask.render(RenderTask.java:629) .AndroidDesignerEditorPanel $ 6.run(AndroidDesignerEditorPanel.java:480)at com.intellij.util.ui.update.MergingUpdateQueue.execute(MergingUpdateQueue.java:320)at com.intellij.util.ui.update.MergingUpdateQueue.execute(MergingUpdateQueue. java:310)at com.intellij.util.ui.update.MergingUpdateQueue $ 2.run(MergingUpdateQueue.java:254)at com.intellij.util.ui.update.MergingUpdateQueue.flush(MergingUpdateQueue.java:269)at com. intellij.util.ui.update.MergingUpdateQueue.flush(MergingUpdateQueue.java:227)at com.intellij.util.ui.update.MergingUpdateQueue.run(MergingUpdateQueue.java:217)at …
function render(time, scene) {
if (useFramebuffer) {
gl.bindFramebuffer(gl.FRAMEBUFFER, scene.fb);
}
gl.viewport(0.0, 0.0, canvas.width, canvas.height);
gl.clear(gl.COLOR_BUFFER_BIT | gl.DEPTH_BUFFER_BIT);
gl.enable(gl.DEPTH_TEST);
renderScene(scene);
gl.disable(gl.DEPTH_TEST);
if (useFramebuffer) {
gl.bindFramebuffer(gl.FRAMEBUFFER, null);
copyFBtoBackBuffer(scene.fb);
}
window.requestAnimationFrame(function(time) {
render(time, scene);
});
}
Run Code Online (Sandbox Code Playgroud)
我无法分享我使用的确切代码,但是一个模型将说明我的观点。
我正在渲染一个相当复杂的场景,并且还在WebGL中进行了一些光线追踪。我注意到了两个非常奇怪的性能问题。
1)两次运行之间的帧率不一致。有时,当页面开始时,最初的约100帧在25ms内渲染,然后突然下降到45ms,而无需用户输入或更改场景。我不会更新帧中的任何缓冲区或纹理数据,而仅更新着色器制服。发生这种情况时,GPU内存将保持不变。
2)渲染到默认帧缓冲区比使用额外的传递慢。如果渲染到创建的frambuffer,然后渲染到HTML canvas(默认的framebuffer),则性能提高了10%。因此,在代码段中,如果useFramebuffer == true获得了性能,这似乎非常不直观。
编辑1:
由于需求的变化,场景将始终渲染到帧缓冲区,然后复制到画布。这使问题2)成为非问题。
编辑2:
在以下系统上测试了PC的系统规格:
编辑3:
我使用chrome:tracing描绘了场景。前约100-200帧渲染16.6ms。
我将尝试使用计时器查询来分析所有内容,但恐怕每个渲染实际上花费相同的时间,并且缓冲区交换将随机花费两倍的时间。
我注意到的另一件事是,当我使用Chrome一段时间后,这种情况开始发生。问题开始时,清除浏览器缓存或取消Chrome进程无济于事,只有重新启动系统才能起作用。
Chrome是否有可能一时兴起地限制GPU?
PS帧时间由于一些优化而改变,但核心问题仍然存在。
我通过键(对象)访问字典,大多数情况下工作正常,但有时它会崩溃:
-[__NSCFNumber objectForKey:]: 无法识别的选择器发送到实例 0x8000000000000000
我发现的最接近我的问题是这个。
这是我的(简化的)代码:
class Meal {
private static let KEY = Date()
private static let KEY_Q = DispatchQueue(label: "Meal.KEY")
static var menus = OrderedDictionary<Date, [Int:Meal]>()
static func test() throws {
var date: Date?
var menu: [Int:Meal]?
try KEY_Q.sync {
menu = Meal.menus[KEY] // <-- Error
if menu == nil {
date = KEY.clone()
}
}
DispatchQueue.main.async {
//This needs to run on the UI Thread, since it also loops over Meal.menus
if date != …Run Code Online (Sandbox Code Playgroud) 我刚刚从PHP 7.0迁移到PHP 7.1(当前版本的WAMP的全新/干净安装)并且它似乎已经破坏了自定义会话处理程序中的某些东西,它应该将会话保存到数据库而不是使用文件系统.
自定义处理程序类是:
class db_session_handler实现SessionHandlerInterface {
class db_session_handler implements SessionHandlerInterface {
public function __construct($db) {
$this->db = $db;
}
public function open($save_path,$session_name) {
$this->db;
return true;
}
public function close() {
unset($this->db);
return true;
}
public function read($session_id) {
if (!isset($session_id)) {
$session_id='';
}
try {
$sql="
SELECT
sess_data
FROM
ue_user_session
WHERE
sess_id = :sess_id
";
$stmt = $this->db->prepare($sql);
$stmt->bindParam(':sess_id', $session_id);
$stmt->execute();
$res = $stmt->fetchAll(PDO::FETCH_ASSOC);
if (count($res) <> 1 ) {
return false;
} else {
return $res[0]['sess_data'];
} …Run Code Online (Sandbox Code Playgroud) 我已经实现了一个有序字典,它有两个下标。第一个用于索引(始终为 类型Int),第二个用于可变类型的键keyType。
这一切都工作正常,直到keyTypeis Int,因为现在下标显然不明确。
“下标”的使用不明确
因此,为了解决歧义,我尝试简单地key:为该值添加一个名称标签,就像普通函数参数一样,但这导致key: keyType被视为我的参数类型,从而导致此错误:
无法使用“(key: Int)”类型的索引为“OrderedDictionary”类型的值添加下标
错误消息对我来说非常清楚,但我不知道如何解决歧义。现在我正在使用一个函数insert(for:value:)。
这是 OrderedDictionary 类:
import Foundation
struct OrderedDictionary<keyType: Hashable, valueType>: Sequence {
typealias Element = (keyType, valueType)
let comparator: ((Element, Element) -> (Bool))?
var keys = [keyType]()
var values = [keyType:valueType]()
var count: Int {
get {
return keys.count
}
}
public struct Iterator: IteratorProtocol {
let parent: OrderedDictionary
var position: Int = 0
init(parent: OrderedDictionary) {
self.parent …Run Code Online (Sandbox Code Playgroud) 就超类中定义的属性值而言,在子类中使用相同的属性并且该属性被定义为受保护,那么使用super或this没有任何区别,对吧?那么为什么语言确实有这些访问属性的方式呢?是否存在他们会有不同价值观的情况?
class A {
protected int a = 15;
}
class B extends A {
public void printA() {
System.out.print(super.a) // prints 15
System.out.print(this.a) // prints 15
}
}
Run Code Online (Sandbox Code Playgroud) 我正在尝试创建一个查询,它将获取在过去 10 秒内插入的结果:
SELECT *
FROM table
WHERE client_id = 1
AND hash = 'x'
AND insert_time >= current_timestamp - **10 seconds**
Run Code Online (Sandbox Code Playgroud)
我一直在寻找如何从当前时间戳中减去 10 秒,但我还没有成功。