
java
文章平均质量分 66
yuan_qh
不定期分享一些学习心得,欢迎大家关注
展开
-
一篇文章让你弄懂到底什么是classpath
classpath其实就是一个路径而已,我们经常在spring的配置文件中这样写:<property name="configLocation" value="classpath:mybatis/SqlMapConfig.xml" />这样配置完之后spring就知道mybatis配置文件所在的地方。那么?这个classpath指向的地方到底是哪里呢?**classpath...原创 2020-03-14 21:34:49 · 663 阅读 · 0 评论 -
一篇文章彻底解决浏览器发送url带中文参数乱码问题
说明:本文适用于url传参时中文乱码问题。(也就是基于get请求方式)url传参可以是手动在地址框输入参数:https://cn.bing.com/search?q=中文PC=U316&FORM=CHROMN也可以是服务器的重定向拼接参数:return "redirect:/info/getProject?schoolName=" + encodeTwice;也...原创 2020-03-13 19:44:47 · 4138 阅读 · 0 评论 -
springboot 2.x工程打war包,并发布到tomcat容器。
软件版本:idea:2019.1 ultimatespringboot: 2.2.5tomcat:9.0.31一、修改默认打包方式,讲打包方式改为war <version>0.0.1-SNAPSHOT</version> <name>infocollection</name> <description>Demo ...原创 2020-03-12 22:04:11 · 862 阅读 · 1 评论 -
面试必问CAS,你懂了吗?
在我的另一篇文章中,我对CAS的原理,优缺点,适用场景进行了分析,可以参见这一篇文章乐观锁实现之CAS,在这篇文章中,我简要的讲一下CAS操作在我们多线程编程中怎么使用,以及为什么要用:话不多说,直接上代码(Talk is cheap. Show me the code)package cn.yqh.interview;import java.util.concurrent.Coun...原创 2019-08-24 14:31:02 · 471 阅读 · 0 评论 -
双重校验锁实现单例模式
package cn.yqh.interview; /** * @author 袁 * @create 2019/8/21-11:48 */ public class Singleton { private static volatile Singleton singleton = null; priva...原创 2019-08-21 15:11:04 · 25322 阅读 · 17 评论 -
乐观锁和悲观锁
一、乐观锁和悲观锁只是一种思想,而不是一种实现方式二、为什么要使用锁?数据库是一个多用户使用的共享资源,比如一个用户表t_user,两个浏览器前面的人登录了同个一个账号,把电话号码改了。当多个用户并发地存取数据时,在数据库中就会产生多个事务同时存取同一数据的情况。若对并发操作不加控制就可能会读取和存储不正确的数据,破坏数据库的一致性(脏读,不可重复读,幻读等),可能产生死锁。为了解决这个...原创 2019-08-22 12:48:51 · 236 阅读 · 0 评论 -
用AtomicStampedReference解决ABA问题
在运用CAS做Lock-Free操作中有一个经典的ABA问题:线程1准备用CAS将变量的值由A替换为B,在此之前,线程2将变量的值由A替换为C,又由C替换为A,然后线程1执行CAS时发现变量的值仍然为A,所以CAS成功。但实际上这时的现场已经和最初不同了,尽管CAS成功,但可能存在潜藏的问题,例如下面的例子:现有一个用单向链表实现的堆栈,栈顶为A,这时线程T1已经知道A.next为B,...转载 2019-08-22 12:52:20 · 187 阅读 · 0 评论 -
HashMap是如何实现的(底层原理)以及面试 常见问题
一、HashMap底层原理简述HashMap是Java开发过程中使用最多的集合之一,其中的put(key,value)和get(key)方法,是我们在使用HashMap时最常使用的方法,但是底层的原理我们可能就了解得比较少了,或许你知道HashMap是使用hash算法,然后基于数组+链表+红黑树来实现的,或许还知道HashMap内部数组的初始长度为16,并且还能自动扩容.今...原创 2019-08-26 16:17:48 · 1582 阅读 · 0 评论 -
十大经典排序算法的java实现以及原理讲解
首先,这篇博客的来源是因为我在学习排序算法的时候,看到了一位大神写的十大经典排序算法,写的真的很不错,可是遗憾的是没有java版本实现,所以我按照每个排序来写了一个java版本实现,如有错误,欢迎指正。所以说,学习这篇文章时,建议和十大经典排序算法一起看。1、冒泡排序package cn.yqh.interview.sort;/** * @author 袁 * @cre...原创 2019-08-29 16:01:03 · 2069 阅读 · 2 评论 -
java中的基本数据类型的转换,最全讲解,不看后悔!!!
Java中,经常可以遇到类型转换的场景,从变量的定义到复制、数值变量的计算到方法的参数传递、基类与派生类间的造型等,随处可见类型转换的身影。Java中的类型转换在Java编码中具有重要的作用。首先,来了解下数据类型的基本理解:数据是用来描述数据的种类,包括其值和基于其值基础上的可进行的操作集合。Java中数据类型主要分为两大类:基本数据类型和引用数据类型。基本数据类型共有8种,分别是:布尔...转载 2019-09-18 18:56:16 · 1036 阅读 · 0 评论 -
详解Java中的clone方法 -- 原型模式
Java中对象的创建clone 顾名思义就是 复制 , 在Java语言中, clone方法被对象调用,所以会复制对象。所谓的复制对象,首先要分配一个和源对象同样大小的空间,在这个空间中创建一个新的对象。我们回顾一下:在java语言中,有几种方式可以创建对象呢? 使用new操作符创建一个对象 使用clone方法复制一个对象 那么这两种方式有什么相同和不同呢?ne...转载 2019-09-19 20:47:54 · 195 阅读 · 0 评论 -
浅谈jdk中javap工具的使用
今天在探究多线程的时候,想验证一下count++;(int count;)是不是一个原子操作,后来看了别人的解释才发现可以用javap来进项查看:那么,一、首先我们得了解什么是javap,它可以用来干啥子?大多数Java程序员知道他们的程序不是编译成本机代码的。实际上,程序被编译成中间字节代码,由Java虚拟机来解释执行。然而,很少程序员注意一下字节代码,因为他们使用的工具不鼓励他们这...原创 2019-08-24 13:44:10 · 961 阅读 · 1 评论 -
java多线程编程之CountDownLatch类的使用
一、CountDownLatch介绍CountDownLatch是一个同步工具类,它允许一个或多个线程一直等待,直到其他线程执行完后再执行。例如,应用程序的主线程希望在负责启动框架服务的线程已经启动所有框架服务之后执行。用给定的计数 初始化 CountDownLatch。由于调用了 countDown() 方法,所以在当前计数到达零之前,await 方法会一直受阻塞。之后,会释放所有等待的线程...原创 2019-08-24 13:02:01 · 199 阅读 · 0 评论 -
个人常用,idea快捷键记录
ctrl+alt+u :显示类继承树,还可以显示类中的方法,属性,变量等ctrl+f12:显示类中的方法,相当于打开structure窗口与一眼ctrl+shift+enter:自动补全末尾分号,如果有分号则向下产生一行,ctrl+enter:向上产生一行alt+回车:导入包,自动修正Ctrl+N 查找类Ctrl+Shift+N 查找文件Ctrl+Alt+L 格式化代码...原创 2019-08-24 09:52:45 · 135 阅读 · 0 评论 -
Eclipse 控制台输入中文再读出来乱码的解决方案
今天写了一个程序,发现怎么都调不通,后来debug发现,原来是eclipse又调皮了,主要问题在于,当我用new Scanner().next();输入一个中文字符串进去时,eclipse获取到的这个字符串竟然是乱码的,以前都没有这样的情况;下面用一段测试代码展示一下这个问题:package cn.yqh.main;import java.util.Scanner;publi...原创 2018-10-13 12:30:24 · 2107 阅读 · 1 评论 -
读取xml和properties文件
.properties配置文件经常出现在DBCP连接池的使用中,我们通过读取此文件来获得1、反射须要的类名2、url 3、root 4、password.xml 文件出现在C3P0连接池的使用中,作为配置文件,当然,C3P0也支持使用.properties 作为配置文件,我们同样须要从.xml文件中获取上述四个变量的值那么,如何读取这两种配置文件呢?.properties:1、基于...原创 2018-10-13 13:16:27 · 936 阅读 · 0 评论 -
java基础杂记
1、list接口的特点:有序,带索引,可以有重复的元素的集合2、set接口的特点:无序,无索引,不能够有重复元素的集合3、ArrayList的底层是用数组实现的,ArrayList的长度可变,4、LinkedList的底层是用链表实现的,5、数组查询快,但是增删慢,链表查询慢,但是增删快,由于以后做开发的时候大部分都是需要进行遍历,ArrayList用的要稍微多一点。6、Has...原创 2018-10-13 13:18:33 · 132 阅读 · 0 评论 -
jdbc基础
案例1-通过jdbc完成单表的curd操作:CURD即创建(create),更新(update),读取(retrieve),删除(delete)需求:对分类表完成操作.技术分析:jdbc///////////////////////jdbc:java操作数据库.jdbc是oracle公司指定的一套规范(一套接口)驱动:jdbc的实现类.由数据库厂商提供....原创 2018-10-13 13:19:58 · 126 阅读 · 0 评论 -
关于equals与==的比较
最近在学习中遇到一个问题,两个值相同的Integer型值进行==和equals比较时,发现了其中一些诡异的地方,然后就学习了一下有关Integer自动拆装箱和常量池的概念 先来一个demo说明诡异在何处:package cn.java.test;public class demo { public static void main(String[] args) { S...原创 2018-09-29 12:27:24 · 262 阅读 · 1 评论 -
java学习路线图
这个图说明了java的整个学习路线,大家看看自己学到哪了,还没有学的赶紧学起来吧,生命不息,写代码不止,hia~~hia~~hia~~hia~~转载 2018-11-26 12:52:45 · 129 阅读 · 0 评论 -
不能够在jsp页面取到页面传到后台的参数(对象中的参数)(模型驱动加对象驱动)
今天遇到了一个问题,我用ssh框架写了一个项目,后台的数据库是这样的:Borrow对象:package cn.yqh.domain;import java.util.Date;import java.util.Set;public class Borrow { /* borrowID Numeric(12,0) 借书顺序号【主键】 rdID Int 读者序号【外键TB...原创 2018-12-02 16:16:55 · 912 阅读 · 1 评论 -
代理对象之jdk代理和cglib代理小结
首先:为什么要使用代理对象,直接拿对象来用不好吗?答:使用代理对象的目的是在别人源代码的基础之上,并且在不改变别人的源代码的情况下,对一段代码进行增强以达到我们想要的目的,所以这才有了代理对象一说。 动态代理静态代理由于硬编码,难以应对真实对象和调用方法灵活多变的情况,动态代理则对这些场景应付自如。动态代理主要有两种实现方式:1、JDK自带的Proxy 2、CGLIB字节码生成库...转载 2019-02-25 16:37:45 · 243 阅读 · 0 评论 -
git常用命令
git一起的总命令数量很多,但是我经常用的就很只有那么几个,而且很好用,这里主要记载一下本地玩转git的一些命令,对于自己平时写一个小软件啊,写个论文啊什么的还是很有帮助的:1.创建初始仓库:首先在你想要的位置新建一个文件夹,比如我这里就叫新建文件夹,懒得改名字了:点击进去文件夹内部:当你装好git之后,你点击右键会出现一个Git bash here这里我们右键,然后...原创 2019-07-21 13:43:35 · 206 阅读 · 0 评论 -
ThreadPoolExecutor线程池submit() 和 excute()区别,顺便带上Runnable和Callable
1、 实现Runnable接口和Callable接口的区别如果想让线程池执行任务的话需要实现的Runnable接口或Callable接口。 Runnable接口或Callable接口实现类都可 以被ThreadPoolExecutor或ScheduledThreadPoolExecutor执行。两者的区别一:在于 Runnable 接口不会返回结果但 是 Callable 接口可以返回...原创 2019-08-23 20:53:32 · 2389 阅读 · 0 评论 -
Eclipse安装主题插件(color themes)
前一段时间由于好奇,自己动手吧eclipse的背景色和字体改成了网上推荐 的豆沙色,然后今天又发现了一个背景字体网站,挺不错的:http://easycolor.cc/eclipse/list.html里面有很多很好的 配色,看得人眼花缭乱,所以我又在好奇心的驱使下,下载了一个配色文件 ,并且在File->Import->General->Preference中将附件中的ep...原创 2018-10-05 00:35:51 · 12725 阅读 · 4 评论