首页 文章 精选 留言 我的

精选列表

搜索[学习],共10000篇文章
优秀的个人博客,低调大师

Python零基础学习笔记(三十七)—— 栈和队列

#模拟栈结构 stack = [] #压栈(向栈里面存数据) stack.append("A") print(stack) stack.append("B") stack.append("C") print(stack) #出栈(在栈里面取数据) res1 = stack.pop() print(res1) print(stack) res2 = stack.pop() print(res2) print(stack) res3 = stack.pop() print(res3) print(stack) #模拟队列 import collections #创建队列 queue = collections.deque() print(queue) #进队 queue.append("A") print(queue) queue.append("B") print(queue) #出队 res1 = queue.popleft() print(res1) print(queue) res2 = queue.popleft() print(res2) print(queue)

优秀的个人博客,低调大师

Python零基础学习笔记(二十九)—— OS模块

import os ''' OS:包含了普遍的操作系统的功能 ''' #获取操作系统类型 nt->Windows posix->Linux/Unix或Mac OS X print(os.name) #打印操作系统详细信息,注意:windows 不支持 #print(os.uname()) #获取操作系统的环境变量 print(os.environ) #获取指定环境变量 print(os.environ.get("ALLUSERSPROFILE")) #获取当前目录 print(os.curdir) #获取当前工作目录,即当前脚本所在的目录 print(os.getcwd()) #返回指定目录下的所有文件(列表形式) print(os.listdir(r"C:\Users\Administrator\PycharmProjects\untitled\day006")) #在当前目录下创建新目录 #os.mkdir("My name") #删除目录 #os.rmdir("My name") #获取文件属性 print(os.stat("断言.py")) #重命名 #os.rename("My name","sd") #删除普通文件 #os.remove("sd") #运行shell命令 #os.system("notepad") #os.system("write") #os.system("shutdown -s -t 500") #自动关机 #os.system("taskkill /f /im notepad.exe") #关闭notepad进程 ''' os.path ''' #查看当前的绝对路径 print(os.path.abspath("./sd")) #拼接路径 p1 = r"C:\Users\Administrator\PycharmProjects\untitled\day011" p2 = "jjking"#注意:开始不能有斜杠 print(os.path.join(p1,p2)) #拆分路径 path2 = r"C:\Users\Administrator\PycharmProjects\untitled\day011\sd" print(os.path.split(path2)) #获取扩展名 print(os.path.splitext(path2)) #是否是目录 print(os.path.isdir(path2)) #判断文件是否存在 path3 = r"C:\Users\Administrator\PycharmProjects\untitled\day011\断言.py" print(os.path.isfile(path3)) #判断文件是否存在 print(os.path.exists(path3)) #获得文件字节 print(os.path.getsize(path3)) #获得文件路径 print(os.path.dirname(path3)) #获得文件名 print(os.path.basename(path3))

优秀的个人博客,低调大师

Python零基础学习笔记(二十八)—— 异常处理

try: print(enume) print(3 / 0) except ZeroDivisionError as e: print("除数为零!") except NameError as e: print("名称错了!") #使用except而不使用任何错误类型 try: print(" ",de) except: print("Error!") #使用except显示多种异常 try: pass except(NameError,ZeroDivisionError): print("出现了NameError或ZeroDivisionError" ''' 特殊 #1、错误其实是class(类),所有的错误都继承自BaseException,所以在捕获 #2、跨越多层调用 #需求:当程序遇到问题时不让程序结束,而越过错误继续向下执行 ''' ''' try……except……else 格式: try: 语句t except 错误码 as e: 语句1 except 错误码 as e: 语句2 except 错误码 as e: 语句3 ... except 错误码 as e: 语句n else: 语句e 注意:else可有可无 作用:检测try语句块中的错误,从而让except语句捕获错误信息并处理 逻辑:当程序执行到try-except-else语句时 1、当try【语句t】执行出现错误,会匹配第一个错误码,如果匹配上就执行第一个语句 2、当try【语句t】执行出现错误,没有匹配到任何的错误码,错误将会被提交到上一层的 try语句,或者到程序的最上层 3、当try【语句t】执行没有出现错误,执行else下的【语句e】(有else的情况下) ''' def func1(num): print(1 / num) def func2(num): func1(num) def main(): func2(0) try: main() except ZeroDivisionError as e: print("QQQQQ") ''' try……except……else 格式: try: 语句t except 错误码 as e: 语句1 except 错误码 as e: 语句2 except 错误码 as e: 语句3 ... except 错误码 as e: 语句n finally: 语句f 注意:else可有可无 作用:语句t无论是否有错误都将执行最后的语句f ''' try: print(1/1) finally: print("这是必须执行的语句!") print("sda") try: print(1/0) finally: print("这是必须执行的语句!") print("sda")

