- 博客(69)
- 收藏
- 关注
原创 Android开发简介
本文简要介绍了Android开发的基础知识。Android支持Java和Kotlin两种官方编程语言,项目结构分为项目(Project)和模块(Module)两个层次,其中模块对应实际App。重点讲解了工程目录结构:App目录包含manifest配置文件、Java源代码和各类资源文件;GradleScripts目录包含编译配置文件。此外还说明了界面开发的基本方法:使用XML设计界面,Java编写逻辑,并需在manifest中注册新页面。最后提到Android开发涉及多种控件的学习,本文仅是对项目结构的入门介
2025-08-14 11:42:32
231
原创 Git基础操作教程
本文介绍了Git版本控制系统的基础操作教程。主要内容包括:Git仓库的创建方法(init/clone)、工作区域与文件状态、添加/提交文件操作、版本回退与差异查看、文件删除与忽略配置、本地与远程仓库交互等核心功能。重点讲解了分支管理,涵盖分支创建/切换/合并等操作,详细解析了合并冲突的解决方法,并对比了Merge和Rebase两种合并方式的优缺点。教程通过清晰的命令示例,帮助初学者快速掌握Git的基础使用,为代码版本管理打下坚实基础。
2025-08-04 11:45:33
319
原创 HTML+CSS+JS快速入门
摘要:本文介绍了HTML、CSS和JavaScript的基础知识。HTML部分包括常用标签(标题、段落、列表等)和元素分类;CSS部分涵盖选择器、属性(字体、背景等)和盒模型;JavaScript部分讲解基本语法(数据类型、运算符、流程控制等)。推荐学习网站包括w3schools和菜鸟教程。全文提供了Web开发的入门指南,适合初学者快速掌握核心技术要点。
2025-07-25 19:52:36
684
原创 MySQL的ACID特性
MySQL事务的四大特性(ACID)保证了数据处理的可靠性:原子性确保事务要么全部执行要么全部回滚;一致性保证数据始终符合业务规则;隔离性通过四种隔离级别(读未提交、读已提交、可重复读、串行化)控制并发事务间的相互影响;持久性确保提交的事务永久保存。这些特性共同保障了数据库操作的完整性和安全性。
2025-04-21 10:57:39
224
原创 TCP保活功能
引出一个问题:聊天服务器中,如果网络拥塞严重,ChatServer如何感知客户端在线还是掉线了?答:基于长连接的业务 -> 心跳保持机制!!!首先要知道:同一台机器上的不同协议,可以各自独立使用相同的端口号!现在把ChatServer服务器分成两个部分:TCP:8080做通用业务处理,UDP:8080做心跳业务处理在ChatServer端会给connect成功的client分配一个心跳计数器,并且ChatServer启动心跳计时器只要启动心跳计时器,每过1秒就把所有client的心跳计数器+1;
2025-04-21 09:32:56
330
原创 selenium快速入门
(2) class值重复的有很多,需要切片 console -> document.getElementsByClassName()元素定位有两个函数:find_element() 和 find_elements()(1) 通过精确链接文本找到标签a的元素[模糊文本定位](5) 通过任意类型定位:"[类型*=‘模糊值’]"(6) 通过任意类型定位:"[类型^=‘开头值’]"(7) 通过任意类型定位:"[类型$=‘结尾值’]"(4) 通过任意类型定位:"[类型=‘精确值’]"
2025-04-10 15:19:41
543
原创 常见的三种锁
互斥锁 Mutex 保证在任意时刻只有一个线程能够进入被保护的临界区。当一个线程获取到互斥锁后,其他线程若要进入临界区就会被阻塞,直到该线程释放锁。互斥锁是一种阻塞锁,当线程无法获取到锁时,会进入阻塞状态。应用场景上,互斥锁适用于临界区资源访问时间较长或存在阻塞操作的情况。
2025-03-09 20:51:07
262
原创 左值引用与右值引用
1.左值引用是对左值的引用;右值引用是对右值的引用(不过也有特例)const左值引用能指向右值,不过不能修改;右值引用通过std::move(v)可以指向左值声明出来的左值引用或者右值引用都是左值(int& lref = n, int&& rref = 20, lref和rref都是左值)2.左值引用与右值引用在功能上的差异(1)左值引用:左值引用或者可以避免对象的拷贝(2)右值引用:实现移动语义和完美转发。
2025-02-28 02:10:21
217
原创 C++11中function,lambda,bind
function用来描述函数对象的类型lambda表达式用来生成函数对象(可以访问外部变量的匿名函数)bind也是用来生成函数对象(函数和参数进行绑定生成函数对象)
2025-02-27 17:24:56
177
原创 虚函数、虚函数表、虚函数表指针
②继承的情况下,虚函数表指针赋值过程?类的不同对象,通常虚函数表指针是不一样的(拷贝构造/opertor=需要深拷贝)a.首先调用父类构造函数,把A的虚函数表的地址赋值给vptr。b.然后调用子类构造函数,把B的虚函数表的地址赋值给vptr。讨论两种情况:在磁盘(可执行程序)、在内存(运行状态)①类对象构造的时候,把类的虚函数表地址赋值给vptr。每个类只有一个虚函数(有虚函数的类)编译器编译的时候生成。
2025-02-26 23:13:19
250
原创 malloc和new的相关知识
⑥申请自定义类型对象时,malloc/free只会开辟空间,不会调用构造函数与析构函数,而new在申请空间后会调用构造函数完成对象的初始化,delete在释放空间前会调用析构函数完成空间中资源的清理。⑤malloc申请空间失败时,返回的是NULL,因此使用时必须判空,new不需要,但是new需要捕获异常。④malloc的返回值为void*, 在使用时必须强转,new不需要,因为new后跟的是空间的类型。注意3:malloc分配的是虚拟地址,使用时才会分配真实的物理地址(缺页中断)
2025-02-26 22:10:14
259
原创 【计算机网络】多路转接之poll
poll也是一种linux中的多路转接方案(poll也是只负责IO过程中的"等")解决:1.select的fd有上限的问题;2.每次调用都要重新设置关心的fd。
2024-11-24 04:19:21
295
原创 【计算机网络】多路转接之select
系统提供来实现IO = 等 + 拷贝 -> select()只负责等待,可以一次等待多个fdselect()本身没有数据拷贝的能力,拷贝要read()/write()来完成。
2024-11-24 04:18:01
522
原创 【操作系统】非阻塞IO
因为文件描述符默认都是阻塞IO,所以想要使用非阻塞IO,就要先把fd设置为非阻塞的可以用把文件描述符设置成非阻塞的基于fcntl,我们实现一个SetNoBlock函数将文件描述符设置为非阻塞。
2024-11-24 04:17:10
141
原创 【计算机网络】解决bind error
因为是服务器主动断开的,所以服务器要去维持TIME_WAIT状态,维持该状态期间,该端口依旧被占用,所以就无法绑定成功。首先要知道:四次挥手动作完成之后,主动断开连接的一方要维持一段时间的TIME_WAIT。服务器有时可以立即重启,有时候无法立即重启 — bind error。:使用setsockopt() 设置地址复用。
2024-11-22 03:18:48
461
原创 【计算机网络】IP协议
第一个:更多分片=1 && 偏移量=0、最后一个:更多分片=0 && 偏移量>0当前的起始位置 + 自身长度 = 下一个报文中填充的偏移量大小。
2024-11-20 23:02:32
393
原创 【计算机网络】TCP协议
TCP有这么多策略的原因就是要保证可靠性,同时又要尽可能的提高性能保证可靠性:校验和、序列号、确认应答、超时重传、连接管理、流量控制、拥塞控制提高性能:流量控制、拥塞控制、延迟应答、捎带应答。
2024-11-17 20:02:54
459
原创 【计算机网络】UDP协议
① 16位源端口号:自己的端口号② 16位目的端口号:对方的端口号③ 16位UDP长度:整个数据报(UDP报头+UDP有效载荷)的长度,最大64KB一个UDP最多传64KB的数据,如果要传的数据 > 64KB,那就将大数据分成若干个小数据④ 16位UDP校验和:检测数据在传输过程中出现的错误。
2024-11-17 20:02:15
452
原创 【计算机网络】Socket编程接口
套接字种类很多,例如:网络套接字、原始套接字、unix域间套接字三种套接字就要设计三套接口吗?不用,利用struct sockaddr复用同一套接口如果是网络套接字编程:使用socket相关函数时,传参传递的是 struct sockaddr_in如果是unix域间套接字编程:使用socket相关函数时,传参传递的是 struct sockaddr_un。
2024-11-11 23:36:39
439
原创 【操作系统】基于阻塞队列的生产消费模型
单生产单消费的情况下,我们只需要维护生产者和消费者之间的互斥和同步关系即可将阻塞队列封装成一个类:首先给出整体框架,接着会说明每一个类内函数的实现。
2024-10-29 03:07:31
120
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人