JAVA
少年啦飞啦
这个作者很懒,什么都没留下…
展开
-
JAVA字符串的相关处理总结
1、Java拼接字符串时,去掉最后一个多余字符:https://blog.csdn.net/itmyhome1990/article/details/50519206/原创 2020-02-14 17:14:42 · 103 阅读 · 0 评论 -
J2SE:二维数组
为了方便组织各种信息,计算机常将信息以表的形式进行组织,然后再以行和列的形式呈现出来。二维数组的结构决定了其能非常方便地表示计算机中的表,以第一个下标表示元素所在的行,第二个下标表示元素所在的列。下面简单了解一下二维数组,包括数组的声明和初始化。创建二维数组在Java中二维数组被看作数组的数组,即二维数组为一个特殊的一维数组,其每个元素又是一个一维数组。Java 并不直接支持二维数组,但是...原创 2020-02-14 15:38:19 · 514 阅读 · 0 评论 -
NIO的基本理解
NIO简介在Java1.4之前的I/O系统中,提供的都是面向流的I/O系统,系统一次一个字节地处理数据,一个输入流产生一个字节的数据,一个输出流消费一个字节的数据,面向流的I/O速度非常慢,而在Java 1.4中推出了NIO,这是一个面向块的I/O系统,系统以块的方式处理处理,每一个操作在一步中产生或者消费一个数据库,按块处理要比按字节处理数据快的多。在NIO中有几个核心对象需要掌握:缓冲...转载 2020-01-12 22:46:29 · 247 阅读 · 0 评论 -
jsp的基本认识与理解
简介:JSP全称是JavaServer Pages,它和servlet技术一样,都是SUN公司定义的一种用于开发动态web资源的技术。JSP这门技术的最大的特点在于,写jsp就像在写html,但:它相比html而言,html只能为用户提供静态数据,而Jsp技术允许在页面中嵌套java代码,为用户提供动态数据。相比servlet而言,servlet很难对数据进行排版,而jsp除了可以...原创 2020-01-12 13:29:57 · 989 阅读 · 0 评论 -
rest以及restful的基本理解
传统下的API接口http是目前在互联网上使用最多的协议,没有之一。可是http的创始人一直都觉得,在过去10几年来,所有的人都在错误的使用Http.这句话怎么说呢?如果说你要删除一个数据,以往的做法通常是 delete/{id} 如果你要更新一个数据,可能是Post数据放Body,然后方法是 update/{id}, 或者是artichle/{id}?method=update...转载 2020-01-11 22:52:36 · 412 阅读 · 0 评论 -
Servlet的基本理解
什么是ServletServlet(Server Applet),全称Java Servlet Applet,直译过来就是运行在服务器端的应用程序。是用Java编写的服务器端程序。其主要功能在于交互式地浏览和修改数据,生成动态Web内容。狭义的Servlet是指Java语言实现的一个接口,广义的Servlet是指任何实现了这个Servlet接口的类,一般情况下,人们将Servlet理解为后者。...转载 2020-01-08 23:32:44 · 772 阅读 · 0 评论 -
Servlet之Filter过滤器的基本理解
Filter过滤器Filter和Servlet一样,本质上也是一个接口,javax.servlet.Filter接口。当客户端访问服务器的资源时,过滤器可以将请求拦截下来,完成一些特殊的功能。过滤器一般用于完成通用的操作,比如多个资源具有共同的一个操作,可以抽取出来放到过滤器中。比如,登陆验证/统一编码处理/敏感字符过滤等等。使用步骤:1,定义一个类,实现Filter接口 2...原创 2020-01-09 22:02:35 · 618 阅读 · 0 评论 -
Servlet之Listener监听器的基本理解
ServletContextListener(Servlet全局监听器)首先要说明的是,ServletContextListener是一个接口,我们随便写一个类,只要这个类实现了ServletContextListener接口,那么这个类就实现了【监听ServletContext】的功能。那么,这个神奇的接口是如何定义的呢?我们来看一下这个接口的内部情况:package javax.se...转载 2020-01-09 22:01:18 · 272 阅读 · 0 评论 -
JDK8新特性之Lambda表达式的基本使用
函数式编程思想:只要能获取到结果,谁去做的,怎么做的都不重要,重视的是结果,不重视过程。 2014年3月Oracle所发布的java8(jdk1.8)中加入了Lambda表达式,是一个十分重要的新特性。以Runnable接口的实现为例Lambda表达式由三部分组成:一些参数、一个箭头和一段代码,格式如下:说明:参数列表就是抽象方法中的参数列表,没有就空着 箭头表示...原创 2019-12-15 21:49:45 · 606 阅读 · 1 评论 -
J2SE:向上转型和向下转型
Java 转型问题其实并不复杂,只要记住一句话:父类引用指向子类对象。什么叫父类引用指向子类对象?从 2 个名词开始说起:向上转型(upcasting)、向下转型(downcasting)。举个例子:有2个类,Father 是父类,Son 类继承自 Father。第 1 个例子:Father f1 = new Son(); // 这就叫 upcasting (向上转型)...转载 2019-12-09 22:05:30 · 214 阅读 · 0 评论 -
多线程:定时器的实现
JDK5之前的定时器:Timer类javax.util.Timer是一个对线程进行计时执行的类,它的构造方法和成员方法如下示例1:指定延迟后执行一次//任务定时器new Timer().schedule(new TimerTask() { @Override public void run() { System.out.println("爆炸!"...原创 2019-12-09 21:25:36 · 502 阅读 · 0 评论 -
并发库:同步工具类
1、Semaphore计数信号量Semaphore计数信号量维护了一个许可集,用于限制访问某些资源的线程数目,并提供同步机制。通俗来说,就是可以控制让多个线程拿到许可,拿到许可的线程可以并发管理同一个资源,这些拿到许可的线程可以看做一个整体。如果是单个信号量的Semaphore对象,就可以实现互斥锁的功能,而且,可以由一个线程获得许可,另一个线程去释放许可。可以应用于死锁恢复的一些场合...原创 2019-12-09 21:10:16 · 94 阅读 · 0 评论 -
并发库:同步锁
Lock锁Lock是一个接口,提供了比 synchronized代码更好用的锁定操作,更加符合面向对象的思想。Lock接口的一个常用实现类ReentrantLock,两个常用方法lock和unLock:使用步骤如下:创建一个ReentrantLock对象 在可能会出现安全问题的代码前使用lock方法获取锁 在代码之后使用unLock释放锁通常要结合try…catc...原创 2019-12-09 21:02:25 · 94 阅读 · 0 评论 -
并发库:有返回结果的多线程
要想实现多线程可以返回一个结果,需要涉及到ExecutorService、Callable和Future这三个类。如果是要执行某个线程任务而不用返回任何结果,就使用execute方法来执行Runnable线程任务。但是如果想要返回一个结果,就需要用到ExecutorService接口的submit方法。该方法可以传递一个Callable<V>接口(可以使用匿名内部类),覆盖...原创 2019-12-09 20:57:49 · 267 阅读 · 0 评论 -
并发库:简介与线程池的基本使用
Java 5 添加了一个新的包到Java平台,java.util.concurrent包(即多线程并发库)。这个包包含一系列能够让Java的并发编程变得更加简单轻松的类。java.util.concurrent包还有两个子包java.util.concurrent.atomic 包 (多线程的原子性操作提供的工具类) java.util.concurrent.lock 包 (多线程的锁机...原创 2019-12-09 20:53:54 · 155 阅读 · 0 评论 -
多线程:线程内局部变量
ThreadLocal类该类提供了线程内局部 (thread-local) 变量。好比有两个窗口(两个线程),一个窗口可以拿饮料,一个窗口可以拿食物。现在有多个人要来拿东西,如果在饮料窗口有的人拿到了饮料,有的人拿到了不该拿的食物,就说明线程之间出现了混乱,我们应当避免这种情况出现。以下代码就可能会出现线程混乱的问题:private static int data;publi...原创 2019-12-08 23:07:04 · 1733 阅读 · 0 评论 -
多线程:多个线程共享数据
在 Java 传统线程机制中的共享数据方式,大致可以简单分两种情况:多个线程行为一致,共同操作一个数据源。也就是每个线程执行的代码相同,可以使用同一个 Runnable 对象,这个 Runnable 对象中有那个共享数据,例如,卖票系统就可以这么做。 多个线程行为不一致,共同操作一个数据源。也就是每个线程执行的代码不同,这时候需要用不同的Runnable 对象。例如,银行存取款。1、同样的...原创 2019-12-08 22:55:35 · 823 阅读 · 0 评论 -
多线程:线程间通信
为了保证线程间能够进行数据和逻辑的交互,就引入了一种【等待唤醒机制】案例分析详细过程:需求分析:代码实现public class BaoZi { //包子皮 String pi; //包子馅 String xian; //包子有没有,初始状态为没有 boolean flag = false;}public ...原创 2019-12-08 22:50:29 · 80 阅读 · 0 评论 -
多线程:线程安全与同步
线程安全问题线程安全问题产生的三个必要条件多线程环境中 有共享数据(成员变量,而非局部变量,栈中是线程独立的) 多个线程操作(增删改)了共享数据【单线程】以及【多线程在没有访问共享数据的情况下】是不会产生线程安全问题的:一旦多线程访问了共享数据,就有可能产生安全问题:我的理解:这里卖了重复的票以及出现了不存在的票,表明程序出现了安全问题,产生混乱。代码实现如下:...原创 2019-12-08 22:36:31 · 250 阅读 · 0 评论 -
多线程:获取和设置线程名称
获取线程名称第一种方式:使用Thread类中的getName方法有些线程因为并不是继承Thread的,不能直接使用getName,比如main线程。此时需要先使用Thread类中的currentThread方法(这是一个静态方法)获取当前正在执行的线程对象,再使用getName方法来获取名称。示例:(注意:这里的this也可以不写,因为他自己有(继承来的))通常,默认的...原创 2019-12-08 22:16:45 · 1000 阅读 · 0 评论 -
多线程:创建和开启线程
继承Thread类创建线程java.lang.Thread类:描述线程的类,我们想要实现多线程程序,第一种方式就是继承这个类。使用步骤如下:创建一个类并继承Thread类 在该子类中重写Thread类的run方法,设置线程任务(开启线程要做什么?)开启线程首先创建Thread类或者子类对象,然后调用Thread类中的start方法,开启新的线程。底层执行的是Thread类的ru...原创 2019-12-08 22:09:21 · 163 阅读 · 0 评论 -
多线程:相关基础概念
并发与并行并发:两个或者多个事件在同一时间段内发生(交替发生,比如一人吃两个馒头,又比如一个cpu交替执行多个任务)。并行:两个或者多个事件在同一时刻发生(同时发生,两人同时各吃一个馒头)。进程和线程进入到内存的程序叫做进程,图解如下:什么是线程?线程是程序中的一个执行流。什么是多线程?多线程是指程序中包含多个执行流,即在一个程序中可以同时运行多个不同的线程来执行不同的...原创 2019-12-08 21:51:41 · 97 阅读 · 0 评论 -
ArrayList扩容的简单理解
ArrayList实现了List接口,继承了AbstractList,底层是数组实现的,一般我们把它认为是可以自增扩容的数组。它是非线程安全的,一般多用于单线程环境下(与Vector最大的区别就是,Vector是线程安全的,所以ArrayList 性能相对Vector 会好些),它实现了Serializable接口,因此它支持序列化,能够通过序列化传输(实际上java类库中的大部分类都是实现了这个...转载 2019-11-25 22:36:14 · 175 阅读 · 0 评论 -
StringBuffer扩容的简单理解
StringBuffer类可以创建可修改的字符串序列。该类有StringBuffer(),StringBuffer(int size),StringBuffer(String s)三个改造方法。1、StringBuffer()的初始容量可以容纳16个字符,当该对象的实体存放的字符的长度大于16时,实体容量就自动增加。StringBuffer对象可以通过length()方法获取实体中存放的字符序...转载 2019-11-25 21:59:17 · 3255 阅读 · 0 评论 -
Linux安装jdk1.8和配置环境变量
linux 下安装jdk和windows下的安装是一样的,之前在windows安装的时候是先下载压缩包,然后再配置环境变量。其实在linux下也是一样的。第一步:创建jdk安装目录(该/usr/local/src目录是空的,最好把我们自己下载的放到这,容易区分)命令:mkdir -p /usr/local/src/jdk第二步:查看安装程序命令:rpm -qa | grep -i...转载 2019-11-23 23:02:29 · 6115 阅读 · 2 评论 -
java文档注释的基本认识
Java 程序员都应该知道,JDK 开发最好的帮助信息就来自 SUN 发布的 Java 文档。它分包分类地提供了各方法、属性的帮助信息,具有详细的类树信息、索引信息等,并提供了许多相关类之间的关系,如继承、实现接口、引用等。Java 文档全是由一些 html 文件组织起来的,在 SUM 的站点上可以下载它们的压缩包。其实这些文档我们可以自己生成。安装了 JDK 之后,安装目录下有一个 sr...转载 2019-11-23 22:45:21 · 330 阅读 · 0 评论 -
java异常处理的基本使用
简介程序运行时,发生了不被期望的事件,它阻止了程序按照程序员的预期正常执行,这就是异常。异常发生时,是任程序自生自灭,立刻退出终止,还是输出错误给用户?或者用C语言风格:用函数返回值作为执行状态?。Java提供了更加优秀的解决办法:异常处理机制。异常处理机制能让程序在异常发生时,按照代码的预先设定的异常处理逻辑,针对性地处理异常,让程序尽最大可能恢复正常并继续执行,且保持代码的清晰。...转载 2019-11-10 20:32:30 · 144 阅读 · 0 评论 -
java中对象克隆的基本应用
为什么需要克隆对象?直接new一个对象不行吗?答案是:克隆的对象可以直接使用已经有的属性值,而new出来的对象的属性都还是初始化时候的值,所以当需要一个新的对象来保存当前对象的“状态”就靠clone方法了。那么我把这个对象的临时属性一个一个的赋值给我新new的对象不也行嘛?可以是可以,但是一来麻烦不说,二来克隆对象所用的clone()方法是一个native方法,就是快啊,在底层实现的。而且,通...转载 2019-11-09 23:35:00 · 184 阅读 · 0 评论 -
java中内存溢出和内存泄漏基本理解
内存溢出(Out Of Memory---OOM)是指系统已经不能再分配出你所需要的空间,比如你需要100M的空间,系统只剩90M了,这就叫内存溢出。内存溢出的常见原因:1、内存中加载的数据量过于庞大,如一次从数据库取出过多数据;2、集合类中有对对象的引用,使用完后未清空,使得JVM不能回收;3、代码中存在死循环或循环产生过多重复的对象实体;4、使用的第三方软件中的...转载 2019-11-09 17:17:01 · 518 阅读 · 0 评论 -
java中正则表达式的基本使用
正则表达式的常用语法正则在线检验:http://tool.chinaz.com/regex/更多地语法可以参考jdk api中的Pattern类:http://tool.oschina.net/apidocs/apidoc?api=jdk-zh普通字符:字母、数字、汉字、下划线,以及没有特殊定义的标点符号,这些都可以直接匹配。简单的转义字符:\n,换行符; \r,回车符 \...原创 2019-11-09 16:20:51 · 175 阅读 · 0 评论 -
java中File类和IO的基本使用
File类和IO的API学习:http://tool.oschina.net/apidocs/apidoc?api=jdk-zh流的继承关系字节流字符流字符流和字节流的使用范围:字节流一般用来处理图像,视频,以及PPT,Word类型的文件。字符流一般用于处理纯文本类型的文件,如TXT文件等,字节流可以用来处理纯文本文件,但是字符流不能用于处理图像视频等非文本类型的文件。...原创 2019-11-09 15:44:05 · 276 阅读 · 0 评论 -
java类型信息与反射
初步理解:https://www.cnblogs.com/xuanlin666/p/10826809.html转载 2019-11-07 23:06:36 · 82 阅读 · 0 评论 -
java代码优化总结
代码优化的目标是:1、减小代码的体积2、提高代码运行的效率优化点1、尽量重用对象特别是String对象的使用,出现字符串连接时应该使用StringBuilder/StringBuffer代替。由于Java虚拟机不仅要花时间生成对象,以后可能还需要花时间对这些对象进行垃圾回收和处理,因此,生成过多的对象将会给程序的性能带来很大的影响。2、尽可能使用局部变量调用方法时传递的...转载 2019-11-06 23:06:01 · 141 阅读 · 0 评论 -
java基础深入理解
1、java中static关键字使用总结https://www.cnblogs.com/gxyandwmm/p/9478569.html2、java中final关键字的使用总结https://www.cnblogs.com/fangpengchengbupter/p/7858510.html3、this和super关键字详解https://www.cnblogs.com/has...原创 2019-11-04 22:59:57 · 114 阅读 · 0 评论 -
JVM的基本理解和使用
1、JVM内存结构初步理解:https://www.cnblogs.com/junzi2099/p/8418009.html2、JVM类加载机制初步理解:https://www.cnblogs.com/ityouknow/p/5603287.html3、JVM垃圾回收初步理解:https://www.cnblogs.com/czwbig/p/11127159.html4、J...原创 2019-11-03 10:55:32 · 144 阅读 · 0 评论 -
Spring用更优雅的方式发HTTP请求(RestTemplate详解)
基本使用:https://www.cnblogs.com/javazhiyin/p/9851775.html补充:https://blog.csdn.net/u012843361/article/details/79893638转载 2019-11-02 17:31:56 · 686 阅读 · 0 评论 -
JAVA常用工具类(持续积累……)
转载自https://blog.csdn.net/fct2001140269/article/details/82633886转载 2019-11-02 16:16:57 · 142 阅读 · 0 评论 -
HttpClient的基本使用
——————HttpClient4.510 API参考点我进入HTTP 协议可能是现在 Internet 上使用得最多、最重要的协议了,越来越多的 Java 应用程序需要直接通过 HTTP 协议来访问网络资源。虽然在 JDK 的 java net包中已经提供了访问 HTTP 协议的基本功能,但是对于大部分应用程序来说,JDK 库本身提供的功能还不够丰富和灵活。HttpClient 是 Apa...转载 2019-11-02 15:30:01 · 1051 阅读 · 0 评论 -
J2SE-API:JDK8中常用日期操作
Java处理日期、日历和时间的方式一直为社区所诟病,将 java.util.Date设定为可变类型,以及SimpleDateFormat的非线程安全使其应用非常受限。jdk8中新增的java.time包下的所有类都是不可变类型而且线程安全。下面是新版API中java.time包里的一些关键类: Instant:瞬时实例。 LocalDate:本地日期,不包含具体时间 例如:2014...转载 2019-10-29 23:03:51 · 147 阅读 · 0 评论 -
J2SE-API:Object和System类的基本操作
Object类所有对象(包括数组)都实现这个类的方法。protected Object clone() 创建并返回此对象的一个副本。 boolean equals(Objectobj) 指示其他某个对象是否与此对象“相等”。 protected void finalize() 当...原创 2019-10-29 21:23:48 · 102 阅读 · 0 评论