2021

行为树基础实现

行为树基础实现

最近的项目需要移植行为树,所以我设计了一个较为简单的行为树框架,在这分享出来。

11 min read
Back to Top ↑

2020

SSH免密登录

SSH免密登录

分享一下如何使SSH免密登录和可能的坑

~1 min read
Back to Top ↑

2019

Jenkins编译配置Merge before build

Jenkins编译配置Merge before build

分享一下Jenkins编译服务配置Merge before build编译前先合并的坑。

~1 min read

共享内存一写多读无锁实现

共享内存一写多读无锁实现

最近的项目开发需要用到多进程,使用PubSub发布订阅模式进行进程间的通信。通信方式可以是TCP/UDP管道Pipe/消息队列共享内存shared memory等等。其中TCP/UDP的方式是可以用作局域网以及跨平台的通信,Pipe/消息队列是进程间基于系统实现比较基础的通信,这两者有大量优秀的第三方库支持,如ZeroMQ,只要加入我们自定义数据的转换方式即可方便实现;而共享内存是实现进程间通信最快的方式,但因为共享内存的设计并不是用来做类似PubSub这种模式的实现的,并且共享内存实质上就是一段进程间共享的内存空间,使用自由度是极高的,所以也很少有第三方库来实现共享内存方式的进程间通信。

因此本文的重点是如何使用共享内存shared memory来实现高效的PubSub发布订阅模式。


24 min read

用于继承树的可继承单例模板类

用于继承树的可继承单例模板类

最近需要在一个继承树中大量用到单例模式,最经典的单例实现是不够用了。

经典单例实现

class Singleton {
 public:
  ~Singleton() = default;
  Singleton(const Singleton &) = delete;
  Singleton &operator=(const Singleton &) = delete;
  Singleton(Singleton &&) = delete;
  Singleton &operator=(Singleton &&) = delete;

  /// Get singleton
  static Singleton &Instance() {
    static Singleton instance_;
    return instance_;
  }

 private:
  Singleton() = default;
};
4 min read
Back to Top ↑

2018

吴恩达机器学习和深度学习编程作业

吴恩达机器学习和深度学习编程作业


最近开始Andrew Ng大牛的机器学习和深度学习之旅,将编程练习和一些心得记录下来,项目地址:ml_dl_coursera_Andrew_Ng
使用python来完成作业是因为后面深度学习也得用python并且可以顺便练习一下numpy、pandas、matplotlib等这些科学计算常用的库。

~1 min read

Tensorflow指定GPU运行

Tensorflow指定GPU运行

今天发现使用GPU来训练,死活都报内存不足,后来想到可否只使用CPU来训练,而我已经装了tensorflow-gpu版,不想重新配置环境。

~1 min read

python迭代器的注意事项

在Google机器学习课程里面发现这段代码,跑了好几次都报错,说找不到latitude_32_to_33列: ```python LATITUDE_RANGES = zip(range(32, 44), range(33, 45))

~1 min read

Jupyter notebook的路径问题

Jupyter notebook的路径问题

昨天遇到的一个问题:import requests的时候总提示我找不到包,我在检查了启动jupyter notebook的环境中的conda和pip都已经把requests包更新到最新了。
后来在notebook里面用os.path查看了当前的路径才发现是在另外一个环境里面。
(我之前按照某个教程新建了个tensorflow环境并且配置过jupyter notebook,但是没注意改了什么)
我今天找回那个教程,结果发现是这一句话的问题

~1 min read

建站心得

建站心得

上周与之前某伯乐互相吐槽,也聊了好多心得。 最大的收获就是,在我现在这个年纪,应该多学习多尝试,不应该安于现状。
还有就是要多分享,你懂的别人不一定懂,而别人懂的那部分也是值得你学习的。 这也是建站的原因,一是交流心得,二是提升知名度,作为一个程序员两者都很有作用。

至于为什么选择在GitHub上建,当然是因为这里自由度高,并且平时总会往GitHub上上传一些代码,联系起来比较方便。
还有就是平时不会有很多的时间花在逛平台上,不那么偏社交的平台可能更适合我一些。

~1 min read
Back to Top ↑