我通过 NPX 设置了 Strapi 并运行
npx create-strapi-app my-project --quickstart
Run Code Online (Sandbox Code Playgroud)
我正在使用 Strapi,这是我的侧边栏
通常我希望它是这样的:
我不知道为什么,但我无法访问角色和权限选项卡,因为它不存在。我需要此选项卡用于 API 权限自定义。我检查了文档,它说应该有以下内容:
“该插件提供了一种通过基于 JWT 的完整身份验证过程来保护您的 API 的方法。该插件还带有一个 ACL 策略,允许您管理用户组之间的权限。
要访问插件管理面板,请单击左侧菜单中的角色和权限链接。”
我不知道我的仪表板出了什么问题。我如何访问这个插件?
我在数字海洋中托管一个空间 - 它基本上是数字海洋的 Amazon S3 等价物。我的 dio 问题是,我正在使用 dio 向 10MB 大小的文件发出获取请求。该请求在我的手机上需要大约 9 秒,但在我的浏览器中需要 3 秒。我的自定义后端也有这个问题。使用 dio(使用 dart 的 http 模块)发出的请求似乎非常慢。我需要解决这个问题,因为我需要不时向用户传输 50MB 的数据。为什么 dio 对 GET 请求反应缓慢?
await Dio().get(
"Remote_Url_I_can_not_share",
onReceiveProgress: (int downloaded, int total) {
listener
.call((downloaded.toDouble() / total.toDouble() * metadataPerc));
},
cancelToken: _cancelToken,
).catchError((err) => throw err);
Run Code Online (Sandbox Code Playgroud) 我正在尝试对 aac 音频进行编码。MP2 的例子在这里。我遵循了这个文档。我通过调用以下代码对音频进行编码,startEncoding
并在 2 秒后调用stopEncoding
. 一切似乎都运行良好,我得到了一个大小不一的文件,但问题是我无法打开或播放它。我不知道为什么。我一定是在代码中做错了什么。
标题:
class MediaEncoder {
public:
MediaEncoder(char *filePath);
void startEncoding();
void stopEncoding();
void encode(AVFrame *frame);
bool isEncoding() const;
void startEncoderWorker();
int32_t check_sample_fmt(enum AVSampleFormat sample_fmt);
bool signalExitFuture = false;
int32_t ret;
private:
std::future<void> encodingFuture;
AVCodecContext *avCodecContext;
AVFrame *avFrame;
AVPacket *avPacket;
AVCodec *codec;
FILE* file;
};
Run Code Online (Sandbox Code Playgroud)
cp:
MediaEncoder::MediaEncoder(char *filePath){
buffer = std::make_unique<LockFreeQueue<float>>(recorderBufferSize);
/* find the encoder */
codec = avcodec_find_encoder(AV_CODEC_ID_AAC);
avCodecContext = avcodec_alloc_context3(codec);
avCodecContext->bit_rate = 64000;
/* check that the …
Run Code Online (Sandbox Code Playgroud) 我有一个 Flutter 应用程序,用于Dart ffi
连接到我的自定义 C++ 音频后端。在那里我为我的音频缓冲区分配了大约 10MB 的总内存。每个缓冲区有 10MB / 84 的内存。我使用 84 音频播放器。这是 ffi 流程:
C++ 桥:
extern "C" __attribute__((visibility("default"))) __attribute__((used))
void *
loadMedia(char *filePath, int8_t *mediaLoadPointer, int64_t *currentPositionPtr, int8_t *mediaID) {
LOGD("loadMedia %s", filePath);
if (soundEngine == nullptr) {
soundEngine = new SoundEngine();
}
return soundEngine->loadMedia(filePath, mediaLoadPointer, currentPositionPtr, mediaID);
}
Run Code Online (Sandbox Code Playgroud)
在我的声音引擎中,我启动了一个 C++ 线程:
void loadMedia(){
std::thread{startDecoderWorker,
buffer,
}.detach();
}
void startDecoderWorker(float*buffer){
buffer = new float[30000]; // 30000 might be wrong here, I entered a huge value …
Run Code Online (Sandbox Code Playgroud) 我正在创建并播放 AVAudioPlayer,如下所示:
playerOne = try AVAudioPlayer(contentsOf: URL.init(fileURLWithPath: path))
playerOne.numberOfLoops = -1
playerOne.prepareToPlay()
Run Code Online (Sandbox Code Playgroud)
我正在播放 AAC 文件。我在用
playerOne.play(atTime: startTime)
Run Code Online (Sandbox Code Playgroud)
安排将来的播放并同步多个 AVAudioPlayer。
一切正常,但我的问题是,当声音循环时,它们会不同步,这是由于循环不无缝造成的。
这里发生的情况是,由于 aac 解码器,我相信在解码的音频数据中添加了额外的小静音,这导致音频播放器之间的同步丢失。我期望这个循环是完美的,从结束到开始循环之间的间隙为 0。
如何使用 AVAudioPlayer 实现无缝循环?
查看哈希表的基本结构。我们知道它会调整 WRT 负载因子或其他一些确定性参数的大小。我知道,如果在插入中达到调整大小限制,我们需要创建一个更大的哈希表并将所有内容插入其中。这是我不明白的事情。
让我们考虑一个哈希表,其中每个桶都包含一个 AVL 平衡 BST。如果我的哈希函数为每个键返回相同的索引,那么我会将所有内容存储在同一个 AVL 树中。我知道这个哈希函数将是一个非常糟糕的函数并且不会被使用,但我在这里做了最坏的情况。因此,一段时间后,我们可以说已经达到了调整大小因子。因此,为了调整大小,我创建了一个新的哈希表,并尝试将所有旧元素插入到以前的表中。由于哈希函数将所有内容映射回一棵 AVL 树,因此我需要将所有 N 个元素插入到同一个 AVL 中。AVL 树上的 N 次插入是 N logN。那么为什么哈希表的最坏插入情况被认为是 O(N) 呢?
下面是向AVL中添加N个元素的证明,三是N logN: 向空AVL树中添加N个元素的运行时间
我的情况有点乏味。我正在向导航器推送 2 页
甲乙
B 被推到最后。
由于某些原因。我不想弹出 B 从 B 导航到 A。我想替换/交换它们。原因在于国家。我想保留 A 和 B 页面的状态,因为有些小部件的构建成本非常高(Unity 视图小部件)。从 B 如何使用 Navigator 以便在不破坏我的页面的情况下我可以将 B 与 A 交换?
这是流程:
A 作为默认页面打开。
B被推
Navigator.of(context).pushNamed();
页面堆栈是 A - B
从 BI 想要导航到 A 同时仍然保持 B 页面活着。
-经过一些神奇的操作后,我失踪了 -
页面堆栈是 B - A。用户看到页面 A。没有页面被破坏。他们被交换了。
有没有办法在 Flutter 中做到这一点?
我正在制作一个 flutter 应用程序,其中我的后端为 C++。当用户进入某个屏幕时,通过 dart ffi 我发出加载调用信号。我的问题是我正在用 C++ 加载音频,但我想向 dart 发出加载已完成的信号,以便我可以停止显示加载屏幕。AFAIK,没有办法从 C++ 调用 dart。我看到你可以使用 FromFunction。来源在这里。
如何调用没有参数的 void 类方法?或者如何从 C++ 调用 dart 代码?
Ps:我认为目前这是不可能做到的(没有解决方法)。Dart 开发人员请添加此功能,因为能够调用 dart 来处理信息非常有用
import 'package:flutter/material.dart';
void main() => runApp(MyApp());
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Flutter Demo',
theme: ThemeData(
primarySwatch: Colors.blue,
),
home: MyHomePage(),
);
}
}
class MyHomePage extends StatefulWidget {
@override
_MyHomePageState createState() {
return _MyHomePageState();
}
}
class _MyHomePageState extends State<MyHomePage> with WidgetsBindingObserver {
@override
void initState() {
super.initState();
WidgetsBinding.instance.addObserver(this);
}
@override
void dispose() {
WidgetsBinding.instance.removeObserver(this);
super.dispose();
}
@override
void didChangeAppLifecycleState(AppLifecycleState state) {
print(state);
}
@override
Widget build(BuildContext context) {
return WillPopScope(
onWillPop: …
Run Code Online (Sandbox Code Playgroud) 谁能告诉我这个 Dijkstra 算法中优先级队列的空间复杂度。请注意,此处一个顶点可以多次添加到队列中。然而,由于访问集的原因,它不会被处理多次。这就是为什么我想知道队列的最大大小可以达到的原因。
def shortestReach(n, edges, start,target):
adjList = collections.defaultdict(list)
for parent, child, cost in edges:
parent -= 1
child -= 1
adjList[parent].append((child, cost))
adjList[child].append((parent, cost))
priorityQueue = queue.PriorityQueue()
priorityQueue.put((0, start))
visited = set()
while priorityQueue.qsize() > 0:
costPar, parent = priorityQueue.get()
if parent == target:
return costPar
if parent not in visited:
for adj in adjList[parent]:
child, cost = adj
priorityQueue.put((cost + costPar, child))
visited.add(parent)
Run Code Online (Sandbox Code Playgroud)