后端
文章平均质量分 75
DrawnBreak
这个作者很懒,什么都没留下…
展开
-
每天一个java知识点——ThreadLocal
最近感觉成长陷入了阻塞,特此给自己制定1个”每天1个XX知识点“的查漏补缺计划。Q: ThreadLocal的常见使用场景?A:每个线程中需要维护1个不同的副本, 但这个副本可能是某一个时刻一起塞入每个线程的, 只不过之后该副本的变化 不再受其他线程的影响。常见场景有连接器管理模块connectorManager, 每个线程持有的connect变量是单独使用的,不会互相影响或者需要加锁。原因就是将其作为副本放入每个线程,当线程启动连接或者关闭时,不影响其他线程里的getConnect方法。Q:原创 2021-07-18 23:09:11 · 181 阅读 · 1 评论 -
APUE读书笔记——高级进程通信(管道)
假设我们要将一个文件的数据,通过more程序来显示但不希望建立临时文件, 即先复制整个文件,再用more来展示我们可以把文件的数据塞入一个管道, more程序(由子进程excel启动)读这些数据,并显示在屏幕上和直接more一个文件有啥区别???#include "apue.h"#include <sys/wait.h>#define DEF_PAGER "/bin/more"...原创 2018-02-24 21:45:35 · 285 阅读 · 0 评论 -
Unix高级编程《APUE》读书笔记——思维导图形式
终于看完unix高编了,试着利用XMind去记录看到的知识点,避免遗忘,算是自己的一个尝试吧。后面再补上对代码的思考和笔记。原创 2018-02-17 17:49:23 · 1144 阅读 · 2 评论 -
UNP读书笔记之 非阻塞connect
下文实现的程序内容是一个web客户端这个客户端向web一次性请求多个图片这些图片并非串行传输,而是同时建立多个连接,在进行传输。这里利用了非负责的connect, 每次connect并进行三次握手时,先直接返回, 然后一系列设置。在main的for循环中, 用select检测那个链接是否可写或可读, 可写时三次握手结束,需要发送“GET HTTP”请求。可读时,指需要读该文件。而且每次只读一次,...原创 2018-03-03 16:57:35 · 275 阅读 · 0 评论 -
APUE读书笔记——线程同步(条件变量,屏障)
什么是同步? 就是让线程之间按照一定的顺序去执行,例如线程A生产了一个物品,线程B才可以去执行消费。为什么不能直接用锁去做同步?例如设定锁X,锁Q线程B要消费一个物品,则对生产队列做检查(先对队列加锁保护),即对X加锁,若X已被锁,则阻塞。即 加锁Q 加锁X 消费 解锁Q 当线程A生产了一个物品时, 将锁X解锁, 线程B唤醒,开始消费。即 加锁Q 生产 解锁X 解锁Q但是这有...原创 2018-02-24 14:16:31 · 256 阅读 · 0 评论 -
4种常用网络命令(ping, tcpdump, netstat, lsof)
ping命令发送ICMP请请求,希望获得ICMP echo, 用ping检查连通的过程 ipconfig/all ,查看本地网络设置 ping 127.0.0.1 ,查看本地TCPIP是否设置正确 ping 本机IP, 查看本地的IP地址设置是否正确 ping 本网网关或本网IP地址,为了检查硬件设备, ping本地DNS ping远程IP地址tcpdump...原创 2018-03-10 20:59:26 · 991 阅读 · 0 评论 -
APUE读书笔记——线程互斥(互斥量、读写锁)
这里以文件的引用计数做例子。什么是引用计数? 即指向这个文件的链接数。 只有当引用计数为0时,才能删除该文件,否则每一次删除仅仅是i节点的引用计数减一。如果不引入锁, 那么当同时执行两次引用计数相减时,就会出现计数不准确的情况。一、简单的锁操作#include "apue.h"#include <pthread.h>#include <stdlib.h>str...原创 2018-02-23 22:11:05 · 407 阅读 · 0 评论 -
APUE学习笔记——线程创建和退出
一、线程的创建这个程序让主进程 启动一个线程, 主进程和线程都打印一次 PID(进程ID)和TID(线程ID)。#include "apue.h"#include <pthread.h>pthread_t ntid;void printids(const char *s){ pid_t pid; pthread_t tid; pid = getpid(); /...原创 2018-02-23 20:54:58 · 269 阅读 · 0 评论 -
TinyHttp学习(二): 代码分块解释以及相关问题
源码见:这里我们按照时间线性过程来描述整个代码过程,并在每一块提出一个问题,来解答为什么要这么选择。一、建立Listen监听我们启动服务器程序,进入main函数则我们先建立了服务器的监听,便于与即将来到的请求启动TCP连接。 建立监听的函数为startupint startup(u_short *port){ int httpd = 0; struct sockaddr_in name;...原创 2018-02-22 21:38:07 · 311 阅读 · 0 评论 -
TinyHttp学习(一): 基础知识学习和该项目的需求
TinyHttp是一个非常棒的学习项目, 短短500行便实现了一个轻量级的HTTP服务器,对于我们学习网络编程和HTTP非常有帮助。这里先提供一下学习该项目必备的基础知识,着重面向对HTTP和socket编程毫无概念的新手朋友们。一、HTTP协议基础 1.HTTP消息格式通常HTTP消息包括客户机向服务器的请求消息和服务器向客户机的响应消息。这两种类型的消息由一个起始行,一个或者多个头域,一...原创 2018-02-22 21:00:48 · 617 阅读 · 0 评论 -
UNP学习笔记——第一章简介
★UNP一书主要注重于 应用层 和 传输层之间的部分。★包裹函数:大写字母开头,即封装了出错判断和处理,节省了一些代码量★unp.h安装步骤:1.从网络上下载unpv13e.tar文件,这里用的是自己已经修改过的,可以在CentOS上运行,不需要再为一些编译错误去修改。 2.安装脚本,用于服务器如果挂了的话重装unp.h时方便点tar -zxvf unpv13e.tar.gzrm -...原创 2018-01-17 15:44:44 · 383 阅读 · 0 评论 -
UDP学习笔记——第二章传输层协议简介
★SCTP是流控制传输协议 概念 1.面向消息。 2、提供流,1个流上的消息丢失,不会阻塞后续的消息 3.多宿属性,单个SCTP端点可以支持多个IP地址,类似于链接到一个网络而不是一个主机。 SCTP关联的建立和终止 四路握手 1.客户发送INIT消息,告诉服务器 客户的各种信息,便于初始化 2.服务器发回 INIT_ACK消息,该消息中也包括服务器的各种信息 3.客户发送CO...原创 2018-01-18 14:00:08 · 222 阅读 · 0 评论 -
UNP读书笔记 第3章 套接字编程简介
IPv4套接字地址结构struct in_addr{ in_addr_t s_addr; //IP地址}struct sockaddr_in{ uint8_t sin_len; //套接字长度,有的版本没有 sa_family_t sin_family; //协议族 in_port_t sin_port; //端口 ...原创 2018-01-18 20:53:40 · 194 阅读 · 0 评论 -
UNP读书笔记 第五章 回射程序的各种改进
本章首先编写了1个服务器回射程序,1个客户发送程序。随后根据各类问题,进行相应的改进。这里记录一下 改进的过程。服务器程序很简单, 大概是以下几步: 创建套接字->绑定地址结构->监听 进入while循环, 做accpet等待连接建立->一旦连接建立成功, 返回一个connecfd套接字, 并fork一个子进程 父进程关闭connecfd套接字,继续进入accpet等待连接 ...原创 2018-01-21 12:16:20 · 194 阅读 · 0 评论 -
UNP读书笔记第16章 非阻塞IO
继续跟着steven大佬修改 回射程序接着第六章的程序那个程序的大致流程是 先读输入,读完输入再发给服务器,接着等服务器的输入,并输出到屏幕上, 总共四个步骤但是,假如我们一次性输入的数据非常多,大概有10000行,那么就会出现一种情况:当我们正在输入第5000行时, 第一个发出去的行,已经被服务器回射回来了。按理说,这个行应该马上输出但是,他却会卡在中断输入的IO那里(Fgets) ,等Fget...原创 2018-01-22 22:24:28 · 214 阅读 · 0 评论 -
UNP读书笔记 第六章 select和poll
先讲了五种IO模型阻塞式IO: readcv系统调用->阻塞->等待系统调用返回非阻塞式IO 系统调用->无数据->不阻塞,直接返回->继续调用直到返回成功这样很浪费CPUIO复用模型 调用select->阻塞->等某个数据准备好->再调用readcv系统调用信号驱动IO模型 调用Signal,等捕捉某个信号时,才调用re...原创 2018-01-22 00:24:31 · 257 阅读 · 0 评论