next

模板库

扶醉桌前 提交于 2020-09-30 15:36:26
呼,终于在考试之前复习了一遍所有模板。 球NOIP不跪! BigNumber 1 #include <iostream> 2 #include <cstdio> 3 #include < string > 4 #include <cstring> 5 #include <algorithm> 6 using namespace std; 7 const int maxlen= 3100 ; 8 struct bigint 9 { 10 int a[maxlen],len; 11 bigint() 12 { 13 memset(a, 0 , sizeof a); 14 len= 1 ; 15 } 16 bigint( string str) 17 { 18 memset(a, 0 , sizeof a); 19 len= str.length(); 20 for ( int i= 1 ;i<=len;i++)a[i]=str[len-i]- ' 0 ' ; 21 } 22 bigint( int num) 23 { 24 memset(a, 0 , sizeof a); 25 len= 0 ; 26 if (num== 0 )len++ ; 27 else while (num)a[++len]=num% 10 ,num/= 10 ; 28 } 29 string tostring(

Bert: 双向预训练+微调

五迷三道 提交于 2020-09-30 15:02:23
最近要开始使用Transformer去做一些事情了,特地把与此相关的知识点记录下来,构建相关的、完整的知识结构体系。 以下是要写的文章,文章大部分都发布在公众号【雨石记】上,欢迎关注公众号获取最新文章。 Transformer:Attention集大成者 GPT-1 & 2: 预训练+微调带来的奇迹 Bert: 双向预训练+微调 Bert与模型压缩 Bert与模型蒸馏:PKD和DistillBert ALBert: 轻量级Bert TinyBert: 模型蒸馏的全方位应用 MobileBert: Pixel4上只需40ms 更多待续 Transformer + AutoML: 进化的Transformer Bert变种 Roberta: Bert调优 Electra: 判别还是生成,这是一个选择 Bart: Seq2Seq预训练模型 Transformer优化之自适应宽度注意力 Transformer优化之稀疏注意力 Reformer: 局部敏感哈希和可逆残差带来的高效 Longformer: 局部attentoin和全局attention的混搭 - Linformer: 线性复杂度的Attention XLM: 跨语言的Bert T5 (待续) 更多待续 GPT-3 更多待续 背景 Bert,全称是Bidirectional Encoder Representation from

大厂面试爱问的「调度算法」,20 张图一举拿下

▼魔方 西西 提交于 2020-09-30 07:34:52
作者 | 小林coding 来源 | 小林coding(CodingLin) 最近,我偷偷潜伏在各大技术群,因为秋招在即,看到不少小伙伴分享的大厂面经。 然后发现,操作系统的知识点考察还是比较多的,大厂就是大厂就爱问基础知识。其中,关于操作系统的「调度算法」考察也算比较频繁。 所以,我这边总结了操作系统的三大调度机制,分别是 「进程调度/页面置换/磁盘调度算法」 ,供大家复习,希望大家在秋招能斩获自己心意的 offer。 进程调度算法 进程调度算法也称 CPU 调度算法,毕竟进程是由 CPU 调度的。 当 CPU 空闲时,操作系统就选择内存中的某个「就绪状态」的进程,并给其分配 CPU。 什么时候会发生 CPU 调度呢?通常有以下情况: 当进程从运行状态转到等待状态; 当进程从运行状态转到就绪状态; 当进程从等待状态转到就绪状态; 当进程从运行状态转到终止状态; 其中发生在 1 和 4 两种情况下的调度称为「非抢占式调度」,2 和 3 两种情况下发生的调度称为「抢占式调度」。 非抢占式的意思就是,当进程正在运行时,它就会一直运行,直到该进程完成或发生某个事件而被阻塞时,才会把 CPU 让给其他进程。 而抢占式调度,顾名思义就是进程正在运行的时,可以被打断,使其把 CPU 让给其他进程。那抢占的原则一般有三种,分别是时间片原则、优先权原则、短作业优先原则。 你可能会好奇为什么第 3

C#字典Dictionay多线程读是否是安全的

