自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(36)
  • 收藏
  • 关注

原创 深入String类不可变特性

String不可变的分析一.从代码层面分析二.从内存结构角度分析三.可以通过反射来修改char数组的值四.一个例题一.从代码层面分析二.从内存结构角度分析三.可以通过反射来修改char数组的值四.一个例题一.从代码层面分析:string源码中真正存储元素的容器是final修饰的char数组,而且没有提供set方法来提供对它的修改,这是首先在代码层面上保证了不可变性。而如StringBuilder和StringBuffer的char数组是提供了set方法,可以修改的。(真正的容器char数组是

2021-04-09 11:54:59 353

原创 虚引用的总结

这个是虚引用源码中的描述,大概意思如下:与软引用和弱引用不同,虚引用在进入队列时不会被垃圾收集器自动清除。通过虚引用可访问的对象将一直保持这种状态,直到所有此类引用被清除或其本身成为不可访问的。解释如下:1.虚引用的作用是用来跟踪它所引用的对象被垃圾收集器回收的活动。2.和软,弱引用不同,它必须和引用队列联合使用,它是在对象被回收前就加入引用队列中的。3.当垃圾回收器准备回收一个对象时,如果发现它还有虚引用,就把它对应的虚引用加入到与之关联的引用队列中。这样就可以通过判断引用队列中是否.

2021-04-08 16:17:57 2700

原创 读写锁-ReadWriteLock

读写锁一.读写状态的设计二.写锁的获取和释放三.读锁的获取与释放四.锁降级一.读写状态的设计回想之前ReentrantLock重入锁中,同步状态state表示锁被一个线程重复获取的次数。读写锁的同步状态state表示维护多个读线程和一个写线程的状态,这个同步状态的高16位表示读状态,低16位表示写状态假设当前同步状态值为S,写状态等于S & 0x0000FFFF(将高16位全部抹去),读状态等于S>>>16(无符号补0右移16位)。当写状态增加1时,等于S+1(低16位的

2021-03-12 19:25:01 206

原创 重入锁-ReentrantLock

ReentrantLock一级目录二级目录三级目录一级目录二级目录三级目录

2021-03-12 12:26:27 3061

原创 AQS总结和部分源码分析

AQS1.介绍队列同步器的接口2.队列同步器的实现分析1.同步队列介绍2.独占式同步状态获取和释放3.共享式同步状态获取和释放4.独占式超时获取同步状态和释放1.介绍1 . 队列同步器AbstractQueuedSynchronizer(简称同步器), 用来构建锁或者其他同步组件的基础框架,它使用一个int成员变量(用volatile修饰的) 表示同步状态,通过内置的FIFO同步队列来完成对资源获取线程的排队工作.2 . 同步器的主要使用方式是继承,子类通过继承同步器并实现它的抽象方法来管理同步状态

2021-03-11 21:23:14 95 1

原创 CAS的内存语义

一.首先介绍CAS的含义使用CAS操作要两个变量,即预期值expect和更新值update都是 int类型的;JDK文档对该方法的说明如下:如果当前状态值等于预期值,则以原子方式将同步状态值设置为给定的更新值。此操作具有volatile读和写的内存语义;二.从编译器和处理器的角度来分析CAS如何具有volatile读和写的内存语义前面学过了volatile具有禁止指令重排序的作用,即:1)编译器不会对volatile读和volatile读后面的任意内存操作重排序;2)编译器不会对volatil

2021-03-10 14:34:22 450

原创 Synchronized和Volatiole关键字的作用及区别

一.synchronized关键字的作用多线程共同操作共享数据时。关键字synchronized可以保证在同一时刻,只有一个线程可以执行某个方法或某个代码块;synchronized可以保证一个线程的变化可见(可见性),即可以代替 volatile。二.volatile关键字作用保证变量可见性禁止指令重排序目的:1.避免了多线程环境下程序出现乱序执行的现象 ;2.防止编译器和处理器对某些不存在数据依赖的数据进行重排序导致结果出错;保证此变量对所有的线程的可见

2021-03-08 17:35:33 426

原创 与maven的pom文件相关的一些错误

