自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Tomcat服务器搭建及测试教程,腾讯+华为+阿里面试真题分享

5、Tomcat服务器测试Hello!你好哇,我是灰小猿!一个超会写bug的程序猿!最近在学习Java web开发时,需要将项目发布到Tomcat服务器上去,所以在这里记录一下在window环境下搭建Tomcat服务器的基本教程。Java在服务器端的应用非常丰富,诸如Servlet,jsp和很多第三方框架等等。而在Java web上的开发就是基于请求和响应来实现的,所谓请求和响应,我们可以这样理解:请求:浏览器(客户端)向服务器发送请求信息,请求对项目进行访问,响应:服务器收到请求并

2021-08-10 18:47:24 298

原创 Tomcat服务器搭建及测试教程(1),腾讯技术官发布的“神仙文档”火爆网络

Tomcat是一个免费开源的servlet容器,我们可以在官网获取下载:https://tomcat.apache.org/download-70.cgi在首页中我们可以根据自己电脑和JDK的不同版本,选择下载不同的Tomcat,在这里我使用的是JDK10,所以下载了最后一个。你也可以根据下表对应下载:2、运行apache-tomcat-7.0.105.exe安装包================================下载完毕之后,我们点击运行tomcat安装包就可以看到如下这样的

2021-08-10 18:46:13 298

原创 tomcat原理及作用,MySQL数据中有很多换行符和回车符

3、经验总结附、一张有故事的照片(六)我到公司后先测试一下客户给我的错误示例(果然搜不到),然后排查一下昨天的数据是否有问题,发现昨天客户用excel导入的数据中,存在很多\r\n这种换行符和回车符。如:库中数据为:“换行符\n换行符\n换行符”,然后在界面通过如下SQL查询,那自然是搜不到咯!SELECT * from `LOL` where name = '换行符换行符换行符'; 换行符:CHAR(10) = "\n"回车符: CHAR(13) = "\r"在..

2021-08-10 18:45:01 331

原创 ThreadLocal到底是什么,尚硅谷docker高级

线程安全问题是JDK 未采用该方案的一个主要原因。方案二上面这个方案,存在多线程访问同一个 Map时可能会出现的同步问题。如果该 Map 由 Thread 维护,从而使得每个 Thread 只访问自己的 Map,就不存在这个问题。该方案如下图所示。该方案虽然没有锁的问题,但是由于每个线程在访问ThreadLocal 变量后,都会在自己的 Map 内维护该 ThreadLocal 变量与具体实例的映射,如果不删除这些引用(映射),就有可能会造成内存泄漏的问题。我们一起来看一下Jdk8是如何解决这个问题

2021-08-10 18:43:55 203

原创 Thread-start()-,它是怎么让线程启动的呢,Java面试问项目

group.threadStartFailed(this); } } catch (Throwable ignore) {}}}* 线程启动方法 start(),在它的方法英文注释中已经把核心内容描述出来。Causes this thread to begin execution; the Java Virtual Machine calls the run method of this thread. 这段话的意思是:由 JVM 调用此线程的 ...

2021-08-10 18:42:42 170

原创 String的内存分配与拼接操作,华为架构师深入讲解Java开发

