自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

夜空中最亮的星

但行好事,莫问前程。

  • 博客(280)
  • 收藏
  • 关注

转载 嵌入式Linux系统:基础知识_网络通信原理

2.1 互联网的本质就是一系列的网络协议一台硬设有了操作系统,然后装上软件你就可以正常使用了,然而你也只能自己使用像这样,每个人都拥有一台自己的机器,然而彼此孤立。如何能大家一起玩耍然而internet为何物?其实两台计算机之间通信与两个人打电话之间通信的原理是一样的(中国有很多地区,不同的地区...

2020-02-01 17:14:37 809

转载 Goroutine 并发调度模型深度解析之手撸一个高性能 goroutine 池

并发(并行),一直以来都是一个编程语言里的核心主题之一,也是被开发者关注最多的话题;Go 语言作为一个出道以来就自带『高并发』光环的富二代编程语言,它的并发(并行)编程肯定是值得开发者去探究的,而 Go 语言中的并发(并行)编程是经由goroutine 实现的,goroutine 是 golang 最重要的特性之一,具有使用成本低、消耗资源低、能效高等特点,官方宣称原生goroutin...

2020-01-28 12:58:56 910

转载 架构设计(5)-架构愿景分析

架构愿景实际是回答了哲学家经常思考的三个问题:我是谁? (问题是什么,现状)从哪里来? (原因:为什么出现问题)到哪去? (愿景和目标是什么)一、前言:架构设...

2020-01-24 13:55:23 1060

转载 多线程处理的几种模式—Proactor和Reactor

多线程处理的几种模式—Proactor和ReactorProactor和Reactor都是并发编程中的设计模式。他们都是用于派发/分离IO操作事件的。所谓的IO事件也就是诸如read/write的IO操作。"派发/分离"就是将单独的IO事件通知到上层模块。两个模式不同的地方在于,Proactor用于异步IO,而Reactor用于同步IO。Two patterns that involve e...

2020-01-22 02:25:41 272

原创 库与框架的本质区别

库与框架的本质区别:可以实现解耦和业务分离,模块化。&foo::memberFunc --->函数地址(函数指针)&foo ---> this指针...

2020-01-22 02:24:58 218

转载 两种IO模式:Proactor与Reactor模式

在高性能的I/O设计中,有两个比较著名的模式Reactor和Proactor模式,其中Reactor模式用于同步I/O,而Proactor运用于异步I/O操作。在比较这两个模式之前,我们首先的搞明白几个概念,什么是阻塞和非阻塞,什么是同步和异步同步和异步是针对应用程序和内核的交互而言的,同步指的是用户进程触发IO操作并等待或者轮询的去查看IO操作是否就绪,而异步是指用户进程触发IO操作以...

2020-01-22 02:24:21 194

转载 Debug 利器:pstack & strace

工作中难免会遇到各种各样的 bug,对于开发环境 or 测试环境的问题还好解决,可以使用 gdb 打断点或者在代码中埋点来定位异常;但是遇到线上的 bug 就很难受了,由于生产环境不能随意替换、中断程序,如果日志中找不到问题原因,解决问题就会很棘手这时候就需要请出这两位 debug 利器了 ———— pstack & strace什么是 pstackpstack 是 Linux 系...

2020-01-22 02:23:50 188

转载 Reactor模式,或者叫反应器模式

阅读更多 Reactor这个词译成汉语还真没有什么合适的,很多地方叫反应器模式,但更多好像就直接叫reactor模式了,其实我觉着叫应答者模式更好理解一些。通过了解,这个模式更像一个侍卫,一直在等待你的召唤,或者叫召唤兽。 并发系统常使用reactor模式,代替常用的多线程的处理方式,节省系统的资源,提高系统的吞吐量。 先用比较...

2020-01-22 02:22:59 114

转载 Rector模式和同步IO模拟Reactor模式,proactor模式和异步IO模拟proactor模式

Reactor模式本身就是一种同步IO模式Reactor模式的流程如下:1、应用程序注册socket的读写就绪事件,和事件处理器2、事件分类器等待读写就绪事件3、当事件分离器监听到读写就绪事件后。会调用注册的事件处理器。4、事件处理器首先会执行IO读写操作,然后将数据根据读取的内容进行进一步的处理使用同步IO来模拟Reactor模式的流程如下:1、主线程首先将socket的读就绪事件注册到epol...

2020-01-22 02:22:11 1557 2

转载 OO设计的5大原则

一.OO(面向对象)的设计基础面向对象(OO):就是基于对象概念,以对象为中心,以类和继承为构造机制,充分利用接口和多态提供灵活性,                    &nbs...

2020-01-22 02:21:38 1618

转载 从《王者荣耀》谈游戏的帧同步

农药自从上线以来,依靠着强大的产品力以及腾讯的运营能力,在游戏市场上表现可谓是风生水起,根据第三方的调研数据显示,《王者荣耀》渗透率达到22.3%,用户规模达到2.01亿人,每日的日活跃用户(DAU)均值为5412.8万人。 如此可观的数据,令人十分钦佩。当然了,作为技术人,更愿意从技术上了解去一些王者荣耀的实现原理和架构方式,从中找到新的知识领域,扩展自己的知识边界,丰富自己的专业技能。借助这...

2020-01-21 07:06:30 551 2

转载 前端面试知识点

Symbol 是 ES6 的新增属性,代表用给定名称作为唯一标识,这种类型的值可以这样创建,let id=symbol(“id”);Symbl 确保唯一,即使采用相同的名称,也会产生不同的值,有内置方法 Object.getOwnPropertySymbols(obj)可以获得所有的 symbol。也有一个方法 Reflect.ownKeys(obj)返回对象所有的键,包括 symbol。1.一个组件被复用多次的话,也就会创建多个实例。本质上,这些实例用的都是同一个构造函数。

2023-05-05 19:08:09 337

原创 MySQL灵魂十连

1、SQL语句执行流程MySQL大体上可分为Server层和存储引擎层 两部分。Server层:连接器:TCP握手后服务器来验证登陆用户身份,A用户创建连接后,管理员对A用户权限修改了也不会影响到已经创建的链接权限,必须重新登陆。查询缓存:查询后的结果存储位置,MySQL8.0版本以后已经取消,因为查询缓存失效太频繁,得不偿失。分析器:根据语法规则,判断你输入的这个SQL语句是否满足MySQL语法。优化器:多种执行策略可实现目标,系统自动选择最优进行执行。执行器:判断是否有权限,将最终任务

2021-08-18 17:20:17 1179

转载 zeromq源码分析笔记之准备

zeromq这个库主要用于进程通信,包括本地进程、网络通信,涉及到一些基础知识,主要包括管道通信,socket编程的内容,反应器模式(使用IO多路复用实现),无锁队列这几块比较重要的部分,下面的几个链接是这几块内容的学习笔记,有了这些知识,能比较好的理解这个开源库1、socket原理详解2、I/O多路复用之select3、I/O多路复用之poll4、I/O多路复用之epollzeromq的版本是4.0.5,使用的工具是Source Inside3...

2021-08-03 10:25:09 286

转载 zeromq源码分析笔记之架构

1、zmq概述ZeroMQ是一种基于消息队列的多线程网络库,其对套接字类型、连接处理、帧、甚至路由的底层细节进行抽象,提供跨越多种传输协议的套接字。引用云风的话来说:ZeroMQ 并不是一个对 socket 的封装,不能用它去实现已有的网络协议。它有自己的模式,不同于更底层的点对点通讯模式。它有比 tcp 协议更高一级的协议。(当然 ZeroMQ 不一定基于 TCP 协议,它也可以用于进程间和进程内通讯)它改变了通讯都基于一对一的连接这个假设。ZeroMQ 把通讯的需求看成四类。其中一类是一对一结对通讯,

2021-08-03 10:23:18 464

转载 zeromq源码分析笔记之线程间收发命令

在zeromq源码分析笔记之架构说到了zmq的整体架构,可以看到线程间通信包括两类,一类是用于收发命令,告知对象该调用什么方法去做什么事情,命令的结构由command_t结构体确定;另一类是socket_base_t实例与session的消息通信,消息的结构由msg_t确定。命令的发送与存储是通过mailbox_t实现的,消息的发送和存储是通过pipe_t实现的,这两个结构都会详细说到,今天先说一下线程间的收发命令。zeromq的线程可分为两类,一类是io线程,像reaper_t、io_thread.

2021-08-03 10:14:44 320

转载 zeromq源码分析笔记之无锁队列ypipe_t

在上一篇中说到了mailbox_t的底层实际上使用了管道ypipe_t来存储命令。而ypipe_t实质上是一个无锁队列,其底层使用了yqueue_t队列,ypipe_t是对yqueue_t的再包装,所以我们先来看看yqueue_t是怎么实现的。1、yqueue_tyqueue_t是一个高效的队列,高效体现在它的内存配置上,尽量少的申请内存,尽量重用将要释放的内存。其实,容器的设计都会涉及这点–高效的内存配置器,像sgistl容器的内存配置器,使用了内存池,预先分配一块较大内存,用不同大小的桶管理,.

2021-08-03 09:57:13 405

翻译 游戏服务器之网关实现

网关需要与客户端保证连接。这里网关使用Netty4来做为网络通信框架。它也是目前在Java游戏服务器开发中,长连接使用最多的框架。1,管理与客户端的连接客户端连接到网关之后,并且验证过之后,我们需要把连接的channel和用户绑定起来,这样方便使用用户id查询到它和客户端的连接,就可以给客户端返回消息了。因为是需要管理所有的客户端连接。所以会涉及到多线程的操作。在每个连接验证成功之后,会在当前连接的channel之中添加用户id和channel的映射到一个map集合中。简单点这个map可以是Concu

2021-07-26 14:36:10 1855 1

转载 nohup ./challenge.sh >out.log 2>&1 & 解析

在启动weblogic的时候我们经常看到如下的命令:nohup ./startWebLogic.sh >out.log 2>&1 &从09年开始用weblogic到现在已经过去3年多了 ,今天终于将该命令理解清楚了。其中 0、1、2分别代表如下含义:0 – stdin (standard input)1 – stdout (standard output)2 – stderr (standard error)nohup ./startWebLogic.sh >

2021-07-23 13:41:54 391

原创 工厂 模式

工厂模式简单工厂模式工厂方法模式抽象工厂模式简单工厂模式简介简单工厂模式(Simple Factory Pattern)属于类的创新型模式,又叫静态工厂方法模式(Static FactoryMethod Pattern),是通过专门定义一个类来负责创建其他类的实例,被创建的实例通常都具有共同的父类。将“类实例化的操作”与“使用对象的操作”分开,让使用者不用知道具体参数就可以实例化出所需要的“产品”类,从而避免了在客户端代码中显式指定,实现了解耦。即使用者可直接消费产品而不需要知

2021-07-17 10:51:24 115

原创 为什么说要搞定微服务架构,先搞定RPC框架?

今天开始聊一些微服务的实践,第一块,RPC框架的原理及实践,为什么说要搞定微服务架构,先搞定RPC框架呢?一、需求缘起服务化的一个好处就是,不限定服务的提供方使用什么技术选型,能够实现大公司跨团队的技术解耦,如下图:服务A是欧洲团队提供服务,欧洲团队的技术背景是Java,可以用Java实现服务;服务B是美洲团队提供服务,可以用C++实现服务;服务C是中国团队提供服务,可以用Go实现服务;服务的上游调用方,按照接口、协议即可完成对远端服务的调用。但实际上,99.9%的公司的团队规模有限,技术团

2021-06-07 14:32:54 158

原创 怎样理解 cosocket

笔者认为,cosocket 是 OpenResty 世界中技术、实用价值最高部分。让我们可以用非常低廉的成本,优雅的姿势,比传统 socket 编程效率高好几倍的方式进行网络编程。无论资源占用、执行效率、并发能力都非常出色。鲁迅有句名言“其实世界上本没有路,走的人多了便有了路”,其实对于 cosocket 的中文翻译貌似我也碰到了类似的问题。当我想给大家一个正面解释,爬过了官方 wiki 发现,原来作者本人(章亦春)也没有先给出 cosocket 定义。看来只能通过一些侧面信息,从而让这条路逐渐的清晰起

2021-06-01 13:53:31 406 2

原创 skynet 学习。。。

一、环境安装centos:yum install -y git gcc readline-devel autoconf二、获取代码以及编译git clone https://github.com/cloudwu/skynet.gitcd skynetcentos&&ubuntu: make linux三、回顾多核开发并发模型 :CSP 模型 与 actor 模型结论:多进程并发实体是进程,多线程并发实体是线程,go 并发实体是 goroutine(协程),

2021-04-10 00:42:39 211

原创 科目二 总结(方向盘,离合器,刹车)

离合控制咱们正确踩离合器的方法是*:用你的脚尖一脚踩到底,咱们往上面抬的时候,脚跟往上面抬一点,慢慢的松,当松到动力点的时候(也就是半联动的时候),脚跟着地,用你的脚尖来控制车速,往上面抬一点,往下面压一点 ,抬一点 ,压一点,像这样的话控制你的车速会控制的又慢又稳,还不会停车, 踩时间长了还不会脚痛。方向盘三六九点打方向盘的方法:往左边打的时候右手发力,下面的手(左手)在六点的位置松手,然后在上面接回原来的位置,这样持平一圈,右手在推半圈,打满方向,右手不要动,左手可以握在下面也可以握在上面,

2021-04-02 20:25:27 456 1

翻译 MySQL索引结构为什么是B+树

MySQL索引结构为什么是B+树索引是一种提高我们查询效率的数据结构,大家肯定很熟悉,在日常数据库优化工作中经常会接触到。 今天说一说索引的底层结构。【索引结构】MySQL 索引一般是哈希表或 B+ 树,常用的 InnoDB 引擎默认使用的是 B+ 树来作为索引的数据结构。为什么不用哈希表?什么是哈希表?哈希表(也叫散列表),是根据关键码值(Key value)而直接进行访问的数据结构。它通过把关键码值映射到表中一个位置来访问记录,以加快查找的速度。这个映射函数叫做散列函数,存放记

2021-02-24 15:54:36 284

翻译 Linux性能测试与调优的15条常用命令

一、CPU性能评估通过下面的命令能了解到CPU是否出现性能瓶颈,再结合top、ps等命令进一步检查,即可定位到那些进程导致CPU负载过大vmstat命令:查看CPU负载[oracle@oracle backup]$ vmstat 2 3 # 间隔2s,打印3次<br>procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu----- <br>r b swpd free

2021-02-24 13:01:35 185

转载 Linux环境下网络性能测试

网络性能测试的几项重要指标1、可用性测试网络性能的第一步是确定网络是否正常工作,最简单的方法就是使用ping命令,通过向远端的机器发送ICMP请求,并等待接收ICMP回应,来判断远端的机器是否连通,网络是否正常工作。2、响应时间ping命令的ICMP报文响应一次往返所花费时间就是响应时间,有很多因素会影响到响应时间,如网段的负荷,网络主机的负荷,广播风暴,工作不正常的网络设备等等。3、网络利用率网络利用率是指网络被使用的时间占总时间(即被使用的时间+空闲的时间)的比例。例如,Ether

2020-10-21 11:28:40 2322

转载 ffmpeg 音视频处理入门基础概念

ffmpeg概念Fmpeg的名称来自MPEG视频编码标准,前面的“FF”代表“Fast Forward”,FFmpeg是一套可以用来记录、转换数字音频、视频,并能将其转化为流的开源计算机程序。可以轻易地实现多种视频格式之间的相互转换组成.ffmpeg:是一个命令行工具,用来对视频文件转换格式,也支持对电视卡实时编码libavformat:用于各种音视频封装格式的生成和解析,包括获取解码所需信息以生成解码上下文结构和读取音视频帧等功能,包含demuxers和muxer库;libavcodec:用

2020-10-20 13:51:26 838 1

转载 音视频开发前言

1、前言实时音视频的开发学习有很多可以参考的开源项目。一个实时音视频应用共包括几个环节:采集、编码、前后处理、传输、解码、缓冲、渲染等很多环节。每一个细分环节,还有更细分的技术模块。比如,前后处理环节有美颜、滤镜、回声消除、噪声抑制等,采集有麦克风阵列等,编解码有VP8、VP9、H.264、H.265等。典型的实时音视频应用数据流转过程如下:下面这张图可能更具体一点:进行实时音视频开发的同行们的开源工程,这些工程分为几类:音视频编解码类、视频前后处理、服务端类等,希望能加速学习或研究过程。

2020-10-19 11:13:06 316

转载 实时音视频技术入门理解的一方面的总结

其实我一直有一个观点,就是:“基于平台的 API 做应用开发,并不是一个可以走得多远的方向,真正有价值的地方在于与具体的业务方向结合”。具体点说,比如:1)网络安全;2)音视频;3)智能硬件;4)深度学习;5)大数据;6)其他(比如:金融、通信等)。在具体的业务领域,你可以慢慢沉淀下来,用自己的努力和时间换来对领域知识的深入理解和积累,逐渐从一个开发小白走向最懂这个行业的专家。如果对实时音视频这个领域感兴趣,应该如何入门和提高 ?1、实时音视频开发包括哪些技术内容音视频开.

