自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Tcp套接字

TCP(Transmission Control Protocol,传输控制协议)是一种面向连接的、可靠的、基于字节流的传输层通信协议。TCP套接字(Socket)是实现TCP协议进行网络通信的关键机制。TCP套接字广泛应用于各种需要可靠传输数据的网络应用程序中,如Web服务器(HTTP)、文件传输(FTP)、远程登录(SSH)等。:当客户端断开连接后,与客户端相连接的Socket对象也应当被关闭,否则其将会占用文件描述符表,导致资源浪费。在编程中,TCP套接字的实现依赖于操作系统提供的套接字API。

2024-09-13 18:41:04 387

原创 网络编程Udp协议

UDP为应用程序提供了一种以最少的协议机制向其他程序发送消息的过程。它使用IP作为底层协议,为应用层提供一种简单的、不可靠的、无连接的数据传输服务。

2024-09-13 18:39:52 546

原创 网络基础知识(一遍过)

计算机网络的历史可以追溯到上世纪的冷战时期,苏美两国的军备竞赛催生了很多的科学技术,计算机网络就是其中的一个产物。本篇文章主讲的是计算机网络的一些基础但非常重要的知识,这些基础知识对学习计算机网络编程具有关键作用,看完全篇内容相信你能快速掌握什么是计算机网络。

2024-08-14 10:20:14 1024

原创 文件IO操作

在计算机领域,文件是存储在存储设备(如硬盘、固态驱动器、闪存驱动器、光盘等)上的一组相关信息或数据的集合。这些信息或数据可以是文本、图像、音频、视频、程序指令、数据库记录等多种类型。文件是计算机操作系统管理数据的基本单位,允许用户和组织以逻辑方式存储、访问和修改信息。

2024-08-04 14:47:07 904

原创 (面试必看!)锁策略

本篇文章接上一篇文章(一些和多线程相关的面试考点),主要讲的是多线程中一些加锁的策略和面试考点,同样的,如果读者可以认真看完和总结积累,相信对面试会有很大帮助。这一部分文字居多,读者要组织好语言以面对面试官的提问。

2024-07-31 20:04:47 1148

原创 (面试必看!)一些和多线程相关的面试考点

本篇文章总结了多线程中面试频率比较高的考点,内容可能比较琐碎,但是如果能够坚持看完,注意总结积累,相信对面试会有很大帮助。多线程内容较多,用一篇文章写完可能篇幅过长,我打算用两篇文章来总结,本篇主要写的是多线程中辅助加锁的数据结构和指令,下一篇主要讲的是锁策略。

2024-07-28 22:05:31 1332 1

原创 死锁的产生和避免(一个和死锁相关的趣事)

死锁是指各并发进程(线程)彼此互相等待对方所拥有的资源,且这些并发进程(线程)在得到对方的资源之前不会释放自己所拥有的资源,从而造成大家都想得到资源而又都得不到资源,各并发进程(线程)不能继续向前推进的状态。死锁问题是多进程(线程)并发执行时的一个难点,需要通过合理的资源分配策略、死锁预防和避免算法以及死锁检测和解除机制来有效解决。在实际应用中,需要根据具体场景和需求选择合适的方法来处理死锁问题。

2024-07-27 17:07:50 961

原创 线程池的认识与使用

线程池(Thread Pool)是一种基于池化技术设计的并发框架,用于管理和复用线程资源。它预先创建一定数量的线程(正式员工),并将这些线程放入一个“池”中(公司),当有任务(快递)需要执行时,线程池会从中取出一个空闲的线程来执行该任务,而不是每次都创建一个新的线程,当程序中的任务很多,线程池中的线程不足以完成所有任务时,线程池会创建一些临时线程来应对这一情况。这种方式可以显著提高程序的执行效率和性能,同时减少资源消耗。

2024-07-27 14:50:33 876

原创 阻塞队列的认识

阻塞队列通常用于生产者-消费者问题,其中生产者线程向队列中添加元素,而消费者线程从队列中移除元素。

2024-07-26 20:21:20 925 1

原创 定时器的实现(庖丁解牛,逐步解析 !)

