next

单向循环链表

淺唱寂寞╮ 提交于 2020-10-31 05:29:13
写给自己看的笔记, 很多坑 标准版 class Node(object): def __init__ (self, item): self.elem = item self.next = None class xunhuanLinkList(object): def __init__ (self, node= None): self. __head = node if node: node.next = node def is_empty(self): return self. __head is None def length(self): if self.is_empty(): return 0 else : cur = self. __head count = 1 while cur.next != self. __head : count += 1 cur = cur.next return count def tarvel(self): if self.is_empty(): return " 空链表 " else : cur = self. __head while cur.next != self. __head : print (cur.elem, end=( " " )) cur = cur.next print (cur.elem, end= " " )

集合去重复那些事(一)

China☆狼群 提交于 2020-10-31 03:12:55
-List<Object>去重遇到的坑,去校验数据库,根据对象内的字段值。供大家参考和尝试,如有问题及错误请留言。 1、反例:先看下这个for i 的从list中remove for (int i = 0; i < sysUserJobs.size(); i++) { if (sysUserMapper.getUserJobCount(sysUserJobs.get(i)) > 0) { sysUserJobs.remove(sysUserJobs.get(i)); } } 2、正例:stream去重复 sysUserJobs=sysUserJobs.stream() .filter(p->sysUserMapper.getUserJobCount(p) <= 0) .collect(Collectors.toList()); 3、正例:增强for 循环去重(由于时间原因没有验证期待你的尝试) for (SysUserJob sysUserJob:sysUserJobs ) { if (sysUserMapper.getUserJobCount(sysUserJob) > 0) { sysUserJobs.remove(sysUserJob); } } 4、正例:Iterator 去重 Iterator<SysUserJob> iterator = sysUserJobs

图论复习总结

六眼飞鱼酱① 提交于 2020-10-31 03:06:43
0.格式 适用范围 算法思想 代码实现:空间申请,初始化,算法步骤,输入输出,时间复杂度 1.dijkstra算法 适用范围:图论相关,单源最短路求法,无负权边, 算法思想:bfs,贪心。不断的使用可达集合中未被使用的最短的端点信息更新到达每一个顶点最短距离信息。 代码实现: plan A:使用邻接矩阵储存边信息(不可达初始化为无穷),使用数组维护最短路信息(初始化为无穷),使用数组维护到达每个端点的路径(数组保存元素表示上一个顶点,初始化为-1),使用数组维护未被访问集合(初始化为0表示未被访问)。 输入:V,E,源点。 初始化,让源点直接相连顶点的最短距离更新为最短直接相连距离。设置源点被访问。 每一步遍历找到最短未被访问端点,记它为已访问,用它更新其他顶点的最短路信息。 输出:到每个端点的最短路。 时间复杂度:O(n^2) 代码: #include <bits/stdc++.h> using namespace std; const int maxn= 1010 ; #define typec int const typec INF = 0x3f3f3f3f ; bool vis[maxn]; int pre[maxn]; int cost[maxn][maxn]; int lowcost[maxn]; void dijkstra(typec cost[][maxn]

新入职迁移orcale数据库到本地

冷暖自知 提交于 2020-10-31 02:03:17
一般公司新入职是需要拷贝公司数据库的表到本地,防止那些删库跑路的狠人动了数据库后跑路(当然实际情况是公司有专门的的数据库管理员,即DBA,如果你只是个开发人员,公司不会给你动库的权限的,所以你也不用担心删库跑路,那些都是DBA干的事情). 开发时我们都是需要把数据库拷贝到本地使用的,我今天要记录的就是我刚入职时,备份数据到本地的一些操作,希望能对你有一些帮助...(*❦ω❦) . 1. 首先在本地创建表空间和用户 创建表空间,指定表空间的位置,表空间的大小,并设置自动增长及自动增长值 create tablespace test datafile 'e:\test .dbf' size 100m autoextend on next 10m; 新建用户并指定表空间 create user test identified by test default tablespace test; 如果你的数据库已经创建过表空间,那么直接执行新建用户即可,并且创建时也无需指定表空间 create user test identified by test; 新建用户时一定要使用带有DBA权限的用户登录数据库进行创建,一般使用system用户 2. 给新建的用户授权(一般授予连接和开发者权限) 语法:grant 权限名称 to 用户名称 grant connect,resource to test;

