main函数

PyQt5信号与槽详解

三世轮回 提交于 2020-02-16 10:35:08
1、信号与槽函数基础'''信号与槽函数基础,信号是一个事件,发射信号之后槽函数就会执行'''from PyQt5.QtWidgets import *import sysclass signal(QWidget): def __init__(self): super(signal,self).__init__() self.initUI() #编辑控件及其关联的信号 def initUI(self): self.resize(300,200) self.setWindowTitle("信号与槽函数基础") self.b = QPushButton("我的按钮",self) #利用第二个参数self直接可以显示在窗口,不用布局来进行添加控件 #信号与槽函数连接 self.b.clicked.connect(self.onclick) #编辑槽函数 def onclick(self): self.b.setText("信号已经发出") self.b.setStyleSheet("QPushButton(max-width:300px;min-width:300px)")if __name__=="__main__": app=QApplication(sys.argv) p=signal() p.show() sys.exit(app.exec_()) 2、自定义信号''

Go语言并发编程总结

你。 提交于 2020-02-16 03:47:23
Golang :不要通过共享内存来通信,而应该通过通信来共享内存。 这句风靡在Go社区的话,说的就是 goroutine中的 channel ....... 他在go并发编程中充当着 类型安全的管道作用。 1、通过golang中的 goroutine 与sync.Mutex进行 并发同步 import( "fmt" "sync" "runtime" ) var count int =0; func counter(lock * sync.Mutex){ lock.Lock() count++ fmt.Println(count) lock.Unlock() } func main(){ lock:=&sync.Mutex{} for i:=0;i<10;i++{ //传递指针是为了防止 函数内的锁和 调用锁不一致 go counter(lock) } for{ lock.Lock() c:=count lock.Unlock() ///把时间片给别的goroutine 未来某个时刻执行该routine runtime.Gosched() if c>=10{ fmt.Println("goroutine end") break } } } 2、goroutine之间通过 channel进行通信,channel是和类型相关的 能够理解为 是一种类型安全的管道。 简单的channel

Go语言的并发机制

蹲街弑〆低调 提交于 2020-02-16 01:53:36
目录 写在前面 并发 Concurrency Channel 关键字:range,close 关键字 select sync.Mutex 写在前面 这一部分,在官方教程中并没有太多详细的说明,建议读者先看以下文章: http://legendtkl.com/2017/07/30/understanding-golang-channel/ https://studygolang.com/articles/12342 https://studygolang.com/articles/12402 并发 Concurrency go的并发是通过goroutine来实现的 它的使用,就是在某个操作前加上go关键字 go f(x, y, z) 什么叫当前的goroutine? 文字苍白,且看代码: package main import "fmt" func main() { fmt.println("hello,world!") } 如果程序开始执行,那么上面的的就是当前的goroutine了 什么是非当前的goroutine 使用go关键词就能添加新的goroutine了 import "fmt" func NewGoroutine() { fmt.Println("new goroutine!") } func main() { go NewGoroutine() /

Clion 刷题时多个 main 函数的解决方法

可紊 提交于 2020-02-16 01:09:20
Clion 刷题时多个 main 函数的解决方法 在写c/c++的过程中编辑器经历了从vc++到Dev-c++,到Clion。编辑器越来越智能,越来越好用。 问题: 但是在刷算法的过程中在Clion中是Cmake在管理项目,不能像Dev-c++中那样在一个文件夹下运行多个带main函数的文件。 方法一: 编辑Cmake文件,通过指定多个可执行文件来解决(有点繁琐) 方法二: 在每个文件中通过重定义的方法来解决   在写某道算法时,对main进行重定义,   运行完成以后:将main改为main04,即题号   这样就可以继续创建文件写下一道题,回头想复习哪道题时,只需要改一下对main的重定义即可运行。 来源: CSDN 作者: li123_123_ 链接: https://blog.csdn.net/li123_123_/article/details/104306643

并发编程基础

主宰稳场 提交于 2020-02-15 13:01:32
并发编程基础 1.多线程 threading: import time import threading def worker ( n ) : print ( '{}函数执行于:{}' . format ( threading . current_thread ( ) . name , time . ctime ( ) ) ) time . sleep ( n ) print ( '{}函数结束于:{}' . format ( threading . current_thread ( ) . name , time . ctime ( ) ) ) def main ( ) : print ( '【主函数执行于:{}】' . format ( time . ctime ( ) ) ) threads = [ ] # 列表目的:同时启动 t1 = threading . Thread ( target = worker , args = ( 4 , ) ) threads . append ( t1 ) t2 = threading . Thread ( target = worker , args = ( 2 , ) ) threads . append ( t2 ) for i in threads : i . start ( ) # 启动线程 for i in threads :

Java 中的比较器 —— Comparator

流过昼夜 提交于 2020-02-15 12:26:27
一、Comparable 接口 学习 Comparator 之前,我们先来看看 Comparable 接口。 这里先不介绍 Comparable 接口的相关概念,我们先看看数组和集合列表的排序。我们应该都写过,比较简单,这里再回顾一下吧。 1、数组的排序 对数组排序,使用 Arrays.sort () : import java . util . Arrays ; public class Main { public static void main ( String [ ] args ) { String [ ] fruits = new String [ ] { "Pineapple" , "Apple" , "Orange" , "Banana" } ; Arrays . sort ( fruits ) ; for ( String fruit : fruits ) { System . out . println ( fruit ) ; } } } 输出结果为: Apple Banana Orange Pineapple 2、集合列表的排序 对于集合列表的排序,我们可以使用 Collections.sort() 方法: import java . util . ArrayList ; import java . util . Collections ; import

Java 中的迭代器 —— Iterator

半城伤御伤魂 提交于 2020-02-15 08:40:19
一、 Iterator 是什么? 1、迭代器模式 迭代器模式( Iterator Pattern )是一种非常常见的设计模式,这种模式用于顺序访问集合对象的元素,而不需要知道集合对象内部的实现方式。 所以,迭代器模式的优点就是: 简化了聚合类 。无论是增加新的聚合类还是增加迭代器类都会很方便,无须修改原有的代码。 它的优点也导致了它的缺点:由于迭代器模式将存储数据和遍历数据的职责分离,增加新的聚合类时也需要对应增加新的迭代器类,耦合度很高,这在一定程度上增加了系统的复杂性。 2、Iterator 接口 在 Java 中,提供了一个迭代器接口 Iterator ,把在集合对象中元素之间遍历的工作交给迭代器,而不是集合对象本身,迭代器为遍历不同的集合对象提供一个统一的接口。这就是 Java 集合框架中 Iterable 接口位于框架结构最顶层的原因。这其实也就是面向对象的思想。 二、Iterator 的使用 下面我们先看看 Iterator 是如何使用的。 1、Iterator 中的方法 先从 Iterator 接口的源码来分析一下: public interface Iterator < E > { boolean hasNext ( ) ; E next ( ) ; default void remove ( ) { throw new

Java面向对象[方法]

可紊 提交于 2020-02-15 06:14:47
方法是类和对象的行为特征的抽象,Java中的方法与传统的函数非常相似又有着显著的不同,在结构化语言中函数是最小单位,整个软件由一个一个函数组成;在面向对象语言中,类是最小单位,整个系统由一个一个类组成,在java中方法不能独立存在,必须属于类或者对象。 方法必须属于类或者对象 如果要定义方法,则只能在类体内定义,不能独立定义方法,如果类中的方法由static修饰,那么这个方法属于这个类,否则该方法属于这个类的实例 Java语言是静态的,一个类定义完成后,只要不再重新编译这个类文件,该类和类的对象所拥有的方法是固定的,永远都不会改变 方法不能独立定义,也不能独立执行,它的调用方式必须是【类.方法】【对象.方法】 同一个类中的一个方法调用另一个方法时,如果被调用的是普通方法,则默认使用this作为调用者,如果被调用的方法是静态方法,则默认使用类作为调用者,表面上看是独立执行,但实际上只是隐藏了主调 需要注意的是static修饰的方法既可以使用类作为调用者,也可以使用对象作为调用者来调用,但static修饰的方法属于类,虽然使用类的对象调用static修饰的方法能够得到相同的执行结果,但那是因为底层依然是使用这些实例所属的类作为调用者,执行虽然不会报异常,但并不支持这么写程序 Java方法的参数传递机制 如果声明方法的时候指定了形参,那么调用方法时必须给这些形参指定参数值

Java 中的封装、继承与多态

与世无争的帅哥 提交于 2020-02-15 05:50:12
在前面的 《 Java — 面向对象的编程语言》 里,介绍了面向对象的三大特征:封装、继承、多态,主要是概念上的讲解,本篇文章将从代码出发,看看 Java 中的封装、继承与多态。 一、封装 在编程时,把数据(属性)和有关属性的一些操作(方法)绑定在一起,形成一个不可分开的集合(类),这个过程就是封装( Encapsulation )。 封装时,我们需要隐藏对象的属性和实现细节,仅对外公开接口,并控制在程序中属性的读和写的 访问级别 。 一般情况下,我们会把所有的属性都 私有化 ,对每个属性提供 getter (读) 和 setter (写) 方法,供外界使用: public class Person { private String name ; private int age ; public String getName ( ) { return name ; } public void setName ( String name ) { this . name = name ; } public int getAge ( ) { return age ; } public void setAge ( int age ) { this . age = age ; } } public class Me { public static void main ( String [ ]

golang学习笔记(一):包,变量,函数

旧街凉风 提交于 2020-02-15 00:23:29
欢迎访问我的 博客 和 github ! go 语言学习笔记第一弹,来自 gotour ,以后要常写笔记,把自己学习笔记记录下来,就算只是笔记也要多写。 好记性不如烂笔头,也要多锻炼自己的写作能力。 说实话,今天很累了,最近在折腾操作系统内核,因为原先写了个bootloader,现在想要转向 grub 来,遇到坑太多了,已经两天了😭。 还是接触一点新知识简单的东西,来缓冲一下,脑子迷迷糊糊的。 package 每个Go程序由很多包组成。 程序都是从 main 包开始运行。 该程序正在使用导入路径为“ fmt”和“ math / rand”的软件包。 按照约定,程序包名称与导入路径的最后一个元素相同。 例如,“ math / rand”包包括以语句包rand开头的文件。 import 此代码将导入分组为带括号的“分解的”导入语句。 您还可以编写多个导入语句,例如: package main import ( "fmt" "math" ) func main() { fmt.Println(math.Pi) } 但是使用分解式import语句是一种很好的样式。 导出名称 在Go中,如果名称以大写字母开头,则导出该名称。 例如,Pizza是一个导出的名称,Pi也是,它是从math包导出的。 pizza和pi不以大写字母开头,所以它们不被导出。 在导入包时,您只能引用它导出的名称。任何