[代码已开源]集群聊天服务器与客户端开发-编程思维

服务器 服务 技术特点 如何使用 依赖库 客户端 服务器 服务器代码在https://gitee.com/ericling666/sponge,对应的客户端源代码在https://gitee.com/ericling666/spongeclient。 对本项目的演示,请看视频【集群聊天服务器与仿微信客户端开发,服务器基于muduo,mysql,redis,客户端基于Qt6和Fluent

图解二维完全背包问题——降维打击-编程思维

例题 例题:518. 零钱兑换 II 概述: 给你一个整数数组 coins 表示不同面额的硬币,另给一个整数 amount 表示总金额。 请你计算并返回可以凑成总金额的硬币组合数。如果任何硬币组合都无法凑出总金额,返回 0 。 假设每一种面额的硬币有无限个。 题目数据保证结果符合 32 位带符号整数。 朴素的二维完全背包 想法: 完全背包问题:即为假设可选择的物品为无限个,在数学本质上是组合

c++ concurrency in action 读书笔记一:thread的管理-编程思维

为避免混淆,用thread表示std::thread及其对象实例,用线程表示操作系统概念下的线程 Chapter 2 thread的管理 2.1 thread的创建(构造函数) a. 默认构造函数 default: thread() noexcept; 创建一个placeholder,不和任何线程关联。其使用场景如定义一个thread数组。可以在之后通过thread& operat

c++快速排序-编程思维

前两天面试过程中弱智了连快排没写出来,这里简单做一下个人向记录。 只需要挑选出枢轴以后简单左右比较,匹配即可,最后记得把枢轴调整到中间。 基础算法还是要掌握熟练的,对于跳出/边界/顺序等特殊情况最好在脑海中有一个大概的模拟。 # include<iostream> # include<vector> # include<algorithm> using nam

设计模式学习(一)单例模式补充——单例模式析构-编程思维

目录前言无法调用析构函数的原因改进方法内嵌回收类智能指针局部静态变量参考文章 前言 在《单例模式学习》中提到了,在单例对象是通过new关键字动态分配在堆上的情况下,当程序退出时,不会通过C++的RAII机制自动调用其析构函数。本文讨论一下这种现象的原因以及解决方法。 无法调用析构函数的原因 在DCLP(双检查锁模式)中,CSingleton中的instance是一个静态指针变量,被分配在全局/静

设计模式学习(一)单例模式补充——指令重排-编程思维

目录前言指令重排简介指令重排对单例模式的影响改进方法std::call_once和std::once_flagstd::atomic和内存顺序局部静态变量总结参考文章 前言 在《单例模式学习》中曾提到懒汉式DCLP的单例模式实际也不是线程安全的,这是编译器的指令重排导致的,本文就简单讨论一下指令重排对单例模式的影响,以及对应的解决方法。 指令重排简介 指令重排(Instruction Reor

[c++] c++生成随机数-编程思维

一、简介 在C语言中常使用srand()+random()的方式生成随机数,该方式并不是一个很好的随据说生成方法,一方面是因为其生成的随机数质量较低,另一方面其随机数范围也有所限制。在C++11中推荐使用随机数引擎的方式生成随机数。 如何高效得生成高质量得随机数(甚至需要满足指定分布)是一个复杂的问题,本文只给出C++11中常用的用于生成均匀分布、正态分布等特定分布的随机数代码,并不对随机数生成

windows下使用winsock库实现tcp客户端通信,c/c++-编程思维

编程思路 第一步 创建一个WASDATA结构体变量,用于存储关于Winsock库的信息;初始化Winsock库。 第二步 创建TCP套接字。 第三步 创建sockaddr_in结构体变量,用于储存服务器地址信息。里面包括设置地址族、IP地址、端口号。 第四步 调用connect函数连接服务器。 通信 调send函数发送数据 调recv函数接收数据 实现代码 头文件部分 #include <

【c/c++语法基础】6.结构体(新手推荐):揭开神秘面纱,探索c语言中的“乐高积木”-编程思维

前言 你们是否曾在学习C/C++的道路上,对着屏幕陷入沉思,疑惑于如何将多个不同类型的数据捆绑在一起,组成一个有机的整体?是否曾在数据管理的海洋中迷失,渴望有一种“乐高积木”般的能力,可以让你们随心所欲地搭建属于自己的数据结构?那么,结构体,就是你们需要的答案! 什么是结构体? 结构体,是C/C++语言中用于封装不同数据类型的“容器”,就像一个神秘的宝盒,可以把我们想要在一起的东西收藏起来。它允

苹果applemacos系统sonoma本地部署无内容审查(nsfw)大语言量化模型causallm-编程思维

最近Mac系统在运行大语言模型(LLMs)方面的性能已经得到了显著提升,尤其是随着苹果M系列芯片的不断迭代,本次我们在最新的MacOs系统Sonoma中本地部署无内容审查大语言量化模型Causallm。 这里推荐使用koboldcpp项目,它是由c++编写的kobold项目,而MacOS又是典型的Unix操作系统,自带clang编译器,也就是说MacOS操作系统是可以直接编译C语言的。 首先克

c++中opencv、armadillo矩阵数据格式的转换方式-编程思维

  本文介绍在C++语言中,矩阵库Armadillo的mat、vec格式数据与计算机视觉库OpenCV的Mat格式数据相互转换的方法。   在C++语言的矩阵库Armadillo与计算机视觉库OpenCV中,都有矩阵格式的数据类型;而这两个库在运行能力方面各有千秋,因此实际应用过程中,难免会遇到需要将二者的矩阵格式数据类型加以相互转换的情况。本文就对其相互转换的具体方法加以介绍。   首先,二者

c++内存管理-编程思维

关于C++内存和分配的学习笔记 C++内存和分配很容易出问题,为了编写高质量的CPP代码,我们必须了解幕后的工作原理。 1.内存泄漏 例如: void leaky() { new int;//这里就是内存泄漏 cout<<"我泄漏了一个int的内存!"<<endl; } 自由存储区中的数据库无法被栈或者间接访问,这块内存被遗弃了(泄漏了)。 正确代码: int