装饰器补充与有参装饰器
一、 装饰器补充 functools模块下提供的一个装饰器wraps用于用于将装饰器的wrapper函数的文档注释于函数名属性修改得和原函数的一模一样,使wrapper函数完全和原函数相同。 from functools import wraps
def outter(func):
@wraps(func) #省去了在函数体内手动的修改文档注释及函数名功能
def wrapper(*args,**kwargs):
""""这是一个主页功能"""
面向对象分析与设计—创造者原则
创造者原则 Creator原则的本质是创建类对象职责应该委托给那个对象,也就是谁应该负责产生某个类的实例。 解决方案: 如果符合下面的一个或者多个条件,则可以将创建A的实例的职责分配给B; B包含/聚合A B记录A的实例 B拥有初始化A的数据并在创建A的实例时将数据传递给A B频繁使用A 满足上述一种或者多种情况的时候,我们应该将创建A的实例的职责分配给B。 合理的creator原则带来的优点:如果职责分配合理,设计就能降低耦合,提高设计的清晰度,封装性和重用性。 示例:例如订单和商品的关系是
转换流;对象流;Properties;多线程(程序;进程;线程,并行;并发);CPU的调度;多线程的实现方式 (Java Day21)
一,转换流【工具流】 概述 是一个能够在字节流和字符流之间相互转换的io流【工具流】。 无论字节流操作数据还是字符流操作数据最终都是转变到字节的操作。无论到文档中去读还是写得到的都是数字【字节数】使用字节流还是字符流参考编码集要和文档的编码集要一致,不一致就会出现乱码。写程序的时候使用的编码集一定和要操作的文档的编码集一致吗?但是我们又要保证不能乱码,就得转换编码集【转换流有这个功能】 他是字符流的子类但是本质上是一个字符流,他拥有字符流所有的功能,也可以被字符缓冲流加强【他可以把字节流变成字
1年经验Java技巧
【转载自http://cnblog.com/neuser/j1j32.html】 1.引言 毕业已经一年有余,这一年里特别感谢技术管理人员的器重,以及同事的帮忙,学到了不少东西。这一年里走过一些弯路,也碰到一些难题,也受到过做为一名开发却经常为系统维护和发布当救火队员的苦恼。遂决定梳理一下自己所学的东西,为大家分享一下。 经过一年意识到以前也有很多认识误区,比如: 偏爱收集,经常收集各种资料视频塞满一个个硬盘,然后心满意足的看着容量不行动。 不重基础,总觉得很多基础东西不需要再
Java判断网络是否正常
判断网络是否正常使用 /**
* 判断网络是否正常
* @return
*/
public static boolean isConnect(String ipPath){
//定义其返回的状态,默认为false,网络不正常
boolean connect = false;
/**
* 用Runtime.getRuntime().exec()来调用系统外部的某个程序,
通用计价的简单代码实现
什么场景该使用通用计价 如果商品的费用属性一直在变化,比如隔三岔五的新增某种费用(按新规则计算的新费用),作为开发人员的你每次需要胆战心惊的维护现有的计价接口,测试也需要花费大量时间验证对其他费用的影响。基于这一点,我在想如果初期把计价做成一个通用的计价接口,每次加费用我只需要关注新费用的计算规则,不需要去修改已有费用的规则计算代码,也就可以避免一些BUG的产生。 简单代码实现 总体思路是利用Spring的容器管理,项目启动时将所有计价类型加载在计价执行类中,具体调用方法和平时写代码一样注入就
洛谷P2725 [USACO3.1]邮票 Stamps
题意: 给一组 \(n\) 枚邮票的面值集合和一个上限 \(k\) —— 表示信封上能够贴 \(k\) 张邮票。请求出最大的正整数 \(m\),满足 \(1\) 到 \(m\) 的面值都可以用不超过 \(k\) 张邮票表示出来。 思路: 因为每种面值都能拿\(∞\)个,所以不难想到完全背包来解。令\(f[i]\)表示凑面值为i的时候用的最少张数。 最大不超过\(k\)张,所以面值张数越少越好。每次两种选择: 选,并且再选一张不会超过\(k\)张,那么就去从\(f[j-a[i]]\)那儿转移过来
P1231 教辅的组成 【网络流】【最大流】
题目背景 滚粗了的HansBug在收拾旧语文书,然而他发现了什么奇妙的东西。 题目描述 蒟蒻HansBug在一本语文书里面发现了一本答案,然而他却明明记得这书应该还包含一份练习题。然而出现在他眼前的书多得数不胜数,其中有书,有答案,有练习册。已知一个完整的书册均应该包含且仅包含一本书、一本练习册和一份答案,然而现在全都乱做了一团。许多书上面的字迹都已经模糊了,然而HansBug还是可以大致判断这是一本书还是练习册或答案,并且能够大致知道一本书和答案以及一本书和练习册的对应关系(即仅仅知道某书和
洛谷P2742 Fencing the Cows
传送门 题解 二维凸包模板题。 使用简单迅速的 Graham Scan 算法可以直接求出整个凸包。算法流程: 选出所有点中 y 坐标最小的点,作为原点,建立极坐标系。 将其余点以极角排序,极角相同看长度 将基准点与第一点入栈,依次扫描之后的点,设栈顶点为 \(b\),栈顶之下一个点为 \(a\),当前扫描到的点是 \(c\),如果 \(\vec{ab}\) 转向 \(\vec{ac}\) 为顺时针,那么将 \(b\) pop出栈。判断位置使用向量叉积实现,如果顺时针,那么 \(\vec{ab}
【爬虫】Java基本技术一览表
现代社会,有效的信息对于人们来说,就像氧气一样,不可或缺,互联网时代的到来,大数据时代的风口,让数据的收集与整理工作变得更加的容易。当你在网络之间冲浪时,网络爬虫技术也在网络中,穿梭,自动收集互联网上有用的信息。 很多编程语言都可以用来开发爬虫工具,相对于Python,Java由于严谨的语法结构和体系结构,相对于其他语言在爬虫技术上有一定的优势。 很多的爬虫技术都是用Java或者C#开发的,如果,运行在服务端的爬虫,也可以使用Java开发。 爬虫技术需要的一些基本技术基础。 在以后的叙述中,我
LeetCode 64. 求1+2+…+n
64. 求1+2+…+n 难度中等 求 1+2+...+n ,要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句(A?B:C)。 示例 1: 输入: n = 3
输出: 6
示例 2: 输入: n = 9
输出: 45
限制: 1 <= n <= 10000 思路1:题目要求不允许使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句,但没有规定不准使用递归,所以可以使用递归,但同时又不能使用if语句,
【Leetcode】面试题 17.16. 按摩师
题目链接:面试题 17.16. 按摩师 题意:一个有名的按摩师会收到源源不断的预约请求,每个预约都可以选择接或不接。在每次预约服务之间要有休息时间,因此她不能接受相邻的预约。给定一个预约请求序列,替按摩师找到最优的预约集合(总预约时间最长),返回总的分钟数。 题解:在这几天做了校招笔试题之后,突然做一个这么简单的dp真是开心极了。。 不能接受相邻的预约,也就是告诉我们它此刻的状态是由上上个状态以及上一个状态决定的。 取上一个预约,当前预约不可接受,如果不服务上一个预约,那么我本次预约就可以接待
今日推荐
周排行