- 博客(20)
- 资源 (1)
- 收藏
- 关注
原创 快速排序之螺钉螺母匹配
螺钉和螺母排序问题:现给定一堆螺钉和螺母(螺母和螺钉一对一唯一配对,即不存在相同大小的螺钉或螺母),现需要对螺母和螺钉按尺寸的大小排序。但是要求是不能直接根据螺钉或螺母尺寸大小进行排序,仅能通过给定的一个match函数比较大小(match()方法比较螺母和螺钉的尺寸大小,0表示两者匹配,1表示螺母尺寸大于螺钉尺寸,-1表示螺母尺寸小于螺钉尺寸)。给定的螺钉螺母类:class Nuts_Screws { class Nuts { private int id;//螺母标号 private i
2021-10-05 15:45:11 1085
原创 跑马问题
64匹马,8个赛道,找出跑得最快的4匹马,至少比赛几场?下面是我对这道题的理解,借用了64匹马,8个赛道问题的帖子。相信这个问题不少同学在面试过程中遇到过。这题是道智力题,我们应该通过画图的方式来实现。我们知道油64匹马,8个跑道,那么根据贪心思想,我们应该让所有马都上跑道,这样跑8次,可以淘汰一半的马。如下图所示:我们得到每组的前四名,共计8 * 4 = 32匹,接下来我们应该怎么做呢,4匹4匹的荷载一起,四个跑道比4次吗?答案是否定的,这样等于没有利用每个赛道的4匹之间的先后属性,我们应该使用每
2021-05-23 10:49:03 560
原创 油桶问题
现有一个有一个长度为n千米的环形跑道,跑道上随机摆放了k个油桶(油桶的油量不定),将跑道随机的分为k段,先需要找到一个合适的起点,能遍历完整条跑道,汽车耗油率为1个单位/千米。我们可以将上述问题用如下的示意图表示,图中黄色圆圈代表随机分布在环形跑道上的k个油桶,车辆的初始油量为0,选择一个起点开始,则将油桶的油加入到车的总油量中。注意隐含条件,如果车出发时总油量不大于等于下一段要行驶的距离,说明无法遍历完整个跑道。很自然的我们想到直接遍历方法,外循环选择起点,内循环负责检验起点是否合法,合法则返回。这
2021-05-22 21:24:28 1449
原创 位图
位图是一种数据结构,是利用二进制的01特性进行储存的一种技术,这种方式可以很大程度的节约内存,因为只需要存储二进制位即可。我们先看一道经典的题: 有0-40亿的QQ用户,每个用户有在线/离线两种状态,目前只有一台1G内存的机器,实现一种可行方式,能够通过输入QQ号,查询用户当前状态。咋一看这题可以直接弄一个哈希表<key:QQ, value:State>进行存储,当我们试着去用一个哈希表存储40亿条整形数据时,我们计算一下需要的内存,一个整型数据是32位的,4个字节(Byte,以下简称B)
2021-05-22 14:41:00 589
原创 减绳子I-数学方法
减绳子是《剑指offer第二版》添加的动态规划的一道例题,题目大致描述为:给你一根长度为 n 的绳子,请把绳子剪成整数长度的 m 段(m、n都是整数,n>1并且m>1),每段绳子的长度记为 k[0],k[1]…k[m-1] 。请问 k[0]k[1]…*k[m-1] 可能的最大乘积是多少?例如,当绳子的长度是8时,我们把它剪成长度分别为2、3、3的三段,此时得到的最大乘积是18。对于这样一道问题,我们可以进行等效:有m个数和为定值,求积的最大值。有下列等式表示对于这个问题,其实数学上是有
2020-10-31 20:46:20 221
原创 多线程回顾-02
上一节我们说到了线程的基本概念和java中构造线程对象的两种方式。今天我们来介绍以下线程之间的关系。这里说的线程是指交互线程(若并发执行的多个线程之间需要共享资源或交换数据,则称这组线程为交互线)。并发执行的交互线程之间存在与时间有关的错误,这是因为线程的执行是根据操作系统自动调度的,如果一个线程修改了共享资源,那么另一个线程再使用这个共享资源的时候,并不知道它被另外的线程使用过,会导致bug。所以有必要研究交互线程之间存在的问题,并针对性解决。交互线程之间存在两种关系:竞争和协同线程之间的竞争是指两
2020-06-23 11:54:27 175
原创 多线程回顾-01
好久没法推文了,因为这次疫情的原因,小编也是没能去上学,已经待在家好一阵了,一直想写下推文,但是不知道些什么,看了看之前的板块,我打算先把砌砖系列先完善一下,所以今天先和大家回顾一下Java多线程的一些基础知识,并演示一下我写的一些程序。多线程部分我打算分两个部分:第一部分介绍多线程的基本概念及线程如何构造,第二部分我们介绍多线程之间存在的问题及处理方式。接下来,我们进入今天的正题–多线程的基本概念及线程如何构造说到多线程,不得不先说下多进程,进程和线程虽一字之差,但是是不同的概念。我们先给出进程和线
2020-06-23 11:48:51 161
原创 浅析pandas的两种数据结构
pandas是python数据分析处理中非常常用且十分重要的第三方库,该库主要有两种数据结构:Series和DataFrame,相信很多学python的人都用过pandas.readcsv(filepath)去读取csv文件,然后就是对读取完的数据对象一顿操作,但是我在使用该函数读文件时没有考虑过这个操作很像字典的对象到底是什么东西。其实读取文件产生的对象就是DataFrame结构,这种结构的访问...
2019-12-06 20:18:01 808
原创 Python的赋值逻辑
相信学过Python的人都遇到过类似于下面的问题:#Solution 01a=[1,2]b=ab[1]=0print(a)#Outpot [1,0]#solution 02a=[1,2]b=ab=[0,1]print(a)#Output [1,2]两种情况都是用变量b去承接了变量a的值,然后修改b的值,但是Solution 01情况下a的值改变了,但是Solution...
2019-10-05 11:39:01 332
原创 利用Python实现线性结构-单链表
单链表是一种最为简单的线性结构,相信接触过数据结构的兄弟姐妹们都不陌生。我们在上这门课的时候大多数时候是基于C、C++或者java实现链表结构的。但是老师当时就说过,数据结构是一种结构,并不与某种特定的结构绑定,这样说也没错,我们往往对于上述三种语言的版本非常熟悉,不知道大家有没有想过通过当前最火的语言-Python实现,Python作为一种不需要定义类型的语言,天生就有着可以用短小精悍代码行数干...
2019-08-20 17:58:05 211
原创 基于JDBC的MySQL数据库的增、删、改、查
上次我们已经谈到如何利用JDBC连接MySQL数据库,详见基于JDBC的mysql数据库连接。今天我们在此基础上讨论对MySQL数据库的增、删、改、查操作。首先,在MySql数据库中新建一张表studenttable,就建在test数据库下。建立studenttable的sql指令如下:CREATE TABLE 'studenttable' ( 'UserName' char(12) ...
2019-08-08 21:56:53 324
原创 基于JDBC的mysql数据库连接
JDBC(Java DataBase Connection)是基于java的、用于访问关系数据库的一种应用接口。JDBC提供多种数据库驱动程序类型,提供执行SQL语句来曹忠关系数据库的方法,使得java应用程序具有访问不同数据库的能力。本次实验采用的是利用JDBC接口连接MySQL数据库。MySQL数据库是一个跨平台的开方源码的关系型数据库管理系统,支持SQL,支持客户-服务器结构。具有体积小、...
2019-08-08 09:41:03 366
原创 基于UDP的组播通信
在分布式系统中,进程间的通信有很多类型,一对一的通信叫做单播(unicast),一对多的通信称为组播(multicast),一对所有的通信称为广播(broadcast)。UDP数据报通信支持单播和组播,组播通信用于视频会议、技术推送、为用户群提供软件升级、共享白板式多媒体等场合。就像每个广播会约定一个广播频率,在电台覆盖的范围内,将一个收音机调节到指定频率就可以收听到该电台的广播内容。UDP组播...
2019-08-06 21:31:06 2961
原创 基于UDP的Socket通信
与TCP对应的UDP协议,是传输层的另一个协议,它只在IP协议上增加了应用程序多道处理和简单的错误校验功能。UDP从应用程序接过报文,附上源端口和目的端口以及length、checksum字段成为UDP段,就直接递交给网络层;网络层将UDP段封装在IP数据报中后,尽力而为的将数据报传递给目标主机。若数据报到达接收主机,UDP将根据IP地址和两个端口,将段中数据交给相应进程。其间,两个收发进程的...
2019-08-05 21:02:11 522
原创 基于TCP连接的Socket通信
记得《第一行代码》的作者郭霖说过,现在移动互联网已经处于下半场,未来是万物互联的时代。在万物互联时代,有两点是十分重要的,一个是人工智能,另一个就是网络。而网络的骨架就是各种各样的协议,TCP协议作为传输层的可靠交付协议,在网络中扮演着十分关键的角色。TCP(Transmission Control Protocol,传输控制协议)是一个面向连接的协议,通过建立TCP连接以及采取流量控制、顺序编...
2019-07-26 22:28:47 466
原创 寻觅素数检测法
素数是一种除了拥有它本身和1以外作为因数,没有其它整因数的数。这种数有着非常重要的应用。特别是在密码学领域,RSA是一种分组密码,其理论基础是一种特殊的可逆模指数运算,其安全性基于分解大整数n=pq的困难性,而这个困难主要来源于大素数p和q。目前并没有直接产生大素数的方法,只能通过随机选择再验证的方式确定大素数。主要有三种:暴力试除法、改进试除法以及统计素性检测法。下面分别说明各种求解算法的...
2019-07-20 16:26:18 195
原创 毕业设计-数组变换04
经过前面三节的讨论,我们已经获得了b(n)、order(n)和seq(n),这一节我们讨论的是利用b(n)和与b(n)相同维度的数组time(n)共同产生要求的数组。问题描述:给定两个相同纬度的数组b(n)和time(n),要求找出b(n)中相同元素所对应脚标中time(n)中的最大值所组成的数组max(m),并按照b(n)中元素大小排序,其中m表示b(n)中元素的最大值。问题示例:1例1:...
2019-06-07 22:06:23 169
原创 毕业设计-数组变换03
从上两节毕业设计-数组变换01和毕业设计-数组变换02我们得到了b(n)和order(n),b(n)表示随机数组缩小后的数组,order(n)表示b(n)中相同元素出现的次序。今天我们要求的seq(n)是基于这两个数组,seq(n)表示b(n)下标的排列顺序,排序依据是b(n)下标对应的元素以及order(n)相同下标对应的元素。也就是说,首先看b(n)中的排序,当b(n)中元素相同,再看orde...
2019-06-07 22:03:57 616
原创 毕业设计-数组变换02
今天,小编和大家讨论数组变换02这一节。上节毕业设计-数组变换01中我们讲到得到了b(n)。b(n)是一个将随机数组缩小得到的数组,对于这一个数组,我们如何得到数组中的元素在数组中出现的次序呢?问题示例:给定一个数组b(n),要求输出b(n)中元素出现次序的数组order(n)。例1:b(n)=(2,1,3,4,5); order(n)=(1,1,1,1,1);例2:b(n)=(5...
2019-06-07 22:00:58 173
原创 毕业设计-数组变换01
今天小编匆匆忙忙总算把毕业论文写完了,在这里呢,想把毕业设计的部分过程抽象成具体问题拿过来和大家讨论一下。我想着大致分为4个部分,每个部分都会有问题示例与代码实现。今天我们先说第一部分。问题示例:假如给定一个长度长度随机,元素也随机的整数数组a(n),要求按照数组原来的顺序,用[1-n]n个数来重组,变换结果用b(n)表示例1:a(n)=(3,2,5,6,7); b(n)=(2,1...
2019-06-04 16:17:03 163
TCP_Socket.zip
2019-07-26
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人