
【后端编程】
后端编程技术。
paradox_1_0
自由、努力、向上。
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
对udp进行connect的特性总结和实践
特新概述:1:UDP中可以使用connect系统调用2:UDP中connect操作与TCP中connect操作有着本质区别。TCP中调用connect会引起三次握手,client与server建立连结.UDP中调用connect内核仅仅把peer端ip:port记录下来.(实现udp和对端socket的绑定,这一点特性是很重要的)3:UDP中可以多次调用connect,TCP只能调用一次connect. UDP多次调用connect有两种用途:1,指定一个新的ip:port连原创 2020-12-22 17:38:35 · 1061 阅读 · 0 评论 -
服务器端单独关闭listenfd之后其他已经连接的socket还能继续正常工作吗?
答:可以正常通信。测试代码:client:#include<stdio.h>#include<stdlib.h>#include<string.h>#include<errno.h>#include<sys/types.h>#include<sys/socket.h>#include<netinet/in.h>#include<arpa/inet.h>#include<unis原创 2020-11-12 20:42:04 · 527 阅读 · 0 评论 -
谈一谈弱网络下手游的网络同步(二)
上一篇文章主要介绍了手机游戏在弱网络下抵抗网络抖动的解决方案以及传统帧同步在手机游戏上的应用。这一篇主要包括两个部分,第一部分为ECS架构(Entity-Component-System),第二部分ECS架构下状态同步的解决方案以及UE4引擎的序列化与反序列化。什么是ECS架构首先先放上一个unity的ECS插件:sschmid/Entitas-CSharp,感兴趣的同学可以参考源码,虽然是Unity的插件,但是也可以改成C++然后集成进UE4。ECS架构目前在游戏开发中可以说是一个比较先进的框架原创 2020-07-19 18:11:46 · 730 阅读 · 0 评论 -
谈一谈弱网络下手游的网络同步(一)
这篇专栏目前打算写两个部分,第一个部分是弱网络解决方案以及帧同步的总结;第二个部分主要讲基于ECS架构下的状态同步解决方案。如果有时间的话应该还会写几篇关于UE4的网络同步原理的文章。废话不多说,那些网络游戏的前世今生以及远古网络游戏的同步技术这里就不逼逼了,Let's get into the point!弱网络下为什么用UDP而不用TCP弱网络下其丢包、乱序的情况比较常见,延迟也相对有线网络来说更加大,所以手游在弱网络下无法直接照搬端游的那套解决方案。所以手游必须的同步方案必须要另辟蹊径原创 2020-07-19 18:08:00 · 1338 阅读 · 0 评论 -
线程池技术. 对java中线程池七大参数的学习. 设计思想借鉴
java线程池调用接口定义:public ThreadPoolExecutor(int corePoolSize, int maximumPoolSize, long keepAliveTime, TimeUnit unit, ...原创 2020-05-06 14:02:07 · 176 阅读 · 0 评论 -
mysql的c++调用接口(API) . 实现的简单连接池. 项目笔记
系统:windows系统,linux版本暂不提供源码文件:WinTimer.hThreadLock.hThreadLock.cppMysqlConnectionPool.hMysqlConnectionPool.cppAgentConnection.hAgentConnection.cppWinTimer.h#ifndef WINTIMER_H_#define W...原创 2020-05-05 15:12:50 · 384 阅读 · 0 评论 -
QUIC 协议原理分析. 了解学习篇
作者介绍:lancelot,腾讯资深研发工程师。目前主要负责腾讯 stgw(腾讯安全云网关)的相关工作,整体推进腾讯内部及腾讯公有云,混合云的七层负载均衡及全站 HTTPS 接入。对 HTTPS,SPDY,HTTP2,QUIC 等应用层协议、高性能服务器技术、云网络技术、用户访问速度、分布式文件传输等有较深的理解。本文将主要介绍 QUIC 协议产生的背景和核心特性。写在前面如果你的...原创 2020-04-25 00:39:49 · 853 阅读 · 0 评论 -
聊聊Linux IO(上)
编者语最近在看 Redis 持久化的相关原理,antirez 在他的 《Redis 持久化解密》(链接见文末)一文中说过,数据库中带有持久化的写操作分为如下几个步骤:客户端发送写操作命令和数据;(数据在客户端内存) 服务端通过网络收到客户端发来的写操作和数据;(数据在服务端内存) 服务端修改内存中的数据,同时调用系统函数write进行操作,将数据往磁盘中写;(数据在服务端的系统内存缓冲...转载 2020-04-04 02:18:39 · 208 阅读 · 0 评论 -
协程库编写之硬件上下文切换实验 (I)
//co.h文件#ifndef CO_H_#define CO_H_#include <stdio.h>#include <stdlib.h>#include <string.h>#include <stdint.h>#include <limits.h>#include <assert.h>#inc...原创 2020-03-28 13:49:08 · 264 阅读 · 0 评论 -
Linux下的零拷贝函数splice简单测试实例
本测试实例是由splice构造的一个echo服务器。linux服务端代码:#include <sys/socket.h>#include <netinet/in.h>#include <arpa/inet.h>#include <assert.h>#include <stdio.h>#include <unist...原创 2019-12-21 16:42:44 · 446 阅读 · 0 评论 -
【Linux深入】epoll源码剖析
引入之前讲了select、poll、epoll的区别,由于许多应用中都用到了epoll,例如Netty、Redis等等,所以就来深入学习一下,现在我们就来剖析一下epoll的源码 我先来剖析理解epoll源码的基础:主要的数据结构,然后再来解析epoll主要的三个方法:epoll_create()、epoll_ctl()、epoll_wait()。主要的数据结构1.eventpoll...转载 2019-12-16 14:58:38 · 331 阅读 · 0 评论 -
原子操作 . 原理与底层实现
一.概述原子操作(atomic operation)指的是由多步操作组成的一个操作。如果该操作不能原子地执行,则要么执行完所有步骤,要么一步也不执行,不可能只执行所有步骤的一个子集。现代操作系统中,一般都提供了原子操作来实现一些同步操作,所谓原子操作,也就是一个独立而不可分割的操作。在单核环境中,一般的意义下原子操作中线程不会被切换,线程切换要么在原子操作之前,要么在原子操作完成之后。更广...原创 2019-12-13 19:40:15 · 7606 阅读 · 0 评论 -
高性能服务器需要考虑的一些常用优化设计
引自:《C++百万并发网络通信引擎架构与实现》:链接:https://pan.baidu.com/s/15vMndo2jAVZ67yIORQ8efw提取码:qfk7notice:please reverse the order.原创 2019-12-13 18:28:51 · 232 阅读 · 0 评论 -
TCP的异常释放和SO_LINGER套接字选项
1.TCP的异常关闭正常终止一个连接的方法是发送一个FIN报文。有时也称为有序释放,因为所有排队数据都发送完之后才发送FIN,正常情况下没有任何数据的丢失。但也可能发送一个复位报文段而不是FIN来释放一个连接。有时称这位异常释放(abortive release)。异常终止一个连接对应用程序来说有两个优点:丢弃任何待发送数据并立即发送复位报文段 RST的接收方会区分另一端执行的是异常...原创 2019-12-11 16:13:18 · 791 阅读 · 0 评论 -
baidu-brpc学习之简单使用实例编写
rpc_proto文件:syntax="proto2";package example;option cc_generic_services = true;//=====service 1message EchoRequest { required string message = 1;};message EchoResponse { require...原创 2019-11-28 20:22:53 · 1362 阅读 · 0 评论 -
Linux线程通信eventfd
概述eventfd是linux新加入的API(2.26.22内核之后),为用户空间应用程序提供等待(wait)和通知(notify)机制,函数eventfd创建的fd可以加入epoll。eventfd()创建一个“eventfd对象”, 通过它能够实现用户态程序间(我觉得这里主要指线程而非进程)的等待/通知机制,以及内核态向用户态通知的机制(未考证)。此对象包含了一个被内核所维护的计数(ui...原创 2019-11-23 17:06:42 · 450 阅读 · 0 评论 -
Linux select一网打尽
select, 你可以不用它,但你不能不了解它。通过阅读本文,可以帮你理清select的来龙去脉, 让你从中了解到: 我们常说的select的1024限制指的是什么 ?怎么会有这样的限制? 都说select效率不高,是这样吗?为什么 ? select使用中有坑吗? 注:本文的所有内容均指针对 Linux Kernel, 当前使用的源码版本是 5.3.0原型...转载 2019-11-23 11:31:41 · 384 阅读 · 0 评论 -
C++linux后台服务器开发技术线
随着业务市场的不断壮大,更便捷的开发语言也越来越受到市场的欢迎。Java,python还有新贵golang。那c++语言的开发者市场在哪里。虽然说没有活干说的可能过于夸张,但是面临的事实就是比不了。可能初学一点Java,python等等就能找到一份不错的开发工作,但是如果你只会一点c,又不是校招的话,能找到哪些工作呢?c++不同于Java。Java的技术路线是比较固定的,学好技术栈等待新技...转载 2019-11-05 19:53:35 · 388 阅读 · 0 评论 -
一款开源的端口映射工具 lcx
#include <sys/time.h>#include <signal.h>#include <stdlib.h>#include <sys/types.h>#include <sys/socket.h>#include <string.h>#include <netinet/in.h>#inc...原创 2019-08-31 14:06:57 · 953 阅读 · 0 评论 -
windows下高性能网络通信模型IOCP
#pragma once#include<Windows.h>#include<WinSock2.h>#include<stdio.h>#include<process.h>#include<vector>#pragma comment(lib,"ws2_32.lib")//端口号#define SERVER_PORT...原创 2019-08-31 10:17:52 · 358 阅读 · 0 评论 -
Linux下socketpair使用总结
1.socketpair函数:#include <sys/types.h>#include <sys/socket.h>int socketpair(int d, int type, int protocol, int sv[2]);socketpair函数创建一对无名的相互连接的套接字。返回值:成功返回0,创建好的套接字分别为sv[1]和sv[2];否...原创 2019-07-21 11:43:03 · 458 阅读 · 0 评论 -
Linux基于线程池的服务端模型实现 C++
//locker.h#ifndef LOCKER_H#define LOCKER_H#include <exception>#include <pthread.h>#include <semaphore.h>class sem{public: sem() { if( sem_init( &m_sem...原创 2019-06-28 18:34:16 · 175 阅读 · 0 评论