![](https://img-blog.csdnimg.cn/20201014180756926.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Java
文章平均质量分 74
My_Vina
不被金钱,他人和过去所打扰.
展开
-
Java线程的Interrupt方法与InterruptedException解析
线程阻塞状态与等待状态(当一个线程处于被阻塞或等待状态时,它暂时不活动,不允许任何代码且消耗最少的资源) 当一个线程试图获得一个内部的对象锁(而不是java.util.concurrent库中的锁),而该锁被其他线程持有,则该线程进入阻塞状态 当一个线程等待另一个线程通知调度器的一个条件时,它自己进入等待状态。在调用Object.wait方法或Thread.join方法,或者是等待java.util.concurrent库中的Lock或Condition时,就会出现这种情况。实..原创 2020-05-29 10:07:01 · 452 阅读 · 0 评论 -
Java的守护线程与非守护线程
Java分为两种线程:用户线程和守护线程所谓守护线程是指在程序运行的时候在后台提供一种通用服务的线程,比如垃圾回收线程就是一个很称职的守护者,并且这种线程并不属于程序中不可或缺的部分。因 此,当所有的非守护线程结束时,程序也就终止了,同时会杀死进程中的所有守护线程。反过来说,只要任何非守护线程还在运行,程序就不会终止。守护线程和用户线程的没啥本质的区别:唯一的不同之处就在于虚拟机的离开:如果用户线程已经全部退出运行了,只剩下守护线程存在了,虚拟机也就退出了。 因为没有了被守护者,守护线程也就没有工作原创 2020-05-29 09:31:48 · 199 阅读 · 0 评论 -
跳表(跳跃表)(SkipList)的java实现
跳表的详细数据结构解释见如下blog:跳跃表Skip List的原理和实现(Java)参照上述博文的实现如下:package com.foraixh.datastructure;import java.util.Random;/** * @author myvina@qq.com * @date 2020/5/19 19:28 * @usage 跳跃表的简单实现 */public class SkipList<V> { /** * 跳跃表的头原创 2020-05-19 21:26:22 · 625 阅读 · 0 评论 -
如何正确使用redis分布式锁
什么是分布式锁分布式锁可以理解为:控制分布式系统有序的去对共享资源进行操作,通过互斥来保持一致性。实现原理 互斥性 安全性 避免死锁 保证加锁和解锁操作是原子性操作 使用redis实现分布式锁java代码如下:import org.springframework.data.redis.core.RedisTemplate;import org.springframework.data.redis.core.ValueOperations;impo原创 2020-05-13 23:09:04 · 255 阅读 · 0 评论 -
关于IDEA自动生成GET和SET方法时候的一些问题
一个java简单对象类有如下属性:使用alt+insert自动生成get和set方法时,生成的代码会是如下:此时,前后端交互时,前端post传过来的json值如果有isDictionaryValued:true时,springmvc自动生成这个java对象时,会去json中寻找dictionaryValued的值而不是isDictionaryValued的值。...原创 2020-03-19 15:26:11 · 1042 阅读 · 0 评论 -
02-JVM内存模型:虚拟机栈与本地方法栈
02-JVM内存模型:虚拟机栈与本地方法栈原创 2019-12-29 21:18:12 · 134 阅读 · 0 评论 -
01-JVM内存模型:程序计数器
01-JVM内存模型:程序计数器原创 2019-12-29 21:14:12 · 93 阅读 · 0 评论 -
Java将文件夹内所有文件及目录压缩为tar
打包 思路 准备输出流 FileOutputStream BufferedOutputStream TarOutputStream 准备输入流 FileInputStream BufferedInputStream 将文件打包为tar 代码 import org.apache.commons.compress...原创 2019-11-04 22:43:07 · 1978 阅读 · 1 评论 -
JavaBean学习总结
1. JavaBean技术 JavaBean: 是一些可移植,可重用,并可以组装到应用程序中的Java类 JavaBean: 较好地实现后台业务逻辑和前台表示逻辑的分离,使得JSP程序更加可读和易维护2. JavaBean的设计 命名规范: 1)JavaBean类打包存放,并声明为public类 ...原创 2018-04-07 14:42:41 · 449 阅读 · 0 评论 -
JDBC连接MySQL数据库
以下为JDBC连接MySQL数据库的一个简单示例:package MysqlConnection;import java.sql.*;public class Test { public static void main(String[] args) { // https://blog.csdn.net/javaniuniu/article/details/52403509 tr...原创 2018-04-07 14:52:33 · 123 阅读 · 0 评论 -
JSP+Servlet+JavaBean模式 -- 简易登录注册模型
模式分析:对于Jsp来说:Model层:实现系统的业务逻辑,即javaBean部分View层:负责与用户交互,即在界面上展示数据对象给用户,即html,jspControl层:Model与View之间沟通的桥梁,它可以分派用户的请求并选择恰当的视图以用于显示,同时它也可以解释用户的输入并将它们映射为模型层可执行的操作,当然就是Servlet的职责了。Model层代码:User.Javapackag...原创 2018-04-08 09:07:04 · 708 阅读 · 0 评论 -
IntelliJ IDEA 源值1.5已过时,将在未来所有版本中删除
idea工具编译运行代码的时候总是提示这个问题,以下是简书@AnaKinSky的解释与解决方案:原因:IDEA默认把项目的源代码版本设置为jdk1.5,目标代码设置为jdk1.5解决方案:1修改Maven的Settings.xml文件添加如下内容<profile> <id>jdk-1.8</id> <activation> <a...转载 2018-04-08 19:21:55 · 148 阅读 · 0 评论 -
ServletConfig讲解
配置Servlet初始化参数 在Servlet的配置文件web.xml中,可以使用一个或多个<init-param>标签为servlet配置一些初始化参数。例如:<?xml version="1.0" encoding="UTF-8"?><web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee" xml...原创 2018-04-08 20:34:33 · 74 阅读 · 0 评论 -
ServletContext对象详解
ServletContext对象 WEB容器在启动时,它会为每个WEB应用程序都创建一个对应的ServletContext对象,它代表当前web应用。 ServletConfig对象中维护了ServletContext对象的引用,开发人员在编写servlet时,可以通过ServletConfig.getServletContext方法获得ServletContext对象。 由于一个WEB应用...原创 2018-04-08 21:07:01 · 255 阅读 · 0 评论 -
在客户端缓存Servlet的输出
在客户端缓存Servlet的输出 对于不经常变化的数据,在servlet中可以为其设置合理的缓存时间值,以避免浏览器频繁向服务器发送请求,提升服务器的性能。例如:package Java.Servlet;import javax.servlet.ServletException;import javax.servlet.annotation.WebServlet;import javax...原创 2018-04-08 21:15:11 · 168 阅读 · 0 评论 -
HttpServletResponse常见应用——设置响应头控制浏览器的行为
设置http响应头控制浏览器禁止缓存当前文档内容 1 response.setDateHeader("expries", -1);2 response.setHeader("Cache-Control", "no-cache");3 response.setHeader("Pragma", "no-cache");设置http响应头控制浏览器定时刷新网页(refresh)1 respo...原创 2018-04-09 08:50:31 · 1201 阅读 · 0 评论 -
Spring实战 -- 1.1.2依赖注入
概念: 依赖注入一词让人望而生畏,但现在已经演变成复杂的编程技巧或设计模式理念. 在项目中应用DI(Dependency Injection, DI),可以使代码更容易理解和测试.DI功能是如何实现的: 一个应用都会由多个类组成,每个对象负责管理与自己相互协作的对象的引用,这样会使代码高度耦合和难以测试. 举个类似的例子:package m...原创 2018-04-14 20:17:06 · 109 阅读 · 0 评论 -
539. Minimum Time Difference
Given a list of 24-hour clock time points in "Hour:Minutes" format, find the minimum minutes difference between any two time points in the list.Example 1:Input: ["23:59","00:00"]Output: 1Note:The nu...原创 2018-04-10 11:11:08 · 99 阅读 · 0 评论 -
Spring装配Bean
Spring配置的可选方案: 主要有三种装配机制(可点击查看具体内容): 在XML中进行显式配置 在Java中进行显式配置 隐式的bean发现机制和自动装配 总的来说,显式配置越少越好.当必须显式配置Bean的时候,推荐使用类型安全并且...原创 2018-04-15 20:41:38 · 75 阅读 · 0 评论 -
Spring装配Bean -- 自动化装配Bean
Spring从两个角度来实现自动化装配: 组件扫描(component scanning):Spring会自动发现应用上下文中所创建的Bean 自动装配(autowiring):Spring自动满足Bean之间的依赖组件扫描和自动装配组合在一起能将显式配置降低到最少创建可被发现的Bean: 创建CD接口:package main.java.Demo1;...原创 2018-04-15 21:23:56 · 156 阅读 · 0 评论 -
Spring装配Bean -- 通过Java代码装配Bean
接上篇<<自动化装配Bean>>,创建对应组件如下:创建可被发现的Bean: 创建CD接口:package main.java.Demo1;/** * @author myvina@qq.com * @date 18-4-15 下午6:53 */public interface CompactDisc { void play();} ...原创 2018-04-16 09:13:07 · 289 阅读 · 0 评论 -
mybatis简单实例 -- 初窥mybatis
先上项目截图:项目框架如图log4j.properties:# Global logging configurationlog4j.rootLogger=DEBUG, stdout# Console output...log4j.appender.stdout=org.apache.log4j.ConsoleAppenderlog4j.appender.stdout.layout=org....原创 2018-04-10 20:55:00 · 216 阅读 · 0 评论 -
Java JDBC连接数据库
package MysqlConnection;import java.sql.*;public class Test { public static void main(String[] args) { // https://blog.csdn.net/javaniuniu/article/details/52403509 try { // 1、加载JDBC驱动程序 ...原创 2018-04-10 21:02:43 · 63 阅读 · 0 评论 -
Spring装配Bean -- 通过XML装配Bean
创建XML配置规范 最简单的Spring XML配合如下所示:<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-inst...原创 2018-04-16 16:35:16 · 106 阅读 · 0 评论 -
Spring中环境与profile
在软件开发的过程中,通常会经过开发环境,测试环境和生产环境;Spring中Profile的配置可以让我们不用担心这个问题.配置profile bean 在Java配置中,可以使用@Profile注解指定某个bean属于哪一个profile.package main.java.Demo1;import org.springframework.context.annotation.B...原创 2018-04-16 17:12:15 · 148 阅读 · 0 评论 -
Spring中条件化的Bean
@Conditional注解可以用到带有@Bean注解的方法上.如果给定的条件计算结果为true,才会创建这个Bean. 例子如下:package main.java.Demo1;import org.springframework.context.annotation.Condition;import org.springframework.context.a...原创 2018-04-16 17:38:42 · 134 阅读 · 0 评论 -
mybatis配置文件详解 一
<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd"><configurat原创 2018-04-11 10:58:04 · 103 阅读 · 0 评论 -
Spring处理自动装配的歧义性
Spring自动装配Bean的歧义性: 自动装配Bean能够提供很大的帮助,因为它会减少装配应用程序组件时所需要的显示配置的数量.不过,仅有一个bean匹配所需的结果时,自动装配才是有效的.如果有不止一个bean能够匹配结果的话,这种歧义性会阻碍Spring自动装配属性,构造器参数或方法参数. 假设有如下Setter方法: @Autowired publi...原创 2018-04-17 09:21:01 · 172 阅读 · 0 评论 -
Spring中Bean的作用域
在默认情况下,Spring应用上下文中所有bean都是作为单例的形式创建的.大所属情况下,单例bean是很理想的方案.但有时候,单例bean不是什么很好的主意. Spring定义了多种作用域,可以基于这些作用域创建bean,包括: 1.单例(Singleton):在整个应用中,只创建bean的一个实例 2.原型(Prototype):每次注...原创 2018-04-17 09:46:06 · 115 阅读 · 0 评论 -
Spring中运行时值注入
点击打开链接原创 2018-04-17 09:51:34 · 161 阅读 · 0 评论 -
Spring面向切面编程 -- 定义AOP术语
通知(Advice): 在AOP术语中,切面的工作被称为通知. Spring切面可以应用5种类型的通知: 1.前置通知(Before):在目标方法被调用之前调用通知功能 2.后置通知(After):在目标方法抛出异常或完成之后调用通知;此时不会关心方法的输出是什么 3.返回...原创 2018-04-17 11:17:34 · 162 阅读 · 0 评论 -
Spring面向切面编程 -- Spring对AOP的支持
Spring提供了4中类型的AOP支持: 1.基于代理的经典Spring AOP 2.纯POJO切面 3.@AspectJ注解驱动的切面 4.注入式AspectJ(适用于Spring各版本) 前三种都是Spring AOP实现的变体,Spring AOP构建在动态代理基础之上,因此,Spring对AOP的支持局限于方法拦截Spr...原创 2018-04-17 11:28:39 · 304 阅读 · 0 评论 -
Spring通过切点来选择连接点
方法切点函数函数入参说明示例execution()方法匹配字符串满足某一匹配模式的的所有目标类方法连接点execution(* com.yc.service.*.*(..))在配置service层的事务管理时常用,定位于任意返回类型(第一个”*”) 在com.yc.service包下的所有类(第二个”*”)下的所有方法(第三个”*”),且这个方法的入参为任意类型、数量(体现在 “(..)“)@an...原创 2018-04-18 08:54:45 · 420 阅读 · 0 评论 -
Spring使用注解创建切面
(接上篇Spring通过切点来选择连接点)定义切面: 下面将展示Audience类,它定义了一个切面:package main.java;import org.aspectj.lang.annotation.*;/** * @author myvina@qq.com * @date 18-4-18 上午8:56 */@Aspectpublic class Audi...原创 2018-04-18 10:33:58 · 259 阅读 · 0 评论 -
解决spring使用动态代理类型转换失败的问题--java.lang.ClassCastException: com.sun.proxy.$Proxy$ cannot be cast to ...
转载自:http://blog.csdn.net/yinzn2011/article/details/46455973今天在学习spring aop中的动态代理时,碰到了一个类型转换的问题:java.lang.ClassCastException: com.sun.proxy.$Proxy8 cannot be cast to com.bjsxt.service.UserServiceImpl01...转载 2018-04-18 10:37:11 · 959 阅读 · 1 评论 -
Spring MVC 初尝试
刚开始学习Spring MVC,之前了解过MVC模式,因此学习这个的时候,也不是那么困难.先上代码: 项目文件目录: web.xml<?xml version="1.0" encoding="UTF-8"?><web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee" xml...原创 2018-04-22 09:40:23 · 83 阅读 · 0 评论 -
Spring通过注解引入新功能
(接上篇Spring使用注解创建切面) 一些编程语言,如Ruby,有开放类的理念.就可以不直接修改对象或类的定义就能够为对象或类增加新的方法;不过Java并不是动态语言.一旦类编译完成,就很难再为类添加新的功能.但利用被称为引入的AOP概念,切面可以为Spring bean添加新方法. 下面将尝试为之前Performance实现下面的Encoreable接口:packa...原创 2018-04-18 11:15:57 · 843 阅读 · 0 评论 -
Spring在XML中声明切面
在Spring的AOP命名空间中,提供了多个元素用来在XML中声明切面,如下图所示: 重新看之前提过的Audience类,将AspectJ注解全部移除:package main.java;import org.aspectj.lang.ProceedingJoinPoint;import org.aspectj.lang.annotation.*;import org.spr...原创 2018-04-18 11:43:15 · 307 阅读 · 0 评论 -
JSP学习总结一
1. JSP概述 JSP即Java Server Page,是在传统的HTML文档中插入Java程序段或JSP标签而形成的程序(.jsp),是一种实现静态HTML和动态HTML混合编码的技术. 示例:<%@ page import="java.util.Date" %><%@ page import="java.text.SimpleDateForm...原创 2018-04-07 09:39:46 · 183 阅读 · 0 评论 -
JSP学习总结二
1. JSP动作组件 1)<jsp:include>: 在页面中包含一个文件 2)<jsp:forward>: 把请求转发到另一个新的页面 3)<jsp:param>: 在动作组件中引入参数信息 4)<jsp:useBean>: 寻找或实例化一个JavaBean ...原创 2018-04-07 09:52:16 · 153 阅读 · 0 评论