自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 计算机——数据库

Buffer PoolMySql的内存区有个Buffer Pool(128MB)里面以数组的形式存储从磁盘中读取的数据我们每次执行Sql语句就会从先检查Buffer Pool中有没有,如果没有再从磁盘中读取,这样的话就可以减少与磁盘IO的次数。同样的,更新也是一样的道理,我们也是读取到内存中,然后在内存中进行修改,修改完了之后再在某个时间段进行持久化。而硬盘中读取之后我们就会从Free链表的控制块中选取一个地址,进行存储,存储完了之后删除该地址块。同样的如果我们更新了一个地址块的内容(因为更新的内容

2022-09-20 11:03:28 429

原创 关于Maven环境配置问题

首先确定是否已经下载了Maven命令行中输入下面的命令来查看:mvn -v如果发现还没有安装的话,就去官网下载,然后配置环境变量,可参看该tutorialMaven完成安装后,我们要新建一个仓库(新建空文件)完成之后进入conf文件夹找到setting.xml文件,修改(原先是注释,现在uncomment掉加上你新创建的仓库路径)这样你就不会每次在新项目的下面创建新的本地仓库了<localRepository>C:\Users\YourPath\apache-maven-3.6.

2022-03-18 04:38:43 347 1

翻译 Prometheus的安装以及测试

Prometheus的安装安装Node Exporter(这是把metric转化为Prometheus格式的库)wget https://github.com/prometheus/node_exporter/releases/download/v0.15.2/node_exporter-0.15.2.linux-amd64.tar.gz把Node Exporter移动到指定的位置sudo mv node_exporter-0.15.2.linux-amd64/node_exporter /usr

2022-02-18 05:24:38 364

原创 Azure运行Tomcat

wget下载Tomcat(自己找下载链接吧).bashrc文件是用户登录时执行的脚本文件。 该文件本身包含终端会话的一系列配置。 这包括设置或启用:着色,完成,shell历史记录,命令别名等。 It is a hidden file and simple ls command won’t show the file.首先你可以找到这个文件在~/根目录下ls -la ~/ | more查看隐藏文件我们可以使用nano来修改(结尾加上下面的东西)export CATALINA_HOME=$HOME/t

2022-02-11 05:33:00 880

原创 2021-11-01 Java错题集锦

有如下代码:请写出程序的输出结果。public class Test{ public static void main(String[] args) { int x = 0; int y = 0; int k = 0; for (int z = 0; z < 5; z++) { if ((++x > 2) && (++y > 2) && (k++ &g

2021-11-01 04:24:18 123

原创 2021-10-27 Java错题集锦

这里涉及到Java的一个优化,就是在编译的时候把字面量合并了,比如String sun = “a”+“b”+“c”会直接被优化成一个单一的字面量“abc”。所以这里也是同理,只有一个对象被创建,“welcometo360”,这一个对象而已。Object里面的方法是叫clone而不是copy,Object没有copy这方法。package的定义必须先于import这些的,而不仅仅是类定义前,当然,在注释后面是无所谓的。Spring中有AOP,但是没有给我们提供AOP实现的日志系统,我们还是要自己.

2021-10-27 22:05:16 100

原创 2021-10-24 Java错题集锦

java.exe是JVM,执行编译好的文件javadoc.exe是用来制作Java文档的jdb则是Java调试的工具以下代码执行的结果显示是多少( )?public class Demo { class Super { int flag = 1; Super() { test(); } void test() { System.out.println("Super.test() flag=" + flag); } .

2021-10-24 03:37:00 70

原创 2021-10-23 Java错题集锦

取余运算的符号一定与被除数的符号相同。所谓的桥接模式就是桥接模式是将抽象部分与它的实现部分分离,使它们都可以独立地变化比如抽象部分可以有进一步RefinedAbstractor,而实现部分可以有一个父Implementor而进一步继承该类有ImplementorA之类的。这样做的好处就是实现了抽象化和实现的解耦,你抽象变化管你的,我实现变化管我的。在JDBC中,他就提供了统一的接口,所以在切换不同的数据库时,代码基本不需要动,因为接口相同,具体的实现交给了数据库厂商。GenericServ.

2021-10-23 03:47:05 130

原创 2021-10-22 Java错题集锦

可以在多个平台运行靠的是JVM,而JVM编译的也不是.java源代码而是.class字节码,将字节码编译为机器码。成员内部类是定义在方法外部的,所以哪怕用private也是有意义的,因为private修饰的话,同一个类中的成员也还是都能访问的。但是局部内部类就没有用修饰符修饰的必要了,因为他是定义在方法体里的,没有一个程序单位能从外部访问到方法内部的局部变量。下面代码的输出是什么?public class Base{ private String baseName = "base";.

2021-10-22 03:17:23 130

原创 2021-10-21Java错题集锦

static永远只能调用static的属性,因为static只有在初始化的时候就会被加载,那么可想而知你要是在方法里调用非static的,那这些还没被加载,你直接GG。public class Test { private static int j = 0; private static Boolean methodB(int k) { j += k; return true; } public static void methodA(.

2021-10-21 02:11:33 64

原创 2021-10-20 Java错题集锦

new URL的时候我们都要捕捉异常的(异常主要是检查是否存在我们的URL和实际的URL格式是否相同),而不管存在与否,都会返回URL的字符串形式CGLib是动态生成字节码,而字节码是永久代里面的,像ABD都是会导致新生代,老年代溢出的。接口并不继承Object类。具体直接看下面的代码解释就好了。 public static void main(String[] args){ Integer i1 = new Integer(33); Integer i.

2021-10-20 03:30:12 61

原创 2021-10-19 Java错题集锦

先要将字符串转为byte再进行重新编码。只有数据流才能够读取数据finalize是只能被调用一次的,所以不是每次回收都会被调用的。

2021-10-19 03:52:19 75

原创 10_12Java错题集锦

y+=z–/++xy=2+(3–/++1) 这里3先参与运算然后才自减,而1是先自加再参与运算,所以就变成y=2+(3/2) 因为是整型,所以3/2=1,所以变成y=2+1=3 public class While {public void loop() {int x= 10;while ( x ) {System.out.print("x minus one is " + (x - 1));x -= 1;}}}Java不同于C,C里面除了0都默认为true,而Java的l.

2021-10-12 02:53:52 81

原创 Java错题集锦10-07

这里主要是记一下就好了,CyclicBarrier是一个屏障类,一定数量的线程都到了之后才会允许放行的。其他的ABC,都是会造成打断异常的。yield方法就是让线程释放资源,然后直接进入就绪态参与竞争的。其实是catch里面的return语句会被保存起来,catch里面的东西是执行完了的,不会回头再来执行的。-Xms 指的是初始堆的大小-Xmx 指的是堆最大的大小-Xmn 指的年轻代的大小-XX:SurvivorRation 指的是年轻代中 Eden和Survivor区的比值为3:1:1.

2021-10-07 23:02:40 59

原创 Java 错题集锦10_7

这题其实不用太在意,主要是提醒一下接口天生就是public abstract修饰的,不分1.8前后的监视器(Monitor)其实就是锁的另一个名字Vector其实也是实现了List接口的。JVM有自己的垃圾回收算法,因为我们知道堆属于JVM嘛,堆中的Eden,Suvivor,Old区都是需要他来回收的,醉胡与硬件交互应该指的是JVM编译后的机器指令集与硬件交互。...

2021-10-07 02:34:45 72

原创 2021-10-06 Java错题集锦

Java中接口其实也是被当成类一样的,编译之后也会有单独的自己的文件,同时内部类也是一样,非常有牌面。这里我们要注意一下我们的while判断条件里面是k,而k在循环条件里面每次的增量都是增加的,所以他最后是一个开根号的情况,如果是乘法的话,那直接就是取对数了。说明输出结果:import java.util.Date; public class SuperTest extends Date{ private static final long serialVersionUID = 1.

2021-10-06 03:22:38 89

原创 Java错题集锦15

这里像是byte和int都不用说,byte1字节,int4字节,long8字节,那么Object呢?其实这里的Object就只是个引用(即地址),所以他的大小其实不大,就是地址的长度,然后如果后面不接new Object(),那么这个引用指向的地址空间其实只有1bit,就是说存在这么个空间而已,但是啥也没放,不过也不是空的,这bit空间确实被划分走了。这里子目录里的类是读取不了的,因为如果能狗读取就会造成混乱,比如说,util包下面有个A类,他的子目录下面也有个A类,那么实际使用的时候你到底读取的是哪.

2021-10-03 21:51:22 67

原创 Tableau入门

Tableau中有自动aggregation的功能,所以你可以尽量的细化数据,当你的Dimension比较高的时候,Tableau会自动将你的数据合成更高纬度的数据。Dimension负责定性,而Measure则是负责定量我们可以通过Label里面的Show mark Label来使得所有的Label显现出来。我们的Dimension不仅可以放入Columns或者Rows也可以放入Marks Card里面的东西,比如Colour到这一步我们已经可以为数据创建图表了,而且知道要什么level的数据

2021-10-03 04:38:36 330

原创 Java错题集锦14

外部类如果被private修饰的话,那他就是个没有意义的类了,因为他不能被任何方式使用或者调用,但是,但是成员内部类哪怕是private也是可以被使用的,私有的成员内部类也是可以被他的外部类所访问的。这里++(i++) i++是一个字面量,他是-5+1=-4,而++这个符号只能修饰变量的,不能修饰字面量,比如99++就会报错的。反正new 对象的第一个[]里面必须有个数字A:只有静态内部类才可以声明静态方法B:抽象方法abstract不可以拥有方法体C:静态方法里只能使用静态变量D:静态.

2021-10-02 19:27:42 66

原创 Java错题集锦13

finalize的方法只会被执行一次,比如第一次被执行完后,第二次就不会执行,而是直接等待进行GC回收了。A,你只对写操作操作加锁,也就也可能你在同一事务中写入的时候读数据,你修改的时候读到了A,修改完读到了B,你这读取操作两次就不一致了。B,这是适合读多写少的情况,因为你写少,所以每次复制一份新的副本,在副本上修改,然后再把副本作为新的数据这一过程才不会太消耗时间,但是读写一样多的话,你这种方法就太消耗时间了。C就比较合适了,因为你分段就不太会影响性能了。其实D就是一个数组的数组,A的话,数.

2021-10-01 21:52:17 60

原创 Java错题集锦13

如果在try里面找到return,那么就会将值暂存在本地栈中然后检查Finally中是否有return的语句,如果Finally中当然是以Finally为主,所以Finally先执行完了再去看try里面的return语句.java文件是我们的源代码文件,而.class则是JVM编译过后的文件。而我们平时运行的时候是不加后缀的,所以A错误。调用完的方法是出栈直接自动释放的,而不是GC来回收的。记住,虽然我们传递的是引用的副本,但是对根据该引用的对源地址的修改依然是有效的。下列代码执行结果为().

2021-09-30 21:28:29 46

原创 Java错题集锦13

下列代码输出的是:public static void main(String args[]) { Thread t = new Thread() {public void run() {pong();}}; t.run();System.out.print("ping"); } static void pong() { System.out.print("pong");}}记住run()方法是执行一下run()方法里面的代码,sta

2021-09-30 05:00:05 58

原创 Java错题集锦12

记住Java里面,1/4是0,因为乘除法先算的,所以他们还没遇见5.0之前都是按照int来计算的,所以这里就是-5+0-6+5.0=-6.0,最后遇到double 5.0才会提升到double。boolean类型会先被赋值然后拿来使用。实例变量和静态变量都不属于内存区域(其实感觉这就是个语文题目)...

2021-09-29 04:13:26 56

原创 Java错题集锦11

其实第一个赋值里面你写啥都行的,不是非要写个 int var = 2局部内部类是不能用访问修饰符修饰的。

2021-09-28 03:53:36 63

原创 Java错题集锦10

我们要知道这些容器类里面存储的都是对象而不能是基本数据类型,之所以你可以直接把0放进来,那是因为自动拆装箱机制,他把你的基本数据类型封装为对象了。

2021-09-26 17:35:33 58

原创 Java错题集锦9

-Xms:1G , 就是说初始堆大小为1G-Xmx:2G , 就是说最大堆大小为2G-Xmn:500M ,就是说年轻代大小是500M(包括一个Eden和两个Survivor)-XX:MaxPermSize:64M , 就是说设置持久代最大值为64M-XX:+UseConcMarkSweepGC , 就是说使用使用CMS内存收集算法-XX:SurvivorRatio=3 , 就是说Eden区与Survivor区的大小比值为3:1:1泛型只是在编译的时候确保安全性,与运行时候的性能是无关的。.

2021-09-26 04:47:48 73

原创 Java错题集锦8

如下代码输出的是:package Test;public class Test { private static void test(int[] arr) { for (int i = 0; i < arr.length; i++) { try { if (arr[i] % 2 == 0) { throw new NullPointerException();

2021-09-25 04:36:08 167

原创 Java错题集锦7

System是个类,而out则是他的成员变量,println倒真的是方法名了。记住接口和抽象类里都可以有静态的成员变量,但是接口里面不能有普通的成员变量。浏览器根据Header里面的Encoding参数来确定编码的方式假定Base b = new Derived(); 调用执行b.methodOne()后,输出结果是什么?public class Base{ public void methodOne() { System.out.print("A"); .

2021-09-24 02:37:21 68

原创 Java错题集锦6

记住 前缀代表功能,后缀代表父类。与运行时异常(Runtime Exception)所相对应的是Checked Exception,这个在编译的时候就要检查了,所以我们要自己手动使用try catch来进行处理。而运行时异常则是交给虚拟机了。D错误也很明显,你完全可以扔出去交给调用者来处理。单例的构造方法是private的,你只能通过类的静态方法来获取他,不然的话,你其实就可以一直new新的单例出来了,这还叫单例嘛?1、强引用:一个对象赋给一个引用就是强引用,比如new一个对象,一个对象被赋.

2021-09-23 03:55:03 79

原创 Java错题集锦5

JVM是不知道所谓的泛型的,因为所有的泛型都会在编译阶段确定下来,也就是所谓的泛型擦除。而要获得运行时的类型使用反射即可。首先我们要知道Test test = null这里Test类已经被调用了,那么他就一定被加载了,那么他的静态方法也一定已经被加载了,哪怕这里我们调用的是null,但是我们调用的本来就是类方法而不是具体的某个对象的方法,既然类方法已经被加载了,那么就算对象是null,我们又不调用他,直接使用的是方法区类的静态方法,与后面的对象无关。A: 多进程,每个进程都有相同的资源副本,他们.

2021-09-22 04:17:50 64

原创 Java错题集锦4

主要是记住异或的符号,“^”,相同为0不同为1。B: 接口类的加载要看实现他的类是使用哪个类加载器,与接口本身无关。D: 如果ClassLoader加载一个类不存在的时候,那么他是直接报错的。F: 自定义ClassLoader装载类来自指定的路径...

2021-09-22 03:42:36 68

原创 Java错题集锦3

getClass()无法被重写,所以都是使用Object的方法,他返回的就是包名+类名。类加载器不加载接口注意,这里A选项可以是因为第一行import了这个内部类了。没有成员变量的类天生是线程安全的,因为他们没有共享的资源。...

2021-09-04 15:56:43 67

原创 如何实现关闭浏览器会话仍保持?

首先浏览器端,我们使用LocalStorage,这个和Cookie不同如果在浏览器端生成Cookie,默认是关闭浏览器后失效,存放数据大小一般4K左右,而sessionStorage与localStorage大小在5兆左右,在客户端生成,localStorage除非被清除,否则会永久保存,我们每次检查LocalStorage是不是Undefined来辨别用户是否可以直接登录。如果有Id存在,那么我们直接使用调用该Id相关数据,进入界面,如果是Undefined,那么我们必须就从Login的页面开始。

2021-07-31 15:54:15 713

原创 设计模式——工厂模式

抽象工厂和工厂模式我们一般说的工厂模式就是应用在超类和多个子类之间的。比如说ShapeFactory(形状工厂),这是一个实体的类,但是Shape本身只是一个抽象的接口,很多比如说Circle或者Triangle都可以实现这个接口,那么我们就可以将生产形状的职责转移给这个工厂类了。而简单工厂则是没有这个抽象的,比如说CircleFactory(圆形生产工厂)这就是个简单工厂,他就是专注于圆的生产。在这里我们还是可以进一步的提高抽象层级,比如说把工厂也抽象掉,变成AbstractFactory,我们使用Fa

2021-07-31 11:17:08 53

原创 MyBatis,MySQL,Redis

MyBatis ORMORM——Object Relation Mapping其实就是一个Class对应一个Table,该Class里面的各个Property对应Table里面的各个字段。MyBatis 缓存其实就是将你的查询语句和查询结构会以键值对的形式存储到缓存中,就比如说:“Select * from atable” 这样你下次查询的时候,我们就会直接从缓存中获取这条查询结果的值了。当然任何增删改的操作都会导致缓存清空。存储引擎InnoDB以及MyISAMInnoDB支持事务(undo

2021-07-26 16:59:31 205

原创 BIO,NIO,AIO

BIO 同步阻塞同步阻塞,同步指的是请求端是否参与数据的获取,自己进行IO操作,同步与阻塞并不等同比如说自旋锁,他并不阻塞,但是他是同步的,他持续的死循环不断轮询来达到同步的这一目的。NIO 同步非阻塞这里涉及到一个Select模型你的客户端发送一个请求给服务端,同时也会将你的连接句柄注册到Select模型上,该模型会不断的轮询里面的所有句柄,如果有response了就会通知客户端自己来遍历Select模型然后获得Response。而服务端处理完请求,会将response发回给Select模型

2021-07-17 16:30:08 56

原创 JVM垃圾回收器

串行收集器顾名思义,就是串行化的进行标记和清除,不允许其他的线程来干扰。这个垃圾收集器工作期间是需要stop the world的。一般用于年轻代。并行收集器这个也好理解,就是不同线程可以并行的进行标记和清除工作,这个垃圾收集器工作期间也是需要stop the world的。只不过与串行收集器不同的是他允许多个线程一起进行工作。一般用于年轻代。CMS(并发标记与清除)这个垃圾回收器标记的期间是不stop the world的!他是和应用程序共存并发的去标记和清除(有可能)的!但是在标记的过程中如果

2021-07-17 14:58:13 76

原创 JMM(Java内存模型)

JMMJava内存模型不是内存结构!(内存结构我们之前已经看到过了,就是堆栈那些)。JMM是对多线程下数据的有序性,可见性和原子性的一种保障。原子性使用synchronized关键字来实现原子性。具体就是我们有一个Monitor 他监视着 Owner,EntryList以及一个WaitSet。一个线程会首先使用Monitorenter,Monitor发现Owner是空的,他就会让线程去Owner,否则就去EntryList。一旦线程任务完成,那么线程就会使用Monitorexit,通知monit

2021-06-30 16:11:55 74

原创 运行期优化

JVM运行分5个层次0层:解释执行(这个其实就是我们的解释器做的,将字节码文件一个个的翻译成机器码然后去执行)1层:使用C1即时编译器执行(不带profiling)2层:使用C1即时编译器执行(带基本profiling)3层:使用C1即时编译器执行(带完全的profiling)4层:使用C2即时编译器执行profiling指的是在运行过程中收集一些方法调用的信息比如次数啊什么的。其实我们只要区分Interpreter解释器,C1和C2即时编译器就好了。解释器和即时编译器(JIT)的区别就是:

2021-06-30 11:08:21 93

原创 类加载器┗|`O′|┛ 嗷~~

Bootstrap该类加载器由C++编写,主要加载一些核心类,比如resources,charset之类的。我们也可以自己追加一些核心类双亲委派模式打破双亲委派模式,比如我们注册jdbc.driver,他使用的类加载器是BootstrapLoader,但是实际上这个路径下根本没有我们要的driver,注意看ClassLoader.getSystemClassLoader()这里其实我们获得的就是AppClassLoader。这就打破了双亲委派模式...

2021-06-29 16:27:56 54

空空如也

空空如也

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

TA关注的人

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