只愿长相守 提交于 2020-09-30 07:32:56
答案:是线程安全的,只读不写多线程下,完全不需要加锁! 测试代码: using System; using System.Diagnostics; using System.Threading; using System.Collections.Generic; namespace hello { public class ThreadSafe { Dictionary < int , int > dits = new Dictionary< int , int > (); public ThreadSafe() { for ( int i = 0 ; i < 100 ; i++ ) { dits.Add(i, i); } } public void Test( object i) { int t = Convert.ToInt32(i); int v; Thread.Sleep( 1 ); dits.TryGetValue(t, out v); if (! t.Equals(v)) { Console.WriteLine( " i:{0},v:{1} " , t, v); } } } } 模拟5万个线程读字典,看看是否混乱: static void Main( string [] args) { ThreadSafe ts = new ThreadSafe(); Random

Linux下的I/O复用与epoll详解

时光怂恿深爱的人放手 提交于 2020-09-30 06:55:46
前言 I/O多路复用有很多种实现。在linux上,2.4内核前主要是select和poll,自Linux 2.6内核正式引入epoll以来,epoll已经成为了目前实现高性能网络服务器的必备技术。尽管他们的使用方法不尽相同,但是本质上却没有什么区别。本文将重点探讨将放在EPOLL的实现与使用详解。 为什么会是EPOLL select的缺陷 高并发的核心解决方案是1个线程处理所有连接的“等待消息准备好”,这一点上epoll和select是无争议的。但select预估错误了一件事,当数十万并发连接存在时,可能每一毫秒只有数百个活跃的连接,同时其余数十万连接在这一毫秒是非活跃的。select的使用方法是这样的: 返回的活跃连接 ==select(全部待监控的连接)。 什么时候会调用select方法呢?在你认为需要找出有报文到达的活跃连接时,就应该调用。所以,调用select在高并发时是会被频繁调用的。这样,这个频繁调用的方法就很有必要看看它是否有效率,因为,它的轻微效率损失都会被“频繁”二字所放大。它有效率损失吗?显而易见,全部待监控连接是数以十万计的,返回的只是数百个活跃连接,这本身就是无效率的表现。被放大后就会发现,处理并发上万个连接时,select就完全力不从心了。 此外,在Linux内核中,select所用到的FD_SET是有限的,即内核中有个参数__FD

自动化安装操作系统(Centos7+PXE+Cobbler+kickstart)

我的梦境 提交于 2020-09-30 03:42:40
一、简介 1、PXE PXE称作是一种引导方式而不是安装方式似乎更加准确,PXE(Pre-boot Execution Environment)是由Intel设计的协议,它可以使计算机通过网络启动,但是有一个前提条件是计算机的网卡必须具有引导功能,这个网卡中要有一个PXE客户端。当计算机POST自检成功以后,BIOS把网卡中ROM的PXE客户端调入内存执行,PXE客户端通过网络中的DHCP服务器获取一个IP地址,拿到IP地址以后PXE继续引导计算机与网络中的TFTP客户端建立连接,从而从TFTP服务器中获取开机引导文件之后请求并下载安装需要的文件。在这个过程中需要一台服务器来提供启动文件、安装文件、以及安装过程中的自动应答文件等。 PXE工作步骤: 原理分析: Client向PXE Server上的DHCP发送IP地址请求消息,DHCP检测Client是否合法(主要是检测Client的网卡MAC地址),如果合法则返回Client的IP地址,同时将启动文件pxelinux.0的位置信息一并传送给Client Client向PXE Server上的TFTP发送获取pxelinux.0请求消息,TFTP接收到消息之后再向Client发送pxelinux.0大小信息,试探Client是否满意,当TFTP收到Client发回的同意大小信息之后,正式向Client发送pxelinux.0

Ghidra逆向工具入门与应用

核能气质少年 提交于 2020-09-30 02:46:19
逆向工程中涉及到多种多样的工具(例如IDA Pro,Angr等),熟练使用这些工具可以化繁为简,使得程序分析工作得以顺利开展。本文介绍众多逆向工具中的一种——Ghidra,它是由美国国家安全局(NSA,National Security Agency)的研究理事会为 NSA 的网络安全任务开发的软件逆向工程(SRE)框架,它有助于分析恶意代码和病毒等恶意软件,并可以让网络安全专业人员更好地了解其网络和系统中的潜在漏洞。Ghidra跟IDA Pro用起来很像,但Ghidra是免费的,而且是开源的! Ghidra支持多种操作系统,例如Windows, Linux,或者MacOS。本文中的示例主要在Windows下完成(其他平台上也是类似的,因为本文不是一蹴而就的,后面某些截图是在Ubuntu上做的,但这没有多大影响)。你可以从【1】中下载Ghidra,它是一个压缩包,解压到你指定的目录后,即可开始使用了。 注意:Ghidra的运行需要有Java环境作为支持,所以请确保电脑上已经正确安装并配置好了JRE和JDK 。 现在打开Windows的命令行程序,切换到Ghidra的安装目录,并输入ghidraRun,程序就被启动了,如下图所示: 开始使用Ghidra 在File菜单中选择新建一个项目(如下图所示),然后在弹出的对话框中选择“Non-Shared Project”,并按【Next>>

Python语法学习

ぐ巨炮叔叔 提交于 2020-09-29 16:39:51
文章目录 Python语法学习 1. 序列 1.1 list API 1.2 序列统计函数 1.3 str API 1.4 dict API 2. 函数 2.1 zip函数 2.2 内置函数对象API 3. 模块 3.1 `__init__.py` 3.2 copy模块 3.3 random模块 3.4 创建虚拟环境 3.5 模块打包 3.6 模块发布 4. 类和对象 4.1 Python属性 4.2 封装 4.3 继承 4.4 多态 5. 特殊方法 5.1 对象操作支持 5.2 属性操作支持 6. 异常处理 7. 序列结构扩展 7.1 set API 7.2 deque API 7.3 heapq API 7.4 `enum`枚举 7.5 **yield生成器** 7.6 日期时间 7.6.1time模块 7.6.2 datetime模块 7.7 正则表达式 8. os模块 Python语法学习 1. 序列 1.1 list API list API append(data) clear() copy() count(data) 计算data出现次数 extend(list) 附加列表 index(data) 返回data第一次出现的index pop(index) 删除对应index处的值 remove(data) 删除列表中对应的值 reverse() 列表翻转 sort()

力扣-2. 两数相加

╄→尐↘猪︶ㄣ 提交于 2020-09-29 15:44:37
1.题目 给出两个 非空 的链表用来表示两个非负的整数。其中,它们各自的位数是按照 逆序 的方式存储的,并且它们的每个节点只能存储 一位 数字。 如果,我们将这两个数相加起来,则会返回一个新的链表来表示它们的和。 您可以假设除了数字 0 之外,这两个数都不会以 0 开头。 示例: 输入:(2 -> 4 -> 3) + (5 -> 6 -> 4) 输出:7 -> 0 -> 8 原因:342 + 465 = 807 2.我的解题思路   第一次拿到这个题目个人认为是写起来别扭的链表应用题,由于没有说链表有多长,我很早就放弃了转成int的思路。我解题的时候,就是简单的思路:以长的链表为基础加短的链表,然后处理长的链表和进位,最后如果还有进位处理进位。我承认办法很土,没啥巧妙,以下贴出勉强能AC的代码: public ListNode addTwoNumbers(ListNode l1, ListNode l2) { ListNode resultListNodeHead = null; ListNode l1Pointer = l1; ListNode l2Pointer = l2; while (l1Pointer != null && l2Pointer != null) { l1Pointer = l1Pointer.next; l2Pointer = l2Pointer.next

jQuery 筛选方法

故事扮演 提交于 2020-09-28 18:06:26
前言    在 jQuery 中所有的东西全部都包含在 jQuery 对象中,并没有单独的 DOM 元素这一说法。    要想获取单独的 DOM 元素请用 [index] 获取,下面介绍的所有方法都会返回新的 jQuery 对象,而不是单一的 DOM 元素。 获取方法 first()    获取 jQuery 对象中第一个 DOM 元素,返回一个新的 jQuery 对象。 <body> <ul> <li>1</li> <li>2</li> <li>3</li> </ul> </body> <script src='https://cdn.bootcdn.net/ajax/libs/jquery/3.5.1/jquery.js'></script> <script> "use strict"; let $elements = $("li").first(); console.log($elements[0].innerText); // 1 </script> last()    获取 jQuery 对象中最后一个 DOM 元素,返回一个新的 jQuery 对象。 <body> <ul> <li>1</li> <li>2</li> <li>3</li> </ul> </body> <script src='https://cdn.bootcdn.net/ajax/libs