HNU_bj_chang
码龄7年
求更新 关注
提问 私信
  • 博客:30,082
    动态:1
    30,083
    总访问量
  • 42
    原创
  • 2
    粉丝
  • 16
    关注
IP属地以运营商信息为准,境内显示到省(区、市),境外显示到国家(地区)
IP 属地:上海市
加入CSDN时间: 2018-10-26
博客简介:

weixin_43527115的博客

查看详细资料
个人成就
  • 获得7次点赞
  • 内容获得6次评论
  • 获得45次收藏
  • 博客总排名2,212,267名
创作历程
  • 38篇
    2020年
  • 7篇
    2019年
成就勋章
TA的专栏
  • 人工智能
    1篇

TA关注的专栏 0

TA关注的收藏夹 0

TA关注的社区 0

TA参与的活动 0

兴趣领域 设置
  • 人工智能
    机器学习深度学习神经网络图像处理
创作活动更多

新星杯·14天创作挑战营·第13期

这是一个以写作博客为目的的创作活动,旨在鼓励大学生博主们挖掘自己的创作潜能,展现自己的写作才华。如果你是一位热爱写作的、想要展现自己创作才华的小伙伴,那么,快来参加吧!我们一起发掘写作的魅力,书写出属于我们的故事。我们诚挚邀请你们参加为期14天的创作挑战赛!注: 1、参赛者可以进入活动群进行交流、互相鼓励与支持(开卷),虚竹哥会分享创作心得和涨粉心得,答疑及活动群请见:https://bbs.csdn.net/topics/619781944 【进活动群,得奖概率会更大,因为有辅导】 2、文章质量分查询:https://www.csdn.net/qc

88人参与 去参加
  • 最近
  • 文章
  • 专栏
  • 代码仓
  • 资源
  • 收藏
  • 关注/订阅/互动
更多
  • 最近

  • 文章

  • 专栏

  • 代码仓

  • 资源

  • 收藏

  • 关注/订阅/互动

  • 社区

  • 帖子

  • 问答

  • 课程

  • 视频

搜索 取消

HTTP和HTTPS泛谈

目录前言HTTP和HTTPS什么是无状态协议,HTTP 是无状态协议吗,怎么解决Cookie简述 HTTP1.0/1.1/2.0 的区别地址栏输入 URL 发生了什么HTTPS 的工作原理前言由于对客户端的开发非常感兴趣,所以不仅准备找后端的工作岗位也准备找客户端的岗位,客户端这边看很多面经上对 http 和https非常重视,今天特意总结一下。之所以叫泛谈,因为是写一个大概的http和https的请求过程,大概的区别,并不详细介绍。我在博客上看到一个大佬的总结非常之详细,思路非常之清晰,后面借助这位大
原创
博文更新于 2020.07.25 ·
360 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

后台开发核心技术(14):进程间通信

通信方式前言管道消息队列共享内存信号量ipcs命令前言进程间通信就是在不同进程之间传播或交换信息,那么不同进程之间存在着什么双方都可以访问的介质呢?首先,进程间通信至少可以通过传送、打开文件来实现,不同的进程通过一个或者多个文件来传递信息,事实上,在很多应用系统都是用了这种方法。UNIX系统中实现进程间通信的方法有很多,而且不幸的是,极少的方法能在所有的UNIX系统中进行移植(唯一一种是半双工的管道,这也是最原始的一种通信方式)。而Linux作为一种新兴的操作系统,几乎支持所有的UNIX下常用的进程间通
原创
博文更新于 2020.07.11 ·
416 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

muduo库总结(二)理论分析

目录好的网络服务器设计Reactor模型epollselect和poll的缺点epoll原理以及优势LT模式、ET模式好的网络服务器设计在这个多核时代,服务端网络编程如何选择线程模型呢? 赞同libev作者的观点:one loop per thread is usually a good model 这样多线程服务端编程的问题就转换为如何设计一个高效且易于使用的event loop,然后每个线程run一个event loop就行了(当然线程间的同步、互斥少不了,还有其它的耗时事件需要起另外的线程做)。
原创
博文更新于 2020.07.11 ·
550 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

