首页 > TAG信息列表 > buf

Java 粘包和半包问题

/** * 从 buf 中查找 "\r\n",并返回这段(包括 \r\n)空间的长度。 * 如果 buf 中没有,则返回 0 。 */ private static int findLineEnd(final byte[] buf, int rlen) { int splitbyte = 0; while (splitbyte + 1 < rlen) { if (buf[splitbyte] == '\r' &a

《C语言 —— strncat、strncpy、snprintf、fgets》

在对缓冲区(一般为数组)进行拷贝前,要保证复制的长度不要超过缓冲区的空间大小。比如在 memcpy 前,要检查目的地址是否有足够的空间。   使用宏或 sizeof 可保证缓冲长度的一致性: char dst_buf[64]; memcpy(dst_buf, src_buf,64)   当缓冲大小改变为 32 的时候,需要改动两处代码

实现SM4算法(16字节版)

base_sm4.h #pragma once #include <vector> #include <iostream> /*32位以内的循环左移*/ #define SM4_Rotl32(buf,n) (((buf)<<(n))|((buf)>>(32-(n)))) class base_sm4 { public: base_sm4() {}; /* * 函数SM4_SelfCheck是SM4自检函数,它用标准数据作为输入,

buf 新的使用protocol buffers 的工具

buf 解决了现有基于protocol buffers 进行api 开发的一些问题 buf 的特性 管理protobuf 资产、包含了插件、模版、以及buf 的schema 仓库 liner 支持,可以开发更好的api 可以增强源码以及协议级的兼容 基于配置模版的生成器 格式化器,基于工业级标准的格式化protobuf 文件 集成buf

平衡树做题记录

板子就不说了。 P2786 英语1(eng1)- 英语作文 红黑树 map 随便做,用一个 map 存下字符串对应的值,一个字符一个字符读入,然后判断, 如果不是数字并且不是字母,说明空格或者符号,处理答案。 /** * author: TLE_Automation * creater: 2022.9.7 **/ #include<cmath> #include<queue> #inc

Linux Rootkit技术

一、介绍  Rootkit这一概念最早出现于上个世纪九十年代初期,CERT Coordination Center(CERT/CC)于1994年在CA-1994-01这篇安全咨询报告中使用了Rootkit这个词汇。在这之后Rootkit技术发展迅速,这种快速发展的态势在2000年达到了顶峰。2000年后,Rootkit技术的发展也进入了低潮期,但是

数组&指针

分类 int a; int *a; int **a; int a[10]; int *a[10]; int (*a)[10]; //一个指向有10个整型数数组的指针 int (*a)(int); //一个指向函数的指针,该函数有一个整型参数,并返回一个整型数 int (*a[10])(int); //一个有10个指针的数组,该指针指向一个函数,该函数有一

分割字符 strtok_r

函数原型 #include <string.h> char *strtok(char *str, const char *delim); char *strtok_r(char *str, const char *delim, char **saveptr); str: 要分割的字符 delim: 分隔符 saveptr: str分割后的后部分 返回值: str分割后的后部分,如果没有满足的条件的则返回NU

钓鱼攻击第一弹-释放文件

钓鱼攻击第一弹-释放文件 之后所有文章发至《熊猫安全》公众号上 获取当前路径 #include <stdio.h> #include "direct.h" #define MAX_SIZE 255 int main(int argc, const char* argv[]) { char buf[MAX_SIZE]; getcwd(buf, sizeof(buf)); printf("current working d

文件IO-getcwd-chdir

chdir getcwd #include <stdio.h> #include <stdlib.h> #include <unistd.h> #define MAX 512 int main(int argc, char * argv[]) { // 方法一 char path[MAX]; path[0] = '\0'; getcwd(path, sizeof(path)); puts(path);

文件IO-chdir-getcwd

getcwd #include <stdio.h> #include <stdlib.h> #include <unistd.h> #define MAX 512 int main(int argc, char * argv[]) { // 方法一 char path[MAX]; path[0] = '\0'; getcwd(path, sizeof(path)); puts(path); /

关于read指向缓冲区的理解

read在linux原型定义如下:   #include <unistd.h> ssize_t read(int fd, void *buf, size_t count); 关于buf,man手册解释如下: “read() attempts to read up to count bytes from file descriptor fd into the buffer starting at buf.” 也就是说,read读取数据后,放到buf缓冲区中

linux 多线程之间使用管道进行通讯

  参考  (129条消息) linux c 使用fifo管道进行多线程间通信_土豆西瓜大芝麻的博客-CSDN博客_多线程fifo 稍作修改 #include <stdio.h> #include <stdlib.h> #include <pthread.h> #include <unistd.h> #include <sys/types.h> #include <sys/stat.h> #include <string.h&

Java 删除 文本文件 最后一行 为 NUL 的字符

原文地址:https://www.cnblogs.com/baby123/p/12706280.html 如果文件末尾有一串NUL,就会报错,去掉NUL,再解析 NUL 即 ascii 码值为 0 的比特 public static void delNulAtLastLine(String fileName) throws Exception { RandomAccessFile file = new Rando

golang读取文件

golang读文件 1、os.Open() //File文件读操作 func ReadFile() string { file, err := os.Open("./test.txt") if err != nil { fmt.Printf("err:%v\n", err) } defer file.Close() var chunk []byte buf := make([]byte, 100)

netty系列之:自定义编码和解码器要注意的问题

目录 简介 自定义编码器和解码器的实现 ReplayingDecoder 总结 简介 在之前的系列文章中,我们提到了netty中的channel只接受ByteBuf类型的对象,如果不是ByteBuf对象的话,需要用编码和解码器对其进行转换,今天来聊一下netty自定义的编码和解码器实现中需要注意的问题。 自定义编码器

I/0流 字节流

I/O流 (输入/输出): 两种基本的流:1. 输入流Inputstream                                    2. 输出流 Outputsteam 两种流采用相同顺序读写方式:1. 过程:打开流--->执行读(写)操作--->关闭流                                      

MD5加密工具类

package cn.itsource.basic.util; import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; /** * 密码加密工具 */ public class Md5Utils { /** * 加密 * @param context */ public static String encrypByMd5(String co

c++获取文件字符串

#include <iostream> void getfilename(const char* filename, char* name)//从完整路径名中解析出文件名称,例如:/home/test/abc.txt,解析完成后为abc.txt { int len = strlen(filename); int i; for (i = (len - 1); i >= 0; i--) { if ((filename[i] ==

PE格式: 新建节并插入代码

PE格式是 Windows下最常用的可执行文件格式,理解PE文件格式不仅可以了解操作系统的加载流程,还可以更好的理解操作系统对进程和内存相关的管理知识,而有些技术必须建立在了解PE文件格式的基础上,如文件加密与解密,病毒分析,外挂技术等。 经过了前一章的学习相信你已经能够独立完成

C++ 快速读取大文件

方法一、 clock_t start = clock(); ifstream fin(objpath,std::ios::binary); vector<char> buf(fin.seekg(0,std::ios::end).tellg()); fin.seekg(0,std::ios::beg).read(&buf[0],static_cast<std::streamsize>(buf.size())); fin.close(); clock_t end = cl

Java --> 网络编程

    端口号 1 import java.net.InetAddress; 2 3 public class InetAddressDemo { 4 public static void main(String[] args) throws Exception{ 5 InetAddress localHost = InetAddress.getLocalHost(); 6 System.out.println(localHost); //重

《C现代编程集成开发环境、设计模式、极限编程、测试驱动开发、重构、持续集成》读书笔记1

C 与 模块化 经典栈代码 /** *@file: Stack.h */ #ifndef _STACK_H_ #define _STACK_H_ #ifdef __cplusplus extern "C" { #endif bool push(int val); bool pop(int *pRet); void show(void); #ifdef __cplusplus } #endif #endif /** *@file: Stack.c */ #includ

Lab8 Locks

Lab8 Locks 这个实验还是蛮难的... 1. Memory allocator(moderate) 1.1 题目 众所周知,在xv6中,我们申请的内存是在结构体struct kmem中申请的,struct kmem中的链表struct run *freelist存放了所有的空闲内存(以page为单位),在申请和释放内存的时候,可能会存在race condition(其详细解释

xv6——文件系统:磁盘的I/O操作和内存缓存机制

目录 目录相关源码文件架构图数据结构内存的缓存块函数实现IDE磁盘的读写操作磁盘串口读写操作函数 void idestart()磁盘中断处理函数void ideintr()磁盘的读写处理函数void iderw()内存缓存区操作函数Buffer块初始化函数void binit()查找指定的磁盘block块对应的buffer缓存块函数