info

yii2 分页功能

旧城冷巷雨未停 提交于 2019-12-04 15:40:16
1、control use yii\data\Pagination; $query = goods::find(); $countQuery = clone $query; $pages = new Pagination(['totalCount' => $countQuery->count(),'pageSize' => '5']); $goods_info = $query->offset($pages->offset) ->limit($pages->limit) ->all(); return $this->renderPartial('show',['goods_info' => $goods_info,'pages'=>$pages]); 2、view use yii\widgets\LinkPager; echo LinkPager::widget(['pagination' => $pages]); 来源: oschina 链接: https://my.oschina.net/u/2450048/blog/521439

面向过程编程

主宰稳场 提交于 2019-12-04 15:34:14
面向过程编程 面向过程编程是解决问题的一种思想,相当于武林门派,武林门派之间没有好坏之分,因此它与我们之后学习的面向对象编程其实没有好坏之分。 面向过程编程,核心是编程二字,过程指的是解决问题的步骤,即先干什么、后干什么、再干什么、然后干什么…… 基于该思想编写程序就好比在设计一条流水线,面向对称编程其实是一种机械式的思维方式。 当我们写登录功能,我们首先需要输入账号、密码,然后认证两次密码是否相同,然后从数据库中读取密码验证用户密码输入是否正确,然后输入验证码……之后,我们就能够实现登录功能。这样把登录功能问题流程化,进而是解决问题的思路非常清晰。 优点:复杂的问题流程化,进而简单化。 生产汽水瓶的流水线,没办法生产特斯拉。流水线下一个阶段的输入与上一个阶段的输出是有关联的。因此他的扩展性极差。 缺点:扩展性差。 一、注册功能 1.1 接受用户输入用户名,进行合法性校验,拿到合法的用户名 def check_username(): username = input('username>>>').strip() if username.isalpha(): return username else: print('用户名必须为字母,傻叉') 1.2 接受用户输入密码,进行合法性校验,拿到合法的密码 def check_pwd(): while True: pwd = input(

函数的定义

℡╲_俬逩灬. 提交于 2019-12-04 15:30:38
函数的定义 一、函数体系 接下来,我们将按照这个函数体系给大家详细的介绍函数: - 什么是函数? - 为什么要用函数? - 函数的分类:内置函数与自定义函数 - 如何自定义函数 - 语法 - 定义有参数函数,及有参函数的应用场景 - 定义无参数函数,及无参函数的应用场景 - 定义空函数,及空函数的应用场景 - 调用函数 - 如何调用函数 - 函数的返回值 - 函数参数的应用:形参和实参,位置形参,位置实参,关键字实参,默认形参,*args,**kwargs - 高阶函数(函数对象) - 函数嵌套 - 作用域与名称空间 - 装饰器 - 迭代器与生成器及协程函数 - 三元运算,列表解析、生成器表达式 - 函数的递归调用 - 内置函数 - 面向过程编程与函数式编程 如果现在有一个需求需要实现用户登录注册的功能,我们该怎么实现呢? # 注册 username = input('username: ').strip() pwd = input('password: ').strip() with open('38a.txt', 'a', encoding='utf8') as fa: fa.write(f"{username}:{pwd}\n") fa.flush() # 登录 inp_username = input('username: ').strip() inp_pwd =

c#读取数据库bool值

六月ゝ 毕业季﹏ 提交于 2019-12-04 15:15:30
数据库里bit这个布尔类型的字段,非常实用,但是在c#里读取时,许多人喜欢犯一些错误,导致运行报错。 实际中,有效的正确读取方法只有以下两种: int xxx= Convet.ToInt16(reader["xxx"]);//或Convet.ToInt32 bool xxx= bool.Parse(reader["xxx"]); 其他的都有可能会报错,即便不报错,也不能保证数据库设置或操作系统的问题,导致突然报错了! 如int.Parse(),有时就会报一下错误: 在 System.Number.StringToNumber(String str, NumberStyles options, NumberBuffer& number, NumberFormatInfo info, Boolean parseDecimal) 在 System.Number.ParseInt32(String s, NumberStyles style, NumberFormatInfo info) 来源: https://www.cnblogs.com/snowguest/p/11871065.html

[用事实说明两个凡是]一个mysql莫名锁表的问题

只愿长相守 提交于 2019-12-04 13:32:34
背景 上回书 <<一个由mysql事务隔离级别造成的问题分析>> 说到, 有两个实例去更新一条记录, 一条成功, 一条失败. 成功的认为自己获取到的记录, 于是 开开心心的把任务进行处理, 但是在他试图将任务状态更新为处理成功时, 去发现任务被别人锁了... 具体问题 抢到任务的进程 2015-11-23 19:42:01|INFO|exec_task.php|40||get one task: 11 ... //开始处理 2015-11-23 19:42:01|INFO|exec_task.php|107||line_count: 9 2015-11-23 19:42:01|INFO|exec_task.php|147||fork child success: 8346 2015-11-23 19:42:01|INFO|exec_task.php|264||[0] pid: 8346, start: 0, stop: 0 2015-11-23 19:42:01|INFO|exec_task.php|147||fork child success: 8347 2015-11-23 19:42:01|INFO|exec_task.php|264||[1] pid: 8347, start: 1, stop: 1 2015-11-23 19:42:01|INFO|exec_task

《Java虚拟机原理图解》6、 class文件中的方法表集合--method方法在class文件中是怎样组织的

我是研究僧i 提交于 2019-12-04 13:31:21
0. 前言 了解JVM虚拟机原理是每一个Java程序员修炼的必经之路。但是由于JVM虚拟机中有很多的东西讲述的比较宽泛,在当前接触到的关于JVM虚拟机原理的教程或者博客中,绝大部分都是充斥的文字性的描述,很难给人以形象化的认知,看完之后感觉还是稀里糊涂的。 感于以上的种种,我打算把我在学习JVM虚拟机的过程中学到的东西,结合自己的理解,总结成《Java虚拟机原理图解》 这个系列,以图解的形式,将抽象的JVM虚拟机的知识具体化,希望能够对想了解Java虚拟机原理的的Java程序员 提供点帮助。 读完本文,你将会学到: 1、类中定义的method方法是如何在class文件中组织的 2、method方法的表示-方法表集合在class文件的什么位置 3、 类中的method方法的实现代码---即机器码指令存放到哪了,并初步了解机器指令 4. 为什么没有在类中定义自己的构造函数,却可以使用new ClassName()构造函数创建对象 5. IDE代码提示功能的基本原理 1.概述 方法表集合 是指由若干个 方法表 (method_info) 组成的集合。对于在类中定义的若干个,经过 JVM 编译成 class 文件后,会将相应的 method 方法信息组织到一个叫做 方法表集合 的结构中, 字段表集合 是一个类数组结构,如下图所示: 2. method方法的描述

《Java虚拟机原理图解》5、class文件中的字段表集合--field字段在class文件中是怎样组织的

时光怂恿深爱的人放手 提交于 2019-12-04 13:31:10
0.前言 了解JVM虚拟机原理是每一个Java程序员修炼的必经之路。但是由于JVM虚拟机中有很多的东西讲述的比较宽泛,在当前接触到的关于JVM虚拟机原理的教程或者博客中,绝大部分都是充斥的文字性的描述,很难给人以形象化的认知,看完之后感觉还是稀里糊涂的。 感于以上的种种,我打算把我在学习JVM虚拟机的过程中学到的东西,结合自己的理解,总结成《Java虚拟机原理图解》 这个系列,以图解的形式,将抽象的JVM虚拟机的知识具体化,希望能够对想了解Java虚拟机原理的的Java程序员 提供点帮助。 读完本文,你将会学到: 1、 类中定义的field字段是如何在class文件中组织的 2、 不同的数据类型在class文件中是如何表示的 3、 static fina l类型的 field 字段的初始化赋值问题 1.概述 字段表集合 是指由若干个 字段表 (field_info) 组成的集合。对于在类中定义的若干个字段,经过 JVM 编译成 class 文件后,会将相应的字段信息组织到一个叫做字段表集合的结构中,字段表集合是一个类数组结构,如下图所示: 注意:这里所讲的字段是指在类中定义的静态或者非静态的变量,而不是在类中的方法内定义的变量。请注意区别。 比如,如果某个类中定义了5个字段,那么, JVM 在编译此类的时候,会生成5个 字段表 (field_info) 信息

《Java虚拟机原理图解》3、Class文件中的常量池详解(下)--转载

我怕爱的太早我们不能终老 提交于 2019-12-04 13:30:57
NO9. 类中引用到的field字段 在常量池中是怎样描述的?( CONSTANT_Fieldref_info , CONSTANT_Name_Type_info) 一般而言,我们在定义类的过程中会定义一些 field 字段,然后会在这个类的其他地方(如方法中)使用到它。有可能我们在类的方法中只使用 field 字段一次,也有可能我们会在类定义的方法中使用它很多很多次。 举一个简单的例子,我们定一个叫 Person 的简单 java bean ,它有 name 和 age 两个 field 字段,如下所示: package com.louis.jvm; 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; }} 在上面定义的类中,我们在 Person 类中的一系列方法里,多次引用到 name field 字段 和 age field 字段,对于JVM编译器而言,

