写点什么

C++开发

0 人感兴趣 · 102 次引用

  • 最新
  • 推荐
https://static001.geekbang.org/infoq/32/32d308244d6991968b38254d70ae93a0.png?x-oss-process=image%2Fresize%2Cw_416%2Ch_234

设计模式第八讲:观察者模式和中介者模式详解

在现实世界中,许多对象并不是独立存在的,其中一个对象的行为发生改变可能会导致一个或者多个其他对象的行为也发生改变。例如,某种商品的物价上涨时会导致部分商家高兴,而消费者伤心;还有,当我们开车到交叉路口时,遇到红灯会停,遇到绿灯会行。这样的例

https://static001.geekbang.org/infoq/8a/8a09246310bc377e0b189d75591f184b.png?x-oss-process=image%2Fresize%2Cw_416%2Ch_234

设计模式第七讲 - 外观模式、适配器模式、模板方法模式详解

1. 背景 软件设计也是这样,当一个系统的功能越来越强,子系统会越来越多,客户对系统的访问也变得越来越复杂。这时如果系统内部发生改变,客户端也要跟着改变,这违背了“开闭原则”,也违背了“迪米特法则”,所以有必要为多个子系统提供一个统一的接

https://static001.geekbang.org/infoq/e8/e87f5a02cd328ef61e0483fc112881a8.png?x-oss-process=image%2Fresize%2Cw_416%2Ch_234

设计模式第五讲 - 装饰器模式和代理模式详解

在现实生活中,常常需要对现有产品增加新的功能或美化其外观,如房子装修、相片加相框等。在软件开发过程中,有时想用一些现存的组件。这些组件可能只是完成了一些核心功能。但在不改变其结构的情况下,可以动态地扩展其功能。所有这些都可以釆用装饰模式来实

https://static001.geekbang.org/infoq/fe/fe712a4e5e01bc0c7a71310b847322e7.png?x-oss-process=image%2Fresize%2Cw_416%2Ch_234

设计模式 - 值类型与引用类型、深拷贝与浅拷贝、原型模式详解

一. 值类型和引用类型 1. 前言 (1). 分类 值类型包括:布尔类型、浮点类型(float、double、decimal、byte)、字符类型(char)、整型(int、long、short等)、枚举(entum)、结构体(struct)。 引用类型:数组、字符串(string)、类、接口、委托(delegate)。

https://static001.geekbang.org/infoq/36/367f6286012edb5ac974be1773690412.png?x-oss-process=image%2Fresize%2Cw_416%2Ch_234

设计模式 - 策略模式详解

在现实生活中常常遇到实现某种目标存在多种策略可供选择的情况,例如,出行旅游可以乘坐飞机、乘坐火车、骑自行车或自己开私家车等,超市促销可以釆用打折、送商品、送积分等方法。

https://static001.geekbang.org/infoq/36/367f6286012edb5ac974be1773690412.png?x-oss-process=image%2Fresize%2Cw_416%2Ch_234

设计模式 - 工厂方法模式和抽象工厂模式

一. 工厂方法模式 1. 定义和特点 (1). 定义:定义一个创建产品对象的工厂接口,然后把产品对象的实际创建工作放到具体的子类工厂当中实现。 PS: ① 我们把被创建的对象成为“产品”,创建产品的对象称为“工厂”。如果创建的产品不多,且基本不会增

https://static001.geekbang.org/infoq/d3/d3e7aa2d17ec6081b2430dd02af6957c.png?x-oss-process=image%2Fresize%2Cw_416%2Ch_234

单线程 Redis 如此之快的 4 个原因

前言 作为内存中数据存储,Redis 以其速度和性能着称,通常被用作大多数后端服务的缓存解决方案。 但是,在内部,Redis 采用单线程架构。 为什么单线程设计依然会有这么高的性能?如果利用多线程并发处理请求不是更好吗?

https://static001.geekbang.org/infoq/8c/8c147b6e37413e721636569b3dee57f3.png?x-oss-process=image%2Fresize%2Cw_416%2Ch_234

