![](https://img-blog.csdnimg.cn/20201014180756923.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
java
文章平均质量分 64
佟印龙
这个作者很懒,什么都没留下…
展开
-
msb 老师讲解 start()和run()的区别
run方法是Runnable接口中定义的,start方法是Thread类定义的。 所有实现Runnable的接口的类都需要重写run方法,run方法是线程默认要执行的方法,有底层源码可知是绑定操作系统的,也是线程执行的入口。 start方法是Thread类的默认执行入口,Thread又是实现Runnable接口的。要使线程Thread启动起来,需要通过start方法,表示线程可执行状态,调用start方法后,则表示Thread开始执行,此时run变成了Thread的默认要执行普通方法。 2)通过start(原创 2021-11-09 13:59:29 · 95 阅读 · 0 评论 -
分布式事务的防悬挂,空回滚
一、TCC简介TCC是一种比较成熟的分布式事务解决方案,可用于解决跨库操作的数据一致性问题;TCC是服务化的两阶段编程模型,其Try、Confirm、Cancel 3个方法均由业务编码实现;其中Try操作作为一阶段,负责资源的检查和预留,Confirm操作作为二阶段提交操作,执行真正的业务,Cancel是预留资源的取消;如下图所示,业务实现TCC服务之后,该TCC服务将作为分布式事务的其中一个资源,参与到整个分布式事务中;事务管理器分2阶段协调TCC服务,在第一阶段调用所有TCC服务的Try方法,在原创 2021-09-24 17:23:33 · 6672 阅读 · 1 评论 -
基于Redis滑动窗口的接口限流
接口限流背景:在做网站的时候经常会遇到恶意访问或者被攻击的安全问题,从而导致服务器宕机或者影响网站正常运营。所以接口限流就应运而生了。基于redis的接口限流我们了解到redis中有着5种常见的数据类型,String、Hash、List、Set、ZSet,今天我们就要用到其中的ZSet来做接口限流这是比较简单的一种方式。其中ZSet中有一个方法,zcountzcount用法zcount 集合的名字 开始区间 结束区间 (作用:统计个区间内值的个数)思路我们将ZSet中集合的名字 设置为 li原创 2021-09-24 17:00:23 · 367 阅读 · 0 评论 -
分布式事务:空回滚、事务悬挂
空回滚:pre阶段超时,此时rollback事务悬挂:pre延时,rollback执行后,pre到达,然后执行了pre参考:https://kuaibao.qq.com/s/20180713A1ZFVR00?refer=spider原创 2021-09-24 16:58:52 · 1746 阅读 · 0 评论 -
3W字详细解析 ConcurrentHashMap 1.7和1.8源码,再也不用担心被面试官吊打了。
文章目录这篇文章,我打算从以下几个方面来讲。1)多线程下的 HashMap 有什么问题?2)怎样保证线程安全,为什么选用 ConcurrentHashMap?3)ConcurrentHashMap 1.7 源码解析底层存储结构常用变量构造函数put() 方法ensureSegment() 方法scanAndLockForPut() 方法rehash() 扩容机制get() 获取元素方法remove() 方法size() 方法是怎么统计元素个数的4)ConcurrentHashM转载 2021-04-12 17:51:46 · 151 阅读 · 0 评论 -
面试官再问你 HashMap 底层原理,就把这篇文章甩给他看
前言HashMap 源码和底层原理在现在面试中是必问的。因此,我们非常有必要搞清楚它的底层实现和思想,才能在面试中对答如流,跟面试官大战三百回合。文章较长,介绍了很多原理性的问题,希望对你有所帮助~目录本篇文章主要包括以下内容:HashMap 的存储结构常用变量说明,如加载因子等HashMap 的四个构造函数tableSizeFor()方法及作用put()方法详解hash()方法,以及避免哈希碰撞的原理resize()扩容机制及原理get()方法为什么HashMap链表会形成死循环,转载 2021-04-12 14:14:04 · 64 阅读 · 0 评论 -
深入分析Synchronized原理(阿里面试题)
记得开始学习Java的时候,一遇到多线程情况就使用synchronized,相对于当时的我们来说synchronized是这么的神奇而又强大,那个时候我们赋予它一个名字“同步”,也成为了我们解决多线程情况的百试不爽的良药。但是,随着学习的进行我们知道在JDK1.5之前synchronized是一个重量级锁,相对于j.u.c.Lock,它会显得那么笨重,以至于我们认为它不是那么的高效而慢慢摒弃它。不过,随着Javs SE 1.6对synchronized进行的各种优化后,synchronized并不会显得那转载 2021-04-09 11:17:49 · 85 阅读 · 0 评论 -
Java 8 新特性 Stream类的collect学习笔记
1.Collectors.toList():转换成List集合。/ Collectors.toSet():转换成set集合。System.out.println(Stream.of("a", "b", "c","a").collect(Collectors.toSet()));2.Collectors.toCollection(TreeSet::new):转换成特定的set集合。TreeSet<String> treeSet = Stream.of("a", "c", "b", "a")原创 2020-09-17 10:41:54 · 346 阅读 · 0 评论 -
JVM参数使用手册
JVM提供了大量的参数配置,可以通过配置这些参数对JVM进行调优、记录GC日志等等,本章只罗列我自己用到过和了解过的参数,根据功能划分。内存相关通过这些参数可以对JVM的内存分配做调整Xms英文解释:Initial heap size(in bytes)中文释义:堆区初始值使用方法:-Xms2g 或 -XX:InitialHeapSize=2048mXmx英文解释:Maximum heap size(in bytes)中文释义:堆区最大值使用方法:-Xmx2g 或 -XX:MaxHeap原创 2020-09-08 09:59:48 · 98 阅读 · 0 评论 -
java架构师资料学习
加微信17610887411获取原创 2020-08-26 11:24:46 · 171 阅读 · 0 评论 -
javaAgent Instrumentation与ClassFileTransformer学习总结
一个代理实现ClassFileTransformer接口用于改变运行时的字节码(class File),这个改变发生在jvm加载这个类之前。对所有的类加载器有效。class File这个术语定义于虚拟机规范3.1,指的是字节码的byte数组,而不是文件系统中的class文件。接口中只有一个方法:byte[] transform( ClassLoader loader, String className,原创 2020-07-24 11:30:50 · 988 阅读 · 0 评论 -
appscan 使用安装()
1、下载软件压缩包文件,首先点击“AppScan_Std_9.0.3.6_Eval_Win.exe”启动安装协议,可选简体中文2、阅读并同意安装协议3、设置安装根目录4、等待程序安装完毕,点击【完成】即可5、先不要运行程序,将破解补丁“LicenseProvider.dll”复制到软件安装根目录下替换使用教程1、 打开appscan应用程序,点击左上角的文件-新建扫描,选择常规扫描2、扫描配置向导,选择第一个,点击下一步3、URl和服务器配置,输入项目入口访问链接4、登录方原创 2020-06-02 10:53:31 · 618 阅读 · 0 评论 -
elk配置
input {file {type => “log”path => “/var/log/appuser/ZM*/*.log”codec => json{charset => “UTF-8”}sincedb_path => “/opt/logstash/sincedb/app_log”discover_interval => 5start_position => “beginning”}}output {elasticsearch {hos原创 2020-06-02 09:33:41 · 107 阅读 · 0 评论 -
Stream 流的认识及简单应用
1、什么是流(Stream)比较文献的定义,Stream是从支持数据处理操作的源生成的元素序列。根据对流(Stream)的定义,我们可以从中提取以下部分:元素序列: 流为特定元素类型的一组有序值提供接口。 但是,流实际上并不存储元素; 它们是按需计算的。源: 流来自数据提供源,例如集合,数组或I / O资源。数据处理操作: Streams支持类似SQL的操作和函数式编程语言的常用操作,例如filter,map,reduce,find,match,sorted等。此外,流操作有两个基本特征流水线:转载 2020-05-26 16:01:20 · 729 阅读 · 1 评论