- 博客(88)
- 资源 (5)
- 收藏
- 关注
原创 MySQL索引失效
索引是一种特殊的数据库结构,由数据表中的一列或多列组合而成,可以用来快速查询数据表中有某一特定值的记录。本节将详细讲解索引的含义、作用和优缺点。通过索引,查询数据时不用读完记录的所有信息,而只是查询索引列。否则,数据库系统将读取每条记录的所有信息进行匹配。可以把索引比作新华字典的音序表。例如,要查“库”字,如果不使用音序,就需要从字典的 400 页中逐页来找。但是,如果提取拼音出来,构成音序表,就只需要从 10 多页的音序表中直接查找。这样就可以大大节省时间。因此,使用索引可以很大程度上提高数据库的查
2022-06-24 07:50:07 258 1
原创 分布式事务 Seata
简介Seata(Simple Extensible Autonomous Transaction Architecture) 是 阿里巴巴开源的分布式事务中间件,以高效并且对业务 0 侵入的方式,解决微服务场景下面临的分布式事务问题。Seata 将为用户提供了 AT、TCC、SAGA 和 XA 事务模式,为用户打造一站式的分布式解决方案。事务(Transaction)是访问并可能更新数据库中各种数据项的一个程序执行单元(unit)。在关系数据库中,一个事务由 一组SQL语句组成。事务应该具有4个属性:原
2022-05-04 14:58:29 328
原创 MySQL三大范式
第一范式(1NF)数据表的每一列都要保持它的原子特性,也就是列不能再被分割。下图不符合第一范式第二范式(2NF)概率:属性必须完全依赖于主键.下图不符合第二范式第三范式(3NF)概念:所有的非主属性不依赖于其他的非主属性,第三范式是第二范式的特殊形态。设X,Y,Z是关系R中互不相同的属性集合,存在X→Y(Y !→X),Y→Z,则称Z传递函数依赖于X。...
2022-04-29 19:12:38 838
原创 SpringBoot 启动原理浅析
1.调用SpringApplication.run启动springboot应用2.使用SpringApplication进行启动3.创建SpringApplication4.启动public ConfigurableApplicationContext run(String... args) { // 用来记录当前springboot启动耗时 StopWatch stopWatch = new StopWatch(); // 就是记录了启动开始时间 stopWatch.star
2022-04-26 20:58:31 732
原创 CopyOnWriteArrayList底层原理
add、setCopyOnWriteArrayList内部也是通过数组进行实现,调用add()或者set()方法时获取原数组,获取原长度,进行复制扩容长度加一,且用了ReentrantLock进行锁定写操作结束之后,会把原数组指向新数组CopyOnWriteArrayList允许写操作时读取数据,大大提高读的性能,适合读多写少的场景,但是CopyOnWriteArrayList会比较占用内存,可能读到的数据不是最新的,所以不适合实时性要求很高的场景。get不涉及加锁操作,读性能很高.
2022-04-13 21:06:36 360
原创 Java对象转xml
代码格式实体类package com.jwttest.demo.toxml;import javax.xml.bind.annotation.*;import java.util.ArrayList;@XmlRootElement(name="person") // 父节点名称@XmlAccessorType(XmlAccessType.FIELD) //定义这个类中的何种类型需要映射到XMLpublic class Person { @XmlElement(name = "n
2022-03-12 13:53:58 4161 2
原创 Bean的创建生命
// userService@Componentpublic class UserService { @Autowired private OrderService orderService; public void userServiceSay(){ System.out.println("1111111111111"); }}@ComponentScan("com.tulingt")public class AppConfig {
2021-12-20 21:03:45 113
原创 volatile关键字解释
volatile关键字volatile在多线程下保证可见性,可见性,是指线程之间的可见性,一个线程修改的状态对另一个线程是可见的volatile底层触发了缓存一致性机制,M:代表已修改(Modified):Cache Block 里面的内容我们已经更新过了,但是还没有写回到主内存里面;E:代表独占(Exclusive):Cache Block 里面的数据和主内存里面的数据是一致的;S:代表共享(Shared):Cache Block 里面的数据和主内存里面的数据是一致的;I:代表已失效(Inva
2021-12-08 21:24:21 302
原创 过滤器与拦截器的区别,以及拦截器的使用
二者区别过滤器基于Servlet容器,应用场景为对字符编码、跨域等问题进行过滤,实现Filter接口拦截器是SpringMVC中实现的一种基于Java反射(动态代理)机制的方法增强工具,拦截器的实现HandlerInterceptor 接口,并实现接口的preHandle、postHandle和afterCompletion方法。编写完拦截器之后,通过一个配置类设置拦截器,并且可以通过addPathPatterns和excludePathPatterns执行哪些请求需要被拦截,哪些不需要被拦截。相
2021-11-24 11:05:50 1129
原创 redis 效率分析
1.1 完全基于内存 Redis完全基于内存,大部分都是简单的存取操作,大量的时间花费在IO上。Redis绝大部分操作时间复杂度为O(1),所以速度十分快。1.2 非阻塞IO、多路IO复用模型 Redis采用多路IO复用模型,在内部采用epoll代理。多路是指多个网络连接,IO复用是指复用同一个线程。epoll会同时监察多个流的IO事件,在空闲时,当前线程进入阻塞,如果有IO事件时,线程会被唤醒,并且epoll会通知线程是哪个流发生了IO事件,然后按照顺序处理,减少了网络IO的时间消耗,避免了大
2021-11-22 13:45:02 982
原创 MySQL执行顺序
FROMONJOINWHEREGROUP BYHAVINGSELECTDISTINCTORDER BYLIMIT这些步骤执行时,每个步骤都会产生一个虚拟表,该虚拟表被用作下一个步骤的输入。这些虚拟表对调用者(客户端应用程序或者外部查询)不可用。只是最后一步生成的表才会返回给调用者。如果没有在查询中指定某一子句,将跳过相应的步骤。SELECT各个阶段分别干了什么:1. FROM阶段FROM阶段标识出查询的来源表,并处理表运算符。在涉及到联接运算的查询中(各种JOIN),主要有.
2021-11-19 17:18:30 104
原创 MySQL 索引
性质 - 索引是帮助MySQL高效获取数据的排好序的数据结构 - 索引数据结构 二叉树 不适合递增的索引,会形成链表形态 红黑树 当数据量很大时,会造成多次io,影响效率 Hash表 B-Tree数据库引擎区别MyISAM: 当数据库引擎为MyISAM时,会以三个文件进行存储,其后缀名分别为 frm 存储数据表结构 MYD 存储数据库基础数据 MYI 存储索引字段 底层查找逻辑,使用索引找到MYI数据然后得到存储的磁盘空间地址进而
2021-11-19 11:50:57 601
原创 redis分布式锁
1.简单分布式锁使用setnx key value,任务执行完毕之后删除即可@RestControllerpublic class RedisController { @Autowired private StringRedisTemplate stringRedisTemplate; @RequestMapping("deleteInventory") public String deleteInventory(){ String lockKey
2021-11-18 17:49:17 871
原创 事务失效的原因
1.没有被spring管理// @Servicepublic class OrderServiceImpl implements OrderService { @Transactional public void updateOrder(Order order) { // update order }}如果此时把 @Service 注解注释掉,这个类就不会被加载成一个 Bean,那这个类就不会被 Spring 管理了,事务自然就失效了。2.方法不是 pu
2021-11-18 15:17:10 334
原创 Java简答理解 设计模式
分类统分为三大类: 1. 创建型模式,共五种:工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式。 2. 结构型模式,共七种:适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、享元模式。 3. 行为型模式,共十一种:策略模式、模板方法模式、观察者模式、迭代子模式、责任链模式、命令模式、备忘录模式、状态模式、访问者模式、中介者模式、解释器模式。设计原则开闭原则:对扩展开发,对修改关闭,达到热拔插的效果,我们需要使用接口和抽象类。里氏代换原则:任何基类可以出现的地方,子
2021-11-18 14:59:08 531
原创 SpringBoot整合Quartz,做到数据库持久化
pom文件引入<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/mav
2021-10-31 00:11:43 778
原创 SpringBoot使用Logback日志
1.删除application.properties中的日志配置**2.resources 中创建 logback-spring.xml **<?xml version="1.0" encoding="UTF-8"?><configuration scan="true" scanPeriod="10 seconds"> <!-- 日志级别从低到高分为TRACE < DEBUG < INFO < WARN < ERROR < FATA
2021-10-19 00:00:18 148
原创 Mybatis 逻辑删除
1.配置逻辑删除插件2.在实体类中增加注解@TableLogic注解参数value = "" 未删除的值,默认值为0delval = "" 删除后的值,默认值为1@TableLogic(value="原值",delval="改值")3.在Controller开始写代码
2021-10-16 17:38:24 701
原创 SpringBoot 统一返回的json时间格式
默认情况下json时间格式带有时区,并且是世界标准时间,和我们的时间差了八个小时,在application.properties中设置#返回json的全局时间格式spring.jackson.date-format=yyyy-MM-dd HH:mm:ssspring.jackson.time-zone=GMT+8...
2021-10-16 17:16:06 489
原创 mybatisPlus 代码生成器
import com.baomidou.mybatisplus.annotation.DbType;import com.baomidou.mybatisplus.annotation.IdType;import com.baomidou.mybatisplus.generator.AutoGenerator;import com.baomidou.mybatisplus.generator.config.DataSourceConfig;import com.baomidou.mybatisplu
2021-10-14 17:58:38 65
原创 django 下载返回文件流
class downMonth(View): def get(self,request): strTime1 = request.GET.get('time') filepath = "{}/searchText/{}.zip".format( settings.BASE_DIR ,strTime1) # 文件所在位置 file = open(filepath, 'rb') response = FileResponse(file)
2021-10-14 17:47:13 923
原创 python 压缩指定文件夹
# 压缩月文件 startdir = "{}/searchText/{}".format(settings.BASE_DIR,strDay[0:10]) # 要压缩的文件夹路径 file_news = startdir + '.zip' # 压缩文件名称 z = zipfile.ZipFile(file_news, 'w', zipfile.ZIP_DEFLATED) for dirpath, dirnames, filenames in os.walk(startdir.
2021-10-12 11:15:28 232
原创 python 返回指定文件下所包含的文件名称(含Windows与Linux)
Windowsimport wmifrom pathlib import Pathimport win32fileimport psutil@xxx.route("/getPath", methods=["GET"])def getPath(): try: get_data = request.args.to_dict() #替换相应的文件路径即可 getPath = get_data.get("path","") if getPath
2021-10-12 10:23:48 385
原创 python添加图片到word文档中
from docx import Documentdoc = docx.Document('23.docx')doc.add_picture('demo.jpg')doc.save('a.docx') #保存图像
2021-10-11 16:56:27 5336
原创 python生成折线图
from pylab import *mpl.rcParams['font.sans-serif'] = ['SimHei'] # 添加这条可以让图形显示中文x_axis_data = ['2020-1-1', '2020-1-2', '2020-1-3', '2020-1-4', '2020-1-5'] # x轴数据y_axis_data = [561,221,389,999,12] # y轴数据# plot中参数的含义分别是横轴值,纵轴值,线的形状,颜色,透明度,线的宽度和标签plt.p
2021-10-11 16:45:12 452
原创 flask 链接数据库 in 查询和保存
代码from json import JSONEncoderfrom flask import Flask, request,send_from_directory#导入第三方连接库from flask_sqlalchemy import SQLAlchemyimport jsonfrom datetime import datetimeimport timefrom flask.json import JSONEncoder as _JSONEncoderfrom flask impo
2021-08-12 14:41:24 662
原创 flask文件下载、数据存储到excel中
代码# 下载接口import pandas as pdfrom flask import Flask, jsonify, request, redirect, render_template, send_from_directory@app.route("/downLoad", methods=["GET"])def downLoad(): get_data = request.args.to_dict() id = get_data.get("id") details =
2021-08-12 14:32:09 573
原创 json去重,将数据库内容导成json形式,并根据某个字段进行去重判定
代码import json# 以json形式打开初始文件with open("xxx.json", 'r', encoding='utf-8') as f: tmp = json.load(f) # 存放不相同的json信息list1 = []# 创建set 利用无序不重复特性set1 = set()# 遍历所有数据,对不重复的title 放入set集合中for i in tmp: set1.add(i['title'])print(len(set1))# 遍历
2021-08-05 09:37:19 305
原创 flask 实现序列化返回
代码from decimal import Decimalfrom json import JSONEncoderfrom bson import ObjectIdfrom flask import Flask, request, jsonify#导入第三方连接库from flask_sqlalchemy import SQLAlchemyimport jsonimport zipfileimport datetimefrom sqlalchemy import create_engi
2021-08-04 11:58:12 980
原创 flask 上传zip文件并解压
代码示例from flask import Flask,requestimport zipfileimport datetime# Flaskapp = Flask(__name__)@app.route("/judge", methods=["POST"])def check(): file = request.files['file'] fileName = file.filename if str(fileName).split('.')[1] != 'zi
2021-08-03 17:17:57 1099
原创 读取excel 并修改
import xlrdwb = xlrd.open_workbook(filename='查院士.xlsx')table = wb.sheets()[0]row = table.nrowsdata_list = []for i in range(1,row): col = table.row_values(i) data_list.append(col[0])print(data_list)# 两院院士wb1 = xlrd.open_workbook(filename='.
2021-07-24 16:27:28 273
原创 Quartz任务调度框架
核心概念1.任务JobJob就是你想要实现的任务类,每一个Job必须实现org.quartz.job接口,且只需实现接口定义的execute()方法2.触发器TriggerTrigger为你执行任务的触发器,比如你想每天定时3点钟发送一份邮件,Trigger将会设置3点进执行任务。Trigger主要包含两种SimpleTrigger和CronTrigger两种。3.调度器SchedulerScheduler为任务的调度器,它会将任务job及触发器Tigger整合起来,负责基于Trigger
2021-07-17 14:32:16 54
原创 Python传递json数据与正常响应数据 springboot传递get请求 区别
python 请求import requests#传递正常响应数据def DeadWith(data,dealtty): dataParams = {"task_id":data[0],"type":data[1],"size":data[2]} url = "http://127.0.0.1:8000/xxxx" # 模型地址 res = requests.get(url, params=dataParams)#传递json数据def get(self,requ
2021-07-16 17:52:08 139
原创 爬虫初学
常见的请求头1.Content-Type 定义网络文件的类型和网页的编码2.Host 主机和端口号3.Connection 链接类型4.upgrade-insecure-requests 升级为HTTPS请求5.User-Agent 浏览器名称6.Referer 页面跳转处,防盗链7.Cookie cookie8.Authorization 表示HTTP协议中需要认证资源的认证信息响应头set-cookie...
2021-06-30 18:04:24 46
原创 Java 视频流分段返回
package com.example.demo.controller;import ch.qos.logback.core.net.SyslogOutputStream;import org.springframework.web.bind.annotation.GetMapping;import org.springframework.web.bind.annotation.RestController;import javax.servlet.http.HttpServletRequest
2021-06-30 11:15:30 1083 1
原创 Python 文件编码格式
f_2 = open('test_1.txt', 'rb') # 注意此处打开方式 'rb'str_1 = f_2.read()chardet_1 = chardet.detect(str_1)print('该字符串为: ', str_1)print('该字符串编码信息为:', chardet_1)print('该字符串编码为: ', chardet_1['encoding'])...
2021-06-28 13:48:57 125
原创 django分页查询
分页管理# 分页管理class pageManagement(View): def get(self, request): try: page = int(request.GET.get('page', '1')) size = int(request.GET.get('size', '3')) startPage = 0 if page == 1: s
2021-06-25 15:38:27 287
sorl的安装与配置详解.pdf
2020-10-02
redis安装与配置.pdf
2020-10-01
linux初级配置与安装
2020-09-25
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人