自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(57)
  • 收藏
  • 关注

原创 基础数学算法

基础数学等差数列求最大公约(因)数求最小公倍数等差数列等差数列 an 的通项公式:an = a1 + ( n - 1) *d。其中,d为公差,a1为起始项,n为第n项。等差数列求和公式:前n项和公式为:Sn = na1 + n(n - 1) * d / 2题目:等差数列 2,5,8,11,14。。。。(从 2 开始的 3 为公差的等差数列),输出求等差数列前n项和。n = int(input())print(int(n*2+n*(n-1)*3/2))求最大公约(因)数辗转相除法求最大公约数

2022-01-03 23:24:13 246

原创 Angular 表单

Angular 表单表单响应式表单获取表单控件的值修改表单控件的值响应式表单中的数据流视图--->模型模型--->视图把表单控件分组保存表单数据创建嵌套的表单组更新部分数据模型使用 FormBuilder 服务生成控件表单官方文档Angular 提供了两种不同的方法来通过表单处理用户输入:响应式表单和模板驱动表单。 两者都从视图中捕获用户输入事件、验证用户输入、创建表单模型、修改数据模型,并提供跟踪这些更改的途径。响应式表单:复用性更强。它们提供对底层表单 API 的直接访问,并且在视图

2021-11-28 12:21:31 2043

原创 Angular 路由

概念在单页应用中,可以通过显示或隐藏与特定组件相对应的部分来更改用户看到的内容,而不用去服务器获取新页面。用户执行应用程序任务时,他们需要在定义好的不同视图之间移动。要处理从一个视图到下一个视图的导航,需要使用 Angular Router。 Router 会通过将浏览器 URL 解释为更改视图的操作指令来启用导航。官方文档基本配置创建2个组件:ng g c route-study/crisis-list ; ng g c route-study/hero-list在app.moudl

2021-10-17 22:04:41 490

原创 Angular---rxjs

Rxjs简介RxJS是一个主要用于处理异步程序的函数式编程库,可以把 RxJS 想成处理 异步行为 的 Lodash。常见的异步行为ajax,定时器,事件常见的 优化异步回调的方式Promise,async/await,rxjs函数式编程是一种编程思想的,就像面向过程、面向对象一样 比如:const result = (5 + 6) - 2 * 3;函数式的写法:const add = (a, b) => a + bconst mul = (a, b) => a * b

2021-10-16 23:42:05 403

原创 TS 学习笔记

