自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

蒟蒻达的博客

蒟蒻一枚

  • 博客(86)
  • 资源 (1)
  • 收藏
  • 关注

原创 PIL.Image与opencv中的图片切割

通常对图片操作的库有两个,一个是PIL中的Image,一个是opencv中的cv2。在Image中,通常用cut = img.crop((x, y, x + w, y + h))来切图,x,y是坐标,w,h是目标的长宽返回值还是一个Image对象。在cv2中,图片的形式是以numpy.array的格式存储的,所以切图片时直接用切片索引即可cut = img[y0:y1, x0:x1]注意num...

2019-12-09 12:20:23 5530

原创 pyhton opencv中cv2.findContours与cv2.drawContours

最近在做关于图像识别的东西,用到了寻找轮廓函数cv2.findContours和绘制轮廓函数cv2.drawContours先看看cv2.findContours的定义:如果嫌啰嗦(不想看英语),直接下拉,下面我有写用法与总结def findContours(image, mode, method, contours=None, hierarchy=None, offset=None): #...

2019-12-07 21:34:42 5797 3

原创 操作系统实验c语言

这个学期学了操作系统,实验课是用c语言实现几个操作系统比较核心的算法,其实也只是模拟一下,照真实的操作系统所运行的程序,还差得太远,虽然很想接触硬件,接触底层,用汇编等实现一下操作系统,但要真正实现一个操作系统,需要付出的太多,也怕耽误了学业,有兴趣的可以去看看《30天自制操作系统》。下面是我整理的用c语言实现的操作系统用到的几个算法操作系统实验一(进程调度算法)操作系统实验二(银行家算法)...

2019-12-07 20:38:23 2534

原创 python实现简单的ps色阶调整过程

最近在做一个用unet神经网络识别种子出苗率的项目(种子贼小,分辨率还贼低),由于效果不太好,只能对图像做预处理了。。。预处理选用的是ps中的色阶处理,可是cv2等图像库中没有现成的函数,只能自己一点一点搜资料,找到了ps中色阶调整的计算公式。以下是ps中的色阶窗口左边黑三角叫做黑场,中间叫做灰场,右边叫做白场,上面的图是分布直方图,表示每个色阶的数量,开始我天真的以为色阶调整是把低于黑场的...

2019-11-28 13:09:33 6157 6

原创 JAVA 秒转时分秒 hh:mm:ss 格式