问题一:IDEA的Project Structure中的libraries中存在一些jar包文件出现红色波浪下划线:1.找到该classes文件位置查看该jar包在仓库中是否存在,如果不存在则可以去网站里下载需要的jar包然后配置classes文件,如果仓库中存在则重新配置;2.可以把含有红色下划线的jar包删除,然后Reimport解决问题二:pom文件正常了但是引入的类还是爆红色。如果说当你在pom文件里面就没有发现依赖包有问题,pom文件一切正常,那可能是缓存在作怪。你可以试着清一下缓存(In

2020-09-11 21:16:51 264

转载 windows运行elasticsearch.bat黑窗口闪退

windows运行elasticsearch.bat黑窗口闪退解决:方法1.参考:https://blog.csdn.net/weixin_39723544/article/details/95107274?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-2.nonecase&depth_1-utm_source=distribute.pc_relevant.none-task-bl

2020-07-21 23:03:22 783

原创 Mybatis插件-PageHelper的使用

一.PageHelper介绍PageHelper是国内非常优秀的一款开源的mybatis分页插件,它支持基本主流与常用的数据库,例如mysql、oracle、mariaDB、DB2、SQLite、Hsqldb等。1.本项目在 github 的项目地址:https://github.com/pagehelper/Mybatis-PageHelper2.本项目在 gitosc 的项目地址:http://git.oschina.net/fre/Mybatis_PageHelper二.PageHelper

2020-07-18 15:23:01 231

原创 maven应用中的一些概念

maven工程要导入jar包的坐标,就必须要考虑解决jar包冲突。 解决jar包冲突的方式一: 第一声明优先原则:哪个jar包的坐标在靠上的位置,这个jar包就是先声明的。 先声明的jar包坐标下的依赖包,可以优先进入项目中。 maven导入jar包中的一些概念: 直接依赖:项目中直接导入的jar包,就是该项目的直接依赖包。 传递依赖:项目中没有直接导入的jar包,可以通过项目直接依赖jar包传递到项目中去。 解决jar包冲

2020-07-14 14:05:51 132

原创 解决maven导入Oracle11g的ojdbc6.jar

不同版本的Oracle对应的jar包:使用的是Oracle11g,第一次配置ojdbc6.jar时下面的代码一直爆红色:原因是ojdbc6.jar不能从网络上下载,要从本地上传:1.先下载ojdbc6.jar:https://mvnrepository.com/artifact/oracle/ojdbc6/11.2.0.3 下载需要的jar包2.在下载好的目录下输入cmd进入dos窗口:3.在dos窗口输入命令:mvn install:install-file -DgroupId=com.

2020-07-13 12:16:15 719

原创 oracle的一些函数使用

----1.首字母大写函数:initcapselect initcap(‘initcap’) from dual;---- 2.字符串拼接函数:concat和||select concat(ename,‘jjjjjjjj’) from emp;----函数只能放两个参数select ename||’,’||sal from emp;----’||'拼接要拼接有效的内容,如数据可以中真实存在的属性----3.字符串截取函数:substr和instrselect substr(‘hello sal’

2020-07-11 14:51:58 106

转载 Vmware虚拟机中模拟的xp系统和windows 10系统主机共享文件

今天学习Oracle数据库,想要在虚拟机模拟的xp系统中安装Oracle数据库,最开始是使用虚拟机自带的VMware tools工具进行安装,但是一直没用。找了很久终于找到方法了,头发也快掉完了。最终解决方法:https://wenku.baidu.com/view/8fc8c75f312b3169a451a41a.html...

2020-07-03 19:41:12 1304

原创 springMvc-day02-2-拦截器

一. 拦截器的概述SpringMVC框架中的拦截器用于对处理器进行预处理和后处理的技术。可以定义拦截器链,连接器链就是将拦截器按着一定的顺序结成一条链,在访问被拦截的方法时,拦截器链中的拦截器会按着定义的顺序执行。拦截器和过滤器的功能比较类似,有区别:1. 过滤器是Servlet规范的一部分,任何框架都可以使用过滤器技术。2. 拦截器是SpringMVC框架独有的。3. 过滤器配置了/*,可以拦截任何资源。4. 拦截器只会对控制器中的方法进行拦截,jsp,html页面等不会拦截。拦截器也是

2020-06-24 21:29:39 94

原创 springMvc-day02-1-响应数据和结果视图

一. 返回值分类1. 返回字符串Controller方法返回字符串可以指定逻辑视图的名称,根据视图解析器为物理视图的地址/** * 测试返回String,实际开发中就是从数据库查询出来数据然后返回到页面上 * @param model * @return */ //二级目录 @RequestMapping("/testString") public String testString(Model model){ Sys

2020-06-23 17:50:41 107

原创 springMvc-day01-入门案例流程和RequestMapping注解

入门案例流程总结:创建WEB工程,引入开发的jar包具体的坐标如下:省略…配置核心的控制器(配置DispatcherServlet)在web.xml配置文件中核心控制器DispatcherServlet:<!-- SpringMVC的核心控制器 --><servlet> <servlet-name>dispatcherServlet</servlet-name> <servlet-class>org.sprin

2020-06-21 10:46:42 135

原创 spring-day04-事务控制

一.基于xml的事务控制配置:spring中基于XML的声明式事务控制配置步骤 1、配置事务管理器 2、配置事务的通知 此时我们需要导入事务的约束 tx名称空间和约束,同时也需要aop的 使用tx:advice标签配置事务通知 属性: id:给事务通知起一个唯一标识 transaction-manager:给事务通知提供一个事务管理

2020-06-20 18:12:56 91

原创 spring-day04-jdbcTemplate的两种使用

一.使用注解的方式配置jdbcTemplate:这种需要在dao中声明jdbcTemplate@Repositorypublic class AccountDaoImpl2 implements IAccountDao { @Autowired private JdbcTemplate jdbcTemplate; @Override public Account findAccountById(Integer accountId) { List&lt

2020-06-20 11:12:12 74

原创 spring-day03-面向切面编程AOP

一.切入点表达式的写法:spring中基于XML的AOP配置步骤 1、把通知Bean也交给spring来管理 2、使用aop:config标签表明开始AOP的配置 3、使用aop:aspect标签表明配置切面 id属性:是给切面提供一个唯一标识 ref属性:是指定通知类bean的Id。 4、在aop:aspect标签的内部使用对应标签来配置通知的类型 我们现在示例是让printLog方法在切入点方法执行之

2020-06-19 19:49:18 126

原创 动态代理基础

一.基于接口的动态代理:动态代理: 特点:字节码随用随创建,随用随加载 作用:不修改源码的基础上对方法增强 分类: 基于接口的动态代理 基于子类的动态代理 基于接口的动态代理: 涉及的类:Proxy 提供者:JDK官方 如何创建代理对象: 使用Proxy类中的newProxyInstance方法 创建代理对象的要求

2020-06-19 14:35:40 83

原创 spring-day02-spring的新注解

一.不用xml配置,完全依靠注解配置spring的方式:spring中的新注解Configuration 作用:指定当前类是一个配置类 细节:当配置类作为AnnotationConfigApplicationContext对象创建的参数时,该注解可以不写。ComponentScan 作用:用于通过注解指定spring在创建容器时要扫描的包 属性: value:它和basePackages的作用是一样的,都是用于指定创建容器时要扫描的包。 我

2020-06-19 09:57:47 78

原创 spring-day02-1-spring的常用注解

注解:使用注解首先在bean.xml中修改配置,在spring官方文档中找到配置内容:<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.

2020-06-14 21:37:56 92

原创 spring-day01-依赖注入(DI)

spring的依赖注入:依赖注入:Dependency InjectionIOC的作用: 降低程序间的耦合(依赖关系)。依赖关系的管理:以后都交给spring来维护。在当前类需要用到其他类的对象,由spring为我们提供,我们只需要在配置文件中说明。依赖关系的维护: 就称之为依赖注入。 依赖注入: **能注入的数据:有三类** 基本类型和String 其他bean类型(在配置文件中或者注解配置过的bean)

2020-06-14 15:46:47 93

原创 spring-day01-spring的IOC的概念和bean对象的讲解

一.IOC部分:1.IOC的概念:2.ApplicationContext和BeanFactory的区别:3.ApplicationContext的三个实现类:暂时讲前两个:4.spring中bean的细节讲解: 一.bean对象的三种创建方式,都是通过标签中的id属性来反射创建class中对应的全限定类名对应的方法:1.第一种方式,类不在jar中的:2.第二种方式,类是在jar包中的,而且方法不是静态方法的:3.第三种方式,类是在jar包中的,方法是静态方法的:二.be

2020-06-14 13:17:02 96

原创 spring-day01-1学习笔记使用工厂模式解耦

一.在resource目录下创建一个bean.properties配置文件,里面存放key=value形式的数据,右边是全限定类名:accountService=com.itheima.service.impl.AccountServiceImplaccountDao=com.itheima.dao.impl.AccountDaoImpl二.创建一个BeanFactory工厂:一个创建Bean对象的工厂Bean:在计算机英语中,有可重用组件的含义。JavaBean:用java语言编写的可重用组

2020-06-14 10:09:51 81

原创 MyBatis学习笔记之使用注解开发

1.注意事项:使用注解开发时不能再=在resource中配置对应dao的映射配置文件,不管有没有使用这个映射配置文件,只有存在,就会报错。2.注解解决实体类的属性和数据库的的属性名不一致的问题:例如把User类中把sex改成userSex等时,要建立对应关系3.mybatis中一对一的开发配置:首先的Account实体类的配置:然后是IAccountDao的配置:4.注解开发一对多查询:1.配置User实体类一对多关系映射:2.配置IUserDao的@Results:3.配置

2020-06-13 18:28:06 97

原创 Mybatis学习笔记之多表操作

一.Account表的一对一操作1.在account实体类表中添加:从表实体应该包含一个主表实体的对象引用2.在 IAccountDao.xml的映射配置文件中加上 resultMap建立account表和user表的联系修改后的输出结果:

2020-06-13 10:26:17 107

原创 MyBatis学习笔记之一级缓存和二级缓存

缓存介绍:一级缓存:介绍:测试关闭一级缓存:输出结果:触发清空一级缓存的情况:清空一级缓存测试: 结果是false二级缓存:介绍:首先配置二级缓存有三个步骤:二级缓存测试:不同的sqlSession公用一个数据时会创建不同的对象,结果是false,不相等结果:...

2020-06-13 10:22:30 146

转载 Mybatis中一对多查询实现延迟加载

基于Mybatis中一对一查询实现延迟加载的基础上进行修改:AccountDao接口:package com.qublog.dao;import com.qublog.domain.Account;import java.util.List;public interface AccountDao { //查询所有账户,同时还要获取到当前账户的所属用户信息 List<Account> findAll(); //根据用户id查询账户信息 List&l

2020-06-12 22:58:46 133

转载 Mybatis学习笔记之typeAliases标签与package标签

typeAliases标签与package标签typeAliases标签与package标签(都是在SqlMapConfig配置)Mybatis 支持的默认别名,我们也可以采用自定义别名方式来开发。例如我们不想写一长串全限定类名一、typeAlias配置别名一般情况下我们需要这样写:很长,这时候可以用typeAlias配置别名。使用typeAlias单个别名定义这时候就可以写成这样(不区分大小写如果有很多呢,这样改起来很麻烦,介绍批量操作的方法使用package标签批量别名定义

2020-06-11 22:48:38 756

转载 MyBatis查看源码时出错

今天学习mybatis,想查看源码时发现如下图片中的问题,只有方法名没有内容原因是查看的是源码是class文件,我们需要看.java文件。解决方法:链接:https://blog.csdn.net/weixin_43570367/article/details/103604345...

2020-06-11 12:42:05 105

原创 javaWeb实现旅游网项目

一.注册功能

2020-06-11 10:08:06 2132

转载 idea错误:Error:(1,1) java:非法字符

解决方法:1.2 推荐使用的方式3 把File>settings>Build>Compiler>javaCompiler中下面的Addition Command lineparameters中加上一行 : -encoding UTF-8

2020-06-04 10:43:18 442

原创 引入其他人的maven项目时注意的地方

发生的错误导入项目首先是jar包的问题全是报红的解决方法1.把导入的maven项目对应的pom文件的标签全部复制粘贴过来了,但是发现java文件任然报红,而且impor class时没有提示pom中jar包。2.最后把maven文配置检查了,果然忘了配置maven,问题解决。...

2020-06-03 17:24:47 247

原创 使用Linux的yum下载出现错误

使用Linux的yum下载出现错误 Downloading Packages: http://mirrors.163.com/centos/6.5/os/i386/Packages/mlocate-0.22.2-4.el6.i686.rpm: [Errno 14] PYCURL ERROR 6 - "Couldn't resolve host 'mirrors.163.com'"Trying other mirror. http://mirrors.aliyun.com/centos/6.5/os/i

2020-06-02 09:59:32 942

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除