【原创】二分图匹配 与 匈牙利算法
二分图先来看看什么是二分图。二分图的概念部图在了解二分图之前,我们现在看看图论中的部图。
部图在图论中有这样的定义:
一个图的节点集可分成若干个子集,使得每一条边的两端点不在同一子集内.若一个图的节点集能分成k个两两不交的非空子集,使得这个图的每一条边的两端点不在同一个子集内,则称其为k部图。如果
k=2时,称为2部图,k=3时,称为3部图。特别的,称2部图为偶图。
如果每一个部中
设计模式之Iterator(一)
实现动态添加对象的容器。
实现一:手动编写ArrayList
package com.awiatech.iterator;
/**
* 一个动态添加对象的容器,底层使用数组模拟。
* 与数组相比的好处:不用考虑数组的边界问题,可以动态扩展。
* @author Chicago
*
*/
public class ArrayList {
Object[] objects
设计模式之Iterator(二)
在上一节的基础上,考虑遍历容器
package com.awiatech.iterator;
import com.awiatech.iterator.ArrayList;
import com.awiatech.iterator.LinkedList;
/**
* 测试类用于测试容器的功能。
* @author Chicago
*
*/
public class Test {
设计模式之Iterator(三)
容器中泛型的使用,取出更方便(不用转型)
package com.awiatech.iterator.generic;
public class GenericArrayList {
Object[] objects = new Object[10]; // 定义一个长度为10的数组
int index = 0; // 数组索引指向
/**
* 数组中添加元素
* @para
Java中23种设计模式简介
设计模式有三种类型,分别为创建型、结构型、行为型。
(一)创建型
1)Singleton,单例模式:一个类只有一个实例,提供了一个访问它的全局变量。
2)Abstract Factory,抽象工厂:提供一个创建一系列相关或相互依赖对象的接口,无须指定具体的类。
3)Factory Method,工厂方法:提供一个创建对象的接口,让子类决定实例化哪一个类。Factory Method使一个类
设计模式之单例设计模式(Singleton)
单例对象(Singleton)是一种常用的设计模式。在Java应用中,单例对象能保证在一个JVM中只有一个对象实例存在。
好处:
1)某些类创建比较繁琐,对于一些大型的对象,这是一笔很大的系统开销。
2)省去new操作符,降低了系统内存的使用频率,减轻GC压力。
package com.usst.chicago;
public class Singleton {
//私有静态实例,防止
设计模式之工厂方法模式(Factory Method)
一、普通工厂模式:建立一个工厂类,对实现了同一接口的一些类进行实例的创建。
创建共同接口:
package com.usst.chicago;
public interface Sender {
public void send();
}
创建实现类:
package com.usst.chicago;
public class MailSender implements Se
设计模式之原型模式(Prototype)
原型模式虽然是创建型模式,但是与工厂模式没有关系。该模式的思想:是将一个对象作为原型,对其进行复制、克隆,产生一个和原对象类似的新对象。
创建一个原型类:
package com.usst.chicago;
public class Prototype implements Cloneable {
public Object clone() throws CloneNotSupport
IDEA批量修改变量名称
刚刚使用IDEA不久,遇到一个简单的问题:定义了一个方法,并在很多的地方都有调用,而现想要修改该函数名。即一次性批量修改变量名称。
尝试在定义的函数名上进行rename操作,结果所有原来的名称都自动同步过来了。
win10配置tomcat
本文针对tomcat的解压版!使用的版本为Tomcat 7.0 !将下载的安装包解压到本地的安装目录。以前的版本需要配置系统的环境变量,在tomcat 7.0之后的版本不再需要配置(原因如下)。使用editplus打开startup.bat。意味着如果bin目录下存在catalina.bat文件即可访问tomcat页面。启动tomcat后,打开浏览器,输入localhost:8080后看到如下页面...
windows下修改mysql的字符编码
windows 10系统 + MySQL Server 5.5 首先进入到mysql的安装目录中mysql的默认编码方式为latin1,使用EditPlus工具打开my.ini文件,并修改如下选项。修改后保存文件,并在系统的服务中重启mysql服务。测试修改是否成功:在mysql的命令行输入命令:show variables like "%char%";如果出现如下图所示,则表示修改成功。...
windows环境测试mapreduce程序之环境配置
场景描述:在windows环境中开发mapreduce程序并在本地测试运行时,出现下述错误提示:Exception in thread "main" java.lang.UnsatisfiedLinkError: org.apache.hadoop.util.NativeCrc32.nativeComputeChunkedSumsByteArray(II[BI[BIILjava/lang/Stri...
【python】让对象支持上下文管理
from sys import stdin, stdout
import getpass
import telnetlib
from collections import deque
class TelnetClient:
def __init__(self, host, port=23):
self.host = host
self.port = por...
【python】使用property函数为类创建可管理属性fget\fset\fdel
import math
class Circle:
def __init__(self, radius):
self.__radius = radius # 设置私有属性,不让用实例.__radius访问
def get_radius(self):
return round(self.__radius, 1)
def set_...
【python】用描述符对实例属性做类型检查
class T:
pass
t = T()
t.__dict__['x'] = 'ooo' #等价于 t.x = 'ooo', 添加实例属性x
print(t.x)
===============================
ooo
class Attr:
def __init__(self, key, type_):
self.key = ke...
【python】对象释放,弱引用weaker.ref
class A:
def __del__(self):
print("in__del__")
>>> a = A()
>>> a = None
in__del__
>>> f = A()
>>> g = f
>>> f = None
>&a
【python】通过方法名字的字符串调用方法
from lib1 import Circle
from lib2 import Triangle
from lib3 import Rectangle
from operator import methodcaller
def get_area(shape, method_name = ['area', 'get_area', 'getArea']): #'area', 'get_area...
今日推荐
周排行