优秀的个人博客,低调大师

Python零基础学习笔记(二十五)—— 装饰器

''' 概念:是一个闭包,把一个函数当作参数返回一个替代版的函数 本质上是一个返回函数的函数 ''' #简单的装饰器 def func1(): print("My name is jjking.") def func2(): print("******************") func1() func2() def func3(func): def inner(): print("******************") func() return inner #f是func1的加强版本 f = func3(func1) f() def outer(func): def inner(age): if age < 0: age = 0 func(age) return inner #使用@符号将装饰器应用到函数 #python2.4支持使用@符号 @outer def say(age): print("My age is %d"% (age)) #say = outer(say) say(-12) def outer(func): def inner(*args, **kwargs): #添加修改的功能 print("&&&&&&&&") func(*args, **kwargs) return inner @outer def say(name, age): print("My name is %s, I am %d years old."%(name, age)) say("jjking", 23)

优秀的个人博客,低调大师

Python零基础学习笔记(二十三)—— 迭代器

from collections import Iterable, Iterator ''' 可迭代对象:可以直接作用于for循环的对象统称为可迭代对象 (Iterable) 可以用isinstance()去判断一个对象是否是Iterable对象 可以直接作用于for的数据类型一般分两种 1、集合类数据类型:list、 tuple、 dict、 set、 string 2、是generator,包括生成器和带yield的generator function ''' print(isinstance([],Iterable)) print(isinstance((),Iterable)) print(isinstance({},Iterable)) print(isinstance("",Iterable)) print(isinstance((x for x in range(10)),Iterable)) print(isinstance(1,Iterable)) ''' 迭代器:不但可以作用于for循环,还可以被next()函数不断的调用并返回下一个值 直到最后抛出一个StopIteration错误表示无法继续返回下一个值 可以被next()函数调用并不断返回下一个之的对象称为迭代器 (Iterator对象) 可以用isinstance()函数判断一个对象是否是可迭代对象 ''' print(isinstance([],Iterator)) print(isinstance((),Iterator)) print(isinstance({},Iterator)) print(isinstance("",Iterator)) print(isinstance((x for x in range(10)),Iterator)) l = (x for x in range(4)) print(l) print(next(l)) print(next(l)) print(next(l)) print(next(l)) lq = (x for x in [1, 2, 3, 5]) print(next(lq)) print(next(lq)) print(next(lq)) print(next(lq)) #同理tuple、dict、set、string都可以 #转换成Iterator对象 a = iter([2, 4, 6]) print(next(a)) print(next(a)) print(next(a)) print(isinstance((a), Iterator)) endstr = "end" str = "" for line in iter(input, endstr): str += line + "\n" print(str)

优秀的个人博客,低调大师

Python零基础学习笔记(二十一)—— dict字典

''' 概述: 使用键-值(key-value)存储,具有极快的查找速度 key的特性: 1、字典中的key必须唯一,一个字典可以存储多个键值对 2、key必须是不可变的对象 3、字符串、整数等都是不可变的,可以作为key 4、list是可变的,不能作为key ''' ''' 保存多位学生成绩 使用字典,学号为key,学生成绩作为值 ''' dict1 = {"1101":60, "1102":80} print(dict1) #元素的访问 #获取: 字典名[key] print(dict1["1102"]) print(dict1.get("1103")) ret = dict1.get("1103") if ret ==None: print("不存在!") else: print("存在!") #添加 dict1["1103"] = 90 #因为一个key对应一个value,所以,多次对一个key的value赋值,其实就是修改值 dict1["1101"] = 70 print(dict1) #删除 dict1.pop("1102") print(dict1) #遍历 for key in dict1: print(key) print(dict1.values()) for value in dict1.values(): print(value) print(dict1.items()) for k, v in dict1.items(): print(k, v) print(enumerate(dict1)) for i, c in enumerate(dict1): #枚举法 print(i,c) ''' #和list比较 1、查找和插入的速度极快,不会随着key-value的增加而变慢 2、需要占大量的内存,内存浪费多 ''' ''' list: 缺点: 查找和插入的速度随着数据量的增多而减慢 优点: 内存占用小,节省内存 '''

优秀的个人博客,低调大师

Python零基础学习笔记(十六)—— if-elif-else语句

