1、阻塞队列/线程安全队列 实现: 注意问题: 1、防止虚假唤醒的lambda表达式需要传入this,也就是调用变量 2、lambda表达式的函数体不可以使用自己写的判断队列满或者空函数 template <typename T> class block_queue { public: block_ ...
转载
2021-07-30 11:33:00
271阅读
2评论
天天乐学 面试直接让我手撕代码 完全不会呀 那不完蛋~
两个线程,线程1打印A,线程2打印B,两个线程同时并发,要求保证先打印A,后打印B
使用synchronized+ wait、notifypublic class Main{ static class Number{ public int num = 1; Number(){} } public
原创
2022-01-26 10:06:11
256阅读
天天乐学 面试直接让我手撕代码完全不会呀 那不完蛋~
两个线程,线程1打印A,线程2打印B,两个线程同时并发,要求保证先打印A,后打印B
使用synchronized+ wait、notify
public class Main{
static class Number{
public int num = 1;
Number(){}
}
p
原创
2021-07-12 09:46:27
245阅读
基础知识的知识点在前面介绍过了,涉及到的内容,都会在后面同步,今天我们主要来聊聊面试过程中的手撕代码环节。关于手撕代码,公司不同,要求不同,但是有一点是很显然的,那就是即使你写不出来可运行的代码,也得有清晰的思路,绝大部分公司则要求写出完整的代码,而代码能力和基础知识不同,不是短时间能够恶补的,更不是可以死记硬背的
public class Solution { public ListNode ReverseList(ListNode head) { if(head==null) return null; //head为当前节点,如果当前节点为空的话,那就什么也不做,直接返回null; ListNode pre = null;
原创
2022-01-26 10:15:37
373阅读
文章目录一、反转链表(leetcode 206)二、两个链表的交点(leetcode 160)三、链表的中间结点(leetcode 876)四、判断链表是否存在环(leetcode
原创
2023-08-29 12:06:18
124阅读
前言系列首发于『前端进阶圈』 ,若不想错过更多精彩内容,请“星标”一下,敬请关注最新消息。手撕代码系列(二)手写函数柯里化 curring/**
* 函数柯里化 curring
* @param {Function}
* @return 视具体方法而定
*
* @logic
* 1.创建一个参数数组 args
* 2.创建一个函数,接收参数列表
* 3.函数判断参
原创
2023-04-26 09:34:55
92阅读
前言系列首发于公众号『前端进阶圈』 ,若不想错过更多精彩内容,请“星标”一下,敬请关注公众号最新消息。手撕代码系列(四)手写触发控制器 Scheduler当资源不足时将任务加入队列,当资源足够时,将等待队列中的任务取出执行任务调度器-控制任务的执行,当资源不足时将任务加入等待队列,当资源足够时,将等待队列中的任务取出执行在调度器中一般会有一个等待队列queue,存放当资源不够时等待执行的任务。具有
原创
2023-05-02 08:38:19
111阅读
文章目录排序算法复杂度数组中出现次数超过一半的数字最小覆盖子串三数和接雨水链表环代理模式工厂模式观察者模式生产者消费者单例模式选择排序快排快排实现TopK归并排序死锁双线程轮流打印自定义线程池数组实现优先队列LinkedHashMap实现LRU 排序算法复杂度数组中出现次数超过一半的数字摩尔投票法:每次从序列里选择两个不相同的数字删除掉(或称为“抵消”),最后剩下一个数字或几个相同的数字,就是出
public class Solution {
public ListNode ReverseList(ListNode head) {
if(head==null)
return null;
//head为当前节点,如果当前节点为空的话,那就什么也不做,直接返回null;
ListNode pre = nu
原创
2021-07-12 09:48:44
135阅读
一、二维数组中的查找(leetcode 240)class Solution {public: bool searchMatrix(vector<vector<int>>& matrix, int target) { if (matrix.el...
原创
2023-08-29 11:03:16
129阅读
1. 手写闭包首先,看一个简单的案例:1 for (var i = 0; i < 4; i++) {
2 setTimeout(() => {
3 console.log(i);
4 }, i * 1000);
5 }
6 // 每隔一秒打印 4 4 4 4因为var 没有块级作用域,循环变量变成全局变量。如何解决?----> 闭包1 for (
文章目录一、根据rand7生成rand10(leetcode 470)二、快速幂(leetcode 50)一、根据rand7生成rand10(leetcode 470)
原创
2023-08-29 11:05:47
104阅读
前言LRU是一个操作系统的页面置换算法,它是 Least Recently Used(最近最少使用) 的缩写,用来淘汰上次使用距当前时间最长的页。
原创
2022-01-11 09:48:27
603阅读
1.linux 统计 字符串个数 grep -o hello |wc -l 2. linux 权限复习 赋予权限 chmod Linux/U
原创
2022-09-20 11:47:04
116阅读
手撕代码高频考题代码详解1. 快速排序# Python最简版from random import randintdef quick_sort(arr): if len(arr) <= 1: return arr p = arr[randint(0, len(arr) - 1)] left = [x for x in arr if x < ...
原创
2021-11-16 17:10:52
183阅读
文章目录一、最大连续子序列和(leetcode 53)一、最大连续子序列和(leetcode 53)
原创
2023-08-29 11:06:12
0阅读
手撕代码精选50题
原创
2021-11-16 17:27:36
279阅读
摘要1. 快速排序其实也是分而治之的思想2. 快速排序是递归的3. 首先找一个基准点,把比基准点小的数字都放到它的左边,比它大的数字都放在它的右边,一趟下来基准点的位置找到了,且它左边的数字小于(等于)它,右边的数字大于(等于)它。 再递归地对它左边的数字和右边的数字做同样的操作,直到递归结束则整个数组有序。 一般的实现需要两个指针,low初始指向需要排序的数据的头部,high指向需要排
转载
2023-05-29 13:39:09
99阅读
回调函数对于一些比较耗时且不能确定完成时间的操作比如加载一张图片或者发送 AJAX 请求获取数据。在没有 Promise 之前,我们往往会使用回调函数。以 AJAX 请求为例说明事件回调的含义:初始化发送 AJAX 请求的时候,传入成功和失败的回调函数,当 AJAX 请求完成的时候执行回调函数。看代码: function ajax(url, resolve, reject){ cons
转载
2021-01-19 20:50:18
447阅读
2评论