- 博客(41)
- 资源 (1)
- 收藏
- 关注
原创 由远程过程调用学到的
远程过程调用RPC大学课本中讲过,进程间的通信方式,有一种就叫做RPC,Remote Procedure Call,即远程过程调用,在一个应用(进程)中调用另一个应用(进程)的方法。远程过程调用描述的就是这样一个概念,理论上来说,只要是通过某种方式能够实现,让一个进程能够通过这种方式去调用另一个进程的方法,就可以将该方式称为RPC的一种实现。RPC需要什么正如同我们调用本地函数,例如我们定义了一个add 函数int add(int a, int b){ return a + b;}在该
2021-03-11 16:40:50
274
1
原创 cmake混合编译cuda和c++代码
cmake混合编译cpp和cuda代码实际背景在cpp项目中需要调用一些.cu代码,但是两个代码的编译是不同的:cpp代码使用g++编译,cuda代码使用nvvm编译,因此需要分别编译,再链接,同时需要在cuda侧进行一些简单的封装。简单例子目录结构projectDir├── CMakeLists.txt(final project)├── src.cpp├── ...├── c...
2020-03-23 20:15:13
4419
1
原创 利用python对巨量数据排序
需求背景我们有一份100G左右的数据需要根据关键字进行排序,当时想的是直接从数据库select出来的时候直接order by,但是爆内存了,于是考虑导出后直接利用python进行排序。算法设计直接利用切割排序,再合并的方式,将100G文件分为40个2.5G的数据文件,分别排序后再归并,思想和leetcode合并n个有序数组的想法如出一辙归并代码import globimport hea...
2020-03-11 00:10:15
1700
原创 罄竹难书的c++隐式转换
由来今天按照惯例每天刷一道leetcode,今天轮到复习之前刷过的题目,做到第28题时,原本以为使用kmp能很快解决出来,结果卡在循环上很久。调试过后发现代码与之前AC的代码有以下不同AC代码 int i=0, j=0, len1=haystack.size(),len2=needle.size(); while(i<len1&&j<len2)问题代码...
2019-12-03 17:15:49
241
原创 字节跳动后台面试(全程超越附体)
前言笔者情况 1、笔者是本科末流985,今年保研到top2某码农专业的学生,因为下学期没啥事,同时也想转技术方向 c++(原来做的是前端开发),所以打算实习。在这之前在网易有实习半年(前端) 2、因为保研夏令营的事情把leetcode刷了400道题,也看了操作系统,计网啥的然后9月份之后刷了两 primer c++和effective c++,stl 源码解析、l...
2019-11-09 22:31:20
365
原创 c++函数重载与匹配
重载匹配匹配规则精确匹配常量版本匹配变量提升算数/指针转换类类型转换当我们为函数重载,并调用重载后的函数时,编译器会自动根据参数类型进行匹配与转换但是此时容易出现二义性错误,函数参数转换与类型提升容易混淆,例如当我们同时重载了float、double版本的函数时,传入一个int型实参,就会引起二义性错误示例理解常量版本重载与匹配常量版本不是指const int和int这...
2019-10-15 22:57:57
1662
原创 利用进制思想解决传统的老鼠喝毒药问题(带推广)
老鼠喝毒药问题经典问题 问题描述: 有1000瓶液体中有一瓶是毒药,小鼠吞服后,立马死亡,请问至少需要几只老鼠, 才能一次找出毒药所在。 立马死亡,意味着小鼠的状态是0/1,即死亡/存活的状态,因此我们可以用0/1来 表示小鼠的状态。将药物编号为二进制形式,发现至少需要10位数字才能表示出来 即0000000000~1xxxxxxxxx...
2019-10-13 23:49:51
552
原创 leetcode摩尔投票法
摩尔投票法运用的是成对删除的思想: 假如有10个人参与投票,有的人投给A,有的人投给B,有的人投给C,当我们想要找出A、B、C谁得票最多时, 我们可以将两个不同的投票作为一对进行删除,直到不能再删时然后再查看结果中还剩下的投票就是得票最 多的那个leetcode的运用:求众数I 给定一个大小为 n 的数组,找到其中的众数。众数是指在数组中出现次数大于 ⌊ n...
2019-10-13 15:16:32
266
原创 PAT 1097 用例四-段错误
问题测试用例的数据中出现了问题,导致输入n个节点,但是实际的节点数不足n;AC代码 #include <iostream> #include <vector> #include <cmath> using namespace std; struct nodes{ int addr; int key;...
2019-09-02 21:33:20
383
原创 01背包问题带来的思考
01背包问题的描述 给定最大w,和n个物体,每个物体有wi、vi属性,求解使得选中物体的wi 之和小于最大w,同时要使得vi最大。涉及的算法————动态规划dp 对于选择的物体我们用一个dp[n][w](n为物品个数,w为总重)的数组存储 ,则可以得知这样有两种情况: (1)当dp[n][w]时,背包大小小于物体大小时: dp[n][w]...
2019-03-25 16:42:20
531
原创 简述jq的实现原理
简述jq的实现原理1. 沙箱:jq利用自执行函数,将所有的实现细节封装在自执行函数内,对外仅仅暴露jQuery和$符号: (function(w, u) { "use strict"; w.jQuery = w.$ = jQuery; var a; if (a == u) return; })(window);2. 无...
2018-10-24 16:15:35
3019
原创 js中判断一个数据是什么类
由判断一个对象属于哪个类想到的有时候,我们会有这样的需求。判断我们手中的某个数据是属于哪一个类,哪一种数据类型。通常有以下几种方式:1.typeof()var a = “A”; typeof(a) == “string” //truevar b = 1; typeof(b) == “number” //truevar d = []; typeof(d) == “object” ...
2018-10-23 20:34:39
523
原创 函数节流与函数防抖
简述:在高性能的javascript当中,函数节流和函数防抖是两种非常重要的提高js效率的方法。其思想就是防止函数在短时间内多次触发,导致性能问题。实现一般通过闭包,定时器等方式实现:函数节流:方式:利用setTimeout延时触发函数,如果在延时前重复触发函数,清除上次延时,重新设定新的定时。缺点:如果一直快速触发函数,会导致函数永远无法执行示例...
2018-08-31 21:55:14
182
原创 js复习笔记-ES6的类(五)
class(ES6构造函数的语法糖):总述: ES5写法: 父类: function Animal(){ this._name = "animal"; } Animal.prototype = { constructor: Animal, get name(){ ret...
2018-08-09 10:24:38
192
原创 从margin-top失效看BFC
情景在前端开发过程中,我们通常会遇到这样的问题,我们给一个紧邻父元素的div Box设置一个margin值后,发现该值对内部的div Box 没起作用,反而是作用在了父级元素上。 示例代码: &lt;div class="outBox"&gt; &lt;div class="innerBox"&gt; &lt;/
2018-08-01 14:15:17
650
转载 几种负载均衡技术的实现
【前言】负载均衡技术对于中大型网站的性能提高有着很大的优势,最近在学习《大型网站技术的架构》,其中对于负载均衡技术有一些介绍,将学习的经验总结一下,分享下。多交流。【协议层】http重定向协议实现负载均衡原理:根据用户的http请求计算出一个真实的web服务器地址,并将该web服务器地址写入http重定向响应中返回给浏览器,由浏览器重新进行访问。如图: 优点:比较简单缺点...
2018-07-31 10:49:53
660
原创 js复习笔记--正则(四)
正则表达式1.正则表达式的定义直接量的定义:var partern = /s$/ // =>匹配所有的以s结尾的字符串构造函数定义:var partern = new RegExp("s$");正则表达式的字符类 字符 匹配 […] 方括号内任意字符 [^…] 不在方括号内的任意字符 . 除...
2018-07-30 19:18:23
183
原创 js复习笔记--类(三)
类和模块1. 类和原型利用工厂函数创建范围类初始化实例: function range(from, to){ var r = Object.create(range.methods); r.from = from; r.to = to; return r; } //左闭右开 ra...
2018-07-30 19:17:08
199
原创 js复习笔记--对象(二)
对象1. 对象的属性特征writable =&gt; 可写enumerable =&gt; 可枚举configurable =&gt; 可配置2. 对象的创建对象的创建有3种方式:对象直接量、关键字new、Object.create()函数对象的原型:每一个非null的js对象都和另一个对象(即原型)相关联,每一个对象都从原型继承属性。Object.creat...
2018-07-30 19:16:12
220
原创 js复习笔记(一)
js语复习笔记(一)js解析代码1. js仅在不加分号无法解析的情况下才自动添加var aa=3console.log(a)将会被解析为:var a;a = 3;console.log(a);2. 不添加“;”可能导致错误var y = x + f(a+b).toString()会被解析为:var y = x + f(a+b...
2018-07-25 17:10:30
380
原创 CSS交互式图片对比组件
通常在我们在需要对某地或者某物不同时期的情况对比时,多采用图片并列或者图片轮播的形式,但是这样的形式并不直接,且缺乏交互性。为了解决这个问题,我们可以采用交互式的图片控件来实现。其主要思想就是将两张前后图重合,用户可以自由选取图片的显示部分,效果如下:为了实现这个效果,我们将使用resize属性,使其可以在横向变形。为了防止图片拉扯变形,我们用一层div将一张图包裹,置于另一张图的上层。这...
2018-07-23 21:27:19
1113
1
原创 CSS自定义滑动列表上部提示阴影
下拉框顶部阴影提示:效果图:DOM结构: <ul class="scrollNote"> <li>not-allowed</li> <li>ew-resize</li> <li>ns-resize</li> <
2018-07-23 10:17:19
1799
原创 自定义复选框样式
效果图:由于复选框的样式,现在还没有支持自定义,所以我们只能使用一个伪元素来模拟复选框,并将其与选中状态绑定,用该伪元素来代替复选框绑定。并自定义样式来模拟复选框。1、将lable与checkbox绑定,并绑定伪元素:<input type="checkbox" id="awesome"/><label for="awesome">Awesome<...
2018-07-23 00:04:50
758
原创 利用CSS进行图形变化
今天学习了CSS中各种图形不同的绘制方法,利用radial-gradien和linear-gradient可以实现多种缺角造型,利用border-radius可以实现多种不同曲率圆角的组合。我们可以通过调节矩形各个角的曲率半径实现多种类圆造型。同时在图片的裁剪方面我们可以通过clip-path属性来指定图片裁剪路径。为了实现多种造型的阴影,我们需要用到css3中的滤镜filter:drop...
2018-07-22 16:31:27
1351
原创 CSS实现多重边框与条纹背景
今天深入了解了一下css中背景与边框的知识。其中linear-gradient(线性渐变)、box-shadow与radial-gradient(径向渐变)在边框,背景的实现上起着不可忽视的作用。下面分点总结,归纳:边框与背景的关系:在如下情景中,我们想要为一个白色背景的图像加上一层白色的边框如下图二: 图一 ...
2018-07-22 16:21:10
1347
1
原创 python中的多重继承 fluent python读书笔记4
今天趁着闲暇时间较多,把python中的多重继承复习了一下。由于多重继承本身具有复杂性,所以在java中没有提供多重继承,同样的在python中多重继承也使用的非常少。 在所有实现多重继承的语言中,均要解决潜在的命名冲突,这种冲突是由不相关祖先类所实现的同名方法实现的同名方法引起的。给个示例:class A: def ping(self): print('pi...
2018-06-02 23:42:11
243
原创 坑爹的django-ckeditor添加代码高亮
ckeditor是一个非常好用的在线富文本编辑器,但是由于其不自带代码高亮,所以需要我们自己添加代码高亮。官方给出的方法是在ckeditor/plugins中注册插件,由于现在版本的ckeditor已经自带代码高亮插件,于是可以直接注册,具体教程网上都有,但是按照官网注册后编辑框并不能自动显示出,添加代码的图标,我发现还是需要手动添加,网上很多教程都已经过时了,我现在来做一份最新的cked...
2018-05-20 14:42:12
1566
原创 django2.0学习笔记(1)[开辟虚拟环境、创建项目]
一、创建本地虚拟环境 为了防止本地多个项目所需环境产生冲突,我们需要为每一项目开辟一块独有的开发环境,利用virtualenv这个python第三方库,我们可以方便达成此操作。先pip install virtualenv 安装第三方库。安装完成以后,在cmd输入virtualenv mysite_evn会在当前路径生成virtual_env这个虚拟环境文件夹,在文件夹下的cmd窗口,输入S...
2018-05-13 23:01:51
396
原创 计算机网络(自顶向下方法)(原书第4版)课后复习题第二章
第二章 应用层2.1.1 列出5种非专用的因特网应用及它们所使用的应用层协议。答:Web服务的HTTP协议;文件传输的FTP协议;电子邮件的SMTP;远程控制的Telnet;P2P应用的P2P协议;文件传输的FTP协议。2.1.2 网络体系结构与应用程序体系结构之间有什么区别?答:从应用程序的开发者角度看,网络体系结构是固定的,并为应用程序开发提供了相应的接口。但是,另一方面,应用程序体系结构由应...
2018-04-16 13:07:31
5176
原创 软件工程中的顺序图
顺序图是强调消息时间的交互图。其描述了对象之间传送消息的时间顺序,用来表示用例中的行为顺序。在该二维图中,对象由左至右排列,消息则沿着纵轴由时间顺序排列。在构筑该图时,应布局简洁。一、顺序图示例(购买小车简图)二、顺序图的组成要素:对象、生命线、消息、激活。下面依次来说1)对象: 表示方法: 说明: (1)将对象置于顺序图的顶部意味着在交互开始的时候对象就已经存在了,...
2018-04-13 15:28:18
23884
原创 软件工程白盒测试之逻辑覆盖
逻辑覆盖是以程序内部的逻辑结构为基础的设计测试 用例的技术。它属白盒测试,一般来说,逻辑覆盖分为4个分支,语句覆盖 • 条件覆盖 • 分支覆盖 • 条件组合覆盖。下面一一来说。先给出一个流程图:一、语句覆盖:设计测试用例,使得每个可执行的语句都要被执行一次,如上图的路线a->c->e就将4个可执行语句覆盖了。我们将该路线的判断语句进行合并,记住要考虑对应的情况,如果为F要取反。...
2018-04-12 18:05:53
3188
原创 利用多线程解决Tkinter,在button事件中执行高io,高耗时操作,窗口无响应问题
昨天利用python自己写了一个微型服务器,突发奇想用Tkinter写一个GUI界面,并将监听开始的函数绑定到其中的一个button上,但是当我点击开始服务button时,窗口立马陷入无响应状态。搜寻一番发现,是服务器函数中的while循环阻塞了GUI的响应,同理而言,做高I/O操作也一样会面临这种情况,同时用一个线程处理GUI响应与功能函数极易导致资源紧缺,进而导致窗口无响应。解决方法:...
2018-04-10 23:24:31
9372
4
原创 codemirror 快速使用指南
最近在做一个代码验证的前端,要求要对文本框内输入的所有c++代码格式化,要求关键字高亮,和其他一些自定义关键词的高亮,当然我们可以利用正则表达式去检测关键词然后相应改变其样式,但是这样做一是太低效,而是重复造轮子。搜索了一圈以后,发现codemirrow这款插件完美符合我的所有需求,可以自定义参数,下面就介绍一下codemirrow的功能和效果:一、效果图:先上效果图:我们可以看到他已经正...
2018-04-03 23:33:42
4339
2
转载 计算机网络(自顶向下方法) 读书笔记1
一、协议: 一个协议定义了在两个或多个通信实体之间交换的报文格式和次序,以及报文发送和/或接收一条报文或其他事件所采取的动作。协议的基本要素是语法、语义、同步。二、分组交换中存在的时延: 在分组从源向目的地发送的过程中,最为重要的是节点处理时延、排队时延、传输时延、传播时延,算上所有即节点总时延(1)处理时延:该时延包括检查分组首部和决定将该分组导向何处所需要的时间等。...
2018-04-01 00:16:41
582
原创 python中的内置序列 ,fluent python读书笔记2
一、python内置的序列:(1)容器序列:list、tuple、和collections.deque。这些序列中存放的是他们所包含的对象的引用,可以存放不同类型的数据。(2)扁平序列:str、bytes、bytearray、memory view和array.array。这些序列存放的是值而不是引用,只能容纳一种类型二、列表推导式与生成器表达式:(1)列表推导式:使得自身代码更加明了,例如我们想...
2018-03-31 01:31:56
205
原创 python 中的魔术方法,fluent python读书笔记1
一:简单的例子 在python中有一类神奇的方法,他可以使得你自定义的类像python原生的类一样操作。这类方法叫做魔术方法。魔术方法的定义通常是__方法名__,这类方法我们通常不会主动调用,反而python解释器会比我们更为频繁地调用这类方法。 我们最为熟悉的就是创建类时的构造函数__init__,这类函数在我们创建类的时候会自动调用,用以初始化自定义类中的属性。那么我们如何...
2018-03-29 21:50:44
227
原创 python lambda表达式以及与内置函数的配套使用 fluent python 读书笔记3
lambda表达式又叫匿名函数,通常使用在想要临时利用某个简单功能,却又不想重新定义函数的时候。 一:lambda表达式的用法:>>>lambda x, y : x+y<function <lambda> at 0x102bc1c80>可见lambda表达式是python支持的一种语法,这个表达式的意思就是,传入x,y返回x+y。lambda后面紧...
2018-03-28 22:46:13
298
原创 软件工程中的数据流图
数据流图(DFD)是结构化系统分析方法的主要表达工具,数据流图,主要是为了说明在一个项目中,数据的处理与流动情况。 一:数据流图的基本成分: (1)数据加工: 表示对数据进行的操作, 如“处理选课单” 、“产生发票”等 ,命名时最好使用动宾短语或者主谓词组 (2)外部实体:位于系统之外的信息提...
2018-03-28 15:23:23
30294
2
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人