首页
畅所欲言
友情链接
壁纸大全
数据统计
推荐
工具箱
在线白板
Search
1
职教云小助手重构更新,职教云助手最新版下载地址【已和谐】
13,408 阅读
2
职教云-智慧职教,网课观看分析(秒刷网课)
11,031 阅读
3
gradle-5.4.1-all.zip下载
8,921 阅读
4
职教云-智慧职教,签到补签分析(逆天改命系列)
7,852 阅读
5
一个优秀的程序员从写文档开始:免费领14个月语雀云笔记会员
6,882 阅读
学习笔记
Web
Python
转载文章
算法刷题
JS逆向
综合笔记
安卓
物联网
Java
C
资源收集
软件收藏
网络资源
影视专辑
TED英语角
随便写写
随手拍
登录
/
注册
Search
Lan
累计撰写
623
篇文章
累计收到
617
条评论
首页
栏目
学习笔记
Web
Python
转载文章
算法刷题
JS逆向
综合笔记
安卓
物联网
Java
C
资源收集
软件收藏
网络资源
影视专辑
TED英语角
随便写写
随手拍
页面
畅所欲言
友情链接
壁纸大全
数据统计
推荐
工具箱
在线白板
搜索到
65
篇与
的结果
2022-04-16
armbian 常用指令
更新网络和hostnamenmtuihttps://blog.csdn.net/no1xium/article/details/107476401设置中国时区:ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && echo 'Asia/Shangha> i' > /etc/timezone安装宝塔:wget -O install.sh http://www.aapanel.com/script/install-ubuntu_6.0_en.sh && bash install.sh forum
2022年04月16日
1,675 阅读
0 评论
1 点赞
2022-04-15
Pycharm无法加载文件 xx\Scripts\Activate.ps1,因为在此系统上禁止运行脚本
问题:& : 无法加载文件 D:\Tools\Python37\Scripts\Activate.ps1,因为在此系统上禁止运行脚本。有关详细信息,请参阅 https:/go.microsoft.com/fwlink/?LinkID=135170 中 的 about_Execution_Policies。 所在位置 行:1 字符: 3 + & D:/Tools/Python37/Scripts/Activate.ps1 + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : SecurityError: (:) [],PSSecurityException + FullyQualifiedErrorId : UnauthorizedAccess解决方案:以管理员身份打开命令行执行:set-ExecutionPolicy RemoteSigned
2022年04月15日
849 阅读
1 评论
0 点赞
2022-03-08
个体工商户年报
年报去年办了一个营业执照,好像是每年6月前要进行年报然后我去找去年办照的人居然还要钱,然后就自己网上找了会教程先找到自己个体户所在的省份地址:http://www.gsxt.gov.cn/annual-login.html比如我是河北的,所以进河北的这个使用电子营业执照登录使用微信扫第一个二维码,然后进行注册,下载营业执照然后你自己完成注册添加然后使用扫一扫进行扫描登录的二维码,就可以进行登录了就可以进行填报了
2022年03月08日
377 阅读
2 评论
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日
377 阅读
0 评论
1 点赞
2021-12-12
BurpSuite2020 打开提示burpsuit to run burp suite using java 17+
解决方案: 根据报错提示,在命令行运行时后面加上这句代码:--add-opens=java.desktop/javax.swing=ALL-UNNAMED --add-opens=java.base/java.lang=ALL-UNNAMED@echo off start "burpsuite" /B "javaw.exe" --add-opens=java.desktop/javax.swing=ALL-UNNAMED --add-opens=java.base/java.lang=ALL-UNNAMED -Xmx8G -XX:-UseParallelGC -noverify -javaagent:BurpSuiteLoader.jar -Dfile.encoding=utf-8 -jar "%~dp0burpsuite_pro.jar" %* exit 0 推荐java版本为jdk16.0.2 下载链接:https://www.oracle.com/java/technologies/javase/jdk16-archive-downloads.html
2021年12月12日
1,968 阅读
0 评论
0 点赞
2021-10-18
解除切屏和复制限制
//解除切屏限制window.onmouseleave = window.onblur = window.onmouseout = document.onmouseleave = document.onblur = document.onmouseout = document.body.onmouseleave = document.body.onblur = document.body.onmouseout = onmouseleave = onblur = onmouseout = null;//解除选中文本限制(这里html看具体考试页面绑定的限制事件dom而定)window.onselectstart = document.onselectstart = document.body.onselectstart = onselectstart = document.querySelector("html").onselectstart = null;//解除复制粘贴限制window.oncopy = window.onpaste = document.oncopy = document.onpaste = document.body.oncopy = document.body.onpaste = oncopy = onpaste = null;//解除右键菜单限制(这里html看具体考试页面绑定的限制事件dom而定)window.oncontextmenu = document.oncontextmenu = document.body.oncontextmenu = oncontextmenu = document.querySelector("html").oncontextmenu = null;//解除快捷键操作屏蔽window.onkeyup = window.onkeydown = window.onKeyPress = document.onkeyup = document.onkeydown = document.onKeyPress = document.body.onkeyup = document.body.onkeydown = document.body.onKeyPress = onkeyup = onkeydown = onKeyPress = null;
2021年10月18日
595 阅读
0 评论
1 点赞
2021-10-16
.net通过boundary上传文件
public void UploadVedio(string fileName) { fileName = "input_video_only_3sec.mp4"; byte[] vedioBytes = null; using (FileStream fileStream = new FileStream(@"D:\缓存内容\test.mp4", FileMode.Open, FileAccess.Read)) { try { vedioBytes = new byte[fileStream.Length]; fileStream.Read(vedioBytes, 0, (int)fileStream.Length); } catch (Exception ex) { throw ex; } } string cookie = ""; string token = getUploadToken(cookie); string boundary = "------WebKitFormBoundary5TsAeTVHbPVlsrNh"; string newline = "\r\n"; HttpWebRequest req = (HttpWebRequest)WebRequest.Create(new Uri("")); req.ContentType = $"multipart/form-data;boundary=----WebKitFormBoundary5TsAeTVHbPVlsrNh"; req.Headers.Add("Authorization", token); byte[] itemBoundaryBytes = Encoding.UTF8.GetBytes("\r\n" + boundary + "\r\n"); byte[] endBoundaryBytes = Encoding.UTF8.GetBytes("\r\n" + boundary + "--\r\n"); req.Method = "POST"; Stream reqStream = req.GetRequestStream(); string textTemplate = $"Content-Disposition: form-data; name=\"name\"" + newline; textTemplate += newline; textTemplate += fileName + newline; textTemplate += boundary + newline; textTemplate += $"Content-Disposition: form-data; name=\"size\"" + newline; textTemplate += newline; textTemplate += vedioBytes.Length + newline; textTemplate += boundary + newline; textTemplate += $"Content-Disposition: form-data; name=\"dir\"" + newline; textTemplate += newline + newline; textTemplate += boundary + newline; byte[] itemBytes = Encoding.UTF8.GetBytes(textTemplate); reqStream.Write(itemBoundaryBytes, 0, itemBoundaryBytes.Length); reqStream.Write(itemBytes, 0, itemBytes.Length); string fileTemplate = $"Content-Disposition: form-data; name=\"file\"; filename=\"{fileName}\"\r\nContent-Type: video/mp4" + newline + newline; byte[] fileBytes = Encoding.UTF8.GetBytes(fileTemplate); reqStream.Write(fileBytes, 0, fileBytes.Length); reqStream.Write(vedioBytes, 0, vedioBytes.Length); reqStream.Write(endBoundaryBytes, 0, endBoundaryBytes.Length); reqStream.Close(); reqStream.Dispose(); HttpWebResponse rsp = (HttpWebResponse)req.GetResponse(); Encoding encoding = Encoding.UTF8; if (!string.IsNullOrEmpty(rsp.CharacterSet)) { encoding = Encoding.GetEncoding(rsp.CharacterSet); } }再来一个Python版本的: headers = {'Authorization': token, 'Content-Type': 'multipart/form-data;boundary=-------28947758029299'} url = '' fileContent = await file.read() multipart_encoder = MultipartEncoder( fields={'name': file.filename, 'size': str(len(fileContent)), 'file': (file.filename, fileContent, 'video/mp4')}, boundary='-------28947758029299') headers['Content-Type'] = multipart_encoder.content_type return requests.post(url=url, headers=headers, data=multipart_encoder, verify=False).json()
2021年10月16日
260 阅读
0 评论
1 点赞
1
...
3
4
5
...
10