''' if-elif-else语句 格式: if 表达式1: 语句1 elif 表达式2: 语句2 elif 表达式3: 语句3 ...... elif 表达式4: 语句4 else: #可有可无 语句n 逻辑:当程序执行到if-elif-else语句时,首先计算【表达式1】的值, 如果【表达式1】的值为真,则执行【语句1】,执行结束 跳过整个if-elif-else语句 如果【表达式1】的值为假,那么计算【表达式2】的值, 如果【表达式2】的值为真,则执行【语句2】,执行结束 跳过整个if-elif-else语句 ...... 如果没有1个是真的且有else的情况下,执行else里面的语句 否则直接继续向下执行,此段程序相当于没有执行 ''' #判断年龄 执行效率:每条语句必须执行一次,平局时间复杂度相当于5 age = int(input()) if age <= 0: print("没出生呢!") if age > 0 and age <= 3: print("婴儿") if age > 3 and age <= 7: print("幼儿") if age >7 and age <= 18: print("未成年") else: print("成年了") #优化方法 和上一个相比较执行效率提高,平均执行次数2.5 age = int(input()) if age <= 0: print("没出生呢!") elif age > 0 and age <= 3: print("婴儿") elif age > 3 and age <= 7: print("幼儿") elif age >7 and age <= 18: print("未成年") else: print("成年了") #逻辑优化 当执行 age<=3 的时候,一定是 age>0, 以此类推 age = int(input()) if age <= 0: print("没出生呢!") elif age <= 3: print("婴儿") elif age <= 7: print("幼儿") elif age <= 18: print("未成年") else: print("成年了") ''' 这个语句可以用来写只能回答,像小艾同学,天猫精灵啊。。。。 可以用提取关键字的方法来回答问题 在c#里曾经写过那个唐诗三百首,当你输入唐诗的诗名或作者显示相应的古诗词 '''

优秀的个人博客,低调大师

Python零基础学习代码实践 —— 99乘法表

学了for循环语句之后,就会变得相当简单了 #99乘法表 for a in range(10): for b in range(10): if a!=0 and b!=0: print(a,"*", b,"=", a * b) 执行结果: 1 * 1 = 1 1 * 2 = 2 1 * 3 = 3 1 * 4 = 4 1 * 5 = 5 1 * 6 = 6 1 * 7 = 7 1 * 8 = 8 1 * 9 = 9 2 * 1 = 2 2 * 2 = 4 2 * 3 = 6 2 * 4 = 8 2 * 5 = 10 2 * 6 = 12 2 * 7 = 14 2 * 8 = 16 2 * 9 = 18 3 * 1 = 3 3 * 2 = 6 3 * 3 = 9 3 * 4 = 12 3 * 5 = 15 3 * 6 = 18 3 * 7 = 21 3 * 8 = 24 3 * 9 = 27 4 * 1 = 4 4 * 2 = 8 4 * 3 = 12 4 * 4 = 16 4 * 5 = 20 4 * 6 = 24 4 * 7 = 28 4 * 8 = 32 4 * 9 = 36 5 * 1 = 5 5 * 2 = 10 5 * 3 = 15 5 * 4 = 20 5 * 5 = 25 5 * 6 = 30 5 * 7 = 35 5 * 8 = 40 5 * 9 = 45 6 * 1 = 6 6 * 2 = 12 6 * 3 = 18 6 * 4 = 24 6 * 5 = 30 6 * 6 = 36 6 * 7 = 42 6 * 8 = 48 6 * 9 = 54 7 * 1 = 7 7 * 2 = 14 7 * 3 = 21 7 * 4 = 28 7 * 5 = 35 7 * 6 = 42 7 * 7 = 49 7 * 8 = 56 7 * 9 = 63 8 * 1 = 8 8 * 2 = 16 8 * 3 = 24 8 * 4 = 32 8 * 5 = 40 8 * 6 = 48 8 * 7 = 56 8 * 8 = 64 8 * 9 = 72 9 * 1 = 9 9 * 2 = 18 9 * 3 = 27 9 * 4 = 36 9 * 5 = 45 9 * 6 = 54 9 * 7 = 63 9 * 8 = 72 9 * 9 = 81

优秀的个人博客,低调大师

Python零基础学习笔记(十三)—— if 和 if-else语句

if 语句 格式: if 表达式: 语句 (注意:if 和表达式之间必须有空格,语句之前必须有tab键,也就是4个空格) 逻辑: 当程序执行到if语句时,首先会计算“表达式”的值 如果“表达式”的值为真,那么就执行if下的“语句” 如果“表达式”的值为假,则跳过整个if语句,继续向下执行 if-else 语句 格式: if 表达式: 语句1 else 表达式: 语句2 逻辑:当程序执行到if-else语句时,首先计算“表达式”的值 如果表达式的值为真,则执行语句1,执行完语句1之后,跳出if-else语句 如果表达式的值为假,则执行语句2,执行完语句2之后,跳出if-else语句

