MySQL解决并发事务带来的问题--锁

事务相关:MySQL事务的隔离级别与MVCC详解一、锁事务并发执行时可能带来的各种问题,并发事务访问相同记录的情况大致可以划分为3种:读-读情况:即并发事务相继读取相同的记录。写-写情况:即并发事务相继对相同的记录做出改动。读-写或 写-读情况:也就是一个事务进行读取操作,另一个进行改动操作。1. 脏写问题在写-写情况下会发生脏写问题,而任何一种隔离级别都不允许这种问题的发生。所以在多个未提交事务相继对一条记录做改动时,需要让它们排队执行,这个排队的过程其实是通过锁来实现的。这个所谓的锁其
分类: 企业开发 发布时间: 04-27 14:43 阅读次数: 0

MySQL事务的隔离级别与MVCC详解

一、事务的隔离级别先创建一个表:#主键命名为number,而不是id,是想和后边要用到的事务id做区别CREATE TABLE hero (number INT,name VARCHAR(100),country varchar(100),PRIMARY KEY (number)) Engine=InnoDB CHARSET=utf8;INSERT INTO hero VALUES(1, '刘备', '蜀');对于同一个服务器来说,可以有若干个客户端与之连接,每个客户端与服务器连接上
分类: 企业开发 发布时间: 04-27 14:43 阅读次数: 0

MySQL解决并发事务带来的问题--锁--锁的内存结构

上篇:MySQL解决并发事务带来的问题–锁InnoDB锁的内存结构对一条记录加锁的本质就是在内存中创建一个锁结构与之关联,那么是不是一个事务对多条记录加锁,就要创建多个锁结构呢?如果一个事务要获取10000条记录的锁,就要生成10000个这样的结构,开销就太大了。InnoDB在对不同记录加锁时,如果符合下边这些条件,那么这些记录的锁就可以被放到一个锁结构中:在同一个事务中进行加锁操作被加锁的记录在同一个页面中加锁的类型是一样的等待状态是一样的锁所在的事务信息:哪个事务生
分类: 企业开发 发布时间: 04-27 14:43 阅读次数: 0

redis数据结构与对象--常见问题

