自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(46)
  • 收藏
  • 关注

原创 MySQL锁

一、对MySQL的锁的了解当数据库有并发事务的时候,可能会产生数据的不一致,这时候需要一些机制来保证访问的次序,锁机制就是这样的一个机制。就像酒店的房间,如果大家随意进出,就会出现多人抢夺同一个房间的情况,而在房间上装上锁,申请到钥匙的人才可以入住并且将房间锁起来,其他人只有等他使用完毕才可以再次使用。二、隔离级别与锁的关系在Read Uncommitted级别下,读取数据不需要加共享锁,这样就不会跟被修改的数据上的排他锁冲突在Read Committed级别下,读操作需要加共享锁,但是

2021-07-22 13:57:38 169 1

原创 jenkins Cannot run program

原因是 jenkins 读取不到linux /ect/profile 的配置方法1:Jenkins构建步骤中,第一行增加source /etc/profile命令方法2:在Jenkins配置系统配置文件:/etc/sysconfig/jenkins末尾增加source /etc/profile,然后重启Jenkins服务即可...

2021-07-22 10:20:20 1376 1

原创 TCP三次握手四次挥手

1. 源端口号( 16 位):它(连同源主机 IP 地址)标识源主机的一个应用进程。 2. 目的端口号( 16 位):它(连同目的主机 IP 地址)标识目的主机的一个应用进程。这两个值 加上 IP 报头中的源主机 IP 地址和目的主机 IP 地址唯一确定一个 TCP 连接。 3. 顺序号 seq( 32 位):用来标识从 TCP 源端向 TCP 目的端发送的数据字节流,它表示在这个 报文段中的第一个数据字节的顺序号。如果将字节流看作在两个应用程序间的单向流动,则 TCP 用顺序号对每个字

2021-07-02 17:16:33 198 1

原创 什么是埋点?

埋点大概分成2种业务埋点这里埋点的含义就是:预先在用户可能操作的"点",埋下上报的代码,一旦用户发生了操作,我就上报该用户操作的详细信息一般是要产品或者运营提出需求,在哪里埋点,比如1.进入某个界面,客户端上报"xx用户进入了xx页面"2.离开时再上报"xx用户离开了xx页面"本质上是跟踪用户的行为,用户什么时候打开了应用,点击了哪些标题/功能入口/广告,逗留了多长时间这就是所谓的大数据了,可以分析出用户对什么样的内容感兴趣,从而更精准的向用户推荐内容最好就是用户每一个操作都能

2021-06-28 14:10:25 5802 1

转载 JVM调优命令大全

https://note.youdao.com/ynoteshare1/index.html?id=96eaec791f7831ab70430659fdb14a8d&type=note

2021-06-16 19:53:07 110

转载 IDEA与tomacat相关问题

http://www.yanhongzhi.com/post/tomcat_intellij.html

2021-06-11 14:05:39 121 1

原创 Thrift踩坑记录

Thrift(windows)踩坑记录thrift 是 facebook的rpc框架1.安装thrift.exe文件2.配置环境变量3.idea 安装thrift suport4.给需要的项目添加上thrift5.pom指定可执行文件.exe 地址 优先级高于IDE的指定

2021-06-11 10:52:12 268

原创 Synchronized作用范围

