下面是去年的时候分享的一些java小知识点,今天在电脑里看到了,贴到这里。
其中一些来自《java解惑》、一些来自自己平时的积累,还有一些是在项目中掉到了“坑”里后才明白的
1.除0
代码:
System.out.println(1.0d / 0);
System.out.println(0.0d / 0);
System.out.println(1 / 0);
System.out.println(0 / 0);
输出:
Infinity
NaN
java.lang.ArithmeticException: / by zero
at test.ww.Test.main(Test.java:27)
java.lang.ArithmeticException: / by zero
at test.ww.Test.main(Test.java:32)
原因:
因为 IEEE 754 有规定无穷大是怎么表示的,因此被除数不为 0,除数是 0 的话计算结果是正无穷或者是负无穷,如果被除数和除数都是 0 的话,那么计算结果是 NaN
整数不在是 IEEE 754 规定的,也没有无穷大的表示,因此只能抛出异常了
2. Arrays.asList?可变长参数?
int[] arr = new int[]{1,2,3};
System.out.println(Arrays.asList(arr).contains(1));
输出什么?
大多数人的回答肯定是true,显而易见么。。但它输出的却是false,为什么,哪里出错了么?
分解一下表达式,先调用Arrays.asList(arr),通过遍历或者debug你会发现里面的元素个数为1,这又是什么原因呢,查看一下API或者源代码,发现它声明为List Arrays.asList(T... args),难道是可变长参数有问题?
做一个测试:
public static void main(String[] args) {
int[] arr = new int[]{1, 2, 3 };
test1(arr);
}
private static void test1(Object... values) {
System.out.println(values.length);
}
输出
1
把int数组改为Integer数组后,输出
3
看来是基本类型的数组被当作了一个对象,而对象类型的数组的每个元素才能分别作为可变长参数方法的参数。
3.诡异的三元表达式
三元表达式,注释部分是该行的输出,为啥?
char x = 'X';
int i = 0;
System.out.println(true ? x : 0);// X
System.out.println(false ? i : x);// 88
原因:
true ? x : 0返回的是x的类型,即char型,调用char的toString方法,输出X
false ? i : x返回的是i的类型,即int型,先把‘X’转为整型(88),再输出。
即三元运算符返回类型以第二个变量为主(问号后第一个)
4.我的钱呢?
total是你兜里的所有的钱,price是你要买的东西的价格,remaining是剩余的钱。count是你最多买的东西的数量,请问下面的代码有什么问题,输出什么?
double total = 2.0;
double price = 0.1;
double remaining = total;
int count = 0;
while (remaining >= price) {
count++;
remaining -= price;
}
System.out.println(count);
System.out.println(remaining);
代码看起来没有问题,判断兜里的钱大于物品的价格就买一个,直到买不起为止,看起来应该输出20和0.
可运行后会发现输出19和0.09999999999999937(可能根据不同的机器这个余数略有差异)。
钱怎么少了?
这个原因,和二进制无法精确的表示某些浮点数有关,2.0-1.1结果是0.899999999999。
所以,如果你想要精确的浮点数,请使用BigDecimal类进行运算,当然可能会慢一些,需要自己权衡。
5.x+=i等同于x = x + i?
1)
short x = 1;
int i = 1;
x += i;
x = x + i;
当你试图编译上面代码的时候,编译器会报错,在x=x+i的地方:Type mismatch: cannot convert from int to short
2)
Object x = 1;
String i = "";
x += i;
x = x + i;
当你试图编译上面代码的时候,编译器会报错,在x += i;的地方:The operator += is undefined for the argument type(s) Object, String
6.字符连接???
System.out.println('N' + 'C');
当你运行上面代码的时候,它不会如你所愿输出NC,而会输出145,这是怎么了?
char型变量的加法不是连接字符,而是和int类似,但相加的是它的ASCII码,本例中输出78+67=145
7.E呢?
StringBuffer sb = new StringBuffer('E');
sb.append('M');
sb.appent('S');
System.out.println(sb.toString());
当你满心欢喜的运行上面代码的时候,会发现它并没有如你所愿的输出EMS,而是输出了MS,E呢?
看来是StringBuffer的构造器出问题,当你查看StringBuffer的构造函数的时候,你会惊奇的发现它并不提供char型参数的构造器,这是怎么回事?
如果你使用eclipse或者其他IDE点进入的时候,会发现new StringBuffer('E');进入的是StringBuffer(int)的构造器,这个构造器只是初始化了一下缓冲区大小。
到这里应该都明白了,所以使用char的时候要注意,它有时候更像是int而不是String。
8.单例?
相同虚拟机下下面的类什么时候能得到多于一个实例?
public class Test implements Seraziable{
private static Test instance = null;
private Test (){
}
public static Test getInstance() {
if(instance == null) {
instance = new Test();
}
}
}
第一个想到的应该是多线程,两个线程同时访问的时候可能会产生两个实例。
细心的人会发现这个类实现了序列化接口,也就是序列化反序列化的时候也可能产生多个实例:
public class TestSerializable implements Serializable {
private static final TestSerializable instance = new TestSerializable();
private String name = "t1";
private TestSerializable() {
System.out.println("**********TestSerializable************");
}
public static TestSerializable getInstance() {
return instance;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public static void main(String[] args) throws Exception {
TestSerializable singleton = TestSerializable.getInstance();
FileOutputStream fos = new FileOutputStream("E:\\test.txt");
ObjectOutputStream oos = new ObjectOutputStream(fos);
oos.writeObject(TestSerializable.getInstance());
oos.flush();
oos.close();
FileInputStream fis = new FileInputStream("E:\\test.txt");
ObjectInputStream ois = new ObjectInputStream(fis);
TestSerializable singleton2 = (TestSerializable)ois.readObject();
singleton.setName("111");
System.out.println(singleton.getName());
System.out.println(singleton2.getName());
}
}
输出:
111
t1
解决这个问题首先要知道反序列化的时候怎么执行的,通过查找资料,知道了反序列化的时候调用了方法
private Object readResolve()
jdk有个默认的反序列化方式,会从序列化文件读取信息,并创建实例(不通过构造函数),然后对变量赋值。
如果不考虑远程传数据,下面的办法可以保证当前jvm只有一个实例:
在类中增加方法:
private Object readResolve(){
return instance;
}
输出:
**********TestSerializable************
111
111
但是这样仅仅保证了单例,而丢失了序列化应有的功能。
所以大家在设计可序列化接口的类时要多多考虑。
9.泛型?
编译下面的类,会发现编译器报错:Method test(List) has the same erasure test(List) as another method in type Test001
public class Test001 {
public void test(List lst) {
}
public void test(List lst) {
}
}
这就是泛型的类型擦除,也就是泛型会在编译后消失。
但是看下面的代码,却能编译通过,难道java中返回类型也作为方法签名;不可能!绝对不可能!java规范明明写着方法签名不包括返回值,这到底怎么了?
另外如果把泛型去掉这个类也不能通过编译,看来还是和泛型相关:
public class Test001 {
public static void test(List lst) {
System.out.println("test(List lst)");
}
public static String test(List lst) {
System.out.println("test(List lst)");
return "ttttt";
}
}
调用一下试试?
public class Test001 {
public static void main(String[] args) {
List aaa = new ArrayList();
aaa.add("1");
test(aaa);// 如果List不指定,则编译报错
}
public static void test(List lst) {
System.out.println("test(List lst)");
}
public static String test(List lst) {
System.out.println("test(List lst)");
return "ttttt";
}
}
正如注释缩写,如果调用的时候不用泛型,java也无法找到该调用哪个。
这到底怎么了,泛型不是被擦除了么?怎么会这样??
直接查看字节码javap -verbose:
public class test.Test001 extends java.lang.Object
SourceFile: "Test001.java"
minor version: 0
major version: 49
Constant pool:
const #1 = class #2; // test/Test001
const #2 = Asciz test/Test001;
const #3 = class #4; // java/lang/Object
const #4 = Asciz java/lang/Object;
const #5 = Asciz ;
const #6 = Asciz ()V;
const #7 = Asciz Code;
const #8 = Method #3.#9; // java/lang/Object."":()V
const #9 = NameAndType #5:#6;// "":()V
const #10 = Asciz LineNumberTable;
const #11 = Asciz LocalVariableTable;
const #12 = Asciz this;
const #13 = Asciz Ltest/Test001;;
const #14 = Asciz main;
const #15 = Asciz ([Ljava/lang/String;)V;
const #16 = class #17; // java/util/ArrayList
const #17 = Asciz java/util/ArrayList;
const #18 = Method #16.#9; // java/util/ArrayList."":()V
const #19 = String #20; // 1
const #20 = Asciz 1;
const #21 = InterfaceMethod #22.#24; // java/util/List.add:(Ljava/la
ng/Object;)Z
const #22 = class #23; // java/util/List
const #23 = Asciz java/util/List;
const #24 = NameAndType #25:#26;// add:(Ljava/lang/Object;)Z
const #25 = Asciz add;
const #26 = Asciz (Ljava/lang/Object;)Z;
const #27 = Method #1.#28; // test/Test001.test:(Ljava/util/List;)Ljava/la
ng/String;(2)调用的方法
const #28 = NameAndType #29:#30;// test:(Ljava/util/List;)Ljava/lang/String;(3)方法签名,可这里却包含了返回值。。。
const #29 = Asciz test;
const #30 = Asciz (Ljava/util/List;)Ljava/lang/String;;
const #31 = Asciz args;
const #32 = Asciz [Ljava/lang/String;;
const #33 = Asciz aaa;
const #34 = Asciz Ljava/util/List;;
const #35 = Asciz LocalVariableTypeTable;
const #36 = Asciz Ljava/util/List;;
const #37 = Asciz (Ljava/util/List;)V;
const #38 = Asciz Signature;
const #39 = Asciz (Ljava/util/List;)V;
const #40 = Field #41.#43; // java/lang/System.out:Ljava/io/PrintS
tream;
const #41 = class #42; // java/lang/System
const #42 = Asciz java/lang/System;
const #43 = NameAndType #44:#45;// out:Ljava/io/PrintStream;
const #44 = Asciz out;
const #45 = Asciz Ljava/io/PrintStream;;
const #46 = String #47; // test(List lst)
const #47 = Asciz test(List lst);
const #48 = Method #49.#51; // java/io/PrintStream.println:(Ljava/l
ang/String;)V
const #49 = class #50; // java/io/PrintStream
const #50 = Asciz java/io/PrintStream;
const #51 = NameAndType #52:#53;// println:(Ljava/lang/String;)V
const #52 = Asciz println;
const #53 = Asciz (Ljava/lang/String;)V;
const #54 = Asciz lst;
const #55 = Asciz Ljava/util/List;;
const #56 = Asciz (Ljava/util/List;)Ljava/lang/String;
;
const #57 = String #58; // test(List lst)
const #58 = Asciz test(List lst);
const #59 = String #60; // ttttt
const #60 = Asciz ttttt;
const #61 = Asciz SourceFile;
const #62 = Asciz Test001.java;
{
public test.Test001();
Code:
Stack=1, Locals=1, Args_size=1
0: aload_0
1: invokespecial #8; //Method java/lang/Object."":()V
4: return
LineNumberTable:
line 6: 0
LocalVariableTable:
Start Length Slot Name Signature
0 5 0 this Ltest/Test001;
public static void main(java.lang.String[]);
Code:
Stack=2, Locals=2, Args_size=1
0: new #16; //class java/util/ArrayList
3: dup
4: invokespecial #18; //Method java/util/ArrayList."":()V
7: astore_1
8: aload_1
9: ldc #19; //String 1
11: invokeinterface #21, 2; //InterfaceMethod java/util/List.add:(Ljava/lan
g/Object;)Z
16: pop
17: aload_1
18: invokestatic #27; //Method test:(Ljava/util/List;)Ljava/lang/String; //(1)调用入口
21: pop
22: return
LineNumberTable:
line 9: 0
line 10: 8
line 11: 17
line 12: 22
LocalVariableTable:
Start Length Slot Name Signature
0 23 0 args [Ljava/lang/String;
8 15 1 aaa Ljava/util/List;
LocalVariableTypeTable: length = 0xC
00 01 00 08 00 0F 00 21 00 24 00 01
public static void test(java.util.List);
Signature: length = 0x2
00 27
Code:
Stack=2, Locals=1, Args_size=1
0: getstatic #40; //Field java/lang/System.out:Ljava/io/PrintStream;
3: ldc #46; //String test(List lst)
5: invokevirtual #48; //Method java/io/PrintStream.println:(Ljava/lang/St
ring;)V
8: return
LineNumberTable:
line 15: 0
line 16: 8
LocalVariableTable:
Start Length Slot Name Signature
0 9 0 lst Ljava/util/List;
LocalVariableTypeTable: length = 0xC
00 01 00 00 00 09 00 36 00 37 00 00
public static java.lang.String test(java.util.List);
Signature: length = 0x2
00 38
Code:
Stack=2, Locals=1, Args_size=1
0: getstatic #40; //Field java/lang/System.out:Ljava/io/PrintStream;
3: ldc #57; //String test(List lst)
5: invokevirtual #48; //Method java/io/PrintStream.println:(Ljava/lang/St
ring;)V
8: ldc #59; //String ttttt
10: areturn
LineNumberTable:
line 19: 0
line 20: 8
LocalVariableTable:
Start Length Slot Name Signature
0 11 0 lst Ljava/util/List;
LocalVariableTypeTable: length = 0xC
00 01 00 00 00 0B 00 36 00 24 00 00
}
上面标注的(1),(2),(3)可以看到,java字节码中的方法签名竟然有返回值(位置(3)),。
如果是非泛型类,即使方法签名带返回值,也无法区分该调用哪个方法(因为调用时可以不要返回值)
而是泛型类的话,通过编译器(编译的时候通过泛型可以知道该调用哪个方法)和带返回值的方法声明的结合,却可以找到调用的方法。
另外注意:以上带返回值的泛型方法在有些编译器下也是不能通过编译的(sun的可以)
10.靠,出错了?
public static void main(String[] args) {
List aaa = new ArrayList();
aaa.add("1");
test(aaa);
}
public static void test(List lst) {
System.out.println("List lst");
}
public static void test(Object obj) {
System.out.println("Object obj");
}
当你想当然的认为输出List lst的时候,却输出了Object obj,难道List不是List的子类?
通过查看规范发现确实List不是List的子类,它俩没啥关系。。。编译器直接就指向了test(Object obj)
11.骗子!
public static void main(String[] args) {
List strList = new ArrayList();
strList.add("1");
strList.add("2");
String[] arrA1 = strList.toArray(new String[0]);
System.out.println(arrA1.length);
String[] arrA2 = (String[]) strList.toArray(new Object[0]);
System.out.println(arrA2.length);
}
上面的代码你可能认为第一个toArray会报错,因为list声明为Object,转化为String会错误,但运行你会发现它正确的输出了2,这是因为上面说的泛型的类型擦除的原因,运行时没有Object的声明,只会根据运行态的类型进行转化。
而第二个toArray却会报错(类型转化异常),为啥?
这种写法相当于
Object[] o = new Object[]{"1", "2"};
String[] arrO = (String[]) 0;
System.out.println(arrO.length);
这回看出来了吧,要转化的数组和声明后的数组类型不一样(虽然存储的数据确实是String的),直接就报数组的类型转化错误。
你可能感兴趣的:(java)
TaskBuilder与VSCode、Eclipse有什么区别?
Nodejs_home
VisualStudioCode(简称“VSCode”)是Microsoft在2015年4月30日Build开发者大会上正式宣布一个运行于MacOSX、Windows和Linux之上的,针对于编写现代Web和云应用的跨平台源代码编辑器,可在桌面上运行,并且可用于Windows,macOS和Linux。它具有对JavaScript,TypeScript和Node.js的内置支持,并具有丰富的其他语言
Java响应式编程库Reactor的介绍和基本使用
oscar999
Spring Boot实战开发大全 java Reactor 响应式编程
关于响应式编程的概念和介绍可以参考:响应式编程(ReactiveProgramming)是什么?Java语言中,RxJava和Reactor是实现响应式编程的两个最流行的库,因为Spring5及更高版本中,Reactor是SpringWebFlux的底层实现框架,用于构建响应式Web应用,所以相比而言,Reactor的使用更为广泛。Reactor实现了响应式流(ReactiveStreams)规范
React前端框架详解
小俊学长
react.js 前端框架 前端
React前端框架详解React是一个用于构建用户界面的JavaScript库,由Facebook开发并维护。自2013年发布以来,React凭借其独特的优势,在前端开发领域迅速崛起,成为最受欢迎的前端框架之一。本文将从React的基本概念、核心特性、应用场景、优缺点以及学习建议等多个方面,对React前端框架进行详细阐述。一、React的基本概念React是一个专注于构建用户界面的JavaScr
React前端框架基础知识详解
大梦百万秋
知识学爆 前端框架 react.js 前端
React是由Facebook推出的一个用于构建用户界面的JavaScript库,现已成为前端开发中最流行的框架之一。React的核心理念是通过组件化的方式构建用户界面,提升代码的可维护性和复用性。本文将为大家详细介绍React框架的基础知识,并带你快速入门。1.React是什么?React是一个用于构建UI界面的库,它通过组件的方式将用户界面拆分为可独立维护的小部分。它专注于视图层(View),
React 前端框架介绍
Earth explosion
前端框架
什么是React?React是一个由Facebook开发并维护的开源JavaScript库,用于构建用户界面。它主要用于创建交互式用户界Face(UI),尤其是当数据变化时需要更新部分视图时非常有效。React的核心思想是组件化和声明性编程,这使得开发者可以轻松地创建、组合和重用代码。React的主要特点组件化设计:React鼓励使用组件化设计。每个组件是一个独立的模块,可以单独开发、测试和调试。
[关键词特辑]技术栈、开发架构与项目开发
红栈说BSP
团队开发 个人开发
概念分析技术栈技术栈指的是完成一个项目或产品所需的一系列技术和工具的集合。它通常包括前端技术、后端技术、数据库、服务器和网络技术等。例如,一个典型的Web应用技术栈可能包括HTML、CSS、JavaScript(前端),Node.js、Python或Java(后端),MySQL或MongoDB(数据库),以及Nginx或Apache(服务器)。前端技术:如HTML、CSS和JavaScript,用
JavaScript 操作符总结
小刘不知道叫啥
Javascript javascript 开发语言
这篇主要说三类操作符的使用,分别是判等操作符比较操作符运算符,建议先看一下我的上一篇《JavaScript类型转换全面总结》保证你对js中类型的转换有充分的了解。开篇先说一下在学习操作符和类型转换中get到的一些体会"请不要相信直觉!"了解清楚每个操作符的运算比较流程,而不要凭借"语感"来作出判断!判等==&===首先我们来说一下判等运算符的使用,我们知道js中判断相等可以使用==和===,他们的
接口自动化框架篇:框架中的不同请求方式封装!
测试界的吴彦祖
性能测试 自动化测试 经验分享 压力测试 测试工具 软件测试 自动化测试 接口测试 测试工程师
接口自动化测试是软件测试中不可或缺的一部分,一个好的自动化测试框架可以提高测试效率和质量。本文将从零开始详细规划一个接口自动化测试框架,并着重介绍不同请求方式的封装。一、框架搭建前准备在开始搭建框架之前,需要进行以下准备工作:1.确定测试目标:明确需要测试的接口,包括接口的功能、参数和预期结果等。2.选择编程语言:根据团队的技术栈和项目需求,选择合适的编程语言进行开发,如Python、Java等。
Spring框架拥抱DeepSeek:Java开发者的新机遇
耶耶Norsea
网络杂烩 人工智能
摘要Spring框架正式宣布支持DeepSeek模型,为Java开发者提供了便捷的AI集成方案。通过SpringAI,开发者可以选择模拟OpenAI接口风格或完全本地化部署两种方式来集成DeepSeek。这不仅简化了API配置流程,还赋予开发者更灵活的选择,无论是小型应用还是大型企业级系统,都能根据需求选择最合适的集成方案。这种简化的集成流程使得开发者能够直接调用DeepSeek的强大AI能力,显
Spring MVC 对象转换器:初级开发者入门指南
干中学26
spring mvc java
SpringMVC对象转换器:初级开发者入门指南为什么需要对象转换器?在Web应用中,我们经常需要处理不同类型的对象。例如:前端数据到后端对象:用户通过表单提交的数据通常是HttpServletRequest对象,我们需要将其转换为Java对象(如POJO)以便进行业务处理。后端对象到前端展示:在将数据返回给前端时,可能需要将Java对象转换为适合前端展示的格式(如JSON或XML)。对象转换是一
一文读懂Vue中的el-dialog(附Demo)
码农研究僧
前端/小程序 vue.js javascript 前端
目录前言1.基本知识2.Demo前言原先对于该知识点写过一个Demo,推荐阅读:点击按钮框来选择相应信息(Vue+Java)1.基本知识el-dialog是ElementUI框架中的一个组件,用于创建对话框提供了丰富的功能和选项,可以用来创建各种类型的对话框,如信息确认框、表单填写框等基本用法如下:exportdefault{data(){return{dialogVisible:false//控
编程王炸来袭,DeepSeek+IDEA
会java的怪蜀黍
java intellij-idea java ide
*引言*2025年的春节可以说是人工智能在中国史上飘红的一段历史时刻,年后上班的第一天,便马不停蹄的尝试新技能。今天的科技在飞速发展,编程领域的人工智能工具犹如雨后春笋般涌现。其中,DeepSeek则以其卓越的性能和智能化的功能,迅速在众多开发者中赢得了青睐。对于Java开发者而言,将DeepSeek集成到IDEA中,就如同为自己的编程之路配备了一位智能助手,大幅提升开发效率,让编程变得更加轻松愉
java实现预览静态html,Java 读取模板并生成HTML静态文件实例
guyu0908
java实现预览静态html
原理都很简单,主要是对模板的解析.so,我们先准备一个html模板mb.html,做个文件其中的###title###之类的标签用于程序进行查询替换.HTMLcode复制代码###title######title######author######content######html###下面是具体的代码:JspToHtml.javaJavacode复制代码importjavax.servlet.h
linux java性能监控工具_Linux监控和Java性能监控命令
软工苏
linux java性能监控工具
常见性能分析命令1.1查看CPU使用pidstatvmstatmpstatsartop统计机器总CPU使用情况#1.查看本机CPU个数和利用率lscpuCPU(s):2//总cpu数量On-lineCPU(s)list:0,1//在线的cpu的编号;Thread(s)percore:2//每个Core核心的线程数Core(s)persocket:1//每个cpu插槽核数Socket(s):1//c
Property ‘sqlSessionFactory‘ or ‘sqlSessionTemplate‘ are required 异常处理
囧囧 O_o
SpringBoot3的Bug java mybatis spring
异常表现SpringBoot3整合Mybatis时抛出org.springframework.beans.factory.BeanCreationException:Errorcreatingbeanwithname'studentMapper'definedinfile[W:\SpringBoot3-Study\core-web\build\classes\java\main\top\jionj
SpringBoot3 javax.validation.constraints.xxxx 找不到
囧囧 O_o
SpringBoot3的Bug java 开发语言
升级SpringBoot3后,报importjavax.validation.constraints.**;找不到…//SpringBoot2importjavax.validation.constraints.Digits;需要修改为//SpringBoot3importjakarta.validation.constraints.Digits;
基于java的SpringBoot/SSM+Vue+uniapp的驾校管理系统的详细设计和实现(源码+lw+部署文档+讲解等)
花椒coding
# 微信小程序毕设 # Java精选毕设 java spring boot vue.js
文章目录前言详细视频演示具体实现截图技术栈后端框架SpringBoot前端框架Vue持久层框架MyBaitsPlus系统测试系统测试目的系统功能测试系统测试结论为什么选择我代码参考数据库参考源码获取前言博主介绍:✌全网粉丝15W+,CSDN特邀作者、211毕业、高级全栈开发程序员、大厂多年工作经验、码云/掘金/华为云/阿里云/InfoQ/StackOverflow/github等平台优质作者、专注
基于java的SpringBoot/SSM+Vue+uniapp的饭店餐饮管理系统的详细设计和实现(源码+lw+部署文档+讲解等)
花椒coding
# 微信小程序毕设 # Java精选毕设 java spring boot vue.js uni-app
文章目录前言详细视频演示具体实现截图技术栈后端框架SpringBoot前端框架Vue持久层框架MyBaitsPlus系统测试系统测试目的系统功能测试系统测试结论为什么选择我代码参考数据库参考源码获取前言博主介绍:✌全网粉丝15W+,CSDN特邀作者、211毕业、高级全栈开发程序员、大厂多年工作经验、码云/掘金/华为云/阿里云/InfoQ/StackOverflow/github等平台优质作者、专注
ECMAScript6-----Class的基本知识
太阳与星辰
ECMAScript6 前端 ecmascript 前端 class
ECMAScript6-----Class的基本知识1.类的由来2.constructor()方法3.类的实例4.实例属性的新写法5.取值函数(getter)和存值函数(setter)6.属性表达式7.Class表达式8.静态方法和静态属性8.1静态方法8.2静态属性9.私有方法和私有属性9.1早期解决方案9.2私有属性的正式写法9.3in运算符10.其它1.类的由来JavaScript语言中,生
JDK 8 与 JDK 21的比较,是否值得升级
自在如风。
java JDK 8 JDK 21 SdkMan
JDK21vsJDK8:重大改变与亮点对比Java作为一门经典的编程语言,其JDK(JavaDevelopmentKit)的更新一直备受开发者关注。从JDK8到JDK21,Java经历了多次重大更新,引入了许多新特性和改进。本文将从几个关键方面对比JDK21和JDK8,帮助大家快速了解这些变化。1.语言特性JDK8的亮点Lambda表达式:JDK8引入了Lambda表达式,简化了函数式编程的写法。
Mac上好用的开发相关软件推荐 - 2025篇
自在如风。
ide 编辑器 sublime text Mac
Mac上好用的开发相关软件推荐在Mac上进行开发工作时,选择合适的工具可以极大提高工作效率。以下是我个人使用过的一些优秀软件推荐,涵盖了开发、设计、效率工具等多个方面。每个软件都附上了是否免费、下载地址以及我的评分(满分5分)。开发工具1.IDEA简介:JetBrains出品的Java集成开发环境,支持多种语言和框架。是否免费:付费(有社区版免费)下载地址:IDEA官网评分:⭐⭐⭐⭐⭐2.Subl
530 Login fail. A secure connection is requiered(such as ssl)
爱吃南瓜的北瓜
ssl 网络协议 网络
在完成项目的邮件发送过程中,出现这样的报错,在网上苦苦寻找,最终解决,特此发此来解决问题java发送短信出现这样的报错Asecureconnectionisrequiered(suchasssl).Moreinformationathttp://service.mail.qq.com/cgi-bin/help?id=28错误信息“530Loginfail.Asecureconnectionisre
手把手教你使用Java四大核心特性,构建一个学生管理系统
小巫程序Demo日记
Java基础 java 学生管理系统
今天写一个学生管理系统,那咱们就用Java搞一个简单的出来,顺便展示一下面向对象编程(OOP)的四大核心概念:封装、继承、抽象和多态。我希望你很好看好好学兄弟,我尽量给你整得生动点,made,别睡着啊!系统设计目标首先咱们这个学生管理系统得有以下功能:学生信息管理:能添加、查看、修改、删除学生信息。课程管理:给学生分配课程,查看他们选了啥。成绩管理:记录课程成绩,算个平均分啥的。为了整明白OOP,
【JavaScript】《JavaScript高级程序设计 (第4版) 》笔记-Chapter18-动画与 Canvas 图形
江湖人称菠萝包
【HTML & CSS & JS】相关 javascript 开发语言 前端
十八、动画与Canvas图形动画与Canvas图形图形和动画已经日益成为浏览器中现代Web应用程序的必备功能,但实现起来仍然比较困难。视觉上复杂的功能要求性能调优和硬件加速,不能拖慢浏览器。目前已经有一套日趋完善的API和工具可以用来开发此类功能。毋庸置疑,是HTML5最受欢迎的新特性。这个元素会占据一块页面区域,让JavaScript可以动态在上面绘制图片。最早是苹果公司提出并准备用在控制面板中
Spring MVC的控制器是不是单例模式,如果是,有什么问题,怎么决?思维导图 代码示例(java 架构)
用心去追梦
java 架构 开发语言
SpringMVC控制器的单例模式特性在SpringMVC中,默认情况下控制器(带有@Controller或@RestController注解的类)是按照单例模式创建的。这意味着在整个应用程序生命周期内,只有一个实例会被创建并被所有请求共享。这与Servlet的行为相似,因为Servlet容器也是以单例模式管理Servlet实例的。单例模式的优点:性能优化:减少了对象创建和销毁的开销。资源利用率:
Java 转 Kotlin 指南
火眼9988
编程笔谈 java kotlin 开发语言
Java转Kotlin指南|JavaToKotlinGuideJava转Kotlin快速入门指南和速查手册简介Kotlin已经是一门成熟的编程语言,它简洁、高效、安全,可与Java互操作,出于Java而胜于Java。本文用于向有Java基础的人员提供快速的Kotlin入门。Kotlin的优势和详细介绍可参考官方网站。快速开始由于Kotlin就是JetBrains公司研发的,所以使用他们的IDE(I
Java File 类
&白帝&
java java python 开发语言
File类是Java中用于处理文件和目录的基本类之一,位于java.io包中。它提供了多种方法来创建、删除、检查、修改文件或目录的属性,以及列出文件夹中的内容。虽然File类本身不提供直接的读取或写入文件内容的方法(这些操作通常由FileInputStream,FileOutputStream,BufferedReader,BufferedWriter等类来完成),但它为文件和目录的操作提供了强大
【JVM】GC
日月星宿~
# jvm jvm
GC(GarbageCollection)概述jvm中,程序计数器、虚拟机栈、本地方法栈都是随线程而生随线程而灭,栈帧随着方法的进入和退出做入栈和出栈操作,实现了自动的内存清理。因此,我们的内存垃圾回收主要集中于java堆和方法区中,在程序运行期间,这部分内存的分配和使用都是动态的。当JVM进行垃圾回收时,无论内存是否充足,都会回收只被弱引用关联的对象。简述MinorGCMinorGC指发生在新生
java之泛型
土豆儿@
java 开发语言
一、泛型的简介1.1什么是泛型泛型是一种特殊的数据类型。它是Java的一个高级特性。在Mybatis、Hibernate这种持久化框架,泛型更是无处不在。在之前,不管我们在定义成员变量时,还是方法的形参时,都要规定他们的具体类型。intn1;Stringn2;确定了n1为int类型,n2为String类型。这样参数类型一旦确定就传不了其他类型的值了这样很不灵活,那么就产生了泛型。即,我们在定义一个
开发环境搭建
荔枝寄
harmonyos
鸿蒙操作系统(HarmonyOS)是华为公司自主研发的分布式操作系统,旨在为不同的设备提供统一的操作平台。在鸿蒙的应用开发中,Web组件开发是一项重要的技能,它允许开发者利用Web技术栈来构建高性能、跨平台的应用程序。本文将深入探讨鸿蒙系统中Web组件开发的相关知识,包括其特点、优势、以及如何使用HTML、CSS和JavaScript等Web技术来创建鸿蒙应用。鸿蒙Web组件的特点鸿蒙系统的Web
java短路运算符和逻辑运算符的区别
3213213333332132
java基础
/*
* 逻辑运算符——不论是什么条件都要执行左右两边代码
* 短路运算符——我认为在底层就是利用物理电路的“并联”和“串联”实现的
* 原理很简单,并联电路代表短路或(||),串联电路代表短路与(&&)。
*
* 并联电路两个开关只要有一个开关闭合,电路就会通。
* 类似于短路或(||),只要有其中一个为true(开关闭合)是
Java异常那些不得不说的事
白糖_
java exception
一、在finally块中做数据回收操作
比如数据库连接都是很宝贵的,所以最好在finally中关闭连接。
JDBCAgent jdbc = new JDBCAgent();
try{
jdbc.excute("select * from ctp_log");
}catch(SQLException e){
...
}finally{
jdbc.close();
utf-8与utf-8(无BOM)的区别
dcj3sjt126com
PHP
BOM——Byte Order Mark,就是字节序标记 在UCS 编码中有一个叫做"ZERO WIDTH NO-BREAK SPACE"的字符,它的编码是FEFF。而FFFE在UCS中是不存在的字符,所以不应该出现在实际传输中。UCS规范建议我们在传输字节流前,先传输 字符"ZERO WIDTH NO-BREAK SPACE"。这样如
JAVA Annotation之定义篇
周凡杨
java 注解 annotation 入门 注释
Annotation: 译为注释或注解
An annotation, in the Java computer programming language, is a form of syntactic metadata that can be added to Java source code. Classes, methods, variables, pa
tomcat的多域名、虚拟主机配置
g21121
tomcat
众所周知apache可以配置多域名和虚拟主机,而且配置起来比较简单,但是项目用到的是tomcat,配来配去总是不成功。查了些资料才总算可以,下面就跟大家分享下经验。
很多朋友搜索的内容基本是告诉我们这么配置:
在Engine标签下增面积Host标签,如下:
<Host name="www.site1.com" appBase="webapps"
Linux SSH 错误解析(Capistrano 的cap 访问错误 Permission )
510888780
linux capistrano
1.ssh -v hdfs@192.168.18.133 出现
Permission denied (publickey,gssapi-keyex,gssapi-with-mic,password).
错误
运行状况如下:
OpenSSH_5.3p1, OpenSSL 1.0.1e-fips 11 Feb 2013
debug1: Reading configuratio
log4j的用法
Harry642
java log4j
一、前言: log4j 是一个开放源码项目,是广泛使用的以Java编写的日志记录包。由于log4j出色的表现, 当时在log4j完成时,log4j开发组织曾建议sun在jdk1.4中用log4j取代jdk1.4 的日志工具类,但当时jdk1.4已接近完成,所以sun拒绝使用log4j,当在java开发中
mysql、sqlserver、oracle分页,java分页统一接口实现
aijuans
oracle jave
定义:pageStart 起始页,pageEnd 终止页,pageSize页面容量
oracle分页:
select * from ( select mytable.*,rownum num from (实际传的SQL) where rownum<=pageEnd) where num>=pageStart
sqlServer分页:
Hessian 简单例子
antlove
java Web service hessian
hello.hessian.MyCar.java
package hessian.pojo;
import java.io.Serializable;
public class MyCar implements Serializable {
private static final long serialVersionUID = 473690540190845543
数据库对象的同义词和序列
百合不是茶
sql 序列 同义词 ORACLE权限
回顾简单的数据库权限等命令;
解锁用户和锁定用户
alter user scott account lock/unlock;
//system下查看系统中的用户
select * dba_users;
//创建用户名和密码
create user wj identified by wj;
identified by
//授予连接权和建表权
grant connect to
使用Powermock和mockito测试静态方法
bijian1013
持续集成 单元测试 mockito Powermock
实例:
package com.bijian.study;
import static org.junit.Assert.assertEquals;
import java.io.IOException;
import org.junit.Before;
import org.junit.Test;
import or
精通Oracle10编程SQL(6)访问ORACLE
bijian1013
oracle 数据库 plsql
/*
*访问ORACLE
*/
--检索单行数据
--使用标量变量接收数据
DECLARE
v_ename emp.ename%TYPE;
v_sal emp.sal%TYPE;
BEGIN
select ename,sal into v_ename,v_sal
from emp where empno=&no;
dbms_output.pu
【Nginx四】Nginx作为HTTP负载均衡服务器
bit1129
nginx
Nginx的另一个常用的功能是作为负载均衡服务器。一个典型的web应用系统,通过负载均衡服务器,可以使得应用有多台后端服务器来响应客户端的请求。一个应用配置多台后端服务器,可以带来很多好处:
负载均衡的好处
增加可用资源
增加吞吐量
加快响应速度,降低延时
出错的重试验机制
Nginx主要支持三种均衡算法:
round-robin
l
jquery-validation备忘
白糖_
jquery css F# Firebug
留点学习jquery validation总结的代码:
function checkForm(){
validator = $("#commentForm").validate({// #formId为需要进行验证的表单ID
errorElement :"span",// 使用"div"标签标记错误, 默认:&
solr限制admin界面访问(端口限制和http授权限制)
ronin47
限定Ip访问
solr的管理界面可以帮助我们做很多事情,但是把solr程序放到公网之后就要限制对admin的访问了。
可以通过tomcat的http基本授权来做限制,也可以通过iptables防火墙来限制。
我们先看如何通过tomcat配置http授权限制。
第一步: 在tomcat的conf/tomcat-users.xml文件中添加管理用户,比如:
<userusername="ad
多线程-用JAVA写一个多线程程序,写四个线程,其中二个对一个变量加1,另外二个对一个变量减1
bylijinnan
java 多线程
public class IncDecThread {
private int j=10;
/*
* 题目:用JAVA写一个多线程程序,写四个线程,其中二个对一个变量加1,另外二个对一个变量减1
* 两个问题:
* 1、线程同步--synchronized
* 2、线程之间如何共享同一个j变量--内部类
*/
public static
买房历程
cfyme
2015-06-21: 万科未来城,看房子
2015-06-26: 办理贷款手续,贷款73万,贷款利率5.65=5.3675
2015-06-27: 房子首付,签完合同
2015-06-28,央行宣布降息 0.25,就2天的时间差啊,没赶上。
首付,老婆找他的小姐妹接了5万,另外几个朋友借了1-
[军事与科技]制造大型太空战舰的前奏
comsci
制造
天气热了........空调和电扇要准备好..........
最近,世界形势日趋复杂化,战争的阴影开始覆盖全世界..........
所以,我们不得不关
dateformat
dai_lm
DateFormat
"Symbol Meaning Presentation Ex."
"------ ------- ------------ ----"
"G era designator (Text) AD"
"y year
Hadoop如何实现关联计算
datamachine
mapreduce hadoop 关联计算
选择Hadoop,低成本和高扩展性是主要原因,但但它的开发效率实在无法让人满意。
以关联计算为例。
假设:HDFS上有2个文件,分别是客户信息和订单信息,customerID是它们之间的关联字段。如何进行关联计算,以便将客户名称添加到订单列表中?
&nbs
用户模型中修改用户信息时,密码是如何处理的
dcj3sjt126com
yii
当我添加或修改用户记录的时候对于处理确认密码我遇到了一些麻烦,所有我想分享一下我是怎么处理的。
场景是使用的基本的那些(系统自带),你需要有一个数据表(user)并且表中有一个密码字段(password),它使用 sha1、md5或其他加密方式加密用户密码。
面是它的工作流程: 当创建用户的时候密码需要加密并且保存,但当修改用户记录时如果使用同样的场景我们最终就会把用户加密过的密码再次加密,这
中文 iOS/Mac 开发博客列表
dcj3sjt126com
Blog
本博客列表会不断更新维护,如果有推荐的博客,请到此处提交博客信息。
本博客列表涉及的文章内容支持 定制化Google搜索,特别感谢 JeOam 提供并帮助更新。
本博客列表也提供同步更新的OPML文件(下载OPML文件),可供导入到例如feedly等第三方定阅工具中,特别感谢 lcepy 提供自动转换脚本。这里有导入教程。
js去除空格,去除左右两端的空格
蕃薯耀
去除左右两端的空格 js去掉所有空格 js去除空格
js去除空格,去除左右两端的空格
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>&g
SpringMVC4零配置--web.xml
hanqunfeng
springmvc4
servlet3.0+规范后,允许servlet,filter,listener不必声明在web.xml中,而是以硬编码的方式存在,实现容器的零配置。
ServletContainerInitializer:启动容器时负责加载相关配置
package javax.servlet;
import java.util.Set;
public interface ServletContainer
《开源框架那些事儿21》:巧借力与借巧力
j2eetop
框架 UI
同样做前端UI,为什么有人花了一点力气,就可以做好?而有的人费尽全力,仍然错误百出?我们可以先看看几个故事。
故事1:巧借力,乌鸦也可以吃核桃
有一个盛产核桃的村子,每年秋末冬初,成群的乌鸦总会来到这里,到果园里捡拾那些被果农们遗落的核桃。
核桃仁虽然美味,但是外壳那么坚硬,乌鸦怎么才能吃到呢?原来乌鸦先把核桃叼起,然后飞到高高的树枝上,再将核桃摔下去,核桃落到坚硬的地面上,被撞破了,于是,
JQuery EasyUI 验证扩展
可怜的猫
jquery easyui 验证
最近项目中用到了前端框架-- EasyUI,在做校验的时候会涉及到很多需要自定义的内容,现把常用的验证方式总结出来,留待后用。
以下内容只需要在公用js中添加即可。
使用类似于如下:
<input class="easyui-textbox" name="mobile" id="mobile&
架构师之httpurlconnection----------读取和发送(流读取效率通用类)
nannan408
1.前言.
如题.
2.代码.
/*
* Copyright (c) 2015, S.F. Express Inc. All rights reserved.
*/
package com.test.test.test.send;
import java.io.IOException;
import java.io.InputStream
Jquery性能优化
r361251
JavaScript jquery
一、注意定义jQuery变量的时候添加var关键字
这个不仅仅是jQuery,所有javascript开发过程中,都需要注意,请一定不要定义成如下:
$loading = $('#loading'); //这个是全局定义,不知道哪里位置倒霉引用了相同的变量名,就会郁闷至死的
二、请使用一个var来定义变量
如果你使用多个变量的话,请如下方式定义:
. 代码如下:
var page
在eclipse项目中使用maven管理依赖
tjj006
eclipse maven
概览:
如何导入maven项目至eclipse中
建立自有Maven Java类库服务器
建立符合maven代码库标准的自定义类库
Maven在管理Java类库方面有巨大的优势,像白衣所说就是非常“环保”。
我们平时用IDE开发都是把所需要的类库一股脑的全丢到项目目录下,然后全部添加到ide的构建路径中,如果用了SVN/CVS,这样会很容易就 把
中国天气网省市级联页面
x125858805
级联
1、页面及级联js
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
&l