随笔分类 - 转载
摘要:原文链接:https://blog.csdn.net/whereisherofrom/article/details/109404193
阅读全文
摘要:摘自:https://blog.csdn.net/bigtree_3721/article/details/82945924 一般人见到这种题目,立马就会想到指针交换。是的,大家被指针交换的题目做多了,形成思维定势了。对于这道题,我们完全可以利用值交换来达到排序的目的。当然,怎么值交换? 很多人得第
阅读全文
摘要:转自:https://blog.csdn.net/abcdefg90876/article/details/113840218 对召回技术的演进说的很清楚 分享嘉宾:卓靖炜 阿里巴巴 编辑整理:成鑫鑫 出品平台:DataFunTalk 导读:目前不管是广告还是推荐业务,最底层的技术都是检索,由于候选
阅读全文
摘要:优点: (1)拉链法处理冲突简单,且无堆积现象,即非同义词决不会发生冲突,因此平均查找长度较短; (2)由于拉链法中各链表上的结点空间是动态申请的,故它更适合于造表前无法确定表长的情况; (3)开放定址法为减少冲突,要求装填因子α较小,故当结点规模较大时会浪费很多空间。而拉链法中可取α≥1,且结点较
阅读全文
摘要:原文:https://www.sohu.com/a/120595688_465979 Vector 就像是 C++ STL 容器的瑞士军刀。Bjarne Stoutsoup 有一句话 – “一般情况下,如果你需要容器,就用 vector”。像我们这样的普通人把这句话当作真理,只需要照样去做。然而,就
阅读全文
摘要:一、Select:1. 背景select最早于1983年出现在4.2BSD中,它通过一个select()系统调用来监视多个FD(File Descriptor, 文件描述符/句柄)的数组。当select()返回后,该数组中就绪的FD便会被内核修改标志位,使得进程可以获得这些FD而进行后续的读写操作。2. 优点select目前几乎在所有的平台上支持,其良好跨平台支持也是它的一个优点,事实上从现在看来,这也是它所剩不多的优点之一。3.限制3.1 Socket数量限制select的一个缺点在于单个进程所打开的FD是有一定限制的。select的本质是采用32个整数的32位,即存在32*32= 1024
阅读全文
摘要:在linux的网络编程中,很长的时间都在使用select来做事件触发。在linux新的内核中,有了一种替换它的机制,就是epoll。相比于select,epoll最大的好处在于它不会随着监听fd数目的增长而降低效率。因为在内核中的select实现中,它是采用轮询来处理的,轮询的fd数目越多,自然耗时越多。并且,在linux/posix_types.h头文件有这样的声明:#define __FD_SETSIZE 1024表示select最多同时监听1024个fd,当然,可以通过修改头文件再重编译内核来扩大这个数目,但这似乎并不治本。epoll的接口非常简单,一共就三个函数:1. int epol
阅读全文
摘要:题目:输入两个字符串,从第一字符串中删除第二个字符串中所有的字符。例如,输入”They are students.”和”aeiou”,则删除之后的第一个字符串变成”Thy r stdnts.”。分析:这是一道微软面试题。在微软的常见面试题中,与字符串相关的题目占了很大的一部分,因为写程序操作字符串能很好的反映我们的编程基本功。要编程完成这道题要求的功能可能并不难。毕竟,这道题的基本思路就是在第一个字符串中拿到一个字符,在第二个字符串中查找一下,看它是不是在第二个字符串中。如果在的话,就从第一个字符串中删除。但如何能够把效率优化到让人满意的程度,却也不是一件容易的事情。也就是说,如何在第一个字符
阅读全文
摘要:在C语言中,static的字面意思很容易把我们导入歧途,其实它的作用有三条。(1)先来介绍它的第一条也是最重要的一条:隐藏。当我们同时编译多个文件时,所有未加static前缀的全局变量和函数都具有全局可见性。为理解这句话,我举例来说明。我们要同时编译两个源文件,一个是a.c,另一个是main.c。下面是a.c的内容chara='A';//globalvariablevoidmsg(){printf("Hello\n");}下面是main.c的内容intmain(void){externchara;//externvariablemustbedeclaredb
阅读全文
摘要:有虚函数的类,其对象占用的内存空间的前四个字节存放指向虚表的指针。非虚拟继承时,无论派生类是否定义新的虚函数,基类和派生类总是共享一个虚函数表,不需要另加指向虚函数的指针。2. 虚拟继承时,若是派生类只是继承或重写基类中虚函数,则基类和派生类是共享一个虚函数表;若派生类新定义了虚函数,则需要新加一个虚指针指向新的虚函数表。 1. 用virtual关键字申明的函数叫做虚函数,虚函数肯定是类的成员函数。2.存在虚函数的类都有一个一维的虚函数表叫做虚表。类的对象有一个指向虚表开始的虚指针。虚表是和类对应的,虚表指针是和对象对应的。3.多态性是一个接口多种实现,是面向对象的核心。分为类的多态性和函数的
阅读全文
摘要:在TCP/IP协议中,TCP协议提供可靠的连接服务,采用三次握手建立一个连接,如图1所示。(1) 第一次握手:建立连接时,客户端A发送SYN包(SYN=j)到服务器B,并进入SYN_SEND状态,等待服务器B确认。(2) 第二次握手:服务器B收到SYN包,必须确认客户A的SYN(ACK=j+1),同时自己也发送一个SYN包(SYN=k),即SYN+ACK包,此时服务器B进入SYN_RECV状态。(3) 第三次握手:客户端A收到服务器B的SYN+ACK包,向服务器B发送确认包ACK(ACK=k+1),此包发送完毕,客户端A和服务器B进入ESTABLISHED状态,完成三次握手。完成三次握手,客户
阅读全文
摘要:给定一个长度为N的整数数组,只允许用乘法,不能用除法,计算任意(N-1)个数的组合中乘积最大的一组,并写出算法的时间复杂度问题:给定一个长度为N的整数数组,只允许用乘法,不能用除法,计算任意(N-1)个数的组合中乘积最大的一组。我们可以把所有可能的(N-1)个数的组合找出来,分别计算它们的乘积,并比较大小。由于总共有N个(N-1)个数的组合,总的时间复杂度为O(N2),显然这不是最好的解法。OK,以下解答来自编程之美解法1解法一:采用空间换时间的策略,用两个数组分别记录原整数数组前缀与后缀的叠乘积(前缀s[i]=),再以间隔1个数的方式将这两个数组乘起来就得到所有n-1个数的乘积数组(具体看代
阅读全文
摘要:用Python的MySQLdb插入UTF-8编码的内容时经常会出问题,主要是Mysql数据库编码和python程序文档编码两个方面。本文旨在提供一个例子来解决Python插入UTF8中文数据的问题使用环境:Python 2.5 for WindowsMySQLdb 1.2.2 for Python 2.5MySQL 4.1.22源代码如下:#!/usr/bin/env python#coding=utf-8import MySQLdb#DB parameterstrHost = '192.168.6.184'strDB = 'test'strUser =
阅读全文
摘要:函数模板与类模板有什么区别?答:函数模板的实例化是由编译程序在处理函数调用时自动完成的,而类模板的实例化必须由程序员在程序中显式地指定。即函数模板允许隐式调用和显式调用而类模板只能显示调用这期间有涉及到函数模板与模板函数,类模板与模板类的概念(类似于类与类对象的区别)请看下面例子注意:模板类的函数声明和实现必须都在头文件中完成,不能像普通类那样声明在.h文件中实现在.cpp文件中,原因可以看链接http://hi.baidu.com/cn_rigel/blog/item/6cf6fc083723e2286a60fb53.html#include"stdafx.h"#incl
阅读全文
摘要:malloc与new(2009-12-07 20:01:31)转载▼标签:杂谈 原型:extern void *malloc(unsigned int num_bytes);首先,介绍一下malloc的原型: 头文件:#include 或 #include (注意:alloc.h 与 malloc.h 的内容是完全一致的。)功能:分配长度为num_bytes字节的内存块说明:如果分配成功则返回指向被分配内存的指针,否则返回空指针NULL。当内存不再使用时,应使用free()函数将内存块释放。相同点:malloc和new都是分配到堆上,栈上分自动变量(就是局部变量)区别:1、new 是c+...
阅读全文
摘要:成员函数被重载的特征:(1)相同的范围(在同一个类中);(2)函数名字相同;(3)参数不同;(4)virtual 关键字可有可无。隐藏与重载的区别:(1)不同的范围(2)函数名相同(3)参数不同(4)virtual 关键字可有可无覆盖是指派生类函数覆盖基类函数,特征是:(1)不同的范围(分别位于派生类与基类);(2)函数名字相同;(3)参数相同;(4)基类函数必须有virtual 关键字。隐藏与覆盖的区别:(1)不同的范围(2)函数名相同(3)参数相同(4)基类没有virtual关键字 1 #include 2 #include 3 using namespace std; 4 5 cl...
阅读全文
摘要:有许多情况下,我们需要查看一个进程当前打开了哪些文件,反过来我们也希望知道某一个文件正在被哪些进程所读写。在Linux下有许多有用的工具可以帮我们完成这两个工作,下面介绍这两个工具:lsof与fuser。 fuser find files or sockets' user 格式:fuser [选项] fname -k 如果找到打开文件的进程,则发送SIGKILL杀死此进程,通过-i选项,可以为用户提供交互选择 -signal 用户可以指定使用何种信号去kill进程,如果-k参数指定,则忽略此参数 -m 如果指定一个文件,则所有访问那个文件所在文件系统的进程都会被列出来 -n type
阅读全文
摘要:一.在c中分为这几个存储区1.栈-由编译器自动分配释放2.堆-一般由程序员分配释放,若程序员不释放,程序结束时可能由OS回收3.全局区(静态区),全局变量和静态变量的存储是放在一块的,初始化的全局变量和静态变量在一块区域,未初始化的全局变量和未初始化的静态变量在相邻的另一块区域。-程序结束释放4.另外还有一个专门放常量的地方。-程序结束释放在函数体中定义的变量通常是在栈上,用malloc,calloc,realloc等分配内存的函数分配得到的就是在堆上。在所有函数体外定义的是全局量,加了static修饰符后不管在哪里都存放在全局区(静态区),在所有函数体外定义的static变量表示在该文件中有
阅读全文
摘要:涉及到c++中求类大小时需要特别注意一下几点1.为类的非静态成员数据的类型大小之和.2.有编译器额外加入的成员变量的大小,用来支持语言的某些特性(如:指向虚函数的指针、虚继承、多重继承).3.为了优化存取效率,进行的边缘调整.4. 与类中的构造函数,析构函数以及其他的成员函数无关.5. 私有继承,会去继承之前的私有成员变量么? 会...在内存中仍然分配相应的空间,只是在子类中是不可见的!6. 在做多层次的继承类大小时某个子类的类大小总是等于父类的大小加上子类中数据成员和是否有虚函数,是否是虚继承等因素来决定。空类大小为1 首先:我们要知道什么是类的实例化,所谓类的实例化就是在内存中分配一块地.
阅读全文
摘要:1. order byset hive.mapred.mode=nonstrict; (default value / 默认值)set hive.mapred.mode=strict;order by 和数据库中的Order by 功能一致,按照某一项 & 几项 排序输出。与数据库中 order by 的区别在于在hive.mapred.mode = strict 模式下 必须指定 limit 否则执行会报错。hive> select * from test order by id; FAILED: Error in semantic analysis: 1:28 In stri
阅读全文
浙公网安备 33010602011771号