Synchronized作用范围主要分为两大类:类锁,以及对象锁类锁实现方式有代码块,静态方法;代码块:通过锁定class对象来实现类锁锁定该类所有的对象 public void test(){ synchronized (Test.class) { // TODO } }静态方法:也是锁定class对象来实现类锁锁定该类所有的对象 public static synchronized void test(){

2021-05-14 14:22:26 194

原创 环形列表(快慢指针法)

/** * Definition for singly-linked list. * class ListNode { * int val; * ListNode next; * ListNode(int x) { * val = x; * next = null; * } * } */public class Solution { public boolean hasCycle(ListNode head) {

2021-05-14 11:32:24 97

原创 手撕快速排序

public class QuickSort { public void quickSort(int[] arr){ sort(arr,0,arr.length-1); } public void sort(int[] arr ,int left ,int right){ if(left<right){ int pivot=partition(arr, left, right); sort(arr,

2021-05-13 16:11:06 91

原创 双向链表实现LRU(最近最少使用)

public class LRUCache { class DLinkedNode { int key; int value; DLinkedNode prev; DLinkedNode next; public DLinkedNode() {} public DLinkedNode(int _key, int _value) {key = _key; value = _value;} }

2021-05-13 15:14:31 109

原创 字符串相加

public String addStrings(String num1, String num2) { /* * 8 6 0 4 3 * + 5 5 8 2 * ------------- * 9 1 6 2 5 * */ //两个指针分别从 int i = num1.length() - 1, j = num2.length()...

2021-05-13 15:12:58 68

原创 单链表反转(快慢指针法)

/** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode() {} * ListNode(int val) { this.val = val; } * ListNode(int val, ListNode next) { this.val = val; this.next = next; } * }

2021-05-12 16:50:27 145

原创 如何分析一个“排序算法”?

排序算法的执行效率对于排序算法执行效率的分析,我们一般会从这几个方面来衡量:1. 最好情况、最坏情况、平均情况时间复杂度我们在分析排序算法的时间复杂度时,要分别给出最好情况、最坏情况、平均情况下的时间复杂度。除此之外,你还要说出最好、最坏时间复杂度对应的要排序的原始数据是什么样的。为什么要区分这三种时间复杂度呢?第一,有些排序算法会区分,为了好对比,所以我们最好都做一下区分。第二,对于要排序的数据,有的接近有序,有的完全无序。有序度不同的数据,对于排序的执行时间肯定是有影响的,我们要知道排序算法在不同

2021-05-10 14:36:30 88

原创 链表跟数组的区别

数组和链表是两种截然不同的内存组织方式。正是因为内存存储的区别,它们插入、删除、随机访问操作的时间复杂度正好相反数组简单易用,在实现上使用的是连续的内存空间,可以借助 CPU 的缓存机制,预读数组中的数据,所以访问效率更高。而链表在内存中并不是连续存储,所以对 CPU 缓存不友好,没办法有效预读。数组的缺点是大小固定,一经声明就要占用整块连续内存空间。如果声明的数组过大,系统可能没有足够的连续内存空间分配给它,导致“内存不足(out of memory)”。如果声明的数组过小,则可能出现不够用的情况。这

2021-05-08 16:04:08 216

原创 ArrayList对比数组

ArrayList 最大的优势就是可以将很多数组操作的细节封装起来。比如前面提到的数组插入、删除数据时需要搬移其他数据等。另外,它还有一个优势,就是支持动态扩容。数组本身在定义的时候需要预先指定大小,因为需要分配连续的内存空间。如果我们申请了大小为 10 的数组,当第 11 个数据需要存储到数组中时,我们就需要重新分配一块更大的空间,将原来的数据复制过去,然后再将新的数据插入。如果使用 ArrayList,我们就完全不需要关心底层的扩容逻辑,ArrayList 已经帮我们实现好了。每次存储空间不够的时候

2021-05-08 11:42:52 237

原创 红黑树

R-B Tree,全称是Red-Black Tree,又称为“红黑树”,它一种特殊的二叉查找树。红黑树的每个节点上都有存储位表示节点的颜色,可以是红(Red)或黑(Black)。红黑树的特性:(1)每个节点或者是黑色,或者是红色。(2)根节点是黑色。(3)每个叶子节点(NIL)是黑色。 [注意:这里叶子节点,是指为空(NIL或NULL)的叶子节点!](4)如果一个节点是红色的,则它的子节点必须是黑色的。(5)从一个节点到该节点的子孙节点的所有路径上包含相同数目的黑节点。...

2021-05-07 17:27:12 64

原创 类加载过程

加载该阶段虚拟机需要完成三件事:① 通过一个类的全限定类名获取定义类的二进制字节流。② 将字节流所代表的静态存储结构转化为方法区的运行时数据区。③ 在内存中生成对应该类的 Class 实例,作为方法区这个类的数据访问入口。验证确保 Class 文件的字节流符合约束。如果虚拟机不检查输入的字节流,可能因为载入有错误或恶意企图的字节流而导致系统受攻击。验证主要包含四个阶段:文件格式验证、元数据验证、字节码验证、符号引用验证。准备为类静态变量分配内存并设置零值,该阶段进行的内存分配仅包括类变量,不

2021-04-28 10:03:43 55

原创 解决atomikos事务超时(com.atomikos.icatch.RollbackException: Prepare: NO vote)

添加配置文件jta.propertiescom.atomikos.icatch.service=com.atomikos.icatch.standalone.UserTransactionServiceFactory# Set the default timeout (in milliseconds) for local transactions# 默认的超时时间 600000 --> 10分钟com.atomikos.icatch.default_jta_timeout = 6000000

2021-04-28 09:02:47 808

原创 Java序列化

保存(持久化)对象及其状态到内存或者磁盘Java 平台允许我们在内存中创建可复用的 Java 对象,但一般情况下,只有当 JVM 处于运行时,这些对象才可能存在,即,这些对象的生命周期不会比 JVM 的生命周期更长。 但在现实应用中,就可能要求在JVM停止运行之后能够保存(持久化)指定的对象,并在将来重新读取被保存的对象。Java 对象序列化就能够帮助我们实现该功能。序列化对象以字节数组保持-静态成员不保存使用 Java 对象序列化, 在保存对象时,会把其状态保存为一组字节,在未来, 再将这些字节组装

2021-04-27 09:49:47 67

原创 AQS抽象的队列式的同步器 解析

AbstractQueuedSynchronizer 类如其名,抽象的队列式的同步器, AQS 定义了一套多线程访问共享资源的同步器框架,许多同步类实现都依赖于它,如常用的ReentrantLock/Semaphore/CountDownLatch。它维护了一个 volatile int state(代表共享资源)和一个 FIFO 线程等待队列(多线程争用资源被阻塞时会进入此队列)。这里 volatile 是核心关键词,具体 volatile 的语义,在此不述。 state 的访问方式有三种:get

2021-04-26 14:40:08 108

原创 CAS( 比较并交换-乐观锁机制-锁自旋)

概念及特性CAS(Compare And Swap/Set)比较并交换, CAS 算法的过程是这样:它包含 3 个参数CAS(V,E,N)。 V 表示要更新的变量(内存值), E 表示预期值(旧的), N 表示新值。当且仅当 V 值等于 E 值时,才会将 V 的值设为 N,如果 V 值和 E 值不同,则说明已经有其他线程做了更新,则当前线程什么都不做。最后, CAS 返回当前 V 的真实值。CAS 操作是抱着乐观的态度进行的(乐观锁),它总是认为自己可以成功完成操作。 当多个线程同时使用 CAS 操作一

2021-04-26 13:59:31 122

原创 Java 中用到的线程调度

Java 中用到的线程调度抢占式调度:抢占式调度指的是每条线程执行的时间、线程的切换都由系统控制,系统控制指的是在系统某种运行机制下,可能每条线程都分同样的执行时间片,也可能是某些线程执行的时间片较长,甚至某些线程得不到执行的时间片。在这种机制下,一个线程的堵塞不会导致整个进程堵塞。协同式调度:协同式调度指某一线程执行完后主动通知系统切换到另一线程上执行,这种模式就像接力赛一样,一个人跑完自己的路程就把接力棒交接给下一个人,下个人继续往下跑。线程的执行时间由线程本身控制,线程切换可以预知,不存在多线

2021-04-26 11:17:13 72

原创 ConcurrentHashMap 并发解析

ConcurrentHashMap 并发减小锁粒度减小锁粒度是指缩小锁定对象的范围,从而减小锁冲突的可能性,从而提高系统的并发能力。减小锁粒度是一种削弱多线程锁竞争的有效手段, 这种技术典型的应用是ConcurrentHashMap(高性能的 HashMap)类的实现。对于 HashMap 而言,最重要的两个方法是 get 与 set 方法,如果我们对整个 HashMap 加锁,可以得到线程安全的对象,但是加锁粒度太大。 Segment 的大小也被称为 ConcurrentHashMap 的并发度。C

2021-04-25 18:14:47 346

原创 synchronized 和 ReentrantLock 的区别

synchronized 和 ReentrantLock 的区别两者的共同点:都是用来协调多线程对共享对象、变量的访问都是可重入锁,同一线程可以多次获得同一个锁都保证了可见性和互斥性两者的不同点:ReentrantLock 显示的获得、释放锁, synchronized 隐式获得释放锁ReentrantLock 可响应中断、可轮回, synchronized 是不可以响应中断的,为处理锁的不可用性提供了更高的灵活性ReentrantLock 是 API 级别的, synchroniz

2021-04-25 16:20:46 49

转载 简单的 JVM 调优

转载 https://zhenbianshu.github.io/2019/11/jvm_optimization_experience.html

2021-04-23 09:09:54 45

原创 线程池

原理线程池做的工作主要是控制运行的线程的数量,处理过程中将任务放入队列,然后在线程创建后启动这些任务,如果线程数量超过了最大数量超出数量的线程排队等候,等其它线程执行完毕,再从队列中取出任务来执行。 他的主要特点为: 线程复用; 控制最大并发数; 管理线程。线程复用每一个 Thread 的类都有一个 start 方法。 当调用 start 启动线程时 Java 虚拟机会调用该类的 run方法。 那么该类的 run() 方法中就是调用了 Runnable 对象的 run() 方法。 我们可以继承重写Th

2021-04-23 09:05:31 66

原创 线程上下文切换相关概念学习

线程上下文切换1.上下文是指某一时间点 CPU 寄存器和程序计数器的内容2.切换桢上下文切换可以认为是内核(操作系统的核心)在 CPU 上对于进程(包括线程)进行切换,上下文切换过程中的信息是保存在进程控制块(PCB, process control block)中的。 PCB 还经常被称作“切换桢”(switchframe)。 信息会一直保存到 CPU 的内存中,直到他们被再次使用。3.上下文切换的活动挂起一个进程,将这个进程在 CPU 中的状态(上下文)存储于内存中的某处。在内存中检

2021-04-21 14:43:59 100

原创 atomikos 链接oracle 数据源出现com.atomikos.datasource.ResourceException: Error in recovery

grant select on sys.dba_pending_transactions to lis;grant select on sys.pending_trans$ to USER_NAME;grant select on sys.dba_2pc_pending to USER_NAME;grant execute on sys.dbms_system to USER_NAME

2021-04-20 18:27:18 185

转载 对比 5 种分布式事务方案,阿里的 Seata

https://mp.weixin.qq.com/s/hiiVNElHucAr5SnAWG4BIw

2021-04-14 18:22:22 174

原创 基于XA协议的2PC

基于XA协议的2PC提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录基于XA协议的2PC前言一、两阶段提交二、使用步骤1.引入库2.读入数据总结前言XA协议由Tuxedo首先提出的,并交给X/Open组织,作为资源管理器(数据库)与事务管理器的接口标准。目前,Oracle、Informix、DB2和Sybase等各大数据库厂家都提供对XA的支持。XA协议采用两阶段提交方式来管理分布式事务。XA接口提供资源管理器与事务管理器之间进行通信的标准接口。XA协议包括两套函数,以x

2021-04-14 17:58:01 171

转载 执行计划explain各个字段的含义(索引原理)

explain各个字段的含义id : 表示SQL执行的顺序的标识,SQL从大到小的执行select_type:表示查询中每个select子句的类型table:显示这一行的数据是关于哪张表的,有时不是真实的表名字type:表示MySQL在表中找到所需行的方式,又称“访问类型”。常用的类型有:ALL, index, range, ref, eq_ref, const, system, NULL(从左到右,性能从差到好)possible_keys:指出MySQL能使用哪个索引在表中找到记录,查询涉及到的

2021-04-14 15:51:39 265

原创 windows解决占用端口

1. 进入windows命令窗口之后,输入命令,输入netstat -ano然后回车,就可以看到系统当前所有的端口使用情况。2. 通过命令查找某一特定端口,在命令窗口中输入命令中输入netstat -ano |findstr “端口号”,然后回车就可以看到这个端口被哪个应用占用。3. 查看到对应的进程id之后,就可以通过id查找对应的进程名称,使用命令tasklist |findstr "进程id号"4. 通过命令杀掉进程,或者是直接根据进程的名称杀掉所有的进程,,在命令框中输入如下命令taskkil

2021-04-14 15:12:15 68

转载 @Transactional注解的失效场景

https://blog.csdn.net/weixin_45676738/article/details/108828684

2021-04-13 17:33:22 54

原创 TCP 跟 UDP的区别

1.TCP提供的是面向连接的、可靠的数据流传输;UDP提供的是非面向连接的、不可靠的数据流传输。2.TCP提供可靠的服务,通过TCP连接传送的数据,无差错、不丢失、不重复,按序到达;UDP尽最大努力交付,即不保证可靠交付。3.TCP面向字节流;UDP面向报文。4.TCP连接只能是点到点的;UDP支持一对一、一对多、多对一和多对多的交互通信。5.UDP具有较好的实时性,工作效率比TCP高,适用于对高速传输和实时性有较高的通信或广播通信。6.TCP对系统资源要求较多,UDP对系统资源要求较少。TCP首

2021-04-13 17:29:00 92

原创 jvm分代以及GC入门了解

新生代:新生代被分成三个部分 eden区和2个survivor区(from和to两个分区)。当创建对象,需要jvm分配内存时,会在新生代的eden区寻找合适的内存区域。如果当eden区内存不够时,会触发minor GC。eden区存活对象和from区的存活对象将会被复制到to区。当to区的对象年龄超过了晋升的年龄设置,对象将被提升到老年代。新生代GC用的是复制算法年老代: 年老代里存放的都是存活时间较久的,大小较大的对象,因此年老代使用标记整理算法。当年老代容量满的时候,会触发一次Major GC(

2021-04-13 17:25:55 52

原创 bootstrap.yml 跟 application.yml加载顺序

bootstrap.yml(bootstrap.properties)用来在程序引导时执行,应用于更加早期配置信息读取,如可以使用来配置application.yml中使用到参数等application.yml(application.properties) 应用程序特有配置信息,可以用来配置后续各个模块中需使用的公共参数等。bootstrap.yml 先于 application.yml 加载...

2021-04-13 17:22:43 685

原创 eureka 用户验证

第一步,为Eureka服务端(eureka-server)添加安全认证依赖:<groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-security</artifactId>第二步,增加application.yml配置文件:spring:application:name: app-eureka-centersecurity:basic:

2021-04-13 17:17:48 309

原创 扩展第三方jar

2021-04-13 17:15:43 83

原创 java 分割字符串 使每个子串都是一个回文串

给定一个字符串 s,将 s 分割成一些子串,使每个子串都是回文串。返回 s 所有可能的分割方案。示例:输入: "aab"输出:[ ["aa","b"], ["a","a","b"]]题目来自leetcodestatic List<List<String>> listList = new ArrayList<>(); p...

2019-09-28 13:07:23 1215

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除