文章目录1. redis中5种数据类型的编码方式是什么?2. 为什么redis不共享包含字符串的对象?3. 为什么有序集合需要同时使用跳跃表和字典来实现?4. 有序集合同时使用跳跃表和字典会浪费内存吗?5. redis是怎样实现内存回收的?1. redis中5种数据类型的编码方式是什么?①STRING(字符串对象):int、raw、embstrint 编码:值可以用 long 类型保存的整数raw 编码:值可以用 long double 类型保存的浮点数embstr 编码:(只读,修改时需转化为
分类: 企业开发 发布时间: 04-27 14:43 阅读次数: 0

JUC---线程间定制化通信

此博客案例来自尚硅谷JUC视频一、线程间的通信实现两个线程(AA、BB),使得AA线程+1,BB线程-1package com.jess.sync;/** * @program: JUC * @description: 线程间的通信 * @author: Jess * @create: 2021-07-23 13:48 **///第一步 创建资源类,定义属性和操作方法class Share { //初始值 private int number = 0; //.
分类: 企业开发 发布时间: 04-27 14:43 阅读次数: 0

JUC中集合的线程安全吗?

一 、集合的线程不安全举例ArrayList中的add方法并没有synchronized关键字,是线程不安全的,源码如下:演示:package com.jess.sync;import java.util.*;import java.util.concurrent.ConcurrentHashMap;import java.util.concurrent.CopyOnWriteArrayList;import java.util.concurrent.CopyOnWriteArraySet;
分类: 企业开发 发布时间: 04-27 14:43 阅读次数: 0

java集合源码分析①----ArrayList

ArrayList集合ArrayList底层就是一个长度可以动态调整的Object数组有一个记录数组长度的size字段数组是默认长度是10,还准备有一个空的数组。ArrayList有一个父类,并实现了List等多个接口(RandomAccess, Cloneable, java.io.Serializable接口中一个方法也没有)无参创建:ArrayList list = new ArrayList();JDK1.7中,使用无参数构造方法创建ArrayList对象时,默认底层数组长度
分类: 企业开发 发布时间: 04-27 14:43 阅读次数: 0

java集合源码分析②----LinkedList添加元素的过程

LinkedList底层是一个双向链表由下图源码看看出LinkedList实现了Deque接口,所以LinkedList还可以作为队列和栈来使用。静态内部类Node,表示双向链表的结点:LinkedList添加元素的过程(add过程)final Node l = last; //当前节点的最后一个节点final Node newNode = new Node<>(l, e, null); 定义新节点示例: LinkedList<String> list =
分类: 企业开发 发布时间: 04-27 14:43 阅读次数: 0

深入理解java中volatile的特性

一、 对volatile的理解1. volatile是java虚拟机提供的轻量级的同步机制。保证可见性不保证原子性禁止指令重排保证可见性什么是可见性?JMM(java内存模型)JMM是一个抽象的概念本身不存在,它描述的是一组规范,通过这组规范定义了程序中各个变量的访问方式。可见性原子性有序性由于JVM运行程序的实体是线程,而每个线程创建时JVM都会为其创建一个工作内存(有些地方称为栈空间),工作内存是每个线程的私有数据区域,而Java内存模型中规定所有变量都存储在主内存,
分类: 企业开发 发布时间: 04-27 14:43 阅读次数: 0

最新版学习通下载章节中的pdf

找到想要下载的pdf界面打开开发者模式(F12)找到网络(network)点击刷新按钮刷新页面,获取包筛选XHR找到包中名称带有flag的包将pdf后的地址复制到地址栏即可下载
分类: 企业开发 发布时间: 04-27 14:43 阅读次数: 0

juc--并发编程的核心问题总结①

文章中表明星号的地方说明是需要重点掌握的一、juc基础知识1. 什么是jucjava.util.concurrent (juc是包名的简写)在并发编程中使用的工具类,是关于并发编程的API。2. 线程和进程线程是程序执行的最小单位,而进程是操作系统分配资源的最小单位。一个进程由一个或多个线程组成,线程是一个进程中代码的不同执行路线。线程上下文切换比进程上下文切换要快得多。进程之间相互独立,但同一进程下的各个线程之间共享程序的内存空间(包括代码段,数据集,堆等)及一些进程级的资源,某进程.
分类: 企业开发 发布时间: 04-27 14:43 阅读次数: 0

juc--并发编程的核心问题总结②

接上篇 juc–并发编程的核心问题总结①一、读写锁ReadWriteLock
分类: 企业开发 发布时间: 04-27 14:43 阅读次数: 0

Fork/Join的使用与原理解析

一、什么是ForkJoinJava 7开始引入了一种新的Fork/Join线程池,它可以把一个大任务拆成多个小任务并行执行,然后汇总每个小任务的执行结果得到这个大任务的最终结果。Fork/Join任务的原理:判断一个任务是否足够小,如果足够小则直接计算,否则,就分拆成几个小任务分别计算。fork():在当前线程运行的线程池中创建一个子任务;join():模块子任务完成的时候返回任务结果;二、工作窃取大任务被分割为独立的子任务,并且子任务分别放到不同的队列里,并为每个队列创建一个线程来执行队列里
分类: 企业开发 发布时间: 04-27 14:43 阅读次数: 0

juc--并发编程的核心问题总结③

接上篇 juc–并发编程的核心问题总结②一、异步回调1. 什么是异步回调我们平时最常见的是同步回调,同步回调是会阻塞的,单个的线程需要等待结果的返回才能继续执行。假设有两个任务A和B,A任务中需要使用B任务计算成果,有两种方法实现:A和B在同一个线程中顺序执行。即先执行B,得到返回结果之后再执行A。A和B并行执行。当A需要B的计算结果时如果B还没有执行完,A可以先做其他的工作,避免阻塞,过一段时间后再询问一次B。我们可以直接在A中写一个方法对B处理完的结果进行处理,然后B处理完之
分类: 企业开发 发布时间: 04-27 14:43 阅读次数: 0

常见的设计模式详解

设计模式的类型模式可以分为三大类:创建型模式、结构型模式、行为型模式。GoF的23种设计模式:设计模式的七大原则1、开闭原则(Open Close Principle)开闭原则的意思是:对扩展开放,对修改关闭。在程序需要进行拓展的时候,不能去修改原有的代码,实现一个热插拔的效果。简言之,是为了使程序的扩展性好,易于维护和升级。想要达到这样的效果,我们需要使用接口和抽象类,后面的具体设计中我们会提到这点。2、里氏代换原则(Liskov Substitution Principle)里氏代换
分类: 企业开发 发布时间: 04-27 14:43 阅读次数: 0

pyhton读取.conf和.ini文件

没啥可说的,比较简单,直接上demo:conf.conf文件:[info]name=zhangsanage=20class=3年1班addr=火星phone=10086[score]yuwen=99shuxue=99yingyu=98[test]num=13conf.ini文件:[info]name=lisiage=20class=3年2班addr=水星phone=10000[score]yuwen=98shuxue=98yingyu=99[tes
分类: 企业开发 发布时间: 04-27 14:43 阅读次数: 0

排序算法(一):冒泡排序详解

前言: 最近换工作,面试稍微大一点的厂都会被问到算法和数据结构这块知识,得空自己总结一下吧,总结不到位希望大佬指正哈。情景记忆: 其实冒泡排序学校都学烂了的,但是很奇怪的是为什么有些时候过一段时间就会忘记实现逻辑呢?那是没有经常使用,说实话工作中一般不会用到的,但是我们可以用场景记忆把他刻在脑中:你只要又一些生活小常识就可以记得很牢固了,把它比喻为鱼吐泡泡的场景,鱼在水底下吐的泡泡刚吐出来的时候是很小的,随着气泡的上升,气泡就会越来越大,最终浮出水面破掉;这个场景就十分像我们的冒泡排序从小到大排序的思维了
分类: 企业开发 发布时间: 04-27 14:43 阅读次数: 0

排序算法(二):选择排序详解

前言: 最近换工作,面试稍微大一点的厂都会被问到算法和数据结构这块知识,得空自己总结一下吧,总结不到位希望大佬指正哈。情景记忆: 选择排序其实蛮好记的,看排序的名称就很容易联想,“选择”是这个排序的核心思想,那选择的时候是怎么选择的呢,其实要记住这个排序你就联想择优或者淘汰机制就很容易记住:择优是从一堆参差不齐的同种物品中选择最好的,比如有一对苹果,有大有小,我们择大而食;淘汰就是从一堆参差不齐的物品中淘汰最烂的,比如还是有一堆苹果,这次是腐烂程度不同的苹果或者快要腐烂,我们要从中选择腐烂程度最大的苹果丢
分类: 企业开发 发布时间: 04-27 14:43 阅读次数: 0

python处理时间的工具

说明: 这是一个处理时间的工具类,开发中又遇到时间处理问题会不断积累完善。class TimeTool(object): def __init__(self): pass def seconds_to_time(self, sec): """ 把秒数转换为时间格式 :param sec: 秒数 :return: str """ m, s = divmod(sec, 60)
分类: 企业开发 发布时间: 04-27 14:43 阅读次数: 0

密码学(一):RSA加密长文

简介:RSA简介: RSA加密是一种非对称加密,至于它底层实现比较复杂,说实话我说不清楚可能把你带沟里去了,感兴趣的同学可以去看看这篇博文:点击这里,今天我们要说的不是他的实现原理,你们用RSA进行一次性加密长文是无法实现的,我们今天重点的话题是用它加密长文!!!RSA组成:RSA是由公钥和私钥组成的一对密钥,密钥分成公钥和私钥,公钥是公开的而私钥自己持有的,私钥是用来加密的,加密后的内容叫做密文,公钥是给别人用来对你加密后的密文进行解密,解密后的内容叫做明文。正文:一、生成密钥代码:.
分类: 企业开发 发布时间: 04-27 14:43 阅读次数: 0