自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 【每日一题】513. 找树左下角的值

给定一个二叉树的 根节点 root,请找出该二叉树的 最底层 最左边 节点的值。假设二叉树中至少有一个节点。输入: root = [2,1,3]输出: 1输入: [1,2,3,4,null,5,6,null,null,7]输出: 7

2022-06-22 14:56:06 120

原创 【每日一题】1108. IP 地址无效化

给你一个有效的 IPv4 地址 address,返回这个 IP 地址的无效化版本。所谓无效化 IP 地址,其实就是用 “[.]” 代替了每个 “.”。示例 1:输入:address = “1.1.1.1”输出:“1[.]1[.]1[.]1”示例 2:输入:address = “255.100.50.0”输出:“255[.]100[.]50[.]0”提示:给出的 address 是一个有效的 IPv4 地址来源:力扣(LeetCode)链接:https://leetcode.cn/problems/d

2022-06-21 15:34:51 161 1

原创 剖析muduo网络库核心代码,重写muduo库

项目简介模拟muduo库实现nonnon-blocking + IO-multiplexing + loop线程模型的高并发 TCP 服务器模型。开发环境Centos7技术栈C++、多线程、socket网络编程、epoll多路转接项目设计整体采用non-blocking + IO-multiplexing + loop线程的设计框架,其中线程模型采用one loop per thread的多线程服务端网络编程模型,结合reactor模型进行实现。整体框架Reactor模型重要组件:E

2021-03-12 15:52:19 366

原创 c++实现数据库连接池

关键技术点MySQL数据库编程、单例模式、queue队列容器、C++11多线程编程、线程互斥、线程同步通信和unique_lock、基于CAS的原子整形、智能指针shared_ptr、lambda表达式、生产者-消费者线程模型项目背景为了提高MySQL数据库(基于C/S设计)的访问瓶颈,除了在服务器端增加缓存服务器缓存常用的数据之外(例如redis),还可以增加连接池,来提高MySQL Server的访问效率,在高并发情况下,大量的TCP三次握手、MySQL Server连接认证、MySQL Serv

2021-03-09 20:19:59 559

原创 Leetcode 字符串总结1