muduo库总结(一)源码粗读

前言我相信用linux进行后端开发的C++程序员应该对muduo库都比较熟悉,muduo库利用了epoll+线程池对网络IO模块进行了封装,实现了高并发、高性能的网络库,通过简单的几个类能快速的建立起网络模块,非常的方便。今天对muduo库进行一个简单的源码分析。简介muduo 是一个基于 Reactor 模式的现代 C++ 网络库,它采用非阻塞 IO 模型,基于事件驱动和回调,原生支持多核多线程,适合编写 Linux 服务端多线程网络应用程序。源码我们从muduo库的一个使用案例中出发,一步一步
原创
博文更新于 2020.07.11 ·
551 阅读 ·
1 点赞 ·
0 评论 ·
4 收藏

后台开发核心技术(13):select、poll、epoll

前面文章中说了一些关于IO多路复用的知识,今天专门总结一下select、poll、epoll的用法和区别;IO复用有时也称为事件驱动,基本原理就是:有一个函数会不断轮询所负责的socket,当某个socket有数据到达了,就通知用户进程。所以称之为事件驱动!这里的函数就是用select、poll、epoll来实现轮询的功能。selectselect在socket编程中还是相当重要的,可是很多初学者并不爱用select写程序,习惯直接用connect、accept、recv或recvfrom这样的阻塞
原创
博文更新于 2020.07.04 ·
199 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

后台开发工具——CMake使用总结

CMake简介使用简单方便,可以跨平台,构建项目编译环境。尤其比直接写Makefile简单(在构建大型工程编译时,需要写大量的文件依赖关系),可以通过简单的CMake生成负责的Makefile文件。CMake安装ubuntu上直接执行 sudo apt install cmake 安装完成,可以通过cmake -version查看其版本:CMake使用介绍cmake命令会执行目录下的CMakeLists.txt配置文件里面的配置项,一个基本的CMakeLists.txt的配置文件内容如下:cm
原创
博文更新于 2020.07.04 ·
362 阅读 ·
1 点赞 ·
0 评论 ·
1 收藏

后台开发核心技术(12):进程

有关线程与进程的知识与操作系统是密不可分的,特别是其实现,类似线程的调度策略,其实是操作系统去实现这部分内容,为了模块化的复习,就单独抛开(有些部分还是需要涉及)操作系统去介绍关于线程、进程的内容,后面再专门去总结一下操作系统的知识。程序与进程linux的进程结构一般由三部分构成:代码段、数据段、堆栈段。堆栈段还包括了进程控制块(PCB),PCB位于进程核心堆栈的底部,不需要额外分配空间。程序转化为进程的步骤:1、内核将程序读入内存,为程序分配内存空间;2、内核为该进程分配PID和其他所需资源;
原创
博文更新于 2020.07.02 ·
215 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

后台开发核心技术(11):多线程

背景介绍进程:以前,进程是最小的执行单位。进程是包含程序指令和相关资源的集合,每个进程和其他进程一起参与调度,竞争CPU、内存等资源。每次进程的切换,都存在着进程资源的保存和恢复动作,这称为上下文切换。发现问题:比如一个简单的GUI程序,为了有更好的交互性,通常一个任务执行界面交互,一个任务进行后台计算。每个任务都由一个进程来实现,那么相当的低效!因为每个进程的系统资源都是独占的,比如内存空间。每一次切换,这些独立资源都需要切换,所以,演化出了——利用分配给同一个进程的资源,尽量实现多个任务的方法,这就
原创
博文更新于 2020.07.01 ·
235 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

后台开发核心技术(10):网络IO模型

