- 博客(63)
- 收藏
- 关注
原创 数据库-事务
例如,一个转账操作:– 从id=1的账户给id=2的账户转账100元– 第一步:将id=1的A账户余额减去100UPDATE accounts SET balance = balance - 100 WHERE id = 1;– 第二步:将id=2的B账户余额加上100UPDATE accounts SET balance = balance + 100 WHERE id = 2;这两条SQL语句必须全部执行,或者,由于某些原因,如果第一条语句成功,第二条语句失败,就必须全部撤销。数据库事务具有A
2023-10-24 18:25:00
146
原创 数据库的三种日志:redo log、binlog和undo log
redo log:记录的是修改后的数据,提供了崩溃恢复的能力undo log:记录的是修改之前的数据,提供回滚的能力binlong:记录修改后的数据,用于归档。
2023-10-12 17:35:40
278
原创 前端json中bigint的问题
问题:在后端返回的数据中存在int64位的大数在前端会丢失精度原因:JavaScript 能够准确表示的整数范围在-2^53到 2^53之间(不含两个端点),超过这个范围,无法精确表示这个值数据如果想json格式化,可以使用json-bigint使用方法:首先安装json-bigint:npm i json-bigint导入json-bigintimport jsonBig from 'json-bigint';jsonBig.stringfy:将json转str并格式化展示json
2022-01-24 23:31:04
1538
原创 python-Requests的使用
requests是python的一个第三方库,处理URL特别方便请求类型支持:get,post,put,delete,head,option使用demoimport requestsimport jsonif __name__ == '__main__': url = "https://www.baidu.com" # 参数,dict格式,get请求中data可有可无 data = {'q': 'python', 'cat': '1001'} # header,可
2021-12-27 17:31:55
500
原创 python实现json diff
第一种方法:借助于Python包安装json_tools包,示例代码:#!/usr/bin/env python# -*- coding: utf-8 -*-import json_toolsdef jsonDiff(a, b): result = json_tools.diff(a, b) print(result)if __name__ == '__main__': a = { "id": 1, "name": "aaaa",
2021-11-21 21:36:11
2286
原创 python中dict与json格式的转换
import jsonif __name__ == '__main__': test_data = { "name": "zhangsan", "age": 25, "interest": { "movie": { "name": "aaa", "date": "2021-01-09" }, "book": {
2021-09-26 23:07:26
598
原创 旋转数组-python
题目描述:题解:1、先将整个数组反转,则会后k个就会放在了数组的头部,如果k等于32、将前半部分反转,再将后半部分反转即可需注意:核心思路:先将整个数组进行反转整个数组反转后:7,6,5,4,3,2,1将前3个反转: 5,6,7,4,3,2,1将后边的反转: 5,6,7,1,2,3,4...
2021-09-12 19:21:56
167
原创 非递减数组平方后排序
题目:给你一个按 非递减顺序 排序的整数数组 nums,返回 每个数字的平方 组成的新数组,要求也按 非递减顺序 排序。想法:看到本题,首先想到的是可能存在负数的情况,负负得正后数组就边无序了利用双指针的思路:1、先将整个数组分为两部分,分界点为index,则从0到index都是负数,从index到最后都是正数2、则平方后,从0到index是递减的,从index到最后是递增的3、此时就可以用到归并排序的思路,两个指针分别是index和index+1a. 前半部分从index往前遍历,后半部
2021-09-12 17:01:11
283
原创 leetcode14-最长公共子串-python
题目:题解:纵向扫描,取第一行的第i个,判断每一行的第i个是否相等class Solution: def longestCommonPrefix(self, strs: List[str]) -> str: if not strs: return "" length, count = len(strs[0]), len(strs) # 第一层遍历,遍历第几个元素 for i in range(l
2021-09-11 19:16:51
289
原创 leetcode9-判断回文数
题目:题解:step1:如果是负数,则一定不是回文数step2:采用双指针的思想,一个指针从头开始,一个指针从尾开始,则如果出现不相等,则不是回文数代码:class Solution: def isPalindrome(self, x: int) -> bool: if x < 0: return False x = str(x) low = 0 high = len(x)-1
2021-09-10 09:11:06
138
原创 python正负数取余说明
符号:/ :除法运算,返回值不是int类型//:除法运算,向下取整%:取余举例: print(12 // 10) # 输出1,取整 print(12 / 10) # 输出1.2 # 当被除数为负数时 print(-12 / 10) # 输出-1.2 print(int(-12 / 10)) # 输出-1 print(-12 // 10) # 输出-2取余:正数取余比较正常:print(123 % 10) # 输出3负数取余,比
2021-09-10 00:08:57
1062
1
原创 vue-demo
vue案例<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>Title</title></head><body><!--交给了vue去管理--><!--可以做到前端和数据完全分离,只需要写html代码--><div id ="app"> <h1&g
2021-08-01 23:17:08
102
原创 python-基础数据结构
基础数据结构1. 元组固定长度,不可变的python对象序列元组被创建后,各位置上的对象是无法修改的,但是元组中存储的对象其自身是可变的可以使用+号连接元组生成更长的元组将元组乘以整数,则会和列表一样,生成含有多份拷贝的元组元组方法:只有一个count计算某个数值在元组中出现的次数if __name__ == '__main__': # 元组的创建 tup = 4, 5, 6 print(tup) lst = [1, 2, 3, 4] tup2 =
2021-07-21 22:01:49
242
1
原创 python-内置数据结构、函数和文件
目录数据结构和序列元组列表数据结构和序列元组固定长度,不可变的python对象序列 元组被创建后,各位置上的对象是无法修改的,但是元组中存储的对象其自身是可变的 可是使用+号连接元组生成更长的元组 将元组乘以整数,则会和列表一样,生成含有多份拷贝的元组举例:if __name__ == '__main__': # 元组的创建 tup = 4, 5, 6 print(tup) lst = [1, 2, 3, 4] tup2 =
2021-07-21 00:39:52
124
原创 python3中numpy
numpy基础属性:import numpy as nparray = np.array([[1,2,3],[4,5,6]])print(array)print("dim:",array.ndim) print("shape:",array.shape)print("size:",array.size)创建array:# a = np.array([2,3,4],dtype=np.float)# print(a.dtype)b=np.zeros((3,4))pri.
2021-07-19 22:40:53
163
原创 go-结构体
go语言中没有“类”的概念,也不支持类的继承但是go语言可以通过结构体的内嵌再配合接口比面向对象具有更高的扩展性和灵活性类型别名和自定义类型自定义类型:在go语言中有一些基本的数据类型,比如string int,bool等,也可以使用type关键字来定义自定义类型,语法:type 类型 基本数据类型// 将myInt定义为int类型type myInt int类型别名举例:package mainimport "fmt"// type后边跟一个类型,
2021-07-19 09:28:01
182
原创 fmt标准库
fmt标准库,实现了类似于C语言的print和scanf时格式化的I/O,主要分为向外输出内容和获取输入内容向外输出PrintPrint:Printf:格式化输出,第一个参数是一个格式化的字符串Println:输出后默认换行通用占位符:%v:值的默认格式表示 %+v:类似于%v,输出结构体时会添加字段名 %#v:值的GO语法表示,更加详细 %T:值的类型 %%:百分号 %d:十进制 %b:八进制 %x:十六进制 %s:字符串字符串和[]byte%s:直接输出
2021-07-19 09:16:21
2229
原创 go-内置函数
close:主要关闭channel len:求长度,比如string,arr,slice,map,channel new:用来分配内存,主要用来分配值类型,比如int,string,返回 的是指针 make:用来分配内存,主要用来分配引用类型,比如:chan,map,slice append:把元素追加到元素中,slice中 panic和recover:没有异常机制panic和recovergo1.12没有异常处理机制,panic和recover是成对出现的...
2021-07-17 22:09:34
126
原创 go-map
目录map按照指定顺序遍历元素为map类型的切片值为切片类型的map文档地址:https://studygolang.com/pkgdoc是一个无序的基于key-value的数据类型 最好要估算好map的容量,避免程序运行过程中在动态扩容 map中取值时,可以返回两个参数,第二个参数表示是否能取到 删除元素:如果元素为空,或者不存在该key,则不进行操作 切片和map在使用前一定要初始化,要不然会报空指针 var v1 map[string]int // 还没有初
2021-07-17 16:03:35
199
原创 go-指针
go语言中不存在指针操作 只需要记住两个符号,一个是&取地址,一个是*根据地址取值 //&取地址 //*根据地址取值 a := 18 fmt.Printf("地址:%p\n", &a) p := &a fmt.Printf("p的类型:%T\n", p) fmt.Printf("根据地址取值:%v", *p)输出:地址:0xc00001e0a0p的类型:*int (intl类型的指针)根据地址取值:18new和makenew函..
2021-07-17 14:45:41
84
原创 go-切片
目录数组切片make()函数创建切片append方法为切片新增元素使用copy函数赋值切片练习1练习2数组定义数组,需要指定长度和类型,var a [8]int 数组的长度是固定的,长度固定好之后不能变 数组的定义:var 名称 [length]类型 数组初始化的3种方式://方式1:l1 := [3]bool{true, true, true}//方式2:根据初始值自动推断数组的长度l2 := [...]int{1, 23, 4}//初始化方式3:..
2021-07-17 14:00:09
220
原创 二叉树相关算法题总结-python实现
题目一:平衡二叉树输入一棵二叉树,判断该二叉树是否是平衡二叉树。在这里,我们只需要考虑其平衡性,不需要考虑其是不是排序二叉树平衡二叉树(Balanced Binary Tree),具有以下性质:它是一棵空树或它的左右两个子树的高度差的绝对值不超过1,并且左右两个子树都是一棵平衡二叉树。...
2021-06-05 14:08:50
872
原创 前端遇到的问题总结
1. span设置为区块span不会占用一行,内容占多大宽度,span就有多宽。而div是一个区块,可以设置width,height如果想
2021-06-01 09:28:19
177
原创 Python虚拟环境的使用
在python开发中,会出现不同的项目依赖同一个包的不同版本,为了隔离开不同项目的环境,可以用python的虚拟环境前提:该文章的所有ming'lin
2021-05-28 00:03:31
178
原创 动态规划经典例题-最长公共子序列-python
最长公共子序列问题描述:题解:以问题中为例:A='helloworld'B='loop'res[i][j]表示:截止到B的第i个字符和截止到A的第j个字符的最长公共子序列例如:res[2][5]=2表示第2行第5列,也就是lo和hello的最长公共子序列等于2 0 h e l l o w o r l d 0 0 0 0 0 0 0 0 0 0 0.
2021-05-17 00:19:37
3725
原创 滑动窗口解题技巧
目录滑动窗口题目简介最小覆盖子串滑动窗口题目简介什么样的问题可以归结为滑动窗口问题?最小覆盖子串题目:滑动窗口算法的思路说明:我们在字符串 S 中使用双指针中的左右指针技巧,初始化 left = right = 0,把索引左闭右开区间 [left, right) 称为一个「窗口」 我们先不断地增加 right 指针扩大窗口 [left, right),直到窗口中的字符串符合要求(包含了 T 中的所有字符) 此时,我们停止增加 right,转而不断增加 left 指针缩
2021-05-15 23:02:31
251
原创 动态规划-最大子数组-python
题目:题解:按照动态规划常规思想,一般是这样定义 dp 数组,nums[0..i] 中的「最大的子数组和」为 dp[i]但是你能用 dp[i] 推出 dp[i+1] 吗?比如,一个数组[-3,4,-1,2,-6,1,4],dp[4]=dp[1] +dp[2] +dp[3]=5,也就是说从0~4个位置的最大子数组的和是5,那你能通过dp[4]推到出dp[5]么?实际上是不行的,因为子数组一定是连续的,按照我们当前 dp 数组定义,并不能保证 nums[0..i] 中的最大子数组与 nu
2021-05-11 23:28:57
682
原创 最长递增子序列-python
题目:题解:先举例说明:按照动态规划的步骤:明确 base case -> 明确「状态」-> 明确「选择」 -> 定义 dp 数组/函数的含义,来确定每一个步骤明确 base case:dp[i] 初始值为 1,因为以 nums[i] 结尾的最长递增子序列起码要包含它自己 明确状态: 明确选择: dp的定义:dp[i] 表示以 nums[i] 这个数结尾的最长递增子序列的长度则伪代码如举例中所示代码:def lengthOfLIS(arr):
2021-05-10 23:36:46
493
原创 矩阵的最小路径和-python
题目描述:给定一个n * m的矩阵a,从左上角开始每次只能向右或者向下走,最后到达右下角的位置,路径上所有的数字累加起来就是路径和,输出所有的路径中最小的路径和。详解:利用动态规划的思想,对于m*n矩阵,dp[i][j]的位置记录着第i行第j列位置的最小路径和第一行 只能从左往右 第一列只能从上往下 第二行和第二列之后每个位置的值为,上方和左方取最小值+当前位置的值,matrix[i][j] = min(matrix[i - 1][j], matrix[i][j - 1]) + mat...
2021-05-10 00:30:29
757
原创 动态规划详解
目录简介举例斐波那切数列暴力递归带备忘录的递归解法凑零钱问题简介动态规划一般是解决最值问题,运筹学中的一种最优化方法,比如求最长递增子序列,最小编辑距离核心问题:穷举,但是动态规划存在重叠子问题,暴力穷举效率较低所以需要一个备忘录或者DP table来优化穷举过程,避免一些不必要的计算穷举还需要写出正确的状态转移方程所以整体步骤是:明确 base case -> 明确「状态」-> 明确「选择」 -> 定义 dp 数组/函数的含义# 初始
2021-05-09 20:03:00
101
原创 反转数字-GO
题目:题解:取x%10取最后一位,然后组成新的数字 越界条件,res>(1<<31)-1 || res< -(1<<31)-1代码:package main/** * * @param x int整型 * @return int整型*/func reverse( x int ) int { // write code here res:=0 for x!=0{ res = res*10+
2021-05-09 15:14:55
192
原创 合并两个有序数组-python
题目描述:两个有序数组A和B,长度分别为m,n。将两个数组合并到A中题解:将B和并到A中,如果从前往后依次合并,则每一次在数组A中插入一个值,都需要后边节点依次往后移,改操作浪费空间可以从数组A的m位置和B的n位置开始比较,从m+n-1的位置开始放最大值,依次往前排代码:## # @param A int整型一维数组 # @param B int整型一维数组 # @return void#class Solution: def merge(self , A, m, B,
2021-05-09 14:41:33
375
原创 两个栈实现一个队列-Python
问题描述:用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。题解:有两个栈,例如abcd分别入栈,入栈1位:dcba,出栈到栈2中为abcd,此时如果出栈2的顺序就是先a,在bcd,符合了队列的特性pop操作:出队列时,先判断第二个栈有没有内容,如果有,则直接从栈2中出,如果没有,则将栈1中的内容压入栈2,在从栈2出push操作:直接push到栈1中即可# -*- coding:utf-8 -*-class Solution: def __i
2021-05-07 23:17:39
169
原创 判断链表中是否有环-Python
题目:判断给定的链表中是否有环。如果有环则返回true,否则返回false。你能给出空间复杂度O(1)的解法么?题解:最简单的一种方式就是快慢指针,慢指针针每次走一步,快指针每次走两步,如果相遇就说明有环,如果有一个为空说明没有环代码:# class ListNode:# def __init__(self, x):# self.val = x# self.next = None## # @param head ListNode类 # @
2021-05-07 23:00:26
622
原创 合并两个有序链表-Python
题目:将两个有序的链表合并为一个新链表,要求新的链表是通过拼接两个链表的节点来生成的,且合并后新链表依然有序。详解:定义一个新的空链表,判断两个链表:如果L1当前节点的值比L2当前节点的值小,则取L1的节点赋值给新链表 否则。将L2的节点赋值给新链表注意:如果两个其中一个为空,则直接将不为空的后续赋值给新链表代码如下:# class ListNode:# def __init__(self, x):# self.val = x# self.
2021-04-27 00:22:58
361
原创 数组中超过一半的数字-python
题目:数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。例如输入一个长度为9的数组{1,2,3,2,2,2,5,4,2}。由于数字2在数组中出现了5次,超过数组长度的一半,因此输出2。如果不存在则输出0。详解:初始时,先定义一个length用来记住某个数字出现最多的次数,value记录出现最多次数的具体值定义一个map,key存具体值,value存次数,当遍历到某个值时判断该值出现的次数是不是大于length,如果更大,则更新length和value代码: def Mo
2021-04-24 21:51:53
219
原创 括号序列-python
题目描述:给出一个仅包含字符'(',')','{','}','['和']',的字符串,判断给出的字符串是否是合法的括号序列括号必须以正确的顺序关闭,"()"和"()[]{}"都是合法的括号序列,但"(]"和"([)]"不合法。题解:利用一个栈,当一个字符是"]","}",")",判断栈顶元素是不是对应的左半边,如果是则出栈,如果不是,则继续进栈注意:当是空栈时,直接入栈即可代码:def isValid(s): stack = [] s_list = list(s)
2021-04-24 21:39:34
748
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人