「AVL 平衡树专项」带你领略常用的 AVL 树与红黑树的奥秘(规则篇)

AVL树叫做平衡二叉树,它的前提是二叉排序树(BST或叫做二叉查找树)。由于在生成BST树的过程中可能会出现线型树结构,比如插入的顺序是:1, 2, 3, 4, 5, 6, 7..., n。

https://static001.geekbang.org/infoq/ad/ad7f6694aaa12b6df0fb6e805c76f6ad.png?x-oss-process=image%2Fresize%2Cw_416%2Ch_234

一文揭晓,我是如何在 Linux 中查找自如

用过 Linux 的小伙伴都知道,在Linux系统中包含着大量的文件,绝大部分情况下,我们都是通过 CLI 的方式与Linux进行交互,这就会面临一个问题,当我们需要查找一个文件的时候却迟迟无从下手,不知道该如何找起。我们应该怎么查找文件呢?庞大的文件量如何查找

https://static001.geekbang.org/infoq/82/8260ffa35e52b9cc755b8ff1c35bc15d.png?x-oss-process=image%2Fresize%2Cw_416%2Ch_234

从状态机的角度 async 和 await 的实现原理

一. 深度剖析 准备: 先给VS安装一个插件ILSpy,这样更容易反编译代码进行查看,另外要注意反编译async和await的时候,要把C#代码版本改为4.0哦。 1.什么是状态机 (1).含义:通常我们所说的状态机(State Machine)指的是有限状态自动机的简称,是现实事物运

https://static001.geekbang.org/infoq/9e/9e9722629977d11f881a0f71a636bec3.png?x-oss-process=image%2Fresize%2Cw_416%2Ch_234

怎样快速地迁移 MySQL 中的数据?

我们通常会遇到这样的一个场景,就是需要将一个数据库的数据迁移到一个性能更加强悍的数据库服务器上。这个时候需要我们做的就是快速迁移数据库的数据。

https://static001.geekbang.org/infoq/f9/f90203adf83e641e407f34f1d991c4c0.png?x-oss-process=image%2Fresize%2Cw_416%2Ch_234

MySQL 字符集和排序规则详解

 MySQL提供了多种字符集和排序规则选择,其中字符集设置和数据存储以及客户端与MySQL实例的交互相关,排序规则和字符串的对比规则相关

https://static001.geekbang.org/infoq/7f/7fed8f1e6488ca0043391d1585251690.png?x-oss-process=image%2Fresize%2Cw_416%2Ch_234

说透 IO 多路复用模型

用户头像
C++后台开发
2022-12-29

在说IO多路复用模型之前,我们先来大致了解下Linux文件系统。在Linux系统中,不论是你的鼠标,键盘,还是打印机,甚至于连接到本机的socket client端,都是以文件描述符的形式存在于系统中,诸如此类,等等等等,所以可以这么说,一切皆文件。来看一下系统定

https://static001.geekbang.org/infoq/d8/d8ec53fef82ae40a2a3bb4a630cca3f0.png?x-oss-process=image%2Fresize%2Cw_416%2Ch_234

性能优化 - 内存泄漏、内存溢出、cpu 占用高、死锁、栈溢出、FullGC 频繁检测手段 - 总结与分享

用户头像
C++后台开发
2022-12-17

含义:内层泄露是程序中己动态分配的堆内存由于某种原因程序未释放或无法释放,造成系统内存的浪费。(换言之,GC回收不了这些不再被使用的对象,这些对象的生命周期太长) 危害:当应用程序长时间连续运行时,会导致严重的性能下降;OOM;偶尔会耗尽连接对象

https://static001.geekbang.org/infoq/0b/0bcb1825f08a005928db019bf675bde2.png?x-oss-process=image%2Fresize%2Cw_416%2Ch_234

时间复杂度和空间复杂度

用户头像
C++后台开发
2022-12-12

算法,即解决问题的方法。同一个问题,使用不同的算法,虽然得到的结果相同,但是耗费的时间和资源是不同的。就比如要拧一个螺母,使用扳手还是钳子是有区别的,虽然使用钳子也能拧螺母,但是没有扳手好用。“条条大路通罗马”,解决问题的算法有多种,这就需

