疯狂的石头

  • 首页

  • 归档

  • 分类

python os 模块

发表于 2018-06-05 | 更新于 2018-06-09 | 分类于 Python

虽然进程可在单独的内存空间中执行,但除非这些Python进程在单独的处理器上执行,否则,实际并不是“同时”运行的。是由操作系统把处理器的时间片分配给一个进程,用完时间片后就需退出处理器等待另一个时间片的到来。

另一种方式是在在程序中指定多个“执行线程”,让它们在相同的内存空间中工作。这称为“多线程处理”。线程比进程更有效,因为操作系统不必为每个线程创建单独的内存空间。新建进程用 os.fork 函数。但它只在 POSIX 系统上可用,在windows版的Python中,os模块没有定义 os.fork 函数。相反,windows程序员用多线程编程技术来完成并发任务。

阅读全文 »

python中的 @ 修饰符

发表于 2018-06-05 | 更新于 2018-06-09 | 分类于 Python

@ 符号用作函数修饰符是python2.4新增加的功能,修饰符必须出现在函数定义前一行,不允许和函数定义在同一行。一个修饰符就是一个函数,它将被修饰的函数做为参数,并返回修饰后的同名函数或其它可调用的东西。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
def f1(arg):
print("function f1")
rl = arg()
print(rl)
return rl + " f1 return"


# 这里 @ 符作符相当于 f1(f2())
@f1
def f2(arg=""):
print("function f2")
return arg + "f2 return"


print("------")
print(f2)
# Traceback --- TypeError: 'str' object is not callable
# 因为f1()中的rl = arg()没有参数
# print(f2("1"))

# output:
# function f1
# function f2
# f2 return
# ------
# f2 return f1 return
阅读全文 »

DRY(Don't Repeat Yourself) Principles through Python Decorators

发表于 2018-06-05 | 更新于 2018-06-09 | 分类于 Python

Python decorators are a powerful tool to remove redundancy. Along with modularizing functionality into appropriate bite-sized methods, it makes even the most complex workflows into concise functionality.

For example, let’s look at the Django web framework, which handles requests by methods which receive a method object and return a response object:

1
2
def handle_request(request):
return HttpResponse("Hello, World")

A case I ran into recently was having to write several api methods which must:

  • return json responses some must return an error code if it’s a GET
  • request vs a POST
阅读全文 »

数据库触发器before和after

发表于 2018-06-05 | 更新于 2018-06-09 | 分类于 DataBase

before与after区别:

before:(insert、update)可以对new进行修改,after不能对new进行修改,两者都不能修改old数据。(如果触发器使用after,而定义的触发器调用的函数使用new,就不会执行)
对于insert语句, 只有new是合法的;
对于delete语句,只有old才合法;
对于update语句,new、old可以同时使用。

行级before触发器一般用于检查和修改将被插入和更新的数据;
行级after触发器一般用于将表中被更新的数据记录到其它的表中,或者检查与其它的表中的数据是否是一致的。

before触发器的执行效率比after触发器高,在before触发器和after触发器都能被使用的情况下,应该选择before触发器。

触发器在被调用时,系统会自动传递一些数据给它,这些数据包括触发触发器的事件类型(例如INSERT或UPDATE),对于行级触发器,还包括NEW数据行(对于INSERT和 UPDATE触发器)和OLD数据行(对于UPDATE和DELETE触发器)。每种可以用来书写触发器函数的语言都提供了取这些数据的方法。

语句级别的触发器在执行过程中无法查看该语句插入、删除或更新的任何数据行。
还有一种特殊的触发器叫约束触发器,这种触发器的执行时间可以被命令SET CONSTRAINTS控制。

JavaScript 笔记

发表于 2018-05-21 | 更新于 2018-06-09 | 分类于 JavaScript

JavaScript 是脚本语言

JavaScript 是一种轻量级的编程语言

JavaScript 是可插入 HTML 页面的编程代码

JavaScript 插入 HTML 页面后,可由所有的现代浏览器执行

JavaScript脚本必须位于标签之间,可被放置在 HTML 页面的和部分中;

也可以把脚本保存到外部文件中,外部文件通常包含被多个网页使用的代码;外部 JavaScript 文件的文件扩展名是 .js;如需使用外部文件,需在\<script>标签的 “src” 属性中设置该 .js 文件。

JavaScript 数据类型:字符串(String)、数字(Number)、布尔(Boolean)、数组(Array)、对象(Object)、空(Null)、未定义(Undefined);

JavaScript 拥有动态类型。这意味着相同的变量可用作不同的类型;

Undefined 这个值表示变量不含有值,而将变量的值设置为 null 来清空变量。

阅读全文 »
1…567…9
Crazy Stone

Crazy Stone

step by step...

42 日志
9 分类
E-Mail GitHub
© 2018 — 2020 Crazy Stone
由 Hexo 强力驱动
|
主题 — NexT.Pisces