2020-10-19 11:02:58 521

转载 Shell调试技巧

首先, 调试要比编写代码困难得多, 因此, 如果你尽可能聪明的编写代码, 你就不会在调试的时候花费很多精力.Bash并不包含调试器, 甚至都没有包含任何用于调试目的的命令和结构. 脚本中的语法错误, 或者拼写错误只会产生模糊的错误信息,当你调试一些非功能性脚本的时候, 这些错误信息通常都不会提供有意义的帮助.例子 29-1. 一个错误脚本 1 #!/bin/bash 2 # ex74.sh 3 4 # 这是一个错误脚本. 5 # 哪里出了错? 6 7 a=3.

2020-10-13 14:02:47 405 1

转载 Shell脚本调试技巧

脚本调试的主要工作就是发现引发脚本错误的原因以及脚本源代码中定位错误行,归纳汇总了SHELL脚本的总总方法,供大家学习参考。方式一: 通过echo方式【功能】: 最简单的调试方法,可以在任何怀疑出错的地方用echo打印变量【场合】: 所有怀疑可能有问题的地方,省略了所有【示例】:echo $VAR方式二: 通过选项方式[-ncxv]-n【功能】: 读取shell脚本,但不实际执行【场合】: 用于测试Shell脚本中是否存在语法错误【示例 】 : bash -n script.sh-c【

