自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 如何优雅的写出你的SQL语句?

毫无疑问,编写代码是一门艺术而非科学,没有程序员可以编写出既可读又可维护的漂亮代码,即使有经验也是如此。一般来说,当您学习编码的艺术时,编码水平会随着经验而提高,例如,你会变得更喜欢组合而不是继承或更喜欢接口而不是实现,但是只有少数开发人员能够掌握这些技术。SQL查询也是如此。您构建查询的方式,您编写它的方式,如果正确的话,可以很好地将您的意图传达给其他开发人员。需要更多教程,微信扫码即可 在本文中,我将向您展示一些我过去尝试过的编写风格,介绍它们的优缺点以及我认为最好的SQL查...

2021-11-16 15:46:25 1217

原创 Java题题练(一),你不得不掌握的知识点。

这些你都会了吗?来测一测吧! 需要更多教程,微信扫码即可 题目一:下列哪个对访问修饰符作用范围由大到小排列是正确的?A:private>default>protected>publicB:public>default>protected>privateC:private>protected>default>publicD:public>protected>default>private题目二:关于ja...

2021-11-15 16:30:01 557

转载 Java 性能优化的 55 个细节

1. 尽量在合适的场合使用单例 2. 尽量避免随意使用静态变量 3. 尽量避免过多过常的创建Java对象 4. 尽量使用final修饰符 5. 尽量使用局部变量 6. 尽量处理好包装类型和基本类型两者的使用场所 7. 慎用synchronized,尽量减小synchronize的方法 9. 尽量不要使用finalize方法 10. 尽量使用基本数据类型代替对象 11. 多线程在未发生线程安全前提下应尽量使用Has...

2021-10-29 16:23:50 614

转载 不要再问我this的指向问题了

this的指向已经是一个老生常谈的问题,每逢面试都要去复习复习,近来巩固js的基础,决心彻底掌握这个知识点,一劳永逸。说明一下,为了不影响大家的思考过程,下面的代码都不会去注释答案,想知道答案,只需要去控制台执行一下。四类场景逐一击破首先,分析this的指向共有四种类型,在分析之前,我们首先带好两个锦囊:1.函数被调用时(即运行时)才会确定该函数内this的指向。因为在函数中this与arguments是两个特殊的变量,在函数被调用时才会取得它们,而且搜索这两个变量时只会在活动对象范围里面去..

2021-12-14 16:40:56 317

原创 JVM 基础面试题总结

JVM 的主要作用是什么?JVM 就是 Java Virtual Machine(Java虚拟机)的缩写,JVM 屏蔽了与具体操作系统平台相关的信息,使 Java 程序只需生成在 Java 虚拟机上运行的目标代码 (字节码),就可以在不同的平台上运行。请你描述一下 Java 的内存区域?JVM 在执行 Java 程序的过程中会把它管理的内存分为若干个不同的区域,这些组成部分有些是线程私有的,有些则是线程共享的,Java 内存区域也叫做运行时数据区,它的具体划分如下: 虚拟机栈: ...

2021-12-14 16:34:42 360

转载 漫画 | 为什么面向对象糟透了

又是周末,编程语言“三巨头”Java,Lisp和C语言照例在Hello World咖啡馆聚会。对于三位老顾客,服务员总是殷勤接待原来这是Erlang之父Joe Armstrong写的一篇“战斗檄文”,里边充满了对面向对象的批判Java看到C语言这么顽冥不化,决定上代码,给他点儿颜色瞧瞧。没想到C语言不甘示弱,也把代码搬了出来Java无语,心说这两个家伙就是胡搅蛮缠。突然,他心中一动:我怎么忘记多态了!Java看到C语言已经入套,...

2021-12-14 15:45:34 360

转载 一些防止 Java 代码被反编译的方法

