- 博客(92)
- 资源 (24)
- 收藏
- 关注
转载 上个网也要签协议? 没错,这就是TCP
你是一台电脑,你的名字叫 A经过《突然没有网络,怎么重新设计,离线等》这篇文章中的一番折腾,只要你知道另一位伙伴 B 的 IP 地址,且你们之间的网络是通的,无论多远,你都可以将一个数据包发送给你的伙伴 B这就是物理层、数据链路层、网络层这三层所做的事情。站在第四层的你,就可以不要脸地利用下三层所做的铺垫,随心所欲地发送数据,而不必担心找不到对方了。虽然你此时还什么都没干,但你还是给自己这一层起了个响亮的名字,叫做传输层。你本以为自己所在的第四层万事大吉,啥事没有,但很快问题
2022-01-19 10:40:04 287 1
转载 Linux中的软链接、硬链接:都用在哪些场合?
最近,看到很多文章都在介绍 Linux 中的文件系统,其中就包括:inode 节点、软链接、硬链接等重要的概念。于是就有小伙伴私信问我:这些概念我都懂,但是我能利用他们来完成什么工作呢?或者说,在哪些情况下,软链接和硬链接能够提供提供更好的解决方案呢?这篇文章我们就来简单梳理一下,软链接和硬链接的几个使用场景。什么是索引节点 什么是硬链接 什么是软链接软链接应用之:灵活切换不同版本的目标程序 软链接应用之:动态库版本管理 软链接应用之:快捷方式硬链接应用之:从不同角度对文件进行分类
2021-07-19 12:56:36 877
转载 最多能创建多少个TCP连接?
我是一个 Linux 服务器上的进程,名叫小进。老是有人说我最多只能创建 65535 个 TCP 连接。我不信这个邪,今天我要亲自去实践一下。我走到操作系统老大的跟前,说:"老操,我要建立一个 TCP 连接!"老操不慌不忙,拿出一个表格递给我,"小进,先填表吧"我一看这个表,这不就是经典的socket 四元组嘛。我只有一块网卡,其 IP 地址是123.126.45.68,我想要与110.242.68.3的 80 端口建立一个 TCP 连接,我将这些信息填写在了表中。...
2021-07-19 10:31:49 354
转载 Active Object Pattern(主动对象模式理解)
之所以叫主动对象, 区别于被动对象, 只能被动被别人调用的对象, 而主动对象内部有线程可以自行调用自己的方法.Active Object首先使用了Proxy模式, 这个和RPC一样, 用户可以象访问local function一样使用然后Active Object关键的一步是使用command模式分离invacation和execution, proxy并没有直接运行调用逻辑, 而是封装成command发送给invoker queueActive Object 设计模式的本质是解耦合方法的调用
2021-07-19 10:19:52 681
转载 图解函数调用过程
函数调用是编程语言都有的概念,也许你听说过函数调用栈,但是大家都知道函数调用是如何完成的吗?我们为什么要了解这个过程: 对于程序运行机制中的数据结构和实现的了解,对自己开发程序有着启发作用 碰到一些疑难杂症的时候,比如函数栈溢出了或者函数栈破坏了,如何从蛛丝马迹中寻找问题的原因。 了解栈溢出可能带来的危害,黑客也许会利用栈溢出的漏洞进行攻击。 这篇博文我们一起来对函数调用的过程进行探究。程序样例下面是这篇博文要用到的一个样例程序:程序在main中调用了FunAdd函数。
2021-06-02 14:59:45 3216
转载 GCC编译过程与动态链接库和静态链接库
1. 库的介绍库是写好的现有的,成熟的,可以复用的代码。现实中每个程序都要依赖很多基础的底层库,不可能每个人的代码都从零开始,因此库的存在意义非同寻常。本质上来说库是一种可执行代码的二进制形式,可以被操作系统载入内存执行。库有两种:静态库(.a、.lib)和动态库(.so、.dll)。 windows上对应的是.lib .dll linux上对应的是.a .so在这里先介绍下Linux下的gcc编译的几个选项g++ -c hellospeak.cpp会将hellospeak.cpp
2020-11-19 08:51:53 931
原创 正确解读free -m
如下显示free是显示的当前内存的使用,-m的意思是M字节来显示内容.我们来一起看看.$ free -mtotal used free shared buffers cachedMem: 1002 769 232 0 62 421-/+ buffers/cache: 286 715Swap: 1153 0 1153第一部分Mem行:total 内存总数: 1002Mused 已经使用的内存数: 769Mfree 空闲的内存数: 232Mshared 当前已经废弃不用,总是0buffer
2020-11-14 20:34:29 26328 3
转载 对不起,学会这些 Linux 知识后,我有点飘
Linux 简介UNIX 是一个交互式系统,用于同时处理多进程和多用户同时在线。为什么要说 UNIX,那是因为 Linux 是由 UNIX 发展而来的,UNIX 是由程序员设计,它的主要服务对象也是程序员。Linux 继承了 UNIX 的设计目标。从智能手机到汽车,超级计算机和家用电器,从家用台式机到企业服务器,Linux 操作系统无处不在。大多数程序员都喜欢让系统尽量简单,优雅并具有一致性。举个例子,从最底层的角度来讲,一个文件应该只是一个字节集合。为了实现顺序存取、随机存取、按键存取、远程存取只
2020-10-22 14:04:49 217
转载 linux shell之pushd、popd和dirs的使用讲解
1问题我们有时候需要保存多个路径,上下键切换不方便,用cd-只能到上个目录,我们可以用dirs和pushd和popd2dirs、pushd、popddirs: 这个命令显示栈里面所有的路径,一定会包含当前路径,常用参数如下 dirs -v 显示栈里面的所有路径和下标,通过下标,我们可以用pushd +下标到这个目录,然后popd+下标把这个路径在栈里面弹出来, dirs -c 清除栈里所有路径,但是当前路径不会删除 pushd:我们可以添加目录到栈(dirs)里面,比如添加...
2020-10-13 17:03:30 753
转载 看完这篇还搞不懂HTTPS?
作为一个有追求的程序员,了解行业发展趋势和扩充自己的计算机知识储备都是很有必要的,特别是一些计算机基础方面的内容,就比如本篇文章要讲的计算机网络方面的知识。本文将为大家详细梳理一下 HTTPS 的实现原理。近年来,随着用户和互联网企业安全意识的提高和 HTTPS 成本的下降,HTTPS 已经越来越普及。很多互联网巨头也在力推 HTTPS,比如:谷歌的 Chrome 浏览器在访问 HTTP 网站时会在地址栏显示不安全的提醒。微信要求所有的小程序必须使用 HTTPS 传输协议。苹果也要求所有
2020-10-13 08:39:39 381 1
转载 TCP/IP wireshark分析基础知识
先亮出这篇文章的思维导图TCP 作为传输层的协议,是一个软件工程师素养的体现,也是面试中经常被问到的知识点。在此,我将 TCP 核心的一些问题梳理了一下,希望能帮到各位。001. 能不能说一说 TCP 和 UDP 的区别?首先概括一下基本的区别:TCP是一个面向连接的、可靠的、基于字节流的传输层协议。而UDP是一个面向无连接的传输层协议。(就这么简单,其它TCP的特性也就没有了)。具体来分析,和UDP相比,TCP有三大核心特性: 面向连接。所谓的连接,指的是客户端和服...
2020-10-13 08:36:04 1103
转载 数字签名是什么—讲解数字签名最通俗易懂的文章
数字签名是什么?作者:David Youd翻译:阮一峰原文网址:http://www.youdzone.com/signature.html1.鲍勃有两把钥匙,一把是公钥,另一把是私钥。2.鲍勃把公钥送给他的朋友们----帕蒂、道格、苏珊----每人一把。3.苏珊要给鲍勃写一封保密的信。她写完后用鲍勃的公钥加密,就可以达到保密的效果。4.鲍勃收信后,用私钥解密,就看到了信件内容。这里要强调的是,只要鲍勃的私钥不泄露,这封信就是安全的,即使落在别人手
2020-08-26 11:55:28 722
原创 常用gdb命令
常用gdb命令gcc -g main.c //在目标文件加入源代码的信息gdb a.out (gdb) start //开始调试(gdb) n //一条一条执行(gdb) step/s ...
2020-04-12 13:12:09 268
原创 常用Vim命令总结
Ctrl+f 屏幕向下移动一页 相当于 page downCtrl+b 屏幕向上移动一页 相当于page up0或者功能键home 移动到这一行的最前面的字符处$或者End 移动到这一行的最后面的字符处G 移动到文档的最后一行gg 移动到文档的第一行n+Enter n为数字,光标向下移动n行--------------------------------...
2020-04-12 13:08:04 187
原创 eclipse编辑、查看C++代码,并实现跳转
用eclipse去编辑、查看C++代码,代码可跳转,不需要编译,不需要Money安装包:jdk-13.0.2_windows-x64_bin.exeeclipse-cpp-2019-06-R-win32-x86_64.zip安装jdk,默认安装,一路next。 解压eclipse压缩包,免安装,在执行eclipse.exe之前,编辑eclipse.ini,加上下面这几段:-vm...
2020-03-18 12:44:08 2811
转载 通俗易懂----C++前置声明
大型开发都会遇到的问题随着软件规模的扩大,包含在一个工程中的模块的数量在不断增长,模块之间的依赖关系也日益复杂。这里只举一个相对简单的例子:一个包含2个类,5个文件的工程。ImportantClass.h头文件中声明了构造函数,doWork成员函数和数据成员buffer。ImportantClass.cppcpp文件中为构造函数和doWork提供了最简单的实现。...
2020-03-04 12:57:50 435
转载 读C++11新特性总结 大部分为转载,小部分为原创代码
来自面向对象思考的个人blog:https://blog.csdn.net/craftsman1970/article/details/797179441:longlong数据类型long long是在C++11中重新定义的,标准规定它最小是64bit在这之前为了提供超过32bit的整数,各个开发环境(编译器)分别定义了各自的64bit整数类型。结果当然就是影响了代码地兼容性。现在好了...
2020-02-20 13:54:10 674
原创 Rust使用感受
一、关于内存管理1、rust加入了生命周期和所有权的特性,实现内存自动回收,避免内存泄漏和野指针的问题。例如:,局部变量离开作用域后Rust会连同变量绑定的内存,不管是否为常量字符串,连同所有者变量一起被销毁释放。所以上面的例子,a销毁后再次访问a就会提示无法找到变量a的错误。这些所有的一切都是在编译过程中完成的。2、Rust没有null,取而代之的是None和Option<...
2019-12-09 10:46:25 2226 1
原创 比C++更加优势的Rust异步处理
Asynchronous frameworkC++:class Server { void on_request(req) { redis.write(req, redis_done); maria.write(req, maria_done); } void redis_done() { redis_done = true...
2019-11-27 17:55:32 460
原创 常用的Linux命令和技巧 ,正向反向端口转发(工作中总结)
1 端口转发ssh -L{PC端口号}:localhost:{数据库端端口号} root@{服务器IP地址}工作中遇到如下需求,服务器1 服务器2 windows开发机服务器1和服务器2互相之间不能直接访问,但是windows可以访问服务器1和服务器2如果我们需要从服务器1访问服务器2,我们需要建立端口转发,将windows作为中介,数据流大致是这样的:服务器1=>...
2019-11-27 17:47:48 1019
转载 关联、组合、聚合、依赖关系比较
设计模式或者UML中比较不太容易区分的类之间的关系1. 种类: Generalization(泛化),Dependency(依赖关系)、Association(关联关系)、Aggregation(聚合关系)、Composition(合成关系)。2.其中Aggregation(聚合关系)、Composition(合成关系)属于Association(关联关系),是特殊的Associati...
2019-11-25 10:00:27 279
转载 C++智能指针循环引用问题分析
C++11中引入了三种智能指针,分别是shared_ptr、weak_ptr和unique_ptr智能指针的作用智能指针可以帮助我们管理动态分配的堆内存,减少内存泄漏的可能性手动管理堆内存有引起内存泄漏的可能,比如这段代码try { int* p = new int; // Do something delete p;} catch(...) { //...
2019-11-25 09:55:32 286
转载 Tmux 使用教程
一、Tmux 是什么?1.1 会话与进程命令行的典型使用方式是,打开一个终端窗口(terminal window,以下简称"窗口"),在里面输入命令。用户与计算机的这种临时的交互,称为一次"会话"(session)。会话的一个重要特点是,窗口与其中启动的进程是连在一起的。打开窗口,会话开始;关闭窗口,会话结束,会话内部的进程也会随之终止,不管有没有运行完。一个典型的例子就是...
2019-11-06 15:00:37 4879 1
转载 使用 JAX-RS 简化 REST 应用开发
https://www.ibm.com/developerworks/cn/java/j-lo-jaxrs/
2019-10-15 14:23:26 139
转载 怎样用通俗的语言解释REST
以下内容取自知乎:REST -- REpresentational State Transfer首先,之所以晦涩是因为前面主语被去掉了,全称是 Resource Representational State Transfer:通俗来讲就是:资源在网络中以某种表现形式进行状态转移。分解开来:Resource:资源,即数据(前面说过网络的核心)。比如 newsfeed,friends等;...
2019-10-15 13:55:20 255
原创 提升逼格的github 缩略语
PR: Pull Request. 拉取请求,给其他项目提交代码LGTM: Looks Good To Me. 朕知道了 代码已经过 review,可以合并SGTM: Sounds Good To Me. 和上面那句意思差不多,也是已经通过了 review 的意思WIP: Work In Progress. 传说中提 PR 的最佳实践是,如果你有个改动很大的 PR,可以在写了一部分的情...
2019-08-16 10:40:35 640
转载 正则表达式30分钟入门教程
最通俗易懂的介绍对于想要速成的人来说,看这个链接,足够了https://github.com/ziishaned/learn-regex/blob/master/translations/README-cn.md----------------------------------------------------------------------------------------...
2019-06-19 09:54:36 711
转载 Redis数据库学习笔记
原作者来自https://www.jb51.net/article/56448.htmredis作者镇楼安装Redis解压安装包直接make,安装简单make成功后会在src文件夹下产生一些二进制可执行文件,包括redis-server、redis-cli等等:$ find . -type f -executable./redis-benchmark //用于进行redis...
2019-06-03 15:48:12 152
转载 一篇短文搞懂 什么是私钥和公钥
首先公钥和私钥是俗称的不对称加密方式,也就是非对称加密算法,是对以前的对称加密(使用用户名与密码)方式的提高。当使用非对称加密算法时,会生成两把配对的密钥,其中一把由私人保管,必须非常小心保存,最好加上密码,无需传输,所以称为私钥,私钥主要是用来解密/签章的。另一把对外公布,是给大家用的,本身就无需保密,称为公钥,公钥主要是用来加密/验章用的。当你用了其中一把钥匙加密信息时...
2019-05-30 13:09:13 28591 7
转载 Git的基本概念之Git 工作区、暂存区和版本库
基本概念我们先来理解下Git 工作区、暂存区和版本库概念工作区:就是你在电脑里能看到的目录。 暂存区:英文叫stage, 或index。一般存放在 ".git目录下" 下的index文件(.git/index)中,所以我们把暂存区有时也叫作索引(index)。 版本库:工作区有一个隐藏目录.git,这个不算工作区,而是Git的版本库。下面这个图展示了工作区、版本库中的暂存区和版本库之...
2019-05-29 10:37:44 280
原创 设计模式总结 C++
设计模式的几大原则: 设计原则名称 设计原则描述 重要性 单一职责原则 - 尽量避免相同的职责分散在不同的类当中 - 避免一个类承担过多不同类型的职责 ★★★★☆ 开闭原则 对扩展开放,对修改封闭。对于新增需求,尽量少修改已有代码...
2019-05-29 10:05:26 625
转载 Python @函数装饰器及用法(超级详细)
使用 @ 符号引用已有的函数(比如 @staticmethod、@classmethod)后,可用于修饰其他函数,装饰被修饰的函数。那么我们是否可以开发自定义的函数装饰器呢?答案是肯定的。当程序使用“@函数”(比如函数 A)装饰另一个函数(比如函数 B)时,实际上完成如下两步:将被修饰的函数(函数 B)作为参数传给 @ 符号引用的函数(函数 A)。 将函数 B 替换(装饰)成第 1 步的返...
2019-05-17 17:30:23 1545 1
转载 一篇面向初學者的簡短而又不失趣味(但願)的 Rust futures 入門指南
第一部分引言如果你喜歡 Rust,你可能會注意到整個 Rust 社區正在流行使用future。很多知名的 crate 開始徹底擁抱future(譬如說Hyper),我們也得學會用才行。如果你覺得自己是小白程序員,可能會覺得很難理解future的原理。當然原作者Crichton 的教程是很好的教材,雖然講得很通透,但我覺得這個教材有點難理解,不適合上手。我想我肯定不是...
2019-03-22 10:24:10 1878
转载 学习 Rust Futures - Executor and Task
在最开始学习 Rust futures 的时候,executor 和 task 是两个让我比较困惑的概念,这两个东西到底是啥,它们到底是如何使用的,我当时完全不清楚。等后来做完一些项目,才慢慢理解了。所以觉得有必要好好的记录一下。介绍Executor 可以认为是一个用来执行 future 的地方,我们可以在当前线程里面执行 future,也可以将 future 扔到一个 thread po...
2019-03-07 15:12:47 1721
转载 学习 Rust Futures - Future 和 Stream
为什么要用 Futures很多语言都提供了 promises,futures 的支持。他们能让开发者在面对并发,异步等问题的时候,能直接写出更加简单优雅的同步逻辑代码,而不用在处理复杂的 callback 嵌套以及充斥在各地的被 callback 拆散的代码逻辑。在 Rust 里面,应该很多人用 mio 编写过网络程序。虽然 mio 是一个非常棒的库,并且 TiKV 也使用 mio 处理网...
2019-03-07 13:12:10 3338
转载 git rebase 和 git merge的区别(简单对比git pull和git pull --rebase的使用)
使用下面的关系区别这两个操作:git pull = git fetch + git mergegit pull --rebase = git fetch + git rebase现在来看看git merge和git rebase的区别。假设有3次提交A,B,C。在远程分支origin的基础上创建一个名为"mywork"的分支并提交了,同时有其他人在"origin"上做了一些修改...
2019-02-21 09:46:53 7964 5
原创 Merge Request 时,冲突的解决步骤
git fetch 远程库git rebase upstream/master解决冲突git rebase --continuegit push -f
2019-02-20 09:52:25 21770
原创 git 撤销已经 commit 但是没有push 的命令
git loggit reset commit_id如何切换远程分支git checkout -b 本地 origin/远程
2019-02-20 09:44:52 1042
原创 gitlab下fork后如何同步源库的更新内容
git remote -v查看远程状态给 fork 添加源库的clone地址git remote add upstream 源库的clone地址git fetch upstreamgit merge upstream/mastergit push origin master
2019-02-20 09:42:33 1637
点歌系统——毕业论文
2012-12-24
大学生攻克linux系统教程
2010-11-30
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人