前言IO有很多种,磁盘IO、外设IO、网络IO等,都有着同步和异步两种操作,今天主要说一下网络IO模型。看到有关网络IO、同步异步的很多博客,各有不同的理解,今天我说一下自己的理解,如有不对,请大佬们多多指点!首先看一下网络IO种的四个概念:阻塞、非阻塞、同步、异步。我认为阻塞与同步的概念不是一个概念,不意味着非阻塞就是同步,阻塞就是异步。整个网络IO发生过程中会经历两个阶段,数据准备和数据拷贝,弄清楚其中的过程,理解TCP是如何将数据送来的就可能有很大帮助。数据准备:TCP将数据(拿TCP作为例
原创
博文更新于 2020.06.30 ·
174 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

后台开发核心技术(09):运输层总结

与上篇文章一样,还是重点关注因特网的运输层协议,即TCP、UDP运输层协议。运输层协议运输层协议是在端系统中实现而不是在路由器中实现,是直接服务于应用层,为应用层提供可靠传输的、面向连接的TCP或者不可靠传输的UDP。在介绍运输层协议之前,先简单说一下IP协议(网络层协议),为主机之间提供了一种逻辑通信,IP服务模型是尽力而为交付服务,其实就是不可靠服务。一、运输层服务的基本职责UDP和TCP最基本的职责之一是:将两个端系统间的IP的交付服务扩展为运行在端系统上的两个进程之间的交付服务,就是为网络
原创
博文更新于 2020.06.29 ·
146 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

后台开发核心技术(08):套接字编程

通过上篇文章已经看到很多应用层的应用程序,典型的网络应用是由一对程序(客户程序和服务器程序)组成的,它们位于两个不同的端系统中,当运行这两个程序时,创建了一个客户进程和服务器进程,同时它们通过从套接字读出和写入数据在彼此之间进行通信,开发者创建一个网络应用时,其主要任务就是编写客户程序和服务器程序的代码。我们将使用下列简单的客户-服务器应用程序来演示对于UDP和TCP的套接字编程:1)客户从键盘读取一行字符,并将该字符向服务器发送。2)服务器接收该数据并将这些数据转化为大写。3)服务器将修改过的数据
原创
博文更新于 2020.06.28 ·
513 阅读 ·
0 点赞 ·
0 评论 ·
3 收藏

后台开发核心技术(07):计算机网络之应用层总结

说计算机网络,首先要说的肯定是网络协议,要通过网络传达数据信息,首先要做的是选择合适的网络协议,典型的网络应用程序有:Web、电子邮件、DNS、对等文件分发、视频流等。前言进程通信: 进程通信分为在同一台主机上的进程间通信和不同主机(端系统)的进程间通信,同一台主机上的进程通信规则由端系统上的操作系统确定,而本次主要总结的是不同端系统上的进程间通信——在不同的端系统上的进程进行通信,通过跨越计算机网络交换报文而相互通信。套接字:又叫应用程序编程接口(API)。进程通过一个称为套接字的软件接口向网络发送
原创
博文更新于 2020.06.28 ·
569 阅读 ·
0 点赞 ·
0 评论 ·
1 收藏

后台开发核心技术(06):调试工具

strace1、前言:为了为创建文件、进程、复制文件等这些操作提供系统服务,应用程序必须和操作系统之间进行交互。但是,应用程序是不能直接访问Linux内核的。它既不能访问内核所占内存空间,也不能调用内核函数。不过应用程序可以跳转到system_call的内核位置,内核会检查系统调用号,这个号码会告诉内核进程正在请求哪种服务。然后,它查看系统调用表,找到所调用的内核函数的入口地址,调用该函数,然后返回到进程。所有操作系统在其内核都有一些内建的函数,这些函数可以用来完成一些系统级别的功能,一般称Linux系
原创
博文更新于 2020.06.24 ·
195 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

后台开发核心技术(05):Linux程序内存空间布局

