- 博客(24)
- 收藏
- 关注
原创 mysql事务知识点总结(InnoDB)
事务的四大特性原子性:一个事务中的操作,要么全都完成,要么全都不完成。如果事务在执行过程中发生了错误,将会被回滚(rollback),就好像从来没有发生过一样。一致性:事务完成后,数据库的完整性没有被破坏。它关注的方面不仅有主键约束、外键约束等等必须要实现的约束,还有更多业务逻辑上的一致性。举个例子,张三转账给李四,张三的账户上少了100,李四的账户上多了100,那么张三少了100而李四多了1...
2020-04-04 22:48:24
232
原创 mysql中的锁 常见问题和总结(innodb)
死锁及其案例我们知道,操作系统中的死锁是“占有并等待”,也就是一个线程占有资源A而等待资源B,另一个线程则占有资源B并等待资源A。mysql中的死锁也是同理。假设一个事务锁定了行A同时需要对行B进行操作,而另一个事务锁定了行B同时需要对行A进行操作,那么就会发生死锁。死锁案例: 将投资的钱拆成几份随机分配给借款人。投资人投资后,将金额随机分为几份,然后随机从借款人表里面选几个,然后通过一条条...
2020-03-30 17:55:15
285
原创 mysql innodb索引总结
innodb索引数据结构基础数据结构:B+树innodb索引是一个B+树的结构。我们知道,B树是一个用各种旋转法则来维持平衡(就是整棵树看着很匀称,没有某一个分支特别长或者特别短的局面)的一种多叉树,而B+树就是在此基础上,把所有的叶子节点用双向循环链表连起来。具体如此:B+树为了维持平衡,在插入和删除时会做多种旋转操作,比如说插入操作:删除操作:这里的填充因子最小是50%,什么意...
2020-03-29 21:01:32
237
原创 二叉树的四种遍历方式(递归和非递归)
这篇文章的目的只是整理几个常用的二叉树递归/非递归遍历的模板函数,方便用到的时候凭借记忆写出来即可。内容没多少技术含量,写给自己看的,权当参考。前序遍历递归:很简单,按照根左右的逻辑访问就是。public List<Integer> preorderTraversal(TreeNode root){ List<Integer> res = new Ar...
2020-03-11 15:18:28
421
原创 synchronized专场
synchronized和lock都是java中常用的同步机制。但不得不说,JDK官方爸爸对于synchronized这个小儿子的偏爱明显超过了lock——即使我们说synchronized会笨重,会产生上下文切换的线程开销,但JDK为了解决这个问题给它专门做了一系列的优化,目前的主流也是使用synchronized进行同步。synchronized和lock的区别我们这里说的lock,大体上...
2020-03-04 20:21:11
118
原创 java内存模型与线程
这一篇和接下来我将要写的一篇文章都是java并发相关,但并不完全是JUC包中的内容了。实际上,它们都可算作是《深入理解jvm虚拟机》这本书中“高效并发”这一部分的笔记。它们从一个更加深入的角度理解线程和进程,原书非常非常地经典,值得仔仔细细反复研读。硬件层面的一致性与java内存模型回想一下我们学过的操作系统,和java内存模型,就会发现二者其实几乎是相同的。在硬件层面,多路处理器系统中,每个...
2020-03-02 11:12:27
149
原创 java中集合及字符串的线程安全问题汇总
这其实不完全属于JUC的内容,但是见到了好多集合类线程安全的问题,就汇总一下。数组ArrayList:非线程安全LinkedList:非线程安全众所周知,ArrayList不是线程安全的,LinkedList也不是。它们的代码中没有任何同步的手段,一旦在多线程环境下,就很容易出现问题。Vector:线程安全线程安全的数组类是Vector,为了线程安全,它几乎给所有的方法都加上了sync...
2020-03-01 19:17:39
428
原创 JUC中几种锁的原理剖析
LockSupport工具类底层是Unsafe类实现的,主要作用是挂起(park()方法)和唤醒(unpark()方法)线程,看起来和wait()与notify()差不多,不过还有一些区别:park()不需要获取对象的锁。LockSupport类与每个使用它的线程都会关联一个许可证。默认情况下,调用LockSupport类的方法的线程是不持有许可证的,这也就导致直接调用park()方法的线程会...
2020-03-01 17:42:44
772
原创 java并发编程的其他基础知识
多线程并发编程的概念并发和并行:并发是指同一个时间段内多个任务同时都在执行,并且都没有执行结束,而并行是说单位时间内多个任务同时再执行。举个栗子,一个CPU只能通过时间片轮转之类的线程调度算法做到并发,而无法做到并行。相反,如果有多个CPU且同时执行不同的线程任务,这个就叫做并行。在多线程编程实践中,线程的个数往往多于CPU的个数, 所以一般都说多线程并发编程而非多线程并行编程。java中共...
2020-02-28 11:20:32
117
原创 java三个线程同步器的用法与源码解析
三种同步器的功能本文主要介绍三个线程同步器,它们的功能分别是:CountDownLatch:确保所有子线程执行完成以后再执行汇总, 内部有一个计数器,一个子线程执行完就倒数一下,倒数完后返回;CyclicBarrier:让一组线程全部达到一个状态以后再全部同时执行, 当所有线程执行完毕以后,重置CyclicBarrier的状态之后还可以被重用;Semaphore:大家都很熟悉的信号量,内...
2020-02-24 20:37:11
321
原创 java线程池的基础知识及源码解析
java线程池的相关知识基础知识线程池主要是ThreadPoolExecutor这个类。Excutor其实是个工具类,里面提供了一系列的静态方法,根据用户选择返回不同的线程池实例。ThreadPoolExecutor类继承了AbstractExecutorService,成员变量ctl用来记录线程池状态和池中线程个数,一个变量记录两个信息。//高3位用来表示线程池状态,低29位用来表示线程个...
2020-02-23 18:34:15
154
原创 代理模式
代理模式不仅仅是面试的一个高频考点,也是项目中用得非常多的一件工具。从一个非常简单的例子入手,假如我有一个接口Hello:public interface Hello{ void say(String name);}然后有一个实现类:public class HelloImpl implements Hello{ @Override public void say(String n...
2020-02-17 12:29:10
117
原创 架构探险——从零开始的MVC框架(二)
上一回讲到如何在一堆工具类的帮助下,在IocHelper类中实现依赖注入。然后书中编写了一个ClassHelper类,该类主要的作用是获取所有Controller类,然后通过反射获取该类中所有带Action的方法,进而获取请求方法和请求路径,把所有的“请求-处理对象”对封装成一个HashMap,便于调用获取。于是又定义了Request对象和Handler对象。前者封装请求方法和请求路径(请求信息...
2020-02-16 22:32:58
119
原创 架构探险——从零开始的MVC框架(一)
这一系列主要是《架构探险——从零开始写java web框架》这本书的读书笔记,同时记录下自己实现代码过程中遇到的一些java类的基本原理和用法。从第三章“搭建轻量级 java web框架”开始,基本讲述的是如何自己去实现一个mvc框架的基本功能,其中用到很多新颖的知识。最开始,书中设计的是一个非常简单的框架,只有几个核心功能:1、通过Controller注解定义Controller类,Serv...
2020-02-15 22:33:57
373
原创 一些线程相关的函数
与线程相关的一些函数Object类自带函数java把一些关于线程通知和等待的函数放到了Object类里面。也就是说任意一个对象都拥有这些函数。wait()函数:1、阻塞挂起调用线程;2、释放该线程在该共享变量上获取的监视器锁。(如果该线程还有其他共享变量的锁,这些锁是不会被释放的)如果该线程之前没拿到监视器锁怎么办呢?这个时候就会抛出IllegalMonitorStateExcepti...
2020-02-14 16:09:22
172
原创 java中创建线程的三种方式
java中线程创建的三种方式什么是线程进程:一段代码在特定数据集合上的一次运行活动,操作系统资源分配的基本单位。(换了个数据集合或者换了代码都不算是同一个进程)线程:是进程中的一个实体,本身是不会独立存在的。是进程的一个执行路径,一个进程中至少有一个线程,进程的多个线程共享进程的资源。任务调度和执行的基本单位。操作系统中大概是这样的:在JVM中,这个图可以再细化一下,大概是这样的:...
2020-02-14 12:17:16
162
原创 大型网站架构——性能优化之前端优化
大型网站架构——性能优化之前端优化这一系列文章会用来记录《大型网站技术架构》的总结,相当于是一个读书笔记。最近读了这本书,给我最大的感受就是它差不多是一个“面试提纲”,串联起了许多以往在面经中经常见到的知识点及需要掌握的技术,也终于粗浅地理解了为什么企业需要我们掌握这些知识,它们在网站架构中可以用来做些什么。跳过前面的介绍,我们从优化开始。根据网站分层架构,网站的性能优化可分为:Web前端...
2020-02-10 21:53:07
1649
原创 springboot整合mongodb(idea+maven)
springboot整合mongodb(idea+maven)首先在pom.xml中添加包依赖:<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-mongod...
2019-11-09 16:35:01
622
1
原创 微信小程序 页面间的两种带参跳转方法
微信小程序中,页面间的跳转一般用的是写在js文件中的wx:navigeteTo方法。有时候,我们在跳转时需要带上参数,这个参数一般是写在这个方法的url中的。首先是wx:navigateTo方法的格式:let url = '...'; wx.navigateTo({ url });这里navigetTo的参数必须要是一个对象,不然会报错,也就是一定要带上这个大括号。然后是第一种带...
2019-06-13 00:01:24
1106
原创 微信小程序 wx:for/if/elif/else等循环的写法以及wx.key的运用
在页面里使用wx:for/if等循环体:wx:for<view wx:for="{{chatRecord}}" wx:for-index="index" wx:for-item="item" wx:key="*this"> <!--中间的代码片段--></view>其中chatRecord是在js页面里定义的一个聊天记录数组。w...
2019-06-12 23:50:45
4783
原创 记idea maven整合spring mybatis途中踩过的几个坑以及流程
1、项目结构里面,文件夹的类型这其中java文件夹要设置成source root类型,resources要设置成resources root 类型,各种类型文件的区别可以看这里:https://blog.youkuaiyun.com/xiaohei_neko/article/details/79353605这一步如果类型设置不对的话,idea会自动给你添加一些不对的包名,最后还得手动改过来……附上后续...
2019-05-09 20:30:21
327
原创 mybatis基础学习1(实现简单的增删改查)
mybatis的配置:0.mybatis和jdbc的jar包1.基础配置config.xml(里面写上数据库驱动名,url,用户名和密码)2.把表和类对应起来的xml(须在config.xml里面配置resource)List itemList item...
2019-04-23 17:05:37
149
原创 springmvc配置过滤器的作用和方法
springmvc配置过滤器的作用和方法http协议里常见的请求方式有四种:post delete put get分别对应增删改查四个操作普通浏览器一般只支持get和post,其他两个方式是通过过滤器支持的。过滤器支持要求:1、方法有隐藏域且name是_method 如:<input type="hidden" name="_method" value="delete/put"...
2019-04-05 15:36:56
2278
原创 前端向后端传值方式(不用js)
前端向后台传值方式(不用js)记两种简单的传值方式jsp文件中使用 a标签进行传值,可以直接这样写后台获取直接写request.getParameter(“参数名”);或者后台获取用springmvc的@PathVariable@RequestMapping(value=“request/{name}”)方法参数中写(@PathVariable(name))即可。...
2019-04-05 15:03:54
1364
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人