《Java虚拟机原理图解》 2、Class文件中的常量池详解(上)--转载

安稳与你 提交于 2019-12-04 13:30:56
[last updated:2014/11/27] NO1. 常量池在class文件的什么位置? 我的上一篇文章 《Java虚拟机原理图解》 1、class文件基本组织结构 中已经提到了class的文件结构,在class文件中的魔数、副版本号、主版本之后,紧接着就是常量池的数据区域了,如下图用红线包括的位置: 知道了常量池的位置后,然后让我们来揭秘常量池里究竟有什么东西吧~ NO2. 常量池的里面是怎么组织的? 常量池的组织很简单,前端的两个字节占有的位置叫做 常量池计数器 ( constant_pool_count ),它记录着常量池的组成元素 常量池项( cp_info ) 的个数。紧接着会排列着 constant_pool_count-1 个 常量池项( cp_info ) 。如下图所示: NO3. 常量池项 (cp_info) 的结构是什么? 每个 常量池项( cp_info ) 都会对应记录着class文件中的某中类型的字面量。让我们先来了解一下 常量池项( cp_info ) 的结构吧: JVM虚拟机规定了不同的tag值和不同类型的字面量对应关系如下: 所以根据cp_info中的tag 不同的值,可以将cp_info 更细化为以下结构体: CONSTANT_Utf8_info,CONSTANT_Integer_info,CONSTANT_Float_info

