
javaee
文章平均质量分 56
yuan_qh
不定期分享一些学习心得,欢迎大家关注
展开
-
localhost和127.0.0.1不同源的问题
昨天晚上调了一个别人的代码,通过tomcat跑起来了,网页也可以进行正常的访问,但是,出现了一个bug,我在浏览器输入localhost:8080/login.html,这个时候,页面会向tomcat发请求加载一个验证码到页面,随即把这个验证码存到session中,以便于登录时的校验,问题出就出在,验证码生成了,也存到session中了,但是当登录请求发出时,后台的session中取不...原创 2019-04-28 17:35:56 · 3161 阅读 · 4 评论 -
ThreadPoolExecutor线程池submit() 和 excute()区别,顺便带上Runnable和Callable
1、 实现Runnable接口和Callable接口的区别如果想让线程池执行任务的话需要实现的Runnable接口或Callable接口。 Runnable接口或Callable接口实现类都可 以被ThreadPoolExecutor或ScheduledThreadPoolExecutor执行。两者的区别一:在于 Runnable 接口不会返回结果但 是 Callable 接口可以返回...原创 2019-08-23 20:53:32 · 2389 阅读 · 0 评论 -
java多线程编程之CountDownLatch类的使用
一、CountDownLatch介绍CountDownLatch是一个同步工具类,它允许一个或多个线程一直等待,直到其他线程执行完后再执行。例如,应用程序的主线程希望在负责启动框架服务的线程已经启动所有框架服务之后执行。用给定的计数 初始化 CountDownLatch。由于调用了 countDown() 方法,所以在当前计数到达零之前,await 方法会一直受阻塞。之后,会释放所有等待的线程...原创 2019-08-24 13:02:01 · 199 阅读 · 0 评论 -
浅谈jdk中javap工具的使用
今天在探究多线程的时候,想验证一下count++;(int count;)是不是一个原子操作,后来看了别人的解释才发现可以用javap来进项查看:那么,一、首先我们得了解什么是javap,它可以用来干啥子?大多数Java程序员知道他们的程序不是编译成本机代码的。实际上,程序被编译成中间字节代码,由Java虚拟机来解释执行。然而,很少程序员注意一下字节代码,因为他们使用的工具不鼓励他们这...原创 2019-08-24 13:44:10 · 961 阅读 · 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 评论 -
同一个spring配置文件applicationContext.xml中只能够配置一个context:property-placeholder
今天在写代码的时候,在applicationContext.xml中配置了两个<context:property-placeholder />标签来读取两个不同的properties配置文件,结果一启动服务器就报错,后来百度才发现,原来一个applicationContext.xml文件里面只能够配置一个<context:property-placeholder />标签,...原创 2019-01-02 22:28:56 · 862 阅读 · 0 评论 -
略谈spring容器和springmvc容器
首先给出今天思考容器问题的原因:今天在解决我的一个小ssm框架的硬编码问题的时候出了问题:图中红色框的三个参数就是我编程的时候的硬编码问题,由于写死在程序中,不利于以后的修改,所以我通过把这三个参数提取到resources.properties中,然后在Spring框架的applicationContext.xml中利用标签<context:property-placehol...原创 2019-01-02 22:06:43 · 570 阅读 · 0 评论 -
ssm框架配置文件详解,(分模块配置)
通过maven创建一个web工程,则经过修改之后会是如下的目录结构:每个目录的含义我就不一一介绍了,这不是本次讨论的重点,创建好之后,我们在src/main/resources资源目录下加入以下配置文件: 一共6个,最后加上一个web.xml的配置,就OK了,现在来详解这些配置文件的内容:sqlMapConfig.xml空文件即可:<?xml version...原创 2019-01-02 12:33:10 · 6134 阅读 · 0 评论 -
JSP与Servlet之间传值
Jsp与Servlet之间的传值有两种,一种是Jsp传值给Sevlet,另一种是Servlet传值给Jsp;使用request、response对象完成传值,具体实现如下:1.JSP传值给ServletJSP传值给Servlet有几种形式:Form表单传值,url传值,其他方式传值a、form表单传值:JSP页面有:<input type="radio" name="staf...转载 2018-10-13 13:17:27 · 2666 阅读 · 0 评论 -
不联网无法启动Struts2的解决方案
昨天在办公室完成了一个由Struts2写的小demo,然后去上课的时候,一运行发现有错,运行不出结果,还报一大堆错误,当时还以为是eclipse调皮了,怎么可能突然运行不了,后来百度了才知道是以为Struts2.xml配置的问题我工程中的Struts2配置为:这是eclipse自动帮我配的后来百度发现,只要把上面红线中的注释掉,然后打开struts2-core-2.xx...转载 2018-10-16 21:39:55 · 472 阅读 · 0 评论 -
eclipse保存jsp页面的时候出现save could not be completed解决方案
Eclipse中新建一个jsp页面文件默认的字符编码是ISO-8859-1:如果页面有中文的话,保存的时候会出现下面的错误:这时只需要把上面的三个iso-8859-1换成utf-8即可。问题解决,可是下一次遇到这个问题又得重新换一次,麻烦,所以下面介绍一个一劳永逸的方法:,打开Eclipse,点击Window弹出下拉列表,选择Preference:,找到Web,并点击J...原创 2018-10-17 17:08:18 · 5106 阅读 · 1 评论 -
关于Tomcat启动超时的错误
今天打开之前的项目的时候,出现了一个没见过的错误,Server Tomcat v7.0 Server at localhost was unable to start within 45 seconds. If the server requires more time, try increasing the timeout in the server editor.意思很明显,启动超时了...原创 2018-10-30 21:05:19 · 9927 阅读 · 0 评论 -
eclipse中复制导入的项目并且修改了项目名字,项目后面的括号显示原来项目的名字
eclipse中Tomcat导入项目并且修改了项目名字,把项目add到Tomcat上面,发现现在的项目后面带了个括号显示原来项目的名字,并且在访问的时候也只能用原来的项目名访问,怎么办呢? 1.打开你的项目目录,找到一个.project文件,打开后修改<name> test</name>中的值,将test修改成你要修改的名字 2.在项目目录下,打开.se...转载 2018-11-10 11:01:22 · 653 阅读 · 0 评论 -
由一个问题引起对hibernate的cascade和inverse的思考
今天在写一个web应用的时候,出现了一个错误,内容为:object references an unsaved transient instance - save the transient instanc意思就是我在保存(多表那一方)中的一个对象的时候,这个对象中的外键(即引用的另一个对象)还不存在,所以报了这个错,由于我的项目中存在两个表,并且是一对多的关系,所以要想解决这个错误,直接把(...原创 2018-11-07 19:45:55 · 155 阅读 · 0 评论 -
使用hibernate保存数据报错
控制台报错: ERROR org.hibernate.internal.SessionImpl - HHH000346: Error during managed flush [Batch update returned unexpected row count from update [0]; actual row count: 0; expected: 1] 由于存在隐藏表单进行...转载 2018-11-07 20:51:36 · 785 阅读 · 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 评论 -
ssh框架pom.xml
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0...原创 2019-01-01 22:07:57 · 264 阅读 · 0 评论 -
ssm框架pom.xml
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0...原创 2019-01-01 22:09:25 · 455 阅读 · 0 评论 -
十大经典排序算法的java实现以及原理讲解
首先,这篇博客的来源是因为我在学习排序算法的时候,看到了一位大神写的十大经典排序算法,写的真的很不错,可是遗憾的是没有java版本实现,所以我按照每个排序来写了一个java版本实现,如有错误,欢迎指正。所以说,学习这篇文章时,建议和十大经典排序算法一起看。1、冒泡排序package cn.yqh.interview.sort;/** * @author 袁 * @cre...原创 2019-08-29 16:01:03 · 2069 阅读 · 2 评论