zenner's Blog

巨饼的技术博


  • Home

  • About

  • Tags

  • Categories

  • Archives

  • Schedule

  • Sitemap

  • Search

第一章 数据库系统的基本原理

Posted on 2020-10-09 | In 数据库 , 数据库原理及应用 , 数据库基础知识

1.1 数据库系统概述

1.1.2 数据库系统的概念

数据库的总目标就是使用户能有效且方便的管理和使用数据库数据。

1. 数据(Data)

数据是数据库存储的基本对象;描述现实世界中各种具体事务或抽象概念的、可存储并具有明确意义的符号记录。

2. 数据库(Database. DB)

数据库是长期存储在计算机内、有组织的、可共享的(1)大量数据的集合。数据库中的数据按一定的数据模型组织,描述和存储,具有(2)较小的冗余、(3)较高的数据独立性和(4)易扩展性。

3. 数据库管理系统(Database Management System, DBMS)

数据库管理系统是数据库系统的核心;

它位于用户和操作系统之间的一层数据库管理软件;

它为用户或应用程序提供访问数据库的方法,包括数据库的(1)定义、(2)建立、(3)查询、(4)更新及各种数据控制等。

Read more »

左神算法-基础课-02-笔记

Posted on 2020-10-08 | In algorithm , 左神算法 , 初级 , 排序

快速排序

问题一:partition

给定一个数组$arr$, 和一个数$num$,请把小于等于$num$的数放在数组的左边,大于$num$的数放在数组的右边。

要求额外空间复杂度 $O(1)$ , 时间复杂度$O(N)$;

解决答案

image-20201002124018348

Read more »

左神算法-基础课-01-代码

Posted on 2020-10-07 | In algorithm , 左神算法 , 初级 , 排序

对数器

常用的获取随机数组的技巧:

1
Math.random()*(n-m)+m 	//生成大于等于m小于n的随机数;

因为这个课程开始针对对数器的认识就是排序。它有自身的输入输出的特点。所以对数器是这样写的。但是针对不同的数据结构类型,对数器的写法是不同的。

Read more »

左神算法-基础课-01-笔记

Posted on 2020-10-07 | In algorithm , 左神算法 , 初级 , 排序

排序

冒泡排序

每次把当前数组最大值通过交换放到最后;时间复杂度:$O(N^2)$

对这个算法描述分为三个层面

1
2
3
4
宏观: 用end控制前面数组中的最大值存放的位置;它的初始值为N-1,结束值为1;
中层: 把0 ~ end里的最大值传递到end位置;
微观: 从`0 ~ end-1` 针对于相邻两个元素进行比较(位置0 和 位置1 比较; 然后位置1 和 位置2 比较;直到位置end-1 和 位置end 比较;);
前面的大于后面的则交换;

微观层面的算法是对中层的具体实现;中层又是宏观中的一部分;

Read more »

python装饰器

Posted on 2020-08-31 | In python

1. 装饰器的原型

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
import time
def showtime(func):
def wrapper():
start_time = time.time()
func()
end_time = time.time()
print('spend is {}'.format(end_time - start_time))

return wrapper

def foo():
print('foo..')
time.sleep(3)

foo = showtime(foo)
foo()

对foo函数进行增强;

Read more »

python闭包

Posted on 2020-08-31 | In python

​

python 闭包

如果在一个函数的内部定义了另一个函数,外部的函数叫它外函数,内部的函数叫它内函数。

1. 闭包条件

  1. 在一个外函数中定义了一个内函数。

  2. 内函数里运用了外函数的临时变量。

  3. 并且外函数的返回值是内函数的引用。

一般情况下,如果一个函数结束,函数的内部所有东西都会释放掉,还给内存,局部变量都会消失。但是闭包是一种特殊情况,如果外函数在结束的时候发现有自己的临时变量将来会在内部函数中用到,就把这个临时变量绑定给了内部函数,然后自己再结束。

Read more »

python和java的垃圾回收机制

Posted on 2020-08-31

Python垃圾回收机制详解

一、引用计数

Python垃圾回收主要以引用计数为主,分代回收为辅。

1.引用计数增加的情况

当发生以下四种情况的时候,该对象的引用计数器+1

  1. 对象被创建  a=14
  2. 对象被引用  b=a
  3. 对象被作为参数,传到函数中   func(a)
  4. 对象作为一个元素,存储在容器中   List={a,”a”,”b”,2}

2. 引用计数减少的情况

