Java EE
Java基础
巅峰小苏
加油,少年
展开
-
写代码有这16个好习惯,可以减少80%非业务的bug
这篇文章是我在微信公众号《Java后端技术》上看到的,觉得挺不错的就分享一下,同时也尊重一下原创目录前言1. 修改完代码,记得自测一下2. 方法入参尽量都检验3. 修改老接口的时候,思考接口的兼容性。4. 对于复杂的代码逻辑,添加清楚的注释5. 使用完IO资源流,需要关闭6.代码采取措施避免运行时错误(如数组边界溢出,被零除等)7.尽量不在循环里远程调用、或者数据库操作,优先考虑批量进行。8.写完代码,脑洞一下多线程执行会怎样,注意并发一致性问题9.获取对象的属性,先判断对象是否为空10.多线程异步优先考转载 2020-12-21 11:21:07 · 1163 阅读 · 0 评论 -
String常用接口API
在开发过程中,经常需要操作字符串,这里总结出经常用到的String接口,也方便我日后查看https://www.jianshu.com/p/6c65c25c258b接口目录获取二级目录三级目录获取例子:String str=“abc_def”1、 获取字符串的长度,字符串中包含的字符数 方法:int length() 调用:str.length()2、原创 2020-08-07 16:47:07 · 2398 阅读 · 1 评论 -
Java中有关线程安全的集合
线程安全的集合:HashTable、ConcurrentHashMap,Vector、Properties注意:其他线程不安全的集合也可以使Collections工具类把它们包装成线程安全的集合,如:List synArrayList = Collections.synchronizedList(new ArrayList());HashTable(底层数组+链表):给每个方法加锁synchronized同步锁,锁表,key和value都不能为空,锁表,效率低ConcurrentHashMap(分原创 2020-07-09 09:09:44 · 497 阅读 · 0 评论 -
Java多线程总结笔记面试干货
一、线程的创建方式 1、继承Thread类(不推荐):只能被单继承,不推荐使用 2、实现Runable的接口(推荐):不需要返回值时,推荐使用3、实现Callable接口(JDK1.5): 核心方法叫call()方法(相当于run()),有返回值,推荐使用 4、线程池:通过Executor 的工具类可以创建三种类型的普通线程池:固定大小的线程池、单线程池、缓存线程池问题:线程调用start方法和调用run方法的区别?a) 直接调用run方法相当于在当前线程执行run方法的方法体(同步,注意 :r原创 2020-06-23 15:46:22 · 6339 阅读 · 2 评论 -
C/S 与 B/S模式的区别
(浏览器)Browser/Server(B/S):建立在广域网的基础上,面向不同用户群,开销小,升级容易,直接浏览器访问(客户)Client/Server(C/S ):建立在局域网的基础上的,安全,面向固定用户,开销大,升级难,需要安装appB/S结构是未来发展的趋势:1)C/S模式:是客户端/服务器(Client/Server)模式,主要指的是传统的桌面级的应用程序。比如我们经常用的信息管理系统2)B/S模式:是浏览器/服务器(Browser/Server)模式,主要指的是web应用程序,就像你原创 2020-09-27 16:38:12 · 6320 阅读 · 0 评论 -
JAVA中静态块、静态变量加载顺序详解
源博客:https://www.cnblogs.com/leiqiannian/p/7922824.html public class test { //1.第一步,准备加载类<span class="hljs-keyword"><span class="hljs-function"><span class="hljs-keyword">public</span> </span><转载 2020-09-27 10:11:05 · 1280 阅读 · 0 评论 -
Java通过反射访问私有方法和私有变量
1、被访问的类FanShepackage com.demo.test2;public class FanShe { public int x; private int y; public FanShe() { } public FanShe(int x,int y) { this.x=x; this.y=y; } private String hello1() { System.out.println("private hello1"); return "0";原创 2020-09-10 16:11:26 · 4536 阅读 · 0 评论 -
Java基础之—反射(非常重要)
源博客:https://blog.csdn.net/sinat_38259539/article/details/71799078?utm_medium=distribute.pc_relevant_t0.none-task-blog-BlogCommendFromMachineLearnPai2-1.channel_param&depth_1-utm_source=distribute.pc_relevant_t0.none-task-blog-BlogCommendFromMachineLear转载 2020-09-10 10:17:24 · 143 阅读 · 0 评论 -
cmd运行jar架包
运行jar包:打开cmd,在存放jar包的目录下,执行命令:Java -jar jar包名1、把打好的jar,任意放到一个目录下2、鼠标点击上面的路径,输入cmd3、点击回车,直接跳到当前路径4、输入:java -jar 架包名 ,回车5、执行成功...原创 2020-08-13 15:15:13 · 10708 阅读 · 2 评论 -
Java中用代码来理解break ,continue ,return 的区别及作用
break、continue、return在流程控制中有很大作用break : 跳出到上一层循环,不再执行当前循环(结束当前的循环体)continue : 跳出本次循环,继续执行下次循环(结束正在执行的循环 进入下一个循环条件)return : 程序返回,不再执行下面的代码(结束当前的方法 直接返回)如何跳出当前的多重嵌套循环如下图:可以在外面的循环语句前定义一个标号(n:),然后在内层循环体的代码中使用带有标号的break 语句,即可跳出外层循环public static void mai原创 2020-07-21 10:18:33 · 938 阅读 · 0 评论 -
java中关于final关键字详解
final修改类时:该类成为最终类,无法被继承。简称为“断子绝孙类”。final修饰方法时:这个方法将成为最终方法,无法被子类重写。但是,该方法仍然可以被继承。final修饰变量时:1、如果修饰的是基本类型,说明这个变量的所代表数值永不能变(不能重新赋值)2、如果修饰的是引用类型引用类型,该变量的引用不能变,但引用所代表的对象内容是可变的final不能修饰抽象类:因为抽象类需要被继承才有作用,而final修饰的类不能被继承final不能用来修饰构造器:因为构造方法既不能被继承,也不能被重写,原创 2020-07-20 15:03:40 · 1421 阅读 · 0 评论 -
理解:jar包和war包的区别
jar包和war包的区别:war是一个web模块,其中需要包括WEB-INF,是可以直接运行的WEB模块。而jar一般只是包括一些class文件,在声明了Main_class之后是可以用java命令运行的.它们都是压缩的包,拿Tomcat来说,将war文件包放置它的\webapps\目录下,启动Tomcat,这个包可以自动进行解压,也就是你的web目录,相当于发布了。 war包:是做好一个web应用后,通常是网站,打成包部署到容器中。jar包:通常是开发时要引用通用类,打...转载 2020-07-09 11:01:49 · 824 阅读 · 0 评论 -
100 个网络基础知识普及,看完成半个网络高手
1)什么是链接?链接是指两个设备之间的连接。它包括用于一个设备能够与另一个设备通信的电缆类型和协议。2)OSI 参考模型的层次是什么?有 7 个 OSI 层:物理层,数据链路层,网络层,传输层,会话层,表示层和应用层。3)什么是骨干网?骨干网络是集中的基础设施,旨在将不同的路由和数据分发到各种网络。它还处理带宽管理和各种通道。4)什么是 LAN?LAN 是局域网的缩写。它是指计算机与位于小物理位置的其他网...转载 2020-07-07 16:58:40 · 772 阅读 · 0 评论 -
Java中为什么实体类需要实现Serializable序列化接口
实体类实现序列化接口:实现Java序列化的接口:java.io.Serializable。package com.demo.test;import java.io.Serializable;public class User implements Serializable{ private static final long serialVersionUID = 1L; private String userName; private String address; public原创 2020-07-06 16:29:22 · 5301 阅读 · 0 评论 -
哪些集合是线程安全的哪些集合不安全
线程安全的集合:HashTable、ConcurrentHashMap,Vector、Properties注意:其他线程不安全的集合也可以使Collections工具类把它们包装成线程安全的集合如:List synArrayList = Collections.synchronizedList(new ArrayList());HashTable:给每个方法加锁synchronized同步锁,锁表,value不能为空ConcurrentHashMap:加行锁,减小了并发冲突的概率**...原创 2020-06-08 23:12:35 · 2151 阅读 · 0 评论 -
Java中从源码上理解equals与==的什么区别,看这篇就够了
要彻底弄懂equals与==的区别,首先要了解JVM中的内存分配1、基本数据类型:<font size=>是存放在栈内存中的2、引用类型:引用存放在栈中,对象数据存在堆内存中。比如:创建一个学生类:Student stu=new Student();//stu就是引用,new Student()就是调用对象的构造方法在堆中开辟空间,通过栈中的引用来调用对象存在堆中的数据3、==是比较内存地址,equals()是比较内容是否相等(先这样理解)从源码上理解:1、java.lang.O原创 2020-05-29 11:38:08 · 7978 阅读 · 8 评论 -
彻底理解StringBuffer和StringBuilder的区别
StringBuffer:线程安全,执行速度慢,JDK1.0中就有StringBuilder:线程不安全,单线程安全,执行速度快,JDK5.0以后才有原因:查看StringBuilder源码就会发现,StringBuilder源码中的方法加入了synchronized锁,而StringBuffer并没有加锁,所以StringBuilder是线程安全的,StringBuffer执行速度快,加锁会影响执行速度适用场景:1、StringBuffer:多线程环境下涉及到共享变量的插入和删除操作,Strin原创 2020-06-03 17:21:31 · 1245 阅读 · 0 评论 -
官网下载eclipse被墙、无法访问解决
eclipse系统位要跟jdk一致,电脑64位可以兼容32和64位官网下载eclipse出现响应时间过长:被墙了,下载国内的镜像就可以了1、登录eclipse官网2、下载安装包,点击Download Packages3、选择这个版本的eclipse4、点击下面的select another mirror5、选择一个国内镜像带China的都可以6、点击click here直接跳过捐款下载,就可以了...原创 2020-06-03 15:32:04 · 4689 阅读 · 0 评论 -
Java中基本数据类型byte、short、int、long、float、double、char、boolean看这篇就够了
基本数据类型(也叫原生类):byte、short、int、long、float、double、char、boolean基本数据类型所占字节:注意: long :声明long型后面需加上l或者L,否则会出错 如:long l=232Lfloat :如要声明一个常量为float型,则需在数字后面加f或F,如:float f=12.3fJava语言的整数类型常量默认为int型Java浮点类型常量默认为double型...原创 2020-06-03 15:04:50 · 2008 阅读 · 0 评论 -
ArrayList数组集合与LinkedList链表集合区别
ArrayList(底层是数组):查询、替换速度快;删除、新增慢;存储地址是连续的LinkeList(底层是双向链表):删除、新增速度快;查询、修改速度慢,存储地址是任意存放的原因:因为在查询,替换的时候,数组可以通过下标直接定位找到元素,而链表要一个一个查找过去。在删除,插入的时候,数组要一个一个的移位,而链表通过指针把节点指向新元素的内存块就可以适用场景分析:1、当数据访问多的情况下选用ArrayList2、当数据删除频繁的情况下采用LinkedList共同点:都是线程不安全的注意原创 2020-06-03 14:29:51 · 4118 阅读 · 0 评论