自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(44)
  • 资源 (1)
  • 收藏
  • 关注

原创 Linux 常用命令记录

Linux解压 or 压缩文件命令和软件解压zip文件:# 安装工具sudo apt-get install unzip# 解压命令unzip xxx.zip# 解压指定文件到指定目录unzip /-/-/xxx.zip -d path解压tar.gz文件tar命令有以下参数-c 压缩文件内容-x 解压文件中的内容-z 使用gzip来解压或压缩.tar.gz格式的文件-v 压缩过程中显示文件# 解压文件tar -zxvf test.tar.gz tar -zxvf test

2021-06-16 17:44:57 142

原创 Mybatis快速入门

一、一个简单的开发需求案例需求:通过mybatis查询数据库user表的所有记录,封装到User对象中,打印到控制台上步骤分析创建数据库及user表创建maven工程,导入依赖(MySQL驱动、mybatis、junit)编写User实体类编写UserMapper.xml映射配置文件(ORM思想)编写SqlMapConfig.xml核心配置文件数据库环境配置映射关系配置的引入(引入映射配置文件的路径)编写测试代码// 1.加载核心配置文件// 2.获取sqlSessionFacto

2021-03-31 15:01:25 142

原创 MySQL单表&约束&事务

DQL操作单表排序# 通过 ORDER BY 子句,可以将查询出的结果进行排序(排序只是显示效果,不会影响真实数据)SELECT 字段名 FROM 表名 [WHERE 字段 = 值] ORDER BY 字段名 [ASC / DESC]# 单列排序,只按照某一个字段进行排序, 就是单列排序-- 降序排序SELECT * FROM emp ORDER BY salary DESC;# 组合排序,同时对多个字段进行排序, 如果第一个字段相同 就按照第二个字段进行排序,以此类推-- 组合排序S

2021-02-17 17:33:38 216

原创 MySQL基础及SQL入门

SQL 概念1)什么是SQL?结构化查询语言(Structured Query Language)简称SQL,是一种特殊目的的编程语言,是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统。2)SQL的作用是所有关系型数据库的统一查询规范,不同的关系型数据库都支持SQL所有的关系型数据库都可以使用SQL不同数据库之间的SQL 有一些区别 (方言)命令行登录MySQLmysql -h+主机名 -u+用户名 -p+密码 # (使用指定的用户名密码进行登录)

2021-02-17 16:02:12 256

原创 寻找两个链表相交节点方法(可以是有环链表)

问题分析:两个链表相交可以分为两个大类,一是两个无环链表相交,二是两个有环链表相交。无环相交如图:有环相交有两种情况,一种是 先相交后成环,如图:另一种是交点有两个,是成环后的交点(入环节点不同)方法1.判断链表是否有环,返回第一个入环节点。2.判断是否相交3.判断相交节点是否相同判断链表是否有环,并返回第一个入环节点使用快慢指针,快指针一次走两步,慢指针一次走一步,如果链表有环则两个指针必然会相遇。具体细节参考判断链表是否有环无环链表相交问题1.判断两个链表是否同时无环2.先

2020-11-26 10:08:42 865 1

原创 图的一种通用格式以及图的相关基础算法