TS开发环境搭建安装node.js;使用npm 全局安装 ts: npm i -g typescript ;创建一个ts文件,编辑好之后,使用tsc命令对文件进行编译:tsc xxx.ts,会生成同名的js文件。TS基本类型类型声明:通过类型声明指定TS中变量(形参、返回值)的类型,当为变量赋值时,TS编译器会自动检查变量是否符合定义的类型。语法:let 变量:类型;let 变量:类型 = 值;function fn(参数: 类型, 参数:类型): 返回值类型 { ..

2021-05-15 09:32:40 685 2

原创 Angular 学习笔记

Angular 学习笔记环境搭建环境搭建安装npm,通过npm或cnpm安装angular。npm install -g @angualr/cli 或 npm install -g @angualr/cli

2021-04-28 00:10:49 1608

原创 VScode前端开发环境搭建

Vscode下载安装包下载地址 选择windows版本下载,国内网络下载很慢,在浏览器中找到下载内容,然后使用迅雷下载,很快就可以下载完成。配置中文环境在扩展应用中下载中文语言包:[Ctrl + Shift + P] 输入language,配置语言环境:选择zh-cn,重启后生效。node.js下载下载路径下完并安装后,通过npm -v 和node -v 查询验证:npm和cnpm配置...

2021-04-27 23:47:10 660

原创 ES6-ES11 学习笔记

ES6-ES11 学习笔记概述什么是 ECMAScriptES6新特性1. let关键字不允许重复声明块儿级作用域(局部变量)不存在变量提升不影响作用域链let应用使用var创建变量使用let创建变量2. const关键字声明必须赋初始值不允许重复声明值不允许修改块儿级作用域(局部变量)3. 变量和对象的结构赋值什么是解构赋值4. 模板字符串字符串中可以出现换行符可以使用 ${xxx} 形式引用变量5. 简化对象和函数写法6. 箭头函数箭头函数定义箭头函数的特点箭头函数的应用需求1需求27. ES6中函数参

2021-04-26 01:05:06 576

原创 LeetCode---动态规划

LeetCode---动态规划动态规划动态规划

2021-04-07 23:21:14 220

原创 LeetCode---二叉树

二叉树二叉树种类二叉树有两种主要的形式:满二叉树和完全二叉树。满二叉树满二叉树:如果一棵二叉树只有度为0的结点和度为2的结点,并且度为0的结点在同一层上,则这棵二叉树为满二叉树。这棵二叉树为满二叉树,也可以说深度为k=4,有2^k-1=15个节点的二叉树。完全二叉树**完全二叉树:**在完全二叉树中,除了最底层节点可能没填满外,其余每层节点数都达到最大值,并且最下面一层的节点都集中在该层最左边的若干位置。若最底层为第 h 层,则该层包含 1~ 2^h -1个节点。二叉搜索树二叉搜索树是

2021-03-26 00:00:42 151 1

原创 LeetCode---栈和队列

LeetCode---栈和队列LeetCode232. 用栈实现队列解225. 用队列实现栈解20. 有效的括号解1047. 删除字符串中的所有相邻重复项解150. 逆波兰表达式求值解239. 滑动窗口最大值解347. 前 K 个高频元素解LeetCode232. 用栈实现队列题目链接解采用两个栈,加入新元素时先把栈1中的元素全部弹出到栈2中,再把新元素压入到栈1中。然后把栈2中的元素重新压入到栈1中。class MyQueue: def __init__(self):

2021-03-24 23:34:27 114

原创 LeetCode---字符串

LeetCode344. 反转字符串题目链接解:双指针def reverseString(s): left = 0 right = len(s) - 1 while left <= right: s[left], s[right] = s[right], s[left] left += 1 right -= 1 return s541. 反转字符串 II题目链接解:暴力法 if len(s)

2021-03-21 15:03:50 100

原创 LeetCode---哈希表

LeetCode---哈希表哈希表哈希表能解决的问题哈希碰撞哈希碰撞的解决办法线性探测 Linear Probing拉链法LeetCode242. 有效的字母异位词解第349题. 两个数组的交集解202. 快乐数解1. 两数之和解454. 四数相加 II解15. 三数之和解哈希表哈希表是根据关键码的值进行访问的数据结构,例如:python中的dict。list也可以称为hash表,可以通过下标直接访问某个元素。哈希表能解决的问题一般哈希表都是用来快速判断一个元素是否出现集合里。例如要查询一个名字是

2021-03-17 23:59:58 164 1

原创 LeetCode---数组

LeetCode---数组数组数组的特点LeetCode35. 搜索插入位置解数组数组的特点参考公众号:代码随想录数组在内存中的存储方式:数组是存放在连续内存空间上的相同类型数据的集合。数组可以方便的通过下标索引的方式获取到下标下对应的数据。正是因为数组的在内存空间的地址是连续的,所以在删除或者增添元素的时候,就难免要移动其他元素的地址。不同语言在二维数组的实现上有差异,python中二维数组的地址空间有可能不是连续的。如图三:如果二维数组中增加一个元素,新增元素的地址与当前子数

2021-03-14 14:05:09 115

原创 LeetCode---搜索算法

搜索算法图图Graph的概念图是一种由节点和边构成的数据结构,实际上树也是一种特殊的图。图可以用来表示现实世界中的很多事物:道路交通系统、航班线路、互联网连接等等。顶点Vertex (节点Nond):是图的基本组成部分,顶点具有名称标识key,也可以携带数据项payload。边Edge(弧Arc):作为两个顶点之间关系的表示,边连接两个顶点;边可以是无向或有向的,相应的图称为“无向图”和“有向图”。权重Weight:为了表达从一个顶点到另一个顶点的代价,可以给边赋权;例如公交网中的两个站点之间的

2021-03-03 23:32:39 262 1

原创 LeetCode---二分查找

二分查找二分查找也称折半查找(Binary Search),是一种效率较高的查找方法。但是,折半查找要求线性表必须采用顺序存储结构,而且表中元素按关键字有序排列。基本代码框架# 基本代码框架def binarySearch(nums, target): left = 0 # right = len(nums) - 1 搭配 while left <= right使用; # right = len(nums) 搭配 while left < right

2021-03-02 23:38:44 104

原创 LeetCode---贪心算法

455. 分发饼干题目链接解法1# 时间复杂度:主要是排序的时间复杂度O(mlogm+nlogn)# 空间复杂度:O(logm+logn),其中 m 和 n 分别是数组 g 和 s 的长度。空间复杂度主要是排序的额外空间开销。def findContentChildren(g, s): # 1. 先对g和s升序排序 g.sort() s.sort() # 2. 因为孩子胃口和饼干都已经排过序,所以从小到大选择每个孩子能满足每个孩子胃口的最小饼干(贪心算法)

2021-02-21 22:29:32 207

原创 LeetCode---排序

经典排序算法1. 冒泡排序冒泡排序是一种简单的排序算法。它重复地走访过要排序的数列,一次比较两个元素,如果它们的顺序错误就把它们交换过来。走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。这个算法的名字由来是因为越小的元素会经由交换慢慢“浮”到数列的顶端。1.1 算法描述比较相邻的元素。如果第一个比第二个大,就交换它们两个;对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对,这样在最后的元素应该会是最大的数;针对所有的元素重复以上的步骤,除了最后一个;重复步骤

2021-02-12 23:45:15 109

原创 Leetcode --- 双指针

Leetcode --- 双指针双指针相关题目167. 两数之和 II - 输入有序数组解法1: 暴力法解法2:二分查找解法3:双指针双指针相关题目167. 两数之和 II - 输入有序数组题目链接:link解法1: 暴力法假设长度为n,固定一个数值i,遍历i-n,找到 i + j = target。class Solution: def twoSum(self, numbers: List[int], target: int) -> List[int]:

2021-02-11 11:44:18 159

原创 python 数据结构与算法2

1 查找和排序1.1 查找1.1.1 顺序查找算法及算法分析1.1.2 二分查找算法及算法分析def search(num, num_list): # 最小规模 if len(num_list) == 1: return num_list[0] == num middle = len(num_list)//2 if num_list[middle] == num: return True # 减小规模 el

2021-02-07 22:34:43 162 1

原创 python 数据结构与算法1

python 数据结构与算法1 python常见数据结构性能1.1 List1.1.1 安索引取值和赋值1.1.2 列表append和__add__()1.1.3 使用timeit模块测试执行时间1.1.4 List基本操作的大O数量级1.2 Dict1.2.1 dict数据类型2 线性结构 Linear Structure2.1 栈Stack2.1.1 抽象数据类型Stack2.1.2 Stack的操作如下2.1.3 栈的应用1:简单括号匹配2.1.3.1 圆括号匹配2.1.3.2 通用括号匹配2.1.4

2021-02-03 17:25:15 177 2

原创 RabbitMQ 高级

RabbitMQ 高级RabbitMQ 高级1 消息的可靠投递RabbitMQ 高级1 消息的可靠投递

2021-01-13 23:47:57 85

原创 Mysql 高级

Mysql 高级1 Mysql 框架介绍1.1 Mysql Linux安装1.1.1 启动和停止1.1.2 root密码设置1.1.3 mysql开机自启动1.1.4 修改默认字符集1.1.5 Mysql数据库相关目录1.2 Mysql 配置文件1.2.1 二进制日志log-bin1.2.2 错误日志log-error1.2.3 慢查询日志1.2.4 配置文件1.3 Mysql 架构介绍1.3.1 连接层1.3.2 服务层1.3.2.1 Management Serveices & Utiliti

2021-01-03 00:47:27 348 3

原创 Mysql基础2

Mysql基础2基础2DDL(Data Definition Language)语言库的管理表的管理数据类型整型小数字符型日期型约束创建表时添加约束修改表时添加约束修改表时删除约束列级约束 VS 表级约束标识列(自增长列)创建表时设置标识列修改表时设置标识列修改表时删除标识列TCL(Transaction Control Language)事务控制语言事务的ACID(acid)属性创建事务数据库的隔离数据库的隔离级别savepoint基础2DDL(Data Definition Language)语言

2021-01-01 18:38:30 234 1

原创 Mysql基础1

基础Mysql基础概念DB:数据库( database ):存储数据的“仓库”,它保存了一系列有组织的数据。DBMS:数据库管理系统( Database Management System ),数据库是通过 DBMS 创建和操作的容器。SQL:结构化查询语言( Structure Query Language ),专门用来与数据库通信的语言。SQL 的优点:不是某个特定数据库供应商专有的语言,几乎所有DBMS都支持SQL。简单易学。虽然简单,但实际上是一种强有力的语言,灵活使用其语言元素

2020-11-01 17:49:36 142

原创 Nginx 学习笔记

Nginx 概述Nginx 是一个高性能的 HTTP 和反向代理服务器,特点是占有内存少,并发能力强,事实上nginx的并发能力确实在同类型的网页服务器中表现较好,中国大陆使用nginx网站用户有:百度、京东、新浪、网易、腾讯、淘宝等。Nginx相关概念代理参考文章:link正向代理位于客户端与原始服务器之间的代理服务器,为了从原始服务器获得请求,客户端向代理发出请求,随后向真是服务器发出请求。简单一点: A向C借钱,由于一些情况不能直接向C借钱,于是A找B,B向C借钱,于是A得到了钱。但是

2020-10-25 19:50:44 261

原创 python socket

UDP Client:import socket# AF_INET是 IPv4 网络协议的套接字类型,AF_INET6 则是 IPv6 的;而 AF_UNIX 则是 Unix 系统本地通信。# socket.SOCK_DGRAM 代表UDP协议udp_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)# 发送方如果不绑定端口,操作系统会随机分配一个端口号udp_socket.bind(("127.0.0.1", 9999))

2020-09-25 00:22:25 242

原创 python 多线程、多进程、协程相关知识点

线程与进程进程与线程的区别:进程是系统资源分配的最小单位,线程是程序执行的最小单位;一个进程由一个或多个线程组成,线程是一个进程中代码的不同执行分支;进程之间相互独立,但同一进程下的各个线程之间共享程序的内存空间(包括代码段、数据集、堆等)及一些进程级的资源(如打开文件和信号),某进程内的线程在其它进程不可见;调度和切换:线程上下文切换比进程上下文切换要快得多。GIL什么GILGIL的全称是 Global Interpreter Lock,全局解释器锁,之所以叫这个名字,是因为Pyt

2020-09-20 18:39:16 364 1

原创 WSGI

WSGI什么是WSGIWSGI:全称是Web Server Gateway Interface,WSGI协议是描述web server如何与web application通信的规范。server和application的规范在PEP 3333中有具体描述。要实现WSGI协议,必须同时实现web server和web application,当前运行在WSGI协议之上的web框架有Torando,Flask,Django等。WSGI协议主要包括server、application和middlewares

2020-09-13 23:12:12 121

原创 openstack oslo.config 模块源码学习

oslo.configOpenStack的oslo项目旨在独立出系统中可重用的基础功能,oslo.config就是其中一个被广泛使用的库,该项工作的主要目的就是解析OpenStack中命令行(CLI)或配置文件(.conf)中的配置信息。基本用法示例引自官方文档:test.py:# Load up the cfg module, which contains all the classes and methods# you'll need.from oslo_config import cfg

2020-09-02 00:15:32 113

原创 Rabbitmq 基础

Rabbitmq消息队列MQ(Message Queue)即消息队列,是一种应用程序间的通信方法。MQ是生产者—消费者模式的一个典型代表,一端往消息队列中写入数据,另一端从消息队列中读取消息。生产者—消费者模式生产者—消费者模式是通过一个容器来解决生产者和消费者的强耦合问题。生产者和消费者彼此之间不直接通讯,而通过阻塞队列来进行通讯,所以生产者生产完数据之后不用等待消费者处理,直接扔给阻塞队列,消费者不找生产者要数据,而是直接从阻塞队列里取,阻塞队列就相当于一个缓冲区,平衡了生产者和消费者的处理

2020-08-30 23:28:57 167

原创 python中 is 和 == 运算符的区别

is 和 == 的区别isis 用于判断两个对象的在内存中的地址是否一致。如下图所示,当b引用a时,b与a指向同一个内存地址的对象,所以a is b为True。当a和b分别初始化为一个列表对象时,内存地址不一样,所以a is b为False。特殊情况第一种情况:python内部为了提升性能将一些 [-5, 256] 的整数对象缓存起来,保存到一个叫small_ints的链表中,在python的整个生命周期中,如果用到这些整数就不需要再创建新的对象,而是直接引用缓存中的对象。第二种情况:

2020-08-25 23:10:54 243

原创 AngularJS 进阶

AngularJS 进阶依赖注入依赖注入方式内部创建依赖;通过全局变量进行引用;在需要的地方通过参数进行传递。前两种方式都不是很好,因为都需要依赖硬编码,使得修改、测试的时候会很麻烦。第三种方式是最好的实现方式,因为它不必在组件中主动查找和获取依赖,而是由外界传入。AngularJS注入内容(服务)到函数中都是通过函数参数的方法,有三种方式:推断式注入声明;显示注入声明;行内注入声明;推断式注入声明直接将要注入内容的名字写在函数参数中,名字必须准确。建议:不要使用这种方式

2020-08-18 00:03:16 129

原创 AngularJS 学习笔记

AngularJS的基本概念模块什么是模块模块是一个存放应用各个部件的容器。例如:controller、directives、filters、services。AngularJS主要是使用模块声明的方式启动应用的,类似于main方法作用。定义模块引入angular.min.js后,就会在全局变量中注册一个angular全局变量。然后可以使用angular.module(“模块名”, [其他模块1, 其他模块2,其他模块3…]);// 定义模块var app = angular.module(

2020-08-15 23:32:55 181

原创 django 验证和授权系统

django 验证和授权系统验证和授权概述使用授权系统INSTALLED_APPS中间件User模型字段User模型的基本用法创建用户创建超级用户修改密码登录验证:扩展用户模型设置Proxy模型一对一外键:验证和授权概述Django有一个内置的授权系统,用来处理用户、分组、权限以及基于cookie的会话系统。Django的授权系统包括验证和授权两个部分,验证是验证这个用户是否是他声称的人(比如用户名和密码验证,角色验证),授权是给与他相应的权限。Django内置的权限系统包括以下方面:用户。

2020-07-25 22:03:21 321

原创 django 安全

django 安全CSRF攻击CSRF攻击原理防御CSRF攻击前后端不分离场景前后端分离场景CSRF攻击CSRF(Cross Site Request Forgery, 跨站域请求伪造)是一种网络的攻击方式,它在 2007 年曾被列为互联网 20 大安全隐患之一。CSRF攻击原理网站是通过cookie来实现登录功能的。而cookie只要存在浏览器中,那么浏览器在访问这个cookie的服务器的时候,就会自动的携带cookie信息到服务器上去。那么这时候就存在一个漏洞了,如果你访问了一个别有用心或病毒

2020-07-20 00:15:24 386

原创 django 中间件

django 中间件中间件自定义中间件使用函数定义中间件使用类定义中间件Django内置的中间件django.middleware.common.CommonMiddlewaredjango.middleware.gzip.GZipMiddlewaredjango.contrib.messages.middleware.MessageMiddlewaredjango.middleware.security.SecurityMiddlewaredjango.contrib.sessions.middlewar

2020-07-19 23:26:31 97

原创 django 表单

django 表单django 表单django表单的作用验证数据基本用法常用的FieldCharField:EmailField:FloatField:IntegerField:URLField:常用验证器django 表单django表单的作用在Django中的表单,主要有两个功能:渲染表单模板(只有前后端不分离时才有可能使用,一般情况不用)。表单验证数据是否合法。验证数据基本用法app/forms.py中定义表单验证类,根据前台提交的每个字段定义对应的属性进行验证。实例化表单验证

2020-07-12 23:18:48 171

原创 django 视图

django视图django视图限制请求methoddjango视图限制请求methodDjango内置的视图装饰器可以给视图提供一些限制。比如这个视图只能通过GET的method访问等。以下将介绍一些常用的内置视图装饰器。django.http.decorators.http.require_http_methods:这个装饰器需要传递一个允许访问的方法的列表。比如只能通过GET的方式访问。那么示例代码如下: from django.views.decorators.http import

2020-07-10 22:39:25 95

原创 django 数据库操作

django 数据库操作MySQL驱动程序安装MySQL驱动程序安装使用Django来操作MySQL,实际上底层还是通过Python来操作的。因此用Django来操作MySQL,首先需要安装一个驱动程序。在Python3中,驱动程序有多种选择。比如pymysql以及mysqlclient等。这里使用mysqlclient来操作,通过pip install mysqlclient安装。常见MySQL驱动介绍:MySQL-python:也就是MySQLdb。是对C语言操作MySQL数据库的一个简单封

2020-07-01 23:01:05 285

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除