Skip to content

RealChuan/Cpp-Examples

This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.

Folders and files

NameName
Last commit message
Last commit date
Dec 23, 2024
May 13, 2024
May 13, 2024
May 24, 2024
May 13, 2024
May 27, 2023
May 24, 2024
May 24, 2024
Jan 22, 2025
May 24, 2024
Nov 28, 2024
May 24, 2024
May 24, 2024
May 13, 2024
May 13, 2024
Dec 23, 2024
Dec 25, 2024
May 24, 2024
May 24, 2024
Jan 22, 2025
May 27, 2023
May 24, 2024
May 24, 2024
Dec 23, 2024
May 24, 2024
May 27, 2023
May 13, 2024
May 27, 2023
Jan 22, 2025
May 27, 2023
Dec 25, 2024
Jan 22, 2025
Dec 25, 2024

Repository files navigation

Cpp-Examples

代码结构

  1. Algorithm
    1. Search——各种查找算法的实现,以及单元测试和基于google benchmark的性能测试;
      1. std_search_examples——stl中查找算法的例子;
    2. Sort——各种排序算法的实现,以及单元测试和基于google benchmark的性能测试;
      1. std_sort_examples——stl中排序算法的例子;
  2. BinaryTree——二叉树的相关操作,插入、移除、查找、打印;
  3. Breakpad——google breakpad的简单封装;
  4. ByteOrder——判断系统的字节序;
  5. Client——一个简单的Linux select socket客户端;
  6. CountDownLatch——使用std::mutex和std::condition_variable实现的简单倒计时门闩(std::latch c++20);
  7. Crashpad——google crashpad的简单封装;
  8. Curl——curl的简单使用;
  9. TcpClient——使用curl实现的简单tcp客户端;
  10. HttpClient——使用curl实现的简单http同步客户端;
  11. HttpClientAsync——使用curl实现的简单http异步客户端;
  12. DesignPattern——设计模式的一些例子;
  13. Factory——工厂模式;
  14. MVC——mvc模式;
  15. Observer——观察者模式;
  16. Singleton——单例模式;
  17. GlobMatch——glob模式匹配的简单实现;
  18. Glog——google glog的例子;
  19. Icmp——linux icmp协议的简单封装;
  20. LinkedList——链表的相关操作,插入、移除、反转、打印;
  21. Memcpy——memcpy函数实现;
  22. MonitorDir——windows(ReadDirectoryChangesW),macos(FSEvents)和linux(fanotifyinotify)目录监控的简单例子;
    1. fanotify中使用global模式,在fanotify_mark中加入FAN_MARK_FILESYSTEM(需要CAP_SYS_ADMIN能力,即root权限)这个flag,可以所有在指定文件系统上的事件都会被监控,然后可以根据指定的监控的文件夹目录过滤需要的事件,这个功能比inotify更强大;
      1. 获取事件发生文件所在的上级路径中,使用了open_by_handle_at这个方法,普通用户下会出现Operation not permitted错误,也需要CAP_SYS_ADMIN能力,即root权限;
      2. 建议使用root权限运行,如果一定要在普通用户下运行,还是建议使用inotify而不是fanotify,反正在打开一个监控文件描述符(fd)的情况下,都无法实现subtree监控;
  23. MonitorDir_EFSW——使用efsw实现的目录监控的简单例子;
  24. Mutex——使用std::atomic_flag实现的简单互斥锁和自旋锁;
  25. OpenSSL——openssl的一些例子;
    1. aes——aes加解密的例子;
    2. base64——base64编解码的例子;
    3. hash——sha256的例子;
    4. hmac——hmac的例子;
    5. pem——pem格式的例子;
    6. rsa——rsa加解密的例子;
    7. sm4——sm4加解密的例子;
    8. x509——x509证书的例子;
    9. bash——openssl命令行的例子;
  26. SafeCallback——生命周期安全的回调函数的实现,参考muduo WeakCallback
  27. Server——linux server的一些例子;
    1. server_epoll——epoll的例子;
    2. server_poll——poll的例子;
    3. server_select——select的例子;
  28. Thread——基于std::thread实现的线程类,包括线程池;
    1. Thread——线程类;
    2. ThreadPool——线程池;