![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
JAVA
夯实JAVA基础。温故知新,基础技能点的越满,关键时刻起的作用越大
冰明子
这个作者很懒,什么都没留下…
展开
-
fastjson使用toJSONString时出现$ref
原因是默认情况下json里存在相同元素的情况下就会出现这个情况源码为:···public final boolean isWriteClassName(Type fieldType, Object obj) {return out.isEnabled(SerializerFeature.WriteClassName) //&& (fieldType != null //|| (!out.isEnabled(SerializerFeature.NotWriteRootClassNa原创 2021-01-18 19:29:06 · 227 阅读 · 0 评论 -
linux下java多版本命令笔记
切换命令update-alternatives --config java安装多个版本的javayum -y list java*列出可安装java版本然后选中名字安装例如yum -y install java-1.8.0-openjdk.x86_64原创 2020-12-01 13:43:21 · 111 阅读 · 0 评论 -
HashMap原理通俗剖析
HashMap的理解HashMap顾名思义就是通过Hash算法存的map结构的数据。虽然不正式,但是便于理解。map这就是个数据结构用来存储key value格式的如果写一个map的简单实现应该就是:写一个数组。数组里的元素是一个key,value的对象是的,HashMap的本质就是这个那hash是什么呢?是写HashMap的作者用到了Hash算法什么时候用到的Hash算法呢?就是hashmap的作者实现的时候考虑性能,然后,当你put的时候把你put(key,val)的key和默认原创 2020-08-20 18:49:21 · 152 阅读 · 0 评论 -
Iterator 中文译意成 迭代器
集合的遍历用迭代器效率最高关于迭代器有基类:Iterator 子类: Iterable 和 ListIterator区别:Iterator的内部方法public interface Iterator<E> { boolean hasNext(); E next(); void remove();}Iterable 多了一个增强for循环所以我们的语法糖 for 编译之后就是这个接口public interface Iterable<T> {原创 2020-08-04 09:56:08 · 123 阅读 · 0 评论 -
java版本发布与是否收费
java发布版本的时间是 每年的 3月 和 9月年份3月9月20181011(LTS)201912132020141520211617(LTS)202218192023202120242223 (LTS)每6个版本会出来一个长期支持的版本 支持3年 普通版本只支持6个月以上说的都是oraclejdk的许可标准,oracleJDK11之后开始收费但是每一个版本发布的时候会发布OpenJDK 跟OracleJD原创 2020-08-03 10:59:34 · 2968 阅读 · 0 评论 -
JAVA 线程安全 线程不安全
为什么会分出来安全或者不安全呢?造成这个说法的原因,是因为java里的全局变量和静态变量的写操作引起的。比如多个客户端同时执行一段程序。很有可能就会同时操作内存区里的变量。安全就是:排队,只能同步进行,我操作的时候你先别操作。否则会出现问题的不安全就是:没有这个锁定的限制。都能操作。这样获取到的结果就会有问题了...原创 2020-07-31 11:42:29 · 85 阅读 · 0 评论 -
java函数式编程
函数式编程把函数作为基本运算单元,函数可以作为变量,可以接受函数,还可以返回函数lambda表达式 语法语法()->{} 小括号里是参数,大括号里是执行内容,如果只有一个return,可以不用写大括号 直接写return的内容跟箭头函数语法基本一样但是java里是-> es里是=>有一种注解是@FunctionalInterface用这个标记的接口,都可以改写成lambda形式例如:Arrays.sort(array, (s1, s2) -> s1.com原创 2020-07-30 18:03:27 · 106 阅读 · 0 评论 -
评分关键字
@interfaceenumOptionalMapsLinkedHashMap持续更新中。。。原创 2020-07-29 17:16:22 · 104 阅读 · 0 评论 -
Optional详解
Optional是什么Optional是java8 util包里类用来避免使用if(aa == null) {} 这样结构的代码的guava里也有 我们的原则java内置的包优先第三方的依赖这个类里有几个方法 都是干什么的这里只说需要掌握的 剩下的几个不会对优化代码有好处ifPresent这个Optional里这个对象不是null就会执行ifPresent( 里的内容 ) 不会有任何异常很好用 不用写 !=null String a = "test"; Optional.of原创 2020-07-29 12:00:34 · 6635 阅读 · 0 评论 -
TreeMap HashMap LinkedHashMap
MAP下边是 HashMap SortedMapHashMap 是无序的很快,但是可能会出现多个线程同时操作,可能会数据错乱SortedMap 下边有个TreeMap 我们创建TreeMap之后 他会按照key的首字母进行一下排序,所以一般情况下我们put之后 顺序是会变的 是按key的首字母自动编排好LinkedHashMap 这个是怎么put 就怎么取 是有顺序的 是按你插入时候的顺序放的Hashtable 废弃了 首先开发这个的人 没有遵循驼峰命名 再有就是效率低因为是线程同步的H原创 2020-07-28 19:55:04 · 70 阅读 · 0 评论 -
java自定义注解的使用 配合aop精准定位
什么是注解就是在类 方法 参数 字段上的特殊的注释注解有哪些分类给编辑器的注解@Override给类的注解 一般在编译前根据注解编译成.class文件 java底层会用运行时,动态代理.我们开发的一般是这个元注解用来注解注解的注解。。。。就是最基本的几个注解@Target 指定在类上 还是字段上 还是方法上来使用这个注解 可以写多个地方@Retention 这个是表示什么时候来找这个注解 我们开发的都是这个 RetentionPolicy.RUNTIME@Documented原创 2020-07-28 18:11:59 · 386 阅读 · 0 评论 -
java泛型
泛型什么是泛型泛型是为了不再进行强制类型转化,而提供的一个可供传入类型的模板。T<>理解public class ArrayList { private Object[] array; private int size; public void add(Object e) {...} public void remove(int index) {...} public Object get(int index) {...}}用Object表原创 2020-07-27 16:47:22 · 128 阅读 · 0 评论 -
springmvc
SpringMVC回顾servletServlet 处理请求和响应JSP 可以嵌套到html中,最终转换成servletFilter 过滤URL进行拦截Listener 监听事件 例如:ServletContext、HttpSession的创建和销毁如何使用SpringMVC1. 依赖org.springframework:spring-context:5.2.0.RELEASEorg.springframework:spring-webmvc:5.2.0.RELEASEorg.spr原创 2020-07-27 14:50:14 · 126 阅读 · 0 评论 -
spring访问数据库
spring访问数据库JAVA使用JDBC创建全局DataSource实例,表示数据库连接池;在需要读写数据库的方法内部,按如下步骤访问数据库:从全局DataSource实例获取Connection实例;通过Connection实例创建PreparedStatement实例;执行SQL语句,如果是查询,则通过ResultSet读取结果集,如果是修改,则获得int结果。Spring使用JDBC第一步先引入maven:引入jdbc<dependency> <gr原创 2020-07-27 14:49:43 · 434 阅读 · 0 评论 -
aop
spring-aop Aspect Oriented Programming 面向切面编程什么是AOP? 是面向切面的一种思想理解:如果你写了5个方法每个方法里都需要对某些变量进行检查,并且保存一种格式的日志。这个时候你怎么做?每个方法里都写一遍?那样可以实现 是抽象成接口写一个代理类Spring提供了一种简单的方式就是切面每个动作就是一个切面。把这个面通过一种匹配的规则匹配到你想要加到的代码的任意位置在java平台有3种切入方式编译期:在编译时,由编译器把切面调用编译进字节码,这原创 2020-07-27 14:48:48 · 131 阅读 · 0 评论 -
spring ioc
spring-IOCSpring Framework主要包括几个模块:支持IoC和AOP的容器;支持JDBC和ORM的数据访问模块;支持声明式事务的模块;支持基于Servlet的MVC开发;支持基于Reactive的Web开发;以及集成JMS、JavaMail、JMX、缓存等其他模块IoC容器什么是容器?tomcat就是容器,提供的是http等基础服务docker也是容器, 提供的是linux等系统的底层服务Spring也是容器,提供的是它可以管理所有轻量级的JavaBean原创 2020-07-27 14:48:15 · 118 阅读 · 0 评论 -
JDBC
JDBC Java Database ConnectivityJava程序访问数据库的标准接口各数据库厂商使用相同的接口,Java代码不需要针对不同数据库分别开发;Java程序编译期仅依赖java.sql包,不依赖具体数据库的jar包;可随时替换底层数据库,访问数据库的Java代码基本不变。JDBC查询前面我们讲了Java程序要通过JDBC接口来查询数据库JDBC是一套接口规范就在Java的标准库java.sql里放着,不过这里面大部分都是接口。接口并不能直接实例化,而是必须实例化对应原创 2020-07-27 14:47:42 · 191 阅读 · 0 评论 -
javaweb
Web200 OK:表示成功;301 Moved Permanently:表示该URL已经永久重定向;302 Found:表示该URL需要临时重定向;304 Not Modified:表示该资源没有修改,客户端可以使用本地缓存的版本;400 Bad Request:表示客户端发送了一个错误的请求,例如参数无效;401 Unauthorized:表示客户端因为身份未验证而不允许访问该URL;403 Forbidden:表示服务器因为权限问题拒绝了客户端的请求;404 Not Found:表示客原创 2020-07-27 14:47:07 · 259 阅读 · 0 评论 -
maven快速入门
MAVENMaven专门为Java项目打造的管理和构建工具,它的主要功能有:提供了一套标准化的项目结构;提供了一套标准化的构建流程(编译,测试,打包,发布……);提供了一套依赖管理机制。Maven项目结构一个使用Maven管理的普通的Java项目,它的目录结构默认如下:a-maven-project├── pom.xml├── src│ ├── main│ │ ├── java│ │ └── resources│ └── test│ ├──原创 2020-07-27 14:46:32 · 203 阅读 · 0 评论 -
java单元测试
单元测试平时的测的时候大多数是加一个Test类写一个main()方法就跑一遍JUnitJUnit是一个开源的Java语言的单元测试框架,专门针对Java设计以Eclipse为例,当我们已经编写了一个Factorial.java文件后,我们想对其进行测试,需要编写一个对应的FactorialTest.java文件,以Test为后缀是一个惯例,并分别将其放入src和test目录中。最后,在Project - Properties - Java Build Path - Libraries中添原创 2020-07-27 14:45:55 · 277 阅读 · 0 评论 -
java 时间与日期操作
时间和日期时间区域全球一共分为24个时区伦敦所在时区称为标准时区。其他时区按东/西偏移的小时区分,北京所在的时区是东八区表示方式有三种种:一种是以:GMT或者UTC加时区偏移表示。二是 缩写,因为可能会同名,所以很少使用三是:洲/城市 例如Asia/Shanghai夏令时就是一到夏天就会往后调一个小时,过完夏天的时候再往前调回这一个小时。目前美国还在用。中国已经不用了计算夏令时请使用标准库提供的相关类,不要试图自己计算夏令时本地化Locale由语言_国家的字母缩写构成,例如,zh原创 2020-07-27 14:45:10 · 163 阅读 · 0 评论 -
javaIO
IOIO是指Input/Output,即输入和输出。以内存为中心Input指从外部读入数据到内存 例如,把文件从磁盘读取到内存,从网络读取数据到内存等等Output指把数据从内存输出到外部,例如,把数据从内存写入到文件,把数据从内存输出到网络等等。I是把外部输入内存,O是从内存输出IO的传输方式: 字节 和 字符字节流接口:InputStream/OutputStream; 二进制数据以byte为最小单位在InputStream/OutputStream中单向流动字符流接口:Reader原创 2020-07-27 14:44:28 · 67 阅读 · 0 评论 -
SQL一对多关系的,多合并显示 GROUP_CONCAT
两个表两个表时select name as ‘歌手’,(select GROUP_CONCAT(name,’’) from song where song.person_id = person.id) as ‘歌曲’ from person;一个表时select p as ‘歌手’, GROUP_CONCAT(song) as ‘歌曲’ from p_song GROUP BY p;...原创 2020-07-20 20:38:48 · 676 阅读 · 0 评论 -
java执行cmd执行不成功
java中的exec执行问题Runtime runTime = Runtime.getRuntime();process = runTime.exec(cmd);这个cmd如果直接写命令行里的操作肯定会报错,需要怎么处理呢String [] cmd={"/bin/sh","-c",command};这样写就可以原创 2020-07-16 17:42:33 · 1782 阅读 · 0 评论 -
JAVA集合
JAVA集合由若干个确定的元素所构成的整体就是集合数据就是集合java中的数组就是符合这个条件的 多个确定的元素的一个整体既然有了数组为什么还要提供其他的集合呢。PHP里就只有数组的概念原因:数组有缺点如下: 简单说就是必须确定数组的长度,显然不是很实用,获取方式不方便1. 数组初始化后大小不可变;2. 数组只能按索引顺序存取。为了解决这两个问题:要出现一个可变长的数组 和 一个利于存取的 并且提供更多特性的东西 所以出现了集合Collection集合在java标准库的java原创 2020-07-02 20:26:56 · 102 阅读 · 0 评论 -
JAVA注解
注解注解是放在java源码的类、方法、字段、参数前的特殊的一种注释注解可以被编辑器打包进入class文件。因此,注解是作为标注的元数据作用从JVM的角度看,注解本身对代码逻辑没有任何影响,如何使用注解完全由工具决定Java的注解可以分为三类:编译器使用的注解: @Override @SuppressWarnings 这类注解不会被编译进入.class文件,它们在编译后就被编译器扔掉了由工具处理.class文件使用的注解这类注解会被编译进入.class文件,但加载结束后并不会存原创 2020-07-01 19:48:56 · 144 阅读 · 0 评论 -
JAVA反射
JAVA反射class类获取一个类的实例有三种方法方法一:直接通过一个class的静态变量class获取Class cls = String.class方法二:如果我们有一个实例变量,可以通过该实例变量提供的getClass()方法获取String s = "Hello";Class cls = s.getClass();方法三:如果知道一个class的完整类名,可以通过静态方法Class.forName()获取Class cls = Class.forName("java.lang.原创 2020-07-01 19:48:24 · 108 阅读 · 0 评论 -
JAVA异常
JAVA异常Throwable从继承关系可知:Throwable是异常体系的根,它继承自Object。Throwable有两个体系:Error和Exception,Error表示严重的错误,程序对此一般无能为力Error:OutOfMemoryError:内存耗尽NoClassDefFoundError:无法加载某个ClassStackOverflowError:栈溢出Exception:RuntimeException以及它的子类;非RuntimeException(包括IOExce原创 2020-07-01 19:47:39 · 94 阅读 · 0 评论 -
JAVA基础——BigInteger、BigDecimal、常用工具类
BigInteger在java中,由CPU原生提供的整型最大范围是64位long型整数。使用long型整数可以直接通过CPU指令进行计算,速度非常快。BigInteger用于表示任意大小的整数;BigInteger是不变类,并且继承自Number;将BigInteger转换成基本类型时可使用longValueExact()等方法保证结果准确。BigDecimalBigDecimal用scale()表示小数位数BigDecimal d1 = new BigDecimal("123.45原创 2020-07-01 19:46:45 · 402 阅读 · 0 评论 -
JAVA面向对象
面向对象classinstanceextendimplementsfieldconstructor 可以是多个 默认是无参数的构造 无返回值类型 跟类名相同class Person { private String name; private int age; public Person(String name, int age) { this.name = name; this.age = age; } publi原创 2020-07-01 19:45:31 · 151 阅读 · 0 评论 -
JAVA基础——流程控制
JAVA基础二流程控制输入输出printLn() //输出并换行print() //输出格式化输出:double d = 3.1415924;System.out.printf("%.2f\n", d); //显示两位小数3.14System.out.printf("%.1f\n", d); //显示4位小数3.1416占位符 是 %%d 格式化输出整数%x 格式化输出十六进制%f 格式化输出浮点数%e 格式化输出科学计数法表示的浮点数%s 格式化字符串输入Scanne原创 2020-07-01 19:44:28 · 126 阅读 · 0 评论 -
JAVA基础
JAVA基础一名词JSR 规范: Java Specification RequestJCP 组织: Java Community ProcessJSR规范 时为了保证在给java平台开发新功能时,创建一个JSR规范,定义好接口。然后各个类别的第三方应用按照接口开发。JSR是一系列的规范 从JVM内存模型到WEB程序接口 全部都标准化了 而负责审核JSR的组织就是JCPJSR规范发布时,为了让大家有个参考需要发布RI: Reference Implemenlation 参考实现TCK:原创 2020-07-01 19:43:29 · 62 阅读 · 0 评论