自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

MyWang的博客

UoN在读程序员

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

原创 【无标题】

这里写自定义目录标题欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入欢迎使用Markdown编辑器你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Mar

2022-01-27 22:41:43 134

原创 Leetcode - 滑动窗口 - 高频06 - 1052. 爱生气的书店老板

思路:读完题目一定要搞清楚要求的东西是需要怎么组成,最大的满意度 = 老板不生气的时间点的满意度总和(也就是grumpy[i] == 0的所有位置的满意度) + 在window时间内生气的老板会导致流失的最多满意度。统计不生气时间点满意度总和很容易再利用滑动窗口计算老板生气时刻grumpy[i] == 1,窗口内最大的满意度是多少,稍微比滑动窗口最大值更简单一点。class Solution { public int maxSatisfied(int[] customers, int[]

2021-04-11 20:00:52 116

原创 计算机网络-QuickScan-05-UDP

UDP协议介绍全称:UDP(user datagram protocol):用户数据包协议定义:在传输层直接提供发送报文的能力,Datagram是数据传输的最小单位。目标:发送报文,无法拆分数据。既然是发送报文,为什么不直接使用IP协议发送?IP协议只能将数据从一个网络接口发送到另一个网络接口(网卡到网卡),无法传输层完成host-to-host的任务(也就是无法寻址应用,没有记录端口号)。并且IP协议没有地方记录端口号,无法到达应用。UDP的封包格式UDP vs TCP聊天室场景分析

2021-04-03 22:33:30 127

原创 计算机网络-QuickScan-03-IPv4

1. 基本概念IP协议:网络层协议网络层上层协议是传输层协议(解决host-to-host问题,保证可靠性)网络层下层是链路层协议(解决局域网内部数据传输问题device-to-device)2. IP协议可能遇到的问题封包损坏:数据发生了损坏丢包:数据传输中发生了丢失重发:某个路由器拷贝了两份,最终都到了目的地。乱序:IP协议不处理乱序问题3. 网络层需要解决的三个问题三个问题没办法同时兼得。延迟吞吐量丢包量4. IP协议的工作原理4.1 分片不想切片的话,底

2021-04-02 23:05:25 124

原创 Leetcode - 滑动窗口 - 高频03 - 剑指 Offer 48. 最长不含重复字符的子字符串

这题目是简化版的最小覆盖子串 ,基本上思路是一致的,右指针移动,根据右指针碰到的情况来考虑是否移动左指针和计算结果。二刷最小覆盖子串的时候会写一下blog。class Solution { public int lengthOfLongestSubstring(String s) { char[] map = new char[128]; // current char in the window int count = 0; /

2021-04-01 13:22:03 70

原创 Java-多线程与高并发-(一)线程与锁的基本概念

1. 线程与锁的基本概念1.1 Join方法T1线程调用t2.join的意思是,t1让出CPU执行,让t2执行,t2执行结束后再继续执行t1.可以用来顺序执行三个线程,t1.join, t2.join, t3.join,依次执行。线程结束后,不能再调用start方法。 Synchronized会blockedsynchronized对象锁在hotspot是通过对象头64位中的2位来表示是否对象上锁。1.2 可重入锁:synchronized是可重入锁,同一个线程下获取相同的锁。父类一个m方法

2021-03-31 19:17:26 59

原创 计算机网络-QuickScan-02-TCP协议

1. 概述TCP是一个可以提供可靠的,支持全双工,连接导向的协议,因此在客户端和服务端之间传输数据的时候,是必须先建立一个连接的。2. TCP的特点2.1 什么是连接?是虚拟,抽象的概念。并没有一个连接在物理层,只是在两个程序来接收消息。能让两个通信的程序间确保彼此都在线。加快请求的响应速度连接也称为session(会话)使通信更稳定,安全消耗更多资源2.2 什么是全双工?单工:任何时刻数据只能单向传递半双工(一条线路也够用,多线路多速度):允许数据在两个方向上传输。但是某一时

2021-03-31 02:43:29 235

原创 计算机网络-QuickScan-01-互联网协议群

互联网协议群(TCP/IP协议群)OSI并没有给出实现,TCP/IP是一份可行的方案。1. TCP/IP需要解决5个问题报文拆分增加协议头数据在相邻设备间传输路由和寻址数据重组1.1 报文拆分数据量大,网络底层设备不支持复用路径1.2 增加协议头数据分块后,在接收端需要重组,所以需要使用头部来添加一些描述字段。Payload也是指的Body。头部需要放置信息关于:发给哪个主机,发给主机的哪个应用?1.3 数据在相邻设备间传输网络边界:网吧,公司内部网络网络内部,

2021-03-31 01:59:07 154

原创 Leetcode滑动窗口系列-3. 无重复字符的最长子串

Summary滑动窗口还是需要练习个10道题目才比较容易上手。我的思路我的滑动思路:举例abcbb,先说过程,开始left指针为0,右指针也为0,右指针不断右移,直到右指针遇到HashSet中有重复的字符,沿途遇到的所有char都加入HashSet。abc会进入HashSet遇到右指针遇到的相同的char是b,那么在去除重复元素和添加新的b之前,就需要结算一下。结算后,那么就让左指针一直滑动直到HashSet不包含b,也就是滑动到c的位置,再继续右指针滑动。class Solution {

2021-03-29 10:48:28 77

原创 C++ 拷贝构造函数声明必须为引用形式

如下代码中拷贝构造函数,必须加const并且使用引用的原因:使用const防止用来copy的这个mat1被其他函数修改。避免将临时对象绑定到非const引用上。这个举个例子在说啥,例如按值返回,会有时候是临时对象,这个返回值就不能复制到非const引用。使用引用的原因:假设不使用引用,使用传值。那么就需要先创建mat1这个复制的值用来传入拷贝构造函数,结果是要复制这个值又需要拷贝构造函数,使用拷贝构造函数需要mat1 -> mat1按值传递,又需要拷贝构造函数来创造mat1 -&gt

2021-03-15 16:43:57 550

原创 2021-02打卡Java学习

目前学习内容Java分布式针对火箭技术栈,参考plan.md一个一个往后复习 并发&JVM MySQL HashMap。。。后面参考plan.md2021-02-14ElasticSearch—初步检索,增(索引一个文档)删改查(put,delete,update(POST),get),bulk批量API执行操作。...

2021-02-14 23:55:31 130 2

原创 2021-2月刷题打卡

Sunday14 Feb 202101-递归实现二叉树遍历-这个挺简单的,主要是感受递归的思想02-非递归实现二叉树遍历中序遍历很值得重新做一次,有个小坑吧。后序遍历就是两个stack的方式,利用头右左逆序。还有一个只用一个stack的方式来遍历,值得再看看。...

2021-02-14 21:47:42 138

原创 MIT-6.s081-Lab: file system

第一问就不写了,其他博客也有提到。说说第二问吧,要做soft link。实质上是给file层提供一个新的inode类型,就是SYMLINK的类型,这个inode的data block存储指向的文件的路径。比如对/usr/testfile.c创建soft link,/usr/mytest/softlink用来作为软连接指向前面的c文件。当我们访问/usr/mytest/softlink的时候实际上底层打开的文件描述符指向的是c源文件。主要就是完成系统调用symlink的编写和sysopen的修改:sym

2021-01-26 16:52:18 740

原创 Linux指令速查

Linux指令如果只靠背,太难了。不如每次看到就记录一下,把这里当作一个redis缓存。每次需要就查一下,如果没有就添加。soft link和hard link区别:这篇博客使用快捷方式来比喻soft link很形象生动,而且最后也讲解了hard link底层就是inode被多个文件名引用。https://www.cnblogs.com/mr-wuxiansheng/p/12906548.htmlcp:cp (复制目录,或文件)cp -p:-p :连同档案的属性一起复制过去,而非使用预设属性;

2021-01-25 22:47:15 92

原创 MIT-6.s081-CodeWalk-fs.c&file.c&sysfile.c

balloc要分配一个新的block,就需要根据bitmap了解block的free/allocated情况。因此,可以遍历data block,对于每一个data block查看是否是free,如果是就直接返回这个block就可以了。在Xv6中,每个data block都去查找一次bitmap block这样效率其实很低,因为data block只是bitmap block的one bit,这时候如果正好把整个bitmap block的所有bits都检查一遍,效率很提升很多。下面代码中,外层循环b表

2021-01-22 01:45:11 480

原创 算法知识点-排序算法总结

排序算法总结

2021-01-20 20:26:55 259 2

原创 算法知识点-排序-桶排序

Notes:在面试过程中,除非明显声明,一般时间复杂度都是基于比较的排序。桶排序桶排序是一种排序的思想,它指的是不基于比较的排序,而是利用桶来完成排序的工作,之前介绍的冒泡,选择,插入,快排,堆排序都是基于比较的排序。桶排序有很多种实现,包括计数排序,基数排序等,时间复杂度为O(N)O(N)O(N),额外空间复杂度为O(M)O(M)O(M),空间复杂度具体取决于桶排序的实现方式。尽管桶排序在时间复杂度上看似很优秀,可以达到O(N)O(N)O(N),但是应用范围很有限,需要样本的数据状况满足桶的划分。

2021-01-20 20:01:34 229

原创 算法知识点—前缀树

为什么要有前缀树查询一个字符串是否在一个字符串数组出现多少次,可以使用哈希表保存字符串。但是如果想要查询以he开头的字符串有多少个的时候,哈希表是不支持这样的查询的。如果使用暴力方法,直接对字符串数组中每个字符串进行遍历,时间复杂度会达到O(N∗K)O(N * K)O(N∗K),K为前缀长度。看似这个还是可以接受的,毕竟O(N)O(N)O(N)的时间复杂度本身已经挺小的,但是前缀树可以让时间复杂度接近常数O(K)O(K)O(K)。那么下面就介绍一下什么是前缀树,如何建立(插入)前缀树,如何查询某个字

2021-01-18 19:59:33 1006

原创 DMS Exam Prep

文章目录UML Diagram ComparisionOO conceptDev Maintainable SoftwareCoding ToolsDesign Principles and PatternsOO conceptsOO Design PrinciplsOO Design PatternSOLID PrinciplesRefactoringRefactoring Process:Some codes smellsTypes of refactoringOpen SourceUML Diagr

2020-12-31 10:22:33 144

原创 内存管理的选择01

An operating system needs to be chosen to run on a server. Many processes will execute concurrently each of which may contain programs with sparse data structures and stacks and heaps of unknown, but potentially very large size. The processes will requi.

2020-12-28 20:47:10 89

原创 User-level and kernel-level thread comparison and which one to choose in what circustance

What are the two advantages that threads have over multiple processes? [2 marks]Inter-thread communication is easier/faster than inter-process communication.Threads incur less overhead to create/terminate/switchWhat are the differences between user-.

2020-12-28 20:17:16 155

原创 调度算法选择题目01

A computer system is mainly used for non-interactive work where jobs (processes) arrive randomly, persist until completed and then leave the system. There may be many processes that need scheduling concurrently. Describe two process scheduling algorith..

2020-12-28 20:00:17 273

原创 问题解决:Git Push远程已经有人提前更改过你push的分之

问题描述:对本地代码修改后,已经完成git add,git commit后,使用git push提示远程已被修改,需要pull下来。解决问题:需要先git pull,获取到绑定的远程分支的最新commit,git pull会自动merge远程分支到本地当前分支,如果出现冲突,会提示fix conflict的地方,修改后,重新git add,git commit,git push。这样就解决了。Git fetch和git pull的区别在于:git fetch拉去远程分支的数据到本地仓库,并不会自动合.

2020-12-27 21:48:13 1840

原创 Lec6: 代码重构技巧

重构的定义:重构只改变内部结构,不改变外部行为(对外部原本是怎么样现在依旧是怎么样)。代码层级的重构使用空格,让代码可读性提升。对于一个方法移除不再使用的代码dead code移除重复代码重复代码很多时候idea都可以检测到。但是更多的是逻辑的重复,例如对于一个int的排序方法和另一个对于object的排序方法,这两个方法是重复的。Creating a template method eliminates this duplication by merging th

2020-11-07 17:32:36 75

原创 SpringBoot getResourceAsStream 返回 null

为了读取src/main/resources/level下的SampleGame.skb,必须使用level/SampleGame.skb。如果使用/level/SampleGame.skb会使用导致in = null,无法读取。如果把SampleGame.skb直接放在src/main/resources/下,对应的应该是getResourceAsStream("SampleGame.skb"); void loadDefaultSaveFile(Stage primaryStage) {.

2020-10-31 21:42:49 1733

原创 2020尚硅谷JavaWeb(一):前端部分

JavaWeb一、JavaScript1、引入js2、变量3.关系(比较运算)4.逻辑运算5.数组6.函数定义(重点)6.1 函数定义的两种方式6.2 函数的arguments隐形参数7. JS中的自定义对象7.1 Object形式的自定义对象7.2 {}花括号形式的自定义对象8. js中的事件8.1 常用的事件8.2 事件的注册8.3 onload事件8.4 onclick事件8.5 onblur事件8.6 onsubmit事件一、JavaScript1、引入jsJS是弱类型语言(类型可变)特点

2020-09-03 17:29:04 1036 1

原创 MySQL高级一、综述& Indexes

MySQL高级:Overview1. mysql的架构介绍2. **索引优化分析(重点)**3. 查询截取分析4. Mysql锁机制5. 主从复制Overview1. mysql的架构介绍1. Mysql简洁2. MysqlLinux版安装3. mysql配置文件4. mysql逻辑架构介绍5. mysql存储引擎2. 索引优化分析(重点)1. 性能下降SQL慢,执行时间长,等待时间长2. 常见通用的Join查询3. **索引简介**4. **性能分析**5. **索引优化**

2020-08-10 20:33:11 88

原创 十,十一,十二:变量、存储过程和函数、流程控制结构

变量,存储过程和函数,流程控制函数十、变量1. 系统变量1.1 全局变量1.2 会话变量2. 自定义变量2.1 用户变量2.2 局部变量3. 对比用户变量和局部变量十一、存储过程和函数1. 存储过程1.1 创建语法1.2 调用语法1.3 空参的存储过程1.4 带in模式的存储过程1.5 带out模式的存储过程1.6 带inout模式的存储过程1.7 存储过程的删除1.8 存储过程的查看2. 函数2.1 函数的介绍2.2 函数的创建和调用2.2.1函数的创建2.2.2函数的调用2.3 函数的查看和删除十二、流

2020-08-10 20:23:00 145

原创 九、视图

视图View Overview(含义,应用场景)1. 创建视图View2. 修改视图3. 删除View4. 查看视图5. 视图的更新1. 插入2. 更改3. delete4. 不允许更新的view6. 视图和表的对比View Overview(含义,应用场景)含义:虚拟表,和普通表一样使用。mysql5.1版本出现的新特性,是通过表动态生成的数据。只保存了sql逻辑,不保存查询结果。比如:舞蹈班级和普通班级的对比。应用场景:多个地方用到同样的查询结果;该查询结果使用的sql语句较复杂栗子# 查询姓

2020-08-10 11:31:51 123

原创 八、MySQL中TCL语言(Transaction Control Language事务控制语言)

MySQL中TCL语言

2020-08-08 13:04:01 173

原创 七、MySQL中DDL语言(数据定义语言)

MySQL中DDL语言(数据定义语言)一、库的管理1.库的创建2.库的修改3.库的删除二、表的管理:创建create修改alter删除drop1.表的创建2.表的修改3.表的删除4.表的复制数据定义语言库和表的管理一、库的管理:创建修改删除二、表的管理:创建create修改alter删除drop一、库的管理1.库的创建语法:CREATE DATABASE [IF NOT EXISTS] 库名2.库的修改数据库的修改非常不安全。当作目前不修改更改库的字符集:ALTER DATABAS

2020-08-07 19:25:44 143

原创 六、MySQL中DML语言(增删改)

MySQL的DML语言一、插入语句 insert二、修改 update三、删除 deleteDML语言:数据操纵语言插入:insert修改:update删除:delete一、插入语句 insert语法:方式一:insert into 表名(列名, ...) values (值1, ...);方式二:insert into table set field1 = value1, field2 = value2特点:插入的值的类型要和表的field的类型一致或兼容不可以为null的列必须

2020-08-07 15:52:30 121

原创 五、MySQL中DQL语言

MySQL中DQL语言MySQL的DQL语言基础查询条件查询排序查询常见函数分组查询连接查询子查询Exist + 子查询(相关子查询)In 子查询分页查询练习题目3Exer: 获取email的username查询语句的所有关键字以及执行先后顺序联合查询查询总结MySQL的DQL语言基础查询条件查询排序查询常见函数分组查询连接查询子查询Exist + 子查询(相关子查询)Exist的子查询不同于其他子查询,有Exist的子查询是先执行主查询,再执行子语句。因为子语句被叫做相关子查询。举个栗

2020-08-06 16:03:02 294

原创 15213CSAPP: Recitation 2 Bomb Lab

Recitation 2: Bomb LabReminderReview如何打开Bomb如何使用gdbRecitation2 Bomb Lab: Video LinkReminderRead the writeup before starting.Do not jump to particular problem using GDB.Review$ is for constant beginning. i.e. $4, $0x40% for register beginingAll

2020-08-06 10:25:43 215

空空如也

空空如也

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

TA关注的人

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