在软件开发中,定时器是一种非常重要的机制,它允许程序在特定时间间隔后执行某些操作。定时器可以基于硬件实现,也可以由操作系统或软件框架提供。定时器也是软件开发中的⼀个重要组件. 类似于⼀个 "闹钟". 达到⼀个设定的时间之后, 就执⾏某个指定好的代码.

2024-07-25 17:49:19 863

原创 单例模式与工厂模式

单例模式(Singleton Pattern)是一种常用的软件设计模式,其目的是确保一个类仅有一个实例,并提供一个全局访问点来获取该实例。单例模式广泛应用于需要控制资源访问的场合,比如配置文件读取、数据库连接、线程池等。

2024-07-24 18:14:06 1162

原创 线程安全(干货满满!)

线程安全(Thread safety)是多线程编程中的一个重要概念,它指的是在多线程环境下,一个程序或者代码段在并发访问时,能够正确地保持其预期的行为和状态,而不会出现意外的错误或者不一致的结果。具体来说,当多个线程同时访问共享资源(如共享变量、共享数据结构、共享文件等)时,线程安全的编程技术和方法旨在解决并发访问问题,确保程序的正确性和稳定性。

2024-07-20 23:56:01 1750

原创 Thread类基本用法及线程的基本操作

使用start()方法时,会启动一个新的线程来执行run()方法中的代码。这意呀着run()方法中的代码会在新的线程中并发执行,不会阻塞调用start()方法的线程。这使得程序能够同时执行多个任务,提高了程序的执行效率。直接调用run()方法:直接调用run()方法时,并不会启动新的线程,而是直接在当前线程中顺序执行run()方法中的代码。这意味着run()方法中的代码执行会阻塞调用它的线程,直到run()方法执行完毕。这与多线程的初衷相悖,因为并没有实现真正的并发执行。

2024-07-17 23:30:09 673

原创 多线程开篇

线程的并发执行是指在一个程序中,多个线程可以同时或几乎同时地执行,以充分利用多核处理器的计算能力或提高程序的响应性和吞吐量。这种并发执行并不是指多个线程真正地在同一时刻同时进行,因为在实际的物理硬件上,一个CPU核心在同一时刻只能执行一个线程的指令。但是,通过操作系统的调度机制,可以使得多个线程在多个CPU核心上并行执行,或者在单个CPU核心上通过时间片轮转的方式轮流执行,从而实现了并发执行的效果。

2024-07-16 22:40:30 622

原创 浅析计算机是如何工作的

当一个程序开始运行时,这个程序的指令和依赖的数据就会从硬盘中加载到内存中,程序中各个进程就会产生对应的PCB结构并以链表方式链接成队列,PCB的内存指针会指向这些指令和数据,以便操作系统能快速找到和执行程序的代码。当进程切换时,PCB会保存进程的上下文信息,以便下一次循环时该进程能继续执行。

2024-07-12 17:51:06 949

原创 MySQL表操作进阶(查询操作重点)

在这种执行顺序下,各部分别名的定义和使用就显得尤为严格,在上一篇文章中也有提到(MySQL数据库中表操作),不同的执行顺序导致别名的定义有了先后,别名在未定义前是不允许使用的,因此熟记这样的一条执行顺序在sql代码)时就有很大的帮助了。

2024-07-10 17:30:36 655

原创 MySQL数据库中表操作

MySQL表的基础操作

2024-07-06 13:14:50 650

原创 MySQL数据库开篇

以上所有大写字母为关键字(在写sql语句时关键字可以不用大写,这里大写只做区分),【】中的内容为可选项,创建数据库时应该指明对应的字符集和字符集的校验规则,默认为字符集为utf8 校验规则为。在现实工作中,删库操作非常危险,如果没有做好备份,可能会导致大量的数据流失,所以删库操作要谨慎!数值类型可以指定为无符号(unsigned),表示不取负数。:这两种数据类型有特殊的插入格式,在以后的表操作中会提到。1字节(bytes)= 8bit。: 指定数据库采用的字符集。: 指定数据库字符集的校验规则。

2024-07-04 22:43:00 238

原创 数据库的含义和MySQL数据库软件的安装步骤