优秀的个人博客,低调大师

Python零基础学习笔记(三)——注释、输入和输出

单行注释# """多行注释多行注释......""" '''多行注释多行注释......'''print 打印到屏幕上一些信息,内容就是“”之间的print("这是第一个关于注释的文件") 2 .打印多个字符转,用逗号隔开,但遇到逗号会输出一个空格print("我","是","谁") 可以运算print(10 + 8) print("10 + 8 =", 10 + 8)input 从外部获取变量的值等待输入(阻塞),输入之后继续执行例:age = input("请输入你的年龄:")print("我看到你的年龄是", age, "岁") (以上所有程序) (程序执行结果)

优秀的个人博客,低调大师

java自定义注解学习(三)_注解解析及应用

上篇文章已经介绍了注解的基本构成信息。这篇文章,主要介绍注解的解析。毕竟你只声明了注解,是没有用的。需要进行解析。主要就是利用反射机制在运行时进行查看和利用这些信息 常用方法汇总 在Class、Field、Method、Constructor中都有如下方法: //获取所有的注解 public Annotation[] getAnnotations() //获取所有本元素上直接声明的注解,忽略inherited来的 public Annotation[] getDeclaredAnnotations() //获取指定类型的注解,没有返回null public <A extends Annotation> A getAnnotation(Class<A> annotationClass) //判断是否有指定类型的注解 public boolean isAnnotationPresent(Class<? extends Annotation> annotationClass) Annotation 是一个借口,它表示注解,源码为: public interface Annotation { boolean equals(Object obj); int hashCode(); String toString(); //返回真正的注解类型 Class<? extends Annotation> annotationType(); } 实际上,所有的注解类型、内部实现时,都是扩展的Annotation 对于Method和Contructor,他们都有方法参数 public Annotation[][] getParameterAnnotations() 应用注解 日常工作中,每个公司都会自定义注解进行记录日志的,我们就做一个简单的记录日志操作的注解,结合aop和springboot 1.建立springboot项目 这里不再赘述,主要需要引入aop <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-aop</artifactId> </dependency> 2.定义自定义注解 package com.kevin.anno.annotation; import java.lang.annotation.ElementType; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target; @Target(ElementType.METHOD) @Retention(RetentionPolicy.RUNTIME) public @interface KevinLog { String value() default ""; } 3.定义aspect及解析注解 package com.kevin.anno.aspect; import com.kevin.anno.annotation.KevinLog; import org.aspectj.lang.ProceedingJoinPoint; import org.aspectj.lang.annotation.Around; import org.aspectj.lang.annotation.Aspect; import org.aspectj.lang.annotation.Pointcut; import org.aspectj.lang.reflect.MethodSignature; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.stereotype.Component; import org.springframework.web.context.request.RequestContextHolder; import org.springframework.web.context.request.ServletRequestAttributes; import javax.servlet.http.HttpServletRequest; import java.lang.reflect.Method; @Aspect @Component public class LogAscpect { private final static Logger logger = LoggerFactory.getLogger(LogAscpect.class); @Pointcut("@annotation(com.kevin.anno.annotation.KevinLog)") public void log() { } @Around("log()") public Object aroundAdvice(ProceedingJoinPoint point) throws Throwable { Object object = null; long start = System.currentTimeMillis(); Method method = ((MethodSignature) MethodSignature.class.cast(point.getSignature())).getMethod(); KevinLog kevinLog = method.getAnnotation(KevinLog.class); String operationName = kevinLog.value(); object = point.proceed(point.getArgs()); long end = System.currentTimeMillis(); Long excuteTime = end - start; print(operationName, excuteTime, point); return object; } private void print(String operationName, Long excuteTime, ProceedingJoinPoint point) { ServletRequestAttributes attributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes(); HttpServletRequest request = attributes.getRequest(); //operationName logger.info("operationName={}", operationName); //time logger.info("time={}", excuteTime); // url logger.info("url={}", request.getRequestURL()); //method logger.info("method = {}", request.getMethod()); //ip logger.info("ip = {}", request.getRemoteAddr()); //类方法 logger.info("class_method={}", point.getSignature().getDeclaringTypeName() + "." + point.getSignature().getName()); //参数 logger.info("args = {}", point.getArgs()); } } 4. 在请求方法上加上自定义注解 package com.kevin.anno.controller; import com.kevin.anno.annotation.KevinLog; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; @RestController public class HelloController { @RequestMapping(value = "/hello") @KevinLog("kevin test !") public String hello() { return "hello kevin"; } } 5.启动测试 访问:http://localhost:8080/hello 页面出现:hello kevin 控制台打印信息如下: 2018-10-22 10:38:22.456 INFO 3916 --- [nio-8080-exec-2] com.kevin.anno : operationName=kevin test ! 2018-10-22 10:38:22.456 INFO 3916 --- [nio-8080-exec-2] com.kevin.anno.aspect.LogAscpect : time=7 2018-10-22 10:38:22.456 INFO 3916 --- [nio-8080-exec-2] com.kevin.anno.aspect.LogAscpect : url=http://localhost:8080/hello 2018-10-22 10:38:22.456 INFO 3916 --- [nio-8080-exec-2] com.kevin.anno.aspect.LogAscpect : method = GET 2018-10-22 10:38:22.457 INFO 3916 --- [nio-8080-exec-2] com.kevin.anno.aspect.LogAscpect : ip = 0:0:0:0:0:0:0:1 2018-10-22 10:38:22.457 INFO 3916 --- [nio-8080-exec-2] com.kevin.anno.aspect.LogAscpect : class_method=com.kevin.anno.controller.HelloController.hello 2018-10-22 10:38:22.457 INFO 3916 --- [nio-8080-exec-2] com.kevin.anno.aspect.LogAscpect : args = {} 总结 其实, 大家可以自己写这玩玩,比较这个demo还用到了aop,工作中很少接触到aop。以至于面试的时候,问你aop的时候,自己都没有实际的应用过。 好了。玩的开心!

