03 2023 档案

摘要:一、线程池的由来 (一)为什么会有线程池? 想要深入理解线程池的原理得先知道为什么需要线程池。 首先你要明白,线程是一个重资源,JVM 中的线程与操作系统的线程是一对一的关系,所以在 JVM 中每创建一个线程就需要调用操作系统提供的 API 创建线程,赋予资源,并且销毁线程同样也需要系统调用。 而系 阅读全文
posted @ 2023-03-31 21:24 ImreW 阅读(37) 评论(0) 推荐(0) 编辑
摘要:一、题目 给你一个字符串 s,找到 s 中最长的回文子串。 如果字符串的反序与原始字符串相同,则该字符串称为回文字符串。 二、思路 dp[i][j] = (s[i] == s[j]) and dp[i + 1][j - 1] 三、代码 #include <iostream> #include <st 阅读全文
posted @ 2023-03-31 20:17 ImreW 阅读(10) 评论(0) 推荐(0) 编辑
摘要:一、题目 给定两个字符串 text1 和 text2,返回这两个字符串的最长 公共子序列 的长度。如果不存在 公共子序列 ,返回 0 。 二、思路 三、代码 class Solution: def longestCommonSubsequence(self, text1: str, text2: s 阅读全文
posted @ 2023-03-30 21:28 ImreW 阅读(8) 评论(0) 推荐(0) 编辑
摘要:关于图的几个概念定义: 连通图:在无向图中,若任意两个顶点vi与vj都有路径相通,则称该无向图为连通图。 强连通图:在有向图中,若任意两个顶点都有路径相通,则称该有向图为强连通图。 连通网:在连通图中,若图的边具有一定的意义,每一条边都对应着一个数,称为权;权代表着连接连个顶点的代价,称这种连通图叫 阅读全文
posted @ 2023-03-30 10:19 ImreW 阅读(49) 评论(0) 推荐(0) 编辑
摘要:一、题目 给定一个非负整数 numRows,生成「杨辉三角」的前 numRows 行。 二、思路 杨辉三角,是二项式系数在三角形中的一种几何排列。它是中国古代数学的杰出研究成果之一,它把二项式系数图形化,把组合数内在的一些代数性质直观地从图形中体现出来,是一种离散型的数与形的结合。 三、代码 cla 阅读全文
posted @ 2023-03-29 20:03 ImreW 阅读(25) 评论(0) 推荐(0) 编辑
摘要:一、题目 给定一个非负整数数组 nums ,你最初位于数组的 第一个下标 。 数组中的每个元素代表你在该位置可以跳跃的最大长度。 判断你是否能够到达最后一个下标。 二、思路 别想那么多,就挨着跳吧 三、代码 class Solution: def canJump(self, nums: List[i 阅读全文
posted @ 2023-03-25 19:20 ImreW 阅读(7) 评论(0) 推荐(0) 编辑
摘要:一、题目 二、思路 要使lcm(a, b) - gcd(a, b)尽量大,应该让a和b的最小公倍数尽量大,a和b的最大公约数尽量小。当a、b分别取n -1 和 n时满足该条件:最小公倍数为两者乘积,最大公约数为1。 三、代码 #include<iostream> using namespace st 阅读全文
posted @ 2023-03-25 17:21 ImreW 阅读(34) 评论(0) 推荐(0) 编辑
摘要:一、题目 给定一个长度为 n 的整数数组 height 。有 n 条垂线,第 i 条线的两个端点是 (i, 0) 和 (i, height[i]) 。 找出其中的两条线,使得它们与 x 轴共同构成的容器可以容纳最多的水。 返回容器可以储存的最大水量。 说明:你不能倾斜容器。 二、思路 初始化: 双指 阅读全文
posted @ 2023-03-22 10:21 ImreW 阅读(12) 评论(0) 推荐(0) 编辑
摘要:原文链接:进程间的通信方式——pipe(管道) 1.进程间通信 每个进程各自有不同的用户地址空间,任何一个进程的全局变量在另一个进程中都看不到,所以进程之间要交换数据必须通过内核,在内核中开辟一块缓冲区,进程A把数据从用户空间拷到内核缓冲区,进程B再从内核缓冲区把数据读走,内核提供的这种机制称为进程 阅读全文
posted @ 2023-03-20 21:58 ImreW 阅读(385) 评论(0) 推荐(0) 编辑
摘要:一个 socket 是否设置为阻塞模式,只会影响到 connect/accept/send/recv 等四个 socket API 函数,不会影响到 select/poll/epoll_wait 函数,后三个函数的超时或者阻塞时间是由其函数自身参数控制的。 (一)原理分析 下面详细的解释,为了方便解 阅读全文
posted @ 2023-03-20 20:59 ImreW 阅读(419) 评论(0) 推荐(0) 编辑
摘要:头文件:#include <stdio.h> sprintf()函数用于将格式化的数据写入字符串。 int sprintf(char *str, char * format [, argument, ...]); char *str为要写入的字符串。 char * format为格式化字符串。 ar 阅读全文
posted @ 2023-03-20 19:18 ImreW 阅读(398) 评论(0) 推荐(0) 编辑
摘要:一、bzero 功能:bzero把目标字符串中指定的数目的字节置为0 #include <strings.h> void bzero(void *dest,size_t nbytes); 参数:1.字符串 2.指定的字节 二、bcopy 功能:将指定数目的字节从源字符串移动到目标字符串中 #incl 阅读全文
posted @ 2023-03-20 19:11 ImreW 阅读(107) 评论(0) 推荐(0) 编辑
摘要:(一)epoll 交互过程 一个客户端和使用了 epoll 的服务端的交互过程如下图所示。 1.epoll 原理 (1)select 的问题 select 的问题在于描述符的限制,能监控的文件描述符最大为 FD_SETSIZE,对于连接数很多的场景就无法满足; 另外select 还有一个问题,每调用 阅读全文
posted @ 2023-03-20 19:03 ImreW 阅读(79) 评论(0) 推荐(0) 编辑
摘要:一、题目 罗马数字包含以下七种字符: I, V, X, L,C,D 和 M。 二、思路 根据罗马数字的唯一表示法,为了表示一个给定的整数 num,我们寻找不超过 num 的最大符号值,将 num 减去该符号值,然后继续寻找不超过 num 的最大符号值,将该符号拼接在上一个找到的符号之后,循环直至 n 阅读全文
posted @ 2023-03-20 14:30 ImreW 阅读(7) 评论(0) 推荐(0) 编辑
摘要:(一)引入:构造大根堆 首先我们给定一个无序的序列,将其看做一个堆结构,一个没有规则的二叉树,将序列里的值按照从上往下,从左到右依次填充到二叉树中。 对于一个完全二叉树,在填满的情况下(非叶子节点都有两个子节点),每一层的元素个数是上一层的二倍,根节点数量是1,所以最后一层的节点数量,一定是之前所有 阅读全文
posted @ 2023-03-19 22:05 ImreW 阅读(88) 评论(0) 推荐(0) 编辑
摘要:一、题目 给你两个字符串 a 和 b ,它们长度相同。请你选择一个下标,将两个字符串都在 相同的下标 分割开。由 a 可以得到两个字符串: aprefix 和 asuffix ,满足 a = aprefix + asuffix ,同理,由 b 可以得到两个字符串 bprefix 和 bsuffix  阅读全文
posted @ 2023-03-19 21:27 ImreW 阅读(5) 评论(0) 推荐(0) 编辑
摘要:一、BUFSIZ定义 Linux平台 stdio.h: #define BUFSIZ _IO_BUFSIZlibio.h: #define _IO_BUFSIZ _G_BUFSIZ_G_config.h: #define _G_BUFSIZ 8192 二、BUFSIZ作用 程序输出时,为减轻系统负担 阅读全文
posted @ 2023-03-19 21:05 ImreW 阅读(179) 评论(0) 推荐(0) 编辑
摘要:功能描述:fcntl函数可以用来对已打开的文件描述符进行各种控制操作以改变已打开文件的的各种属性 文件控制函数 fcntl -- file control 头文件 #include <unistd.h> #include <fcntl.h> 函数原型 int fcntl(int fd, int cm 阅读全文
posted @ 2023-03-19 20:40 ImreW 阅读(646) 评论(0) 推荐(1) 编辑
摘要:(一)初探 在linux的网络编程中,很长的时间都在使用select来做事件触发。在linux新的内核中,有了一种替换它的机制,就是epoll。 相比于select,epoll最大的好处在于它不会随着监听fd数目的增长而降低效率。因为在内核中的select实现中,它是采用轮询来处理的,轮询的fd数目 阅读全文
posted @ 2023-03-19 19:25 ImreW 阅读(2221) 评论(0) 推荐(0) 编辑
摘要:PIL是Python Imaging Library,它为python解释器提供了图像编辑函数。的Image模块提供了一个具有相同名称的类,用于表示PIL图像。该模块还提供了许多出厂函数,包括从文件加载图像和创建新图像的函数。 (一)Image.convert() 说明: Image.convert 阅读全文
posted @ 2023-03-19 18:54 ImreW 阅读(41) 评论(0) 推荐(0) 编辑
摘要:一、题目 给定一个表示 DNA序列 的字符串 s ,返回所有在 DNA 分子中出现不止一次的 长度为 10 的序列(子字符串)。你可以按 任意顺序 返回答案。 二、思路 如此一来,一个长为 10 的字符串就可以用 20 个比特表示,而一个 int 整数有 32 个比特,足够容纳该字符串,因此我们可以 阅读全文
posted @ 2023-03-17 19:05 ImreW 阅读(22) 评论(0) 推荐(0) 编辑
摘要:(一)通俗解释 1.fit() Method calculates the parameters μ and σ and saves them as internal objects. 解释:计算数据的参数,(均值),(标准差),并存储在对象中。 2.transform() Method using 阅读全文
posted @ 2023-03-16 12:08 ImreW 阅读(53) 评论(0) 推荐(0) 编辑
摘要:一、题目 给定一个链表的头节点 head ,返回链表开始入环的第一个节点。 如果链表无环,则返回 null。 如果链表中有某个节点,可以通过连续跟踪 next 指针再次到达,则链表中存在环。 为了表示给定链表中的环,评测系统内部使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。如 阅读全文
posted @ 2023-03-15 10:18 ImreW 阅读(12) 评论(0) 推荐(0) 编辑
摘要:一、多态的概念 面向对象的三大特性:封装、继承、多态。多态即多种形态,具体的来说就是,针对同一种行为,不同的对象执行其会产生不同的结果。而之所以“不同的对象”会执行同一种行为,是因为这些对象具有继承关系。 多态是在不同继承关系的类对象,去调用同一函数,产生了不同的行为。比如 Student 继承了 阅读全文
posted @ 2023-03-14 16:56 ImreW 阅读(57) 评论(0) 推荐(0) 编辑
摘要:一、题目 给你两个单链表的头节点 headA 和 headB ,请你找出并返回两个单链表相交的起始节点。如果两个链表不存在相交节点,返回 null 。 图示两个链表在节点 c1 开始相交: 二、思路 每步操作需要同时更新指针 pA 和 pB。 如果指针 pA 不为空,则将指针 pA 移到下一个节点; 阅读全文
posted @ 2023-03-14 15:24 ImreW 阅读(5) 评论(0) 推荐(0) 编辑
摘要:一、题目 给你一个链表的头节点 head ,判断链表中是否有环。 如果链表中有某个节点,可以通过连续跟踪 next 指针再次到达,则链表中存在环。 为了表示给定链表中的环,评测系统内部使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。注意:pos 不作为参数进行传递 。仅仅是为了 阅读全文
posted @ 2023-03-13 14:21 ImreW 阅读(12) 评论(0) 推荐(0) 编辑
摘要:需要导入的库: import random import string (一)随机整数 1.包含上下限:[a, b] random.randint(a,b) 在python中的random.randint(a,b)用于生成一个指定范围内的整数。其中参数a是下限,参数b是上限,生成的随机数n: a < 阅读全文
posted @ 2023-03-12 21:55 ImreW 阅读(656) 评论(0) 推荐(0) 编辑
摘要:一、题目 给定一个 m x n 的矩阵,如果一个元素为 0 ,则将其所在行和列的所有元素都设为 0 。请使用 原地 算法。 二、思路 我们可以对方法二进一步优化,只使用一个标记变量记录第一列是否原本存在 000。这样,第一列的第一个元素即可以标记第一行是否出现 000。但为了防止每一列的第一个元素被 阅读全文
posted @ 2023-03-12 21:34 ImreW 阅读(7) 评论(0) 推荐(0) 编辑
摘要:(一)numpy.linspace 说明: 通过定义均匀间隔创建数值序列。 原型: numpy.linspace( start, #序列的起始值。 stop, #序列的结束值,除非端点设置为 False。 num=50, #要生成的样本数。 默认值为 50。 endpoint=True, #如果为真 阅读全文
posted @ 2023-03-12 14:11 ImreW 阅读(29) 评论(0) 推荐(0) 编辑
摘要:激活函数(Activation Function)是一种添加到人工神经网络中的函数,旨在帮助网络学习数据中的复杂模式。类似于人类大脑中基于神经元的模型,激活函数最终决定了要发射给下一个神经元的内容。 典型的阶跃函数作为激活函数为例,下图展示了一个神经元是如何喂入激活函数以及如何得到该神经元最终的输出 阅读全文
posted @ 2023-03-12 13:34 ImreW 阅读(3967) 评论(0) 推荐(0) 编辑
摘要:一、题目 给你一个整数数组 nums,将它重新排列成 nums[0] < nums[1] > nums[2] < nums[3]... 的顺序。 你可以假设所有输入数组都可以得到满足题目要求的结果。 二、思路 主要思路就是你会发现,奇数索引上规律是从大到小,偶数索引上规律也是从大到小,再次发现先对奇 阅读全文
posted @ 2023-03-09 22:04 ImreW 阅读(12) 评论(0) 推荐(0) 编辑
摘要:原文链接:EPOLL原理详解 从事服务端开发,少不了要接触网络编程。epoll作为linux下高性能网络服务器的必备技术至关重要,nginx、redis、skynet和大部分游戏服务器都使用到这一多路复用技术。 一、从网卡接收数据说起 下图是一个典型的计算机结构图,计算机由CPU、存储器(内存)、网 阅读全文
posted @ 2023-03-09 11:06 ImreW 阅读(26) 评论(0) 推荐(1) 编辑
摘要:原文链接:Makefile教程 会不会写makefile,从一个侧面说明了一个人是否具备完成大型工程的能力。因为,makefile关系到了整个工程的编译规则。一个工程中的源文件不计数,其按类型、功能、模块分别放在若干个目录中,makefile定义了一系列的规则来指定,哪些文件需要先编译,哪些文件需要 阅读全文
posted @ 2023-03-08 21:56 ImreW 阅读(44) 评论(0) 推荐(0) 编辑
摘要:原文链接:linux中fork()函数详解 一、fork入门知识 (一)pid_t pid_t类似一个类型,就像int型一样,int型定义的变量都是整型的,pid_t定义的类型都是进程号类型。 pid_t是一个typedef定义类型。用它来表示进程id类型。 sys/types.h: typedef 阅读全文
posted @ 2023-03-07 20:53 ImreW 阅读(40) 评论(0) 推荐(0) 编辑
摘要:一、题目 给定一个字符串 s ,请你找出其中不含有重复字符的 最长子串 的长度。 二、思路 在每一步的操作中,我们会将左指针向右移动一格,表示 我们开始枚举下一个字符作为起始位置,然后我们可以不断地向右移动右指针,但需要保证这两个指针对应的子串中没有重复的字符。在移动结束后,这个子串就对应着 以左指 阅读全文
posted @ 2023-03-07 12:04 ImreW 阅读(11) 评论(0) 推荐(0) 编辑
摘要:(一)Linux中“一切皆文件” 1.文件 在Linux系统中,一切皆文件,文件类型根据其表示的意义,分为: 普通文件 设备文件:代表一个具体的硬件设备 管道文件、FIFO文件:具有特殊意义的文件,用于进程间通信; 套接字文件:用于网络通信; 所有这些文件都可以用一套API来操作,最基本的四个API 阅读全文
posted @ 2023-03-06 16:17 ImreW 阅读(1833) 评论(0) 推荐(0) 编辑
摘要:一、题目 给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标。 你可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答案里不能重复出现。 你可以按任意顺序返回答案。 二、思路 这样我们创建一个哈希表 阅读全文
posted @ 2023-03-06 14:21 ImreW 阅读(7) 评论(0) 推荐(0) 编辑
摘要:(一)MPI简介 MPI是一个跨语言的通讯协议,用于编写并行计算机。支持点对点和广播。MPI是一个信息传递应用程序接口,包括协议和和语义说明,他们指明其如何在各种实现中发挥其特性。 MPI的目标是高性能,大规模性,和可移植性。MPI在今天仍为高性能计算的主要模型。与OpenMP并行程序不同,MPI是 阅读全文
posted @ 2023-03-05 21:58 ImreW 阅读(77) 评论(0) 推荐(0) 编辑
摘要:(一)int argc argc是命令行总的参数个数 (二)const char *argv[] argv[]为保存命令行参数的字符串指针,其中第0个参数是程序的全名,以后的参数为命令行后面跟的用户输入的参数, argv参数是字符串指针数组,其各元素值为命令行中各字符串(参数均按字符串处理)的首地址 阅读全文
posted @ 2023-03-05 18:48 ImreW 阅读(644) 评论(0) 推荐(0) 编辑
摘要:(一)介绍 函数名: exit() 所在头文件:stdlib.h 功能: 关闭所有文件,终止正在执行的进程。 exit(1)表示异常退出.这个1是返回给操作系统的。 exit(x)(x不为0)都表示异常退出 exit(0)表示正常退出 exit()的参数会被传递给一些操作系统,包括UNIX,Linu 阅读全文
posted @ 2023-03-05 18:29 ImreW 阅读(124) 评论(0) 推荐(0) 编辑
摘要:一、题目 编写一个高效的算法来搜索 m x n 矩阵 matrix 中的一个目标值 target 。该矩阵具有以下特性: 每行的元素从左到右升序排列。 每列的元素从上到下升序排列。 二、思路 数组从左到右和从上到下都是升序的,如果从右上角出发开始遍历呢? 三、代码 public boolean se 阅读全文
posted @ 2023-03-05 16:40 ImreW 阅读(11) 评论(0) 推荐(0) 编辑
摘要:(一)说明 sscanf的作用:从一个字符串中读进于指定格式相符的数据。利用它可以从字符串中取出整数、浮点数和字符串。 sscanf和scanf的区别:scanf是以键盘作为输入源,sscanf是以字符串作为输入源。 (二)函数原型 #include <stdio.h> int sscanf( co 阅读全文
posted @ 2023-03-04 20:11 ImreW 阅读(24) 评论(0) 推荐(0) 编辑
摘要:一、题目 编写一个函数,输入是一个无符号整数(以二进制串的形式),返回其二进制表达式中数字位数为 '1' 的个数 二、思路 观察这个运算:n & (n−1),其运算结果恰为把 n 的二进制位中的最低位的 1变为 0 之后的结果。 三、代码 class Solution { public: int h 阅读全文
posted @ 2023-03-04 19:52 ImreW 阅读(4) 评论(0) 推荐(0) 编辑
摘要:一、题目 给你链表的头结点 head ,请将其按 升序 排列并返回 排序后的链表 。 二、思路 找到链表的中点,以中点为分界,将链表拆分成两个子链表。寻找链表的中点可以使用快慢指针的做法,快指针每次移动 222 步,慢指针每次移动 111 步,当快指针到达链表末尾时,慢指针指向的链表节点即为链表的中 阅读全文
posted @ 2023-03-03 16:59 ImreW 阅读(6) 评论(0) 推荐(0) 编辑
摘要:一、题目 给定一个单链表的头节点 head ,其中的元素 按升序排序 ,将其转换为高度平衡的二叉搜索树。 本题中,一个高度平衡二叉树是指一个二叉树每个节点 的左右两个子树的高度差不超过 1。 二、思路 由于构造出的二叉搜索树的中序遍历结果就是链表本身,因此我们可以将分治和中序遍历结合起来,减少时间复 阅读全文
posted @ 2023-03-02 21:33 ImreW 阅读(9) 评论(0) 推荐(0) 编辑
摘要:一、题目 给定两个整数数组 preorder 和 inorder ,其中 preorder 是二叉树的先序遍历, inorder 是同一棵树的中序遍历,请构造二叉树并返回其根节点。 二、思路 3 / \ 9 20 / / \ 8 15 7 / \ 5 10 / 4 preorder = [3, 9, 阅读全文
posted @ 2023-03-01 12:24 ImreW 阅读(16) 评论(0) 推荐(0) 编辑
摘要:原文链接:并行编程OpenMP基础及简单示例 一、OpenMP基本概念 OpenMP是一种用于共享内存并行系统的多线程程序设计方案,支持的编程语言包括C、C++和Fortran。OpenMP提供了对并行算法的高层抽象描述,特别适合在多核CPU机器上的并行程序设计。 编译器根据程序中添加的pragma 阅读全文
posted @ 2023-03-01 11:07 ImreW 阅读(129) 评论(0) 推荐(0) 编辑
摘要:(一)串行快速排序 程序中 j = right - 1; 语句说明:此句直接从倒数第二个开始,同时由于--j会判断倒数第三个。这是因为在使用三数中值分割后:最后一个一定大于枢纽元,经过交换,倒数第二个就是枢纽元。 #include <iostream> #define CUTOFF 10 // 定义 阅读全文
posted @ 2023-03-01 07:44 ImreW 阅读(59) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示