字符串拼接操作常量与常量的拼接结果在常量池,原理是编译期优化常量池中不会存在相同内容的变量只要其中有一个是变量,结果就在堆中。变量拼接的原理是StringBuilder如果拼接的结果调用intern()方法,则主动将常量池中还没有的字符串对象放入池中,并返回此对象地址举例1:public static void test1() { // 都是常量,前端编译期会进行代码优化 String s1 = "a" + "b" + "c"; Str.

2021-08-10 18:41:33 181

原创 String源码分析,中高级Java开发面试题

空参构造 public String() { this.value = "".value; }解析String str=new String("abc");1.先创建一个空的String对象2.常量池中创建一个abc,并赋值给第二个String3.将第二个String的引用传递给第一个String注:如果常量池中有abc,则不用创建,直接把引用传递给第一个StringString类型初始化public String(String original) {

2021-08-10 18:40:25 96

原创 【linux,跟Java初学者分享几点经验

这次的是使用ubuntu的apt来进行openjdk的下载和卸载,不得不说linux的包管理系统真的香!1、使用apt下载openJDK我们先使用apt来下载openJDK# 更新软件源sudo apt update# 查找openjdk,找到自己想要的版本sudo apt search openjdk# 安装openjdksudo apt install openjdk-11-jdk 2、检查java是否安装成功使用java -version查看java是否安

2021-08-09 19:21:01 94

原创 【linux(2),Redis面试复习大纲在手面试不慌

这次的是使用ubuntu的apt来进行openjdk的下载和卸载,不得不说linux的包管理系统真的香!1、使用apt下载openJDK我们先使用apt来下载openJDK# 更新软件源sudo apt update# 查找openjdk,找到自己想要的版本sudo apt search openjdk# 安装openjdksudo apt install openjdk-11-jdk 2、检查java是否安装成功使用java -version查看java是否安

2021-08-09 19:19:48 81

原创 【linux(1),八年Java开发心路历程

2、检查java是否安装成功使用java -version查看java是否安装成功java -version 有版本的显示就是安装成功了3、更换java版本在学习过程中我们经常会学习不同版本的java的特性,这个时候需要我们配置其他版本的java来学习。那么在ubuntu中如何更换java版本呢?我们可以通过如下命令来更换java版本:sudo update-alternatives --config java 如果我们只用apt安装过一个版本的java,那么会显示...

2021-08-09 19:18:32 101

原创 【Linux 4,2021最新Java笔试题及答案

(3)每天凌晨2:00将mysql数据库testdb,备份到文件中。指令:mysqldump -u root -p密码 数据库 > /home/db.bakcrontab -e0 2 * * *  mysqldump -u root -proot testdb > /home/db.bak4、at定时任务(1)at:一次性定时执行任务(2)at命令格式at [选项][时间]Ctrl + D 结束at命令的输入二、Linux磁盘分区和挂载

2021-08-09 19:17:28 158

原创 【JVM原理探索,Java组件化架构实践

for循环和while循环这两条循环语句也是使用类似的方式来实现的,不同的是它们通常还包含一条goto指令,来达到循环的目的。do-while循环不需要任何goto指令因为他们的条件分支位于字节码的尾部。更多的关于循环的细节可以查看loops section。一些操作码可以比较两个整数或者两个引用,然后在一个单条指令中执行一个分支。其它类型之间的比较如double,long或float需要分为两步来实现。首先,进行比较后将1,0或-1推送到操作数栈顶。接下来,基于操作数栈上值是大于,小于还..

2021-08-09 19:16:20 99

原创 【JVM 3,现在做Java开发有前途吗

plugins/org.eclipse.equinox.launcher_1.4.0.v20161219-1356.jar–launcher.libraryplugins/org.eclipse.equinox.launcher.win32.win32.x86_64_1.1.551.v20171108-1834-productorg.eclipse.epp.package.jee.product-showsplashorg.eclipse.epp.package.common–launcher

2021-08-09 19:15:06 104

原创 【JVM 2,最经典的HashMap图文详解

GC在 HotSpot VM 5.0里有四种:~incremental (sometimes called train) low pause collector~已被废弃,不在介绍类别serial collectorparallel collector( throughput collector )concurrent collector(concurrent low pause collector)介绍单线程收集器使用单线程去完成所有的GC工作,没有线程间的通信,这种方式会相对高效

2021-08-09 19:13:56 114

原创 初学者应该如何开启自己的编程生涯?,nginx架构图

后端。看不见的真相,未透露的故事。在过去,知道PHP足以自称为后端开发者,然后微软引入了ASP.NET。这两个就开始打架,直到Node.js冒出来把东西整理得井然有序。一些事件驱动开发的概念在Node.js上得到了最好的应用,所以如果你选择这个的话,你就是帮了你的项目大忙了。后端令人困惑的一部分是语言的多样性,在后端你可以采用任何想要的语言,关键是,“后端”其实是“查询数据库、处理书、对客户端进行响应并且尽可能高效执行”的简称。,而选择“合适”的语言/技术/数据库并非选项。尽管一些开发者钟情MySQL或者

2021-08-08 23:20:35 394

原创 分布式架构的演进过程,docker面试题汇总

节点节点是指一个可以独立按照分布式协议完成一组逻辑的程序个体。在具体的项目中,一个节点表示的是一个操作系统上的进程。副本机制副本指的是在分布式系统中为数据或服务提供冗余。数据副本指在不同的节点上持久化同一份数据,当出现某一个节点的数据丢失时,可以从副本读取数据。数据副本是分布式系统中结果数据丢失的唯一手段。服务副本表示的是多个节点提供相同的服务,通过主从关系来实现服务的高可用方案。**中间件**中间件位与操作系统提供的服务之外,又不属于应用,它是位与应用和系统层之间为开发者方便的处理通信,.

2021-08-08 23:19:15 130

原创 分布式任务调度系统chaconne介绍,linux高级教程

@ChacJob@ChacTrigger(triggerType = TriggerType.SIMPLE)public class DemoTaskOne { @Run public Object execute(JobKey jobKey, Object attachment, Logger log) throws Exception { log.info("DemoTaskOne is running at: {}", DateUtils.format(System.cur.

2021-08-08 23:18:07 219

原创 分布式之API接口返回格式如何优雅设计?,苦熬一个月

#2000~2999 区间表示用户错误#3000~3999 区间表示接口异常这样前端开发人员在得到返回值后,**根据状态码就可以知道,大概什么错误**,再根据message相关的信息描述,**可以快速定位。**### Message这个字段相对理解比较简单,就是发生错误时,如何友好的进行提示。一般的设计是和code状态码一起设计,如![](https://img-blog.csdnimg.cn/img_convert/73870344e5c470bb3b51878b0bab52be.png)再

2021-08-08 23:16:58 176

原创 分布式ID(数据库多主模式,这些知识点你会吗

CREATE TABLE SEQID.SEQUENCE_ID (id bigint(20) unsigned NOT NULL auto_increment,stub char(10) NOT NULL default ‘’,PRIMARY KEY (id),UNIQUE KEY stub (stub)) ENGINE=MyISAM;可以使用下面的语句生成并获取到一个自增ID```javabegin; replace into SEQUENCE_ID (stub) VALUES ('any

2021-08-08 23:15:51 339

原创 凉了!张三同学没答好,熬夜整理最新大厂Java高频面试题

$ mkfifo myPipemyPipe 就是这个管道的名称,基于 Linux 一切皆文件的理念,所以管道也是以文件的方式存在,我们可以用 ls 看一下,这个文件的类型是 p,也就是 pipe(管道) 的意思:$ ls -lprw-r--r--. 1 root root 0 Jul 17 02:45 myPipe接下来,我们往 myPipe 这个管道写入数据:$ echo "hello" > myPipe // 将数据写进管道

2021-08-08 23:14:45 180 1

原创 写博客是一种乐趣,一种需要培养的乐趣,Java程序员最大的悲哀是什么

3、可以和大家进行交流,这个还是挺有意思的这个篇《为什么很多人不愿意用hibernate了?》是我最火的文章,但,已成往事,在谩骂中成长,在博弈中进步,这就是博客的乐趣,这才是互联网最重要的分享精神,这才是互联网最可贵的互助精神。4、共享的自豪感当有人因为一个问题,读到了你的文章,对他确实是有帮助的,这种感觉是美好的,是会有一种自豪感的。5、what?写博客还能赚钱是的,你没看错,写博客是可以赚钱的,更有甚者,收入不菲!我的博客历史之辉煌与堕落============写博客是一

2021-08-08 23:13:31 1752 10

原创 springcloud入门实战进阶百度云,【MyBatis 5(1)

SqlSession是MyBatis的关键对象,是执行持久化操作的独享,类似于JDBC中的Connection。它是应用程序与持久层之间执行交互操作的一个单线程对象,也是MyBatis执行持久化操作的关键对象。SqlSession对象完全包含以数据库为背景的所有执行SQL操作的方法,它的底层封装了JDBC连接,可以用SqlSession实例来直接执行被映射的SQL语句。每个线程都应该有它自己的SqlSession实例。SqlSession的实例不能被共享,同时SqlSession也是线程不安全的,绝对不能讲

2021-08-06 12:54:51 195

原创 SpringBoot项目瘦身指南,大厂如何面试看出你的水平

其实初级开发升级到高级开发还是相对容易的,只要主观上态度上端正,别固步自封,然后到处看些资料多和人交流即可。如果进互联网公司,在大压力环境下,身边大牛再多些,升级过程会更加顺利。####2 高级程序员的技能瓶颈在于分布式组件高级开发论技术,有一定的调优经验,也有一定分析日志解决问题的能力,也能debug。论解决问题的能力,也能和别人沟通,从而接简单的需求,并能分析和解决一些问题。论团队合作,也能带3,4个人一起开发。其实这类能力,对工作个3年的程序员来说,不难达到,如果在节奏比较快的互联网公司里,甚至2

2021-08-06 12:53:40 104 1

原创 springboot入门书籍推荐,电商实战之优惠卷实现(1)

1.2. 常见两种实现思路对于程序来说,对于优惠卷这功能要实现的就是超时自动失效的功能,这功能也不难实现,主要实现方式有两种,一种是使用定时任务的方式,另外一种就是使用消息通知1.2.1. 定时任务的方式如图所示,这是使用定时任务的方式来实现优惠券功能的逻辑,你要实现定时任务的功能可以直接使用Thread线程也可以使用TimeTask等方式方式很多,优点很明显,就是功能简单,实现起来很容易,但如果使用定时任务的方式有两个很大的弊病1. 不及时:如果使用5秒来扫描一次数据库,那数据库的 enjoy

2021-08-06 12:52:32 640

原创 springboot入门书籍推荐,“最粉嫩

串行的垃圾回收器就不说了,这里专门讲下并发的垃圾回收器CMS(Concurrent Mark Sweep)回收器顾名思义,这是并发的垃圾回收器,这种回收器是一种以获取最短的回收停顿时间为目的的垃圾收集器,目前很大一部分Java的互联网应用或者B/S系统的服务器上,由于这类应用尤其在意相应速度,希望系统停顿时间越短越好,这样用户体验也会更好,CMS就非常符合这类应用的需求。从名字就可以看出,这种回收器是基于标记清除的算法实现,它的运作过程相对串行的垃圾回收器相对复杂点,分为以下4个步骤初始标记:很短,

2021-08-06 12:51:18 834

原创 rocketmq教程教程,JDK8 Stream 数据流效率分析

①只能遍历一次:数据流的从一头获取数据源,在流水线上依次对元素进行操作,当元素通过流水线,便无法再对其进行操作,可以重新在数据源获取一个新的数据流进行操作;②采用内部迭代的方式:对Collection进行处理,一般会使用 Iterator 遍历器的遍历方式,这是一种外部迭代;而对于处理Stream,只要申明处理方式,处理过程由流对象自行完成,这是一种内部迭代,对于大量数据的迭代处理中,内部迭代比外部迭代要更加高效;stream 相对于 Collection 的优点无存储:流并不存储值;流的

2021-08-06 12:50:13 182

原创 rabbitmq视频教程,面试官:

就一个类来说,应该仅有一个引起它变化的原因。也就是说,一个类应该只有一个职责。 如果有多个职责,那么就相当于把这些指责耦合在起,一个职责的变化就可能削弱或抑制了这个类完成其他职责的能力,引起类的变化的原因就会有多个。所以在构造一个类时, 将类的不同职责分离至两个或多个类中(或者接口中),确保引起该类变化的原因只有一个。(2)开闭原则(OCP)================软件组成实体应该是可扩展的,但是不可修改。开放-封闭原则认为应该试图设计永远也不需要改变的模块。可以添加新代码来打展系统的行为,不

2021-08-06 12:49:06 80

原创 rabbitmq原理总结,Java反射的简单入门

@author 70241*/public class ClassDemo {@Testpublic void classTest1() { try { Class class1 = Class.forName("com.dingyu.User");// 第一种获取Class对象的方法 User user = new User(); Class class2 = user.getClass();// 第二种获取Class对...

2021-08-06 12:48:00 98

原创 PDF超过6000页,OMG,学它

4.5 客户端常见异常4.6 客户端案例分析第5章 持久化持久化,Redis的持久化功能有效避免因进程退出造成的数据丢失问题,本章首先介绍RDB和AOF两种持久化配置和运行流程,其次对常见的持久化问题进行定位和优化,最后结合Redis常见的单机多实例部署场景进行优化。5.1 RDB5.2 AOF5.3 问题定位与优化5.4 多实例部署Tips:由于内容过多,下面章节内容我将主要展示各个知识点以及部分截图,完整版学习笔记领取:https://docs.qq.com/doc/DU

2021-08-06 12:46:48 114

原创 Java程序员校招蚂蚁金服,大专生出身,做Java程序员真的没有春天吗

具体面试过程问题那今天就来说一下吧。(仅是个人真实情况)###拼多多一面首先自我介绍参加过哪些项目并发编程三要素?实现可见性的方法有哪些?多线程的价值?创建线程的三种方式的对比?画出线程的状态流转图常用的并发工具类有哪些?CyclicBarrier 和 CountDownLatch 的区别CAS 的问题:1、CAS 容易造成 ABA 问题2、不能保证代码块的原子性3、CAS 造成 CPU 利用率增加ReadWriteLock 是什么一面面试题答案:###拼多多二面自我介绍什

2021-08-05 12:04:44 196

原创 Java程序员春招三面蚂蚁金服,丹丹丹学妹哭着对我说:学长

泛型:aasaas泛型的本质是参数化类型或者参数化多态的应用,即可以将操作的数据类型指定为方法签名中的一种特殊参数,这种参数类型能够用在类、接口和方法的创建中,分别构成泛型类、泛型接口和泛型方法。泛型让程序员能够针对泛化的数据类型编写相同的算法,这极大地增强了编程语言的类型系统及抽象能力。aas[注]:Java和C#两门语言各自添加了泛型的语法特性,但实现方式却截然不同,其实Java的泛型直到今天依然作为Java语言不如C#语言好用。aaaasC#实现的泛型aaaaasdass实现方式:“具现

2021-08-05 12:03:44 230

原创 Java程序员春招三面蚂蚁金服,1-7中HashMap死循环分析

现在hashmap中有三个元素,Hash表的size=2, 所以key = 3, 7, 5,在mod 2以后都冲突在table[1]这里了。按照方法中的代码对table[1]中的链表来说,进入while循环,此时e=key(3),那么next=key(7),经过计算重新定位e=key(3)在新表中的位置,并把e=key(3)挂在newTable[3]的位置这样循环下去,将table[1]中的链表循环完成后,于是HashMap就完成了扩容并发下的扩容上面都是单线程下的扩容,当多线程进行扩

2021-08-05 12:02:48 132

原创 Java程序员必经的实践之路:微服务与SOA架构

而另一方面,微服务推崇执行的标准(例如HTTP)却是人们广泛了解并共同使用的。我们可以通过选择合适的语言或工具来构建某个组件微服务。SOA与微服务还有一个更大的区别:领域模型。在基于微服务的软件中,每个微服务应该在本地存储自身管理的数据,并在领域模型分别隔离到单个服务中。而在面向SOA的软件中,数据往往存储在单个大型的数据库中,服务之间会共享领域模型。二、面向服务的架构SOA面向服务的架构是一种软件体系结构,应用程序的不同组件通过网络上的通信协议向其他组件提供服务。通信可以是简单的数据传递,也可以是两

2021-08-05 12:01:45 313

原创 Java程序员必经的实践之路:Java中高级核心知识全面解析(11)

ThreadPoolTaskExecutor定义一些策略:ThreadPoolExecutor.AbortPolicy:抛出RejectedExecutionException来拒绝新任务的处理。ThreadPoolExecutor.CallerRunsPolicy:调用执行自己的线程运行任务,也就是直接在调用execute方法的线程中运行( run )被拒绝的任务,如果执行程序已关闭,则会丢弃该任务。因此这种策略会降低对于新任务提交速度,影响程序的整体性能。另外,这个策略喜欢增加队列容量。如果您的应

2021-08-05 12:00:37 100

原创 Java程序员必备!Dagger2源码分析(二(1)

提起hook概念,相信大家都听说过,然后hook就是将反射和动态代理运用于Android平台源码之上的。可是,反射的应用场景缺非常广泛,注解的内容也同样需要使用反射去获取,所以反射是我们Android开发者必须要学习的知识。##反射#####什么是反射?反射 (Reflection) 是 Java 的特征之一,它允许运行中的 Java 程序获取自身的信息,并且可以操作类或对象的内部属性简而言之,通过反射,我们可以在运行时获得程序或程序集中每一个类型的成员和成员的信息。程序中一般的对象的类型都是在编.

2021-08-05 11:59:26 102

原创 Java程序员必会!没有返回值的构造函数是怎么完成赋值的?

众所周知,在Java里是不能给构造函数写返回值的,如果在低版本的编译器定义一个构造器写上返回值可能会报错,高版本里面他就是一个普通的方法。可是如果构造函数没有返回值,那么比如Test t = new Test()我们new一个对象的时候是怎么赋值的呢?构造函数有返回值吗写一段代码测试一下:public class Test { public Test() { } public static void main(String[] args) { Test t

2021-08-05 11:58:24 306

原创 Java面试必问!Spring事务扩展机制(2)

TransactionAspectSupport#invokeWithinTransactionTransactionAspectSupport#invokeWithinTransaction 是 Spring 对处理的处理。下面我们来大概分析一下它的处理过程:上面的代码逻辑如下:TransactionAttributeSource#getTransactionAttribute 获取事务相关的信息(TransactionAttribute),以注解型事务为例,看方法获取类上有没有标注@Tran

2021-08-04 19:27:07 479

原创 Java面试必问!2020-08-28(1)

对于引用数据类型reference来说,如数组引用、对象引用等,如果没有对其进行显式地赋值而直接使用,系统都会为其赋予默认的零值,即null。如果在数组初始化时没有对数组中的各元素赋值,那么其中的元素将根据对应的数据类型而被赋予默认的零值。如果类字段的字段属性表中存在ConstantValue属性,即同时被final和static修饰,那么在准备阶段变量value就会被初始化为ConstValue属性所指定的值。假设上面的类变量value被定义为: public static final i..

2021-08-04 19:26:07 308

原创 Java面试官:Kafka集群管理

集群是一种计算机系统, 它通过一组松散集成的计算机软件和/或硬件连接起来高度紧密地协作完成计算工作。在某种意义上,他们可以被看作是一台计算机。集群系统中的单个计算机通常称为节点,通常通过局域网连接,但也有其它的可能连接方式。集群计算机通常用来改进单个计算机的计算速度和/或可靠性。一般情况下集群计算机比单个计算机,比如工作站或超级计算机性能价格比要高得多。集群的特点集群拥有以下两个特点:可扩展性:集群的性能不限制于单一的服务实体,新的服务实体可以动态的添加到集群,从而增强集群的性能。高可用性:集群当

2021-08-04 19:22:37 246

原创 Java面试官最爱问的垃圾回收机制,这位阿里P7大佬分析总结的属实到位

可达性分析算法:判断对象的引用链是否可达可达性分析算法是通过判断对象的引用链是否可达来决定对象是否可以被回收。可达性分析算法是从离散数学中的图论引入的,程序把所有的引用关系看作一张图,通过一系列的名为 “GC Roots” 的对象作为起始点,从这些节点开始向下搜索,搜索所走过的路径称为引用链(Reference Chain)。当一个对象到 GC Roots 没有任何引用链相连(用图论的话来说就是从 GC Roots 到这个对象不可达)时,则证明此对象是不可用的,如下图所示。在Java中,可作为 GC

2021-08-04 19:21:22 159

空空如也

空空如也

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

TA关注的人

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