![](https://img-blog.csdnimg.cn/20201014180756780.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
Java
文章平均质量分 87
记录java学习中的日志
Yungang_Young
这个作者很懒,什么都没留下…
展开
-
@Transactional使用中的三类坑
我们知道事务有声明式事务和编程式事务两种,编程式事务代码侵入较高,声明式事务侵入较低,在项目中常有使用,然而,不正确的使用声明式事务,可能让代码未能按照我们的预期执行。原创 2024-04-15 17:31:16 · 595 阅读 · 1 评论 -
使用Spring AOP实现对外接口的日志自动打印
相信我们都有过这样的经历,在提供第三方对外接口时,为了防止推诿扯皮,我们会在自己接口被调用时日志打印一下第三方的调用参数,再在业务逻辑结束返回时再打印一下给第三方的返回参数,这样在后续遇到bug时,能用日志方便排(shuai)查(guo)\原创 2024-02-07 17:02:23 · 560 阅读 · 3 评论 -
Java使用ClassLoader读取外部json文件
我们有时候会遇到这样一种业务场景:某个对象是变化的,在不同项目的部署中,可能需要更改对象中的某个属性,这时如果我们将该对象写在代码里,这样不仅寻找不便,部署后也不能随便修改(修改后又要重新打包),这就需要将该对象解耦,单独抽离出来,做成一个json文件,放在resource中,这样即使项目上线后,我们也能随时改变,只需要重启即可。我们将该对象写成json格式,放在resources下的outside包中,内部是标准的json格式文件(略)。原创 2023-07-06 20:11:31 · 423 阅读 · 0 评论 -
阻塞队列ArrayBlockingQueue,LinkedBlockingQueue源码剖析
下一步,我们考虑阻塞的实现,队列存在两种等待条件,一种是队列空时,出队需要等待,一种是队列满时,入队需要等待,synchronized只有一个等待条件,不符合要求,因此使用ReentrantLock。这是由于使用了两把锁,若入队阻塞线程都由出队线程唤醒,那么,出队线程在出队后,又要去获得入队锁唤醒线程,那么这两把锁就相当于还是一把,因为每次操作都要同时获得两把锁。可以发现,链表结构的入队与数组结构的入队大不相同,首先,链表入队使用的是入队锁,其次,入队阻塞线程不完全由出队线程唤醒,而是可以由入队线程唤醒。原创 2022-09-14 14:25:32 · 354 阅读 · 1 评论 -
从JVM角度理解Java并发(下)
本文内容主要参考黑马JUC并发编程,《Java并发编程的艺术》,所有代码可在github我的主页下载。在第二章我们学习了锁的相关知识,认识到了Moniter,实际上,正是它保证了临界区代码的原子性(即使线程切换,它也能占据临界区的锁,不会被干扰),JMM主要体现在以下三个方面,本章我们继续介绍后续的可见性和有序性。前面学习的synchronized能有效实现原子性,可见性,以及能从逻辑上实现有序性(毕竟代码块内相当于单线程,即使无序也不会出现线程干扰),但synchronized始终是锁,有没有更轻量的方式原创 2022-08-10 11:43:31 · 277 阅读 · 0 评论 -
从JVM角度理解Java并发(上)
本文内容主要参考黑马JUC并发编程,《Java并发编程的艺术》,所有代码可在github我的主页下载。我们知道,操作系统把线程分为了初始、可运行、运行、终止、阻塞五种状态。在Java中,把线程分为新建、可运行、阻塞、等待、限时等待、终止六种状态,其中可运行又可分为就绪和运行两种状态,如下图所示,后续将围绕线程状态的转化介绍各种线程操作方法。有三种常见创建线程的方式,一种是重写run方法(继承),另外两种均采用接口(组合)。我们先来看看采用重写的方式:线程start以后,会自动调用线程的run方法执行原创 2022-07-09 16:50:50 · 300 阅读 · 0 评论 -
以实战深入理解IOC与AOP思想
文章目录一、 ioc1.ioc思想2.使用配置文件实现ioc一、 ioc1.ioc思想将对象的创建交由Spring框架进行管理,这种将传统对象的创建流程变为框架创建和管理的思想,叫做控制反转。原本创建对象的方式,是通过new由程序控制的。写一个userDao接口,用于去数据库查询用户信息public interface UserDao { void getUser();}由于项目数据库不一样,所以实现类有所区别,假设有SQL和MongoDB的实现(MongoDB略)。public原创 2022-05-26 15:27:36 · 435 阅读 · 0 评论 -
git学习笔记
文章目录一,git安装二,基础命令1.获取git仓库一,git安装二,基础命令1.获取git仓库有两种方法可以获取仓库:本地目录转git仓库 和 其他服务器克隆一个git仓库先来看看本地怎么创建仓库:首先进入到需要版本管理的文件夹,使用cmd命令git init该命令会初始化一个.git的子目录看看怎么从其他服务器克隆一个git仓库...原创 2022-05-18 00:49:24 · 532 阅读 · 0 评论 -
计算机网络基础
文章目录1.网络分层2.三次握手3.TCP与UDP的区别4.输入一个url之后发生了什么1.解析网址2. 向DNS服务器查询Web服务器的IP地址1.网络分层2.三次握手SYN:携带这个标志的包正在发起连接请求FIN:携带这个标志的包正在请求终止连接3.TCP与UDP的区别TCP基于连接,UDP不需要连接4.输入一个url之后发生了什么1.解析网址url中包含了协议、服务器名、访问的路径(URI)等。需要根据这些信息生成HTTP请求消息,包括请求行(包含方法get post, U原创 2021-12-09 09:37:22 · 1954 阅读 · 0 评论 -
java面试-基础部分
文章目录1.面向对象2.JDK,JRE,JVM区别和联系3.==和equals1.面向对象什么是面向对象?与面向过程有什么不同?面向过程更注重事情的每一个步骤及顺序,面向对象更注重事情有哪些参与者(对象),及各自需要做什么。封装: 明确标识出允许外部使用的所有成员函数和数据项,内部细节对外部调用透明继承: 继承基类的方法,做出自己的改变或拓展多态: 基于对象所属类的不同,外部对同一个方法的调用,实际执行的逻辑不同。继承,方法重写,父类引用指向子类对象2.JDK,JRE,JVM区别和联系原创 2021-11-10 15:01:25 · 1140 阅读 · 0 评论 -
java面试-虚拟机部分
文章目录1.什么是字节码?使用字节码的好处是什么?2.java类加载器有哪些3.双亲委派模型4.GC如何判断对象可以被回收1.什么是字节码?使用字节码的好处是什么?java中的编译器和解释器:java中引入了虚拟机的概念,即在机器和编译程序之间加入了一层抽象的虚拟的机器。这台机器在任何平台都提供给编译程序一个共同的接口。编译程序只需要面向虚拟机,生成虚拟机能够理解的代码,然后由解释器来将虚拟机代码转换为特定系统的机器码执行。在java中,这种供虚拟机理解的代码叫做字节码(.class文件),它不面向原创 2021-11-10 14:58:21 · 1063 阅读 · 0 评论 -
docker教程
文章目录一、安装docker二、拉取redis三、配置文件更改四、远程连接一、安装docker1.安装yum-utils包yum install -y yum-utils2.docker阿里镜像源sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo3.安装dockeryum install docker-ce docker-ce-cli conta原创 2021-10-15 16:05:57 · 310 阅读 · 0 评论 -
使用conda配置tensorflow环境
目录前置条件:操作步骤:1.创建虚拟环境2.激活虚拟环境3.安装tensorflow4.配置pycharm前置条件:python, anaconda操作步骤:1.创建虚拟环境conda create -n tenserflow可以看到Anaconda3/envs下多了一个文件夹2.激活虚拟环境conda activate env_name# 当然,关闭虚拟环境的操作为conda deactivate3.安装tensorflowconda install tensorflow原创 2021-09-22 20:04:40 · 4154 阅读 · 0 评论 -
maven超详细入门,从下载到配合新版idea使用
文章目录1.maven下载与配置2.依赖与插件3.maven操作命令4.自定义骨架5.依赖传递与统一聚合管理1.maven下载与配置环境搭建、更改maven配置源、配置本地仓库、idea全局配置maven2.依赖与插件在哪里寻找依赖、插件、怎样使用插件(以tomcat为例)3.maven操作命令clean compile pakage4.自定义骨架5.依赖传递与统一聚合管理...原创 2021-06-24 00:00:21 · 305 阅读 · 1 评论 -
Linux(Ubuntu)环境下构建JDK12编译环境(超详细!)
文章目录一、前期准备1.安装OpenJDK122.下载前置工具3.下载编译jdk12的jdk11二、进行编译1.编译前配置2.开始编译三、使用自己编译的JDK1.进行全局配置2.验证是否生效注意:编译jdk很吃配置!!!所以一定要把虚拟机配置调高进行,我的虚拟机运行内存是8G,分配空间50G(后序编译文件占20G左右)一、前期准备1.安装OpenJDK12官网地址:https://hg.openjdk.java.net/jdk/jdk12/点击左侧栏browse,下载zip文件解压到文件夹准原创 2021-05-19 15:56:48 · 966 阅读 · 1 评论 -
解决MyEclipse2017配置tomcat出现端口无效问题
解决MyEclipse2017配置tomcat出现端口无效问题首先,点击Window->Servers->Runtime Environments点击add,添加你的tomcat完了后点击启动tomcat会立马显示报错,说的是端口无效我查阅了很多方法,说是改tomcat的端口号,可是新版本MyEclipse根本无法进入到网上所说的页面,只好从tomcat的配置文件更改进入到tomcat的server.xml文件会发现Server port这个端口默认为-1,正是这个端口导原创 2020-10-14 21:46:19 · 1543 阅读 · 0 评论