344. 反转字符串编写一个函数,其作用是将输入的字符串反转过来。输入字符串以字符数组 char[] 的形式给出。不要给另外的数组分配额外的空间,你必须原地修改输入数组、使用 O(1) 的额外空间解决这一问题。你可以假设数组中的所有字符都是 ASCII 码表中的可打印字符。示例 1:输入:[“h”,“e”,“l”,“l”,“o”]输出:[“o”,“l”,“l”,“e”,“h”]示例 2:输入:[“H”,“a”,“n”,“n”,“a”,“h”]输出:[“h”,“a”,“n”,“n”,“a”,

2020-12-28 23:11:06 65

原创 Letcode205. 同构字符串

给定两个字符串 s 和 t,判断它们是否是同构的。如果 s 中的字符可以被替换得到 t ,那么这两个字符串是同构的。所有出现的字符都必须用另一个字符替换,同时保留字符的顺序。两个字符不能映射到同一个字符上,但字符可以映射自己本身。示例 1:输入: s = “egg”, t = “add”输出: true示例 2:输入: s = “foo”, t = “bar”输出: false示例 3:输入: s = “paper”, t = “title”输出: true说明:你可以假设 s 和

2020-12-27 21:35:07 78

原创 基于epoll的web服务器

简介:使用epoll技术实现一个web服务器,可以在浏览器页面请求资源页面。项目工作流程:我们要开发web服务器已经明确要使用http协议传送html文件,http只是应用层协议,我们仍然需要选择一个传输层的协议来完成我们的传输数据工作,所以开发协议选择是TCP+HTTP,也就是说服务器搭建浏览依照TCP,对数据进行解析和响应工作遵循HTTP的原则。这样我们的思路很清晰,编写一个TCP并发服务器,只不过收发消息的格式采用的是HTTP协议,如下图:为了支持并发服务器,我们可以有多个选择,

2020-09-16 13:26:17 221

原创 LEETCODE 11. 盛最多水的容器

给你 n 个非负整数 a1,a2,…,an,每个数代表坐标中的一个点 (i, ai) 。在坐标内画 n 条垂直线,垂直线 i 的两个端点分别为 (i, ai) 和 (i, 0)。找出其中的两条线,使得它们与 x 轴共同构成的容器可以容纳最多的水。说明:你不能倾斜容器,且 n 的值至少为 2。题解:使用双指针解决问题。class Solution {public: int maxArea(vector<int>& height) { int l = 0;//

2020-08-28 19:24:40 83

原创 LEETCODE 面试题 04.10. 检查子树

检查子树。你有两棵非常大的二叉树:T1,有几万个节点;T2,有几万个节点。设计一个算法,判断 T2 是否为 T1 的子树。如果 T1 有这么一个节点 n,其子树与 T2 一模一样,则 T2 为 T1 的子树,也就是说,从节点 n 处把树砍断,得到的树与 T2 完全相同。题解:/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNo

2020-08-24 21:41:29 171

原创 LEETCODE 100. 相同的树

给定两个二叉树,编写一个函数来检验它们是否相同。如果两个树在结构上相同,并且节点具有相同的值,则认为它们是相同的。题解:/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode() : val(0), left(nullptr), right(nullptr) {} *

2020-08-24 20:57:26 71

原创 两数相加

给出两个 非空 的链表用来表示两个非负的整数。其中,它们各自的位数是按照 逆序 的方式存储的,并且它们的每个节点只能存储 一位 数字。如果,我们将这两个数相加起来,则会返回一个新的链表来表示它们的和。您可以假设除了数字 0 之外,这两个数都不会以 0 开头。示例:输入:(2 -> 4 -> 3) + (5 -> 6 -> 4)输出:7 -> 0 -> 8原因:342 + 465 = 807/* * Definition for singly-linked

2020-07-24 18:38:41 96 1

原创 斐波那契数列及青蛙跳台阶问题

写一个函数,输入 n ,求斐波那契(Fibonacci)数列的第 n 项。斐波那契数列的定义如下:F(0) = 0, F(1) = 1F(N) = F(N - 1) + F(N - 2), 其中 N > 1.斐波那契数列由 0 和 1 开始,之后的斐波那契数就是由之前的两数相加而得出。来源:力扣(LeetCode)题解:递归会超时,因此采用DP。//递归:class Solution {public: int fib(int n) { if(n==0)ret

2020-06-07 15:04:33 149

原创 回文数

题目:判断一个整数是否是回文数。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。题解:反转一半数字,避免溢出。class Solution {public: bool isPalindrome(int x) { if (x < 0 || x !=0 && x%10==0 )return false; //小于0 或者末尾为0 返回false int rev = 0; while(rev <=

2020-06-06 11:43:02 158

原创 调度

内核运行调度程序的条件(满足一条即可)一个进程从运行状态切换到等待状态一个进程被终结了不可抢占调度程序必须等待事件结束可以抢占调度程序在中断被响应后执行当前的进程从运行切换到就绪,或者一个进程从等待到就绪当前运行的进程可以被换出先来先服务算法依据进程进入就绪状态的先后顺序排列 短进程优先算法具有最优平均周转时间可能导致饥饿连续的短进程流会使长进程无法获得cpu资源最高相...

2020-03-11 03:47:18 113

原创 进程的复习(二)

线程和进程的比较线程=进程-共享资源线程的优点:一个进程中可以同时存在多个线程;各个线程之间可以并发的执行各个线程之间可以共享地址空间和文件等资源线程的缺点:一个线程崩溃,会导致其所属进程的所有线程崩溃。进程是资源分配单位,线程的cpu调度单位进程拥有一个完整的资源平台,而线程只独享必不可少的资源,如寄存器和栈;线程同意具有就绪 阻塞 和执行三种基本状态,同样具有状态之间的转换...

2020-03-09 11:35:52 95

原创 进程的复习(一)

进程的定义进程:一个具有一定独立功能的程序在一个数据集合上的一次动态执行过程。进程的组成一个进程应该包括: 程序的代码; 程序处理的数据; 程序计数器中的值,指示下一条将运行的指令; 一组通用的寄存器的当前值,堆,栈; 一组系统资源(如打开的文件) 总之进程包含了正在运行的一个程序的所有状态信息进程与程序的联系 程序是产生进程的基础 程序的每次运行构成不同的进程 进...

2020-03-02 22:34:18 86

原创 初学c语言

给定两个整形变量的值,将两个值的内容进行交换。不允许创建临时变量,交换两个数的内容(附加题)3.求10 个整数中最大值。4.将三个数按从大到小输出。5.求两个数的最大公约数。#include&lt;stdio.h&gt;#include&lt;stdlib.h&gt;int main(){int a = 1;int b = 2;int t = 0;t = a...

2018-12-01 14:34:39 108

空空如也

空空如也

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

TA关注的人

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