蓝桥杯校内赛题解

只愿长相守 提交于 2020-10-31 02:02:50
A.1Mb=1024Kb B.多少个9 问题描述 在1至2019中,有多少个数的数位中包括数字9? 注意,有的数中的数位中包含多个9,这个数只算一次。例如,1999这个数包含三个数位9,但在计算时只算做一个数。 在考试中,不知道1至2019的至中包不包括2019这个数,从结果上看应该是包括的:[1,2029] C. 长草 问题描述 小明有一块空地,他将这块空地划分为 n 行 m 列的小块,每行和每列的长度都为 1。   小明选了其中的一些小块空地,种上了草,其他小块仍然保持是空地。   这些草长得很快,每个月,草都会向外长出一些,如果一个小块种了草,则它将向自己的上、下、左、右四小块空地扩展,这四小块空地都将变为有草的小块。   请告诉小明,k 个月后空地上哪些地方有草。 输入格式   输入的第一行包含两个整数 n, m。   接下来 n 行,每行包含 m 个字母,表示初始的空地状态,字母之间没有空格。如果为小数点,表示为空地,如果字母为 g,表示种了草。   接下来包含一个整数 k。 输出格式   输出 n 行,每行包含 m 个字母,表示 k 个月后空地的状态。如果为小数点,表示为空地,如果字母为 g,表示长了草。 样例输入 4 5 .g… … …g… … 2 样例输出 gggg. gggg. ggggg .ggg. 评测用例规模与约定   对于 30% 的评测用例,2 <= n

LeetCode 147. 对链表进行插入排序(Insertion Sort List)