2020-10-13 13:38:32 2149

原创 solo开源个人博客搭建记录

部署概述安装docker --> docker安装mysql --> docker安装solo --> docker安装nginx -->docker安装lute如果不做https的话,只在本地测试,那么其实又MySQL和solo就够了,不需要nginx,nginx的作用只是将https请求代理至solo架构大概就上面这样,访问流量通过公网到系统网络,再到docker网桥,然后访问nginx 443端口,nginx将流量转到本地的80端口,solo监听在80端口,然后sol

2020-07-09 15:10:27 723

原创 war包方式部署solo博客

*solo,一款小而美的博客系统,GitHub:https://github.com/b3log/solo*环境和文件准备服务器:用的阿里云服务器,系统是 CentOS 7.3 64 位。JDK:1.8Tomcat: 9.0.24MySQL:5.7solo:solo-v3.6.4.war介绍两款工具,接下来会用到,Xshell 和 Xftp Xshell 和 Xftp 的下载使用 使用 Xshell 控制云服务器,使用Xftp 和电脑传输文件。安装 JDK1.下载解压使用

2020-07-09 14:52:36 890 2

原创 OpenGL总结

OpenGL学习总结一.OpenGL是做什么的一种图形硬件的接口。而不是像C和C++一样的编程语言,更像是一个运行库,提供一些预先封装的函数。二.OpenGL的主要功能是什么建模,变换,颜色模式设置,光照和材质设置,纹理映射,位图显示和图像。三.OpenGL的体系结构是什么最底层为图形硬件,第二层为操作系统,第三层为窗口系统,第四...

