一款易用高效的tcp框架https://github.com/fwhezfwhez/tcpx1. 简述golang 原生库提供对tc
原创 2022-11-23 06:12:22
1571阅读
## 用Golang实现TCP客户端 作为一名经验丰富的开发者,我将会为你介绍如何使用Golang编写一个TCP客户端。在这篇文章中,我将为你提供整个流程的步骤,并解释每一步需要做什么,同时附上代码示例并注释代码的意思。 ### TCP客户端实现步骤 首先,让我们看一下实现TCP客户端的步骤: | 步骤 | 描述 | | ----- | -------- | | 1 | 创建一个TCP连接
原创 2024-04-30 10:59:13
169阅读
在Kubernetes(K8S)中,通常会涉及到与外部服务进行通信的需求,而实现一个基于GolangTCP服务器(golang tcp server)就是其中一种常见的场景。下面我将向你介绍如何利用Golang编写一个简单的TCP服务器,并与你分享整个实现过程。 **整个实现流程**: | 步骤 | 描述 | | ------ | ----- | | 1 | 创建TCP服务器 | | 2 |
原创 2024-04-30 10:58:07
133阅读
go 短连接和长连接 超时处理 作为一个可能会和很多Client进行通讯交互的Server,首先要保证的就是整个Server运行状态的稳定性,因此在和Client建立连接通讯的时候,确保连接的及时断开非常重要,否则一旦和多个客户端建立不关闭的长连接,对于服务器资源的占用是很可怕的。因此,我们需要针对可能出现的短连接和长连接,设定不同的限制策略。    针对短连接,我们可以使用
文章目录前言解析方式1. 字符串格式(1)公钥(2)私钥2. 证书文件格式(1).pem、.cert、.cer、.crt(2).pkcs12、.pfx、.p123. N,E参数总结 前言加密、解密、签名、验签等操作总少不了对秘钥的处理,秘钥的存储格式决定了解析方式。在golang中关于RSA加密、解密、签名、验签的总结一文中提到的仅是针对的字符串类型的秘钥处理,本文中将对常见的几种RSA秘钥存储
一、基本介绍Golang的主要设计目标之一就是面向大规模后端服务程序,网络通信这块是服务端 程序必不可少也是至关重要的一部分。1、 网络编程有两种:TCP socket编程,是网络编程的主流。之所以叫Tcp socket编程,是因为底层是基于Tcp/ip协议的. 比如: QQ聊天b/s结构的http编程,我们使用浏览器去访问服务器时,使用的就是http协议,而http底层依旧是用tcp socke
转载 2023-09-16 11:04:33
122阅读
最近听说golang连接orcale比较麻烦,遂决定一探究竟,结果发现还的确有点费事,不过终究还是可以实现的。     使用glang有一段时间了,最开始其实并不太喜欢他的语法,但是后来熟悉之后发现用起来还挺爽的。之前数据库一直使用mysql,连接起来没有什么问题,github上有很多完善的驱动,所以以为连接其他数据库也应该没什么问题
转载 2024-04-30 16:52:09
71阅读
# Python TCP 加密实现流程 ## 概述 本文将介绍如何使用Python实现TCP加密通信。首先,我们将使用OpenSSL生成一对公钥和私钥,然后使用生成的私钥对TCP通信进行加密,再使用公钥对加密数据进行解密。 ## 流程图 ```mermaid flowchart TD A[生成公钥和私钥] --> B[建立TCP连接] B --> C[发送公钥给对方]
原创 2023-10-11 03:48:59
136阅读
文章目录1. 客户端和服务器模型2. 服务器端配置3. 客户端配置 1. 客户端和服务器模型socket: BSD UNIX的进程通信机制,通常也称作“套排字”,用于描述IP地址和端口,是一个通信链的句柄。socket 可以理解为 TCP/IP 网络的API,它定义了许多函数,程序员可以使用它来开发TCPIP网络的应用程序。计算机上运行对的应用程序通常通过“套接字"向网络发出请求或者应答网络请求
转载 2023-07-26 16:21:34
192阅读
golang epoll 实现 tcp serverlinux环境下的 epoll 概念 java 里面 bio 就是每次获得一个 客户端连接,就要开启一个线程处理,连接数太大,线程数也会很大耗费系统资源, golang也是一样,如果改用 每个连接对应一个协程,如果是百万tcp连接,同样会耗费大量的内存资源,所以 这个时候可以使用 epoll 来进行优化使用epoll 需要理解的概念epoll 有
Golang中的锁锁是一种在并发编程中常用的同步机制,用于管理对共享资源的访问。Golang提供了多种锁类型,可以满足不同的并发编程需求。用途和分类锁的主要作用是保护共享资源,防止多个goroutine同时访问同一个资源,导致数据的不一致性和并发安全问题。Golang提供的锁主要分为两类:互斥锁:sync.Mutex互斥锁是最基本的锁类型,可以用于保护任何类型的共享资源。当一个goroutine获
转载 2024-03-25 12:52:22
65阅读
map是golang的内置数据类型之一,日常工作中用起来真的是非常方便。可它也有个明显的不足之处,就是经常在并发时需要加读写锁。锁来锁去,不仅对性能有影响,写起来也感觉很烦。标准库sync中有一个Map的数据结构,官方文档上是这么介绍的:概括下就是说sync.Map,类似于map[interface{}]interface{},并且对于并发访问是安全的,不需要再额外加锁。大部分时候,用户应该使用m
使用ioutil包进行文件写入// 写入[]byte类型的data到filename文件中,文件权限为permfunc WriteFile(filename string, data []byte, perm os.FileMode) error示例:/** * @File Name: writefile.go * @Author: * @Email: * @Create Date: 20
Golang对称加密-AES 代码 没啥好说的,直接上代码吧! package encrypt import ( "bytes" "crypto/aes" "crypto/cipher" "encoding/base64" "errors" ) //aes(高级加密标准) //加密秘钥, 长度分别是 ...
转载 2021-07-30 15:27:00
284阅读
2评论
我参与11月更文挑战的第9天,活动详情查看:2021最后一次更文挑战 0. 摘要 在项目开
原创 2022-01-18 13:52:47
356阅读
Golang专家级教程:crypto/rand 库的使用技巧与最佳实践引言:为什么选择 `crypto/rand``crypto/rand` 基本概念与原理1. 加密安全的伪随机数生成器(CSPRNG)2. 操作系统的随机数源3. 应用场景如何使用 `crypto/rand`:基础示例1. 生成随机字节序列2. 生成随机整数进阶使用:`crypto/rand` 在加密与安全领域的应用1. 生成加
代码地址:https://gitcode.net/m0_51510236/go_password首先我们来初始化一个项目go mod init go_passwordgolang密码加密我们可以使用 golang.org/x/crypto/bcrypt 包:go get "golang.org/x/crypto/bcrypt"然后我们可以在 utils 包中编写一个 password.go 文件,
转载 2024-03-30 12:40:23
99阅读
简介最近正在迁移自己的小项目,项目之前是基于Laravel5.5开发的。整个用户登陆也是基于框架的 Auth 包认证的。其中用户密码这块也是用到了PHP内置的函数password_hash,用它进行密码加密。而且 PHP 默认使用的 PASSWORD_BCRYPT 算法。在使用 Go 的迁移过程中需要认证密码,所以就把这个过程记录下来。使用下面的例子来说明如何使用 GObcrypt包来对你的密码进行 hash 和 salt 加密对于这个例子,我将创建一个控制台应用程序,用于演示如何获取用户输入的密码
原创 2021-06-01 12:27:14
926阅读
密钥生成流程 生成私钥操作流程概述 使用rsa中的GenerateKey方法生成私钥 func GenerateKey(random io.Reader, bits int) (priv *PrivateKey, err error) rand.Reader -> import "crypto/rand" 1024 的整数倍 - 建议 通过x509标准将得到的ras私钥序列化为ASN.1 的 DER编码字符串 func MarshalPKCS
原创 2021-06-01 12:27:22
850阅读
0. 摘要在项目开发过程中,当操作一些用户的隐私信息,诸如密码,帐户密钥等数据时,往往需要加密后可以在网上传输.这时,需要一些高效地,简单易用的加密算法加密数据,然后把加密后的数据存入数据库或进行其他操作;当需要读取数据时,把加密后的数据取出来,再通过算法解密.1. 关于加密解密当前我们项目中常用的加解密的方式无非三种.对称加密, 加解密都使用的是同一个密钥, 其中的代表就是AES,DES非对加解
原创 2023-03-13 10:36:48
299阅读
  • 1
  • 2
  • 3
  • 4
  • 5