自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 优秀流程图和逻辑图画法的分析和借鉴

序言:我将下面这些优秀的流程图和逻辑图分为四大类,并简单分析了其中的画图思想和优点。最后列举了一些反例。大家若是需要画其中某一类的图,可以套用着画。所有的图片来自极客时间的《趣谈Linux操作系统》和小林coding的《图解系统》、《图解网络》。一、单者执行任务的时序图1、学习linux操作系统爬坡路线图斜向上的箭头表示逐步进阶。两种颜色的方框区分填写每个阶段的目标和需要的辅助书。起点和终点的两个小人表示进阶前后的变化。2. 父进程创建子进程图简单的文字在流程图旁做解释。方框把两种

2021-10-02 18:02:27 7156 1

原创 c++_类

成员属性设为私有的好处:自己控制读写权限,set和get函数;对于写权限,判断传入参数的有效性#include <iostream>using namespace std;class Person{public: string m_Name;protected: string m_Car;private: int m_Password;public: void func() { m_Name = "张三"; m_Car = "拖拉机"; m_Pa.

2021-01-18 22:59:34 188

原创 3.c++_函数

1.swap.h文件: 函数声明文件#include <iostream>using namespace std;void swap(int a, int b);2.swap.cpp文件:函数文件#include "swap.h"void swap(int a, int b){ int temp = a; a = b; b = temp; cout << "a = " << a << endl; cout << "b

2021-01-18 21:38:37 196

原创 2.c++_基础_地址和引用

指针的定义 int a = 10; // 指针定义的语法;数据类型 * 指针变量 int* p; // 让指针记录变量a的地址 p = &a; cout << "a的地址为:" << &a << endl; cout << "指针p为:" << p << endl;使用指针 // 可以通过解引用的方式找到指针指向的内存 // 指针前加 * 代表解引用,找到指针指向的内存中的数据 *.

2021-01-18 21:38:23 420

原创 1.c++_基本语句编写_主函数_基本变量_基本操作语句_基本结构语句

输出输入流库,std标准表达,方便count输出cout << "请给整型变量a复制:" << endl;#include<iostream>using namespace std;主函数为int main() { return 0; /* 程序返回*/}基本变量char str[] = "hello word";string str2 = "hello";float f = 3.14f;char ch = 'a';bool .

2021-01-18 21:33:47 140

原创 平抛运动讲课2

同学们好!今天我们来学习平抛运动。希望同学们学完这节课后,能够掌握处理曲线运动的方法,—— 那就是运动的合成与分解。上课之前,我们做几个实验,大家观察小球运动的曲线以及小球初始速度。第一个实验:来,请这位同学把抛给我。大家观察到小球的运动轨迹是…一条曲线,小球运动的初始速度相对于水平线是…倾斜的。我把小球刚刚做的运动叫做斜抛运动。第二个实验:老师让小球沿着桌面飞出去。大家观察到小球的运动轨迹依然是…一条曲线,小球运动的初始速度相对于水平线是…水平的。我把小球刚刚做的运动叫做平抛运动。第三

2020-10-27 20:57:55 426

原创 130. 被围绕的区域

130. 被围绕的区域给定一个二维的矩阵,包含 ‘X’ 和 ‘O’(字母 O)。找到所有被 ‘X’ 围绕的区域,并将这些区域里所有的 ‘O’ 用 ‘X’ 填充。示例:X X X XX O O XX X O XX O X X运行你的函数后,矩阵变为:X X X XX X X XX X X XX O X X解释:被围绕的区间不会存在于边界上,换句话说,任何边界上的 ‘O’ 都不会被填充为 ‘X’。 任何不在边界上,或不与边界上的 ‘O’ 相连的 ‘O’ 最终都会被填充为 ‘X’。如果

2020-10-05 12:05:04 71

原创 leetcode_733_图像渲染

