
java学习
文章平均质量分 79
java学习的一些理解
C.jio
保持心灵的理性与思考的纯性
展开
-
get与post的区别
get与post的区别?(1)post更安全(不会作为url的一部分,不会被缓存、保存在服务器日志、以及浏览器浏览记录中)(2)post发送的数据更大(get有url长度限制)(3)post能发送更多的数据类型(get只能发送ASCII字符)(4)post比get慢(5)post用于修改和写入数据,get一般用于搜索排序和筛选之类的操作(淘宝,支付宝的搜索查询都是get提交),目的是资源的获取,读取数据 。(6)服务器随机接受GET方法的数据,一旦断电等原因,服务器也不知道信息是否发送完毕而PO原创 2020-08-22 16:22:27 · 92 阅读 · 0 评论 -
关于synchronized的底层实现原理,锁的优化,及锁的四种状态
synchronized在1.5之前是个重量级锁。但是从JDK6开始,就对synchronized的实现机制进行了较大调整,包括使用JDK5引进的CAS自旋之外,还增加了自适应的CAS自旋、锁消除、锁粗化、偏向锁、轻量级锁这些优化策略。由于此关键字的优化使得性能极大提高synchronized是在软件层面依赖JVM,而j.u.c.Lock是在硬件层面依赖特殊的CPU指令。一,1,synchronized同步块的使用是给出一个对象锁,每个对象锁都是一个监视器锁(monitor)1,monitorent原创 2020-08-23 23:54:31 · 197 阅读 · 0 评论 -
j2ee设置字符与校验登录
字符乱码问题设置返回字符的编码setCharacterEncoding(编码)告诉客户端浏览器该用什么解码setContentType("text/html;charset=utf-8")校验登录 创建session对象,然后在servlet里,登录成功时,保存到session里 HttpSession session=req.getSession();session.setAttribute("loginname", username); 在过滤器里设置进入用户主页面都需要过原创 2020-08-22 22:11:24 · 73 阅读 · 0 评论 -
file中常用的方法
File f = new File(“d:/file/a.txt”);f.delete();删除文件f.length();获取文件的大小f.exists();判断文件是否存在f.getname(); 获取文件的名字f.mkdirs();在父文件夹下创建,如果没有就不创建f.mkdir();当父文件夹存在时,才可创建。如果没有父文件夹则无法创建f.list(); 获取file文件的所有子目录的名字,string类型f.listfiles(); 获取file文件的所有子目录的名字和文件,fi原创 2020-08-22 16:55:49 · 95 阅读 · 0 评论 -
java集合的总体复习
集合与数组的区别?数组定长,集合可变长数组可以是基本类型,也可以是引用类型数组只能存储同一种数据类型,集合可以存储多种数据类型collection常用的方法?list的特点,可重复,有序,按照存储顺序保存arraylist 非安全vectorlinkedlist...原创 2020-08-21 18:32:30 · 91 阅读 · 0 评论 -
hashtable与hashmap,hashset与hashmap的区别
hashmap与hashtable 1,hashmap的键值都可以为空,hashtable不可以为空 2,hashmap是非同步,hashtable是同步 3,hashmap是继承的abstractmap,hashtable是继承的dictionary。 4,Hashtable默认的初始大小为11,之后每次扩充,容量变为原来的2n+1。 HashMap默认的初始化大小为16。之后每次扩充,容量变为原来的2倍。hashset与hashmap的区别 1,hashset是实现的set接口,ha原创 2020-08-13 14:55:15 · 189 阅读 · 0 评论 -
J2EE三大组件以及页面设置安全session和cookie
创建顺序监听器----过滤器-----拦截器servlet拦截器接受用户的请求,并返回结果需要继承 httpservlet要重写doget,dopost方法通过getparameter()获取用户客户端提交的数据主要用于处理用户对数据库的增删改查查询操作filte过滤器接受用户的请求,并设置用户的请求需要实现implements filter接口需要重写三个方法:init(启动项目的时候执行),dofilter(资源拦截的时候执行),destory(正常关闭项目的时候执行)常用于字符过原创 2020-08-07 12:09:30 · 201 阅读 · 0 评论 -
一些可能的小知识点
如何防止sql注入攻击? 什么是sql注入攻击,在http中注入恶意sql代码,服务器在使用数据构建数据库的时候,恶意代码被一起执行 如何防制? 1,过滤特殊字符入单引号双引号 2,使用预编译的preparestatement代替拼接sql 3,web端进行有效性检验并限制字符串的长度ioc的底层实现? ioc就是控制反转,是一种设计思想。 在spring中,就是由spring控制对象的生命周期和对象之间的关系。 也就是创建对象的控制权转移,以前是由代码自己控制,现在转移到第三方。 是原创 2020-08-06 14:36:25 · 79 阅读 · 0 评论 -
反射的基本概念及三种创建方式
反射的编程思想 在类的运行期间,通过对class对象的解析,可以获取这个类的属性,方法,构造函数,并执行获取 属性,构造函数和方法,主要用于构建平台和框架获取class对象的三种方式 1 类名.class 2,对象名.getclass 3,class.forname(包名.类名)常用第三种,第一种需要导包,依赖强,不导包会报错第二种已经有对象了还要反射干啥在使用第三种的时候回有classnotfoundexception的检查异常getDeclaredFields()获取所有属性g原创 2020-08-06 10:29:01 · 956 阅读 · 0 评论 -
socket的使用
客户端的socketsocket是一整套java的封装api,通过socket可以进行跨进程级的通信和数据交换,可以进行分布式的计算 socket soc=new socket(host,port); 客户端向这个接口发起请求服务器端的socket serversocket sst=new serversocket(port); 客户端对这个端口保持监听 socket=sst.accept(); 握手成功,实现连接简单的运用...原创 2020-08-06 10:10:46 · 175 阅读 · 0 评论 -
break,return,countinue
continue 中断当前循环的当前次,继续当前循环的下一次(如果有),继续执行后面的代码break 中断当前循环的所有次,不再继续当前循环,继续外层嵌套循环的下一次(如果有),继续执行后面的代码return 中断所有循环,且不再执行后面的代码...原创 2020-08-05 16:26:16 · 163 阅读 · 0 评论 -
java的四种内部类
什么是内部类? 内部类就是写在外部类中的类,或者类的方法中的类。为什么要使用内部类? 每一个内部类都可以单独实现一个接口, 外部类是否实现了接口对内部类继承实现没有影响。 内部类使多重继承的方案变得完整。使用内部类的一些注意事项 //在内部类内调用外部类的方法 //如果与外部类有同名方法,需要outclass.this.method //如果不是同名方法可以直接调用内部类实例化的方法 Outclass o = new Outclass(); O原创 2020-08-05 15:36:04 · 139 阅读 · 0 评论 -
闭锁,珊栏与信号量,vlolatile
闭锁(CountDownlatch) 主要用到countDown()方法与await()方法 每到CountDown就使计数器减一,await会等到计数器==0的时候,解锁栅栏(CyclicBarrier) cyclicbarrier ccb=new cyclicbarrier(num); 主要方法是await方法,每个有栅栏的线程都会在执行到await处停住, 直到有num个数量的持有await的线程执行到await。 这些线程才会越过栅栏继续往前运行CountDownLatch原创 2020-08-05 14:48:52 · 204 阅读 · 0 评论 -
明锁,reentrantlock公平锁与非公平锁,互斥与通信,awit与signal使用
lock又叫明锁,他是一个类。而synchronized是在jvm层面的 lock loc1=new reentrantlock(); lock默认是非公平锁 lock loc2 = new reentrantlocklock(true); true是公平锁互斥是依靠lock与unlock就可以实现,Condition实现通信。一般情况下reentrantlock就可以满足,但是当场景变得复杂的时候,仅仅依靠reentrantlock不够,那么这个时候就需要condition来解决。cond原创 2020-08-05 13:51:48 · 376 阅读 · 0 评论 -
synchronized的使用以及wait,sleep,yield,join的使用
synchronized又叫暗锁,同步锁,用于保证线程共享资源的安全。 synchronized用法 1,用于实例方法中 这个时候需要使用一个对象。如果new了多个对象,那么无法实现同步。 其他对象不能获取被synchronized锁定的方法。但是可以获得其他未被锁定的方法 2,用于同步块中 需要创建一个对象锁, 一个线程持有此处对象锁时,其他线程不可以获得,进入阻塞状态。 相比较于实例方法,提高了性能 3,用于静态方法原创 2020-08-05 11:23:21 · 510 阅读 · 1 评论 -
多线程的一些基础知识及线程的四种创建方式
程序:程序就是一段静态的代码,一串指令,一个静态的对象进程:就是一个程序执行的过程。进程要同时做几件事时,每一个就是一个线程。线程:线程是一个程序内部一个执行路径并行:就是多个CPU跑多个线程并发:一个CPU跑多个线程一个线程在被启动死亡后不可以再次被启动。线程的调度策略时间片:同优先级先到先使用抢占式:高优先级会抢占低优先级的执行级,但是不一样。只是说高优先更有可能抢占线程。并不是一定。设置:当前线程对象..setPriority(num)如此类方式设置。start与run的区别s原创 2020-08-05 10:14:35 · 101 阅读 · 0 评论 -
文件与流,还有序列化与反序列化
文件 public static void main(String[] args) { File f = new File("e:/file/text/cty.txt"); if(!f.getParentFile().exists()){ f.getParentFile().mkdirs(); } try { f.createNewFile(); } catch (IOException e) { e.prin原创 2020-08-04 15:26:47 · 229 阅读 · 0 评论 -
string与stringbuffer和stringbuilder的区别。以及String常用的方法
String String 是不可变的对象, 因此在每次对 String 类型进行改变的时候其实都等同于 生成了一个新的 String 对象, 然后将指针指向新的 String 对象,这样不仅效率低下,而且大量浪费有限的内存空间, 所以经常改变内容的字符串最好不要用 String 。stringbuffer和stringbuilderstringbuffer是线程安全stringbuilder是线程非安全StringBuffer 和 StringBuilder 类的对象能够被多次的修改,并原创 2020-08-03 19:23:18 · 138 阅读 · 0 评论 -
异常处理的不完整总结
throwable是java异常的顶级父类。throwable派生出error类和exception类error类错误,是error类或其子类的实例,错误是jvm本身的错误。很少出现,无法通过程序员解决。exception类异常,是运行期间各种不被期望发生的事件,可以被异常处理机制使用处理。exception类分为两类检查异常和非检查异常非检查异常runtimeexception类的子类。在编译时,不会发现和处理的异常,这些一般建议是修改代码而不是异常处理机制处理。除0错误A原创 2020-08-03 16:38:47 · 178 阅读 · 0 评论 -
数组的创建
可以 int a[] = new int[4]; int a1[] = new int[]{1,2,3,4}; int a3[]={1,2}; int[] a = new int[4]; int[] a1 = new int[]{1,2,3,4}; int[] a3={1,2}; 这两种都可以原创 2020-08-03 16:05:46 · 115 阅读 · 0 评论 -
网络协议
tcp/ip协议TCP/IP协议是在传输层,不能穿越防火墙。ip协议是把输出从一台计算机发送到另外一台计算机上,数据被分割成多块,路由器决定如何把包发送出去。ip的特点是会经过多个路由器,不保证都能到达,不保证按照顺序到达。tcp协议建立在ip协议之上,通过三次握手(客户端发送信息,服务器回复,客户端发送),为了保证数据能够顺序全部到达。方式:对每个包编号。一个tcp报文,除了要包含传输数据外,还要包含源ip和目标ip。源端口和目标端口。80端口分配给http协议。21分配给ftp服务。原创 2020-08-03 15:52:42 · 123 阅读 · 0 评论 -
集合
collection是集合的顶级父类接口List 有序可重复集合 linkedlist 基于双向链表,线程安全,增删改快,查询慢 但是,可以通过push形成栈的形式,后进先出,通过pop()删除。 vector 线程安全,基于数组,增删改快,但是查询慢 arraylist 线程非安全,基于数组,查询快,但是增删改慢set无序不可重复集合 set的遍历是通过迭代器。 第一种:通过map.keyset() 。第二种map.entry(). 第三种:通过迭代器iterator原创 2020-08-03 15:28:16 · 108 阅读 · 0 评论 -
abstract抽象类与interface接口的区别
抽象类与接口的共同点 (1)都不能被实例化 (2)接口的实现类或抽象类的子类都只有实现了接口或抽象类中的方法后才能实例化。不同点: 接口是公开的,不能有私有的方法或变量,接口中的所有方法都没有方法体,通过关键字interface实现。 接口都是抽象方法。默认有abstract。(java 1.8,接口中可以有方法体。default类型的方法。) 接口中变量必须被赋予值,前面默认都有 final static ,即常量。 抽象类中的变量可以修改。 抽象类可以有构造函数,抽象方法,实例方法。原创 2020-08-03 14:07:14 · 160 阅读 · 0 评论 -
java面向对象之多态
多态概念同一个方法名,不同的实现结果作用: 可以用于解除模块与模块之间的耦合性。 派生类的功能可以被基类的方法或引用变量所调用,这叫向后兼容,可以提高可扩充性和可维护性方法重载: 编译时多态,在一个类中,方法名相同,返回值类型不一定相同,参数列表不同,调用哪个方法由参数决定。方法重写: 运行时多态,在继承关系中,子类与父类有相同的方法名, 相同的参数列表,相同的返回值类型; 方法重写的时候,如果父类没有抛出任何异常,那么子类只可以抛出运行时异常,不可以抛出编译时异常。 如原创 2020-08-03 11:19:03 · 136 阅读 · 0 评论 -
java面向对象之继承&&super()与this()的学习
继承概念及作用: 将不同类中可能有的共同属性和方法,抽取出来定义成一个类。 实现了代码的重用,减少代码的冗余,易于维护。基础知识 java是单继承,只能有一个父类,不允许多继承。 子类在创建对象的时候,会首先调用父类的构造方法,然后再调用自己的构造方法。 当父类没有提供无参的构造函数时,子类的构造函数必须显式的调用父类的构造函数。使用super() 如果父类提供了无参的构造函数,子类默认的调用父类无参构造函数。代码 package object;public class Exte原创 2020-08-03 10:52:31 · 104 阅读 · 0 评论 -
匿名构造块,静态块,静态方法,构造函数的调用顺序。
基本概念: 静态块是在类的加载时候就调用的,静态块只调用一次。 如果一个类中有多个静态对象,按照先后顺序调用。 匿名构造块是在构造函数调用前调用的。 构造函数是在构建函数的时候调用的。一图直接看懂,直接上代码public class Gouzao {public static Gouzao g1 = new Gouzao();static { System.out.println("我是静态块");}{ System.out.println("我是匿名构造块");原创 2020-08-03 10:21:11 · 256 阅读 · 0 评论 -
java虚拟机浅谈
什么是虚拟机? java虚拟机就是通过软件模拟出完整的硬件功能,可以模拟各种计算机功能虚拟机有什么作用? 跨平台性,使java在不同平台上运行时不需要重新编译。 实现方式,jvm屏蔽了与具体平台的相关信息。 java编译程序就只需要生成在jvm上运行的字节码。就可以在不同平台上面执行。 jvm在执行class字节码文件时候,将文件解释成具体平台的机器指令执行。虚拟机的执行过程? jvm执行的三个过程:1)、加载class文件;2)、管理并分配内存;3)、执行垃圾回收机制。什么是垃原创 2020-08-03 09:59:50 · 123 阅读 · 0 评论 -
java的基础知识
java的主要特性面向对象跨平台性支持分布式网络java语言编译过程(体现其跨平台性)java的源程序(java文件)----->java字节码文件(class文件)------>java(虚拟机执行)通过不同的操作系统的字节码解释程序选择在不同的操作系统下执行jvm虚拟机是软件模拟的机器,有自己想象中的运行环境,安装在操作系统上提供java运行环境和垃圾回收,类的加载,校验,解释,执行...原创 2020-07-29 14:58:54 · 83 阅读 · 0 评论 -
构造函数,静态块,匿名构造块
1,静态块随着JVM加载类的时候加载而执行不管new多少次,只执行一次如果一个类中有多个static修饰的静态代码块,按照先后顺序执行。例: public class B {public static B t1 = new B();public static B t2 = new B();{System.out.println("构造代码块");}public B() {System.out.println("构造函数");}static {System.out.pri原创 2020-07-28 09:38:03 · 261 阅读 · 0 评论 -
java面向对象之封装以及匿名对象
1,当对对象的方法只调用一次时,可以用匿名对象来完成,这样比较简化2, public class Package { int num =1; String color= "red"; public void running(){ System.out.println(num +"is"+color); }public static void main(String[] args) { new Package().color="cc";原创 2020-07-10 10:50:25 · 98 阅读 · 0 评论 -
java的基本数据类型&&类方法与实例方法的区别&&全局变量与局部变量
java的基本数据类型: 四种八类 整数型 byte 1字节 short 2字节 int 4字节 long 8字节 浮点型 float 单精度4字节 double 双精度 8字节 字节型 char 2字节 布尔型 true false java的引用类型: 类class,接口 interface,注解@类方法(静态方法)与实例方法,实例变量与静态变量 实例方法可以直接调用静态变量,也可以直接调用实例变量 要调用实例方法原创 2020-07-09 14:57:47 · 133 阅读 · 0 评论 -
当我在克隆后试图反射
按照截图小达人的管理,先贴上代码。第一个发生的错误。newinstance是默认调用无参构造函数,如果没有会报错第二个错误设置好无参构造函数后,发现返回的值是null然后思考了一下,newinstance默认调用无参函数,因此他就没有传值,所以这里直接调用s1就行。...原创 2020-06-09 16:02:50 · 106 阅读 · 0 评论 -
java的分布式远程调用
RPC 是 远程过程调用机制 思想 框架1,rmi,客户端与服务器完全基于java,是RPC在java中的具体体现rmi是1.0的时候出现的2 webService 微软 客戶機和服務器都必須可以是多種語言 性能較低...原创 2020-06-04 14:03:09 · 484 阅读 · 0 评论 -
socket多台客户端对一台服务器
套接字又叫socket。Socket是Java的一整套的调用API,通过 Socket可以进行跨进程级的通信和数据交换,可以进行分布式的计算。Socket是对TCP/IP协议和UDP协议的一个封装.输入输出都需要通过inputstreamreader转换流,将其转换然后赋给bufferreader 或者printwriterTCP/IP协议是在传输层,安全协议,点对点协议 客户机----服务器 一问一答 不能穿越防火墙。TCP/IP连接经过三次握手.UDP协议 不安全协议 客户机负原创 2020-06-04 11:19:39 · 930 阅读 · 0 评论 -
java的io流
io流 1,字节流 inputstream outputstream 主要是用来读取二进制文件 ,图片,音频,视频。Java字节流也可以读取文本文件(性能低) 一个传入流,一个传出流。读取文本性能低 2,字符流 read,write 字节流与...原创 2020-06-01 15:00:51 · 143 阅读 · 0 评论 -
java的file类,创建,遍历,删除
file类是用于访问和操作windows与liunx系统中的文件1,创建注意:需要判断文件的上级目录是否存在2,遍历需要在判定后递归遍历3,删除原创 2020-06-01 14:50:50 · 209 阅读 · 0 评论 -
利用redis实现发布者与订阅者
原创 2020-05-31 10:32:23 · 232 阅读 · 0 评论 -
java的stream流
一个流式处理可以分为三个部分:转换成流、中间操作、终端操作。中间操作可以有多个。学习自这篇博客:https://www.cnblogs.com/shenlanzhizun/p/6027042.html原创 2020-07-28 09:37:28 · 51 阅读 · 0 评论 -
java集合list,set,map
collection是最顶级的集合接口1,list 有序可重复的 值:基本数据类型和引用类型1.1 arraylist 线程非安全1.2 vector 线程安全1.1和1.2 都是基于数组实现的,查询快,但是增删改 慢1.3 linkedlist 底层是双向链表链表分为 双向链表和单向链表 增删改快,但是查询慢 2,set 无序不重复 值:基本数据类型和引用类型 3,map 键:值1,arraylist不安全而vector安全的原因原创 2020-05-28 10:36:25 · 108 阅读 · 0 评论 -
try,catch,finally中带有return的情况
1,finally中不带有return1.1当类型为基本类型时,当try中带有return时,会先执行return前面的代码,然后将需要返回的信息暂时保存,然后执行finally中的代码,最后在返回之前保存的信息。1.2当类型为引用类型时,如集合,集合里存放的是变量的地址,而不是变量本身,当finally通过地址改变了变量,会影响return的值,(个人拙见,string里直接赋值是存在字符串池中,不是地址,因此string也不会改变。stringbuffer也不会改变)2,finally中带有原创 2020-05-27 11:10:54 · 317 阅读 · 0 评论