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/...
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
具体...
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...
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的加锁、解锁状态
...
gitalk配置
前述
本篇主要是解决使用Gitalk插件时,登录授权报 403 的问题
问题描述
使用gitalk关联github application,借助github仓库的issue功能,可以简单的构建出githubpage的评论模块。
但是我在使用时,发现使用github登录会报很刺眼的403错误。
查找了一些文章和github的issue,发现是gitalk自身的问题:
gitalk为了解决github的跨域问题,使用了一个默认的反向代理https://cors-anywhere.herokuapp.com。但是这个代理不久前被受限了,因此导致了403的问题。
问题解决
知道了问题出在代理,更换代理自然是最快的解决办法。
这里根据参考的内容,采用了cloudfare创建了一...
c++反射实现
前述
反射的概念是,比如有一个类ClassA,你想通过它的名称”ClassA”来创建一个ClassA的实例,这就叫反射。
反射在很多业务场景/框架下是非常实用的,可以大大降低业务的代码量,框架看起来也比较清晰。
c++是没有其他语言的反射机制的,只能靠手动实现。实际上就是实现一个类名称到类实例(或者创建类实例对象的函数)的一个映射。
实现
全局静态注册方法
维护一个全局静态map,在进入main之前,就将需要反射的类注册好,需要使用时获取即可。
// 实现
typedef void* (*ReflectFunc)(void);
static std::map<std::string, ReflectFunc> _reflection_map;
class Ha...
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...
30 post articles, 5 pages.