孤人 提交于 2020-10-31 02:02:11
题目描述 对链表进行插入排序。 插入排序的动画演示如上。从第一个元素开始,该链表可以被认为已经部分排序(用黑色表示)。 每次迭代时,从输入数据中移除一个元素(用红色表示),并原地将其插入到已排好序的链表中。 插入排序算法: 插入排序是迭代的,每次只移动一个元素,直到所有元素可以形成一个有序的输出列表。 每次迭代中,插入排序只从输入数据中移除一个待排序的元素,找到它在序列中适当的位置,并将其插入。 重复直到所有输入数据插入完为止。 示例 1: 输入: 4->2->1->3 输出: 1->2->3->4 示例 2: 输入: -1->5->3->4->0 输出: -1->0->3->4->5 解题思路 从链表头部开始遍历,记录当前要插入排序的节点和其上一个节点,对每个节点执行如下操作: 从头部开始找到当前节点之前第一个不大于它的节点,记录找到的节点以及它前一个节点 如果它前一个节点为空,说明要插入到头节点之前,若不为空,则插入到该节点之后 继续进行下一次插入排序,直到遍历到链表尾部 代码 1 /* * 2 * Definition for singly-linked list. 3 * struct ListNode { 4 * int val; 5 * ListNode *next; 6 * ListNode(int x) : val(x), next(NULL) {} 7 * };

虚拟机上安装centos7操作系统

北城余情 提交于 2020-10-30 23:52:52
虚拟机上安装centos操作系统 1、下载centos7安装包 2、创建虚拟机 3、虚拟机配置 4、网络配置 1、下载centos7安装包 我们需要先准备好centos的镜像!官网下载会很慢,我们可以去很多国内的镜像站点下载(随便找个镜像网站下载即可)! 进入网站下载:https://mirrors.sohu.com/ 找到cenos7版本的下载! 也可以去我的网盘下载: 链接:https://pan.baidu.com/s/1CznKiRELA5Cs1USRLvISVA 提取码:y1s8 2、创建虚拟机 点击创建虚拟机 选择自定义高级,后点击下一步 出现如下图界面,点击next 找到指定位置的镜像文件,点击下一步 设置虚拟机名字和安装位置,点击下一步 出现处理器界面,直接点击下一步 给虚拟机分配多少内存,点击下一步 选择第二个(NAT) next 下一步,下一步,磁盘选择默认20.0GB,选将虚拟磁盘存储为单个文件,下一步 下一步 完成 3、虚拟机配置 启动虚拟机继续安装操作系统 选择install,按Enter键 等待系统自动操作直到出现如下选择语言界面,这里选择中文,简体中文,如下图后点击继续 等待系统操作,直到出现如下界面 在系统中选择安装位置 ,下面选择我要配置分区,然后点击完成 点击“+”按钮添加分区 划分磁盘,按照下图划分,点击完成 a) /boot:1024 MiB

还在用BlockingQueue?读这篇文章,了解下Disruptor吧

喜欢而已 提交于 2020-10-30 16:02:29
1.何为队列 听到队列相信大家对其并不陌生,在我们现实生活中队列随处可见,去超市结账,你会看见大家都会一排排的站得好好的,等待结账,为什么要站得一排排的,你想象一下大家都没有素质,一窝蜂的上去结账,不仅让这个超市崩溃,还会容易造成各种踩踏事件,当然这些事其实在我们现实中也是会经常发生。 当然在计算机世界中,队列是属于一种数据结构,队列采用的FIFO(first in firstout),新元素(等待进入队列的元素)总是被插入到尾部,而读取的时候总是从头部开始读取。在计算中队列一般用来做排队(如线程池的等待排队,锁的等待排队),用来做解耦(生产者消费者模式),异步等等。 2.jdk中的队列 在jdk中的队列都实现了java.util.Queue接口,在队列中又分为两类,一类是线程不安全的,ArrayDeque,LinkedList等等,还有一类都在java.util.concurrent包下属于线程安全,而在我们真实的环境中,我们的机器都是属于多线程,当多线程对同一个队列进行排队操作的时候,如果使用线程不安全会出现,覆盖数据,数据丢失等无法预测的事情,所以我们这个时候只能选择线程安全的队列。在jdk中提供的线程安全的队列下面简单列举部分队列: 队列名字 是否加锁 数据结构 关键技术点 是否有锁 是否有界 ArrayBlockingQueue 是 数组array

大多数人不知道的:HashMap链表成环的原因和解决方案

人盡茶涼 提交于 2020-10-30 11:09:11
前言: 在 JDK7 版本下,很多人都知道 HashMap 会有链表成环的问题,但大多数人只知道,是多线程引起的,至于具体细节的原因,和 JDK8 中如何解决这个问题,很少有人说的清楚,百度也几乎看不懂,本文就和大家聊清楚两个问题: JDK7 中 HashMap 成环原因; JDK8 中是如何解决的。 一、JDK7 中 HashMap 成环原因 成环的时机 HashMap 扩容时。 多线程环境下。 成环的具体代码位置 在扩容的 transfer 方法里面,有三行关键的代码,如下: void transfer ( Entry [ ] newTable , boolean rehash ) { int newCapacity = newTable . length ; for ( Entry < K , V > e : table ) { //e为空时循环结束 while ( null != e ) { Entry < K , V > next = e . next ; if ( rehash ) { e . hash = null == e . key ? 0 : hash ( e . key ) ; } int i = indexFor ( e . hash , newCapacity ) ; // 成环的代码主要是在这三行代码 // 首先插入是从头开始插入的 e . next =

Java基础知识总结(超级经典)

十年热恋 提交于 2020-10-29 23:26:09
Java基础知识总结(超级经典)   写代码:     1,明确需求。我要做什么?     2,分析思路。我要怎么做?1,2,3。     3,确定步骤。每一个思路部分用到哪些语句,方法,和对象。     4,代码实现。用具体的java语言代码把思路体现出来。   学习新技术的四点:     1,该技术是什么?     2,该技术有什么特点(使用注意):     3,该技术怎么使用。demo     4,该技术什么时候用?test。 —————————————————————————————————————————————————————— 一:java概述:   1991 年Sun公司的James Gosling等人开始开发名称为 Oak 的语言,希望用于控制嵌入在有线电视交换盒、PDA等的微处理器;   1994年将Oak语言更名为Java;   Java的三种技术架构:   JAVAEE:Java Platform Enterprise Edition,开发企业环境下的应用程序,主要针对web程序开发;   JAVASE:Java Platform Standard Edition,完成桌面应用程序的开发,是其它两者的基础;   JAVAME:Java Platform Micro Edition,开发电子消费产品和嵌入式设备,如手机中的程序;   1,JDK:Java