Python3 多线程

半腔热情 提交于 2019-12-04 12:14:32
本文是 Comyn 老师 Python 多线程课程的笔记,感谢老师优质的课程! 两个概念: 并发:假同时,一段时间内同时处理多个任务,单核都可以; 并行:真同时,同时处理多个任务,必须多核。 主流操作系统上完成并发的手段有进程和线程,主流的编程语言提供了用户空间的调度:协程。Python 也不例外。 由于现在的操作系统上的进程越来越轻量,导致进程和线程之间的区别越来越少。事实上,Linux 并没有原生的线程,线程是通过进程实现的。 python 中每一个进程会启动一个解释器,而线程会共享一个解释器。 Python 中的线程是通过标准库 threading 实现的。而启动一个线程就是让这个线程执行一些逻辑,这些逻辑就对应一个函数。 >>> import threading >>> def worker(): # 让多个线程来执行它 ... print('work') ... >>> thread = threading.Thread(target=worker) # 创建了一个线程对象,target 参数是一个函数,即线程要执行的逻辑 >>> thread.start() # start 启动一个线程,执行完毕后,自动退出,Python 没有提供主动退出线程的方法 work 由于 python 没有提供退出线程的方法,因此我们一定不能在逻辑中定义死循环,不然线程无法退出。当然直接