https://static001.geekbang.org/infoq/5c/5cf4eaa5dd38a19dffebe501e09d92d2.png?x-oss-process=image%2Fresize%2Cw_416%2Ch_234

线性表→顺序表→链表 逐个击破

用户头像
C++后台开发
2022-12-10

  线性表,全名为线性存储结构。使用线性表存储数据的方式可以这样理解,即 “ 把所有(一对一逻辑关系的)数据用一根线儿串起来,再存储到物理空间中 ”。这根线有两种串联形式,如下图,即顺序存储(集中存放)和链式存储(分散存放)。

https://static001.geekbang.org/infoq/08/087ec05a43137f5801f9c3b18b8f8e84.png?x-oss-process=image%2Fresize%2Cw_416%2Ch_234

Redis 为什么这么快,你知道 I/O 多路复用吗?

用户头像
C++后台开发
2022-12-09

今天我们讨论一下面试高频题,为什么 Redis 那么快? 首先,你可以先想一下答案,我先说下大家普遍的答案:

https://static001.geekbang.org/infoq/ee/eeb365441c0ff1cd5479aa491ac179dd.png?x-oss-process=image%2Fresize%2Cw_416%2Ch_234

Redis 缓存雪崩、击穿、穿透、双写一致性、并发竞争、热点 key 重建优化、BigKey 的优化 等解决方案

用户头像
C++后台开发
2022-12-08

一. 缓存雪崩 1. 含义  同一时刻,大量的缓存同时过期失效。 ​2. 产生原因和后果 (1). 原因:由于开发人员经验不足或失误,大量热点缓存设置了统一的过期时间。 (2). 产生后果:恰逢秒杀高峰,缓存过期,瞬间海量的QPS(每秒查询次数)直接打到DB上,如果

https://static001.geekbang.org/infoq/a2/a2d1a198edb4098d3550967470d78864.png?x-oss-process=image%2Fresize%2Cw_416%2Ch_234

Redis 数据持久化机制 (备份恢复)、缓存淘汰策略、主从同步原理、常见规范与优化详解

用户头像
C++后台开发
2022-12-07

 Redis 提供了 RDB 和 AOF 两种持久化方式,默认开启的是RDB,如果需要AOF,需要手动修改配置文件进行开启。

https://static001.geekbang.org/infoq/2a/2a13c03cda62852ea449359413cfe7e4.png?x-oss-process=image%2Fresize%2Cw_416%2Ch_234

Redis 事务、pub/sub、PipeLine- 管道、benchmark 性能测试详解

用户头像
C++后台开发
2022-12-06

一. 事务 1. 概念补充 (1). 原子性 一个事务(transaction)中的所有操作,要么全部完成,要么全部不完成,不会结束在中间某个环节。事务在执行过程中发生错误,会被恢复(Rollback)到事务开始前的状态,就像这个事务从来没有执行过一样。

https://static001.geekbang.org/infoq/8b/8ba0bd1ff9c3dd53cac7246b57b87f8b.png?x-oss-process=image%2Fresize%2Cw_416%2Ch_234

Linux 之基于 Centos 系统安装 Redis、MySQL、Nginx

用户头像
C++后台开发
2022-12-05

一. Redis的安装 1. 准备 (1). 宿主机:centos 8.0 (2). Redis源码:【压缩包: redis-5.0.0.tar.gz】 需要自行编译。 (PS:这个压缩包可以直接Centos系统中在线下载 或者去Redis官网先下载,然后copy到Centos系统中) 下载地址:

https://static001.geekbang.org/infoq/7f/7f03d16592ba36ec69fde091b801d9a9.png?x-oss-process=image%2Fresize%2Cw_416%2Ch_234

Nginx 动静分离、缓存配置、性能调优、集群配置

用户头像
C++后台开发
2022-12-03

1个web程序:部署在7061端口,启动 【dotnet NginxWeb.dll --urls="http://*:7061" --ip="127.0.0.1" --port=7061】

