自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

菜鸟踩坑

如有错误,请大佬们多指点

  • 博客(51)
  • 收藏
  • 关注

原创 Java 操作 Excel(POI及EasyExcel)

视频地址(狂神说):https://www.bilibili.com/video/BV1Ua4y1x7BK介绍https://baike.baidu.com/item/POI/8886826?fr=aladdinpom.xml<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3

2020-11-30 17:38:44 687

原创 Java 五种单例模式

适用场景: 需要生成唯一序列的环境 需要频繁实例化然后销毁的对象。 创建对象时耗时过多或者耗资源过多,但又经常用到的对象。 方便资源相互通信的环境 饿汉式特点:线程安全,调用效率高,但是不能延时加载public class HungrySingle { //实例化 private static final HungrySingle hs = new HungrySingle(); //私有化构造器 private Hungr

2020-10-30 15:51:15 306

原创 六句话给出 Synchronized 和 Lock 的区别

1、Synchronized 内置的 Java 关键字;Lock 是一个 Java 类;2、Synchronized 无法判断获取锁的状态;Lock 可以判断是否获取到了锁;3、Synchronized 会自动释放锁;Lock 必须要手动释放锁,如果不释放锁,就会变成死锁;4、Synchronized 线程A获得锁,线程B等待,A阻塞,B一直等待;Lock锁就不一定会等待下去;5、Synchronized 可重入锁,不可中断,非公平;Lock,可重入锁,可以判断锁,可公平;6、Synch

2020-10-28 08:13:27 314

原创 简单使用 Hibernate 的检索策略

hibernate检索策略分为两类:立即查询:根据id查询,调用get方法,一调用get方法马上发送语句查询数据库延迟查询:根据id查询,调用load方法,调用load方法不会马上发送语句查询数据,只有得到对象里面的值时候才会发送语句查询数据库(1)类级别延迟:根据id查询返回实体类对象,调用load方法不会马上发送语句(2)关联级别延迟:例:查询某个客户,再查询这个客户的所有联系人,查询客户的所有联系人的过程是否需要延迟,这个过程称为关联级别延迟关联级别延.

2020-10-20 08:09:59 209

原创 一篇文章带你了解网络编程(总结)

一、概述计算机网络是通过传输介质、通信设施和网络通信协议,把分散在不同地点的计算机设备互连起来的,实现资源共享和数据传输的系统。网络编程就是编写程序使互联网的两个(或多个)设备之间进行数据传输。二、网络分层计算机网络分为网络协议和网络体系结构1、网络体系结构通过网络发送数据是一项复杂的操作,必须仔细地协调网络的物理特性以及所发送数据的逻辑特征。通过网络将数据从一台主机发送到另外的主机,这个过程是通过计算机网络通信来完成。网络通信的不同方面被分解为多个层,层与层之间用接口连.

2020-09-09 10:07:41 10348 3

原创 详解 cookie/session

会话(Session)跟踪是Web程序中常用的技术,用来跟踪用户的整个会话。常用的会话跟踪技术是Cookie与Session。Cookie通过在客户端记录信息确定用户身份,Session通过在服务器端记录信息确定用户身份Cookie什么是 cookie?储存在用户本地终端的数据,类型为“小型文本文件”,是某些网站为了辨别用户身份,进行会话跟踪而储存在用户本地终端上的数据(通常经过加密),由用户客户端计算机暂时或永久保存的信息。cookie 机制Cookie技术是客户端的解决方案,Cook

2020-09-04 11:09:17 865

原创 一篇简单易懂的文章教你如何快速掌握 Vue

Vue 入门Vue 第一个程序包下载:https://cn.vuejs.org/v2/guide/installation.htmlcdn 引用: <script src="https://cdn.jsdelivr.net/npm/vue@2.6.11/dist/vue.js"></script> <script src="https://cdn.jsdelivr.net/npm/vue@2.6.11/dist/vue.min.js"></s

2020-08-25 08:18:55 1116

原创 详解 Java 类加载与反射(笔记)

Java 类加载机制Java 内存分析jvm把class文件加载到内存,并对数据进行校验、解析和初始化,最终形成jvm可以直接使用的java类型的过程。 加载:将class文件字节码内容加载到内存中,并将这些静态数据转换成方法区中的运行时数据结构,在堆中生成一个代表这个类的java.lang.Class对象,作为方法区类数据的访问入口。 链接:将java类的二进制代码合并到jvm的运行状态之中的过程,链接过程又分为3个过程: (1)、验证:确保加载的类信息符合jvm规范,没有

2020-08-19 09:19:10 1200 1

原创 超简单理解 Java 注解(Annotation)

什么是注解? Annotation 是从JDK5.0开始引入 Annotation 的作用 不是程序本身,可以对程序作出解释(这一点和注释(comment)没什么区别) 可以被其他程序(比如:编译器等)读取 Annotation的格式 注解是以“@注解名”在代码中存在,还可以添加一些参数值,例如:@SuppressWarnings(value="unchecked") Annotation在哪使用? 可以附加在package,class,method,fi

2020-08-18 09:09:39 363 1

原创 详解 Java 多线程(笔记)

什么是进程和线程?几乎所有的操作系统都支持进程的概念,所有运行中的任务通常对应一个进程 (Process)。当一个程序进入内存运行时,即变成一个进程。进程是处于运行过程中的程序,并且具有一定的独立功能,进程是系统进行资源分配和调度的一个独立单位一般而言,进程包含如下三个特征。 独立性:进程是系统中独立存在的实体,它可以拥有自己独立的资源,每一个进程都拥有自己私有的地址空间。在没有经过进程本身允许的情况下,一个用户进程不可以直接访问其他进程的地址空间。 动态性:进程与程序的区别在于,程序只

2020-08-14 11:16:58 513

原创 详解 Java I/O(笔记)

什么是I/O?IO(输入/输出)是比较抽象的,看不到明显的运行效果,但输入和输出是所有程 序都必需的部分。使用输入机制,允许程序读取外部数据(包括来自磁盘、光盘等存 储设备的数据、来自网络的数据)、用户输入数据;使用输出机制,允许程序记录运 行状态,将程序数据输出到磁盘、光盘等存储设备中和网络其他设备中。Java的IO通过java.io包下的类和接口来支持,在java.io包下主要包括输入流、输 出流两种IO流,每种输入、输出流又可分为字节流和字符流两大类。其中字节流以字 节为单位来处理输入、输出操

2020-08-11 10:53:30 355

原创 详解 Java 集合(笔记)

Java集合可用于存储数量不等的对象,并可以实现常用的数据结构,如栈,队列等。除此之外,Java集合还可用于保存具有映射关系的关联数组。Java集合大致分为:List、Set、Queue、MapList:代表有序、重复的集合Set:代表无序、不可重复的集合Queue:代表队列集合Map:代表具有映射关系的集合(k-v)为了保存数量不确定的数据,以及保存具有映射关系的数据(也被称为关联数组),Java提供了集合类,主要负责保存、盛装其他数据,因此也被称为容器类,所有的集合类都位于 ja

2020-08-09 19:08:18 543 1

原创 android开发-Activity和Fragment的生命周期

Activity有三种状态:当它在屏幕前台时,响应用户操作的Activity, 它是激活或运行状态;当它上面有另外一个Activity,使它失去了焦点但仍然对用户可见时, 它处于暂停状态;当它完全被另一个Activity覆盖时则处于停止状态;当Activity从一种状态转变到另一种状态时,会调用其生命周期方法。详情:1.启动Activity:系统会先调用onCreate...

2020-04-28 17:46:52 1036

原创 java 获取项目的路径

String path = System.getProperty("user.dir");String path1 = Thread.currentThread().getContextClassLoader().getResource("").getPath(); //获取当前资源的虚拟路径

2019-12-13 10:11:23 181

原创 简单理解Java类加载时机

类从被加载到虚拟机内存开始,到卸载出内存为止,一共会经历 加载、验证、准备、解析、初始化、使用、卸载 7个阶段。其中 验证、准备、解析 这三个解析被称为连接过程。一般来说,以上过程会按部就班地开始,但只是开始,因为这些阶段会交叉进行,通常会在一个阶段开始后激活调用另一个过程。以下4种情况下,一定会开始类的加载过程:(1)、遇到new、getstatic、putstatic、invo...

2019-09-12 21:16:07 247

原创 简单理解 Java 类加载过程

一个java文件从编码完成到最终执行,一般主要包括两个过程:编译和运行。编译,即是写好的Java文件通过javac命令编译成字节码,也就是常见的.class文件;运行,则是把编译.class文件交给Java虚拟机(JVM)运行。类加载过程即是指JVM虚拟机把.class文件中类信息加载进内存,并进行解析生成对应的class对象的过程。例子:JVM 在执行某段代码时,遇到了 class A,...

2019-09-12 21:04:29 225

原创 简单理解 JVM 垃圾回收算法

1、标记-清除算法(Mark-Sweep)标记-清除算法采用从根集合(GC Roots)进行扫描,对存活的对象进行标记,标记完毕后,再扫描整个空间中未被标记的对象,进行回收,如下图所示。标记-清除算法不需要进行对象的移动,只需对不存活的对象进行处理,在存活对象比较多的情况下极为高效,但缺点有两个:一个是效率问题,标记和清除过程的效率都不高;另外一个是空间问题,标记清除之后会产生大量不连续的内存...

2019-08-18 08:07:12 234 1

原创 简单理解 JVM 内存结构

Java虚拟机运行时数据区域被分为五个区域:堆(Heap)、栈(Stack)/本地方法栈(Native Stack)、方法区,包含运行时常量池(Method Area)、程序计数器/PC 寄存器(Program Count Register),还有一个直接内存:直接向系统内存申请的一块内存区域,javaNIO 会使用,速度优于 java 堆内存。- 隶属于物理内存,不属于 JVM 内存。一...

2019-08-17 20:54:03 165

原创 Java定制序列化内容

序列化给传递对象和报文带来了方便,如果没有序列化就没有系统间的交互,所以序列化非常重要。有些场景不需要把所有的属性都传递出去,所以需要针对实际情况定制化对象的序列化内容。针对定制化,Java提供了一接口Externalizable。import java.io.Externalizable;import java.io.FileInputStream;import java.io.Fil...

2019-08-08 08:38:31 283

原创 Java序列化和实现序列化

Java对象以及类的基本信息在JVM内存中随着JVM停止而消失,JVM下次启动又会重新加载字节码。但是假如系统下次启动后,某对象A需要依赖系统本次对象A的值的时候,就需要考虑对象A“持久化”的问题。看到“持久化”都会想到数据库或者缓存,这里注重面向对象的思维来“持久化”对象,所以数据库和缓存的方式不适合这种情况。基于对象能够在程序不运行的情况下仍能存在并保存其信息的需求,对象的序列化功能孕育而生。...

2019-08-08 08:34:22 229

原创 Java实现八种排序算法及其原理(二)

上一篇(https://blog.youkuaiyun.com/weixin_44544465/article/details/97491684)已介绍了冒泡排序、选择排序、插入排序、希尔排序,八种还剩四种:1、归并排序把序列递归划分成为一个个短序列,以其中只有1个元素的直接序列或者只有2个元素的序列作为短序列的递归出口,再将全部有序的短序列按照一定的规则进行排序为长序列。归并排序融合了分治策略,即将...

2019-07-27 10:32:36 231

原创 Java实现八种排序算法及其原理(一)

所谓排序,就是使一串记录,按照其中的某个或某些关键字的大小,递增或递减的排列起来的操作。排序算法,就是如何使得记录按照要求排列的方法。排序算法在很多领域得到相当地重视,尤其是在大量数据的处理方面。一个优秀的算法可以节省大量的资源。在各个领域中考虑到数据的各种限制和规范,要得到一个符合实际的优秀算法,得经过大量的推理和分析。排序(Sorting) 是计算机程序设计中的一种重要操作,它的功能是将一...

2019-07-27 10:24:53 798

原创 Java TCP中的InetAddress和ServerSocket

TCP网络设计程序,是指利用Socket类编写通信程序。1、InetAddress类java.net包中的InetAddress类是与IP地址相关的类,利用该类可以获取IP地址、主机地址等信息。InetAddress类的常用方法如下:例子:使用InetAddress类的getHostName()和getHostAddress()方法获取本地主机的本机名、本机IP地址:public cl...

2019-07-18 08:40:10 654

原创 Java解决资源访问冲突(线程同步)

在单线程序中,每次只能做一件事情,后面的事情需要等待前面的事情完成后才可以进行,但如果使用多线程程序,就会发生两个线程抢占资源的问题。所以在多线程编程中需要防止资源之间访问的冲突,而Java提供了线程同步机制来防止这种冲突。实际开发中,使用多线程程序的情况很多。这种多线程的程序通常会发生问题,就以火车站售票系统为例,在代码中判断当前票数是否大于0,如果大于0则执行将该票出售给乘客的功能,但当两个...

2019-07-18 08:34:40 794

原创 Java异常及其处理机制

Java把所有的非正常情况分成两种:异常(Exception)和错误(Error),它们都继承Throwable父类。Error错误,一般是指与虚拟机相关的问题,如系统崩溃、虚拟机错误、动态链接失败 等,这种错误无法恢复或不可能捕获,将导致应用程序中断。通常应用程序无法处理 这些错误,因此应用程序不应该试图使用catch块来捕获Error对象。在定义该方法 时,也无须在其throws子句中声明该...

2019-07-07 11:07:18 332

原创 javascript中数组中pop()、push()、unshift()、shift()

javascript数组Array,作用是使用单独的变量名来存储一系列的值,如创建数组,为其赋值:常规的方式:var myArray = new Array();myArray[0] = "One";myArray[1] = "Two";myArray[2] = "Three";简洁方式:var myArray = new Array("One","Two","Three");...

2019-07-06 21:23:26 432

原创 Java Thread里的run()与start()

Java 的线程是通过 java.lang.Thread 类来实现的。VM 启动时会有一个由主方法所定义的线程。可以通过创建 Thread 的实例来创建新的线程。每个线程都是通过某个特定 Thread 对象所对应的方法 run() 来完成其操作的,方法 run() 称为线程体。通过调用 Thread 类的 start() 方法来启动一个线程。线程的五种状态,新建、就绪、运行、阻塞和结束...

2019-06-27 10:11:33 1188

原创 跨域详情和请求资源共享

在浏览器端进行ajax请求时会出现跨域问题,如下图所示:跨域指的是浏览器不能执行其他网站的脚本,是由浏览器的同源策略造成的,是浏览器对JavaScript施加的安全限制。其中,同源是指域名、协议、端口均相同,只要有一个不同,那就是所谓的跨域,如:http://www.index.com --> http://admin.index.com 这就是跨域而非跨域:http:/...

2019-06-27 09:47:21 213

原创 ajax请求和解析json数据

AJAX = Asynchronous JavaScript and XML(异步的 JavaScript 和 XML),是一种用于创建快速动态网页的技术一种在无需重新加载整个网页的情况下,能够更新部分网页的技术,通过在后台与服务器进行少量数据交换,Ajax 可以使网页实现异步更新。1、jQueryajax()方法用于执行 AJAX(异步 HTTP)请求。所有的 jQuery AJAX 方法...

2019-06-16 19:58:18 1973

原创 Servlet获取request对象中所有数值

Java 中使用servlet 传输数据是,最烦的就是表单数据太多,又不想一个一个声明,这样子很浪费时间,所以封装了一个解析request中数据对象的方法,如下:import java.lang.reflect.InvocationTargetException;import java.util.Enumeration;import javax.servlet.http.HttpSer...

2019-06-16 19:45:03 2064

原创 Java 工具类自动生成实体类文件

在一些程序中,实体类是数据不可缺少的一部分,简单点说就是属性类,通常定义在model层里面。一般的实体类对应一个数据表,其中的属性对应数据表中的字段。属性可以对字段定义和状态进行判断和过滤,把相关信息用一个实体类封装后,在程序中可以把实体类作为参数传递,更加方便。然而,当数据表中字段过多时,就不好写了,需要一个一个地封装,显得有点麻烦,而且浪费时间,所以,弄了一个工具类,根据表名去查询该表的字段生...

2019-06-08 20:11:55 4325

原创 Java jdbc封装查询工具类

连接数据库(已SQL SERVER为例):private static String username = "sa"; private static String password = "123"; private static String url = "jdbc:sqlserver://localhost:1433;DatabaseName=EmperorSystem"; priv...

2019-06-08 10:49:20 948

原创 Java jdbc封装增、删、改工具类

Java 中jdbc(java数据库连接)是一种用于执行SQL语句的java api,可以为多种关系数据库提供统一访问,这里以SQL SERVER数据库为例子,写一个连接数据库实现增删改的工具类。开始需要建立数据库连接,声明四个字段username(用户名),password(密码),url(数据库地址),driver(驱动),如:private static String userna...

2019-06-08 10:41:29 293

原创 Java 数据库image型输出图片

有一些程序在sql server中存储图片的方式是通过二进制存储导数据库的,那么保存进去之后,怎么把图片显示出来呢?直接上代码,servlet后台代码:byte[] b1 = ””;//数据库查询出来的二进制InputStream in = new ByteArrayInputStream(b1);response.setContentType("image/jpg");Outpu...

2019-05-27 20:43:36 4349

原创 Java AES 256位加密解密

Java AES解密加密算法默认是支持128位的,但是,最近,做了登录练习,是从数据库里的用户表提取用户账号和密码来进行验证登录,因为用户表里的密码是经过256位加密进行储存的,而且是用PKCS7Padding的填充方式来存储,所以Java默认的128位解密加密读出来的数据与数据库中的数据不匹配,而且Java默认支持的填充方式是PKCS5Padding,所以需要引用第三方jar包bouncycas...

2019-05-27 14:38:09 7715 1

原创 Java 基本线程机制

当一个程序进入内存运行时,即变成一个进程。进程是处于运行过程中的程序,并且具有一定的独立功能,进程是系统进行资源分配和调度的一个独立单位一般而言,进程包含如下三个特征。独立性:进程是系统中独立存在的实体,它可以拥有自己独立的资源,每一个进程都拥有自己私有的地址空间。在没有经过进程本身允许的情况下,一个用户进程不可以直接访问其他进程的地址空间。 动态性:进程与程序的区别在于,程序只是一个静态...

2019-05-16 20:09:26 863

原创 Java 迭代循环

While、do-while和for都是用来控制循环,有时将它们划分为迭代语句。语句会重复执行,直到起控制作用的布尔表达式得到结果时为止。1、While循环语句格式如下:while(布尔表达式){ //循环内容}在循环刚开始时,会计算一次布尔表达式的值;而在语句的下一次迭代开始前会再计算一次。下面一个例子可产生随机数,直到符合特定条件为止:public class Wh...

2019-05-16 19:52:54 13072

原创 Java File复制指定文件

方法一:复制目录下的所有文件,不包括目录本身先定义一个方法copyFile,里面传入两个String参数,一个是要复制文件的路径名称,一个是要复制文件到该文件夹下的路径,然后声明实例,然后就创建newFile目录mkdir(),然后声明一个字符串数组用来指定file目录中的文件和目录,在声明一个temp为空,判断指定目录下是否有相同文件名的文件,然后利用循环来读取指定复制文件下的目录子文件,递...

2019-05-07 11:20:36 2711

原创 Java 简单泛型

泛型,即“参数化类型”,顾名思义,就是将类型由原来的具体的类型参数化,类似于方法中的变量参数,此时类型也定义成参数形式(可以称之为类型形参),然后在使用/调用时传入具体的类型(类型实参)。在Java中有许多原因促成泛型的出现,其中有一个原因,就是为了创造容器类。容器,就是存放要使用的对象的地方,比如数组,不过与简单的数组相比,容器类更加灵活,具备更多不同的功能。事实上,所有的程序,在运行时都要...

2019-05-05 20:44:29 160

原创 Java 动态代理

代理是基本的设计模式之一,作用是为了提供额外的或不同的操作,而插入的用来代替“实际”对象的对象。这些操作通常涉及与“实际”对象的通信,因此代理通常充当着中间人的角色,下面是一个代理结构的例子:先定义一个接口:public interface Interface { void doSomething(); void somethingElse(String arg);}class ...

2019-05-05 19:23:13 135

空空如也

空空如也

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

TA关注的人

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