首页
畅所欲言
友情链接
壁纸大全
数据统计
推荐
工具箱
在线白板
Search
1
职教云小助手重构更新,职教云助手最新版下载地址【已和谐】
13,968 阅读
2
职教云-智慧职教,网课观看分析(秒刷网课)
11,333 阅读
3
gradle-5.4.1-all.zip下载
9,319 阅读
4
职教云-智慧职教,签到补签分析(逆天改命系列)
8,122 阅读
5
一个优秀的程序员从写文档开始:免费领14个月语雀云笔记会员
6,983 阅读
学习笔记
Web
Python
转载文章
算法刷题
JS逆向
综合笔记
安卓
物联网
Java
C
资源收集
软件收藏
网络资源
影视专辑
TED英语角
随便写写
随手拍
登录
/
注册
Search
Lan
累计撰写
615
篇文章
累计收到
629
条评论
首页
栏目
学习笔记
Web
Python
转载文章
算法刷题
JS逆向
综合笔记
安卓
物联网
Java
C
资源收集
软件收藏
网络资源
影视专辑
TED英语角
随便写写
随手拍
页面
畅所欲言
友情链接
壁纸大全
数据统计
推荐
工具箱
在线白板
搜索到
615
篇与
的结果
2022-02-21
python 计算指定日期后的几个工作日日期
import datetime def main(target_date, days): target_date = datetime.datetime.strptime(target_date, '%Y-%m-%d') while days + 1: target_date = target_date + datetime.timedelta(days=1) days = days - 1 if 1 <= target_date.isoweekday() <= 5 else days return target_date # www.lanol.cn if __name__ == '__main__': print(f"指定结果:{main('2022-2-21', 2)}") @松涛哥 提供的问题
2022年02月21日
436 阅读
0 评论
3 点赞
2022-02-15
python引入雪花算法模块
pip安装pip3 install pysnowflake启动服务snowflake_start_server调用算法import snowflake.client def get_snowflake_uuid(): guid = snowflake.client.get_guid() return guid get_snowflake_uuid()
2022年02月15日
578 阅读
0 评论
0 点赞
2022-02-10
数据库事务的概念及其实现原理
1.认识事务1.1为什么需要数据库事务转账是生活中常见的操作,比如从A账户转账100元到B账号。站在用户角度而言,这是一个逻辑上的单一操作,然而在数据库系统中,至少会分成两个步骤来完成:将A账户的金额减少100元将B账户的金额增加100元在这个过程中可能会出现以下问题:转账操作的第一步执行成功,A账户上的钱减少了100元,但是第二步执行失败或者未执行便发生系统崩溃,导致B账户并没有相应增加100元。转账操作刚完成就发生系统崩溃,系统重启恢复时丢失了崩溃前的转账记录。同时又另一个用户转账给B账户,由于同时对B账户进行操作,导致B账户金额出现异常。为了便于解决这些问题,需要引入数据库事务的概念。1.2什么是数据库事务定义:数据库事务是构成单一逻辑工作单元的操作集合一个典型的数据库事务如下所示BEGIN TRANSACTION //事务开始 SQL1 SQL2 COMMIT/ROLLBACK //事务提交或回滚关于事务的定义有几点需要解释下:数据库事务可以包含一个或多个数据库操作,但这些操作构成一个逻辑上的整体。构成逻辑整体的这些数据库操作,要么全部执行成功,要么全部不执行。构成事务的所有操作,要么全都对数据库产生影响,要么全都不产生影响,即不管事务是否执行成功,数据库总能保持一致性状态。以上即使在数据库出现故障以及并发事务存在的情况下依然成立。1.3 事务如何解决问题对于上面的转账例子,可以将转账相关的所有操作包含在一个事务中BEGIN TRANSACTION A账户减少100元 B账户增加100元 COMMIT当数据库操作失败或者系统出现崩溃,系统能够以事务为边界进行恢复,不会出现A账户金额减少而B账户未增加的情况。当有多个用户同时操作数据库时,数据库能够以事务为单位进行并发控制,使多个用户对B账户的转账操作相互隔离。事务使系统能够更方便的进行故障恢复以及并发控制,从而保证数据库状态的一致性。1.4 事务的ACID特性以及实现原理概述原子性(Atomicity):事务中的所有操作作为一个整体像原子一样不可分割,要么全部成功,要么全部失败。一致性(Consistency):事务的执行结果必须使数据库从一个一致性状态到另一个一致性状态。一致性状态是指:系统的状态满足数据的完整性约束(主码,参照完整性,check约束等)系统的状态反应数据库本应描述的现实世界的真实状态,比如转账前后两个账户的金额总和应该保持不变。隔离性(Isolation):并发执行的事务不会相互影响,其对数据库的影响和它们串行执行时一样。比如多个用户同时往一个账户转账,最后账户的结果应该和他们按先后次序转账的结果一样。持久性(Durability):事务一旦提交,其对数据库的更新就是持久的。任何事务或系统故障都不会导致数据丢失。在事务的ACID特性中,C即一致性是事务的根本追求,而对数据一致性的破坏主要来自两个方面事务的并发执行事务故障或系统故障数据库系统是通过并发控制技术和日志恢复技术来避免这种情况发生的。并发控制技术保证了事务的隔离性,使数据库的一致性状态不会因为并发执行的操作被破坏。日志恢复技术保证了事务的原子性,使一致性状态不会因事务或系统故障被破坏。同时使已提交的对数据库的修改不会因系统崩溃而丢失,保证了事务的持久性。2 并发异常与并发控制技术2.1 常见的并发异常在讲解并发控制技术前,先简单介绍下数据库常见的并发异常脏写:脏写是指事务回滚了其他事务对数据项的已提交修改,比如下面这种情况在事务1对数据A的回滚,导致事务2对A的已提交修改也被回滚了丢失更新:丢失更新是指事务覆盖了其他事务对数据的已提交修改,导致这些修改好像丢失了一样事务1和事务2读取A的值都为10,事务2先将A加上10并提交修改,之后事务2将A减少10并提交修改,A的值最后为,导致事务2对A的修改好像丢失了一样脏读:脏读是指一个事务读取了另一个事务未提交的数据在事务1对A的处理过程中,事务2读取了A的值,但之后事务1回滚,导致事务2读取的A是未提交的脏数据。不可重复读:不可重复读是指一个事务对同一数据的读取结果前后不一致。脏读和不可重复读的区别在于:前者读取的是事务未提交的脏数据,后者读取的是事务已经提交的数据,只不过因为数据被其他事务修改过导致前后两次读取的结果不一样,比如下面这种情况由于事务2对A的已提交修改,事务1前后两次读取的结果不一致幻读:幻读是指事务读取某个范围的数据时,因为其他事务的操作导致前后两次读取的结果不一致。幻读和不可重复读的区别在于,不可重复读是针对确定的某一行数据而言,而幻读是针对不确定的多行数据。因而幻读通常出现在带有查询条件的范围查询中,比如下面这种情况事务1查询A<5的数据,由于事务2插入了一条A=4的数据,导致事务1两次查询得到的结果不一样2.2 事务的隔离级别事务具有隔离性,理论上来说事务之间的执行不应该相互产生影响,其对数据库的影响应该和它们串行执行时一样。然而完全的隔离性会导致系统并发性能很低,降低对资源的利用率,因而实际上对隔离性的要求会有所放宽,这也会一定程度造成对数据库一致性要求降低SQL标准为事务定义了不同的隔离级别,从低到高依次是读未提交(READ UNCOMMITTED)读已提交(READ COMMITTED)可重复读(REPEATABLE READ)串行化(SERIALIZABLE)事务的隔离级别越低,可能出现的并发异常越多,但是通常而言系统能提供的并发能力越强。不同的隔离级别与可能的并发异常的对应情况如下表所示,有一点需要强调,这种对应关系只是理论上的,对于特定的数据库实现不一定准确,比如mysql的Innodb存储引擎通过Next-Key Locking技术在可重复读级别就消除了幻读的可能。所有事务隔离级别都不允许出现脏写,而串行化可以避免所有可能出现的并发异常,但是会极大的降低系统的并发处理能力2.3 事务隔离性的实现——常见的并发控制技术并发控制技术是实现事务隔离性以及不同隔离级别的关键,实现方式有很多,按照其对可能冲突的操作采取的不同策略可以分为乐观并发控制和悲观并发控制两大类。乐观并发控制:对于并发执行可能冲突的操作,假定其不会真的冲突,允许并发执行,直到真正发生冲突时才去解决冲突,比如让事务回滚。悲观并发控制:对于并发执行可能冲突的操作,假定其必定发生冲突,通过让事务等待(锁)或者中止(时间戳排序)的方式使并行的操作串行执行。2.3.1 基于封锁的并发控制2.3.2 基于时间戳的并发控制2.3.3 基于有效性检查的并发控制2.3.4 基于快照隔离的并发控制2.3.5 关于并发控制技术的总结原文链接:https://www.cnblogs.com/takumicx/p/9998844.html
2022年02月10日
516 阅读
0 评论
1 点赞
2022-02-01
Visual Studio Code配置C环境,运行C程序
祝大家新年快乐大家新年好,大年初一就开始卷起来了。安装环境1.VS Code安装插件我安装了这四个插件(其实我一开始只装了第二个,好像后面几个是自己带的)2.安装C/C++编译器在windows上借助MinGW工具安装,下载地址:[https://sourceforge.net/projects/mingw/]这里帮大家整理到我的OD了,可以直接点击下载.{cloud title="下载C/C++编译器" type="default" url="https://file.lanol.cn/d/E5%20Blog/%E5%8D%9A%E5%AE%A2%E8%B5%84%E6%BA%90/%E6%96%87%E7%AB%A0%E9%99%84%E4%BB%B6/572/mingw-get-setup.exe" password=""/}下载之后,打开安装,需要记住装到哪个目录了.比如我就安装在D:\Program Files (x86)\MinGW安装完成之后打开新安装的这个软件.找到mingw32-gcc.bin,mingw32-gcc-g++.bin,mingw32-gdb.bin然后右键Mark for installation最后在左上角的installation点击apply changes最后安装完成3.配置到系统变量找到安装目录下的bin,然后复制路径打开环境变量->系统变量->path进行添加4.重启VS code新建一个.c文件#include <stdio.h> int main() { int n; printf("This is a test file!\r\nInput a number: "); scanf("%d",&n); printf("The number is %d",n); return 0; }打开一个新的终端然后输入gcc -g test.c -o test.exe编译成exe文件.然后再打开exe文件
2022年02月01日
302 阅读
0 评论
2 点赞
2022-01-28
买了两台realme q3s送给爸妈当新年礼物
今天两台手机都到啦查了下激活时间也没问题本来想去咸鱼淘两台三星系列的机子,价格便宜,性能离谱但是发现他们也不打游戏什么的,于是看了下国产手机。本来考虑的是和我一样的红米,然后在某安看到了realme q3s看了下配置什么的,感觉还行,于是入手了两台,感觉还可以。
2022年01月28日
480 阅读
0 评论
3 点赞
2022-01-13
2021年度全国统计用区划代码和城乡划数据抓取
2021年中国省份及城市及街道数据抓取(未包括我国台湾省、香港特别行政区和澳门特别行政区)# -*- coding: utf-8 -*- # -*- coding: utf-8 -*- """ ------------------------------------------------- @ Author :Lan @ Blog :www.lanol.cn @ Date : 2022/1/12 @ Description:I'm in charge of my Code ------------------------------------------------- """ import time import requests import parsel base_url = 'http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2021/' provinceText = requests.get(base_url + 'index.html') provinceText.encoding = 'utf-8' provinceHtml = parsel.Selector(provinceText.text) china = {} # 获取所有省份,并进行遍历 for province in provinceHtml.xpath('//td/a'): provinceName = province.xpath('text()').extract_first() print(provinceName) china[provinceName] = {} provinceUrl = base_url + province.xpath('@href').extract_first().replace('.html', '/') cityText = requests.get(base_url + province.xpath('@href').extract_first()) cityText.encoding = 'utf-8' cityHtml = parsel.Selector(cityText.text) # 获取省份下的市 for city in cityHtml.xpath("//tr[@class='citytr']/td[2]"): cityName = city.xpath('a/text()').extract_first() print(provinceName, cityName) china[provinceName][cityName] = {} countyText = requests.get(base_url + city.xpath('a/@href').extract_first()) countyText.encoding = 'utf-8' countyHtml = parsel.Selector(countyText.text) # 获取市区下的区 for county in countyHtml.xpath("//tr[@class='countytr']/td[2]//*"): countyName = county.xpath('text()').extract_first() print(provinceName, cityName, countyName) china[provinceName][cityName][countyName] = {} townUrl = provinceUrl + county.xpath('@href').extract_first() if county.xpath('@href') else None if townUrl: try: townText = requests.get(townUrl, timeout=2) except: townText = requests.get(townUrl, timeout=2) townText.encoding = 'utf-8' townHtml = parsel.Selector(townText.text) # 获取区下面的镇 towns = townHtml.xpath("//tr[@class='towntr']/td[2]//text()").extract() print(provinceName, cityName, countyName, towns) china[provinceName][cityName][countyName] = towns print(china) {abtn icon="fa-external-link" color="#ff6800" href="https://gitlab.com/Vastsa/lanpicbed/-/raw/master/zb_users/upload/2022/1/china.json" radius="" content="点击查看数据"/}
2022年01月13日
515 阅读
0 评论
2 点赞
2022-01-08
湖南统招专升本可报考院校专业查询系统-2021年考试科目查询系统
可根据专业查询能够报考院校的信息根据学校查询考试科目信息 {abtn icon="fa-book" color="#009dff" href="https://sing.lanol.cn/zsb/index" radius="" content="点击查看"/}
2022年01月08日
1,949 阅读
3 评论
0 点赞
1
...
21
22
23
...
88