
Java基础
文章平均质量分 68
明明如月学长
阿里巴巴 资深 Java 研发工程师。《系统掌握大语言模型提示词 - 从理论到实践》小册作者、《解锁大厂思维:剖析《阿里巴巴Java开发手册》》、《再学经典:《EffectiveJava》独家解析》专栏作者、《性能优化方法论》技术电子书作者。热爱技术,喜欢思考,乐于分享。
展开
-
避免在 Java 中使用双括号初始化
尽管使用 Java 的双括号初始化看起来很"炫酷",但它会无故地额外创建类,可能会导致内存泄漏。因此避免在 Java 中使用双括号初始化。或者利用或者,直接将文件转换为 Kotlin。原创 2023-07-17 08:00:00 · 436 阅读 · 0 评论 -
【译】Java 中将两个 List 映射成 Map 看这一篇就够了
在 Java 中,经常有两个需要关联的独立列表。换句话说,我们有两个列表,一个包含键,另一个包含值。然后,我们希望得到一个 Map,它将键列表中的每个元素与值列表中对应的元素关联起来。在本教程中,我们将探讨如何以不同的方式实现这一目标。首先,让我们通过一个例子来了解问题。现在,我们想要将上述两个列表与一个 Map 关联起来。} };正如上面的代码所示,将两个列表组合的规则非常简单。接下来,我们将看看如何实现这一点。原创 2023-05-03 08:00:00 · 3598 阅读 · 1 评论 -
开启偏向锁一定性能更好吗?
最近工作中遇到由于使用偏向锁导致性能下降的案例。趁机总结下偏向锁的概念和锁的升级过程,以及重点聊下偏向锁是否会让性能更优化。原创 2023-03-03 20:49:35 · 466 阅读 · 0 评论 -
支持带权重的对象随机选择方法
一、背景在工作中会遇到有多个下游业务接口或者服务器(这里统称为[目标])需要选择性调用,而且还支持配置权重。比如有3台服务器,分别给予 20%,30%和 50% 的流量;比如有3个厂商的接相似服务,分别给予 80%,5%,15% 的调用量配比。那么我们该如何实现?二、方法2.1 使用 commons-math3 的工具类(推荐)使用 Apache Commons Math3 工具包的 EnumeratedDistribution 类maven 仓库https://mvnrepository原创 2021-10-19 23:54:49 · 718 阅读 · 0 评论 -
JSON 反序列化 Long 变 Integer 或 Double 问题
一、背景工作中可能会遇到对 Map<String,Object> 进行 JSON 序列化,其中值中包含 Long 类型的数据,反序列化后强转 Long 时报类型转换异常的问题。本文简单探讨下该问题,并给出解决方案,如果你想直接看建议,直接翻到第三部分即可。二、研究本文主要以 jackson、 gson、fastjson 三个库为例,版本分别如下: <!-- https://mvnrepository.com/artifact/com.fasterxml.jackson.co原创 2021-10-16 21:05:03 · 10525 阅读 · 0 评论 -
InnoDB 啥时候不执行事务?
一、背景最近看到技术群里,有朋友提的一个问题很有意思,值得简单探讨下。因此简单整理下,希望对大家有帮助。该同学的回答是 “配置禁用事务”。还有些同学说,可以“关闭 undo log 和 redo log”。大家对这个问题怎么看呢?注: 以下只是自己的理解,可能会有纰漏,如果有不同意见,欢迎评论探讨。二、探讨第一印象,Spring 里不启用事务相关的功能,如不使用 @Transaction 注解或者不使用编程式事务的方式不就好了吗?因为平时我们开发的时候,“需要保证数据库操作的原子性时原创 2021-10-16 00:43:07 · 574 阅读 · 0 评论 -
从线程池拒绝策略中我们可以学到什么?
一、缘由很多人都知道或者用过线程池,线程池构造方法的参数中有一个参数为拒绝策略。那么,通过拒绝策略我们可以学到哪些思想?本文简单讲讲自己的理解。二、可以学到什么?2.1 没有最好的选择,只有最适合的选择不知道你有没有思考过,为什么会有那么多编程语言?为什么会有那么多算法?为什么会有那么多设计模式?为什么会有那么多存储方式?为什么会有那么多线程池拒绝策略?如果你稍微思考,就会发现不同的编程语言、算法、设计模式、存储方式、线程池拒绝策略等适用不同的场景。(图片来源:美团技术)启发:我们要做原创 2021-05-13 23:59:18 · 2915 阅读 · 3 评论 -
你真的理解Java 字符串的不可变性吗?
一、背景字符串的不可变性可以说是面试中的一个常见的“简单的” 问题。常见的回答如:字符串创建后不可改变。字符串的不可变性是指字符串的字符不可变。String 的 value 字符数组声明为 final 保证不可变。真的是这样吗?下面我们再思考两个问题:那么字符串的不可变究竟是指什么?是如何保证的呢?下面看一个奇怪的现象:在程序一段程序的最后执行下面的语句居然打印了 “aw” 为什么?// 前面代码省略System.out.println("ab");建议大家先思考,然后再看下原创 2020-08-23 01:46:34 · 20485 阅读 · 7 评论 -
记一次保留订单历史记录的方案讨论
一、背景今天技术交流群里,段段同学提了一个不错的问题。描述如下:假设一条记录包含以下信息:(id,username,score,version),score每次变更,version就加1,对于username相同的数据,只有version最大的那一条是有效的,也就是Mysql按字段分组取最大值记录问题,怎么做才能使查询效率高呢存在的问题:加 version 之后查询最新的用子查询效率不高;建个额外的表记录id 和 version 然后联查,这种做法怪怪的,显然效率也不够高。二、 讨论出几个方案原创 2020-07-08 21:18:17 · 2338 阅读 · 0 评论 -
arthas 执行ognl表达式ClassNotFoundException
1 问题描述不希望通过编码的方式,想通过arthas 获取spring 属性。参考一篇文章https://my.oschina.net/u/4255537/blog/3357593 根据applicationcontext 工具类获取配置属性的方法。实际执行时总是报找不到类, 但是通过sc 命令可以找到该类[arthas@312]$ ognl '#context=@com.xxx.ApplicationContextHelper@appCtx,#context.getEnvironment().ge原创 2020-06-03 23:05:24 · 4716 阅读 · 1 评论 -
你真得知道Java 中有几种创建线程的方式吗?
一、背景本文给出两个简单却很有意思的线程相关的题目题目1:Java 中有几种创建线程的方式?如果面试中遇到这个问题,估计很多人会非常开心,然而网上的诸多答案真的对吗?题目2:public static void main(String[] args) { Thread thread = new Thread(() -> System.out.println("Runnab...原创 2020-04-11 12:54:37 · 2000 阅读 · 5 评论 -
Java finally 的用法,看这一篇就够了
1.概述在本教程中,我们将研究 Java 中的 finally 关键字的用法。 我们将看到如何在错误处理中与 try / catch 块一起使用它。 尽管 finally 的目的是保证代码被执行,但是我们还将讨论 JVM 不执行 finally 代码的特殊情况。我们还将讨论一些常见的陷阱,在这些陷阱中,finally 块可能会产生意外的结果。2.什么是finallytry 关键字最后可以定.........翻译 2020-01-05 12:51:20 · 56702 阅读 · 9 评论 -
使用OkHttp发送POST请求的快速入门指南
英文原文:https://www.baeldung.com/okhttp-post1介绍本文将介绍 OkHttp 客户端的基本用法。在本篇简短的技术文章中,我们将特别介绍 OkHttp 3.x 版本中发送Post请求的不同方式。2 基本的 POST 请求d我们可以使用 FormBody.Builder 构造基本的 RequestBody , 包含两个参数:用户名、密码,发送 POST请...翻译 2020-01-01 22:46:36 · 24292 阅读 · 1 评论 -
Java 中的拷贝构造方法
1.介绍Java 中的拷贝构造方法是一种使用该类的一个对象构造另外一个对象的构造方法。当需要拷贝一个带有多个成员变量的复杂对象或者想构造已存在对象的深拷贝对象时非常有用。译者注:本文内容很简单,但是很实用。拷贝构造方法实战中用虽然用的不多,但是是一个非常不错的技巧。2.如何创造拷贝构造方法要创建拷贝构造方法,首先需要声明带有和本类相同类型的参数构造函数:public class E...翻译 2019-12-20 23:21:24 · 10466 阅读 · 3 评论 -
尽信书不如无书之获取枚举值代码优化
1 背景实际开发中根据枚举的某个属性获取枚举值非常常见。如定义一个枚举:@Getterpublic enum CoinEnum { PENNY(1), NICKEL(5), DIME(10), QUARTER(25); CoinEnum(int value) { this.value = value; } private fi...原创 2019-12-13 00:55:20 · 4424 阅读 · 0 评论 -
校验两个Java Date是不是同一天的N种姿势
一、背景本文将介绍比较两个java.util.Date对象是不是代表同一天的N种姿势。首先介绍 Java自带 API实现,然后会介绍几种类库实现该功能。译者:比较两个对象是否是同一天本身难度不是很大,重点提醒大家多了解用到的其他类库,未来更多时间相关的功能需求,可以通过相关类库更方便地处理。二、Core JavaDate类表示特定的时间瞬间,精度为毫秒。为了找...翻译 2019-12-01 15:53:11 · 4426 阅读 · 0 评论 -
图书管理系统基于servlet+mysql+jdbc+html
图书管理系统基于servlet+mysql+jdbc+html项目war文件 及 mysql备份文件下载地址:http://dl.vmall.com/c0ejjni0ai 代码3400多行,主要功能基本都实现了,但是极个别的内容由于时间比较匆忙,还要学习新的知识等,还需要改善。此项目war文件 及 mysql备份下载地址:http://dl.vmal原创 2012-12-30 21:50:52 · 3016 阅读 · 4 评论 -
java 思考
java是翻译执行在某种程度上会降低速度java实现很好的跨平台 代码不变 不同系统安装虚拟机 都可以跑起来别的大部分语言针对不同操作系统 编写不同的代码那么可不可以把虚拟机的原理写成的同一个class文件 转成 各个操作系统的 可执行文件呢?这样就无需再解释执行,效率也会提上去原创 2013-02-05 01:11:33 · 819 阅读 · 0 评论 -
JSon 使用 之怪现象[已解决]
最近 学extjs 结合 json 时候 遇到一个 非常困扰的问题 使用 json-lib.jar 以及 jackson json 的 jar包 的类 将对象等封装成Json字符串在eclipse里启动tomcat均会报出一连串的错误 异常等 但是如果我用 Str原创 2013-02-06 00:09:02 · 1180 阅读 · 0 评论 -
Mysql 复习总结
/********** 基本数据类型*******************/ #数值 tinyint 1字节 8位 有符号 :-128--->127(只有后七位表示绝对值 最高位表示正负) 无符号 : 0--->255 smallint 2 字节 16位 有符号 :[-32768]-2^15--->[32767]2^15-1(只有后七位表示绝对值 最高位表原创 2013-02-06 12:28:48 · 1250 阅读 · 0 评论 -
一个ITAT大赛的试题(我的解法)
题目给定一个字符串的集合,格式如:{aaa bbb ccc}, {bbb ddd},{eee fff},{ggg},{ddd hhh},将其中交集不为空的集合合并,要求合并完成后的集合之间无交集。例如上例应输出{aaa bbb ccc ddd hhh}, {eee fff}, {ggg}import java.util.ArrayList;impo原创 2013-02-21 16:24:08 · 1244 阅读 · 0 评论 -
JAVA 枚举类型简单应用
public enum Music { Because_Of_You("/resource/Because_Of_You.wav"), Just_A_Kiss("/resource/Just_A_Kiss.wav"), Angel_Baby("/resource/Angel_Baby.wav"); private String url = null; private Music原创 2013-02-22 23:18:41 · 839 阅读 · 0 评论 -
Java 解压缩 Zip文件(在李兴华老师基础上优化)
import java.io.File;import java.io.FileInputStream;import java.io.FileOutputStream;import java.io.IOException;import java.io.InputStream;import java.io.OutputStream;import java.util.zip.ZipEntry翻译 2013-02-22 20:46:01 · 2082 阅读 · 0 评论 -
java实现Zip压缩
需要 ant.jar包http://download.youkuaiyun.com/detail/w605283073/5081317 (免费下载)import java.io.File;import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.FileOutputStrea转载 2013-02-22 20:49:28 · 1024 阅读 · 0 评论 -
struts2.2.3 配置中文乱码拦截过滤器 解决接收中文参数乱码问题
java 编程中得中文乱码问题,一直都是个困扰程序员的问题。数据库进出的数据,我们暂时不去管它,我们先解决页面到程序的乱码问题,后面那都是后话。第一步:jsp页面编码统一问题,这个最容易解决。以GBK为例子,jsp页面加上上面一句就能解决页面编码问题。其中pageEncoding="UTF-8"是解决页面java代码模块编码,contentType="text/html;转载 2013-02-25 01:17:59 · 1170 阅读 · 1 评论 -
FileChannel 使用
import java.io.File;import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.FileOutputStream;import java.io.IOException;import java.nio.ByteBuffer;import java.nio.chan转载 2013-02-23 16:37:32 · 993 阅读 · 0 评论 -
spring jar 说明
spring.jar是spring所有包的一个合集。为了方便使用的。以前的包是分开的有,spring.jar合成的也有。新的Spring中已经没有了spring.jar,不过你可以自己打包所有的,哈哈!分开打包的目的是方便可插拔的特性,用什么就导入什么!其中:core是核心包,必须要导入的。bean是管理bean的,也必须要导入。context是管理对bean包的再次封装,主要是管理转载 2013-02-23 19:03:24 · 838 阅读 · 0 评论 -
源码
import java.util.Scanner;public class homework{public static void main(String[] args){ /* * name must be printed out at the beginning of your source code * *///introduction of the program and转载 2013-04-02 07:11:44 · 1064 阅读 · 0 评论 -
fatjar 将项目使用的第三方jar包打包(亲测可用)
fatjar 将项目使用的第三方jar包打包(亲测可用)自己试了很多方法就是不行今天查了很多资料 最后看这个照着做 成功了!里面有使用说明http://dl.vmall.com/c0e0pi9lxm原创 2013-03-27 13:44:19 · 2049 阅读 · 0 评论 -
Spring发送邮件总结(附源码)
做项目用到自动发邮件功能,网上查阅很多没有给出特别详细的说明,需要自己去探索,做了很多弯路。在此给大家分享一下自己的代码:360网盘下载地址:http://yunpan.cn/cJzDQ3gVUHBxY 访问密码 8221使用时 请将Spring 配置文件里的 用户名、密码、邮箱服务器 还有端口 进行修改如果不是 yeah邮箱。如果使用maven项目:原创 2015-03-06 00:19:03 · 5035 阅读 · 0 评论 -
输出杨辉三角(C++和 JAVA版 )
C++版本:#include using namespace std;void main(){ int n=10; cout<<"请输入 杨辉三角 行数:"; cin>>n; int **a = new int* [n];for(int m = 0; m < n; m++){ a[m] = new int [n];} for(int i=0;i<n;i原创 2015-04-01 23:53:40 · 1420 阅读 · 0 评论 -
2015考研 杭电 计算机学院 复试笔试题第一题 JAVA语言解法
杭电 2015年考研 计算机学院 复试笔试第一题 JAVA解法import java.util.Scanner;import java.util.regex.Matcher;import java.util.regex.Pattern;/* 杭电2015年 计算机学院 复试 笔试题第一题 JAVA解答 * author 刘汪洋 QQ 605283073 * 求出:字符原创 2015-04-01 10:29:49 · 2837 阅读 · 0 评论 -
数据结构(JAVA版本)练习之集合 简易图书管理系统
数据结构实用教程(JAVA版)看完第一章 集合 结合书中代码 稍微修改做个小练习:课程表类:package com.chujianyun.com;public class Table { private String key; private String rest; public Table() { } public Table(Stri原创 2015-04-14 15:24:19 · 4283 阅读 · 0 评论 -
MyBatis 3.2.8 用户手册 4.1.5 Result Maps
4.1.5ResultMaps结果映射(ResultMap)是MyBatis框架中最重要和强大的元素.它为你节省从JDBC结果集中获取数据90%的代码,在某些情况下甚至提供给JD原创 2015-04-27 21:41:24 · 1230 阅读 · 1 评论 -
Efxclipse教程-教程1-从创建项目到部署
从创建项目到部署File > New > Project选择 "JavaFX Project" (JAVAFX项目)输入项目名然后点击"Finish"(完成).在你的新项目里创建一个 Java package(包)在创建的package(包)上右键单击打开菜单 然后选择 New(新建) > Other(其他) ... 选择 "JavaFX Main Class". (J翻译 2015-05-09 13:39:14 · 1684 阅读 · 0 评论 -
jsp forward 转到springMVC的 controller传值问题
jsp forward 转到springMVC的 controller传值问题总是404等各种错误 网上查询各种做法 都很曲折各种尝试只有豁然开朗1 在JSP页面上面获取传来的各个参数 " /> " /> " /> " /> 这种方式不行2 采用拼接的方式 &pid=&pageNow=%=p原创 2015-05-15 10:08:31 · 4637 阅读 · 0 评论 -
JAVA 正则表达式截取字符串小例子
例如:从如下字符串 营业时间: 11:30-21:30 修改 分类标签: 无线上网(8) 可以刷卡(7) 朋友聚餐(5) 家庭聚会(5) 商务宴请(4) 情侣约会(4) 可自带酒水(2)中获取: 11:30-21:30两个数字:两数字-两个数字:两个数字 因此 正则表达式:\\d{2}:\\d{2}-\\d{2}:\\d{2}具体代码如下:原创 2015-05-16 10:50:16 · 5482 阅读 · 0 评论 -
mybatis 操作存储过程 小细节错误
项目开发的时候遇到一个错误:org.springframework.jdbc.BadSqlGrammarException: ### Error querying database. Cause: java.sql.SQLException: ORA-06550: 第 8 行, 第 4 列: PLS-00103: 出现符号 ";"在需要下列之一时: . ( ) , * @ % & = -原创 2015-05-16 15:32:16 · 4489 阅读 · 0 评论 -
springMVC视图转发 总结
在项目中需要视图转发通常采用如下两种方式:或者但是略有区别如果带有参数 建议使用后面那种 否则会出现404原创 2015-05-16 12:03:52 · 1412 阅读 · 0 评论 -
JSTL double保留小数点后两位
JSTL double保留小数点后两位原创 2015-05-30 10:42:28 · 5135 阅读 · 0 评论