
Java基础技术
文章平均质量分 60
主要以java基础技术为主,着重一些原理和细节的研究
徐泗空
永远做更好的自己!
展开
-
IDEA中Resolving Maven dependencies卡着不动解决方案
通常位于Maven安装目录下的conf文件夹中,或者在用户目录下的.m2文件夹中(如果用户自定义了settings.xml的位置)。Maven配置阿里云仓库主要通过修改Maven的settings.xml文件来实现。打开settings.xml文件,在<mirrors>标签内添加阿里云Maven仓库的镜像配置。通过以上步骤,你可以成功配置Maven以使用阿里云的仓库,从而加快依赖的下载速度。完成编辑后,保存对settings.xml文件的更改,并关闭文件。标签中添加阿里云的仓库地址。原创 2025-02-06 11:46:11 · 880 阅读 · 0 评论 -
Springboot学习之数据库连接池Hikaricp(三十八)
较少。原创 2024-07-19 00:30:52 · 249 阅读 · 0 评论 -
用Stream流方式合并两个list集合(部分对象属性重合)
【代码】用Stream流方式合并两个list集合(部分对象属性重合)原创 2024-04-29 13:45:57 · 3518 阅读 · 1 评论 -
代码整洁之道之优化if-else的8种方案(一)
可以消除if-else。上述方案都可以达到优化if-else的效果,但是采用那种方案还是要看具体的代码逻辑以及业务处理逻辑,重要的是要评估项目的复杂性、维护性和性能需求,选择最适合项目需求的优化方案。我们可以将一些操作(比如一些状态)的一些共性的方法抽象成一个公共接口,然后针对这些操作实现这些接口完成不同的逻辑,在调用时我们只需要传入对应的操作类即可,对外的操作方法都是同一个。我们日常开发的项目中,如果代码中存在大量的if-else语句,阅读起来非常的折磨(直接劝退),维护起来也很难,也特别容易出问题。原创 2024-02-28 14:17:44 · 167 阅读 · 0 评论 -
解决端口被占用的问题
我们输入: netstat -aon | findstr 8080,返回信息如下,可以看到该端口被20312进程占用。我们输入:taskkill -pid 20312 -f,返回信息如下,可以看到占用该端口的进程已经被杀死了。如果不放心的话,我们还可以在用1中的命令查一遍,可以看到之前监听的两个进程已经被杀掉了。netstat -aon | findstr “端口”taskkill -pid "进程号" -f。2、我们用下面命令杀死这个占用端口的进程。原创 2023-12-13 11:04:12 · 443 阅读 · 0 评论 -
解决maven出现“连接到http://repo.maven.apache.org被拒绝”的问题
1、原因这个问题的原因就是无法连接到http://repo.maven.apache.org/maven2镜像2、解决办法修改maven默认镜像仓库地址为国内可用的镜像地址,比如这里推荐阿里的镜像仓库地址http://maven.aliyun.com/nexus/content/groups/public/该镜像仓库地址亲测可用,而且速度极快,强烈推荐3、操作步骤1、找到你IDEA配置的maven位置2、检查你的maven对应的settings.xml文件到底是使用的哪一原创 2022-05-18 02:11:26 · 18815 阅读 · 2 评论 -
Java设置系统日期和时间
需求:利用java实现设置系统的日期和时间一、代码Demo1package com.xu.demo.test;import java.io.IOException;public class SetDateTime { public static void main(String[] args) { //Operating system name String osName = System.getProperty("os.name");原创 2022-05-06 02:10:02 · 7233 阅读 · 3 评论 -
IDEA开发流程Activiti需要注意的一些坑
1、慎用IDEA2020最新版本IDEA2020最新版本迎来了重大升级,对java和spring有了更好更强大的开发支持,但是对于Activiti流程开发却不再支持,可能是因为actiBPM插件太老,或者IDEA2020对插件支持做了规范要求等等,请各位喜欢尝鲜的码农们慎用,如果升级后无法继续支持actiBPM插件,请到IDEA官网下载更低版本的IDEA2019.3版本,亲测该低版本依然很好的...原创 2020-04-14 11:01:37 · 8099 阅读 · 16 评论 -
Java中高级面试题及答案收集(三)
Java 基础-------------------------------------------------------------------------------------------------- 1基本数据类型----------------------------------------------------------------------------------...转载 2019-12-24 17:46:02 · 2266 阅读 · 1 评论 -
Java中高级面试题及答案收集(一)
(一)Java基础1、线程池的原理预先启动一些线程,线程无限循环从任务队列中获取一个任务进行执行,直到线程池被关闭。如果某个线程因为执行某个任务发生异常而终止,那么重新创建一个新的线程而已。如此反复。2、为什么要创建线程池?线程池为线程生命周期开销问题和资源不足问题提供了解决方案。(1)通过对多个任务重用线程,线程创建的开销被分摊到了多个任务上。其好处是,因为在请求到达时线程已...原创 2019-12-24 17:46:23 · 840 阅读 · 0 评论 -
Java中高级面试题及答案收集(二)
(一)1.多个线程同时读写,读线程的数量远远大于写线程,你认为应该如何解决并发的问题?你会选择加什么样的锁?2.JAVA的AQS是否了解,它是干嘛的?3.除了synchronized关键字之外,你是怎么来保障线程安全的?4.Tomcat本身的参数你一般会怎么调整?5.你有没有用过Spring的AOP? 是用来干嘛的? 大概会怎么使用?6.如果一个接口有2个不同的实现, 那么怎么来Au...转载 2019-12-24 17:46:44 · 181 阅读 · 0 评论 -
Java实现自定义注解
前言上一篇文章介绍了注解的一些基本知识,这次来介绍下如何实现自定义注解及注解如何使用。正文注解是一种能被添加到java源代码中的元数据,方法、类、参数和包都可以用注解来修饰。注解可以看作是一种特殊的标记,可以用在方法、类、参数和包上,程序在编译或者运行时可以检测到这些标记而进行一些特殊的处理。注解的基本元素声明一个注解要用到的东西修饰符:访问修饰符必须为...转载 2019-12-25 16:47:20 · 137 阅读 · 0 评论 -
杰米斯·哈萨比斯:创造性和直觉很重要
举报 ▍ 引言 ▍ 经历了一盘伟大的胜利后,李世石与“阿法狗”(AlphaGo)的围棋人机大战正持续引发着关注。对于创造出“阿法狗”的DeepMind公司来说,输掉一盘棋并不是什么坏事,反而很高兴终于有人类发现了“阿法狗”的弱点,以帮助它进行改进。而“阿法狗”的强大,已经在前三盘展现得淋漓尽致,这真是一个伟大的成就。如此了不起的人工智能程序,到底是怎样的人把它创转载 2017-03-14 15:43:07 · 1402 阅读 · 0 评论 -
如何学好游戏3D引擎编程
《如何学好游戏3D引擎编程》此篇文章献给那些为了游戏编程不怕困难的热血青年,它的神秘要我永远不间断的去挑战自我,超越自我,这样才能攀登到游戏技术的最高峰——阿哲VS自己 QQ79134054多希望大家一起交流与沟通这篇文章是我一年半前,找工作时候写的,那时是发到学校的BBS上。现在我工作了,想法和以前也有不同,但对游戏引擎编程理念还是基本差不多。在我没遇到U3以前,一直研究WI转载 2016-12-17 13:50:11 · 984 阅读 · 0 评论 -
灵魂拷问:为什么 Java 字符串是不可变的?
在逛 programcreek 的时候,发现了一些精妙绝伦的主题。比如说:为什么 Java 字符串是不可变的?像这类灵魂拷问的主题,非常值得深思。对于绝大多数的初级程序员来说,往往停留在“知其然不知其所以然”的层面上——会用,但要说底层的原理,可就只能挠挠头双手一摊一张问号脸了。很长一段时间内,我也一直处于这种层面上。导致的局面就是,我在挖一些高深点的技术方案时,往往束手无策;在读一些高深...转载 2019-11-07 09:37:21 · 741 阅读 · 0 评论 -
eclipse中设置自动生成的author,date等注释
转自:http://hi.baidu.com/qianjian21/blog/item/2fecbd2f687ba03e1e308969.html每新建一个类上面都会有一行注释:/*** 类说明** @author ***** @date 2014-8-6 新建*/感觉这个应该很好,多个人一起开发的时候能够看见谁是谁的。操作步骤在这里和大家分享一下:window->preference-&g...转载 2018-03-01 11:44:33 · 1529 阅读 · 0 评论 -
Java集合及concurrent并发包总结
1.集合包 集合包最常用的有Collection和Map两个接口的实现类,Colleciton用于存放多个单对象,Map用于存放Key-Value形式的键值对。 Collection中最常用的又分为两种类型的接口:List和Set,两者最明显的差别为List支持放入重复的元素,而Set不支持。List最常用的实现类有:ArrayList、LinkedList、Vector及Stack;Se...转载 2018-03-14 11:55:56 · 164 阅读 · 0 评论 -
深入学习理解java:CountDownLatch详解
今天在公司学习看到了它,翻一番文档,正如每个Java文档所描述的那样,CountDownLatch是一个同步工具类,它允许一个或多个线程一直等待,直到其他线程的操作执行完后再执行。在Java并发中,countdownlatch的概念是一个常见的面试题,所以一定要确保你很好的理解了它。在这篇文章中,我将会涉及到在Java并发编 程中跟CountDownLatch相关的以下几点:CountDownLa...转载 2018-03-14 11:15:50 · 556 阅读 · 0 评论 -
【Java 并发】详解 ThreadLocal
目录前言线程局部变量使用示例具体实现ThreadLocalMap副本变量存取ThreadLocal 散列值应用场景参考文章 前言ThreadLocal 主要用来提供线程局部变量,也就是变量只对当前线程可见,本文主要记录一下对于 ThreadLocal 的理解。更多关于 Java 多线程的文章可以转到 这里。线程局部变量在多线程环境下,之所以会有并发问题,就是因为不同的线程会同时访问同一个共享变量,...转载 2018-03-20 12:01:30 · 178 阅读 · 0 评论 -
java的concurrent用法详解
我们都知道,在JDK1.5之前,Java中要进行业务并发时,通常需要有程序员独立完成代码实现,当然也有一些开源的框架提供了这些功能,但是这些依然没有JDK自带的功能使用起来方便。而当针对高质量Java多线程并发程序设计时,为防止死蹦等现象的出现,比如使用java之前的wait()、notify()和synchronized等,每每需要考虑性能、死锁、公平性、资源管理以及如何避免线程安全性方面带来的...转载 2018-03-19 17:08:39 · 195 阅读 · 0 评论 -
Java值传递与引用传递问题
值传递与引用传递最近学基础的时候,老师讲了值传递和引用传递,这个问题一直不太明白,上网查了很多资料,按照自己的理解整理了一遍,发现之前不太明白的地方基本上想明白了,如有不正确的地方,欢迎指正,谢谢。首先要说明的是java中是没有指针的,java中只存在值传递,只存在值传递!!! 然而我们经常看到对于对象(数组,类,接口)的传递似乎有点像引用传递,可以改变对象中某个属性的值。但是不要被这个假象所蒙...转载 2018-03-05 11:10:07 · 175 阅读 · 0 评论 -
Java提高篇之hashCode
在前面三篇博文中LZ讲解了(HashMap、HashSet、HashTable),在其中LZ不断地讲解他们的put和get方法,在这两个方法中计算key的hashCode应该是最重要也是最精华的部分,所以下面LZ揭开hashCode的“神秘”面纱。hashCode的作用要想了解一个方法的内在原理,我们首先需要明白它是干什么的,也就是这个方法的作用。在讲解数组时(java提高篇(十八)——数组),我...转载 2018-03-05 11:04:37 · 187 阅读 · 0 评论 -
Java内存溢出详解及解决方案
内存溢出与数据库锁表的问题,可以说是开发人员的噩梦,一般的程序异常,总是可以知道在什么时候或是在什么操作步骤上出现了异常,而且根据堆栈信息也很容易定位到程序中是某处出现了问题。内存溢出与锁表则不然,一般现象是操作一般时间后系统越来越慢,直到死机,但并不能明确是在什么操作上出现的,发生的时间点也没有规律,查看日志或查看数据库也不能定位出问题的代码。更严重的是内存溢出与数据库锁表在系统开发和单元测试阶...转载 2018-03-12 10:27:18 · 14939 阅读 · 1 评论 -
JAVA多线程实现的四种方式
Java多线程实现方式主要有四种:继承Thread类、实现Runnable接口、实现Callable接口通过FutureTask包装器来创建Thread线程、使用ExecutorService、Callable、Future实现有返回结果的多线程。其中前两种方式线程执行完后都没有返回值,后两种是带返回值的。 1、继承Thread类创建线程Thread类本质上是实现了Runnable接口的一个实例,...转载 2018-03-05 00:51:06 · 152 阅读 · 0 评论 -
Java值传递还是引用传递?
回顾:在程序设计语言中,将参数传递分为按值调用和按引用调用。按值调用:表示方法接收的是调用者提供的值。而按引用调用表示方法接收的是调用者提供的变量地址。一个方法可以修改传递引用所对应的变量值,而不能修改传递值调用所对应的变量值。Java总是采用按值调用。方法得到的是所有参数值的一个拷贝,特别的,方法不能修改传递给它的任何参数变量的内容。方法参数共有两种类型:基本数据类型对象引用1. 基本数据类型为...转载 2018-03-03 22:24:16 · 134 阅读 · 0 评论 -
深入理解Java的接口和抽象类
原文出处: 海 子对于面向对象编程来说,抽象是它的一大特征之一。在Java中,可以通过两种形式来体现OOP的抽象:接口和抽象类。这两者有太多相似的地方,又有太多不同的地方。很多人在初学的时候会以为它们可以随意互换使用,但是实际则不然。今天我们就一起来学习一下Java中的接口和抽象类。下面是本文的目录大纲:一.抽象类二.接口三.抽象类和接口的区别若有不正之处,请多多谅解并欢迎批评指正,不甚感激。一....转载 2018-03-02 12:00:03 · 121 阅读 · 0 评论 -
Throwable和Exception的区别
Java语言要求java程序中(无论是谁写的代码)所有抛出(throw)的异常都必须是从Throwable派生而来。当然,实际的Java编程中,由于JDK平台已经为我们设计好了非常丰富和完整的异常对象分类模型。因此,java程序员一般是不需要再重新定义自己的异常对象。而且即便是需要扩展自定义的异常对象,也往往会从Exception派生而来。所以,对于java程序员而言,它一般只需要在它的顶级函数中...转载 2018-03-01 11:21:20 · 1028 阅读 · 0 评论 -
自定义运行时异常设计(RuntimeException)
在每个公司的架构中,日志肯定是重点,以至于很多时候需要对日志进行优化!那么该怎么设计,怎么定义自己想提示出的自定义消息呢,下面就是一个很好的设计示例,以供参考!本文采取从上到下的模式用代码设计:1. 自定义异常根类:[java] view plain copy/** * 公司的运行时异常根类。【这个类可以打进jar包,供全公司使用】 * * <p> * 统一异常层次,便于处理与...转载 2018-03-01 14:19:29 · 7750 阅读 · 0 评论 -
HashMap在Java1.7与1.8中的区别
HashMap在Java1.7与1.8中的区别基于JDK1.7.0_80与JDK1.8.0_66做的分析 JDK1.7中使用一个Entry数组来存储数据,用key的hashcode取模来决定key会被放到数组里的位置,如果hashcode相同,或者hashcode取模后的结果相同(hash collision),那么这些key会被定位到Entry数组的同一个格子里,这些key会形成一个链表。在ha...转载 2018-03-24 00:35:50 · 190 阅读 · 0 评论 -
Java单链表、双端链表、有序链表实现
单链表:insertFirst:在表头插入一个新的链接点,时间复杂度为O(1)deleteFirst:删除表头的链接点,时间复杂度为O(1)有了这两个方法,就可以用单链表来实现一个栈了,见http://blog.youkuaiyun.com/a19881029/article/details/22579759find:查找包含指定关键字的链接点,由于需要遍历查找,平均需要查找N/2次,即O(N)remove:...转载 2018-03-20 16:33:56 · 159 阅读 · 0 评论 -
搜索引擎技术介绍
引言早些时候分享过一份关于搜索引擎技术的PPT,这篇文章基本上是基于原来框架,在内容上做了一些改进和扩充。主要是对搜索引擎技术的各方面做一些简单的介绍和入门的指引。索引1. 需求与历史2. 搜索产品简介3. 搜索技术 3.1 系统 3.2 数据 3.3 算法转载 2016-12-17 15:22:27 · 1176 阅读 · 0 评论 -
关于Java代码优化的N条建议!
本文是作者:五月的仓颉 结合自己的工作和平时学习的体验重新谈一下为什么要进行代码优化。在修改之前,作者的说法是这样的:就像鲸鱼吃虾米一样,也许吃一个两个虾米对于鲸鱼来说作用不大,但是吃的虾米多了,鲸鱼自然饱了。代码优化一样,也许一个两个的优化,对于提升代码的运行效率意义不大,但是只要处处都能注意代码优化,总体来说对于提升代码的运行效率就很有用了。这个观点,在现在看来,是要进行代码优化的...转载 2018-11-22 12:49:29 · 243 阅读 · 0 评论 -
注解Annotation实现原理与自定义注解例子
注解Annotation实现原理与自定义注解例子什么是注解? 对于很多初次接触的开发者来说应该都有这个疑问?Annontation是Java5开始引入的新特征,中文名称叫注解。它提供了一种安全的类似注释的机制,用来将任何的信息或元数据(metadata)与程序元素(类、方法、成员变量等)进行关联。为程序的元素(类、方法、成员变量)加上更直观更明了的说明,这些说明信息是与程序的业务...转载 2018-10-15 16:40:32 · 123 阅读 · 0 评论 -
HashMap 的底层原理(JDK1.7以前)
1. HashMap的数据结构数据结构中有数组和链表来实现对数据的存储,但这两者基本上是两个极端。数组数组存储区间是连续的,占用内存严重,故空间复杂的很大。但数组的二分查找时间复杂度小,为O(1);数组的特点是:寻址容易,插入和删除困难;链表链表存储区间离散,占用内存比较宽松,故空间复杂度很小,但时间复杂度很大,达O(N)。链表的特点是:寻址困难,插入和删除容易。哈希表...转载 2018-10-18 11:46:09 · 302 阅读 · 0 评论 -
java中AWT和SWing的区别与联系
AWT和Swing都是java中的包。AWT(Abstract Window Toolkit):抽象窗口工具包,早期编写图形界面应用程序的包。Swing :为解决 AWT 存在的问题而新开发的图形界面包。Swing是对AWT的改良和扩展。 AWT和Swing的实现原理不同: AWT的图形函数与操作系统提供的图形函数有着一一对应的关系。也就是说,当我们利用 AWT构件...转载 2018-10-14 03:56:08 · 949 阅读 · 0 评论 -
JAVA多线程----取钱问题
“生产者-消费者”模型,也就是生产者线程只负责生产,消费者线程只负责消费,在消费者发现无内容可消费时则睡觉。下面举一个比较实际的例子——生活费问题。 生 活费问题是这样的:学生每月都需要生活费,家长一次预存一段时间的生活费,家长和学生使用统一的一个帐号,在学生每次取帐号中一部分钱,直到帐号中没钱时 通知家长存钱,而家长看到帐户还有钱则不存钱,直到帐户没钱时才存钱。在这个例子中,...转载 2018-10-14 03:54:47 · 598 阅读 · 0 评论 -
JVM堆和栈的区别
物理地址堆的物理地址分配对对象是不连续的。因此性能慢些。在GC的时候也要考虑到不连续的分配,所以有各种算法。比如,标记-消除,复制,标记-压缩,分代(即新生代使用复制算法,老年代使用标记——压缩)栈使用的是数据结构中的栈,先进后出的原则,物理地址分配是连续的。所以性能快。内存分别堆因为是不连续的,所以分配的内存是在运行期确认的,因此大小不固定。栈是连续的,所以分配的内存大小要在...转载 2018-10-15 17:37:07 · 2755 阅读 · 0 评论 -
Java ConcurrentModificationException异常原因和解决方法
在前面一篇文章中提到,对Vector、ArrayList在迭代的时候如果同时对其进行修改就会抛出java.util.ConcurrentModificationException异常。下面我们就来讨论以下这个异常出现的原因以及解决办法。 以下是本文目录大纲: 一.ConcurrentModificationException异常出现的原因 二.在单线程环境下的解决办法 三....转载 2018-07-17 16:34:21 · 7941 阅读 · 2 评论 -
jdk8-lambda表达式的使用
1, 遍历list集合 List<Integer> list = new ArrayList<>(); list.add(1); list.add(2); list.add(3); // 直接打印 list.forEach(System.out::println); // 取值分别操作 list.forEach(i -> { System.out...转载 2018-07-11 11:52:37 · 423 阅读 · 0 评论 -
java多线程的常见例子
一.相关知识: Java多线程程序设计到的知识:(一)对同一个数量进行操作(二)对同一个对象进行操作(三)回调方法使用(四)线程同步,死锁问题(五)线程通信 等等 二.示例一:三个售票窗口同时出售20张票; 程序分析:1.票数要使用同一个静态值 2.为保证不会出现卖出同一个票数,要java多线程同步锁。设计思路:1.创建一个站台类Station,继承Thread,重写run方法,在run方法里面...转载 2018-03-22 00:52:40 · 36240 阅读 · 12 评论