- 博客(63)
- 资源 (1)
- 收藏
- 关注
原创 事务隔离级别,解决可重复读(update)和幻读问题(insert),快照读/当前读
可重复读问题: 一个事务中前后两次 读取的数据不一致,因为另外一个事务执行了update操作;幻读: 一个事务加了行锁,但是不能防止另外一个事务的插入操作,从而当执行聚合操作时(如 查询满足工资>5k的人的数量)产生了幻读。快照读 解决了 可重复读和幻读问题, 但是只是针对 快照读的操作, 如果事务中含有更新/插入/删除操作, 会执行当前读,还是会有幻读的可能。间隙锁解决了 幻读的问题. 在可重复读隔离级别下,数据库是通过行锁和间隙锁共同组成的(next-key lock),来实现防止
2021-03-02 15:23:10
1290
原创 分布式协议总结
Reference很好的分布式协议总结文章,http://thinkinjava.cn/categories/%E5%88%86%E5%B8%83%E5%BC%8F/page/2/raft java语言实现 和1同一个作者https://github.com/stateIs0/lu-raft-kv/blob/master/lu-raft-kv/src/main/java/cn/think/in/java/impl/DefaultNode.java#L546raft 超棒的动画讲解ht
2021-02-19 21:54:01
247
原创 idea为java程序添加启动参数(program arguments,vm arguments,Environment variable),并在程序中获取使用
配置栏含义:VM optons:JVM虚拟机参数, java程序中可以通过以下方式获取System.getProperty("参数名")Program argumentsjava项目参数, 即main方法中的String[] args参数public static void main(String[] args) { System.setProperty("spring.devtools.restart.enabled", "false"); SpringAp
2021-02-05 15:43:20
2736
1
原创 Java 应用线上问题排查思路、工具小结
ssh ip 连接上远程服务器top 查看占比较高的java进程号 如12816top -Hp pid可以查看某个进程的线程信息-H 显示线程信息,-p指定pid如:top -Hp 12816找到线程12817, 进入python, hex(12817)查看16进制0x3211执行 jstack 12816 | grep 0x3211 -A 30 找到该线程堆栈信息jstack信息jstack 线程ID 可以查看某个线程的堆栈情况,特别对于hung挂死的线程,可..
2021-02-04 15:44:05
301
原创 idea开发项目github gitignore设置
常用忽略上传文件# kdiff3 ignore*.orig# maven ignoretarget/# eclipse ignore.settings/.project.classpath# idea ignore.idea/*.ipr*.iml*.iws# temp ignore*.log*.cache*.diff*.patch*.tmp# system ignore.DS_StoreThumbs.db# package ignore (optio
2021-02-04 13:56:25
156
原创 软件发布版本说明
举例:版本一: 2.0.9-alpha.1-SNAPSHOT版本二: 2.0.9-beta.1-SNAPSHOT版本三: 2.0.10-rc.1版本四: 2.0.10-rc.2版本五: 2.0.10软件版本周期α、β、λ 常用来表示软件测试过程中的三个阶段。– α 是第一阶段,一般只供内部测试使用;– β是第二个阶段,已经消除了软件中大部分的不完善之处,但仍有可能还存在缺陷和漏洞,一般只提供给特定的用户群来测试使用;– λ是第三个阶段,此时产品已经相当成熟,只需在个别地方再做进一步的优化
2021-01-29 11:10:13
1303
原创 gradle和maven问题记录
1. maven发版问题:maven发版命令: mvn deploy -Dmaven.test.skip=true在父目录中执行 mvn deploy -Dmaven.test.skip=true命令即可发版,注意:在子module中通过<maven.deploy.skip>true</maven.deploy.skip>可以制定某个子module不参与发版参考:https://www.cnblogs.com/leeyazhou/p/12467202.html待解
2021-01-28 16:42:45
270
原创 Linux下安装yum问题
运行yum的时候, 缺少 libssl.so.1.0.0:~$ yumThere was a problem importing one of the Python modulesrequired to run yum. The error leading to this problem was: libssl.so.1.0.0: cannot open shared object file: No such file or directoryPlease install a packag
2021-01-26 11:52:02
760
原创 ManagementFactory-JAVA获取系统相关的信息
package jvmpackage;import javax.management.MBeanServer;import java.lang.management.GarbageCollectorMXBean;import java.lang.management.ManagementFactory;import java.lang.management.MemoryUsage;import java.lang.management.ThreadInfo;import java.util.L
2021-01-25 11:37:15
388
原创 Java 8 中的 Streams API 详解
1. 为什么需要 StreamStream 作为 Java 8 的一大亮点,它与 java.io 包里的 InputStream 和 OutputStream 是完全不同的概念。它也不同于 StAX 对 XML 解析的 Stream,也不是 Amazon Kinesis 对大数据实时处理的 Stream。Java 8 中的 Stream 是对集合(Collection)对象功能的增强,它专注于对集合对象进行各种非常便利、高效的聚合操作(aggregate operation),或者大批量数据操作 (bul
2021-01-24 21:50:00
184
原创 git rebase在开发中的操作
基于分支开发的git rebase方法:首先从master分支上切换到自己的分支 feature/abc;Git checkout feature/abc;在自己的分支进行开发Git add .Git commit -m “提交修改”Git push开发完成后合并到origin/master分支;git rebase -i origin/master合并feature/abc距离最近mater提交的所有提交记录;第一条改成p, 其余的改成s合并;保存如果有冲突,解决
2021-01-11 17:51:35
145
原创 slf4j日志记录
slf4j日志记录前言:常见的日志记录jar包 有:log4j, logback等,但是他们的API都是不一样的。于是slf4j (simple log facede for java) 提供了一套统一的接口,具体的实现由第三放进行实现。 这样,在项目需要改变不同的log包的时候,不需要改变源代码。本文主要介绍log4j的用法和配置文件。注:如果是Springboot项目,文件中引用了<dependency> <groupId>org.springframew
2020-10-23 12:51:28
223
原创 如何在Linux上部署java web项目(SpringBoot)
这里写自定义目录标题如何在Linux上部署java web项目(SpringBoot)0.准备工作和步骤1. 准备云端linux系统2. 通过mac连接远程服务器3. 环境搭建3.0 linux常见命令:3.1 scp上传本地文件到远程linux上3.2 linux中配置环境变量4. 打包springboot项目发送到云端如何在Linux上部署java web项目(SpringBoot)因为最近学校在做一个项目,需要将springboot的项目部署到云端,在这了做一个简要的记录,方便下次快速部署!0.
2020-10-19 18:26:50
677
原创 6.ThreadPool源码分析
1.线程池源码大致分析–运行流程1. demo;这个简单的例子创建了一个线程池和一个任务,然后我们循环submit5个任务,我们分析它的源码和执行过程。public class A3ThreadPool { public static void main(String[] args) { Runnable task = new Runnable() { @Override public void run() {
2020-05-09 14:11:07
274
1
原创 4四种引用
强 软 弱 虚 by Seven软:原理:当内存不够的时候,回收软引用指向的对象空间。场景:用作缓存,如大图片。案例:/**设计虚拟机内存只有20M, 堆内存20M设计`m变量-> softReference -> 10M的内存空间`在new 11M的空间,当内存不够的时候,回收软引用对象。**/public class A20SoftReference { // 设置虚拟机参数 -Xms20M -XmxX20M public static void mai
2020-05-09 14:10:01
207
原创 3ThreadLocal案例和源码分析
ThreadLocal源码分析及其中的弱引用!by Seven# 使用ThreadLocal的表象当我们new一个ThreadLocal对象的时候,每个线程都可以通过set()和get()来获取值,且获取到的是自己的值;demo:public class A19ThreadLocal { public static void main(String[] args) { // new local对象 ThreadLocal<Integer> loc
2020-05-09 14:07:35
158
原创 2_3Condition和CyclicBarrier源码
1. Condition的使用场景:生产者消费者模式生产者向容器中放值,消费者从容器中取值;使用lock,依次只能有一个线程操作容器,当容器满的时候,将当前的生产者线程放入到生产者condition队列中,然后唤醒消费者队列中的线程当容器空的时候,将当前的消费者线程放入到消费者condition队列中,然后唤醒生产者队列中的线程public class A18Inteview3_3<T> { ReentrantLock lock = new ReentrantLock();
2020-05-09 14:03:26
269
原创 2_2共享锁的实现
JUC包下的几个重要线程同步工具类如Semaphore, CountDownLatch, ReentrantReadWriteLock都是共享锁的实现,他们重写了AQS的tryAcquireShared(args)方法。1. ReentrantReadWriteLock1.0 综述ReentrantReadWriteLock中读锁和写锁是公用一个state状态. 其中,前16位表示读锁,后16位表示写锁。写锁在lock的时候,是先判断有无读锁(即:前16位是否为0),写锁是否重入,才能确定能否获得锁
2020-05-08 21:37:28
839
原创 2_0Concurrent包综述
Concurrent包综述 by SevenConcurrent包下好多很处理多线程高并发的类,包括锁,队列,工具类和原子类等等。这个系列会讲解一些常见类的源码。先分类一下总写一下。后面会详细介绍每一种典形的类。LockAQS: abstractQueuedSynchronizer 抽象队列同步器,并发包的核心类,很多类都含有他的实现,本文的重点;两个常见的子类NonfairSync和FairSync实现了公平锁和非公平锁。实现有共享锁和独占锁两种。ReentrantLock,可重入
2020-05-08 21:35:40
133
原创 1.多线程和高并发高频面试题
互联网大厂高频面试题之 线程与高并发模块摘要: 本模块总结了线程与高并发的主要知识点和高频面试题。主要知识点包括:线程,线程池,synchronized和volatile关键字,ReentrantLock锁,Concurrent包下的常用类(CountDownLatch, CyclicBarrier, ReentrantReadWriteLock, Semaphore)及其底层源码AQS同步器,还有Lock锁中的condition。此系列模块还包括线程池的源码解析,Collection和Map包下
2020-05-08 21:32:40
264
原创 四种引用
强 软 弱 虚强引用直接`Object obj = new Object()` 那么obj就是一个指向Object对象的强应用;当一个对象没有强应用和其他应用的时候,在GC垃圾清理的时候会被清理掉;软:原理:当内存不够的时候,回收软引用指向的对象空间。场景:用作缓存,如大图片。案例:/**设计虚拟机内存只有20M, 堆内存20M设计`m变量-> softReferen...
2020-05-04 18:53:29
164
原创 ThreadLocal案例和源码分析
ThreadLocal源码分析及其中的弱引用!by Seven使用ThreadLocal的表象当我们new一个ThreadLocal对象的时候,每个线程都可以通过set()和get()来获取值,且获取到的是自己的值;demo:public class A19ThreadLocal { public static void main(String[] args) { ...
2020-05-04 18:50:53
170
原创 2_1AQS源码分析
AQS源码分析AQS是Concurrent包下的核心类,很多的类包括ReentrantLock, CountDownLatch, CyclicBarrier, ReadWriteLock等包都是通过AQS这个类实现的。这篇文章将会和大家一起看一下AQS的源码分析,从而了解AQS的内部运行情况。AQS的核心内容包括三大块(先了解一下): state状态:0表示锁处于释放状态,1-n表示有线...
2020-05-04 18:48:17
149
原创 Redis
总结 by SevenRedis是非关系型数据库,存储的是key-value键值对Redis的key必须是string,value可以是string(可以是二进制),list, set, sorted set(每一个set元素带有分数), hashmap。可以进行增删改查等操作,还可以设置expire时间。Redis可以设置主从赋值。master赋值写入,salve负责大量的读操...
2020-02-15 19:42:23
171
原创 SpringCloud
SpringCloud,by Seven一、微服务1. 微服务简介 将单一应用程序划分成多个微小的服务, 每个服务完成单一功能,这样的每个服务叫做一个微服务2. 微服务架构 是一种架构模式将应用的每个功能放到一个独立的服务中,每个服务对应一个进程使用一组小型服务来开发单个应用,每个服务运行在独立的进程中,服务与服务之间通过HTTP的方式进行互相通信每个服务都是一个可独立替换和...
2020-02-13 17:31:16
208
原创 06Dubbo
Dubbo,主讲:Seven一、Web应用架构的演变 随着互联网的发展,网站应用的规模不断扩大,Web应用构架也在不断的演变 四个阶段:单一应用、垂直应用、分布式服务、流动计算1. 单一应用架构 当网站访问量很小时,只需要一个应用程序,将所有的功能都部署在一起,以减少部署节点和成本 此时关键问题:简化数据库操作,数据访问框架ORM是核心 适用场景:小型网站、管理系统、简...
2020-02-13 17:22:06
129
原创 05ZooKeeper
ZooKeeper,By Seven一、ZooKeeper简介1. ZooKeeper是什么 zookeeper [ˈzu:ki:pə®] 动物园管理员 Apache ZooKeeper是一个开源的分布式服务框架,为分布式应用提供协调服务,用来解决分布式应用中的数据管理问题,如:配置管理、域名服务、分布式同步、集群管理等(官网 https://zookeeper.apache.org)...
2020-02-13 16:57:31
143
原创 04SpringBoot
总结 by SevenSpringBoot,利用Maven创建SpringBoot项目,利用idea快速创建SpringBoot项目,配置文件:yml, 为属性注入值,多环境配置,加载外部配置文件,自动配置原理web开发,静态资源映射模板引擎扩展默认的SpringMVC功能: implements WebMvcConfigurer添加拦截器全局异常处理关于Servlet容器:...
2020-02-13 15:24:23
213
原创 03springMVC
总结 (by Seven)本文首先介绍SpringMVC, 然后讲解SpringMVC的原理,接下来以HelloWorld为例讲解写一个SpringMVC的过程。接着,讲解Controller(又叫Handler)的返回值,参数,@RequestingMapping等。接着是服务端的数据校验,再后面为:异常处理,Ajax请求,文件上传下载。最后是拦截器和过滤器,Spring常见模块总结...
2020-02-12 21:53:19
702
原创 02 Spring
Spring总结 by SevenSpring主要包括IOC(控制反转)和AOP(面向切面编程)两部分。IOC将对象的对象的生命周期交给Spring容器管理,实现解耦合,使项目组件之间的关系松散。AOP 将程序中的交叉业务逻辑(如:开启关闭事务)提取出来, 封装成切面; 由AOP容器在适当的时机将这些切面动态地织入到具体的业务逻辑中使得程序易于扩展。Spring在具体使用的时候有编写配置...
2020-02-12 16:40:34
283
原创 01.maven
Maven (by Seven)简介apache公司的开源项目项目自动化构建工具, 涵盖了项目的构建/编译/测试/打包/发布基于项目对象模型(POM, Project Object Model), 通过一段描述信息构建和管理项目的工具官网地址: maven.apache.orgMaven标准的项目目录结构工程目录 |-- src // maven的源码根目录...
2020-02-12 14:55:01
165
原创 数据结构和算法总结
总结:by Seven本文为数据结构和算法的知识总结,包括1,常见的数据结构(数组,链表,队列,栈,堆,树,图),2,算法思想(蛮力,减治分治转治,贪心,动态规划) 3,排序算法,4,字符串算法等方面。具体的知识点和算法见其他系列文章。1.数据结构底层实现:数组array, 链表list常用数据结构:数组: 储存元素的地址连续,根据下标查找(偏移寻址)快链表: 地址不连续,增加...
2020-02-09 21:42:45
184
原创 Nginx详细安装部署教程及其主要用处
一.Nginx简介Nginx (engine x) 是一个高性能的HTTP和反向代理服务器,也是一个IMAP/POP3/SMTP服务器。Nginx是由伊戈尔·赛索耶夫为俄罗斯访问量第二的Rambler.ru 站点(俄文:Рамблер)开发的.它也是一种轻量级的Web服务器,可以作为独立的服务器部署网站(类似Tomcat)。它高性能和低消耗内存的结构受到很多大公司青睐,如淘宝网站架设。先下载...
2020-02-08 19:47:34
393
原创 Go语言框架db-GORM
本文是李文周的博客go语言学习之路的目录提要版,方便复习查看使用,原文参见文章连接:https://www.liwenzhou.com/posts/Go/go_menu/gorm是一个使用Go语言编写的ORM框架。它文档齐全,对开发者友好,支持主流数据库。GORM总结安装go get -u github.com/jinzhu/gorm连接数据库连接不同的数据库都需要导入对应数据的驱...
2020-02-08 16:14:22
1551
原创 17Go语言基础之单元测试
本文是李文周的博客go语言学习之路的目录提要版,方便复习查看使用,原文参见文章连接:https://www.liwenzhou.com/posts/Go/go_menu/不写测试的开发不是好程序员。我个人非常崇尚TDD(Test Driven Development)的,然而可惜的是国内的程序员都不太关注测试这一部分。 这篇文章主要介绍下在Go语言中如何做单元测试和基准测试。单元测试总结g...
2020-02-08 16:13:47
423
原创 Go语言框架web-gin
本文是李文周的博客go语言学习之路的目录提要版,方便复习查看使用,原文参见文章连接:https://www.liwenzhou.com/posts/Go/go_menu/不写测试的开发不是好程序员。我个人非常崇尚TDD(Test Driven Development)的,然而可惜的是国内的程序员都不太关注测试这一部分。 这篇文章主要介绍下在Go语言中如何做单元测试和基准测试。web总结ht...
2020-02-07 22:16:31
660
原创 Go语言标准库之template
本文是李文周的博客go语言学习之路的目录提要版,方便复习查看使用,原文参见文章连接:https://www.liwenzhou.com/posts/Go/go_menu/和另外一篇https://blog.youkuaiyun.com/TDCQZD/article/details/82634052html/template包实现了数据驱动的模板,用于生成可防止代码注入的安全的HTML内容。它提供了和te...
2020-02-07 22:15:38
813
1
原创 16Go语言基础之网络编程
本文是李文周的博客go语言学习之路的目录提要版,方便复习查看使用,原文参见文章连接:https://www.liwenzhou.com/posts/Go/go_menu/网络编程总结socket图解Socket是应用层与TCP/IP协议族通信的中间软件抽象层。在设计模式中,Socket其实就是一个门面模式,它把复杂的TCP/IP协议族隐藏在Socket后面,对用户来说只需要调用Socket...
2020-02-07 22:14:43
158
原创 15Go语言基础之并发
本文是李文周的博客go语言学习之路的目录提要版,方便复习查看使用,原文参见文章连接:https://www.liwenzhou.com/posts/Go/go_menu/并发是编程里面一个非常重要的概念,Go语言在语言层面天生支持并发,这也是Go语言流行的一个很重要的原因。关键字:goroutine, sync.WaitGroup, GOMAXPROCS, channel,有缓冲的通道, ...
2020-02-07 22:14:11
215
NimPlayer.java
2019-09-26
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人