数据库实现分布式锁

数据库实现分布式锁 基于数据库实现分布式锁 上面已经分析了基于数据库实现分布式锁的基本原理:通过唯一索引保持排他性,加锁时插入一条记录,解锁是删除这条记录。下面我们就简要实现一下基于数据库的分布式锁。 表设计 CREATE TABLE `distributed_lock` ( `id` bigint(20) NOT NULL AUTO_INCREMENT, `unique_mutex` varchar(255) NOT NULL COMMENT '业务防重id', `h
分类: 其他 发布时间: 10-29 21:17 阅读次数: 0

Java -- 最简单的认识重载

定义 方法的名称相同,参数个数或类型不同的时候就成为方法重载。 示例 编写一个两个数相加的方法: public class hello{ public static void main(String args[]){ System.out.println(sum(1,2)); System.out.println(sum(1,2,3)); System.out.println(sum(1.01,2.0)); } publ
分类: 其他 发布时间: 10-29 21:17 阅读次数: 0

3天学会Python,你没看错,就3天!

刚刚开始学编程,有什么办法可以快速掌握一门语言? 还真有!而且只需要3天的时间,就可以精通Python!你需要完成这几步: 和你的朋友立个flag:我要3天学会Python,赌一辆布加迪威龙! 花上10年的功夫,精通Python; 研究生物化学、分子生物学、遗传学,利用这些知识,研制出返老还童药水; 回到在第3天学习CPython的时候,并干掉那一天的你,并替代它; 这时候,你不仅学会了Python,而且还赢得了一辆布加迪威龙。 这是一个套路 这是一个套路性标题,这种标题的套路是:一个让人不可
分类: 其他 发布时间: 10-29 21:17 阅读次数: 0

“小黄衫”获奖感言

“小黄衫”获奖感言 一、感想 感谢 通过完成软件工程基础这门课的个人作业,有幸获得小黄衫,首先很感谢老师与助教们给我这次机会,感谢你们在课程中的辛勤付出!(ง •_•)ง 反思 虽然喜提小黄衫,但我认为班级中还有很多同学也同样有这个资格,虽然对于我们来说这门课程难度较大,但大家都在努力地完成每一次作业,都为这门课投入了心血,并且通过阅读其他同学的博客,不禁感慨优秀的同学大有人在,而我只不过是运气稍好(〒▽〒)。回想开课这几周以来,确实通过一次次的作业学到了很多之前从未接触过的知识,并且暴露出之
分类: 其他 发布时间: 10-29 21:17 阅读次数: 0

Appium中app的元素定位

app定位方式,本文只讲Android手机的定位方式。 前提条件是adb连接到模拟器或者是手机(具体连接方式这里不再讲解),证明已连接到设备 adb devices app元素定位工具一:UI Automator Viewer 这个工具是Android SDK自带的一个定位工具,具体页面截图如下: app元素定位工具二:Appium工具 启动Appium,启动之后,页面有一个放大镜的按钮,如图所示: 点击放大镜按钮,进入配置项,如果所示: platformName --  系统名称 platf
分类: 其他 发布时间: 10-29 21:17 阅读次数: 0

Post请求数据传到后台+号变成了空格

问题:   今天遇到一个问题:页面带有"+"号的数据,传到服务端接口,结果+号变成了空格。例如:传“1+1”变成了"1 1"。 解决办法:   方案一:     将“+”号替换成“%2B”;     例如:     string name="a+b";     name = name.replace('+','%2B');     可能会有多个+号的情况,比如:“a+++b+”      while(name.IndexOf('+')>0){ name = name.replac
分类: 其他 发布时间: 10-29 21:17 阅读次数: 0

创建多对多表关系的三种方式

创建多对多表关系的三种方式 """ 在设计项目的时候 一定要考虑的其它的要求,要让程序有扩展性, 防止后续的迭代更新... 尤其是数据库,必须要有扩展性 """ 全自动 好处就是django orm会自动帮你创建第三张关系表,你完全不用手动再去创建了 缺点是它帮你创建的第三张关系表 不会再额外添加字段,虽然有点方便,但是第三张表扩展性差,不能够随意添加额外的字段 authors = models.ManyToManyField(to='Author') 纯手动(不是很好) 虽然说不是很好,但
分类: 其他 发布时间: 10-29 21:17 阅读次数: 0

spring学习第8天(advisor)

1.关于之前的一个错误:aop的输出顺序,实际上官方文档上并没有说是否按照书写顺序输出的,有可能你1000次里面800次按顺序输出,200是随机输出的。<aop:aspect>有一个order属性,值越小的先输出。 2.Advisor:通知器,有某个或某些通知类型的切面类 特定通知是靠此类实现某些接口来表示的. spring有如下接口来表明不同的通知类型 MethodBeforeAdvice:前置通知 AfterReturningAdvice:返回通知 ThrowsAdvice:异常通知 Me
分类: 其他 发布时间: 10-29 21:17 阅读次数: 0

正则表达式格式

请参见 py爬虫 —— py爬虫基础re库 正则表达式模式 模式字符串使用特殊的语法来表示一个正则表达式: 字母和数字表示他们自身。一个正则表达式模式中的字母和数字匹配同样的字符串。 多数字母和数字前加一个反斜杠时会拥有不同的含义。 标点符号只有被转义时才匹配自身,否则它们表示特殊的含义。 反斜杠本身需要使用反斜杠转义。 由于正则表达式通常都包含反斜杠,所以你最好使用原始字符串来表示它们。模式元素(如 r'\t',等价于 \\t )匹配相应的特殊字符。 下表列出了正则表达式模式语法中的特殊元素
分类: 其他 发布时间: 10-29 21:17 阅读次数: 0

python将PNG格式的图片转化成为jpg

python将PNG格式的图片转化成为jpg """ 先来说一下jpg图片和png图片的区别 jpg格式:是有损图片压缩类型,可用最少的磁盘空间得到较好的图像质量 png格式:不是压缩性,能保存透明等图 """ from PIL import Image import cv2 as cv import os def PNG_JPG(PngPath): img = cv.imread(PngPath, 0) w, h = img
分类: 其他 发布时间: 10-29 21:17 阅读次数: 0

Scala Types 1

在 Scala 中所有值都有一种对应的类型 单例类型 形式:value.type,返回类型 value / null 场景1:链式API调用时的类型指定 class Super { def m1(t: Int) = {println(t); this} def m2(t: Int) = {println(t); this} } // 正常打印 new Super().m1(1).m2(2) class Child extends Super { def c1(t: Int) =
分类: 其他 发布时间: 10-29 21:17 阅读次数: 0

web框架学习路线图

0.配置 1.路由 2.view 3.model 4.序列化与反序列化。 5.auth&permission 6.header处理
分类: 其他 发布时间: 10-29 21:01 阅读次数: 0

ASP.NET中Literal控件的使用方法(用于向网页中动态添加内容)

原文:https://www.jb51.net/article/82855.htm 可以将 Literal 控件用作网页上其他内容的容器。Literal 控件最常用于向网页中动态添加内容。简单的讲,就是可以把 HTML 代码写到 Literal 控件上,直接呈现出来。 一、常见Literal属性 属性 描述 Text 指定 Literal 控件中显示的文本。在用户的浏览器中,这会显示为 HTML。 Mode 指定控件如何处理添入其中的标记。 二、基础用法 前台 LiteralTest.aspx
分类: 其他 发布时间: 10-29 21:01 阅读次数: 0

设备、设备控制器、设备适配器和设备驱动程序

1.1 设备 执行I/O操作的硬件设备,例如鼠标和键盘。 1.2 设备控制器 设备与主机通过插头连接,插座连接着设备控制器。 设备控制器是类似于CPU的智能电子元件,特定的设备控制器控制特定类型的I/O设备。 1.3 设备适配器 设备适配器由设备控制器与其他协助控制设备的硬件(例如显存)组成,如网络适配器(网卡),显示适配器(显卡)等。 1.4 设备驱动程序 设备控制器是操作系统和硬件设备的中间实体媒介,而设备驱动程序是操作系统用来控制设备控制器的抽象软件接口。 设备驱动程序通过合适地设置设备
分类: 其他 发布时间: 10-29 21:01 阅读次数: 0

C#:String.Format数字格式化输出 {0:N2} {0:D2} {0:C2}(不是原创)

原文地址:http://blog.sina.com.cn/s/blog_91beacf801010xh1.html int a = 12345678; //格式为sring输出 // Label1.Text = string.Format("asdfadsf{0}adsfasdf",a); // Label2.Text = "asdfadsf"+a.ToString()+"adsfasdf"; // Label1.Text = string.Format("asdfadsf{0:C}adsfa
分类: 其他 发布时间: 10-29 21:01 阅读次数: 0

CSIC_716_20191029

今日内容: 1.调用百度的AI接口,完成人脸图像打分( 敷衍) 2.完成系统内置时间的打印 3.将上述两段代码生成可执行文件 ----------------------------------------------------------------------------------------------------------------------------- 1、本人代码,提取分数性别和年龄 from aip import AipFace import base64 "
分类: 其他 发布时间: 10-29 21:01 阅读次数: 0

位运算交换两个变量的值

int a = 4,b = 5;//a的二进制表示 0100 b的二进制表示0101 a = a^b;// a 0001 b 0101 b = a^b;// a 0001 b 0100 a = a^b;// a 0101 b 0100 a^a = 0 一个数异或任何一个数偶数次值不变
分类: 其他 发布时间: 10-29 21:01 阅读次数: 0

如何优雅地将Token参数转换成userId

在实际项目中,我们往往会发放一个token凭证给前端,前端在每次请求的时候通过请求参数或者请求头将token传给后端进行验证。后端在获得token,验证通过之后会将token转成实际需要的参数,比如userId。 在SrpingBoot项目中,由于在请求参数中
分类: 编程语言 发布时间: 10-29 21:01 阅读次数: 0

【洛谷SP3267】DQUERY - D-query

DQUERY - D-query 题目描述 Given a sequence of \(n\) numbers \(a_{1},a_{2},...,a_{n}\) and a number of d-queries. A d-query is a pair \((i,j)\) \((1 \le i \le j \le n)\). For each d-query \((i,j)\), you have to return the number of distinct elements in t
分类: 其他 发布时间: 10-29 21:01 阅读次数: 0

1029 笔记

目录 操作表 1. 增 列约束 列类型 2.改 1.修改表名 2.添加字段 3.删除字段 4.修改字段 3. 删 4. 查 查看所有表 查询表中列的信息 5. 复制表结构 查看表的创建语句 like 复制 操作数据行 1.增 2.查 查询数据行 按条件查询 between...and...:取值范围是闭区间 distinct 去除重复元素 通过四则运算查询 in() 查询输出指定列 like :模糊查询 3. 改 指定列修改值 4. 删 根据条件删除列 删除表中所有数据 truncate 全选
分类: 其他 发布时间: 10-29 21:01 阅读次数: 0