自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 出现了异常,程序会怎么办?

Java中程序出现了异常,整个程序会停止吗,程序是啥反应?一直都思考不明白的问题。学JVM的时候记下来的一句话Java方法有两种结束方式,一种是return命令直接返回,另一种是抛出未被捕获的异常而结束,两种方式都对应着栈帧的弹出。意思就是出现异常没补捕获方法就会结束? 弹出的栈帧是出现异常的那个栈帧还是全部栈帧?测试代码:结果:可见,m1和m2的sout都没有执行。难道逻辑是这样:m2中出现的异常没有解决,会抛出去,然后把m2栈帧弹出去!然后执行m1,m1也没有捕获这个异常,就继续

2022-03-02 00:56:19 284

原创 try-catch-finally

1、finally语句总会执行2、如果try、catch中有return语句,finally中没有return,那么在finally中修改除包装类型和静态变量、全局变量以外的数据都不会对try、catch中返回的变量有任何的影响(包装类型、静态变量、全局变量)3、尽量不要在finally中使用return语句,如果使用的话,会忽略try、catch中的返回语句,也会忽略try、catch中的异常,屏蔽了错误的发生4、finally中避免再次抛出异常,一旦finally中发生异常,代码执行将会抛出fin

2021-04-27 10:41:27 159

原创 经典问题:int i = 10; i = i++; 的问题,从JVM的角度理解

题目之前学多线程的时候遇到的问题,题目如下:public class Demo03 { public static void main(String[] args) { int i = 10; i = i++; System.out.println(i); }}很多人都已经背下来了答案:10。我一直很搞不懂为啥结果是10,在网上找的博客也一直没有讲解很清晰的,正好今天学了JVM的字节码指令,对于这个问题解开了一点疑惑。分析过程首

2021-04-26 21:56:00 2424 4

原创 Redis-涵盖大部分知识

Redis 简介概念:Redis是用基于C语言开发的一个开源的高性能键值对(Key-value)数据库。特征:数据之间没有必然的关联关系内部采用单线程机制进行工作高性能。50个并发执行十万个请求,读的速度是11万次/秒,写的速度是8.1万次/秒多数据类型支持字符串类型 string 类似 String列表类型 list 类似LinkedList散列类型 hash 类似Hash

2021-04-12 22:06:17 316

原创 排序算法(冒泡排序、选择排序、插入排序、希尔排序、归并排序、快速排序)

冒泡排序思想:比较两个相邻的元素,将较大的元素放在右边代码://写法一 public static void bubbleSort(int[] arr) { for (int i = arr.length - 1; i > 0; i--) { for (int j = 0; j < i; j++) { if (arr[j] > arr[j + 1]) swap(arr, j+1, j);

2021-04-07 10:30:06 166 1

原创 生产者消费者模型-Java实现