2020-05-02 14:52:29 2065

转载 QT 绘图设备和Graphics View Framework

QT 绘图设备和Graphics View Framework ...

2020-04-28 01:58:25 246

原创 QT好文收藏

https://www.cnblogs.com/findumars/p/5529526.htmlhttps://www.cnblogs.com/findumars/category/659296.htmlhttps://www.cnblogs.com/swarmbees/category/846137.htmlhttps://www.cnblogs.com/txqdm/p/8622367.h...

2020-04-27 01:44:43 198

原创 有兴趣请关注一起来学习,请加QQ:905095487

有兴趣请关注一起来学习,请加QQ:905095487

2020-04-07 05:38:59 202

原创 RedHat 7关闭防火墙方法

1、在之前的版本中关闭防火墙等服务的命令是service iptables stop/etc/init.d/iptables stop2、RHEL7开始,使用systemctl工具来管理服务程序,包括了service和chkconfigsystemctl list-unit-files|grep enabled查看防火墙状态。systemctl status firewalld...

2020-03-20 21:04:22 795

原创 vs2013配置OpenGL+简单案例分析

一、安装我的系统是win10 64位,用的是visual studio2013,vs装在了E盘下面。visual studio下载地址如下:链接:https://pan.baidu.com/s/1K74efwL5rSyONF7VS1IRMQ提取码:pb7k安装过程我就不多说了,首先解压,然后按照说明文档做就行然后下载OpenGL配置文件glut,下载链接如下:链接:https:...

2020-03-08 07:53:32 323

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除