- 博客(49)
- 资源 (2)
- 收藏
- 关注
原创 从零开始:在flask中使用mongodb
MongoDB之python简单交互(三) - pymongo, flask-pymongo, flask-mongoengine三者使用对比简介:https://www.cnblogs.com/cwp-bg/p/9473144.html。pymongo本身是线程安全的,但是进程不安全:https://pymongo.readthedocs.io/en/stable/faq.html#id1。flask-pymongo文档:https://flask-pymongo.readthedocs.io/
2023-06-16 22:16:04
1640
6
原创 线程死锁预防解除检测,Java线程中断(interrupt)机制,为什么synchronized不可中断,死锁的解决方案
Java的中断是一种协作机制,也就是说通过中断并不能直接中断另外一个线程,而需要被中断的线程自己处理中断。在Java的中断模型中,每个线程都有一个boolean标识,代表着是否有中断请求(该请求可以来自所有线程,包括被中断的线程本身)。例如,当线程t1想中断线程t2,只需要在线程t1中将线程t2对象的中断标识置为true,然后线程2可以选择在合适的时候处理该中断请求,甚至可以不理会该请求,就像这个线程没有被中断一样。上面提到加的锁不能被中断,为什么呢?首先中断操作是Thread类调用。
2023-04-08 00:56:59
562
原创 docker 搭建 nginx 部署前端项目
本文主要介绍如何使用docker安装nginx,以及如何将前端打包好的vue项目部署到nginx上。–name nginx-test:容器名称(自定义的)-p 8080:80:端口进行映射,将本地 8080 端口映射到容器内部的 80 端口。-d nginx:设置nginx容器在后台一直运行。
2023-01-04 19:35:51
1828
原创 SpringBoot2.x配置文件使用占位符的几种方式
在实际部署应用程序时,有很多通过命令行参数方式实现配置是动态,不过SpringBoot所提供的配置参数名称都比较长,对此我们完全可以利用占位符配置方式实现自定义参数名。中,因此也就实现了占位符动态配置,其实这个“短”的含义,是你定义的新的配置名称比较短而已。像上图红色标注的,都会被完整的替换为根目录,这样在安装项目时,只需修改一处就行了。是一种灵活的配置方式,可以让我们很灵活的使用配置参数,这种方式可以从。内读取对应的配置值,而命令行参数在应用程序启动时会被一并加入到。的配置值,这样我们在系统中通过。
2022-12-29 20:21:22
1179
原创 springboot java jna(jni) 基于SDK对接海康威视设备
需要用到jna框架什么是jna?jna和jni的区别的什么java开发过程中会遇到需要调用c/c++动态库(windows平台的dll和linux平台的so)的情况,可以使用JNI或者JNA技术。JNA基于JNI技术开发,主要在上层作了类型自动转换的封装,让开发人员极易使用,无需JNI那样的繁杂的接口层开发。。JNI和JNA调用的不是同一个dll,但是功能和代码基本相同。
2022-11-01 23:25:41
1741
转载 深度详解Nginx正向代理与反向代理
它的工作原理就像一个跳板,简单的说,我是一个用户,我访问不了某网站,但是我能访问一个代理服务器,这个代理服务器呢,他能访问那个我不能访问的网站,于是我先连上代理服务器,告诉他我需要那个无法访问网站的内容,代理服务器去取回来,然后返回给我,从网站的角度,只在代理服务器来取内容的时候有一次记录,有时候并不知道是用户的请求,也隐藏了用户的资料,这取决于代理告不告诉网站。C真实房东(服务端)只知道房子租给了B房产中介(代理),并不知道A租房人(客户端)租了自己的房子。A租房人(客户端)要租B房产中介(代理)的房。
2022-10-25 23:47:31
12668
原创 spring事务和数据库事务的关系和相关知识总结(拓展:redis事务)
首先,事务这个概念是数据库层面的,数据库事务和spring事务本质上其实都是同一个概念,spring的事务是对数据库的事务的封装,最后本质的实现还是在数据库,假如数据库不支持事务的话,spring的事务是没有作用的。数据库的事务说简单就只有开启,回滚和关闭,spring对数据库事务的包装,原理就是拿一个数据连接,根据spring的事务配置,操作这个数据连接对数据库进行事务开启,回滚或关闭操作。但是spring除了实现这些,还配合spring的传播行为对事务进行了更广泛的管理。
2022-09-17 02:29:32
2061
1
原创 雪花算法⽣成ID传到前端之后精度丢失问题
前段时间和前端联调的时候,发现前端收到的ID和传过去的ID不⼀致,⽐如数据库⾥的ID为1044297632316526592,传到前端就变成1044297632316526600;服务器端实体类属性id类型为Long型,使⽤的是mongodb数据库,这都没什么问题。出现这种问题的原因是,前端JS导致的id精度丢失的问题,前端JSON字符串转js对象,接收Long类型的是Number,Number精度是16位(雪花ID是19位),JS的Number数据类型导致精度丢失。解决办法:直接使⽤@.
2022-05-17 13:42:51
2641
原创 【数据库】【踩坑记录】SQL匹配条件不起作用怎么回事?----SQL左连接,右连接和内连接的条件放置位置
实际很多时候写代码写的都是业务代码,业务代码又以SQL最为常见。根据业务我们会设置很多关于连接的地方,左连接,右连接,内连接的使用不当很可能导致SQL达不到预期,可能给人感觉“SQL执行只走了一半”或者“中间有的地方跳过去,条件没有匹配返回的结果集是错误的”一 、问题首先要知道左连接 右连接 内连接区别我们以左连接作为例子,A left join B ———-》A B 左连接,也就是左边的变为主表 也就是A的数据全数取出,能跟B对应得上,B表的扩展数据也跟着展示出来,A有B没有的,B表的扩展字段也展
2022-04-13 19:34:00
1321
原创 【数据库】SQL 语句学习
Sql语句也可参考:SQL语句大全实例sql语句大全+实例讲解SQL查询语句大全(大佬总结,必看)如何把一个查询结果当作一个临时表来查询?( select 字段 from 临时表 重命名表 )SELECT count( Sno ) FROM ( SELECT Sno FROM sc GROUP BY Sno ) a查询年龄不中20-23之间的学生姓名,系别,年龄( between … and … )select Sname,Sdept,Sage from studentwhere S
2022-02-28 11:24:33
4654
转载 【数据库】数据库的锁机制及原理
图画错了,排它锁是写锁,共享锁是读锁。这边文章主要是总结一些比较好的文章对于数据库锁机制及原理的分析。数据库锁:首先引用一张其他博主的图:下面我就针对这图中的锁逐一进行一下解释:悲观锁:数据库总是认为多个数据库并发操作会发生冲突,所以总是要求加锁操作。悲观锁主要表锁、行锁、页锁。乐观锁:数据库总是认为多个数据库并发操作不会发生冲突,所以总是不加锁操作。所以在数据进行提交更新的时候,才会正式对数据的冲突与否进行检测,如果发现冲突了,则让返回用户错误的信 息,让用户决定如.
2022-02-28 00:23:24
1135
转载 【数据库】幻读与不可重复读
文章目录MySql幻读Oracle不可重复读幻读版权声明:本文为博主原创文章,未经博主允许不得转载。微信公众号:JoonWhee,欢迎关注。 https://blog.csdn.net/v123411739/article/details/39298127MySqlMySql 默认的隔离级别为Repeatable Read,因此只会出现幻读的情况。幻读事务在插入已经检查过不存在的记录时,惊奇的发现这些数据已经存在了,之前的检测获取到的数据如同鬼影一般。例子:在事务1中,查询User表id为1的
2021-12-22 17:41:10
461
原创 【狂神说Java】JUC并发编程视频教程 章节简介和注意点
导读与注意点:P5、Lock锁,介绍了公平锁与非公平锁。P6、synchronized和lock区别P7、synchronized版的生产者消费者问题。P8、lock版的生产者消费者问题。P10、八锁现象******P11、12、CopyOnWrite 写入时复制思想P15-17、常用工具类:CountDownLatch、CyclicBarrier、SemaphoreP5、Lock锁,介绍了公平锁与非公平锁。有一个线程执行任务需要3h,另一个只需3s,用非公平好还是公平好?肯定非公平好,不然我一个3s就
2021-12-22 12:27:03
807
转载 【JVM】String 常量池与 JVM 字符串常量池的垃圾回收
转载自http://blog.csdn.net/xsf50717,做了一点修改补充。1、String 常量池为了减少在JVM中创建的字符串的数量,字符串类维护了一个字符串池,每当代码创建字符串常量时,JVM会首先检查字符串常量池。如果字符串已经存在池中,就返回池中的实例引用。如果字符串不在池中,就会实例化一个字符串并放到池中。Note:常量池在java用于保存在编译期已确定的,已编译的class文件中的一份数据。它包括了关于类,方法,接口等中的常量,也包括字符串常量,如String s = "java
2021-12-13 15:31:46
3485
9
原创 Docker安装redis、nacos、rabbitmq、nginx、ftp、mongodb
https://blog.csdn.net/weixin_42456466/article/details/87270959补充:docker exec -it myredis /bin/bash可进入正在运行的容器进入之后:redis-cli如果设置了密码别忘了auth “yourpassword”
2021-12-05 00:30:55
3750
转载 【数据库】数据库中事务的隔离级别(读未提交、读已提交、重复读、可串行化)
按照隔离的级别由低到高,越高的隔离,效率越差0)、DEFAULT 默认隔离级别,由数据库的数据隔离级别确定隔离级别1)、READ_UNCOMMIYTTED 都未提交的 级别最低允许别的事务,去读取这个事务为提交之前的数据缺点:可能会造成脏读、幻读、不可重复读。例子讲解:店家对1000元商品进行降价500处理,数据更改,但未提交事务;然后你查到降价将货物并提交订单; 可是商家由于操作异常,数据回滚,返回原价格1000;这样,在店家那边是没有操作成功的,可是在你这里却得到了降价货物订单。可理解为
2021-11-20 16:02:39
807
原创 【狂神说Java】Spring教程视频 章节简介(概括)
3、理论推导,通过set方法实现对象的创建由控制层(程序员控制)到测试类(用户控制)4、讲些理论。(控制反转是一种通过描述(XML或注解)并通过第三方去生产或获取特定对象的方式。在Spring中实现控制反转的是IOC容器,其实现方式是依赖注入(DI))5、第一个spring,讲些参数(value:普通属性值,ref:引入容器中已经创建好的对象),然后将p3的例子用spring实现6、无参和有参构造构造器注入,容器,容器中的对象已经事先创建好存放在容器中了,默认是单例模式(容器中只实例化一个对象)。只要
2021-11-12 20:39:54
91
原创 【Java基础】Java常用基础知识(二)
==和equals的区别IntegerInteger的对象缓存机制自动拆装箱==和equals的区别== 对比的是栈中的值,基本数据类型是变量值,引用类型是堆中内存对象的地址。equals:object 中默认也是采用 == 比较,可以重写,也通常会进行重写。Objectpublic boolean equals(Object obj) { return (this == obj); }Stringpublic boolean equals(Object anObject) { .
2021-10-31 17:23:16
232
原创 【Java基础】HashMap和ConcurrentHashMap详细笔记
一、HashMap 集合简介二、HashMap 集合底层的数据结构2.1 存储数据的过程2.3 面试题三、HashMap继承关系四、HashMap 集合类的成员4.1 成员变量4.1.1 serialVersionUID4.1.2 DEFAULT_INITIAL_CAPACITY4.1.3 DEFAULT_LOAD_FACTOR4.1.4 MAXIMUM_CAPACITY4.1.5 TREEIFY_THRESHOLD4.1.6 UNTREEIFY_THRESHOLD4.1.7 MIN_TREEIFY_CA.
2021-10-30 02:18:07
2603
转载 【Java基础】类实例调用静态方法(Java)
前言类实例调用静态方法总结前言第一次看到在Java中可以通过类实例调用静态方法,当然不推荐这么做,避免出现意想不到的问题,接下来会讲到,但是在C#中通过类实例调用静态方法在编译时就不会通过,这里做下记录。类实例调用静态方法首先我们来看一个简单的例子说明为何不能通过类实例调用静态方法,我们知道未实例化的对象去调用对应方法或者字段时会抛出空指针异常,比如如下:public static void main(String[] args) { Object o = null; Syste.
2021-10-28 15:30:30
1895
转载 【JVM】Java双亲委派机制及作用
什么是双亲委派机制当某个类加载器需要加载某个.class文件时,它首先把这个任务委托给他的上级类加载器,递归这个操作,如果上级的类加载器没有加载,自己才会去加载这个类。类加载器的类别BootstrapClassLoader(启动类加载器)c++编写,加载java核心库 java.*,构造ExtClassLoader和AppClassLoader。由于引导类加载器涉及到虚拟机本地实现细节,开发者无法直接获取到启动类加载器的引用,所以不允许直接通过引用进行操作ExtClassLoader (标准扩展类
2021-10-25 00:49:53
163
原创 【Java基础】Java 常用集合框架
ArrayListLinkedListHashSetHashMapIterator(迭代器)Java 集合框架图ArrayListArrayList 类是一个可以动态修改的数组,与普通数组的区别就是它是没有固定大小的限制,我们可以添加或删除元素。ArrayList 继承了 AbstractList ,并实现了 List 接口。ArrayList 类位于 java.util 包中,使用前需要引入它,语法格式如下:import java.util.ArrayList; // 引入 ArrayList.
2021-09-23 17:25:42
442
转载 UML类图
1.类图基础属性-表示private#表示protected~表示default,也就是包权限_下划线表示static斜体表示抽象2.类与类之间关系在UML类图中,常见的有以下几种关系: 泛化(Generalization), 实现(Realization),关联(Association),聚合(Aggregation),组合(Composition),依赖(Dependency)2.1泛化介绍:泛化(Generalization)表示类与类之间的继承关系,接口与接口之间的继承关
2021-09-14 17:33:01
672
原创 2021年高教社杯全国大学生数学建模竞赛题目 C题 思路方法
C 题 生产企业原材料的订购与运输某建筑和装饰板材的生产企业所用原材料主要是木质纤维和其他植物素纤维材料,总体可分为 A,B,C 三种类型。该企业每年按 48 周安排生产,需要提前制定 24 周的原材料订购和转运计划,即根据产能要求确定需要订购的原材料供应商(称为“供应商”)和相应每周的原材料订购数量(称为“订货量”),确定第三方物流公司(称为“转运商”)并委托其将供应商每周的原材料供货数量(称为“供货量”)转运到企业仓库。该企业每周的产能为 2.82 万立方米,每立方米产品需消耗 A 类原材料
2021-09-09 18:09:45
9006
2
原创 vue-cli脚手架3.0前后版本切换万能方法
3.0以下 ==> 3.0以上npm uninstall -g vue-clinpm install -g @vue/clinpm i npm -gnpm i @vue/cli -gcnpm i @vue/cli -g3.0以上 ==> 3.0以下npm uninstall -g @vue/clinpm install -g vue-clinpm i npm -gnpm i vue-cli -gcnpm i vue-cli -g
2021-08-06 12:26:27
227
原创 mybatis-plus代码生成器快速入门使用与详解
一般需要修改的地方都用*在注释后面标识了package com.liaojy.demo;import com.baomidou.mybatisplus.annotation.DbType;import com.baomidou.mybatisplus.annotation.IdType;import com.baomidou.mybatisplus.generator.AutoGenerator;import com.baomidou.mybatisplus.generator.config.D
2021-07-07 20:22:28
224
原创 git拉代码、上传代码到仓库、readme.md设置图片、疑难杂症、常用操作
文章目录准备工作:git上拉代码下来:上传代码到自己的git仓库:readme.md设置图片准备工作:1、进入 C:\Users\Administrator.ssh文件中,右键进入bash2、分别生成两个平台的key$ ssh-keygen -t rsa -C "xxxx@email.com" -f "github_id_rsa"$ ssg-keygen -t rsa -C "xxxx@email.com" -f "gitee_id_rsa"如果不填什么信息,就一直摁回车就好完成后,会在 C
2021-06-25 13:34:30
2497
原创 【软件设计师】下午题总结
下午的试题,除了掌握对应的知识点外,也要掌握一些解题技巧,因为下午的题型的比较固定的。试题一试题一主要是要阅题认真细心,没有太多固定的方法和技巧,能不能做好该题细心读懂说明中的描述很重要,提高的有效办法是多做些题。方法技巧建议:在加工的描述文字上用数字标记每一个加工的数据流。在0层数据流图中进行一一对应和标注问题1:一般是固定的题型,用说明中的词语给出图中实体En~Em的名称。问题2:一般是固定的题型,用说明中的词语给出图中数据存储Dn~Dm的名称。问题1和问题2可以先在说明中标出所有实
2021-05-20 23:46:20
2832
原创 【软件设计师】杂随记
SOME海明码:活动图内聚性软件开发模型域名的解析顺序软件测试数据流图UML图23种设计模式记得有些要加1的坑存储器 1B(字节)=8bit(位)(也就是一个字节包含8位二进制数字) 字=字长32位计算机中,一个字长等于32位,一个字节是8位,所以从长度来说一个字长等于4个字节,即32bit。海明码:2^r >= m+r+1(m是信息位的位数,r是校验位的位数)异或操作:异或逻辑的关系是:当AB不同时,输出P=1;当AB相同时,输出P=0。“⊕”是异或数学运算符号,异或逻辑也是与或非逻辑
2021-05-10 23:42:13
429
原创 【软件设计师】数据结构与算法
数据结构与算法数组稀疏矩阵线性表顺序存储与链式存储对比队列与栈广义表树树与二叉树满二叉树与完全二叉树二叉树的遍历反向构造二叉树树转二叉树查找二叉树(排序二叉树)最优二叉树(哈夫曼树)线索二叉树平衡二叉树图邻接矩阵邻接表图的遍历拓扑排序图的最小生成树算法查找顺序查找二分查找(折半查找)散列表排序数组a+(2*5+3)*2a+(14-1)*2(没有用公式的方法)稀疏矩阵线性表顺序存储与链式存储对比顺序存储结构:优点1:存储密度大,空间利用度高,比链式存储节约空间优点2:存储操作上方便操作
2021-05-10 23:28:17
472
原创 【软件设计师】程序设计语言与语言处理程序
程序设计语言与语言处理程序编译过程文法的定义及语法推导树有限自动机与正规式表达式:中缀式、后缀式、前缀式编译过程文法的定义及语法推导树待补充有限自动机与正规式待补充表达式:中缀式、后缀式、前缀式中缀式是一个通用的算术或逻辑公式表示方法, 操作符是以中缀形式处于操作数的中间(例:3 + 4),中缀表达式是人们常用的算术表示方法。后缀式逆波兰式,这种表示方式把运算符写在运算对象的后面,例如,把a+b写成ab+,所以也称为后缀式。这种表示法的优点是根据运算对象和算符的出现次序进行计算,不需
2021-05-10 23:09:46
381
原创 【软件设计师】计算机网络
计算机网络OSI/RM七层模型IP地址与子网划分信息系统安全属性(对称与非对称加密、数字签名、信息摘要等)网络安全其它OSI/RM七层模型网络层和网络层之后的设备就不是在同一个局域网了DHCP协议:动态分配ip地址DNS协议:域名转ip地址IP地址与子网划分常见对称加密算法:DES、3DES、AES、RC-5、IDEA常见非对称加密算法:RSA、Elgamal、ECC直接看视频:https://www.bilibili.com/video/BV1rW411j7e7?p=64信息系统安
2021-05-10 22:54:34
182
原创 【软件设计师】计算机组成与体系结构
计算机组成与体系结构CPU复杂指令系统和精简指令系统流水线存储器磁盘工作系统可靠性分析—串联系统与并联系统海明校验码CPUCPU由运算器和控制器组成复杂指令系统和精简指令系统流水线流水线计算:流水线周期为执行时间最长的一段流水线计算公式为:1、理论公式(通常用这个):1条指令执行时间+(指令条数-1)*流水线周期2、实践公式:(指令段数+指令条数-1)*流水线周期吞吐率:流水线加速比:流水线效率:例题:存储器1B(字节)=8bit(位)(也就是一个字节包含8
2021-05-10 22:45:46
303
原创 【软件设计师】操作系统
操作系统进程状态PV操作存储管理页式存储、段式存储、段页式存储页面淘汰算法文件管理索引文件结构树型目录结构位示图法虚设备和spooling技术进程状态一个进程被唤醒意味着进程变为就绪状态。PV操作存储管理页式存储、段式存储、段页式存储页式存储例题:4K=2^12 (1k=k=2^10=1024)所以页内地址占12位,还有4位是页号页面淘汰算法1、最优算法2、随机算法3、先进先出算法(FIFO):有可能产生“抖动”。例如,分配4个页面资源给它的缺页次数比分配3个页面资源的缺页
2021-05-10 22:21:09
274
原创 【软件设计师】数据库系统
数据库系统三级模式两级映射E-R模型关系代数规范化理论键求候选键范式模式分解数据库并发控制三级模式两级映射可以这么理解:三层模式体系结构外模式:是用户与数据系统的接口,是用户到的那部分数据的描述。逻辑模式:是数据库中全部数据的整体逻辑结构的描述。内模式:是数据库在物理存储方面的描述,定义所有内部记录类型、索引和文件的组织方式,以及数据控制方面的细节。两级映像外模式/逻辑模式映像:存在于外模式于逻辑模式之间,用于定义外模式和逻辑模式之间的对应性。一般在外模式中描述。逻辑模式/内模式映像:
2021-05-09 17:24:12
253
原创 Linux 系统目录结构详解
树状目录结构:以下是对这些目录的解释:系统启动必须:/boot:存放的启动Linux 时使用的内核文件,包括连接文件以及镜像文件。/etc:存放所有的系统需要的配置文件和子目录列表,更改目录下的文件可能会导致系统不能启动。/lib:存放基本代码库(比如c++库),其作用类似于Windows里的DLL文件。几乎所有的应用程序都需要用到这些共享库。/sys: 这是linux2.6内核的一个很大的变化。该目录下安装了2.6内核中新出现的一个文件系统 sysfs 。sysfs文件系统集成了下面3种文
2021-04-23 16:35:37
162
转载 org.apache.ibatis.binding.BindingException: Parameter ‘id‘ not found.Available parameters are [0, 1
springboot异常:org.apache.ibatis.binding.BindingException: Parameter ‘id’ not found. Available parameters are [0, 1, param1, param2]解决办法:错误写法:public Dept getByIdAndDname(Integer deptno,String dname);正确写法:public Dept getByIdAndDname(@Param(“deptn
2021-03-31 20:49:42
5833
1
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人