Java
步步静心
这个作者很懒,什么都没留下…
展开
-
java.lang.UnsupportedOperationException
调用Arrays.asList()生产的List的add、remove方法时报异常,这是由Arrays.asList() 返回的是Arrays的内部类ArrayList,而不是java.util.ArrayList。Arrays的内部类ArrayList和java.util.ArrayList都是继承AbstractList,remove、add等方法AbstractList中是默认throw UnsupportedOperationException而且不作任何操作。java.util.ArrayL转载 2022-03-24 17:04:02 · 204 阅读 · 1 评论 -
finallshell使用
finalshell是远程服务连接工具,它能帮助用户快速的连接服务器值得推荐的安装教程FinalShell的下载、安装及基本使用finalshell安装出现安全警告是否接受该密钥??接受本次允许此次连接。主机密钥不会被保存,下次连接时还是会弹出同样的提示。当服务器主机密钥经常变化或者不经常连接服务器时这个功能非常有用。接受并保存当保存了主机密钥和持续的过程连接。此对话框在下次连接中同样也不会打开。当指纹是正确的,并频繁连接主机这个功能就非常有用。取消主机密钥不被接受,连接被取消...原创 2021-07-21 13:54:48 · 6058 阅读 · 1 评论 -
Java中的==
Java中的==原创 2021-06-21 14:15:20 · 130 阅读 · 0 评论 -
项目代码什么情况下要重构?
为什么要重构?在我们的项目初期,会遇到大量的未知的问题,可能是来自业务上的,也有来自技术上的,一般的项目肯定两者都是存在的,除非是公司走的技术线,项目初期,技术大牛带着,严格把控代码关。技术类引起的重构在实际的开发过程中,我们没办法过深的考虑问题,更不可能面面俱到,不得不承认,大部分的走业务线的公司,前期的项目基本是外包的,因为外包的费用要比养技术人员低很多,当然是个人外包,就是公司的老板或公司的同事,认识个程序员,或让朋友介绍个程序员,让他来把项目接过去,他可能再转一手,这么做出来的项目,综合下来能原创 2021-06-18 16:46:57 · 393 阅读 · 0 评论 -
java.lang.IllegalStateException: getWriter() has already been called for this response
如图:执行代码就报上面的错,ajaxTransfer(regionMscInfo2);HttpServletResponse response;···//用于ajax请求快速返回json public void ajaxTransfer(Object obj) throws IOException { JSONObject jsonObject = new JSONObject(); response.setContentType("text/html;原创 2021-05-12 14:37:03 · 2839 阅读 · 0 评论 -
Java查看一段程序运行了多长时间(以几小时几分几秒的形式显示)
通常可以通过 long ms=System.currentTimeMillis(); 的方式来取得以毫秒为单位起始时间和终止时间,它们的时间差除以一千就知道一段Java程序运行了多少秒,但多少秒并不直观,比如900秒你要反应一下,说15分就马上反应过来了。下面提供了具体示例代码:public class Test { public static void main(String[] args) { long startMs = System.currentTimeMillis()原创 2021-04-14 16:32:40 · 2055 阅读 · 0 评论 -
java 中 string 和 boolean 类型相互转换
java 中 string 和 boolean 类型相互转换String str = “true”;boolean b = Boolean.valueOf(str);boolean boo = true;String str2 = String.valueOf(boo);示例:String getSub = (String)map.get("getSubUsers");boolean getSubUsers = Boolean.valueOf(getSub);...原创 2021-03-18 13:05:58 · 2538 阅读 · 0 评论 -
@Slf4j使用
@Slf4j是用作日志输出的,一般会在项目每个类的开头加入该注解。如果不想每次都写private final Logger logger = LoggerFactory.getLogger(当前类名.class); 并且想用log,可以用注解@Slf4j;这样就省去这行代码。首先在idea中安装lombok插件,安装完idea会提示重启idea,重启后会生效;在pom.xml文件中加入lombok的依赖; <dependency> <groupId&原创 2021-01-05 17:00:10 · 7117 阅读 · 0 评论 -
IO流
IO流什么是IO流IO:input(输入),output(输出)。无论输入还是输出都有源头和目的地。对于Java来说,输入指的是从哪到哪呢?输出指的是从哪到哪呢?Java里的输入:把数据从文件(或者网络)读取到程序里。Java里的输出:把程序里的数据写入到文件(或者网络)中。Java中的IO在Java里的输入输出流有2大类:字节流、字符流分类字符输入流字符输出流字节输入流字节输出流抽象父类ReaderWriterInputStreamOutputStrea原创 2020-11-18 19:41:35 · 134 阅读 · 0 评论 -
网络编程socket
网络编程总结什么是网络编程?网络编程从大的方面就是说对信息的发送接收。通过操作相应API调度计算机资源硬件,并且利用管道(网线)进行数据交互的过程。更为具体的涉及:网络模型、套接字、数据包**所谓socket通常也称作"套接字",用于描述IP地址和端口,**是一个通信链的句柄。应用程序通常通过"套接字"向网络发出请求或者应答网络请求。我们开发的网络应用程序位于应用层,TCP和UDP属于传输层协议,在应用层如何使用传输层的服务呢?在应用层和传输层之间,则是使用套接字来进行分离。套接字就像是传输层原创 2020-11-18 19:34:34 · 663 阅读 · 0 评论 -
solr
1. Solr入门1.1. Solr下载安装官方下载地址:https://archive.apache.org/dist/lucene/solr/Windows系统下载zip包,Linux、MaxOS系统下载tgz包1.1.1. Solr目录结构bin: 存放solr的可执行文件contrib: 存放solr提供的扩展包dist: Solr运行需要的jar包docs: 文档目录example: 官方提供的示例目录,配合官方示例教程,体验Solr功能licences: 协议目录se原创 2020-11-10 21:35:41 · 625 阅读 · 0 评论 -
Git
Git是什么Git(读音为/gɪt/。)是一个开源的分布式版本控制系统,可以有效、高速地处理从很小到非常大的项目版本管理。 [1] Git 是 [Linus Torvalds](https://baike.baidu.com/item/Linus Torvalds/9336769) 为了帮助管理 Linux 内核开发而开发的一个开放源码的版本控制软件。为什么要用Git当我们在企业中开发程序时,往往不是一个人而是一个团队共同协作。我们需要有一个工具来将各个不同成员所开发的代码做一个共享和同步。这是第一原创 2020-11-10 21:27:15 · 139 阅读 · 0 评论 -
java枚举
枚举什么是枚举?所谓的枚举,就是把某个类所有的对象一一罗列出来。枚举类:这个类的对象是有限的。定义枚举的语法格式public enum 枚举类类名{ 值1, 值2, 值3, 值4;}示例public enum Season { SPRING, SUMMER, AUTUMN, WINTER;}枚举的使用枚举一般是配合switch…case使用的。public class TestEnum { public static void main(String[] args)原创 2020-10-24 23:27:26 · 135 阅读 · 0 评论 -
java注解
注解注解和注释类似,注释是写给程序员看的,为了方便程序员看懂程序的代码。注解是给程序员以及程序看的。不同的注解有不同的功能,除了系统定义的注解以外,我们也可以自定义注解。注解是以@开始的。系统内置的常见注解@Override这个用于判断方法是否是重写方法的注解,它会检查你的方法名是不是与父类中的方法同名,如果不是会报错,如果是则不报错。@Override注解只能用于方法。@Deprecated单词的意思是过时的。可以用于修饰方法,表示这个方法已经过时,应该选择别的方法使用,即使用了不会报错,原创 2020-10-24 23:26:17 · 126 阅读 · 0 评论 -
java泛型介绍
泛型什么是泛型?泛型就是参数化类型,它的作用就是把变量或者属性或者方法的参数或者方法的返回值等的类型看做是一个参数。这样就可以写出来通用的代码,让代码更加简洁。在使用的时候,传入真正的类型。这个过程类似于方法的形参和实参。为什么要用泛型?原因一:优化代码,让代码更简洁更通用。例如:拿打印数组来说,我们可以定义一个工具类ArrayTool,ArrayTool提供打印数组的方法。public class ArrayTool { public void printArray(int[] arr)原创 2020-10-24 23:24:33 · 153 阅读 · 0 评论 -
java反射总结
反射机制反射在运行状态中,对于任何一个类都能知道这个类的属性和方法,对于任何一个类的对象,都能调用它的任意一个方法和属性(包括私有方法和属性),这种借助反射API动态获取类的内部信息以及动态调用对象的内部属性和方法的功能即称为java反射机制在java.exe命令执行时,就会去加载一个类,加载完之后,堆内存空间中的方法区就会产生一个Class类型的对象,注意,一个类只有一个Class对象,这个对象包括完整的类结构信息,可以通过这个对象看到类的结构想要使用反射机制,就必须要先获取到该类的字节码文件对象原创 2020-10-12 16:46:01 · 168 阅读 · 0 评论 -
类加载
程序运行过程从源文件创建到程序运行,Java程序要经过两大步骤:编译,运行编译: 创建完源程序(*.java文件)后,程序会被Java编译器通过javac.exe命令编译为.class文件。Java编译一个类时,如果这个类所依赖的类还没有被编译,编译器就会先编译这个被依赖的类,然后引用,否则直接引用。运行:java类运行的过程大概可分为两个过程:类的加载;执行。类加载java程序经过编译后形成*.class文件。字节码文件通过java.exe命令通过类加载器将字节码文件对应的类原创 2020-10-10 17:23:34 · 1784 阅读 · 0 评论 -
形象理解Cookie,Session
Cookie和Session的形象理解一:通过实际生活中银行卡来理解Cookie和Session之间的关系:Cookie相当于银行卡Session相当于银行账户结合到银行存钱和取钱的过程来理解:存钱过程1. 兴高采烈地到银行柜台,把要存的钱交给银行工作人员;2. 银行工作人员把钱存好后,给你一张银行卡。取钱过程1. 需要用钱了,找到最近的ATM机,插入银行卡,输入密码;2. ATM机验证密码正确后,就可以取出钱啦。类比存钱的过程,client(你)的请求到达server(银行)原创 2020-10-03 15:11:49 · 223 阅读 · 0 评论 -
单点登录
单点登录什么是SSOSSO, 全称Single Sign On, 单点登录。说得简单点就是在一个多系统共存的环境下,用户在一处登录后,就不用在其他系统中登录,也就是用户的一次登录能得到其他所有系统的信任。借用一句话,单点登录是一种控制多个相关但彼此独立的系统的访问权限,拥有这一权限的用户可以使用单一的ID和密码访问某个或多个系统从而避免使用不同的用户名或密码。单点登录在大型网站里使用得非常频繁,例如像阿里巴巴这样的网站,在网站的背后是成百上千的子系统,用户一次操作或交易可能涉及到几十个子系统的协作,如原创 2020-09-30 19:42:12 · 440 阅读 · 0 评论 -
java集合之四~Collections工具类
Collections工具类Collections是一个操作Collection,Map的工具类常用方法Collections类中提供了多个synchronizedXxx()方法,将方法参数中的集合包装成线程安全的集合,可以解决多线程并发访问集合时线程安全问题如之前提到的ArrayList,HashMap线程不安全,也提到Vector,Hashtable是线程安全的,但是不会用到这两个,而是将ArrayList,HashMap转化为线程安全的List list = new ArrayList原创 2020-09-30 14:18:29 · 216 阅读 · 0 评论 -
java集合之三: Map接口
MapHashMap的底层原理HashMap map = new HashMap();遍历常用方法:@Test public void test(){ Map map = new HashMap(); map.put("AA",123); map.put(45,1234); map.put("BB",56); System.out.println(map); //遍历所有的key原创 2020-09-28 17:37:13 · 151 阅读 · 0 评论 -
java集合之二: Set接口
Set接口存储无序,不可重复的数据HashSet 作为Set接口的主要实现类;线程不安全;可以存储null值LinkedHashSet HashSet的子类;遍历内部数据时按照添加顺序遍历TreeSet 底层使用的是二叉树或者说红黑树存储的;可以按照添加对象的指定属性进行排序解释无序 @Testpublic void test3(){ Set set = new HashSet(); set.add(123); set.add(原创 2020-09-28 17:36:53 · 171 阅读 · 0 评论 -
java集合之一: List接口
List接口先前1.0都是Vector存储有序,可重复的数据,到1.2,出现接口List,紧接着提供了两个实现类ArrayList和LinkedList说说几个实现类的异同?都是实现了List接口,存储数据的特点相同,存储有序,可重复的数据LinkedList:底层使用双向链表存储;对于频繁的插入,删除操作,使用这个比ArrayLIst效率高ArrayList是作为List接口的主要实现类;线程不安全;效率高;底层使用Object[]数组存储;针对遍历,查找,以及末尾添加Vector作为List原创 2020-09-28 17:36:31 · 230 阅读 · 0 评论 -
java集合框架描述
集合框架集合和数组一样都是对多个数据进行存储操作的结构,可看作一种容器这里的存储主要指内存层面的存储,不是持久化层面的存储,如txt文本,数据库文件,图片.jpg等为什么用集合数组在存储多个数据时,有这样的特点:数组一旦初始化好,其长度就确定了;一旦定义好,其元素类型也就确定,只能存储指定类型的数据,String[] arr1, int[] arr2; Object[] arr3。所以其缺点有:数组初始化好后,长度不能修改;其涉及到的元素操作方法有限,添加,删除,插入等有不便,效率原创 2020-09-28 17:34:25 · 230 阅读 · 0 评论 -
Eclipse转换IDEA简要须知
Eclipse中workspace(工作空间) 相当于 IDEA中的project(工程)Eclipse中project(工程) 相当于 IDEA中的module(模块)Eclipse中同一个窗口可以打开多个项目,而IDEA中一个窗口只能打开一个projectEclipse中一个工作空间内可以创建多个项目工程IDEA分两个版本,旗舰版(Ultimate),社区版(Community)。旗舰版收费,30天内免费使用,社区版免费...原创 2020-09-03 22:45:37 · 373 阅读 · 0 评论 -
线程来袭
多线程概念程序 进程 线程程序:为完成特定任务,用某种语言写的一组指令(代码)的集合,静态代码。如在手机电脑上下载app进程:程序的一次执行过程,动态过程,有自身的产生,存在,消亡,即生命周期。如点击app,获取cpu资源,运行进程作为资源分配的单位,系统在运行时会为每个进程分配不同的内存区域。如安装好的IDEA目录,IDEA文件夹下的静态代码,就是程序,通过点击可执行文件,IDEA就运行起来了,在任务管理器里可以看到IDEA这个进程,内存占用线程:进程进一步细化为线程,是一个程序内部的一条原创 2020-09-03 22:44:12 · 514 阅读 · 0 评论 -
接口再述和内部类总结
一个子类,其直接父类和间接父类中同时有某个相同属性的赋值,则子类中用的是其直接父类中的赋值。interface A{ int x = 0;}class B{ int x = 1;}public class C extends B implements A{ public void pX(){ System.out.println(super.x); //1 System.out.println(A.x); //0 }原创 2020-08-09 23:20:09 · 170 阅读 · 0 评论 -
java接口总结
接口(interface)有时必须从几个类中派生出一个子类,继承它们所有的属性和方法,但是java不支持多重继承。有了接口,就可以得到多重继承的效果;有时必须从几个类中抽取一些共同的行为特征,而它们之间又没有is-a的关系,仅仅是由相同的行为特征而已。接口就是一组标准,规范,定义的一组规则,制定好后大家遵守。体现现实世界中”如果你是/要…则必须能…“的思想。继承是“is a”的关系,而接口是"能不能"的关系java中,接口和类是并列的两个结构如何定义接口定义接口中的成员JDK7以前,只能定义全局原创 2020-07-25 22:11:11 · 481 阅读 · 1 评论 -
abstract应用
抽象类和抽象方法抽象类abstract修饰类如abstract class Person{},Person为抽象类,此类不能实例化,即不能new对象。类中一定有构造器的,包括抽象类,便于子类实例化时调用;开发中通常会提供抽象类的子类,让子类对象实例化,完成相关操作abstract修饰方法抽象方法,只有方法的声明,没有方法体,如public abstract void eat();抽象方法所在的类一定是抽象类,反之,抽象类里可以没有抽象方法抽象方法没有具体的实现,不能被调用abstr原创 2020-07-23 10:23:04 · 271 阅读 · 0 评论 -
java this关键字
this关键字可以用来修饰调用属性, 方法;构造器this调用属性,方法:this理解为当前对象或当前正在创建的对象在方法中调用属性,方法,理解为当前对象;在构造器中调用的话,理解为当前正在创建的对象。在类的方法中,使用”this.属性“或”this.方法“的方式,调用当前对象的属性和方法。但是,通常情况下,选择省略”this.“。特殊情况下,如果方法的形参和类的属性同名时,必须显式使用”this.“的方式,表明此变量是属性,而不是形参在类的构造器中,可以使用”this.属性“或”this.方法原创 2020-07-16 09:53:06 · 121 阅读 · 0 评论 -
封装性与构造器说明
引入封装性原因?程序设计追求“高内聚,低耦合”。高内聚:类的内部数据操作细节由自己完成,不允许外部干涉;低耦合:仅对外暴露少量的方法用于使用。隐藏对象内部的复杂性,对外只公开简单的接口,便于外界调用,提高系统的可扩展性,可维护性。即把该隐藏的隐藏起来,该暴露的暴露出来,即为封装性的设计思想。问题引入?一个类创建自己的对象后,可以通过“对象名.属性”来为属性值赋值。赋值操作会受到数据类型和存储范围的制约,除此之外,没有其他的限制。而在实际问题中,往往需要给属性赋值额外的限制条件,如年龄在0~100原创 2020-06-27 22:19:05 · 216 阅读 · 0 评论 -
import关键字介绍
import关键字为什么使用?编程时,在使用一个类如果要将多个包名.类名完全写出,会让代码变得冗长,降低了简洁度,可读性差。在源文件中显示调用import导入指定包下的类,接口即使用Java API下的类或工程不同包下的类,都需要使用import结构java.io.InputStream is = java.lang.System.in;java.io.InputStreamReader isr= new java.io.InputStreamReader(is);java.io.Buffer原创 2020-06-24 23:26:43 · 1344 阅读 · 0 评论 -
java获取数据库连接方式
java获取数据库连接方式以下方式的代码是循序渐进的package com.csdn.jdbc;import org.junit.Test;import java.sql.Connection;import java.sql.Driver;import java.util.Properties;public class ConnectionTest { @Test public void testConnection() throws Exception{原创 2020-06-14 19:40:21 · 1951 阅读 · 0 评论 -
导入Junit-4.12jar包运行报java.lang.NoClassDefFoundError: org/hamcrest/SelfDescribing错误
maven仓库中下载JUnit的jar,是4.12,结果尝试使用发现总是报java.lang.NoClassDefFoundError: org/hamcrest/SelfDescribing这样的错误,上网查了一下,一般的解决方案是,换一个低一点的版本就好了。还有人说,是缺少hamcrest的包。去官网又看了一下,结果发现这样一段话:junit.jar: Includes the Hamcrest classes. The simple all-in-one solution to get start原创 2020-06-13 19:26:56 · 218 阅读 · 0 评论 -
IDEA普通项目转maven项目
IDEA普通项目转maven项目1.项目上右键 Add Framework Support。2、选择maven,点击OK。原创 2020-06-13 19:22:13 · 153 阅读 · 0 评论 -
IDEA创建普通java项目
IDEA创建普通java项目,新手入门转载 2020-06-07 10:51:39 · 179 阅读 · 0 评论 -
windows系统查看端口被占用
windows系统查看端口被占用,杀进程原创 2020-05-22 10:20:05 · 152 阅读 · 0 评论 -
数组相关二(复制,查找,排序算法)
数组的复制,反转,查找String[] arr = new String[]{"AA","BB","CC","DD","FF"};//数组的复制String[] arr1 = new String[arr.length];for(int i = 0; i < arr1.length; i++){ arr1[i] = arr[i];}//注意,数组变量的赋值 arr1 = arr; 同一个地址值,指向同一个数组实体;//数组的反转1.for(int i = 0; i &原创 2020-05-21 18:44:25 · 171 阅读 · 0 评论 -
数组相关
int[] arr = new int[]{1,2,3}; //一维数组//二维数组//静态初始化int[][] arr1 = new int[][]{{1,2,3},{4,5},{6,7,8}};//动态初始化String[][] arr2 = new String[3][2]; //3行2列String[][] arr3 = new String[3][];//类型推断int[] arr4 = {1,4,6,8};int[] arr5[] = {{1,2,3},{4,5},{6,原创 2020-05-17 00:09:33 · 144 阅读 · 1 评论 -
数组趣味
在学数组时发现定义两个int型数组,其中一个int型数组作为另一个数组下标,能形成一个手机号的格式,具体代码如下public static void main(String[] args){ int[] arr = new int[]{8,2,1,0,3}; int[] index = new int[]{ 2,0,3,2,0,4,1,2,3,3,2}; String tel = ""; for(int i = 0; i < index.length; i++){原创 2020-05-10 10:39:05 · 146 阅读 · 0 评论