1. 什么是数据库数据库可以有效的管理数据,一般用来提供远程服务,即通过远程连接来使用数据库,因此数据库也称为数据库服务器。2. MySQL数据库软件的安装步骤

2024-07-03 22:07:18 836

原创 抽象类和接口

不用给出具体的实现体。

2023-11-18 21:24:29 38 1

原创 多态及用法

圈复杂度是一种描述一段代码复杂程度的方式. 一段代码如果平铺直叙, 那么就比较简单容易理解. 而如 果有很多的条件分支或者循环语句, 就认为理解起来更复杂. 因此我们可以简单粗暴的计算一段代码中条件语句和循环语句出现的个数, 这个个数就称为 "圈复杂度". 如果一个方法的圈复杂度太高, 就需要考虑重构. 不同公司对于代码的圈复杂度的规范不一样. 一般不会超过10 .最好的方式是:重新定义一个新的类,来重复利用其中共性的内容, 并且添加或者改动新的内容。重写的好处在于子类可以根据需要,定义特定于自己的行为。

2023-11-18 10:44:27 66 1

原创 初识封装与限定符

1.封装的概念何为封装呢?简单来说就是套壳屏蔽细节。封装:将数据和操作数据的方法进行有机结合,隐藏对象的属性和实现细节,仅对外公开接口来和对象进行交互。比如:对于电脑这样一个复杂的设备,提供给用户的就只是:开关机、通过键盘输入,显示器,USB插孔等,让用 户来和计算机进行交互,完成日常事务。但实际上:电脑真正工作的却是CPU、显卡、内存等一些硬件元件。对于计算机使用者而言,不用关心内部核心部件,比如主板上线路是如何布局的,CPU内部是如何设计的等,用户 只需要知道,怎么开机、怎么通过键盘和鼠标

2023-11-17 17:44:40 40

原创 继承及用法

通过子类对象访问父类与子类中不同名方法时,优先在子类中找,找到则访问,否则在父类中找,找到 则访问,否则编译报错。通过派生类对象访问父类与子类同名方法时,如果父类和子类同名方法的参数列表不同(重载),根据调用 方法适传递的参数选择合适的方法访问,如果没有则报错;

2023-11-11 21:21:36 53 1

原创 初识类和对象

在java中定义类时需要用到class// 创建类field;// 字段(属性) 或者 成员变量method;// 行为 或者 成员方法class为定义类的关键字,ClassName为类的名字,{}中为类的主体,类名使用大驼峰形式单词首字母大写类中包含的内容称为类的成员。属性主要是用来描述类的,称之为类的成员属性或者类成员变量。方法主要说明类 具有哪些功能,称为类的成员方法。例​// 品牌// 型号// 重量// 长// 宽// 高// 颜色。

2023-11-08 09:34:35 32 1

原创 扫雷游戏的初步实现

因为我们在9*9的范围内排雷,所以要注意输入坐标的合适性,用if语句进行甄别,横纵坐标范围均为1 ~ 9。因为我们只需在9*9也就是row*col范围内布置雷,所以用x,y表示雷的横纵坐标。如果你能做到这里,说明你已经成功完成了扫雷游戏的基本游戏设计,你可以根据游戏难度改变源文件game.h中row,col (横纵数目)以及Easy_count(雷的数量)的大小。这里我们要引入一个知识点,字符‘ 0 ’在Ascii码表中对应数字为48,而字符0~9在表中的数值是连续的,也就是说字符0和字符1相差1。

2023-08-18 22:34:23 62

原创 VS编译器错误:C4996

开始学习编程的小伙伴可能会接触各种编译器,其中VS系列编译器可谓是最常见,VS系列编译器对大多数初学者来说上手比较容易,但还是会遇到一下这种情况(错误代码C4996):明明代码没有问题编译器却报错。scanf是C语言标准库函数,而scanf_s是VS的IDE提供的,在VS系列中scanf_s安全性较高。因为适用性不同:scanf适用于所有C语言编译器而scanf_s只适用于VS系列编译器。

2023-07-23 21:52:31 203

空空如也

空空如也

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

TA关注的人

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