- 博客(19)
- 收藏
- 关注
原创 常见的数组排序方法
冒泡排序private static int[] bubbleSort() { int[] array = {1,3,4,1,3,5,7,9,2}; // 测试数组 if (array == null){ return null; } for (int i = 0; i < array.length; i++) { for (int j = 0; j < array.length
2020-08-27 17:09:01
1121
原创 Java中异常的理解
Java中异常分类按照异常需要处理的时机分为:· 编译时异常(强制性异常),即CheckedException· 运行时异常(非强制性异常),即RuntimeException只有 java 语言提供了 Checked 异常,Java 认为 Checked异常都是可以被处理的异常,所以 Java 程序必须显式处理 Checked 异常。如果程序没有处理 Checked 异常,该程序在编译时就会发生错误无法编译。这体现了 Java 的设计哲学:没有完善错误处理的代码根本没有机会被执行。对 Chec
2020-08-24 10:42:58
170
原创 Java中字符串“Java程序员”在内存中所占用的字节数
Java语言中,字符串“Java程序员”在内存中所占用的字节数是:(D)A.10B.7C.13D.14分析说白了归根到底就是编码问题,java实际是采用的unicode编码,准确的说是采用utf-16编码的(utf-16可以说是unicode编码的一种实现形式),这在java的说明手册中是可以清晰看到的。UTF-16任何字符对应的数字都用两个字节来保存,所以说在这道题中没有指定编码格式,那么采用默认的编码格式(即utf-16),每个字符都占用2个字节。UTF-8utf-8采用变长字节的形
2020-08-24 08:38:14
2319
原创 用IDEA部署的maven项目可以运行成功,但是无法访问到index界面
说明: 之前用STS部署的maven项目完全没有问题,直接输入localhost:8080就可以访问到index界面,但是刚换了一个IDEA想要重新部署一下一模一样的maven项目,运行都可以成功,但是输入一样的网址就是无法访问,报404错误。原因: 在控制台本来应该会打印一句表示发布默认路径index的语句,但是我发现没有,如图中的红框标识的日志,除了这句话没有之外,其他的一切正常。可以正常访问的运行效果如图无法正常访问的运行效果如图发生此现象的原因是因为在项目运行时,没有指定项目加载路径导
2020-07-30 21:57:54
4012
原创 线程池
1. 为什么使用线程池诸如 Web 服务器、数据库服务器、文件服务器或邮件服务器之类的许多服务器应用程序都面向处理来自某些远程来源的大量短小的任务。请求以某种方式到达服务器,这种方式可能是通过网络协议(例如 HTTP、FTP 或 POP)、通过 JMS 队列或者可能通过轮询数据库。不管请求如何到达,服务器应用程序中经常出现的情况是:单个任务处理的时间很短而请求的数目却是巨大的。构建服务器应用程序的一个简单模型是:每当一个请求到达就创建一个新线程,然后在新线程中为请求服务。实际上对于原型开发这种方法工作得
2020-07-28 11:27:21
80
原创 对于栈内存和堆内存的理解
栈1.和堆一样存储在计算机RAM中2.栈是为执行线程留出的内存空间3.栈附属于线程,因此当线程结束时栈被回收4.线程被创建的时候,设置栈的大小5.当用栈过多时会导致栈溢出(无穷次/大量的递归调用,或者大量的内存分配)6.如果在编译之前精确的知道要分配数据的大小并且不是太大的时候,可以使用栈栈底层1.栈经常与sp寄存器一起工作,最初sp指向栈顶2.CPU用push指令将数据压栈,用pop指令来弹栈。压栈时sp值减少,弹栈时sp值增大,存取和获取数据都是CPU寄存器的值3.当函数被调用时,C
2020-07-27 21:24:28
1185
原创 为什么nginx的反向代理配置完成后,跳转一直是nginx的首页界面
问题如图:问题描述访问www.jt.com并没有跳转到我所期待的localhost:8092服务器去,我查了好久,配置的完全没有问题。原因我的原因是上一次nginx没有通过nginx -s stop关掉,然后今天通过start nginx重新开了一个nginx,改完配置文件后,再通过nginx -s reload重启了nginx,然后就会出现了上述问题。上次的nginx不关掉,然后再开一个nginx,在任务管理器就可以看到总共启动了四个nginx的进程,正常情况是两个,如图是正常情况:异常情
2020-07-23 11:21:46
6692
原创 StringBuffer/StringBuilder
StringBuffer 字符串变量(线程安全)StringBuilder 字符串变量(非线程安全)StringBuilder 类在 Java 5 中被提出,它和 StringBuffer 之间的最大不同在于 StringBuilder 的方法不是线程安全的(不能同步访问),它和 StringBuffer的方法完全相同,区别在于它是在单线程环境下使用,因为它的所有方法都没有被synchronized修饰,因此它的效率理论上也比StringBuffer要高。 由于 StringBuilder 相较于 St
2020-07-08 12:09:35
87
原创 Math.round(11.5)等于多少?Math.round(- 11.5) 又等于多少?
Math.round(11.5)的返回值是 12,Math.round(-11.5)的返回值是-11。四舍五入的原理是在参数上加 0.5然后进行取整。
2020-07-08 11:36:01
940
原创 throw和throws的区别
throw:1)throw语句用在方法体内,表示抛出异常,由方法体内的语句处理。2)throw是具体向外抛出异常的动作,所以它抛出的是一个异常实例,执行throw一定是抛出了某种异常。throws:1)throws语句是用在方法声明后面,表示如果抛出异常,由该方法的调用者来进行异常的处理。2)throws主要是声明这个方法会抛出某种类型的异常,让它的使用者要知道需要捕获的异常的类型。3)throws表示出现异常的一种可能性,并不一定会发生这种异常。...
2020-07-08 11:31:51
113
原创 new和clone
为什么要用 clone?在实际编程过程中,我们常常要遇到这种情况:有一个对象 A,在某一时刻 A 中已经包含了一些有效值,此时可能会需要一个和A完全相同新对象B,并且此后对B 任何改动都不会影响到A中的值,也就是说,A与B是两个独立的对象,但B的初始值是由A对象确定的。在Java语言中,用简单的赋值语句是不能满足这种需求的。要满足这种需求虽然有很多途径,但实现clone()方法是其中最简单,也是最高效的手段。new 一个对象的过程和 clone 一个对象的过程区别· new操作符的本意是分配内存
2020-07-04 12:40:38
328
原创 垃圾回收器
需要注意的是,每一个回收器都存在Stop The World 的问题,只不过各个回收器在Stop The World 时间优化程度、算法的不同,可根据自身需求选择适合的回收器。Serial(-XX:+UseSerialGC)从名字我们可以看出,这是一个串行收集器。Serial收集器是Java虚拟机中最基本、历史最悠久的收集器。在JDK1.3之前是Java虚拟机新生代收集器的唯一选择。目前也是ClientVM下ServerVM 4核4GB以下机器默认垃圾回收器。Serial收集器并不是只能使用一个CPU
2020-07-02 19:19:17
82
原创 JVM GC 算法
根搜索算法根搜索算法是从离散数学中的图论引入的,程序把所有引用关系看作一张图,从一个节点GC ROOT 开始,寻找对应的引用节点,找到这个节点后,继续寻找这个节点的引用节点。当所有的引用节点寻找完毕后,剩余的节点则被认为是没有被引用到的节点,即无用的节点。上图红色为无用的节点,可以被回收。目前Java中可以作为GC ROOT的对象有:1、虚拟机栈中引用的对象(本地变量表)2、方法区中静态属性引用的对象3、方法区中常量引用的对象4、本地方法栈中引用的对象(Native对象)基本所有GC算法都
2020-07-02 19:01:56
167
原创 Java性能优化之JVM GC
JVM GC回收哪个区域内的垃圾?只回收堆区和方法区。栈区的数据,在超出作用域后会被JVM自动释放掉,不在JVM GC的管理范围内。JVM GC怎么判断对象可以被回收了?· 对象没有引用· 作用域发生未捕获异常· 程序在作用域正常执行完毕· 程序执行了System.exit()· 程序发生意外终止(被杀线程等)有时候可以将相关的对象设置成null来试图显式地清楚缓存,但是并不是设置为null就一定会被标记为可回收,有可能会发生逃逸。而,JVM GC什么时候执行?eden区空间不够存
2020-07-02 18:47:07
91
原创 Spring Boot---基础笔记
Spring Boot整合连接池1.通过连接池获取连接的一个基本过程,如图所示:在上图中,用户通过DataSource对象的getConnection()方法,获取一个连接。假如池中有连接,则直接将连接返回给用户。假如池中没有连接,则会调用Dirver(驱动,由数据库厂商进行实现)对象的connect方法从数据库获取,拿到连接以后,可以将连接在池中放一份,然后将连接返回给调用方。2.整合HikariCP连接池HiKariCP号称是目前世界上最快的连接池,有江湖一哥的称号,目前在springboot
2020-06-18 18:21:14
301
原创 Spring Boot---入门笔记
Spring boot 是什么?脚手架而非框架,也可以看成是框架脚手架,做了架子工要做的事情-搭建项目基础骨架的工作人员Spring boot 核心优势?启动依赖自动配置-开箱即用健康检查-系统监控Spring boot 环境配置准备工作下载mevan并解压(例如apache-maven-3.6.3,网址http://maven.apache.org/)mevan基本配置打开maven中的setting.xml文件,并对其如下选项进行配置。配置maven本地库(从maven远程服务器下
2020-06-02 20:59:28
178
原创 对于JVM中GC系统的理解
对于JVM中的GC系统而言,什么样的对象是垃圾对象?不可达对象,就是不能通过任何引用来访问到这个对象,此时就会变成垃圾对象。在测试时,加入JVM参数分析:-XX:+PrintGCDetails下面来测试class ClassB{ /**此对象在被销毁(GC)之前会执行此方法*/ @Override protected void finalize() throws Throwable { System.out.println("finalize()"); }}public class
2020-06-01 17:24:06
355
1
原创 关于C的研究试验123--《汇编语言(王爽)》
搭建一个精简的C语言开发环境(1)在D盘下建立新的文件夹,名为minic(2)将minic设为dos下的E盘(3)拷贝tc2.0下的tc.exe到minic下(4)运行tc.exe,tc–>Options–>Directories,清空所有路径,然后用“Save option”保存设置编辑一个简单的simple.c程序,Compile–>Compile to OBJ,进行编译,然后Compile–>Link EXE file,进行连接,不成功,缺少C0S.OBJ、CS.LI
2020-06-01 07:50:33
333
原创 SSM-1-Mybatis快速入门
Mybatis快速入门准备数据,创建库和表-- 1、创建数据库 yonghedb 数据库create database if not exists yonghedb charset utf8;use yonghedb; -- 选择yonghedb数据库-- 2、删除emp表(如果存在)drop table if exists emp;-- 3、在 yonghedb 库中创建 emp 表create table emp( id int primary key auto_incremen
2020-05-31 22:35:12
147
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人