与上述情况相对应,当发生以下四种情况时,该对象的引用计数器-1

  1. 当该对象的别名被显式销毁时  del a
  2. 当该对象的引别名被赋予新的对象,   a=26
  3. 一个对象离开它的作用域,例如 func函数执行完毕时,函数里面的局部变量的引用计数器就会减一(但是全局变量不会)
  4. 将该元素从容器中删除时,或者容器被销毁时。

当指向该对象的内存的引用计数器为0的时候,该内存将会被Python虚拟机销毁

Read more »

python中的锁

Posted on 2020-08-31 | In python

Python中的锁

一、全局解释器锁(GIL)

1、什么是全局解释器锁

在同一个进程中只要有一个线程获取了全局解释器(cpu)的使用权限,那么其他的线程就必须等待该线程的全局解释器(cpu)使用权消失后才能使用全局解释器(cpu), 即使多个线程直接不会相互影响在同一个进程下也只有一个线程使用cpu,这样的机制称为全局解释器锁(GIL)。

  • GIL 保证CPython进程中,只有一个线程执行字节码。甚至是在多核CPU的情况下,也只允许同时只能有一个CPU 上运行该进程的一个线程。
  • CPython中
    1. IO密集型,某个线程阻塞,就会调度其他就绪线程;
    2. CPU密集型,当前线程可能会连续的获得GIL,导致其它线程几乎无法使用CPU。
  • 在CPython中由于有GIL存在,IO密集型,使用多线程较为合算;CPU密集型,使用多进程,要绕开GIL。
  • Python中绝大多数内置数据结构的读、写操作都是原子操作。
  • 由于GIL的存在,Python的内置数据类型在多线程编程的时候就变成了安全的了,但是实际上它们本身 不是 线程安全类型。
Read more »

redis

Posted on 2020-08-07 | In 数据库 , redis

[TOC]

Redis

一、 概念

redis是一款高性能的NOSQL系列的非关系型数据库

1.1.什么是NOSQL

        NoSQL(NoSQL = Not Only SQL),意即“不仅仅是SQL”,是一项全新的数据库理念,泛指非关系型的数据库。
        随着互联网web2.0网站的兴起,传统的关系数据库在应付web2.0网站,特别是超大规模和高并发的SNS类型的web2.0纯动态网站已经显得力不从心,暴露了很多难以克服的问题,而非关系型的数据库则由于其本身的特点得到了非常迅速的发展。NoSQL数据库的产生就是为了解决大规模数据集合多重数据种类带来的挑战,尤其是大数据应用难题。

1.1.1. NOSQL和关系型数据库比较

            优点:
                1)成本:nosql数据库简单易部署,基本都是开源软件,不需要像使用oracle那样花费大量成本购买使用,相比关系型数据库价格便宜。
                2)查询速度:nosql数据库将数据存储于缓存之中,关系型数据库将数据存储在硬盘中,自然查询速度远不及nosql数据库。
                3)存储数据的格式:nosql的存储格式是key,value形式、文档形式、图片形式等等,所以可以存储基础类型以及对象或者是集合等各种格式,而数据库则只支持基础类型。
                4)扩展性:关系型数据库有类似join这样的多表查询机制的限制导致扩展很艰难。

            缺点:
                1)维护的工具和资料有限,因为nosql是属于新的技术,不能和关系型数据库10几年的技术同日而语。
                2)不提供对sql的支持,如果不支持sql这样的工业标准,将产生一定用户的学习和使用成本。
                3)不提供关系型数据库对事务的处理。

1.关系型和非关系型数据库比较

Read more »

AJAX_JSON

Posted on 2020-08-07 | In web

AJAX:

一、概念

ASynchronous JavaScript And XML    异步的JavaScript 和 XML

1. 异步和同步:客户端和服务器端相互通信的基础上

        * 客户端必须等待服务器端的响应。在等待的期间客户端不能做其他操作。
        * 客户端不需要等待服务器端的响应。在服务器处理请求的过程中,客户端可以进行其他的操作。

        Ajax 是一种在无需重新加载整个网页的情况下,能够更新部分网页的技术。 [1] 
        通过在后台与服务器进行少量数据交换,Ajax 可以使网页实现异步更新。这意味着可以在不重新加载整个网页的情况下,对网页的某部分进行更新。
        传统的网页(不使用 Ajax)如果需要更新内容,必须重载整个网页页面。

        提升用户的体验

1.同步和异步

Read more »
上一页123…7下一页

Deep ploughing those days ​​​​

62 posts
39 categories
61 tags
E-Mail
Links
  • fivelike
  • ReachDong(dada)
© 2021
Powered by Hexo
|
Theme — NexT.Gemini v5.1.4