自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Condition源码分析与等待通知机制,linux系统架构与运维实战pdf

//后继节点Node nextWaiter;进一步说明,等待队列是一个单向队列,而在之前说AQS时知道同步队列是一个双向队列。接下来我们用一个demo,通过debug进去看是不是符合我们的猜想:public static void main(String[] args) {for (int i = 0; i < 10; i++) {Thread thread = new Thread(() -> {lock.lock();【一线大厂Java面试题解析+后端开发学习笔记+最新架构讲解

2021-11-04 20:30:24 176

原创 ConcurrentHashMap源码解读,java大厂面试攻略

当我们享受着jdk带来的便利时同样承受它带来的不幸恶果。通过分析Hashtable就知道, synchronized是针对整张Hash表的,即每次锁住整张表让线程独占,安全的背后是巨大的浪费,慧眼独具的DougLee立马拿出了解决方案----ConcurrentHashMap。ConcurrentHashMap和Hashtable主要区别就是围绕着锁的粒度以及如何锁。如图左边便是Hashtable的实现方式—锁整个hash表;而右边则是ConcurrentHashMap的实现方式—锁桶(或段

2021-11-04 20:28:02 154

原创 ClassUtils常用方法总结,java核心技术第九版百度网盘

getShortCanonicalName(Class<?> cls)getShortClassName(Class<?> cls)getSimpleName(Class<?> cls)@Testpublic void testGetClassName(){//获取simpleNameString simpleName1 = ClassUtils.getSimpleName(String.class);System.out.println(simpleNam

2021-11-04 20:26:19 293

原创 CentOS部署Harbor镜像仓库,java分布式技术栈

更多配置例如https、存储等,请参考官方文档按需设置;开始安装,在install.sh文件所在目录执行命令./install.sh即可安装Harbor,部署成功的控制台信息如下:Creating network “harbor_harbor” with the default driverCreating harbor-log … doneCreating registryctl … doneCreating registry … doneCreating harbor-db

2021-11-04 20:24:05 120

原创 CentOS部署Harbor镜像仓库(1),java技术栈自我理解面试题通俗解说

[]()环境信息今天要部署的Harbor版本是1.9.0,本次部署用的机器信息如下:操作系统:CentOS Linux release 7.7.1908Docker:19.03.2docker-compose:1.23.2[]()部署HarborHarbor官方提供了在线和离线两种安装方式,考虑到企业服务器有可能无法访问外网,因此选择离线安装更加实用;打开Harbor的GitHub仓库的release页面下载离线安装包,地址是:https://github.com/goh

2021-11-04 20:22:04 191

原创 CentOS中VMware tools的安装以及安装失败的解决办法,java架构师视频课程

我们输入命令cd /home 回车 然后在ll查看home下的文件,这时我们可以看到home下的VMware Tools![在这里插入图片描述](https://img-blog.csdnimg.cn/20200624213346162.png?x-oss-【一线大厂Java面试题解析+后端开发学习笔记+最新架构讲解视频+实战项目源码讲义】浏览器打开:qq.cn.hn/FTf 免费领取process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shad..

2021-11-04 20:20:27 1100

原创 Java核心编程总结(五、线程池与死锁),淘汰了80%的Java面试者

| Java核心编程总结(八、IO输入输出流)???? | https://blog.csdn.net/Augenstern_QXL/article/details/116209648 || Java核心编程总结(九、File文件类)???? | https://blog.csdn.net/Augenstern_QXL/article/details/116209674 || Java核心编程总结(十、反射) ???? | https://blog.csdn.net/Augenstern_QXL/art

2021-11-01 14:29:29 88

原创 Java核心编程总结(二、抽象类与接口),linux音频驱动架构

抽象类不能创建对象,如果创建,编译无法通过而报错理解:假设创建了抽象类的对象,调用抽象方法,抽象方法没有方法体,无法执行抽象类一定有而且是必须有构造器,是提供给子类创建对象时,初始化父类成员使用的理解:子类的构造器中,有默认的super(),需要访问父类构造器抽象类中不一定包含抽象方法,但是有抽象方法的类必定是抽象类抽象类的子类,必须重写完抽象父类中的所有抽象方法,否则子类也必须定义成抽象类抽象类存在的意义是为了被子类继承,抽象类体现的是模板思想。1.2接口什么是.

2021-11-01 14:27:47 86

原创 java架构师常见的基础面试题及答案(一),最好的java教程

7. Update 语句,如果只更改1、2个字段,不要Update全部字段,否则频繁调用会引起明显的性能消耗,同时带来大量日志。8. 对于多张大数据量(这里几百条就算大了)的表JOIN,要先分页再JOIN,否则逻辑读会很高,性能很差。9. 尽可能的使用 varchar/nvarchar 代替 char/nchar,节省空间,提高查询效率10. select count(*) from table;这样不带任何条件的count会引起全表扫描,并且没有任何业务意义,是一定要杜绝的。二二、oracle中

2021-11-01 14:25:33 352

原创 java架构之路(多线程)synchronized详解以及锁的膨胀升级过程

4: astore_15: monitorenter6: getstatic #3 // Field java/lang/System.out:Ljava/io/PrintStream;9: ldc #4 // String 只有我拿到锁啦11: invokevirtual #5 // Method java/io/PrintStream.println:(Ljava/l

2021-11-01 14:23:31 68

原创 Chrome上的这些灵魂插件太猛了,碾压其他同款,java架构师成长直通车分享

LastPass:密码管理软件LastPass,全球知名在线密码管理工具之一,采用军事级加密算法,支持自动填充网站用户名和密码,与朋友分享登录信息等实用功能,且在全平台同步免费,无需订阅 Premium,即可在手机、网页、电脑端同步你的所有 LastPass 信息。二维码(QR码)生成器在线的二维码生成器。最方便的用法是把当前的页面生成二维码,方便手机扫码快速访问。下载+Chrome的下载管理在二级菜单里,进去很不方便。装了这个插件就可以直接看和管理,很好用。Github 加速器一键加速

2021-10-31 13:34:52 179

原创 CDH5部署三部曲之二:部署和设置,高薪程序员必会

mkdir -p /opt/cloudera/parcel-repochown cloudera-scm:cloudera-scm /opt/cloudera/parcel-repo将前面下载好的三个文件放入目录/opt/cloudera/parcel-repo,这三个文件是:CDH-5.7.6-1.cdh5.7.6.p0.6-el7.parcel、manifest.json、CDH-5.7.6-1.cdh5.7.6.p0.6-el7.parcel.sha1将/opt/cloudera/par

2021-10-31 13:32:55 190

原创 ART虚拟机 _ Java对象和类的内存结构,java中级面试题库weixin

当我们想要创建一个java.lang.Class类的实例(类对象)时,以下三种方法可供选择:Class.forName(“className”)MyClass.classobj.getClass()假设我们有一个类com.hangl.Exam【一线大厂Java面试题解析+核心总结学习笔记+最新架构讲解视频+实战项目源码讲义】浏览器打开:qq.cn.hn/FTf 免费领取ple,那么com.hangl.Example.class就表示该类的类对象。在ART中,该类对象的创建同时也是art

2021-10-31 13:25:13 242

原创 Apache Log4j2详解,【高级Java架构师系统学习

[]()引用依赖在一般项目中使用Log4j2至少需要引用log4j-api-2.x和log4j-core-2.x这两个jar包。org.apache.logging.log4jlog4j-core2.12.0org.apache.logging.log4jlog4j-api2.12.0 在spring boot项目中使用Log4j2org.springframework.bootspring-boot-starter-weborg.springframework.bo

2021-10-31 13:23:31 979

原创 Anaconda安装,linux操作系统学习

方式二(已经打开项目)9.总结[]()1.Anaconda是什么Anaconda指的是一个开源的Python发行版本,其包含了conda、Python等180多个科学包及其依赖项。Anaconda也是Python的包管理器和环境管理器。先来解决一个初学者都会问的问题:我已经安装了Python,那么为什么还需要Anaconda呢?原因有以下几点:(1)Anaconda附带了一大批常用数据科学包,它附带了conda、Python和 180 多个科学包及其依赖项。因此你可以用Anacon..

2021-10-31 13:21:17 199

原创 Alibaba船新出品“Java架构核心宝典”,java教程视频百度网盘

三、大数据与高并发=========3.1 秒杀架构设计3.2 数据库架构发展历程3.3 MySQL的扩展性瓶颈3.4 为什么要使用NoSQL=Not Olny SQL3.5 传统RDBMS VS NoSQL3.6 NoSQL数据库的类型3.7 阿里巴巴中文站商品信息如何存放?3.8 数据的水平拆分和垂直拆分3.9 分布式事务3.10 BitMap3.11 Bloom Filter3.12 常见的限流算法3.13 负载均衡![阿里巴巴新产“Java架

2021-10-31 13:19:16 101

原创 Java架构师的升级之路

除了上述的问题之外,资深架构更像一个救火队员,比如在公司的业务体系里,任何一个团队报出的和架构相关的问题,比如调消息队列有延迟,调分库分表时报内存OOM异常了,或者因Dubbo底层而导致的延迟或OOM,资深架构得能亲自或带领手下解决具体的问题。三、和高级开发相比,资深架构一定得精通的技能(或素质)其实高级开发和资深架构在需要掌握的技能方面,并没太大的差别,具体而言,能帮助实现性能优化的分布式组件和数据库组件(或者叫中间件)也就这么多,linux下的操作命令也就这么些,一些系统管理的工具,比如Maven

2021-10-29 15:27:00 99

原创 Java提高篇——Java中的异常处理

对于运行时异常、错误和检查异常,Java技术所要求的异常处理方式有所不同。由于运行时异常及其子类的不可查性,为了更合理、更容易地实现应用程序,Java规定,运行时异常将由Java运行时系统自动抛出,允许应用程序忽略运行时异常。对于方法运行中可能出现的Error,当运行方法不予捕捉时,Java允许该方法不做任何抛出声明。因为,大多数Error异常属于永远不能被允许发生的状况,也属于合理的应用程序不该捕捉的异常。对于所有的检查异常,Java规定:一个方法必须捕捉,或者声明抛出方法之外。也就是说,当一个方法

2021-10-29 15:25:04 171

原创 Java描述 数据结构与算法

算法:NonextremeElement(S[], n)输入:由n个整数构成的集合S输出:其中的任一非极端元素{任取的三个元素x, y, z ∈ S; //既然S是集合,这三个元素必互异通过比较,找出其中的最小者min{x, y, z}和最大者max{x, y, z};输出最小、最大者之外的那个元素;}思路:S 是有限集,故其中的最大、最小元素各有且仅有一个。因此,无论 S 的规 模有多大,在前三个元素 S[0]、S[1]和 S[2]中,必包含至少一个非极端元素。我们可以取 x = S

2021-10-29 15:23:20 106

原创 Java性能调优:利用VisualVM进行性能分析

老生代一直在gc,当程序继续运行可以发现老生代gc还在继续:增加到了7次,但是老生代的内存并没有减少。说明存在无法被回收的对象,可能是内存泄漏了。如何分析是那个对象泄漏了呢?打开抽样器标签:点击后如下图:按照程序输出进行堆dump,当输出second时,dump一次,当输出forth时dump一次。进入最后dump出来的堆标签,点击类:比较结果如下:可以看出在两次间隔时间内TestMemory对象实例一直在增加并且多了,说明该对象引用的方法可能存在内存泄漏。如何查看对象引用关系呢?

2021-10-29 15:21:25 211

原创 Java必备——MySql 三大知识点

知道了索引的设计,我们能够知道另外一些信息:MySql 的主键不能太大,如果使用 UUID 这种,将会浪费 B+ 树的非叶子节点。MySql 的主键最好是自增的,如果使用 UUID 这种,每次插入都会调整 B+树,从而导致页分裂,严重影响性能。那么,如果项目中使用了分库分表,我们通常都会需要一个主键进行 sharding,那怎么办呢?在实现上,我们可以保留自增主键,而逻辑主键用来作为唯一索引即可。[]()[]()2. 锁机制关于 Mysql 的锁,各种概念就会喷涌而出,事实上,锁有

2021-10-29 15:19:44 198

原创 Java并发编程-AQS源码之条件队列

System.out.println(name + “==>成功获取到锁” + lock);try {condition.await();} catch (InterruptedException e) {e.printStackTrace();}System.out.println(name + “==>被唤醒”);lock.unlock();System.out.println(name + “==>释放锁”);}, “线程1”);thread1.start();

2021-10-29 15:17:22 106

原创 Java并发学习笔记:ReentrantLock

锁的获取主要是这两个函数,当然还有 lockInterruptibly( ) 和 tryLock(long timeout, TimeUnit unit) 这种响应中断和带时间限制的函数,不过和普通的lock( )和tryLock( )机理大致相同,就不介绍了。先以非公平锁的lock流程为例:// 位于Sync中final void lock() {if (!initialTryLock())acquire(1);}// 位于NonfairSync中final boolean initialT

2021-10-29 15:15:40 128

原创 Java工程师的进阶之路-Kafka篇(一)

2.为何使用消息系统解耦:允许你独立的扩展或修改两边的处理过程,只要确保它们遵守同样的接口约束。冗余:消息队列把数据进行持久化直到它们已经被完全处理,通过这一方式规避了数据丢失风险。许多消息队列所采用的"插入-获取-删除"范式中,在把一个消息从队列中删除之前,需要你的处理系统明确的指出该消息已经被处理完毕,从而确保你的数据被安全的保存直到你使用完毕。扩展性:因为消息队列解耦了你的处理过程,所以增大消息入队和处理的频率是很容易的,只要另外增加处理过程即可。灵活性 &am

2021-10-29 15:13:26 78

原创 Java岗大厂面试百日冲刺 - 日积月累,每日三题【Day7

当然在可重复读隔离级别下,未提交变更对其他事务也是不可见的。 || 串行(xíng)化(S) | 正如物理书上写的,串行是单线路,顾名思义在MySQL中同一时刻只允许单个事务执行,“写”会加“写锁”,“读”会加“读锁”。当出现读写锁冲突的时候,后访问的事务必须等前一个事务执行完成,才能继续执行。 |搞懂了隔离级别以及实现原理其实就可以理解ACID里的隔离性了。前面说过原子性,隔离性,持久性的目的都是为了要做到一致性,但隔离型跟其他两个有所区别,原子性和持久性是为了要实现数据的正确、可用,比如要做到宕机

2021-10-29 15:11:25 155

原创 SpringBoot整合Shiro实现权限管理,经典实战教程

String username = authenticationToken.getPrincipal().toString();if(!username.equals(“zhang”)){throw new UnknownAccountException(“此用户不存在”);}//返回验证信息,参数:1、用户名 2、正确密码 3、realm名称return new SimpleAuthenticationInfo(username,“123”, getName());}}2) 使用自定义Re

2021-10-21 22:21:26 406

原创 SpringBoot----日志框架和配置,熬夜整理Java面试笔试题

如果直接使用logback.xml为文件名,它将直接被日志框架识别,如果继续使用profile功能,会有以下错误:SpringBoot对日志框架的统一处理以及日志设置可以参考下面这篇文章切换日志框架参考下面这篇文章[]()日志框架分类和选择========================================================================[]()SLF4j使用===================================..

2021-10-21 22:18:16 159

空空如也

空空如也

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

TA关注的人

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