Java实现生产者消费者模型class Clerk { private static int productNumber = 0;//商品的数量 private static final int MAX = 20; //最多可以有20个商品 public synchronized void addProduct() { try { Thread.sleep(1000); //延时,让效果更加明显 } catch (E

2021-04-04 10:07:55 89

原创 前缀树过滤敏感词

什么是前缀树?前缀树别名单词查找树、字典树,结构图为:结构特性为:根节点不存储值,除根节点外每一个节点都只包含一个字符(也可以说是在字符存在路径上)。对应某一个节点,其子节点的值各不相同从根节点到某一个节点,路径上经过的字符连接起来,为该叶子节点对应的字符串应用场景:前缀匹配字符串检索词频统计优缺点:查找效率高,耗费内存,典型的以空间换时间。过滤敏感词的检索原理利用词的公共前缀缩小查词范围,提高检索效率过滤敏感词的实现1. 定义一个前缀树的结构private cla

2021-04-01 12:16:01 458

原创 MySQL高级知识总结

存储引擎InnoDB和MyISAM的区别?锁:MyISAM只支持表级锁,InnoDB支持表级锁和行级锁事务和崩溃后的安全恢复:MyISAM强调性能,每次的查询都具有原子性,但是不支持事务;InnoDB支持事务、回滚和崩溃修复。外键:MyISAM不支持外键,InnoDB支持外键MVCC:InnoDB支持MVCC(多版本并发控制)索引什么是索引?**索引是通过对数据库表的一列或者多列的值进行排序实现能够帮助MySQL高效获取数据的一种数据结构,**它可以大大提高数据库的检索速度。就好比一本书的目

2021-03-30 21:41:54 167

原创 HashMap的get()和put()的底层实现原理

概述HashMap基于Map接口实现,以键值对(Key-Value)的形式存储数据,允许null值和null键;HashMap不是线程安全的,同时也不保证元素有序。HashMap的底层是以 数组 + 链表 + 红黑树来实现的。get()的实现public V get(Object key) { Node<K,V> e; // 哈希表是由一个个Node组成的 return (e = getNode(hash(key), key)) == null ? null : e.val

2021-03-26 20:13:00 1243

原创 Java基础复习

#基础知识##二进制的原码、反码、补码在计算机底层中,所有的数字都是以二进制的补码存储的。对于正数:三码相同。对于负数:原码:直接将该数转成而二进制码,最高位是符号位,0代表正数,1代表负数反码:符号位不变,其他位取反补码:反码+1Java基础部分方法的重载与重写重载:在同一个类中,存在多个重名方法,只要他们的**参数列表(参数个数或者参数类型)**不同即可构成重载。​ “两同一不同”:同一个类,同一个方法名;参数列表不同​ 与其他的比如 权限修饰符、返回值类型、参数变量

2021-03-23 08:25:55 85

原创 旋转数组的最小数字

题目描述分析:根据题意可知,旋转数组就是将一个递增的数组分成两个递增数组去看待,一个在前,一个在后,后面的数组是值较小的数组,前面的数组是值较大的数组。思路一:暴力法,直接遍历。我们已经知道,不考虑特殊情况,在前面的数组是值较大的数组,在后面的数组是值较小的数组。那么我们可以遍历数组,对前后两个数字进行比较,直到出现当前数字比前一个数字小的情况,那么当前数字就是在整个数组中值最小的那一个。特殊情况1:整个数组就是递增的,也就是说旋转的时候,把0个数字放在了后面,相当于整个数组没有变,那么我们在

2021-03-09 01:44:20 171

原创 重建二叉树--递归求解

题目:输入某二叉树的前序遍历和中序遍历的结果,请重建该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。首先需要明白的基础知识:二叉树前序遍历的第一个元素为二叉树的根节点拿到根节点后,在二叉树的中序遍历中找到这个根节点的值,则在二叉树的中序遍历中,该根节点前面的数都属于根节点的左子树,后面的数都属于右子树。因此在可以将前序遍历和中序遍历的数组划分为:前序遍历:[ 根节点 | [左子树的前序遍历] | [右子树的前序遍历] ]中序遍历:[[左子树的中序遍历] | [根节点] |.

2021-03-06 15:31:29 106

原创 Servlet容器、Web容器、Spring容器、SpringMVC容器

要想知道他们之间的关系,我们得先搞清楚他们分别是什么?Servlet容器介绍Servlet容器的时候顺便复习下Java Web,我们都知道 Java Web 的三大组件:Servlet、Filter、Listener。Servlet:可以理解为是运行在服务端的Java小程序,它负责客户端和服务端的信息交互和处理。但是Servlet中没有main方法,不能独立运行,所以必须存放在Servlet容器中,由Servlet容器去管理Servlet。那么它工作的过程就是:客户端发送请求,传递到Servlet容

2021-02-27 22:09:08 206 1

原创 TCP实现网络通信

客户端package com.zhang.lession02;import java.io.*;import java.net.InetAddress;import java.net.Socket;public class TCPClientDemo02 { public static void main(String[] args) throws Exception { Socket socket = new Socket(InetAddress.getByNam.

2021-02-04 17:55:23 112

原创 UDP网络编程实现多线程聊天

实现两个人都可以发送和接收消息TalkSender.javapackage com.zhang.chat;import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.net.DatagramPacket;import java.net.DatagramSocket;import java.net.InetSocketAddress;import

2021-02-04 16:59:35 109 2

原创 多线程学习笔记

基本概念程序(program):一段静态的代码进程(process):已经加载到内存中正在运行的程序, 是动态的;进程是资源分配的基本单位如正在执行的一个qq、微信程序就是一个进程线程(thread):进程可进一步划分为线程,是一个程序内部的一条执行路径多线程:一个进程同一时间并行执行多个线程,就是支持多线程的线程是调度和执行的基本单位,每个线程拥有独立的运行栈和程序计数器一个进程中的多个线程共享相同的内存单元/内存地址空间,他们从同一堆中分配对象,可以访问相同的变量和对象,这使得线程间

2021-01-18 21:52:18 72

原创 MySQL复习总结(二)

连接查询连接查询就是将多张表联合起来进行查询。连接方式:内连接等值连接非等值连接自连接外连接左外连接(左连接)右外连接(右连接)全连接笛卡尔积现象:当两张表进行连接查询的时候,没有任何条件的限制,查询的结果就是两张表的记录数的乘积。解决:并且加上过滤条件。使用一个案例来说明--- 找出每一个员工的部门名称,要求显示员工名和部门名。select ename,dname from emp,dept -- 如果emp表中有5条记录,dept中有4条记录,查出来的结果

2020-12-04 15:59:50 86

原创 MySQL复习总结(一)

创建数据库表对已经建好的表和数据库,是可以查看其建表或建库的语句的show create database `user`; -- 可以查看创建user库的sql语句show create table `user`; -- 查看创建user表的sql语句-- 输出结果CREATE TABLE `user` ( `id` INT(11) NOT NULL AUTO_INCREMENT, `username` VARCHAR(255) NOT NULL, `password` VAR

2020-12-03 22:26:09 109

原创 spring:快速开始

本文旨在说明spring程序的开发步骤,是一个小的quickstart导入Spring的maven坐标编写UserDao接口和UserDaoImpl实现类创建Spring核心配置文件applicationContext.xml,并配置UserDaoImpl通过测试打印出Bean实例具体实现:导入Spring的maven坐标<dependency> <groupId>org.springframework</groupId>

2020-11-25 11:28:18 110

空空如也

空空如也

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

TA关注的人

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