自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

AlanfengLiu的博客

学习之路

  • 博客(27)
  • 收藏
  • 关注

原创 博客说明

本博客用于本人学习途中遇到的一些问题,包括看书,看视频过程中看到的,他人博客觉得有用的知识点。面试过程中被问到的问题。还有自己刷题的记录剑指offer程序员面试金典程序员面试金典分为专栏:c++语法操作系统数据结构面试宝典以供自己在外随时学习,今后也会继续补充。分享知识,欢迎转载。...

2020-09-28 11:07:10 105

原创 大话设计模式-----策略模式

要求:收银系统 增加打折模式: 如果增加满减活动?增加积分兑换呢? 先尝试简单工厂实现: 最初想法: 但是 打折、满减实际上他们具有不同的计算方式,传入的参数也不同,每有一种新的促销都要改代码,即使是同类满减促销。比如之前写了满100减10,但是后来有满300减40,满...

2021-08-10 10:01:52 167

原创 大话设计模式-----简单工厂模式

初学者代码毛病: 命名不规范 判断分支过多 边界条件未写清楚 面向对象编程 通过封装、多态、继承 把程序的耦合度降低,使程序容易修改、易于复用 业务的封装 让业务逻辑和界面逻辑分离 紧耦合松耦合 简单工厂模式: 有新的运算法则修改工厂和增加子类即可,界面不用动。 ...

2021-08-10 09:55:49 129

原创 并发和多线程(六) 单例设计模式共享数据分析、解决,call_once

我的实践:#include <iostream>#include <thread>#include <list>#include <mutex>using namespace std;mutex my_mutex;once_flag g_flag;//1.只有new但是没有回收内存class MyCAS//这是一个单例类{ static void CreatInstance() { chrono::m

2020-12-28 17:13:05 160

原创 并发和多线程(五) unique_lock(类模板)详解

unique_lock(类模板)详解我的实践#include <iostream>#include <thread>#include <list>#include <mutex>#define N 1000using namespace std ;class T {private: list<int> lst; mutex my_mutex; mutex my_mutex1; mute

2020-12-25 17:11:48 219 1

原创 并发和多线(四) 创建多个线程、数据共享问题分析

互斥量概念、用法、死锁演示及解决详解我的实践#include <iostream>#include <thread>#include <list>#include <mutex>#define N 1000using namespace std;class T {private: list<int> lst; mutex my_mutex; mutex my_mutex1; mutex

2020-12-24 16:33:52 118 1

原创 并发和多线程(三)线程传参详解,detach()大坑,成员函数做线程函数

线程传参详解,detach()大坑,成员函数做线程函数一、传递临时对象作为线程参数1.1要避免的陷阱1:#include <iostream>#include <thread>using namespace std;void myPrint(const int &i, char* pmybuf){ //如果线程从主线程detach了 //i不是mvar真正的引用,实际上值传递,即使主线程运行完毕了,子线程用i仍然是安全的,但仍不推荐传递引用 /.

2020-09-28 14:28:43 350

原创 C++中const用于函数重载的用法

C++中const用于函数重载常成员函数和非常成员函数之间的重载首先先回忆一下常成员函数声明:<类型标志符>函数名(参数表)const;说明:(1)const是函数类型的一部分,在实现部分也要带该关键字。(2)const关键字可以用于对重载函数的区分。(3)常成员函数不能更新类的成员变量,也不能调用该类中没有用const修饰的成员函数,只能调用常成员函数。(4)非常量对象也可以调用常成员函数,但是如果有重载的非常成员函数则会调用非常成员函数例子1,成员函.

2020-09-28 11:26:27 2520 1

原创 面经-C语言基础(二)

目录C 语言中全局变量、局部变量、函数参数个是在什么时候分配内存空间const符号表机制const的作用大小端模式关键字volatile有什么含意? 并给出三个不同的例子。#include 和#include “filename.h” 有什么区别?const 有什么用途?(请至少说明两种)如何引用一个已经定义过的全局变量?带参宏与带参函数的区别(至少说出5点)?数组名和指针的区别:关键字inline必须与函数定义放在一起才能使函数成为内联#if...

2020-09-28 10:56:27 889

原创 面经-C语言基础(一)

目录: 虚函数和纯虚函数 堆变量和栈变量 C/C++堆和栈的区别 逻辑地址和物理地址和虚拟内存 sizeof和strlen的区别: 如何判断new和malloc是否成功: 内存申请失败怎么办 C和C++的区别,C++11的新特性 什么是内存溢出/内存泄漏 c++中内存的五大区 内存的分配方式有哪几种 智能指针 野指针 static关键字 C++11中的四种类型转换 深入理解数据库索引采用B树和B+树的原因 顶层指针和底层指针 const 与 #define 的比较 ,

