Home

Docker

前言 对docker使用的一些经验总结 辅助工具 mac使用: docker-cli 常见命令 查看已启动的docker进程及详细信息(containerId, imageVersion, command, public的端口号等) docker ps 启动docker镜像 docker run -it -d --name [your_instance_name] -p [local_port]:[instance_port] -v [local_path]:[instance_path] [image:version] 示例: docker run -it -d name ubuntu-test -p 4567:22 -v /home/...

Read more

PostgreSQL学习

前言 持续更新中 基础使用 参考文档 官方手册: 英文版 中文版 pq 几年前比较流行的纯go语言编写的工具, 现维护不频繁, 官方readme建议迁移到pgx的使用: For users that require new features or reliable resolution of reported bugs, we recommend using pgx which is under active development. pgx 纯go语言编写的PostgreSQL工具, 目前较活跃, 功能较齐全 官方文档 https://pkg.go.dev/github.com/jackc/pgx/v4 具体...

Read more

golang与c++区别

前述 从c++转到golang, 有很多不习惯和新颖的地方。偶然看到一篇文章《如何避免动态语言思维写go》, 虽然写的比较粗略, 但还是提醒了我, 转语言需要去进行比较、转换编码思维。 参考 uber go style effective go 语法区别 基础 c++: int a = 1; void Func(string a) { if (a == "a") { } switch(1) { case 1: break; defualt: break; } return a == "b" ? a : "c"; } // 对于多返回结果 stru...

Read more

c++库thread实践

前述 对c++11的thread进行应用 尝试 1.两个线程交替打印字母 #include <iostream> #include <thread> #include <mutex> #include <condition_variable> void printa(bool& flag, std::mutex& mtx, std::condition_variable& cv) { for (;;) { std::unique_lock<std::mutex> la(mtx); // 利用条件变量控制unique_lock的加锁、解锁状态 ...

Read more

gitalk配置

前述 本篇主要是解决使用Gitalk插件时,登录授权报 403 的问题 问题描述 使用gitalk关联github application,借助github仓库的issue功能,可以简单的构建出githubpage的评论模块。 但是我在使用时,发现使用github登录会报很刺眼的403错误。 查找了一些文章和github的issue,发现是gitalk自身的问题: gitalk为了解决github的跨域问题,使用了一个默认的反向代理https://cors-anywhere.herokuapp.com。但是这个代理不久前被受限了,因此导致了403的问题。 问题解决 知道了问题出在代理,更换代理自然是最快的解决办法。 这里根据参考的内容,采用了cloudfare创建了一...

Read more

c++反射实现

前述 反射的概念是,比如有一个类ClassA,你想通过它的名称”ClassA”来创建一个ClassA的实例,这就叫反射。 反射在很多业务场景/框架下是非常实用的,可以大大降低业务的代码量,框架看起来也比较清晰。 c++是没有其他语言的反射机制的,只能靠手动实现。实际上就是实现一个类名称到类实例(或者创建类实例对象的函数)的一个映射。 实现 全局静态注册方法 维护一个全局静态map,在进入main之前,就将需要反射的类注册好,需要使用时获取即可。 // 实现 typedef void* (*ReflectFunc)(void); static std::map<std::string, ReflectFunc> _reflection_map; class Ha...

Read more

c++模拟实现defer

前述 golang的defer语法带来的便捷性和观感真是太好了,代码写起来神清气爽,c语言没有这个关键字有点可惜。 有许多相同想法的大佬已经模拟实现过了,这边拿其中一个写的不错的代码拿来再简单封装一下。 参考代码 https://github.com/Microsoft/GSL/blob/ebe7ebfd855a95eb93783164ffb342dbd85cbc27/include/gsl/gsl_util#L85-L89 封装实现和测试 #include <iostream> #include <functional> template <class F> class final_act { public: explicit f...

Read more