https://static001.geekbang.org/infoq/97/974a921372e717cc030c44ee002b3166.png?x-oss-process=image%2Fresize%2Cw_416%2Ch_234

Redis 之 String 类型和 Hash 类型的介绍和案例应用

用户头像
C++后台开发
2022-12-02

  典型的Key-Value集合,如果要存实体,需要序列化成字符串,获取的时候需要反序列化一下。

https://static001.geekbang.org/infoq/c7/c7ebf7f54001bc524380a9558e7a4c81.png?x-oss-process=image%2Fresize%2Cw_416%2Ch_234

MySQL 索引的底层数据结构原理剖析 (二叉树、 红黑树、Hash、B-Tree、B+Tree)

用户头像
C++后台开发
2022-12-01

 我们平时所说的:聚集索引(主键索引),次要索引,覆盖索引,复合索引,前缀索引,唯一索引在MySQL5.7和 8.0版本默认都是使用B+Tree索引,除此之外还有 Hash索引。至于MySQL5.7之前版本,这里就不过多探究了。

https://static001.geekbang.org/infoq/80/8047ade74602a4c3fd39e1bc3cda6c7a.png?x-oss-process=image%2Fresize%2Cw_416%2Ch_234

深究用户模式锁的使用场景 (异变结构、互锁、旋转锁)

用户头像
C++后台开发
2022-11-30

  本章节,将结合多线程来介绍锁机制, 那么问题来了,什么是锁呢? 为什么需要锁? 为什么要结合多线程来介绍锁呢?锁的使用场景又是什么呢? DotNet中又有哪些锁呢?

https://static001.geekbang.org/infoq/d0/d0ee77541a855d000ac8db1c5a65917d.png?x-oss-process=image%2Fresize%2Cw_416%2Ch_234

从多个角度分析顺序表和链表区别和特点

用户头像
C++后台开发
2022-11-29

  顺序表和链表由于存储结构上的差异,导致他们有不同的特点,从而适用于不同的场景。虽然他们都属于线性表,但他们的存储结构有着本质的不同:

https://static001.geekbang.org/infoq/10/10241700dbfa29c65a2f7c69312a328a.png?x-oss-process=image%2Fresize%2Cw_416%2Ch_234

链表剖析及自己手撸"单链表"实现基本操作 (初始化、增、删、改等)

用户头像
C++后台开发
2022-11-28

链式存储结构,又叫链表,逻辑上相邻,但是物理位置可以不相邻,因此对链表进行插入和删除时不需要移动数据元素,但是存取数据的效率却很低,分为三类:

https://static001.geekbang.org/infoq/88/88f669e04e2e9300b276635f0475204e.png?x-oss-process=image%2Fresize%2Cw_416%2Ch_234

linux 常用服务配置、网络配置 和 基于 FTP 的上传和下载的几种方式

用户头像
C++后台开发
2022-11-26

一. 网络服务配置 1. 主机名配置 hostname: 查看主机名 hostname xxx: 修改主机名(重启后无效) PS: 如果想要永久生效,可以修改/etc/sysconfig/network文件 2. 静态IP的配置

https://static001.geekbang.org/infoq/f4/f4a3d0c3e68daddbb95592a64a9001f2.png?x-oss-process=image%2Fresize%2Cw_416%2Ch_234

ThreadPool 的线程开启、线程等待、线程池的设置、定时功能

用户头像
C++后台开发
2022-11-25

ThreadPool简介:ThreadPool是一个线程池,当你需要开启n个线程时候,只需把这个指令抛给线程池,它将自动分配线程进行处理,它诞生于.Net 2.0时代。

https://static001.geekbang.org/infoq/96/9660ca61ff417d99cbc0caffd3d08e21.png?x-oss-process=image%2Fresize%2Cw_416%2Ch_234

Nginx 负载均衡配置、限流配置、Https 配置详解

用户头像
C++后台开发
2022-11-24

通过proxy_pass 可以把请求代理至后端服务,但是为了实现更高的负载及性能, 我们的后端服务通常是多个, 这个是时候可以通过upstream 模块实现负载均衡。

C++开发_C++开发技术文章_InfoQ写作社区