优秀的个人博客,低调大师

深度学习目标检测系列:faster RCNN实现|附python源码

目标检测一直是计算机视觉中比较热门的研究领域,有一些常用且成熟的算法得到业内公认水平,比如RCNN系列算法、SSD以及YOLO等。如果你是从事这一行业的话,你会使用哪种算法进行目标检测任务呢?在我寻求在最短的时间内构建最精确的模型时,我尝试了其中的R-CNN系列算法,如果读者们对这方面的算法还不太了解的话,建议阅读《目标检测算法图解:一文看懂RCNN系列算法》。在掌握基本原理后,下面进入实战部分。 本文将使用一个非常酷且有用的数据集来实现faster R-CNN,这些数据集具有潜在的真实应用场景。 问题陈述 数据来源于医疗相关数据集,目的是解决血细胞检测问题。任务是通过显微图像读数来检测每张图像中的所有红细胞(RBC)、白细胞(WBC)以及血小板。最终预测效果应如下所示: 选择该数据

资源下载

更多资源
腾讯云软件源

腾讯云软件源

为解决软件依赖安装时官方源访问速度慢的问题,腾讯云为一些软件搭建了缓存服务。您可以通过使用腾讯云软件源站来提升依赖包的安装速度。为了方便用户自由搭建服务架构,目前腾讯云软件源站支持公网访问和内网访问。

Spring

Spring

Spring框架(Spring Framework)是由Rod Johnson于2002年提出的开源Java企业级应用框架,旨在通过使用JavaBean替代传统EJB实现方式降低企业级编程开发的复杂性。该框架基于简单性、可测试性和松耦合性设计理念,提供核心容器、应用上下文、数据访问集成等模块,支持整合Hibernate、Struts等第三方框架,其适用范围不仅限于服务器端开发,绝大多数Java应用均可从中受益。

Rocky Linux

Rocky Linux

Rocky Linux(中文名:洛基)是由Gregory Kurtzer于2020年12月发起的企业级Linux发行版,作为CentOS稳定版停止维护后与RHEL(Red Hat Enterprise Linux)完全兼容的开源替代方案,由社区拥有并管理,支持x86_64、aarch64等架构。其通过重新编译RHEL源代码提供长期稳定性,采用模块化包装和SELinux安全架构,默认包含GNOME桌面环境及XFS文件系统,支持十年生命周期更新。

Sublime Text

Sublime Text

Sublime Text具有漂亮的用户界面和强大的功能,例如代码缩略图,Python的插件,代码段等。还可自定义键绑定,菜单和工具栏。Sublime Text 的主要功能包括:拼写检查,书签,完整的 Python API , Goto 功能,即时项目切换,多选择,多窗口等等。Sublime Text 是一个跨平台的编辑器,同时支持Windows、Linux、Mac OS X等操作系统。

用户登录
用户注册