@
ireqhawk 静读天下我试过, 用遥控器基本操作不了, 或是是我下载的版本不对?
COIMICSCREEN 我搜了一下, 看界面也不像是用遥控器能操作的样子.
想起来一个类似的问题, erlang 里有这样一个删数组元素的方法 [1,3,2,2,3] -- [2,3] ==> [1,2,3]
erlang 的编译器团队在前 20 个大版本上面的算法都是 n^2 的, 近几年才改成 nlogn, 我也是服了.
据我了解是没这种东西的.
建议是先找产品砍掉这个需求, 实在不行就直接在 select list 里去掉不需要的, 然后相信优化器.
react 的是人写的.
go 的这个文档是通过代码里的注释直接生成的, 我从来不看这玩意.
只是高频更新不会导致死锁, 建议先把死锁的问题修好再看.
lldb 和 gdb 和确定是不是 clion 的错误也没什么关系啊,
(lldb) print a
(std::unordered_map<int, std::vector<int> >) size=1 {
[0] = {
__cc_ = {
first = 1
second = size=3 {
[0] = 1
[1] = 2
[2] = 3
}
}
}
}
如果 lldb 能这样成功打印, 那肯定是 clion 的错误了, 直接找 jetbrains 就行了.
没并发问题吧, 这里只是用了一个比较蠢的办法去构造了 User u 而已.
想要酷可以参考 std::visit 的做法. 编译期生成一个 Invoke_array, 下面的例子是从运行期的 int 转特定类型到 lambda 中的例子. 稍微改改就能用于你的需求.
using namespace std;
constexpr std::array cached_type_ints = {1};
struct void_ptr {
int type;
void *ptr;
};
template <int T> struct Int2Type;
template <> struct Int2Type<1> {
using type = int;
};
template <typename Func, typename> class Visitor;
template <typename Func, std::size_t... pos>
class Visitor<Func, std::index_sequence<pos...>> {
public:
using return_type =
std::invoke_result_t<Func, Int2Type<cached_type_ints[0]>::type *>;
using fn_type = return_type (*)(Func &&, void *);
template <int16_t type_int>
static auto func_wrapper(Func &&func, void *ptr) -> return_type {
using real_type = typename Int2Type<type_int>::type;
return func(static_cast<real_type *>(ptr));
}
static auto visit(Func &&func, const void_ptr &item) -> return_type {
constexpr static std::array<fn_type, cached_type_ints.size()> invoke_map = {
func_wrapper<cached_type_ints[pos]>...};
size_t idx = std::ranges::lower_bound(cached_type_ints.begin(),
cached_type_ints.end(), item.type) -
cached_type_ints.begin();
if (idx >= invoke_map.size() or cached_type_ints[idx] != item.type)
[[unlikely]] {
throw std::bad_variant_access();
}
return invoke_map[idx](std::forward<Func>(func), item.ptr);
}
};
template <typename Func> auto visit(Func &&func, const void_ptr &item) {
using visitor = Visitor<decltype(func),
std::make_index_sequence<cached_type_ints.size()>>;
return visitor::visit(std::forward<Func>(func), item);
}
inline auto usage() {
auto item = void_ptr{.ptr = new int(1), .type = 1};
visit(
[](auto *ptr) {
print(*ptr);
delete ptr;
},
item);
}
用 erlang/elixir 的很大一部分是做游戏后端的.
问数据库优化的问题不贴 explain 就算了, 现在连 sql 都没有了.
wd40 精密仪器版应该可以, 我手柄进饮料就是这么修好的.
有状态服务更新用 erlang 热更新都挺麻烦的, go 基本不可能了.
没必要, 数据库一般会用一些压缩算法, 肯定比你支持存 json 文件要省的.
数据库里用 partition table, 按日期分
内存溢出肯定是你代码有错, 86400*200 个 float 应该还不到 100MB.
个人经验, 工作中看到 “封装” 这个 2 个字就没好事.