图将图拆解为点、边、图三种结构点的定义一个点包含自己的值、入度、出度、直接相邻的点(由自己出发的点)、相连的边(由自己出发的点)public class Node { public int value; public int in; public int out; public ArrayList<Node> nexts; public ArrayList<Edge> edges; public Node(int value)

2020-11-16 21:22:13 116

原创 并查集学习笔记

并查集有若干个样本a、b、c、d…类型假设是V在并查集中一开始认为每个样本都在单独的集合里用户可以在任何时候调用如下方法:boolean isSameSet(V x, V y):查询样本x和样本y是否属于一个集合void union(V x, V y):把x和y各自所在集合的所有样本合并成一个集合isSameSet和union方法的代价越低越好import java.util.HashMap;import java.util.List;import java.util.Stack;

2020-11-16 12:03:28 91

原创 单链表划分成左边小、中间相等、右边大的形式

题目:单链表划分成左边小、中间相等、右边大的形式方法一:把链表放进数组里面(荷兰国旗问题)方法二:定义六个节点分别代表小于区域首尾节点、等于区域首尾节点、大于区域首尾节点,修改链表结构。public class SmallerEqualBigger { public static class Node { public Node next; public int value; public Node(int data) {

2020-10-24 15:49:04 208 2

原创 归并排序以及求数组小和的问题

归并排序首先把一个未排序的序列从中间分割成2部分,再把2部分分成4部分,依次分割下去,直到分割成一个一个的数据,再把这些数据两两归并到一起,使之有序,不停的归并,最后成为一个排好序的序列。//递归版本public class MergeSort { public static void mergeSort1(int[] arr) { if (arr == null || arr.length < 2) { return; } process(arr, 0, arr.length

2020-10-19 16:59:55 137

原创 与异或操作相关的简单算法题

异或运算的性质1、0 ^ N == N, N ^ N==02、异或运算满足交换律和结合律题目1:如何不使用额外变量交换两个数int a == 甲; int b = 乙;a = a ^ b;b = a ^ b;a = a ^ b;把上面代码分为三个步骤第一步:a = a ^ b; 此步骤过后 a = 甲 ^乙;b = 乙;第二步:b = a ^ b; 此步骤过后 a = a ^ b = 甲 ^ 乙;b = a ^ b = 甲 ^ 乙 ^ 乙 = 甲;第三步:a

2020-10-18 20:50:18 436 2

原创 将数组旋转90度(旋转图像)

You are given an n x n 2D matrix representing an image.Rotate the image by 90 degrees (clockwise).Follow up:Could you do this in-place?思路 :1、将旋转拆列解为对矩阵一圈一圈的做旋转,如下图中的①②。2、若圈为NxN, 则需要对n-1个数进行旋转3、旋转对应规则假设对应矩阵左上角坐标为(LR,LC),右下角坐标为(RR,RC)。则需要旋转的个数times

2020-10-06 11:39:40 1646

原创 两个栈实现队列以及两个队列实现栈

两个队列实现栈思路:队列queue是专职进出栈的,队列help只是个中转站,起辅助作用。入栈:直接入队列queue即可出栈:把queue的除最后一个元素外全部转移到队help中,然后把刚才剩下queue中的那个元素出队列。之后把q2中的全部元素转移回q1中(或者两个队列互换)入栈:出栈:import java.util.LinkedList;import java.util.Queue;public class QueuesStack { private Queue<In

2020-09-29 21:55:13 159

原创 实现一个特殊的栈,在实现栈的基本功能的基础上,再实现返回栈中最小元素的操作(java)

实现一个特殊的栈,在实现栈的基本功能的基础上,再实现返回栈中最小元素的操作。要求:1.pop、push、getMin操作的时间复杂度都是O(1)。2.设计的栈类型可以使用现成的栈结构。思路:建立两个栈,一个data栈压入数据(和正常的压栈一样),另一个min栈压入最小值。如果压入的数据比当前最小值小则压入min栈,大于当前最小值则重复压入当前min栈栈顶元素。 min栈和data保持同步的入栈出栈操作,这样始终保持min栈栈顶元素为最小值。public static class MyStack1

2020-09-29 17:23:29 380

原创 用数组结构实现大小固定的队列和栈(java)

栈的实现栈的特点是先进后出,所以用数组实现栈时,只需要利用一个指针判定数据存储的位置即可,添加元素时判断指针是否超过数组长度,如果没有越界将元素添加到指针所指的位置,并将指针向下移动一位;否则返回异常,显示栈空间已满。删除元素思路类似,判断指针是否为数组初始位置,不是则将指针所指元素返回,并将指针向上。public class ArrayStack { private Integer[] arr; private Integer index;//初始化栈 public Arra

2020-09-29 17:07:54 223

原创 桶排序思想及FindMaxGap问题

桶排序思想介绍:桶排序介绍相邻两数最大差值问题有一个整形数组A,请设计一个复杂度为O(n)的算法,算出排序后相邻两数的最大差值。给定一个int数组A和A的大小n思路:定义一个长度为待排序数组arr,长度为length, 然后用一个length + 1的数组用来抽象的表示桶;取出arr中的最小值和最大值,把min到max范围等分成length + 1份,根据((num - min) * len / (max - min))将每个元素分到length+1个桶中。其中必存在至少一个空桶。因为空桶的

2020-09-29 15:57:37 202

原创 堆排序和快排序笔记

堆排序一些相关的概念堆是一棵顺序存储的完全二叉树。大根堆:每个结点的值都大于或等于子结点的值,这样的堆称为大根堆。小根堆:每个结点的值都小于或等于子结点的值,这样的堆称为小根堆。二叉树在数组中的表示:对于索引为K的节点,其左孩子为(2K) 右孩子为( 2K+1)堆排序的思想...

2020-09-28 20:36:37 83

原创 复杂度估算和一些简单排序算法

1.认识时间复杂度常数时间的操作:一个操作如果和数据量没有关系,每次都是固定的时间内完成的操作,叫做常数操作。时间复杂度为一个算法流程中,常数操作数量的指标。常用O(读作big O)来表示。具体来说,在常数操作数量的表达式中,只要高阶项,不要低阶项,也不要高阶项的系数,剩下的部分记为f(N),那么时间复杂度为O(f(N))。评价一个算法流程的好坏,先看时间复杂度的指标,然后再分析不同数据样本下的实际运行时间,也就是常数项时间一个简单例子理解时间复杂度一个有序数组A, 另一个无序数组B, 请打印B中

2020-09-27 20:37:16 150

原创 使用Python+VTK实现三维模型的显示和切割(面绘制)

本文将介绍使用VTK的Python版本完成面绘制已经模型的切割会使用的模块介绍1、读取二维图片序列完成面绘制详情见读取二维序列显示2、vtk.vtkOutlineFilter()介绍这个空间就相当于生成渲染模型的轮廓线,比如三维图像大小为(256x256x200),那么这个控件就会生成一个长宽高分别为256想x256x200的一个长方体框架详细介绍:VTK官方文档3、隐函数平面模块vtk.vtkImplicitPlaneWidget()使用该模块可以灵活的调整需要选取的平面vtkImpl

2020-08-12 17:41:02 8511 17

原创 使用Python-VTK绘制曲线

import vtkpoints = vtk.vtkPoints() # 定义一个点工具points.InsertPoint(0, 329, 338, 45) # 使用InsertPoint可以插入点#注意:points.InsertPoint(a, b, c, d)#其中a表示点的序号,(b,c,d)表示点的三维坐标points.InsertPoint(1, 328, 319, 46)points.InsertPoint(2, 300, 329, 96)#定义曲线工具#将前面的几个点插

2020-08-12 00:08:11 1118

原创 使用Python-VTK批量读取二维切片,并三维显示

import vtk# 定义渲染窗口、交互模式aRender = vtk.vtkRenderer()Renwin = vtk.vtkRenderWindow()Renwin.AddRenderer(aRender)iren = vtk.vtkRenderWindowInteractor()iren.SetRenderWindow(Renwin)# 定义个图片读取接口#读取PNG图片就换成PNG_Reader = vtk.vtkPNGReader()Jpg_Reader = vtk.vtk

2020-08-11 23:53:19 2785 21

原创 Java学习笔记(并发包介绍)

并发包的来历:在实际开发中如果不需要考虑线程安全问题,大家不需要做线程安全,因为如果做了反而性能不好!但是开发中有很多业务是需要考虑线程安全问题的,此时就必须考虑了。否则业务出现问题。Java为很多业务场景提供了性能优异,且线程安全的并发包,程序员可以选择使用!ConcurrentHashMap介绍为什么要用ConcurrentHashMap?HashMap线程不安全因为多线程环境下,使用Hashmap进行put操作可能会引起死循环,导致CPU利用率接近100%,所以在并发情况下不能使用Has

2020-08-11 23:35:23 301 1

原创 Java学习笔记(Volatile关键字以及原子性)

JMM(Java Memory Model)概述:JMM(Java Memory Model)Java内存模型,是java虚拟机规范中所定义的一种内存模型。Java内存模型(Java Memory Model)描述了Java程序中各种变量(线程共享变量)的访问规则,以及在JVM中将变量存储到内存和从内存中读取变量这样的底层细节。所有的共享变量都存储于主内存。这里所说的变量指的是实例变量和类变量。不包含局部变量,因为局部变量是线程私有的,因此不存在竞争问题。每一个线程还存在自己的工作内存,线程的工作内

2020-08-10 15:11:56 1012 1

原创 Java学习笔记 (死锁)

死锁概念死锁是这样一种情形:多个线程同时被阻塞,它们中的一个或者全部都在等待某个资源被释放。 由于线程被无限期地阻塞,因此程序不可能正常终止。java 死锁产生的四个必要条件1、互斥使用,即当资源被一个线程使用(占有)时,别的线程不能使用。2、不可抢占,资源请求者不能强制从资源占有者手中夺取资源,资源只能由资源占有者主动释放。3、请求和保持,即当资源请求者在请求其他的资源的同时保持对原有资源的占有。4、循环等待,即存在一个等待循环队列:p1要p2的资源,p2要p1的资源。这样就形成了一个等待环路

2020-08-10 14:57:26 85

原创 Java学习笔记(线程池简单的使用)

线程池概念线程池其实就是一个容纳多个线程的容器,其中的线程可以反复使用,省去了频繁创建线程对象的操作,无需反复创建线程而消耗过多资源。线程池的使用合理利用线程池能够带来三个好处:降低资源消耗。减少了创建和销毁线程的次数,每个工作线程都可以被重复利用,可执行多个任务。提高响应速度。当任务到达时,任务可以不需要的等到线程创建就能立即执行。提高线程的可管理性。可以根据系统的承受能力,调整线程池中工作线线程的数目,防止因为消耗过多的内存,而把服务器累趴下(每个线程需要大约1MB内存,线程开的越多,消

2020-08-10 14:54:05 125

原创 Java学习笔记(线程的几种状态)

线程状态概述线程由生到死的完整过程:当线程被创建并启动以后,它既不是一启动就进入了执行状态,也不是一直处于执行状态。在线程的生命周期中,有几种状态呢?在API中java.lang.Thread.State这个枚举中给出了六种线程状态:线程状态导致状态发生条件NEW(新建)线程刚被创建,但是并未启动。还没调用start方法。MyThread t = new MyThread只有线程对象,没有线程特征。Runnable(可运行)线程可以在java虚拟机中运行的状态,可能正在运

2020-08-10 14:36:23 122

原创 Java学习笔记 (多线程相关知识)

多线程的概述进程:进程是具有一定独立功能的程序关于某个数据集合上的一次运行活动,进程是系统进行资源分配和调度的一个独立单位.进程的三个特征:1.动态性 : 进程是运行中的程序,要动态的占用内存,CPU和网络等资源。2.独立性 : 进程与进程之间是相互独立的,彼此有自己的独立内存区域。3.并发性 : 假如CPU是单核,同一个时刻其实内存中只有一个进程在被执行。CPU会分时轮询切换依次为每个进程服务,因为切换的速度非常快,给我们的感觉这些进程在同时执行,这就是并发性。线程是进程的一个实体,是CPU

2020-08-08 23:54:36 130

原创 Java学习笔记 (异常相关知识)

异常的分类在程序开发中,异常指不期而至的各种状况。它是一个事件,当发生在程序运行期间,会干扰正常的指令流程。在Java中,通过Throwable及其子类描述各种不同的异常类型,Throwable有Exception和Error两个重要的子类。ErrorError是程序无法处理的错误, 表示运行应用程序中较严重问题。大多数错误与代码编写者执行的操作无关, 而表示代码运行时JVM ( Java虚拟机) 出现的问题。例如, Java 虚拟机运行错误( VirtuaI MachineError ) ,当JV

2020-07-28 13:45:43 154

原创 Java学习笔记 (成员内部类、静态内部类、匿名内部类、方法内部类)

内部类在Java中,可以将一个类定义在另一个类里面或者一个方法里面,这样的类称为内部类与之对应,包含内部类的类称为外部类内部类提供了更好的封装,可以把内部类隐藏在外部类之内,不允许同一个包中的其他类访问该类,更好的实现了信息隐藏成员内部类1、内部类在外部使用时,无法直接实例化,需要借由外部类信息才能完成实例化2、内部类的访问修饰符,可以任意,但是访问范围会受到影响3、内部类可以直接访问外部类成员;如果出现同名属性,优先访问内部类中定义的4、可以使用外部类.this.成员的方式访问外部类中

2020-07-27 11:48:45 124

原创 Java学习笔记 (多态、接口、抽象类)

多态多态按字面意思就是"多种状态",是面向对象的程序设计语言最核心的特征。从一定角度看,封装和继承几乎都是为多态而准备的。多态的分类编译时多态(设计时多态):方法重载运行时多态:Java运行时系统根据调用该方法的实例的类型来决定选择调用哪个方法则被称为运行时多态我们平时说的多态,多指运行时多态一个引用变量到底会指向哪个类的实例对象,该引用变量发出的方法调用到底是哪个类中实现的方法,必须在由程序运行期间才能决定。多态的必要条件继承重写父类引用指向子类对象向上类型转换:将子

2020-07-27 10:55:23 196

原创 Java学习笔记 (继承、this、super)

继承的概念:一种类与类之间的关系使用已存在的类的定义作为基础建立新类新类的定义可以增加新的数据或新的功能,也可以用父类的功能,但不能选择性的继承父类满足“A is a B”的关系语法1、使用extends实现继承2、单一继承,只能有一个父类public class Animal { private String name; private String month; }package animal;public class Cat extends Anim

2020-07-25 13:49:00 170

原创 Java学习笔记 static关键字作用和应用

static关键字static是一个修饰符,用于修饰类的成员方法、类的成员变量1)static修饰成员变量static变量称作静态变量、类变量。静态变量和非静态变量的区别是:一个类中,一个static变量只会有一个内存空间,虽然有多个类实例,但这些类实例中的这个static变量会共享同一个内存空间。而非静态变量是实例对象所拥有的,在创建对象的时候被初始化,存在多个副本,各个对象拥有的副本互不影响。2)static修饰成员方法一个类的静态方法只能访问静态属性一个类的静态方法不能直接调用非

2020-07-25 10:42:47 107 1

原创 Java学习笔记 基础知识(封装)

Java 封装将类的某些信息隐藏在类内部,不允许外部程序直接访问通过该类提供的方法来实现对隐藏信息的操作和访问隐藏对象的信息留出访问的接口封装的特点只能通过规定的方法访问数据良好的封装能够减少耦合。可以对成员变量进行更精确的控制。隐藏类的实例细节,方便修改和实现Java中的访问修饰符private:只允许在本类中进行访问public:允许在任意位置访问protected:允许在当前类、同包子类、同包非子类、跨包子类访问;跨包非子类不允许default:允许在当前类、同包

2020-07-25 00:45:26 78

原创 Java学习笔记 基础知识(注释、基本数据类型)

这里写自定义目录标题欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入欢迎使用Markdown编辑器你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Mar

2020-07-04 20:43:42 176

原创 数据结构学习—图的遍历

深度优先搜索(DFS)深度优先搜索 基本思想:从图中某个顶点v0v_0v0​出发,首先访问v0v_0v0​;找出刚访问过的顶点的第一个未被访问的邻接点,然后访问该顶点。以该顶点为新顶点,重复此步骤,直到刚访问过的顶点没有 未被访问过 的邻接点为止;访问前一个访问过的且仍有未被访问的临界二店的顶点,找出该顶点的下一个未被访问的邻接点,访问该顶点,然后执行2;若是非连通图,则图中一定还有顶...

2020-04-09 21:56:49 146

原创 数据结构学习—图

图的定义图(Graph)是由顶点的有穷非空集合和顶点之间边的集合组成,通常表示为:G(V,E),其中,G表示一个图,V是图G中顶点的集合,E是图G中边的集合。关于图的各种定义无向边:若顶点 viv_{i}vi​到vjv_{j}vj​之间的边没有方向,则称这条边为无向边(Edge)。无向图:若图中任意两个顶点之间的边都是无向边,则称该图为无向图。如果任意两个顶点都存在边,则称该图为无向完全...

2020-04-09 19:50:23 441 1

原创 判断是否为同一颗二叉搜索树

方法:建一颗树,在判别其他序列是否与该树一致判别方法#include <stdio.h>#include<stdlib.h>typedef struct TreeNode *Tree; //表示二叉搜索树树struct TreeNode{ int v; Tree Left,Right; int flag; //某个节点被访问过flag=...

2020-04-01 18:44:37 264

原创 数据结构学习—树(2)

二叉搜索树(Binary Search Tree)1.非空左子树的所有键值小于其根节点的键值2.非空右子树的所有键值大于其根节点的键值3.左右子树都是二叉搜索树二叉搜索树的删除要删除的是叶节点:直接删除,并再修改其父节点指针—置为NULL要删除的节点只有一个孩子节点:将其父节点的指针指向要删除节点的孩子节点要删除的节点有左、右两颗子树:右子树最小元素或左子树最大元素替...

2020-04-01 18:20:59 251

原创 数据结构学习—树(1)

树的定义树(tree):n个节点构成的有点集合。当n=0时,称为空树;对于任一颗非空树(n>0),具有以下性质树种有一个称为根的特殊节点,用r表示;其余节点可分为m(m>0)个互不相交的有限集T1…TM,其中每个集合本身又是一棵树,称为原来树的子树(Subtree)子树是不相交的;除了根节点外,每个节点有且仅有一个父节点;一颗N个节点的树有N-1个条边。树的一...

2020-03-30 22:05:20 447

原创 数据结构学习—队列

队列概念队列是限定仅在表的一端进行插入,而在另一端进行删除操作的线性表。允许插入的一端称为队尾,另一端称为队头。队列的修改是按先进先出的原则进行的,又称为先进先出表(FIFO)。线性队列基本运算#include <stdio.h>#define OK 1#define ERROR 0#define TRUE 1#define FALSE 0#define MA...

2020-03-26 21:29:47 385

原创 数据结构学习—栈

栈的定义限定在表尾作插入、删除操作的线性表,表中允许进行插入、删除操作的一端称为栈顶(Top),表的另一端称为栈底(Bottom)。顺序栈用顺序存储结构实现的栈,即利用一组地址连续的存储单元一次存放自栈底到栈顶的数据元素,同时由于栈的操作的特殊性,还必须设一个位置指针top(栈顶指针)来动态的指示栈顶元素在顺序栈中的位置。(通常以top=-1表示空栈)//静态分配typedef ...

2020-03-26 20:41:30 117

局部极值.py

利用python求图像的局部极值,并标注。这是http://www.imagepy.org/的作者原创,我只是对其理解之后改进和说明,欢迎大家使用这个小软件!

2019-06-09

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除