/** * 功能描述 秒转时分秒 * @author qinda * @date 2020/10/29 * @param sumSecond 总秒数 * @return java.lang.String 返回 “ 01:01:01 ” 格式的时间 */ private static String sumSecondToTime(int sumSecond) { if(sumSecond <= 0){ ...

2020-10-29 17:25:39 2532

原创 JVM---执行引擎

执行引擎执行引擎是Java虚拟机核心的组成部分之一“虚拟机”是一个相对于“物理机”的概念,这两种机器都有代码执行能力,其区别是物理机的执行引擎是直接建立在处理器、缓存、指令集和操作系统层面上的,而虛拟机的执行引擎则是由软件自行实现的,因.此可以不受物理条件制约地定制指令集与执行引擎的结构体系,能够执行那些不被硬件直接支持的指令集格式。JVM的主要任务是负责装载字节码到其内部,但字节码并不能够直接运行在操作系统之上,因为字节码指令并非等价于本地机器指令,它内部包含的仅仅只是一些能够被JVM所识别的字

2020-07-04 19:07:17 288

原创 JVM---方法区

方法区栈、堆、方法区的交互关系方法区基本理解方法区(Method Area)与Java堆一 样, 是各个线程共享的内存区域。方法区在JVM启动的时候被创建,并且它的实际的物理内存空间中和Java堆区–样都可以是不连续的。方法区的大小,跟堆空间一样,可以选择固定大小或者可扩展。方法区的大小决定了系统可以保存多少个类,如果系统定义了太多的类,导致方法区溢出,虚拟机同样会抛出内存溢出错误: java. lang . OutOfMemoryError:PermGen space 或者

2020-07-04 19:04:16 219

原创 JVM---堆(垃圾回收机制)

图解对象分配过程为新对象分配内存是一件非常严谨和复杂的任务,JVM的设计者们不仅需要考虑内存如何分配、在哪里分配等问题,并且由于内存分配算法与内存回收算法密切相关,所以还需要考虑GC执行完内存回收后是否会在内存空间中停生内存碎片。1.new的对象先放伊甸园区。此区有大小限制。2.当伊甸园的空间填满时,程序又需要创建对象,JVM的垃圾 回收器将对伊甸园区进行垃圾回收(Minor GC), 将伊甸园区中的不再被其他对象所引用的对象进行销毁。再加载新的对象放到伊甸园区3.然后将伊甸园中的剩余对象移动到幸存

2020-06-22 15:45:16 859

原创 JVM---堆(概述)

堆概述一个JVM实例只存在一个堆内存,堆也是Java内存管理的核心区域。Java堆区在JVM启动的时候即被创建,其空间大小也就确定了。是JVM管理的最大一块内存空间。堆内存的大小是可以调节的。《Java虚拟机规范》规定,堆可以处于物理.上不连续的内存空间中,但在逻辑上它应该被视为连续的。所有的线程共享Java堆,在这里还可以划分线程私有的缓冲区( ThreadLocal Allocation Buffer, TLAB) 。《Java虛拟机规范》中对Java堆的描述是:所

2020-06-22 15:42:51 290

原创 JVM---本地方法接口与本地方法栈

本地方法接口什么是本地方法?简单地讲,一个Native Method就 是一个Java调用非Java代码的接口。 一个Native Method是这样-一个Java方法:该方法的实现由非Java语言实现,比如C。这个特征并非Java所特有,很多其它的编程语言都有这一机制,比如在C++中,你可以用extern "C"告 知C+ +编译器去调用-一个C的函数。"A native method is a Java method whose implementation is provided by non-j

2020-06-18 10:40:48 256

原创 JVM---虚拟机栈

虚拟机栈虚拟机栈出现的背景由于跨平台性的设计,Java的指令都是根据栈来设计的。不同平台CPU架构不同,所以不能设计为基于寄存器的。优点是跨平台,指令集小,编译器容易实现,缺点是性能下降,实现同样的功能需要更多的指令。内存中的栈与堆栈是运行时的单位,而堆是存储的单位。即:栈解决程序的运行问题,即程序如何执行,或者说如何处理数据。堆解决的是数据存储的问题,即数据怎么放、放在哪儿。Java虚拟机栈是什么?Java虚拟机栈(Java Virtual Machine Stack) ,早期也叫Java

2020-06-18 10:39:48 168

原创 JVM---程序计数器(PC寄存器)

程序计数器简介JVM中的程序计数寄存器(Program Counter Register) 中,Register 的命名源于CPU的寄存器,寄存器存储指令相关的现场信息。CPU只有 把数据装载到寄存器才能够运行。这里,并非是广义上所指的物理寄存器,或许将其翻译为PC计数器(或指令计数器)会更加贴切(也称为程序钩子),并且也不容易引起一些不必要的误会。JVM中的PC寄存器是对物理PC寄存器的一种抽象模拟。作用PC寄存器用来存储指向下一条指令的地址,也即将要执行的指令代码。由执行引擎读取下一条指令。

2020-06-18 10:37:31 397

原创 JVM---运行时数据区(线程)

2、运行时数据区前言内存是非常重要的系统资源,是硬盘和CPU的中间仓库及桥梁,承载着操作系统和应用程序的实时运行。JVM内存布局规定了Java|在运行过程中内存申请、分配、管理的策略,保证了JVM的高效稳定运行。不同的JVM对于内存的划分方式和管理机制存在着部分差异。结合JVM虚拟机规范,来探讨一下经典的JVM内存布局。方法区与堆是线程共享的,程序计数器、本地方法栈、虚拟机栈是线程私有的。[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ZUpgO9n6-1592447

2020-06-18 10:35:52 142

原创 JVM---内存管理(类加载子系统)

JVM内存管理:1、类加载器子系统作用类加载器子系统负责从文件系统或者网络中加载Class文件,class文件在文件开头有特定的文件标识。ClassLoader只 负责class文件的加载, 至于它是否可以运行,则由ExecutionEngine决定。加载的类信息存放于一块称为方法区的内存空间。除了类的信息外,方法区中还会存放运行时常量池信息,可能还包括字符串字面量和数字常量(这部分常量信息是Class文件中常量池部分的内存映射)加载过程class file 存在于本地硬盘上

2020-06-18 10:30:12 160

原创 JVM---生命周期与发展历程

JVMJVM生命周期:虚拟机的启动:是通过引导类加载器(bootstrap class loader)创建一个初始类(initial class) 来完成的,这个类是由虚拟机的具体实现指定的。虚拟机的执行:一个运行中的Java虚拟机有着一个清晰的任务:执行Java程序。程序开始执行时他才运行,程序结束时他就停止。执行一个所谓的Java程序的时候,真真正正在执行的是一个叫做Java虛拟机的进程。JVM发展历程Sun Classic VM早在1996年Javal.0版本的时候,Sun公

2020-06-18 10:25:37 263

原创 设计模式之责任链模式思考题(servlet中filter过滤器是如何实现的?)

对责任链不熟悉的朋友们可以参考我上一篇文章:设计模式之责任链模式问题:servlet中的过滤器是这样的:如何实现过滤器,使其处理request时是f1,f2,f3,f4的顺序,处理response时的顺序是f4,f3,f2,f1?解答:建立新的Resquest,Response类用来模拟请求与响应class Request{ String str;}class Response{ String str;}修改接口,改为三个参数,第三个为当前的FilterChain

2020-06-03 12:06:35 598

原创 设计模式之责任链模式(Chain of Responsibility)

责任链模式用过tomcat或者springMVC的人应该都对过滤器不陌生吧,过滤器的实现就是责任链模式。且看如何一步一步推到。话不多说,直接上代码。//这段代码是实现将骂人词汇过滤:public class Main { public static void main(String[] args) { Msg msg = new Msg(); msg.setMsg("djsiaohfioja shit dsjakljf wtf is"); St

2020-06-02 17:40:03 261

原创 设计模式之代理模式(通过字节码探究执行过程)

代理模式代理模式的定义:代理模式给某一个对象提供一个代理对象,并由代理对象控制对原对象的引用。通俗的来讲代理模式就是我们生活中常见的中介。1、静态代理我们有一个接口Movable,实现该接口的类都是可移动的:interface Movable{ void move();}public class Car implements Movable { @Override public void move() { System.out.println("Car

2020-05-26 17:15:20 203

原创 SSM框架整合thymeleaf-spring5模板引擎

1、pom.xml文件增加依赖:<!--thymeleaf-spring5 --><dependency> <groupId>org.thymeleaf</groupId> <artifactId>thymeleaf-spring5</artifactId> <version>3.0.11.RELEASE</version></dependency>2、将spring-mvc.x

2020-05-23 14:42:28 1756

原创 设计模式之工厂模式(简单工厂,工厂方法,抽象方法)

工厂模式1、简单工厂模式:​ 首先我们有一个Car类,这个Car可以go:public class Car { public void go() { System.out.println("car go ..."); }}还有一个调用者,这样就可以造出车来跑:public class Main { public static void main(String[] args) { Car car = new Car(); c

2020-05-22 13:41:19 259

原创 设计模式之策略模式

策略模式从comparator与comparable谈起先从最基本的讲起,定义一个Sorter类,sort方法是选择排序的实现,实现对int数组a排序:public class Sorter { public void sort(int[] a) { for (int i=0;i<a.length;i++) { int minPos = i; for (int j = i; j < a.leng

2020-05-21 12:58:29 142

原创 设计模式之单例模式

单例模式单例模式最主要的是将构造器私有化。饿汉式单例:简单实用,缺点就是有可能浪费空间public class SingletonPatternDemo02 { private static SingletonPatternDemo02 INSTANCE = new SingletonPatternDemo02(); private SingletonPatternDemo02() { } public static SingletonPatternDemo02 get

2020-05-21 12:55:29 123

原创 ThreadPoolExecutor执行原理

线程池基本概念: 一种线程使用模式。线程过多会带来调度开销,进而影响缓存局部性和整体性能。不要使用Executor创建线程池,而是通过ThreadPoolExecutor的方式创建,这样的处理方式能让编写代码的人更加明确线程池的运行规则,规避资源耗尽的风险。说明:Executors 返回的线程池对象的弊端如下:1)FixedThreadPool和SingleThreadPool:允许请求的队列长度为Interger.MAX_VALUE,可能会堆积大量的请求,从而导致OOM。2)CachedTh

2020-05-11 21:50:37 1210

原创 通过几个例子,进一步理解Java的Synchronized锁中对象锁与类锁

资源类:电话,有发短信与打电话的功能。class Phone{ public void send() throws InterruptedException { TimeUnit.SECONDS.sleep(4); System.out.println("发短信"); } public void call() { System.out.println("打电话"); }}1、电话类中的方法都用s

2020-05-11 12:06:45 189

原创 Synchronized 和 Lock 区别

Synchronized 和 Lock 区别1、Synchronized 内置的JAVA关键字,Lock是一个JAVA类2、Synchronized 无法判断获取锁的状态,Lock可以判断是否获得锁3、Synchronized 会自动释放锁,Lock必须要手动释放锁,不释放会引发死锁问题。4、Synchronized 两个线程操作时,若向线程1获得锁但是阻塞了,线程2会一直等,Lock不会。5、Synchronized 可重入锁,不可以中断的,非公平;Lock,可重入锁,可以判断锁、非公平(可.

2020-05-08 20:58:20 140

原创 Spring配置c3p0无法连接数据库(用户名问题)

我的spring中的数据源: <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource"> <property name="driverClass" value="${driver}"/> <property name="jdbcUrl" value="${url}"...

2020-03-20 00:49:56 446 1

原创 更新软件源

sudo apt-get update

2020-02-09 10:44:14 117

原创 Linux常用命令整合

2.2.2文件浏览:ls :语法:ls[参数] … [文件] …说明:列出文件列表信息,默认情况为当前目录下所有文件,并按照字母顺序排序。Shell命令2.2.2文件浏览:ls :语法:ls[参数] … [文件] …说明:列出文件列表信息,默认情况为当前目录下所有文件,并按照字母顺序排序。-a (all)不隐藏任何以”.”开头的文件-b 不显示以”~”结尾的文件–color=[...

2020-02-09 10:32:37 158

原创 python加载YAML文件警告:YAMLLoadWarning: calling yaml.load() without Loader=... is deprecated...解决方法

今天在测试yaml的时候出现了警告YAMLLoadWarning: calling yaml.load() without Loader=… is deprecated, as the default Loader is unsafe. Please read https://msg.pyyaml.org/load for full details.q = yaml.load(data)...

2020-01-11 11:06:40 4118 1

原创 算法设计与分析----凸多边形最优三角剖分

#include<bits/stdc++.h>using namespace std;int w[10][10];int dp[10][10];int p[10][10];int W(int a,int b,int c){ return w[a][b]+w[b][c]+w[c][a]; }void print(int a,int b){ if(a == ...

2019-12-31 13:08:45 1846

原创 操作系统实验二(银行家算法)

实验二 银行家算法一、实验目的用高级语言编写和调试一个银行家算法程序,并可以利用银行家算法模拟分配资源以及进行安全性检查。加深对银行家算法的理解。二、实验指导银行家算法中的数据结构(1) 可利用资源向量Available。这是一个含有m个元素的数组,其中的每一个元素代表一类可利用的资源数目,其初始值是系统中所配置的该类全部可用资源的数目,其数值随该类资源的分配和回收而动态地改变。如果...

2019-12-31 12:50:10 5473

原创 算法设计与分析----动态规划之数字三角形问题

题目:在数字三角形中寻找一条从顶部到底边的路径,使得路径上所经过的数字之和最大。路径上的每一步都只能往左下或 右下走。只需要求出这个最大和即可,不必给出具体路径。三角形的行数大于1小于等于100,数字为 0 - 99。利用动态规划自底而上求解。#include<bits/stdc++.h>using namespace std;int dp[100][100];int ...

2019-12-31 12:47:33 2156

原创 算法设计与分析----马的周游路线

8 * 8的国际象棋棋盘上的一只马,恰好走过除起点外的其他63个位置各一次,最后回到起点,这条路线称为马的一条Hamilton周游路线。对于给定的m * n的国际象棋棋盘,m和n均为大于5的偶数,且|m-n|≤2,试设计一个分治算法找出马的一条Hamilton周游路线。下面的代码是实现,并不针对哪一到题,只是简单的实现,也没有用贪心优化。#include<bits/stdc++.h&...

2019-12-31 12:44:02 2332

原创 算法设计与分析----最优二叉树动态规划

概念就不赘述了。#include<bits/stdc++.h>using namespace std;double a[10],b[10];double dp[10][10];int s[10][10];double w[10][10];void print(int i,int j){ if(i > j) return ; printf("%d ",s[...

2019-12-31 12:40:22 2400

原创 HTTP的响应报文

1xx 表示通知消息2xx 表示成功,如接受或知道了3xx 表示重定向,如要完成请求还必须采取进一步的行动4xx 表示客户的差错,如请求中有错误的语法或不能完成5xx 表示服务器的差错,如服务器失效无法完成请求...

2019-12-29 11:13:02 1347

原创 算法设计与分析----最长公共子序列

给定两个字符串,求解这两个字符串的最长公共子序列(Longest Common Sequence)。比如字符串1:BDCABA;字符串2:ABCBDAB则这两个字符串的最长公共子序列长度为4,最长公共子序列是:BCBA对于这个问题,用一个二维数组记录两个字符串的状态,例如dp[2][3]表示的意思是A串前两个字符与B串前三个字符公共子序列的长度,所以dp的第一维的长度是A串的长度,dp第二...

2019-12-28 20:58:30 2280

原创 算法设计与分析----矩阵连乘

给定n个矩阵{A1,A2,…,An},其中Ai与Ai+1是可乘的,i=1,2…,n-1。如何确定计算矩阵连乘积的计算次序,使得依此次序计算矩阵连乘积需要的数乘次数最少。例如,给定三个连乘矩阵{A1,A2,A3}的维数分别是10 * 100,100 * 5和5 * 50,采用(A1A2)A3,乘法次数为10 * 100 * 5 + 10 * 5 * 50=7500次,而采用A1(A2A3),乘法次...

2019-12-28 20:25:04 2761

原创 算法设计与分析----循环赛日程表

设有n个运动员,要进行网球循环赛。现在要设计一个满足以下要求的比赛日程表(1).每个选手必须与其他n-1个选手各赛一场(2).每个选手一天只能赛一次(3).循环赛一共进行n-1天此题一般都是用递归分治解决,但是就是有点麻烦,这次介绍一种简单点的方法:多边形轮转法。基本思路:当有奇数个人的时候画一个多边形,中心填0,例如当有5个人时,像这样:平行的人比赛,5<->2...

2019-12-28 17:38:45 3593 2

原创 算法设计与分析----棋盘覆盖

在一个2^k × 2^k (k≥0)个方格组成的棋盘中,恰有一个方格与其他方格不同,称该方格为特殊方格。显然,特殊方格在棋盘中可能出现的位置有4^k 种,因而有 4^k种不同的棋盘,图4.10(a)所示是k=2时16种棋盘中的一个。棋盘覆盖问题(chess cover problem)要求用图4.10(b)所示的4种不同形状的L型骨牌覆盖给定棋盘上除特殊方格以外的所有方格,且任何2个L型骨牌不得重...

2019-12-28 17:02:54 1810 1

原创 算法设计与分析----二分搜索(递归)

二分搜索有很多写法,在算法分析与设计中,二分搜索是在递归分治这一章讲到的,所以用递归实现一下。二分搜索其实很容易理解,设想一根从北京到上海的电线坏掉了,但是不知道是从哪里坏的,要怎样才能使用最少的步骤快速找到问题呢,那就是二分,先到北京与上海的中间位置,我们就称中点吧,测试一下电线,如果是北京到中点有电,那么就说明坏的位置位于上海到中点之间,我们再找到上海到中点的中点,依次类推,很快就能找到问题...

2019-12-28 16:19:40 2234

calculator.zip

利用javaGUI实现的计算器,带有各种功能cos,sin,sqrt等,可以保存计算结果,可以复制,清除计算结果,支持键盘输入

2019-12-08

空空如也

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

TA关注的人

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