一个典型的Linux的运行中的C程序的内存空间布局:一个典型的Linux下的C程序内存空间由如下这几部分构成:(1)代码段:代码段通常是指用来存放程序执行代码的一块内存区域。这部分区域的大小在程序运行之前都已经确定好了,并且内存区域通常属于只读。(2)初始化数据段:通常用来存放程序中已经初始化的全局变量的一块内存区域,例如,位于所有函数之外的全局变量:int val = 100; 数据段属于静态内存分配。(3)未初始化数据段:通常是指用来存放程序中未初始化的全局变量的一块内存区域。(4)堆:堆是用
原创
博文更新于 2020.06.24 ·
161 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

Ubuntu下最新mysql8.0.20版本修改用户名和密码的问题

问题背景来源于:对刚下载的最新版 mysql 8.0.20 进行初始化用户的用户名和密码;刚下载的mysql没有用户名和密码,可以通过查看mysql下的 debian.cnf 文件找到自动生成的临时用户名和密码,效果如图:可以看到在 /etc/mysql下有这个文件,用vim打开即可(如果不是root用户就用sudo,因为这个文件需要root权限打开):可以看到有用户名和密码,拿着这个用户名和密码去登录:命令为:mysql -u debian-sys-maint -p 然后回车后输入密码(这里偷懒
原创
博文更新于 2020.06.16 ·
2490 阅读 ·
3 点赞 ·
4 评论 ·
14 收藏

错误经验

今天遇到一个错误半天没找到哪里有问题,误区是:库文件比较多,特别是用到了一些不是很熟悉的头文件,例如muduo库中的<muduo/base/Logging.h>,根据报错信息:一度怀疑自己是不是下载的开源库有缺失,以为是头文件muduo库里的问题,然而!太天真,就是自己写的头文件类后面落了一个 ; 导致muduo库的日志类对象识别不了!总结: 不要怀疑开源库的错误,肯定是别的地方的错误引起的开源库中的错误,错误类型可根据提示去自己的库中找类似的点。...
原创
博文更新于 2020.06.15 ·
275 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

后台开发核心技术04编译

编译过程编译与链接的过程可以分解为4个步骤,分别是预处理、编译、汇编、链接,具体如下图所示:1、预处理g++ -E hello.cpp -o hello.i // 预处理指令预处理主要是处理那些源代码文件只能够以 # 开始的预编译指令。比如 #include、#define等;2、编译g++ -S hello.i -o hello.s // 编译指令编译过程就是把预处理完的文件进行一系列的词法分析、语法分析、语义分析以及优化后产生相应的汇编代码文件,这部分往往是最核心和最复杂的部分;
原创
博文更新于 2020.06.14 ·
256 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

应用muduo库编写服务端程序的简单示例

1 、 工作环境:Linux系统中;2、 使用muduo库进行编写程序需要链接到库文件libmuduo_base.so、libmuduo_net.so、libpthread.so,一般在系统路径 /usr/lib 或者 /usr/local/lib 下,所以不需要添加头文件的搜索路径,因为这两个路径是处在环境变量中,是自动搜索的。代码:注释里面写的很清楚,工作环境是用vscode连接到远程的linux进行开发的,上面也说了一下,直接包含头文件就可以了,不用添加搜索路径,然后对上面的源文件进行
原创
博文更新于 2020.06.13 ·
475 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

O(n*logn)排序算法的总结

对经典排序方法性能进行总结:排序方法时间复杂度空间复杂度稳定性冒泡排序O( n^2 )O(1)稳定插入排序O( n^2 )O(1)稳定选择排序O( n^2 )O(1)不稳定归并排序O( n*logn )O(n)稳定堆排序O( n*logn )O(1)不稳定快速排序O( n*logn )O(logn)不稳定桶系列排序O( n )O(n)稳定今天重点讨论这三个时间复杂度为O(n*logn)的算法,桶排序
原创
博文更新于 2020.05.23 ·
922 阅读 ·
0 点赞 ·
0 评论 ·
1 收藏
加载更多