由于Java字节码的抽象级别较高,因此它们较容易被反编译。本节介绍了几种常用的方法,用于保护Java字节码不被反编译。通常,这些方法不能够绝对防止程序被反编译,而是加大反编译的难度而已,因为这些方法都有自己的使用环境和弱点。隔离Java程序最简单的方法就是让用户不能够访问到Java Class程序,这种方法是最根本的方法,具体实现有多种方式。例如,开发人员可以将关键的Java Class放在服务器端,客户端通过访问服务器的相关接口来获得服务,而不是直接访问Class文件。这样黑客就没有办法[..

2021-12-14 15:35:29 415

转载 这 10 个程序员的好习惯,让我变强了

今天给大家分享几个程序员的好习惯。1. 引入新的技术栈的时候,要以官方文档为主在项目里,无论使用新的 jar 包,还是用新的中间件,一定要去看官方文档。现在网上的技术文章鱼龙混杂,再加上国内那个不咋地的搜索引擎,所以在网上搜靠谱的技术文章,就相当于在屎坑里捞金子。比如,如果你想要对 SpringBoot2 写的代码进行单元测试,JUnit 版本你可能已经是 5 了。但你搜到的网上文章很可能会告诉你测试用例需要注解:@RunWith(SpringRunner.class)但是官方...

2021-12-09 16:59:14 160

原创 Javascript面向对象编程

学习JavaScript,最难的是什么?我觉得,object(对象)最难。因为JavaScript的object模型很独特,和其他语言不一样,初学者不容易掌握。Javascript是一种基于对象(object-based)的语言,你遇到的所有东西几乎都是对象。但是,它又不是一种真正的面向对象编程(OOP)语言,因为它的语法中没有class(类)。(如果你接触了es6会发现里边有class,但是那个class只是一个语法糖,在javascript中是没有类的)那么,如果我们要把"属性"(pro

2021-12-09 16:27:01 107

原创 【原生JavaScript】常见的DOM操作及方法

在这我们就来把原生JavaScript中一些常用的技术,来与小伙伴们一起学习、一起复习一下那些基础知识。注意收藏!!!常见DOM操作获取查找DOM元素document.getElementById(idName)通过id查找元素。返回的是元素DOM,如果页面上有多个相同ID的元素,则只会返回第一个元素,不会返回多个,原则上ID唯一的不可重复的,但是......(知道的都懂)constdom=document.getElementById('xxx')document.ge...

2021-12-09 16:06:51 1397

原创 是什么影响了 MySQL 的性能?

今天我们主要来看下,到底是什么影响了数据库的性能?找到问题的原因,才能解决问题。整体上来说,影响数据库性能的因素,我们可以归为以下几个方面: SQL 脚本 数据库服务器配置 网卡流量 磁盘 IO 大表操作 大事务操作 存储引擎 数据库参数配置 接下来我们就从这几个方面来逐一进行说明。1. SQL 脚本SQL 脚本会影响到 MySQL 的执行效率,这个大家都懂,面试八股文中常见问题之一。其实也不是面试官故意爱考这...

2021-12-09 15:22:00 1126

转载 看完后,我才明白Redis为什么默认16个数据库?

导读:在实际项目中Redis常被应用于做缓存,分布式锁、消息队列等。但是在搭建配置好Redis服务器后很多朋友应该会发现和有这样的疑问,为什么Redis默认建立了16个数据库,如下图所示。一、16个数据库的由来Redis是一个字典结构的存储服务器,一个Redis实例提供了多个用来存储数据的字典,客户端可以指定将数据存储在哪个字典中。这与在一个关系数据库实例中可以创建多个数据库类似(如下图所示),所以可以将其中的每个字典都理解成一个独立的数据库。以MySQL实例为例Redis默认支..

2021-12-09 15:00:04 618

转载 MyBatis批量插入几千条数据,请慎用foreach

近日,项目中有一个耗时较长的Job存在CPU占用过高的问题,经排查发现,主要时间消耗在往MyBatis中批量插入数据。mapper configuration是用foreach循环做的,差不多是这样。(由于项目保密,以下代码均为自己手写的demo代码)<insertid="batchInsert"parameterType="java.util.List">insertintoUSER(id,name)values<foreachcollect...

2021-12-09 14:32:52 192

转载 宇宙条一面:十道经典面试题解析

1.http请求头里,expire和cache-control字段含义,说说HTTP状态码1.1 expire和cache-control字段含义 Cache-Control是HTTP/1.1的头字段,用来区分对缓存机制的支持情况,请求头和响应头都支持这个属性。通过它提供的不同的值来定义缓存策略。主要有public、private、no-cache等值。 expires是http1.0的头字段,过期时间,如果设置了时间,则浏览器会在设置的时间内直接读取缓存,不再请求。 1.2 常..

2021-12-06 16:49:37 123

转载 阿里三面,GET 请求能传图片吗?

从一道面试题说起:GET 请求能传图片吗?「前言」曾经遇到的面试题,觉得挺有意思,来说下我的答案及思考过程。首先,我们要知道的是,图片一般有两种传输方式:base64和file对象。base64 图片图片的base64编码想必大家都见过:base64的本质是字符串,而GET请求的参数在url里面,所以直接把图的base64数据放到url里面,就可以实现GET请求传图片。input输入框拿到的图是file对象,图片file对象转b...

2021-12-06 16:37:43 110

转载 一步一坑,17 道,拿下计算机网络.

1. 计算机网络的各层协议及作用?计算机网络体系可以大致分为一下三种,OSI七层模型、TCP/IP四层模型和五层模型。 OSI七层模型:大而全,但是比较复杂、而且是先有了理论模型,没有实际应用。 TCP/IP四层模型:是由实际应用发展总结出来的,从实质上讲,TCP/IP只有最上面三层,最下面一层没有什么具体内容,TCP/IP参考模型没有真正描述这一层的实现。 五层模型:五层模型只出现在计算机网络教学过程中,这是对七层模型和四层模型的一个折中,既简洁又能将概念阐述清楚。...

2021-12-06 16:19:12 99

转载 详解 18 种队列,你知道几种?

本篇主要内容如下:本篇主要内容帮你总结好的阻塞队列:18种Queue总结一、Queue自我介绍队列原理图1.1 Queue自我介绍hi,大家好,我的英文名叫Queue,中文名叫队列,无论现实生活中还是计算机的世界中,我都是一个很重要的角色哦~我是一种数据结构,大家可以把我想象成一个数组,元素从我的一头进入、从另外一头出去,称为FIFO原则(先进先出原则)。我还有两个亲兄弟:List(列表)、Set(集),他们都是Collection的儿子,我还有一个远房亲..

2021-12-06 16:13:52 4002

原创 Redis5大经典面试题

1. 什么是Redis?它的作用是什么?Redis,英文全称是Remote Dictionary Server(远程字典服务),是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。与MySQL数据库不同的是,Redis的数据是存在内存中的。它的读写速度非常快,每秒可以处理超过10万次读写操作。因此redis被广泛应用于缓存,另外,Redis也经常用来做分布式锁。除此之外,Redis支持事务、持久化、LUA 脚本、LRU 驱动

2021-12-06 16:03:37 1942

转载 JAVA十道经典面试题解析

1. 用到分布式事务嘛?为什么用这种方案,有其他方案嘛?什么是分布式事务谈到事务,我们就会想到数据库事务,很容易就想到原子性、一致性、持久性、隔离性。分布式事务跟数据库事务有点不一样,它是指事务的参与者、支持事务的服务器、资源服务器以及事务管理器分别位于不同的分布式系统的不同节点之上。简单来说,分布式事务指的就是分布式系统中的事务,它的存在就是为了保证不同数据库节点的数据一致性。分布式事务基础分布式事务需要需要知道CAP理论和BASE理论。CAP理论 一致性(C:Cons.

2021-12-06 15:37:52 343

原创 面试官疯了吗,问我为什么浮点数不精确?

很多人都知道,Java 中的浮点数并不精确,需要用 BigDecimal进行精确计算,但是,很少有人知道为什么浮点数不精确呢?不精确为什么还要用呢?本文就来展开分析一波;我们知道,计算机的数字的存储和运算都是通过二进制进行的,对于,十进制整数转换为二进制整数采用"除2取余,逆序排列"法具体做法是: 用2整除十进制整数,可以得到一个商和余数; 再用2去除商,又会得到一个商和余数,如此进行,直到商为小于1时为止 然后把先得到的余数作为二进制数的低位有效位,后得到的余数作为二进.

2021-12-06 15:28:10 84

转载 面试官:你了解 JVM 中的ZGC垃圾收集器吗?

ZGC(Z Garbage Collector)是一款由Oracle公司研发的,以低延迟为首要目标的一款垃圾收集器。它是基于动态Region内存布局,(暂时)不设年龄分代,使用了读屏障、染色指针和内存多重映射等技术来实现可并发的标记-整理算法的收集器。在JDK 11新加入,还在实验阶段,主要特点是:回收TB级内存(最大4T),停顿时间不超过10ms。动态RegionZGC的Region可以具有如图所示的大、中、小三类容量: 小型Region(Small Region):容量固...

2021-12-03 16:13:17 268

转载 面试官:Spring AOP有哪些通知类型,它们的执行顺序是怎样的?

前言这篇比较简单,但是群友反馈面试被问到了,关键还没答出来,而且还是项目中用的比较多的技术点。还是要在平时开发中有一丢丢好奇心,多点进去看看代码啊!通知类型在基于Spring AOP编程的过程中,基于AspectJ框架标准,spring中定义了五种类型的通知,它们分别是: 前置通知 (@Before) 。 返回通知 (@AfterReturning) 。 异常通知 (@AfterThrowing) 。 后置通知 (@After)。 环绕通知 (@..

2021-12-03 16:07:40 594 1

转载 我 JS 写的好好的,为什么要用那么复杂的TS

前言我JS写的好好的,为啥要用TS写呢?本文写给那些完全没有用过TS,也没有使用过结构化语言,对TS有一定的心智负担的前端新手同学。需要更多教程,微信扫码即可面对铺天盖地的TS怎么好怎么好的文章,项目中还没真正开始使用到TS的小伙伴,可能只是看了很多的掘金文章,或者看了一遍官方文档,脑子里基本上都是:嗯,是的,我知道TS好,我知道在变量后面加一个冒号一个类型,就可以限制变量,是不是所有的变量或者函数都要写?为什么我写了返回类型,VSCode还是提示返回值是any类型?泛型好复杂,什么时候.

2021-12-02 16:58:47 612

原创 面试官:什么是前缀索引、为什么要用前缀使用、用在什么场景下?

什么是前缀索引?前缀索引也叫局部索引,比如给身份证的前 10 位添加索引,类似这种给某列部分信息添加索引的方式叫做前缀索引。需要更多教程,微信扫码即可为什么要用前缀索引?前缀索引能有效减小索引文件的大小,让每个索引页可以保存更多的索引值,从而提高了索引查询的速度。但前缀索引也有它的缺点,不能在 order by 或者 group by 中触发前缀索引,也不能把它们用于覆盖索引。什么情况下适合使用前缀索引?当字符串本身可能比较长,而且前几个字符就开始不相同,适合使用前缀索引;相反情.

2021-12-02 16:47:50 578

原创 Java题题练(三十),你不得不掌握的知识点

光学不练那可不行,来测一测吧!需要更多教程,微信扫码即可题目一:类声明中,声明抽象类的关键字是( )A:publicB:abstractC:finalD:class题目二:Java Applet在被浏览器加载的时候首先被执行且在applet整个生命周期中被运行一次的方法是()A:init()B:stop()C:opreationcrawl()D:reader()题目三:有以下程序片段且Interesting不是内部类,下列哪个选项不能插入到行1。()public...

2021-12-02 14:19:23 504

原创 Java题题练(二十九),你不得不掌握的知识点

光学不练那可不行,来测一测吧!需要更多教程,微信扫码即可题目一:下列对接口的说法,正确的是( )A:接口与抽象类是相同的概念B:若要实现一个接口为普通类则必须实现接口的所有抽象方法C:接口之间不能有继承关系D:一个类只能实现一个接口题目二:Java中只有整型才能使用的运算符为?A:*B:/C:%D:+题目三:下列属于容器的组件有()A:JButtonB:JPanelC:ThreadD:JTextArea题目四:以下哪个不是Collection的子接口?​​​​​​​.

2021-12-02 14:02:28 533

原创 Java题题练(二十八),你不得不掌握的知识点

光学不练那可不行,来测一测吧!需要更多教程,微信扫码即可题目一:Java Application(Java应用程序)源程序文件编译后的字节码文件的扩展名是( )。A:javaB:classC:exeD:jar题目二:定义类中成员变量时不可能用到的修饰是()​​​​​​​A:finalB:voidC:protectedD:static题目三:下面关于静态方法说明正确的是​​​​​​​A:在静态方法中可用this来调用本类的类方法B:在静态方法中调用本类的静态方法时...

2021-12-02 13:54:41 405

原创 有了 for (;;) ,为什么还需要while (true) ?

有了 for (;;) ,为什么还需要while (true) ? 到底哪个更快?需要更多教程,微信扫码即可在JDK8u的jdk项目下做个很粗略的搜索:mymbp:/Users/me/workspace/jdk8u/jdk/src$ egrep -nr "for \\(\\s?;\\s?;" . | wc -l 369mymbp:/Users/me/workspace/jdk8u/jdk/src$ egrep -nr "while \\(true" . | wc -l323并没有差多少。.

2021-12-02 13:38:27 153

原创 CSS 样式清单整理(一)

需要更多教程,微信扫码即可1、文字超出部分显示省略号单行文本的溢出显示省略号(一定要有宽度)p{width:200rpx;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}多行文本溢出显示省略号p{display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-...

2021-11-30 17:16:55 189

转载 可能是最好的 this 解析了...

需要更多教程,微信扫码即可找对象首先,this 在大多数情况下是一个对象,也有可能是 undefined 或其他值。什么情况下,this是undefined?函数运行在严格模式下,应用默认绑定规则的时候:vara=1;functionfoo(){"usestrict";console.log(this.a);};foo();//UncaughtTypeError:Cannotreadproperty'a'ofundefi...

2021-11-30 16:50:32 73

原创 Java题题练(二十七),你不得不掌握的知识点

光学不练那可不行,来测一测吧!需要更多教程,微信扫码即可题目一:关于String、StringBuffer、StringBuilder以下说法错误的是A:StringBuilder运行速度最快B:StringBuffer是线程安全的C:String的值是可变的D:StringBuffer运行速度比String快题目二:欲定义类字段或类方法(静态方法),应该使用下列哪一个修饰符修饰()A:publicB:staticC:protectedD:synchronized题目三:下面.

2021-11-30 16:35:28 640

原创 Java题题练(二十六),你不得不掌握的知识点

光学不练那可不行,来测一测吧!需要更多教程,微信扫码即可题目一:Java中所有类的父类是( )。A:FatherB:DangC:ExceptionD:Object题目二:以下那个数据结构是适用于"数据必须以相反的顺序存储然后检索" ? ()​​​​​​​A:StackB:QueueC:ListD:Liink List题目三:局部变量能否和成员变量重名?​​​​​​​A:可以,局部变量可以与成员变量重名,这时可用“this”来指向成员变量B:可以,这时可用“local”关.

2021-11-30 16:30:31 429

原创 Java题题练(二十五),你不得不掌握的知识点

光学不练那可不行,来测一测吧!需要更多教程,微信扫码即可题目一:关于String、StringBuffer、StringBuilder以下说法错误的是A:StringBuilder运行速度最快B:StringBuffer是线程安全的C:String的值是可变的D:StringBuffer运行速度比String快题目二:java语言中,按照一定格式生成程序的文档的工具是?A:javacB:javahC:javadocD:jar题目三:创建一个标识有“关闭”标签的语句是( ...

2021-11-30 16:24:50 369

转载 分布式锁用Redis好?还是Zookeeper好?

不过目前互联网项目越来越多的项目采用集群部署,也就是分布式情况,这两种锁就有些不够用了。需要更多教程,微信扫码即可来两张图举例说明下,本地锁的情况下:分布式锁情况下:就其思想来说,就是一种“我全都要”的思想,所有服务都到一个统一的地方来取锁,只有取到锁的才能继续执行下去。说完思想,下面来说一下具体的实现。Redis 实现为实现分布式锁,在 Redis 中存在SETNX key value命令,意为set if not exists(如果不存在该 key,才...

2021-11-30 14:57:10 130

转载 学会 IDEA 的这个功能,阅读源码简直太简单了。

最近正好也没什么可忙的,就回过头来鼓捣过去的知识点,到Servlet部分时,以前学习的时候硬是把从上到下的继承关系和接口实现记得乱七八糟。这次利用了IDEA的diagram,结果一目了然,也是好用到炸裂,就此分享。需要更多教程,微信扫码即可1、查看图形形式的继承链在你想查看的类的标签页内,点击右键,选择 Diagrams,其中有 show 和 show ... Popup,只是前者新建在标签页内,后者以浮窗的形式展示:实际上,你也可以从左边的项目目录树中,对你想查看的类点击右键..

2021-11-30 14:37:08 66

转载 Java8 Stream 数据流简化代码很爽,那它的效率如何呢?

Stream 是Java SE 8类库中新增的关键抽象,它被定义于 java.util.stream (这个包里有若干流类型:Stream<T>代表对象引用流,此外还有一系列特化流,如 IntStream,LongStream,DoubleStream等。需要更多教程,微信扫码即可Java 8 引入的的Stream主要用于取代部分Collection的操作,每个流代表一个值序列,流提供一系列常用的聚集操作,可以便捷的在它上面进行各种运算。集合类库也提供了便捷的方式使我们可以以操作...

2021-11-29 18:17:53 273

转载 你在 Docker 中跑 MySQL?恭喜你,可以下岗了。

需要更多教程,微信扫码即可容器的定义:容器是为了解决“在切换运行环境时,如何保证软件能够正常运行”这一问题。目前,容器和 Docker 依旧是技术领域最热门的词语,无状态的服务容器化已经是大势所趋,同时也带来了一个热点问题被大家所争论不以:数据库 MySQL 是否需要容器化?认真分析大家的各种观点,发现赞同者仅仅是从容器优势的角度来阐述 MySQL 需要容器化,几乎没有什么业务场景进行验证自己的观点;反过来再看反对者,他们从性能、数据安全等多个因素进行阐述 MySQL不需要容器化,也举证了一.

2021-11-29 17:33:07 121

原创 Java题题练(二十四),你不得不掌握的知识点

光学不练那可不行,来测一测吧!需要更多教程,微信扫码即可题目一:以下关于java封装的描述中,正确的是:A:封装的主要作用在于对外隐藏内部实现细节,增强程序的安全性B:封装的意义不大,因此在编码中尽量不要使用C:如果子类继承父类,对于父类中进行封装的方法,子类仍然可以直接调用D:只能对一个类中的方法进行封装,不能对属性进行封装题目二:关于下面代码int[] x=new int[25];描述正确的是()​​​​​​​A:x[25]存放了数据“\0”。B:x[24] 存放了数据“...

2021-11-29 16:50:48 227

原创 Java题题练(二十三),你不得不掌握的知识点

光学不练那可不行,来测一测吧!需要更多教程,微信扫码即可题目一:下面有关java基本类型的默认值和取值范围,说法错误的是?A:字节型的类型默认值是0,取值范围是-2^7—2^7-1B:boolean类型默认值是false,取值范围是true\falseC:字符型类型默认是0,取值范围是-2^15 —2^15-1D:long类型默认是0,取值范围是-2^63—2^63-1题目二:下面有关List接口、Set接口和Map接口的描述,错误的是?​​​​​​​A:他们都继承自Collec.

2021-11-29 16:47:13 169

原创 Java题题练(二十二),你不得不掌握的知识点

光学不练那可不行,来测一测吧!需要更多教程,微信扫码即可题目一:基本的Java语言函数存储在以下哪个java包中?()A:java.langB:java.ioC:java.netD:java.util题目二:类Person里面有个方法sleep(),如果直接用Person.sleep(),则方法sleep前面必须用的关键词是?( )A:classB:staticC:publicD:final题目三:“先进先出”的容器是:()​​​​​​​A:堆栈(Stack)...

2021-11-29 15:47:44 157

空空如也

空空如也

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

TA关注的人

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