首页
学习
活动
专区
圈层
工具
发布
    • 综合排序
    • 最热优先
    • 最新优先
    时间不限
  • 来自专栏刷题笔记

    代码 多线程代码

    两个线程,线程1打印A,线程2打印B,两个线程同时并发,要求保证先打印A,后打印B 使用synchronized+ wait、notify public class Main{ static try{ //避免假唤醒 while(number.num == 2) } System.out.println("A"); number.num = 2; i <= 10; i=i+2) { lock.lock(); while(num == 2) condition.await (); System.out.print(i); num = 2; condition.signal();

    48720发布于 2021-04-14
  • 来自专栏FPGA探索者

    FPGA代码——CRC校验码的多种Verilog实现方式

    (2021乐鑫科技数字IC提前批代码编程) 完整工程代码在【FPGA探索者】公众号回复【CRC】获取。 用Verilog实现CRC-8的串行计算,G(D)=D8+D2+D+1,计算流程如下图所示: ? 一、分析 CRC循环冗余校验码(Cyclic Redundancy Check),检错码。 二、Verilog编程 1. 并行计算,串行输出 对于输入位宽为1的输入,这种方法的计算非常简单,直接根据生成多项式运算。 (注意! 2处自动识别出这个CRC多项式其实是CRC8 ATM HEC协议使用的 CRC; (3)3处设置输入数据位宽为1; (4)选择生成Verilog代码; (5)下载代码。 (1) 新建函数function Verilog函数名为next_crc,输入信号为 data_in 和 current_crc,输出信号为8位的新 crc。

    17.4K66发布于 2021-03-15
  • 来自专栏沉浸式AI

    代码系列(四)

    代码系列(四) 手写触发控制器 Scheduler • 当资源不足时将任务加入队列,当资源足够时,将等待队列中的任务取出执行 • 任务调度器-控制任务的执行,当资源不足时将任务加入等待队列,当资源足够时 --; this.request(); }); } } // test: let scheduler = new Scheduler(2) ; scheduler.add(2000, '1'); scheduler.add(200, '2'); scheduler.add(500, '3'); scheduler.add(800, '4') ; lRUCache.put(1, 1); // 缓存是 {1=1} lRUCache.put(2, 2); // 缓存是 {1=1, 2=2} lRUCache.get(1); // 返回 1 lRUCache.put (3, 3); // 该操作会使得关键字 2 作废,缓存是 {3=3, 1=1} lRUCache.get(2); // 返回 -1 (未找到) lRUCache.put(4, 4); // 该操作会使得关键字

    32510编辑于 2024-03-13
  • 来自专栏刷题笔记

    代码】反转链表

    //当前节点是head,pre为当前节点的前一节点,next为当前节点的下一节点 //需要pre和next的目的是让当前节点从pre->head->next1->next2变成 pre<-head next1->next2 //即pre让节点可以反转所指方向,但反转之后如果不用next节点保存next1节点的话,此单链表就此断开了 //所以需要用到 pre和next两个节点 //1->2->3->4->5 //1<-2<-3 4->5 while(head! 保证单链表不会因为失去head节点的原next节点而就此断裂 next = head.next; //保存完next,就可以让head从指向next变成指向pre了,代码如下

    46820发布于 2021-04-14
  • 来自专栏沉浸式AI

    代码系列(三)

    代码系列(三) 手写匹配括号 isValid /** * 匹配括号 isValid * @param {String} symbolStr 符号字符串 * @return {Boolean} * * @logic * 1.定义一个栈数组(stack) * 2.定义字典(obj) * 3.遍历字符串 * 4.判断字符串中的每个字符与其对应的符号是否出现在字典(obj)中(如果是有效的 捕获到的内容 // 把 "Doe, John" 转换为 "John Doe" 的形式 let res = str.replace(/(\w+)\s*, \s*(\w+)/, '$2 $1'); console.log 3 4 5 6 */ // console.log(preOrder(root)); // [ 1, 2, 4, 5, 3, 6 ] // console.log(inOrder (root)); // [ 4, 2, 5, 1, 3, 6 ] // console.log(postOrder(root)); // [ 4, 5, 2, 6, 3, 1 ] 特殊字符描述 •问题标注

    33810编辑于 2024-03-13
  • 来自专栏GPUS开发者

    深度学习算法(2):轻CNN

    总结第一节课 昨天我们深度学习算法讲坛开始,第一节内容是关于SVM算法(深度学习算法开讲:先简单SVM ) 我总结了大家提的问题: A.第一节课SVM太短了,才十分钟: 老师回答:这个只是概括讲解一下 SVM 的部份,我們會再找個時間拍完整的式,时长会是12小时 B.SVM处理大规模数据,如果我们分类效果不好,加入海量训练脚本,能有显著提升吗?会不会加入海量训练脚本只能少量提升? 我們要提升SVM訓練精度有幾種做法: 1.當你的特徵是有效的訓練特徵,可以加入海量資料來讓精度提升 2.當你有足量的資料且1/-1的資料量相差不會太多,可提取更多的有效特徵來提升精度 3.調整既有參數, Sequential Minimal Optimization)的效能優化算法,它是採用類似梯度下降的方式來修正權重,不一樣的是由於一些限制,因此他是採兩個特徵來修正,而收斂條件有: 1.所有特徵均符合KKT條件 2.

    1.3K90发布于 2018-04-02
  • 来自专栏OpenFPGA

    代码】同步 FIFO、LIFOStack

    网上有很多关于 FIFO 的 Verilog/VHDL 代码的资源,过去,我自己也使用过其中的一些。但令人沮丧的是,它们中的大多数都存在问题,尤其是在上溢出和下溢出条件下。 完全可综合的系统 Verilog 代码。 ---------------*/ logic [DATA_W - 1 : 0] data_rg [DEPTH] ; // Data array logic [$clog2( ; // Read pointer logic [$clog2(DEPTH) : 0] dcount_rg ; // Data counter 详细代码: ❝https://github.com/iammituraj/FIFOs ❞

    68720编辑于 2023-08-30
  • 来自专栏光城(guangcity)

    代码之常用排序算法

    代码之常用排序算法 0.导语 本节为代码系列之第一弹,主要来排序算法,主要包括以下几大排序算法: 直接插入排序 冒泡排序 选择排序 快速排序 希尔排序 堆排序 归并排序 1.直接插入排序 【 【代码实现】 # 直接插入排序 def insert_sort(arr): length = len(arr) for i in range(length): k = i 【代码实现】 # 冒泡排序 def bubbleSort(arr): length = len(arr) for i in range(length-1): flag = 【代码实现】 # 希尔排序 def shellSort(arr): length = len(arr) # 设置初始增量 gap = length//2 while gap 【代码实现】 def mergeSort(nums): if len(nums)<=1: return nums mid = len(nums)//2 left

    74930发布于 2019-09-20
  • 来自专栏前端文章小tips

    代码之Promise的实现

    所以我们将constructor 里面的代码做了如下的改变 constructor(executor) { this.status = PENDING // 默认是pending状态 /** * promise2 与 x 不可相同 * @param {*} promise2 * @param {*} x * @param {*} resolve * @param {* called = true reject(e) } ​ } else { resolve(x) } } 这一块的代码是按照 x,resolve,reject) } // code... } return promise2 } 聪明的你肯定发现了promise2本生就是一个异步的 ,我们调用resolvePromise(promise2,x,resolve,reject) 的时候,promise2是空。

    73420编辑于 2021-12-06
  • 来自专栏沉浸式AI

    面试必考: 代码系列(一)

    面试必考: 代码系列(一) 手写深拷贝 (deepClone) /** * deepClone 深拷贝 * @param {*} source 源对象(需要拷贝的对象) * @returns returns 新对象(类似于实例) */ const customNew = (fn, ...rest) => { // 1.创建一个新对象 const obj = {}; // 2.

    51510编辑于 2024-03-13
  • 来自专栏OpenFPGA

    代码】HDB3编解码

    代码】HDB3编解码 1. 设计报告、代码工程包等。 HDB3的编码规则、编码及解码模块接口定义见《101群第一次FPGA编码交流研讨会》(在最后的代码链接中)。 2. 设计 2.1. 具体代码实现使用VHDL,在ISE14.7中完成,文件为“tt_hdb3_encoder.vhd”。 2.3. 此次,通过附加test_2bit模块来提供仿真数据流,建立一个多位的std_logic_vector(80位),在CLK时钟上升沿从低位逐位移出。 仿真准备:将test_2bit、tt_hdb3_encoder、tt_hdb3_decoder例化在test_top工程下,但是将test_2bit的输入时钟和编解码模块的输入时钟取反,便于在编解码仿真时输入数据稳定

    93030编辑于 2023-08-30
  • 来自专栏吃着西瓜学Java

    HashMap

    「哈希表和HashMap」哈希表是一种逻辑数据结构,HashMap是Java中的一种数据类型(结构类型集合),它通过代码实现了哈希表这种数据结构,并在此结构上定义了一系列操作。 Table数组的初始化: 我们前面提到过,哈希表的主体是数组,那么HashMap的主体就是一个Node类型的table数组,而且table数组的长度永远是2的幂次方,它的具体算法就是由下面代码实现的,这是一个非常巧妙的算法 ❞ 「上述算法让最高位的1后面的位全变为1,再进行n+1操作,那么最终将会返回一个大于或者等于cap的最小的2的幂的结果。」 ❞ 「3.把数组长度设计成2的幂次方的原因:」 当将数组长度设置为2的幂次方时,使用位与和取模的结果相同,也就是当数组长度为2的幂次方时,可以使用位运算替代取模运算,即h&(length-1)==h%length 当数组长度为2得幂次方时,其长度length-1后得到得数为奇数,也就是说其二进制位数上全为1,这样就可以使得每个位置都可以参与最终的位与运算,相反,当数组长度不为2的幂次方时,在进行length-1后

    43320编辑于 2022-05-05
  • 来自专栏『学习与分享之旅』

    Promise

    声明一点本文的内容主要是用于记录,博主在手写实现 promise 底层原理的一个代码记录使用,实现的代码如下,供参考:<! DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>Promise</title></head><body _isFunction(handle)) { throw new Error("请传入一个函数"); } // 2.给传入的函数传递形参 _isFunction(onResolved)) { // 2.判断当前的状态是否是成功状态 if (this.status catch (e) { nextReject(e); } // } // 2.

    32000编辑于 2023-09-28
  • 来自专栏huofo's blog

    HashMap

    这个过程如果频繁发生还是很消耗机器性能的,所以我们在写代码的时候最好是预估好初始大小,尽量不触发扩容机制。 扩容完毕,肯定需要重新散列 if (entryUseSize >= defaultInitSize * defaultLoadFactor) { resize(2

    38130编辑于 2022-03-18
  • 来自专栏小杰的学习本

    vector

    文章目录 一.vector的基本结构 二.构造函数调用不明确 三.迭代器失效(其实是野指针问题) a.扩容导致的迭代器失效 b.意义不同 四.深层次的深浅拷贝 五.整体代码实现 有了前面模拟实现 vector本质也就是一个空间可以动态变化的数组,所以这里就挑一些些容易踩坑的地方讲解一下,在最后会附上我的完整代码。 ,在我们现阶段的学习中不建议去大量的阅读源代码,但可以从某些实现细节上以及它的整体框架去阅读。 五.整体代码实现 #include<iostream> #include<assert.h> #include<algorithm> using namespace std; //直接上手搓一个 public: //vector采用迭代器,这里使用指针实现 typedef T* iterator; typedef const T* const_iterator; //首先上来搓构造

    84220编辑于 2023-04-06
  • 来自专栏用户1692782的专栏

    rtmp协议细节(2)——rtmp Header

    具体长度为多少个字节,由RTMP header数据包的第一个字节的高2位决定。 ? 如下方表格,Format决定了RTMP header的长度为多少个字节: Format取值(2bits) header的长度 说明 0(二进制00) 12字节 onMetaData流开始的绝对时间戳控制消息 第一个字节,高2位为01,所以RTMP Header的长度为8字节,接下来是时间戳的delta,简单讲就是时间戳的变化量,BodySize不多说,后面6个字节也比较赤裸裸。 可以看到,第一个字节为0xa2,所以高2位的值为10,所以,RTMP Header占用4个字节,后面跟着的时间戳的增量。 1字节的RTMP Header ? 抓个包,好奇的看一下。 ? 一个字节,就是第一个字节,后面啥也没有喽,高2位为11,所以,RTMP Header占用1个字节,只包含Format 和chunk stream ID。

    4.6K40发布于 2020-05-20
  • 来自专栏Linux学习~

    链表题系列-2》反转链表

    指针cur进行遍历链表 指针next记录cur的下一个指针,防止反转时下一个节点地址丢失 指针prev用来记录cur后指针,以便构建反转后的节点关系 注:需要处理好首节点节点之间的更替关系 参考代码

    32920编辑于 2022-11-30
  • 来自专栏沉浸式AI

    面试必问:代码系列(二)

    代码系列(二) 手写函数柯里化 curring /** * 函数柯里化 curring * @param {Function} * @return 视具体方法而定 * * @logic * 1.创建一个参数数组 args * 2.创建一个函数,接收参数列表 * 3.函数判断参数数组是否有值 * 4.如果有值,则往 args 中进行 push 操作,否则就是没有参数了,则直接进行调用 (3)(4)(5)()); // 15 console.log(curring(add)(1)(2)(3)(4,5)()); // 15 console.log(curring(add)(1,2)(3,4,5 从还没处理的数组中,从 [0, array.length] 之间取一个随机数 random number * 2. 重复2,3步骤直到所有元素取完 * 5.

    44910编辑于 2024-03-13
  • 来自专栏程序员成长指北

    前端面试代码题大全

    面试通常都有现场写代码的题目,我基本每次都或多或少的翻车.有意思的是,每次面试结束,自己改不到五分钟就调试出来了. 总的来看,如果能完全掌握这篇文章的内容,就足以应付所有前端面试中的代码环节了. 来都来了,点个赞呗 导读 关于这篇文章,有几点我想先说清楚,方便读者更顺利的学习. 或者,先查询该问题通常的解决思路,再回来参考我的实现 代码大量使用了ES6的语法 学习代码,不只是理解的过程,更是实践的过程 我在完全掌握(可以默写出每段代码,并讲清楚每一行的作用)以下代码的过程中 ,做了以下几件事 参考别人的实现,结合自己的思路,写出一个自己的版本 不断对代码进行优化 当你尝试去优化一段代码的时候,对它的理解和记忆会异常深刻 不看之前的实现,重新自己实现一次 再和之前的实现做对比 这就是我强调要反复敲代码的原因.别想着平时只要理解,工作中再去熟能生巧. 工作不是给你练习的地方,工作是你的舞台. 下文中几乎每一段代码,都是我反复优化后的结果,希望可以带给读者新的启发.

    1.6K10发布于 2020-12-17
  • 来自专栏Java Web

    【面试必备】代码,你怕不怕?

    前言:不管是远程的视频面试,还是现场的面试,都有可能会有代码的环节,这也是很多童鞋包括我(虽然还没遇到过..)都很头疼的东西,可能是因为 IDE 自动提示功能用惯了或是其他一些原因,总之让我手写代码就是感觉很奇怪 ..但是我想的话,这应该侧重考察的是一些细节或者是习惯方面的一些东西,所以还是防患于未然吧,把一些可能手代码给准备准备,分享分享,希望可以得到各位的指正,然后能有一些讨论,由于我字太丑就不上传自己默写的代码了 / 交换比枢轴小的记录到右端 } // 扫描完成,枢轴到位 arr[low] = pivot; // 返回的是枢轴的位置 return low; } 当然,在手的时候需要注意函数上的 :下面的代码只是用作一个思路的参考,着重掌握上面的代码 : public ListNode mergeTwoLists(ListNode l1, ListNode l2) { // 定义一个虚拟头结点方便遍历 nums2; nums2 = res; } return res; } 还是注意正确性判断然后写测试用例... ---- 代码总结 如果用手写代码的话,确实是个挺麻烦的事儿

    2.1K20发布于 2018-09-14
领券