733_图像渲染有一幅以二维整数数组表示的图画,每一个整数表示该图画的像素值大小,数值在 0 到 65535 之间。给你一个坐标 (sr, sc) 表示图像渲染开始的像素值(行 ,列)和一个新的颜色值 newColor,让你重新上色这幅图像。为了完成上色工作,从初始坐标开始,记录初始坐标的上下左右四个方向上像素值与初始坐标相同的相连像素点,接着再记录这四个方向上符合条件的像素点与他们对应四个方向上像素值与初始坐标相同的相连像素点,……,重复该过程。将所有有记录的像素点的颜色值改为新的颜色值。最后返回

2020-10-02 11:52:13 134

原创 39. 组合总和

39. 组合总和给定一个无重复元素的数组 candidates 和一个目标数 target ,找出 candidates 中所有可以使数字和为 target 的组合。candidates 中的数字可以无限制重复被选取。说明:所有数字(包括 target)都是正整数。解集不能包含重复的组合。示例 1:输入:candidates = [2,3,6,7], target = 7,所求解集为:[[7],[2,2,3]]示例 2:输入:candidates = [2,3,5], targe

2020-09-22 09:48:09 217

原创 78. 子集_39. 组合总和_46. 全排列

78. 子集给定一组不含重复元素的整数数组 nums,返回该数组所有可能的子集(幂集)。说明:解集不能包含重复的子集。示例:输入: nums = [1,2,3]输出:[[3],[1],[2],[1,2,3],[1,3],[2,3],[1,2],[]]class Solution { public List<List<Integer>> subsets(int[] nums) { // 第一层,可选3个 // 第

2020-09-22 09:47:16 113

原创 leetcode_78. 子集

78. 子集给定一组不含重复元素的整数数组 nums,返回该数组所有可能的子集(幂集)。说明:解集不能包含重复的子集。示例:输入: nums = [1,2,3]输出:[[3],[1],[2],[1,2,3],[1,3],[2,3],[1,2],[]]求子集是全集的一部分:讨论全集的每一个元素是否在子集中,求所有子集。转换为代码:每一个数选与不选。也可以理解为全集的每一个元素在不在子集中。每一步:选不选全集中的数叶子节点就是答案,为了得到叶子节点,可以使用深度优先搜索或

2020-09-20 10:39:11 96

转载 elasticserach

原文链接:https://zhuanlan.zhihu.com/p/62892586微信公众号:芋道源码里的文章。elasticsearch原理反向索引。加入我要根据一个关键字去查找文档,由于没有关键字到文档这种索引。我只能从1号文档遍历到最后一个文档,看文档中有没有关键字。但是如果我将文档进行分词,以这些分词作为key, 文档的位置作为value,就可以直接通过key去找到value了。elasticserach重要组成部分索引,类型,文档索引:理解为mysql的数据库。存放数据的地

2020-09-18 16:13:35 284

转载 RabbitMQ

原文连接https://zhuanlan.zhihu.com/p/84007327 芋道源码RabbitMQ有什么功能?解耦,异步,削峰1.解耦假设用户微服务想要发送短信,如果没有消息队列,则要调用发送短信微服务提供的API,万一接口逻辑修改,我还要修改调用API的逻辑。有了消息队列,我就只需要将发送短信给谁的消息传递给消息队列,短息微服务监听消息,取出消息,发送短信。这样,用户微服务就不用关心发送短信的API,只需要将发送人和发送信息给消息队列。2.异步如果调用发送短息AP

2020-09-18 14:36:40 371

原创 华为面经

计算机网络部分的TCP连接时客户端出现故障怎么处理TCP还设有一个保活计时器,显然,客户端如果出现故障,服务器不能一直等下去,白白浪费资源。服务器每收到一次客户端的请求后都会重新复位这个计时器,时间通常是设置为2小时,若两小时还没有收到客户端的任何数据,服务器就会发送一个探测报文段,以后每隔75秒钟发送一次。若一连发送10个探测报文仍然没反应,服务器就认为客户端出了故障,接着就关闭连接。TCP通信时如果一直超时丢包的话程序里可以怎么处理这种情况快速重传和快速恢复算法,这是数据丢包的情况下给出的一种修补

2020-09-15 09:36:03 355

转载 动态链接库和静态链接库

什么是库?库是已经写好的,可以复用的代码。每个程序都依赖于很多基础的底层库,不可能每个人的代码都从零开始。本质是可执行代码的二进制形式,可以不经过编译直接载入内存执行。分为静态库(.a、.lib)和动态库(.so、.dll)。编译过程:静态库和动态库的区别?静态库-静态库在链接阶段,会将汇编生成的目标文件.o与其中引用到的库一起链接打包到可执行文件中,成为静态链接。特点:静态库对数据的链接是在编译时期完成。因为引用到的静态数据库被复制了一份,程序在运行时与函数库再无瓜

2020-09-14 08:20:37 127

原创 leetcode_56. 合并区间

56. 合并区间给出一个区间的集合,请合并所有重叠的区间。示例 1:输入: intervals = [[1,3],[2,6],[8,10],[15,18]]输出: [[1,6],[8,10],[15,18]]解释: 区间 [1,3] 和 [2,6] 重叠, 将它们合并为 [1,6].示例 2:输入: intervals = [[1,4],[4,5]]输出: [[1,5]]解释: 区间 [1,4] 和 [4,5] 可被视为重叠区间。贪心算法 // 一个一个遍历 // max

2020-09-08 17:26:02 98

原创 leetcode_55. 跳跃游戏

55. 跳跃游戏给定一个非负整数数组,你最初位于数组的第一个位置。数组中的每个元素代表你在该位置可以跳跃的最大长度。判断你是否能够到达最后一个位置。示例 1:输入: [2,3,1,1,4]输出: true解释: 我们可以先跳 1 步,从位置 0 到达 位置 1, 然后再从位置 1 跳 3 步到达最后一个位置。示例 2:输入: [3,2,1,0,4]输出: false解释: 无论怎样,你总会到达索引为 3 的位置。但该位置的最大跳跃长度是 0 , 所以你永远不可能到达最后一个位置。最

2020-09-08 15:28:07 84

原创 leetcode_66. 加一

leetcode_66. 加一给定一个由整数组成的非空数组所表示的非负整数,在该数的基础上加一。最高位数字存放在数组的首位, 数组中每个元素只存储单个数字。你可以假设除了整数 0 之外,这个整数不会以零开头。示例 1:输入: [1,2,3]输出: [1,2,4]解释: 输入数组表示数字 123。示例 2:输入: [4,3,2,1]输出: [4,3,2,2]解释: 输入数组表示数字 4321。方法一:扩容只会有一种情况:全是9,所以如果有扩容的情况,则只需重新生成一个长度为len

2020-09-08 11:34:36 110

转载 IP协议

IP是什么?IP是一张身份证,只有设备能联网,就会有一个IP地址,电脑,手机,监控摄像头,汽车。网络设备通信的身份号。IP协议是什么?IP是可以被追踪到的和定位的。IP协议原理是什么?举个数据传输例子来说明,PC1访问PC2:PC1在请求数据包里封装源目IP地址,将带有IP地址的数据包发送到互联网。路由器根据数据包的IP地址查找路由表(地图),然后中转给下一个目标服务器。服务器收到请求数据后,将源目IP地址调换,封装回应数据包发送到互联网。知识点:IP协议提供了IP地址

2020-09-04 17:06:15 260

原创 商品详情页页面静态化

为什么要使用页面静态化因为商品详情页的数据太多,需要后台大量查询数据,渲染到HTML页面,造成数据库压力。怎么解决?Redis,适合数据较小的,如果每个页面10kb, 100万个商品,就是10GB空间,占用内存大。什么是页面静态化?把动态生成的HTML变为静态的内容保存,以后用户请求到来,直接访问静态页面,不用经过服务的渲染。静态的HTML部署在nginx中,大大提高并发能力,减小tomcat压力。如何实现静态化?通过模板引擎生成,保存到nginx服务器来部署。Thymele

2020-09-03 20:39:25 1034

原创 leetcode_13. 罗马数字转整数

13. 罗马数字转整数罗马数字包含以下七种字符: I, V, X, L,C,D 和 M。字符 数值I 1V 5X 10L 50C 100D 500M 1000例如, 罗马数字 2 写做 II ,即为两个并列的 1。12 写做 XII ,即为 X + II 。 27 写做 XXVII, 即为 XX + V

2020-09-02 15:01:29 116

原创 227. 基本计算器 II

227. 基本计算器 II实现一个基本的计算器来计算一个简单的字符串表达式的值。字符串表达式仅包含非负整数,+, - ,*,/ 四种运算符和空格 。 整数除法仅保留整数部分。示例 1:输入: “3+2*2”输出: 7示例 2:输入: " 3/2 "输出: 1示例 3:输入: " 3+5 / 2 "输出: 5总思路:把 *, / , - 都先计算出来,放到stack里,最后把stack里的数全部相加就是结果。 // 遍历s的每个字符,如果是数字,和后面继续组成数字tempN

2020-08-31 11:27:01 163

原创 387. 字符串中的第一个唯一字符_451. 根据字符出现频率排序

387. 字符串中的第一个唯一字符给定一个字符串,找到它的第一个不重复的字符,并返回它的索引。如果不存在,则返回 -1。示例:s = “leetcode”返回 0s = “loveleetcode”返回 2 // 遍历字符,用hashmap存储字符和位置 // 但无法知道那个是第一个 // 换个思路。用hashmap存储字符和频率 // 再从头开始遍历数组,map得到的频率是1就返回i // 因为是从头遍历到尾,所以返回的肯定是第一个class So

2020-08-27 17:02:14 141

原创 49. 字母异位词分组_242. 有效的字母异位词_438. 找到字符串中所有字母异位词

49. 字母异位词分组给定一个字符串数组,将字母异位词组合在一起。字母异位词指字母相同,但排列不同的字符串。示例:输入: [“eat”, “tea”, “tan”, “ate”, “nat”, “bat”]输出:[[“ate”,“eat”,“tea”],[“nat”,“tan”],[“bat”]]说明:所有输入均为小写字母。不考虑答案输出的顺序。怎么区分,怎么分类,字符,字符个数都相等的,才叫一类,注意,出现的是字符串,依次访问字符串,还是不知道怎么区分。思路

2020-08-27 15:26:39 140

原创 操作系统核心知识点

进程/线程/协程进程间通信进程间调度内存管理IO模型内存管理1.扫盲篇1.1 操作系统存储层次计算机存储层:寄存器:CPU中,读写ns级,容量字节级。缓存:CPU和CPU间的缓存,读写10ns级,容量百到千字节主存:动态内存,读写100ns级,容量GB外部存储介质:磁盘,SSD,读写ms级,容量TB级。总结1.什么是操作系统运行在计算机上的软件程序。分为内核和外壳,内核能直接操作硬件的程序,管理进程,文件,网络。外壳是围绕着内核的应用程序。2. 什么是系统调用?运行在用

2020-08-22 16:46:53 560

原创 面试笔试经典

一、生产者消费者模式思路:两类线程:生产者线程生产共享数据,消费者线程消费共享数据。当共享数据满时,阻塞生产者继续生产数据放置入内;当共享数据为空时,阻塞消费者继续消费数据。1.使用Object的wait/notify的消息通知机制;2.使用Lock的Condition的await/signal的消息通知机制。注意点:1. while(条件判断) ,2. wait() / notifyAll() await() / signalAll()模板:// The standard idio

2020-08-22 16:42:37 106

原创 JVM面试

垃圾回收算法,介绍一下垃圾-清理算法如何标记的,两种标记算法root节点如何选取的呢堆和栈的区别Java的GC如何实现的,介绍一下GC算法?说一下GC算法?G1和CMS分别是什么,区别?Java运行时数据结构与内存模型?堆和栈保存的内容?栈空间在什么时候进行回收?Java的栈大小是多少?能不能把栈中的数据都分配在堆上?什么时候进行full GC?GC为什么要分代?6、jvm数据区域...

2020-08-22 16:38:19 59

原创 76.最小覆盖子串_567.字符串排列_438.找所有字母异位词_3.最长无重复子串_209. 长度最小的子数组

76. 最小覆盖子串给你一个字符串 S、一个字符串 T 。请你设计一种算法,可以在 O(n) 的时间复杂度内,从字符串 S 里面找出:包含 T 所有字符的最小子串。示例:输入:S = “ADOBECODEBANC”, T = “ABC”输出:“BANC”...

2020-08-21 23:25:19 126

原创 面试

原文链接算法 leetcode数据结构平衡二叉树,红黑树,哈希表,堆,捅,图,这些结构用数组和链表的方式分别去创造下,自己实现下,增量因子设置多大,为什么要那么大什么的破烂问题也要关注。计算机网络这个搞懂几个层是啥,TCP/IP的三次握手,四次挥手过程,为什么要这样设计,抓包怎么抓,基本还好了。操作系统《操作系统――精髓与设计原理》内存分配、调度、进程、线程这几个点,着重理解下数据库会写sql,几大范式定义概念搞懂,数据库事务的ACID隔离层级分别保障的粒度,和依然存在的问题你得知

2020-08-21 21:21:31 100

原创 多线程面试题_1.三个线程依次打印ABC...2.两个线程交替打印AB,3.生产者消费者,4.写一个死锁程序

Q:(手写算法)用三个线程,线程“1”,“2”, “3”,顺序打印字母A-Z,输出结果是1A、2B、3C、1D 2E… ?方法1package com.nancy.base;public class PrintABC { private static char c = 'A'; private static int i = 0; public static void main(String[] args) { Runnable runnable = n

2020-08-20 16:38:54 394

原创 ThreadLocal数据结构,ThreadLocalMap中的key是弱引用,内存泄漏?场景

1.ThreadLocal简介:ThreadLocal:每一个线程都有自己的专属本地变量,让每一个线程绑定自己的值,ThreadLocal类可以比喻为存放数据的盒子,盒子中存储每个线程的私有数据。创建一个ThreadLocal变量,那么访问这个变量的每个线程都还有这个变量 的本地副本。通过get()和set()方法获取默认值或将其值更改为当前线程所存的副本的值,避免线程安全问题。2.ThreadLocal示例https://www.zhihu.com/search?type=content&

2020-08-18 22:11:52 1068

原创 抽象类与接口的区别

抽象类与接口的区别抽象类是对类的抽象,是不是;而接口是对行为方法的抽象,有没有。比如:男人,女人可以抽象出一个更高级别的抽象类 —— 人。一个类只能继承一个抽象类,比如人不可能既是生物,又是非生物。游泳有很多种方法,用蛙泳,自由泳,蝶泳,将游泳动作抽象为一个游泳接口。一个类可以实现很多接口,如人可以实现开车,游泳等接口。当你关注事物本质时,用抽象类,当你关注一种操作方法时,用接口。参考:https://www.zhihu.com/question/20149818

2020-08-17 20:45:06 147

原创 八种基本数据类型与各占字节,int的范围

八种基本数据类型与各占字节,int的范围byte,short,int,long:1, 2, 4, 8float,double: 4, 8boolean: 1位char:2int: -128 - 127 -2^ 31- 2^31 - 1-2147483648——2147483647

2020-08-17 20:01:12 192

原创 多态,继承,封装

封装:合并一个类的特征和行为,封装成一个类,将细节私有化。继承:多态:为什么要有多态, 多态的目的,特性,好处?多态一般用在方法的参数中。是为了方便扩展。通过例子说明:例子:定义一个动物器类Animal, eat()方法。猫Cat类和狗Dog类继承Animal类,覆写eat()方法。人Person类, void play(Animal am), 撸动物方法规定普通方法调用绑定,即动态后期绑定:对于吃饭eat()这个方法,没有一个统一的方法。猫吃鱼,狗吃骨头,只有具体是什么对象时

2020-08-17 19:31:07 146

原创 异常处理

什么是异常?检查性异常和非检查性异常检查性异常和非检查性异常的区别?检查型异常必须使用try…catch,或throws关键字处理,否则编译器会报错,继承自java.lang.Exception;如:输入输出异常,文件不存在异常。非检查性异常一般是代码不够严谨导致的,继承自java.lang.RuntimeException。如:空指针异常,数组越界异常。throw与throws区别?throw抛出异常throws,用在方法上,声明该方法可能抛出异常,该方法里不用强制性处理异常。

2020-08-17 16:58:12 60

原创 leetcode_91. 解码方法

91. 解码方法一条包含字母 A-Z 的消息通过以下方式进行了编码:‘A’ -> 1‘B’ -> 2…‘Z’ -> 26给定一个只包含数字的非空字符串,请计算解码方法的总数。示例 1:输入: “12”输出: 2解释: 它可以解码为 “AB”(1 2)或者 “L”(12)。示例 2:输入: “226”输出: 3解释: 它可以解码为 “BZ” (2 26), “VF” (22 6), 或者 “BBF” (2 2 6) 。状态dp[i]: 到位置i为止的编码数

2020-08-17 11:07:11 102

原创 leetcode_44. 通配符匹配_1143. 最长公共子序列_718. 最长重复子数组 _300.最长上升子序列_

44. 通配符匹配给定一个字符串 (s) 和一个字符模式 § ,实现一个支持 ‘?’ 和 ‘*’ 的通配符匹配。‘?’ 可以匹配任何单个字符。‘*’ 可以匹配任意字符串(包括空字符串)。两个字符串完全匹配才算匹配成功。说明:s 可能为空,且只包含从 a-z 的小写字母。p 可能为空,且只包含从 a-z 的小写字母,以及字符 ? 和 *。示例 1:输入:s = “aa”p = “a”输出: false解释: “a” 无法匹配 “aa” 整个字符串。示例 2:输入:s = “aa

2020-08-16 10:45:27 150

原创 leetcode718. 最长重复子数组

718. 最长重复子数组给两个整数数组 A 和 B ,返回两个数组中公共的、长度最长的子数组的长度。示例:输入:A: [1,2,3,2,1]B: [3,2,1,4,7]输出:3解释:长度最长的公共子数组是 [3, 2, 1] 。class Solution { public int findLength(int[] A, int[] B) { int n = A.length, m = B.length; int[][] dp = new int[n

2020-08-15 21:47:10 75

原创 leetcode_230_二叉搜索树中第K小的元素_94. 二叉树的中序遍历_671. 二叉树中第二小的节点

leetcode_230_二叉搜索树中第K小的元素给定一个二叉搜索树,编写一个函数 kthSmallest 来查找其中第 k 个最小的元素。说明:你可以假设 k 总是有效的,1 ≤ k ≤ 二叉搜索树元素个数。示例 1:输入: root = [3,1,4,null,2], k = 13/ 1 42输出: 1示例 2:输入: root = [5,3,6,2,4,null,null,1], k = 35/ 3 6/ 2 4/1输出: 3中序遍历,依次弹出

2020-08-15 21:44:45 1474 1

转载 leetcode_59. 螺旋矩阵 II

59. 螺旋矩阵 II给定一个正整数 n,生成一个包含 1 到 n2 所有元素,且元素按顺时针顺序螺旋排列的正方形矩阵。示例:输入: 3输出:[[ 1, 2, 3 ],[ 8, 9, 4 ],[ 7, 6, 5 ]]大佬讲解class Solution { public int[][] generateMatrix(int n) { int l = 0, r = n - 1, t = 0, b = n - 1; int[][] mat = ne

2020-08-15 11:48:44 83

空空如也

空空如也

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

TA关注的人

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