2020-09-28 10:48:20 3427

原创 并发和多线程(二) 线程启动、结束,创建线程多法、join,detach

第二节 线程启动、结束,创建线程多法、join,detach一、范例演示线程运行的开始程序运行起来,生成一个进程,该进程所属的主线程开始自动运行;当主线程从main()函数返回,则整个进程执行完毕 主线程从main()开始执行,那么我们自己创建的线程,也需要从一个函数开始运行(初始函数),一旦这个函数运行完毕,线程也结束运行 整个进程是否执行完毕的标志是:主线程是否执行完,如果主线程执行完毕了,就代表整个进程执行完毕了,此时如果其他子线程还没有执行完,也会被强行终止【此条有例外,以后会解释】

2020-09-28 09:37:49 108

原创 并发和多线程(一)并发、进程、线程概念

一、并发、进程、线程的基本概念和综述1.1 并发两个或者更多的任务(独立的活动)同时发生(进行):一个程序同时执行多个独立的任务; 以往计算机,单核cpu(中央处理器):某一个时刻只能执行一个任务,由操作系统调度,每秒钟进行多次所谓的“任务切换”。并发的假象(不是真正的并发),切换(上下文切换)时要保存变量的状态、执行进度等,存在时间开销; 随着硬件发展,出现了多处理器计算机:用于服务器和高性能计算领域。台式机:在一块芯片上有多核(一个CPU内有多个运算核心,对于操作系统来说,每个核心都是作.

2020-09-26 16:58:50 1085

原创 华为数通部门软开9.16凉经

一面:1h10min预约的2点,2:25之后开始。1.自我介绍,项目。2.说完然后直接题目发过来,题目大概是:有本词根的词典 “an me cat ”, 有个句子 “I was meeting another cattey”句子和词根都是小写字母用空格隔开 输出句子中所有单词的词根,有多个就输出最短的那个词根,没有的话按原单词输出。 这个例子输出就是 “Iwas me an cat”我一看有词典就用的前缀树写,写完之后面试官让我解释前缀树的结构struct,插入方法,搜索方法,还有main

2020-09-17 09:16:22 2391

原创 159.至多包含两个不同字符的最长子串

LeetCode】159.至多包含两个不同字符的最长子串(滑动窗口)原地址:https://www.jianshu.com/p/0625c4b074a6套模板写完。思路:使用一个数组int fre[256] 存储字符每个出现的 频率,初值均为0。定义整型变量 count 记录不同字符数量。当窗口右指针 r < s.size(),开始循环,窗口右移。新加入窗口的字符如果未出现过,count ++。然后更新频率 fre[s[r]]++。如果这时count值更新后大于2,说明当前窗口不满足要求了

2020-09-05 21:20:10 388

原创 C++单例模式的实现

首先单例要实现几个基本要求:1.全局只有一个实例:采用static特性可以实现。同时禁止用户自己声明并定义实例:把构造函数设为private。2.禁止复制和拷贝:拷贝构造函数和重载赋值函数不允许使用。3.线程安全的4.用户通过接口获取实例:使用static类成员函数/*************有缺陷的懒汉式**************1.线程安全问题,没有互斥2.内存泄漏 没有没有调用析构函数。************* *************/cl

2020-09-04 16:09:34 267

原创 并查集的理解和力扣例题

目录分析问题实质例题:婴儿名字||并查集并查集是一种树型的数据结构初始化:把每个点所在集合初始化为其自身。通常来说,这个步骤在每次使用该数据结构时只需要执行一次,无论何种实现方式,时间复杂度均为O(N)。查找:查找元素所在的集合,即根节点。合并:将两个元素所在的集合合并为一个集合。通常来说,合并之前,应先判断两个元素是否属于同一集合,这可用上面的“查找”操作实现。例题Description(题目描述)若某个家族人员过于庞大,要判断两个是否是亲戚,

2020-07-31 16:37:41 674

原创 树状数组 || 前缀树

树状数组:https://www.cnblogs.com/xenny/p/9739600.htmlhttps://www.cnblogs.com/yewanting/p/10801939.html理解要点一:树状树的结构是固定的,是由节点序号的二进制末尾0的个数决定的。下表:1,独立;2管辖1;3独立;4管辖123;5独立,6管辖5,7独立;8管辖1~7 结点号 二进制 结论 1 00001

2020-07-31 16:33:31 216

原创 程序员面试金典(二)||16题

目录面试题 08.04. 幂集递归乘法面试题 08.06. 汉诺塔问题面试题 08.09. 括号面试题 08.11. 硬币01背包问题完全背包问题多重背包问题混合背包问题背包问题求方案数面试题 10.02. 变位词组面试题 10.10. 数字流的秩不用临时变量交换两数最大数值井字游戏面试题 08.04. 幂集幂集。编写一种方法,返回某集合的所有子集。集合中不包含重复的元素。说明:解集不能包含重复的子集。//1.假设对于level...

2020-07-19 20:37:10 213

原创 程序员面试金典(一)||20题

目录#16.06 最小差#面试题 08.08. 有重复字符串的排列组合面试题 16.10. 生存人数面试题 02.06. 回文链表面试题 02.01. 移除重复节点面试题 02.07. 链表相交面试题 02.08. 环路检测面试题 01.04. 回文排列面试题 01.05. 一次编辑面试题 02.04. 分割链表面试题 02.05. 链表求和面试题 03.01. 三合一面试题 04.12. 求和路径面试题 04.06. 后继者面试题 05.0.

2020-07-19 20:25:41 580

原创 剑指offer刷题笔记(摘录主要重点)

目录剑指 Offer 07. 重建二叉树剑指 Offer 11. 旋转数组的最小数字剑指 Offer 12. 矩阵中的路径剑指 Offer 13. 机器人的运动范围剑指 Offer 14- I. 剪绳子剑指 Offer 16. 数值的整数次方剑指 Offer 24. 反转链表剑指 Offer 17. 打印从1到最大的n位数剑指 Offer 26. 树的子结构剑指 Offer 42. 连续子数组的最大和剑指 Offer 29. 顺时针打印矩阵剑指 Offer 3

2020-07-19 20:15:20 257

转载 const修饰函数参数时的重载

const修饰成员函数时的重载:根本原则是表示的参数是变量还是常量。void fun(const int i) { cout << "fun(const int) called "; } void fun(int i) { cout << "fun(int ) called " ; } int main() { const int i = 10; fun(i); return 0; }

2020-06-12 09:34:05 567

转载 背包九讲问题记录

背包九讲01背包问题01背包问题题目有N件物品和一个容量为V的背包。第iii件物品的费用是w[i]w[i]w[i],价值是v[i],求将哪些物品装入背包可使价值总和最大。基本思路这是最基础的背包问题,特点是:每种物品仅有一件,可以选择放或不放。用子问题定义状态:即f[i][j]f[i][j]f[i][j]表示前iii件物品恰放入一个容量为jjj的背包可以获得的最大价值。则其状态转移方程便是:f[i][j]=max(f[i−1][j],f[i−1][j−w[i]]+v[i])f[i][j]=ma

2020-05-30 11:15:01 130

原创 C++程序员面试题库(六)——操作系统

操作系统1、进程和线程的概念;为什么要有进程线程;进程和线程的区别;它们各自是怎么同步的2、并发和并行1、进程和线程的概念;为什么要有进程线程;进程和线程的区别;它们各自是怎么同步的  基本概念:  进程是对运行时程序的封装,是系统进行资源调度和分配的基本单位,实现了操作系统的并发。  线程是进程的子任务,是CPU调度和分派的基本单位,用于保证程序的实时性,实现进程内部的并发;线程是操作系统可识别的最小执行和调度单位,每个线程独自占有一个虚拟处理器:独自的寄存器组,指令计数器和处理器状态。进程中的每

2020-05-20 10:17:09 441

原创 C++程序员面试题库(一)——基本语法

文章目录1.C++语言1 什么是内存溢出2 c++中内存的五大区1.C++语言1 什么是内存溢出  内存溢出(Out Of Memory,简称OOM)是指应用系统中存在无法回收的内存或使用的内存过多,最终使得程序运行要用到的内存大于能提供的最大内存。此时程序就运行不了,系统会提示内存溢出。造成这种现象的原因通常有两种:  第一种是由于长期保持某些资源的引用,垃圾回收器无法回收它,从而使该...

2020-05-03 10:23:51 363

原创 关于for循环有多个条件时的书写规范

关于for循环有多个条件时的书写规范本人在做剑指offer(04)二维数组中查找的时候,用了for循环判断是否在数组中存在目标值。但因为存在两个条件所以用逗号隔开,问题就出在这个逗号了!!!(代码第9行)class Solution {public: bool findNumberIn2DArray(vector<vector<int>>& matr...

2020-04-25 20:55:21 3901

原创 C和C++中定义结构体struct的用法和区别

C/C++中struct的用法和区别定义方法:区别:

2020-04-24 11:05:56 1087

转载 关于getline和getchar注意的细节

关于getline和getchar注意的细节转自 :link#include#include<string.h>#includeusing namespace std;int main(void){string str;int n; cin >> n;getchar();while (n–) {getline(cin, str);cout <...

2020-03-26 09:33:52 419

空空如也

空空如也

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

TA关注的人

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