自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(22)
  • 收藏
  • 关注

原创 编程心法口诀

编程时要注意的几个点,包括出错处理,编码规范,面向对象方法,内存安全,线程安全等

2021-10-08 19:51:46 1994

原创 指针基本概念及其使用技巧

指针基本概念及其常见用途指针基本概念指针含义指针是C语言中的一个概念,其本质上是一个内存地址。指针占据的内存大小由其所在的计算机架构决定,64位机中指针大小为8个字节,32位机中指针大小为4个字节在64位机中测试如下代码,会输出8int main(int argc, char* argv[]){ int* p; printf("%d",sizeof(p));//output 8}指针本身只是一个内存地址,内存地址是没有意义的,有意义的是该地址中指向的值,我们最常用的利用指针访

2022-04-02 17:30:02 864

原创 记一算法题

记一算法题题目描述题目描述题目要求解码一个字符串看下面的输入示例很容易看明白input1“2[ab]”output“abab”input2“3[a]”output2“aaa”input3“2[a2[b]]”output“abbabb”题目分析因为括号可以嵌套所以考虑用堆栈来解决数字后面就是要解码的字符串,需要一个读数字的函数同理可以设计一个读字符串的函数直接上代码,具体解析以后再补#include<string>#include<iostre

2021-10-10 00:21:12 158

原创 引用和指针的区别

引用和指针的区别指针的介绍引用的引入意图引用的实现原理引用和指针使用时的区别指针的介绍指针是C中的一个概念,指针变量中存储的是一个变量的地址,在C语言中,指针最大的作用就是解决函数参数的传值的局限性了。没有指针,一个函数的作用仅仅体现在它对全局变量的修改和它的返回值中,有了指针,函数能实际改变传给它的参数,大大加强了函数的功能。引用的引入意图在过程式编程中,指针已经足够用了,但是随着面向对象的引入,指针的局限性就体现出来了。很多时候,我们希望能够给函数传入一个对象而非这个对象的指针,所以C++引入了

2021-10-07 20:36:40 346

原创 mit6.830Lab1Ex1记录

记录mit6.830Lab1Ex1目标——完成TupleDesc类和Tuple类TupleDesc类Tuple类目标——完成TupleDesc类和Tuple类首先我们明确3个问题。问题1. 这两个类被用来做什么?问题2. 这两个类如何被其他类调用?问题3. 这两个类调用了哪些其他类?TupleDesc类先看TupleDesc类问题1TupleDesc用来描述元组的模式,即字段的属性和名字TupleDesc有两个构造方法,public TupleDesc(Type[] typeAr, S

2021-10-06 20:51:51 149

原创 并发相关的一些技术

并发相关的一些技术并发并发追求的目标并发编程兴起原因并发编程的目标并发中容易忽视的问题缓存的可见性问题指令的非原子性问题指令的优化乱序问题java中的解决方案-java内存模型一些常见的并发问题及解决方案一个对象中存在多个资源该如何保护?一个方法中有多个关联对象共享变量间有约束条件需要满足某些条件才能继续执行多个线程访问一个临界区(但限制线程不能超过某个数目)读多写少的场景任务存在汇聚关系线程安全的数据结构并发中的设计模式避免共享多线程版本 IF 的设计模式分工模式并发并发是一个比较难的问题,java算

2021-10-04 02:07:38 916

原创 设计原则KISS DYR 迪米特

设计原则KISS原则和YANGI原则DYR原则最小知识原则在之前的文章中有介绍过SOLID原则,这篇博客来介绍一下其余的几种设计原则。KISS原则和YANGI原则KISS原则为尽量保持简单原则。YANGI原则为You Ain’t Gonna Need It,核心思想是不要做过度设计,也是保持简单的意思。感觉这个和延后实现的思想有点相似。(延后实现的思想在计算机中有很多应用,比如copy on write技术,进程创建函数fork就运用了这个技术,还有操作系统收到操作IO的请求时,不会立刻实现,而是

2021-10-01 22:25:19 196

原创 MySQL数据库总览 五

MySQL数据库总览 五MySQL介绍MySQL基本架构连接器分析器优化器执行器存储引擎存储引擎innoDBMySQL介绍MySQL基本架构下面是MySQL的基本架构图。sql语句首先经过连接器,与MySQL建立连接,再经过分析器,判断sql语句是否合法。之后再到缓存中查看是否有这条语句的缓存(MySQL8.0已经删除),若没有则经过优化器,对如何进行查询进行优化,之后再经过执行器,调用存储引擎来获得我们想要的数据。由于缓存已经在8.0版本被移除,MySQL内部主要有连接器、分析器。优化器、执行

2021-10-01 20:37:29 104

原创 数据库基本概念续 四

数据库基本概念续 四数据库基本概念连接索引事务存储引擎MySQL基本架构锁数据库基本概念连接索引事务存储引擎MySQL基本架构锁

2021-10-01 17:55:19 91

原创 面向对象技术

面向对象技术面向对象的四大特性封装抽象继承多态面向对象和面向过程的区分面向抽象而非实现编程抽象类和接口抽象类和接口的区别多用组合少用继承软件越来越复杂已经成为了一种趋势,传统的面向过程方法已经无法满足软件开发的需求了,为了软件的更好维护,人们开始考虑将现实世界的实体与软件中的模块对应起来,软件中的模块不仅有着现实世界实体的属性,还有着现实世界实体的行为。面向对象技术就是做着这样的一件事,它的目的就是将合适的属性和行为放入合适的类中。面向对象是一门实践中产生的技术,要理解面向对象的思想,离不开实际应用。

2021-10-01 15:13:39 551

原创 算法 DFS BFS 并查集

算法 DFS BFS 并查集题目描述DFS解法BFS解法并查集解法题目描述这是一道leetcode上非常经典的题(岛屿数量),解决思路也很多。DFS解法DFS解法是用染色的方法,我们遍历每一个节点,每个节点都做这样的事:首先判断岛屿是否被拜访过,没被拜访过则先将岛屿数加一,再利用DFS搜索的方法,将与它连接在一起的每个节点都标记为拜访过,。这样在遍历第一个节点的时候会将与第一个节点相连的节点全都标记为拜访过,之后即使再碰到也会认为属于第一个节点的集群。//author: Solitude//d

2021-09-30 22:26:16 164

原创 网络世界的构建 一

网络世界的构建 一设备互联局域网互联网络传输的通用要求各种玩法(传输人们感兴趣的数据)设备互联随着一台台的计算机出现,自然而然就出现了让计算机互联的要求,数据链路层解决的就是使得网络互连在一起的功能。(局部网络互连)但是有个问题,网络设备多种多样,且实际物理环境想当复杂,导致了我们局部网络间互连的方式是多种多样的。局域网互联那么,跨越局部网络时,机器该如何互连呢?(一个数据包跨局域网传输呢)IP协议的出现我们或许可以这样:在每个局部网络中都以该局部网络的方式传输,所以我们只需要知道目标机器的地

2021-09-30 21:54:29 120

原创 C++虚函数 一

C++虚函数虚函数虚函数的作用虚函数的实现原理虚函数实现原理的验证虚函数虚函数的作用面向对象中一个非常重要的概念叫多态,指的是使得一个基类指针指向一个派生类对象,当调用基类和派生类共有的函数时,最终调用的是派生类的函数。如下class Base{public: virtual void f(){ cout<<"Base call f()"; }}; class Derived : public Base{public: virtual void f(){ co

2021-09-30 00:11:03 69

原创 数据库基本概念 三

数据库基本概念数据库语言视图键约束范式索引事务存储引擎MySQL基本架构

2021-09-29 23:27:19 152

原创 设计模式的SOLID原则和创建式设计模式 一

设计模式的SOLID原则和创建式设计模式 设计模式的作用SOLID设计原则创建式设计模式设计模式的作用如果说算法的作用是让我们写出高效的程序,那么设计模式的目的就是让我们写出好的,扩展性强的,符合规范的代码。SOLID设计原则在软件设计中,要遵循一些原则。SOLID五大原则在软件设计中非常常见。S 单一职责原则每个模块都负责单一的职责,若一个模块负责多个原则,则应该考虑将这个模块划分。事实上,这个原则看上去很简单,但在软件设计中一个模块是否负责单一职责是很难区分的,可能会随着适用场景的改变而改

2021-09-29 22:00:00 119

原创 系统的演进,组件的使用 二

系统的演进,组件的使用 二系统的演进,组件的使用web服务器后端系统的基石建立在web服务器上的子系统使用web服务器框架的好处数据库常见的数据库类型数据库的核心知识缓存为什么需要缓存缓存的适用场景消息队列为什么需要消息队列现在的后端系统图![后端系统2](https://img-blog.csdnimg.cn/595a169f4f184f848af60a72cc624847.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,sha

2021-09-28 13:00:00 79

原创 从电商系统出发,设计一个最简单的后端系统 一

从电商系统出发,设计一个最简单的后端系统电商系统设计需求分析顾客商家老板需要的子系统概要设计电商系统的实体关系图数据库设计每个子系统的具体功能最终系统结构图电商系统设计需求分析对于最简单的电商系统的需求分析,主要需要考虑两件事。第一是系统面向的客户,第二是这些用户需要这个系统做什么。顾客系统首先是给顾户使用的。参照我们在淘宝网站中最常做的事,我们可以得出这个系统需要给我们提供的功能。在网站中挑选商品,然后将想要的商品丢进购物车中,点击购买,生成一个订单,支付订单,等待购买的商品送到自己手中。

2021-09-28 00:21:48 1089

原创 关于TCP三次握手和两次握手的思考

关于TCP三次握手和两次握手的思考TCP连接需要握手的原因两次握手的可行性分析TCP连接需要握手的原因TCP协议是一个非常常见的全双工协议,它保证了数据的可靠传输。使用TCP服务的程序一般需要三次握手来建立TCP的连接,根据RFC文档可知,TCP三次握手主要是让发送方和接收方知道各自的序列号,利用序列号来维护数据的可靠传输。TCP协议三次握手流程如下:seq表示序列号,ack表示应答号,ack = y表示该机器希望下次接收来的序列号为y,SYN = 1表示这是一个建立序列号同步的过程,ACK =

2021-08-02 18:31:49 2439

原创 函数指针的探索

函数指针--指向函数的指针函数指针函数指针的概念函数指针的用法函数指针的声明函数指针作为参数传入函数程序示例函数指针函数指针的概念试想这样一种场景,你在一个程序中编写了一个函数f,并且调用了这个函数f,如果对底层比较感兴趣的同学,可能会对这个过程中程序发生了什么有着强烈的好奇心下面从程序编译后开始说起如果对操作系统有了解的同学,可以知道,一个程序是在用户进程空间中执行的,一个程序可以看作一个进程。一个简化的进程空间模型,可以看作由代码段,数据段,堆栈三个部分组成(当然还有其余部分,但我们主要讲这三

2021-06-04 23:14:26 70

原创 队列原理及队列应用

探索队列这一数据结构队列常见的队列类型顺序队列链式队列循环队列开发时可能用到的队列阻塞队列并发队列队列常见的队列类型顺序队列链式队列循环队列开发时可能用到的队列阻塞队列并发队列...

2021-05-30 17:20:32 300

原创 计算机网络笔记(一)

这里写目录标题计算机网络问题(一)1.当有新主机加入计算机网络如何获得IP地址(1)组织如何得到一个地址块(2)设备如何从某组织的地址块得到一个地址公网和私网计算机网络问题(一)1.当有新主机加入计算机网络如何获得IP地址(1)组织如何得到一个地址块首先,在全球有一个管理IP地址空间的权威机构ICANN,它能向各ISP分配地址块。而组织的IP地址块一般是从ISP中获取。组织为了获取一块IP地址用于一个子网,其网络管理员先与他的ISP联系,该ISP将会从它拥有的更大的地址块中向组织提供一些地址。例如

2021-05-24 21:37:06 534

原创 网络是怎样连接起来的

网络是怎样连接起来的(一)整体流程概述概述在浏览器中地址栏输入一个URL,如https://www.yuque.com/yieryi-ik6se/zyb8yw/ski6iv/edit,浏览器将该URL转变为一个HTTP请求,然后将HTTP请求交付给操作系统中的网络控制软件(网络协议栈 可以控制HTTP请求的传输规则),网络控制软件将HTTP请求加上相应的头部将之变为网络数据包,再通过网卡将网络数据包发送出去。网络数据包被发送出去后,进入局域网中,通过交换机和集线器等设备,找到路由器。路由器负责接入互

2021-05-16 22:04:34 626

空空如也

空空如也

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

TA关注的人

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