- 博客(43)
- 资源 (8)
- 问答 (14)
- 收藏
- 关注
转载 Java 信任所有SSL证书(解决PKIX path building failed问题)
Java在请求某些不受信任的https网站时会报:PKIX path building failedjavax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification pat
2021-04-14 14:25:02
20615
5
原创 ReentrantReadWriteLock说明
ReentrantReadWriteLock线程安全的问题使用ReentrantLock就可以了,但是ReentrantLock是独占锁,只能有一个线程获取到锁,实际环境中可能会有读多写少的情况,此时ReentrantLock就满足不了了,而ReentrantReadWriteLock采用的读写分离的策略,允许多个线程获取读锁。读写锁内部维护了一个ReadLock和WriteLock,他们依赖于Sync实现具体功能。而Sync实现于AQS,也都实现了公平和非公平两种策略。AQS内部只维护了一个sta
2020-07-15 15:52:29
328
原创 ReentrantLock说明
ReentrantLockReentrantLock是基于AQS实现的可重入的独占锁,只有一个线程可以获取锁,如果获取锁的其他线程处于阻塞则会被放入AQS的等待队列。其内部有公平锁和非公平锁两种实现方式,都是对AQS的实现。如下类图,Sync实现与AQS,NonfairSync与FairSync继承与Sync分别代表非公平锁和公平锁的实现。默认创建(即构造函数未指定参数)的锁时非公平锁。这里AQS的state代表线程获取该锁的重入次数,默认情况下state状态为0,表示没有线程获取到锁。当一个线程第
2020-07-13 15:51:52
187
原创 AQS简单源码说明
AbstractQueuedSynchronizer所谓AQS,指的是AbstractQueuedSynchronizer,它提供了一种实现阻塞锁和一系列依赖FIFO等待队列的同步器的框架,ReentrantLock、Semaphore、CountDownLatch、CyclicBarrier等并发类均是基于AQS来实现的,具体用法是通过继承AQS实现其模板方法,然后将子类作为同步组件的内部类。变量waitStatus则表示当前Node结点的等待状态,共有5种取值CANCELLED、SIGNAL、CON
2020-07-07 15:46:26
145
原创 jvm参数记录(持续更新)
java -XX:+PrintFlagsInitial命令查看jvm本机的初始化参数-Xms:堆最小内存分配-Xmx:堆最大内存分配将堆的最小值-Xms参数与最大值-Xmx参数设置为一样即可避免堆自动扩展-XX:+HeapDumpOnOutOf-MemoryError:可以让虚拟机在出现内存溢出异常的时候Dump出当前的内存堆转储快照以便进行事后分析-Xoss:设置本地方法栈大小,由于Hotspot虚拟机不区分本地方法栈和虚拟机栈,所以此参数无效-Xss:设置虚拟机栈大小元空间相关-XX
2020-05-12 16:05:04
333
转载 JVM 堆 VS 本地内存
Java 的类实例一般在 JVM 堆上分配,而 Java 是通过 JNI 调用 C 代码来实现 Socket 通信的,那么 C 代码在运行过程中需要的内存又是从哪里分配的呢?C 代码能否直接操作 Java 堆?为了回答这些问题,我先来说说 JVM 和用户进程的关系。如果你想运行一个 Java 类文件,可以用下面的 Java 命令来执行java my.class这个命令行中的java其实是一个可执行程序,这个程序会创建 JVM 来加载和运行你的 Java 类。操作系统会创建一个进程来执行这个java
2020-05-11 16:14:13
1482
原创 macOS下编译openjdk12所踩得坑
macos编译openjdk12准备环境工具进行编译导入IDE准备环境工具在appstore上下载Xcode通过xcode-select --install 命令安装Command Line Tools for Xcode,验证工具的办法再执行此命令时会报此工具已安装的错误。这两个SDK提供了OpenJDK所需的CLang编译器以及M akefile中用到的其他外部命令。进行编译进入o...
2020-05-03 16:08:52
2601
原创 自定义HandlerMethodArgumentResolver获取请求参数
获取get中参数通过get请求过来自定义转换成指定类型 localhost:8080/MySSM/testModAttr.html?names={"id":"12","name":"xhj","money":"12.12"} public Object resolveArgument(MethodParameter parameter, ModelAndViewC
2018-06-08 13:54:03
3023
原创 链接收藏
https://www.cnblogs.com/wanghaoyuhappy/p/5267702.html tomcat配置https协议
2018-06-02 19:13:26
248
转载 JMS Session session = connection.createSession(paramA,paramB) 两个参数不同组合下的含义和区别
Session session = connection.createSession(paramA,paramB);paramA是设置事务,paramB是设置acknowledgment mode paramA 取值有:1、true:支持事务为true时:paramB的值忽略, acknowledgment mode被jms服务器设置为SESSION_TRANSACTED 。 ...
2018-05-04 14:19:56
340
原创 Java多线程线程安全
一、什么是线程安全我们所说的线程安全的话题都是基于一个变量会被多个线程访问的这样一个前提下,如果只是单线程应用自然就不会出现这种问题。一个变量被多个线程访问我们称这个变量是共享的。而一个变量在其生命周期中可以被修改,则称这个变量时可变的。网络上有很多人试图给线程安全下定义,林林总总反正很多,但是归根到底线程安全的核心点就是正确性。试想下,多个线程访问某个共享的可变的变量的时候,其目的就是为了得到一个
2016-10-20 11:34:12
368
原创 MyBatis执行sql原理
我们知道Mybatis是通过在配置文件中配置sql文,然后对应创建一个接口,通过调用接口的形式来执行sql的。但是接口并没有被实例化怎么就能被调用呢,知道动态代理的朋友肯定会想到是动态代理在背后操控这一切。动态代理先上一段简单的动态代理代码interface ArithmeticCalculator { int add(int i, int j); int sub(int i, int
2016-08-27 11:16:05
1632
转载 SpringMVC 之<mvc:default-servlet-handler />
优雅REST风格的资源URL不希望带 .html 或 .do 等后缀.由于早期的Spring MVC不能很好地处理静态资源,所以在web.xml中配置DispatcherServlet的请求映射,往往使用 .do 、 .xhtml等方式。这就决定了请求URL必须是一个带后缀的URL,而无法采用真正的REST风格的URL。 如果将DispatcherServlet请求映射配置为”/”,则Spring
2016-05-15 14:21:00
3799
原创 Spring MVC之视图
InternalResourceViewResolver对于视图这一块相信大家每天都在用,而且也都觉得用的很方便,而且用的最多的视图解析器应该都是这家伙: org.springframework.web.servlet.view.InternalResourceViewResolver, 这一点我跟大家都是一样的。以前也 从没想着说去了解下其原理是什么,今天没事就看了下源码,发现没什么好说的,还是
2016-05-12 20:48:53
393
原创 Spring MVC之@ModelAttribute详解
用法其实这个注解最多也就两个用处,第一个就是被该注解注释的方法会在相应的controller中的任何一个方法执行之前执行一遍,直接贴代码吧@ModelAttribute public void getUser(Map<String, Object> map){ User user=new User("xhj", "123456", "23"); map.put
2016-05-09 22:17:27
4016
原创 Spring MVC使用POJO以及servlet原生api作为参数
POJO作为参数在实际开发中前台传过来的参数很可能就是某个对象,此时我们可以在controller中对应的方法中以对象为参数,支持级联对象。<form action="testPojo" method="post">username:<input type="text" name="userName"/><br>password:<input type="password" name="pas
2016-05-08 15:19:34
411
原创 mybatis plugin
大家都是知道了,mybatis可以通过自定义插件实现分页功能,很多博客中都说过了,这是拦截器的形式。既然是拦截器实现的分页,那么拦截器拦截的是什么呢?拦截以后我们应该做什么呢?搞懂这两个问题就明白这个分页的拦截器是怎么回事儿了。其实拦截器不仅仅这点作用。进入正题。 mybatis官网中说明了,mybatis plugin可以拦截四个类系的对象:Executor,ParameterHandler,
2016-04-27 17:23:35
710
原创 SpringMVC之HiddenHttpMethodFilter 过滤器
用HiddenHttpMethodFilter 过滤器之前大家得先了解REST风格的URL,这里简单说一下。 我们常用的请求是post跟get,而REST风格的URL还有put跟delete请求,这四种请求对应的是数据库的CURD。put对应Create,post对应Update, get对应Read,delete当然对应delete了。 通常的浏览器都只是支持post跟
2016-04-26 20:49:26
5420
2
转载 Java网络编程-初识Socket
原文:http://www.sunnyang.com/410.htmlSocket套接字计算机网络通信的基本技术之一。大多数基于网络的软件,如浏览器、即时通讯工具(QQ)或者P2P下载(迅雷)都是基于Socket实现的。本文介绍了Socket的一些基础知识点,对UDP协议没有过多的涉及,简要分析了Socket和HTTP.Socket介绍在了解Socket之前,首先要了解什么是客户端/服务器(clie
2016-04-19 09:42:48
449
原创 SpringMVC之@RequestMapping
最近这段时间重新看了下关于springMVC这一块的东西,发现有些东西以前都忽略了,分阶段整理下。 @RequestMapping这个注解相信大家用的非常多了,基本上是用来写在方法上面映射路径用的。就像这样,此时如果你访问的路径是localhost:8080/SpringMvc/test就会执行下面的方法。@RequestMapping("test") public
2016-04-16 21:45:55
318
原创 各种排序
(1)基本思想:选择一个基准元素,通常选择第一个元素或者最后一个元素,通过一趟扫描,将待排序列分成两部分,一部分比基准元素小,一部分大于等于基准元素,此时基准元素在其排好序后的正确位置,然后再用同样的方法递归地排序划分的两部分。 (2)实例: (3)用java实现void quick_sort(int s[], int l, int r) { if (l <
2016-04-15 16:05:03
251
转载 @RequestBody
@RequestBody annotated parameters get linked to the HTTP request body. Parameter values are converted to the declared method argument type using HttpMessageConverters. This annotation indicates a metho
2016-02-29 21:33:03
284
原创 String.format
package junit.test;import java.util.Date;import java.util.Locale;import org.junit.Test;public class StringFormat {/*String.format()用法1、转换符%s: 字符串类型,如:"ljq"%b: 布尔类型,如:true%d: 整数类型(十进制),如:99%f: 浮点类
2016-02-16 16:40:12
236
转载 Spring 事务
一、Propagation (事务的传播属性)Propagation : key属性确定代理应该给哪个方法增加事务行为。这样的属性最重要的部份是传播行为。有以下选项可供使用:PROPAGATION_REQUIRED--支持当前事务,如果当前没有事务,就新建一个事务。这是最常见的选择。PROPAGATION_SUPPORTS--支持当前事务,如果当前没有事务,就以非事务方式执行。P
2016-01-29 14:15:30
219
转载 java Pattern和Matcher详解
结论:Pattern与Matcher一起合作.Matcher类提供了对正则表达式的分组支持,以及对正则表达式的多次匹配支持. 单独用Pattern只能使用Pattern.matcher(String regex,CharSequence input)一种最基础最简单的匹配。java正则表达式通过java.util.regex包下的Pattern类与Matcher类实现(建议在阅
2016-01-28 17:20:29
236
转载 DataOutputStream、DataInputStream
包装类DataOutputStream、DataInputStream为我们提供了多种对文件的写入和读取方法,如writeBoolean(),writeUTF(),writeChar,writeByte(),writeDouble()等和对应的read方法,这些方法极大的方便了我们的写入和读取操作,下面结合一个程序来探讨一下这些方法的使用。 import java.
2016-01-18 18:08:49
307
转载 EL表达式取值
1.EL表达式的语法格式很简单:以前编写jsp代码时,如果要获取表单中的用户名,一般使用 ,这样当然也可以获取到值,但是又把html代码和java代码混到一起,看起来比较乱套。现在使用EL表达式的话就比较简洁了:${param.name}就可以解决了。注意:${表达式} 表达式部分不需要加引号,如果写成 ${"param.name"} ,那么页面上显示出来的就不是表单中name的值了,而是
2016-01-17 16:26:55
1136
原创 UML箭头讲解
UML定义的关系主要有:泛化、实现、依赖、关联、聚合、组合,这六种关系紧密程度依次加强,分别看一下泛化概念:泛化是一种一般与特殊、一般与具体之间关系的描述,具体描述建立在一般描述的基础之上,并对其进行了扩展。在程序中是通过继承类实现的。比如狗是对动物的具体描述,在面向对象设计的时候一般把狗设计为动物的子类。Java里面就是继承表示方法:空心三角形箭头的实线,子类指向
2016-01-12 11:50:07
484
转载 volatile 关键字
用在多线程,同步变量。 线程为了提高效率,将某成员变量(如A)拷贝了一份(如B),线程中对A的访问其实访问的是B。只在某些动作时才进行A和B的同步。因此存在A和B不一致的情况。volatile就是用来避免这种情况的。volatile告诉jvm, 它所修饰的变量不保留拷贝,直接访问主内存中的(也就是上面说的A) =========================分割线1================
2016-01-11 15:34:47
292
转载 java内存计算
在Java中没有sizeof运算符,所以没办法知道一个对象到底占用了多大的空间,但是在分配对象的时候会有一些基本的规则,我们根据这些规则大致能判断出来对象大小。对象头对象的头部至少有两个WORD,如果是数组的话,那么三个WORD,内容如下:对象的HashCode,锁信息等到对象类型数据的指针数组的长度(如果是数组的话)规则首先,任何对象都是8字节对齐
2016-01-11 10:42:24
570
原创 Calendar 一些使用
日期取值在旧版本 JDK 的时代,有不少代码中日期取值利用了 java.util.Date 类,但是由于 Date 类不便于实现国际化,其实从 JDK1.1 开始,就更推荐使用 java.util.Calendar 类进行时间和日期方面的处理。这里便不介绍 Date 类的操作,让我们直奔主题吧,如何利用 Calendar 类取得现在的日期时间。由于 Calendar 的构造器方法被 protect
2015-12-25 20:41:41
442
转载 ServletConfig与ServletContext对象详解
ServletConfig与ServletContext对象详解一、ServletConfig对象 在Servlet的配置文件中,可以使用一个或多个标签为servlet配置一些初始化参数。(配置在某个servlet标签或者整个web-app下) 当servlet配置了初始化参数后,web容器在创建servlet实例对象时,会自动将这些初始化参数封装到ServletC
2015-12-21 14:14:08
367
转载 Java多线程中sleep,wait区别
sleep,wait区别这两个方法主要来源是,sleep用于线程控制,而wait用于线程间的通信,与wait配套的方法还有notify和notifyAll. 区别一:sleep是Thread类的方法,是线程用来 控制自身流程的,比如有一个要报时的线程,每一秒中打印出一个时间,那么我就需要在print方法前面加上一个sleep让自己每隔一秒执行一次。就像个闹钟
2015-12-17 13:35:57
383
转载 wait,notify,notifyAll详细介绍
装载:http://qifuguang.me/2015/10/23/wait-notify-notifyAll%E8%AF%A6%E7%BB%86%E4%BB%8B%E7%BB%8D/概述wait,notify和notifyAll方法是Object类的成员函数,所以Java的任何一个对象都能够调用这三个方法。这三个方法主要是用于线程间通信,协调多个线程的运行。wai
2015-12-17 11:35:27
539
原创 关于DefaultTypeConverter工作原理以及totype参数
大多数时候我们都用 StrutsTypeConverter来自定义类型转换器的,一来好理解而且方便。 今天自己写代码的时候使用的是DefaultTypeConverter这个类,其中有一个参数totype让我很郁闷,先贴代码。public class MyConversion extends DefaultTypeConverter{ @Override public Obj
2015-11-20 22:37:32
823
转载 ServletContext与ServletConfig的详解及差异
ServletContext与ServletConfig的详解及区别一、ServletContext详解ServletContext是servlet与servlet容器之间的直接通信的接口。Servlet容器在启动一个Web应用时,会为它创建一个servletContext对象。每个web应用有唯一的servletContext对象。同一个web应用的所有servlet对象共享一个
2015-06-21 16:41:01
422
原创 JDBC简单入门
JDBC是什么?JDBC API是一个Java API,可以访问任何类型表列数据,特别是存储在关系数据库中的数据。JDBC代表Java数据库连接。JDBC库中所包含的API任务通常与数据库使用:连接到数据库创建SQL或MySQL语句在数据库中执行SQL或MySQL查询查看和修改记录 先决条件:学习JDBC,需要在以下两
2015-05-03 22:30:16
368
转载 PreparedStatement和Statement区别
选择PreparedStatement还是Statement取决于你要怎么使用它们。对于只执行一次的SQL语句选择Statement是最好的. 相反, 如果SQL语句被多次执行选用PreparedStatement是最好的。 PreparedStatement: 数据库会对sql语句进行预编译,下次执行相同的sql语句时,数据库端不会再进行预编译了,而
2015-05-03 22:06:20
325
原创 Java对象内存占用情况分析
一个对象实例占用了多少字节,消耗了多少内存?这样的问题在c或c++里使用sizeof()方法就可以得到明确答案,在java里好像没有这样的方法(java一样可以实现),不过通过jmap工具倒是可以查看出一个对象的占用内存的大小,这里介绍一种通过分析java代码计算内存使用情况的方法。注意,一下讨论的情况都是基于32位机,不适用用64位机,JVM是sun的HotSpot,不同的虚拟机实现可能
2015-01-31 13:20:05
441
转载 内部类总结
java中的内内部类不是很好理解,但说白了其实也就是一个类中还包含着另外一个类如同一个人是由大脑、肢体、器官等身体结果组成,而内部类相当于其中的某个器官之一,例如心脏:它也有自己的属性和行为(血液、跳动)显然,此处不能单方面用属性或者方法表示一个心脏,而需要一个类而心脏又在人体当中,正如同是内部类在外部内当中 实例1:内部类的基本结构
2015-01-20 22:27:10
304
java,springcloud,springboot,Mybatis,springMD.rar
2020-12-30
spring+springmvc+mybatis+myeclispe+mysql继承项目
2016-06-24
transferFrom复制的东西都是空的
2016-12-17
安卓发带权限广播老是失败
2016-07-25
ProgressDialog的setOnKeyListener事件
2016-07-24
Android Studio模拟器发不了短信
2016-06-25
SpringMVC环境下listener初始化两次问题
2016-06-17
Springmvc配置DispatcherServlet
2016-04-19
spring配置文件中的路径问题
2016-04-14
spring aop xml文件配置问题
2016-02-26
关于jsp报错无法确定是哪个jsp文件
2016-02-26
关于clob插入mysql报如下错误
2016-02-22
Java socket编程基础概念问题
2016-01-14
Hiberbnate中@FieldResult 有什么作用
2016-01-05
线程问题,请问这样执行会有几个线程
2015-12-24
HIbernate中我没有指定id最后却有id生成
2015-12-23
TA创建的收藏夹 TA关注的收藏夹
TA关注的人