![](https://img-blog.csdnimg.cn/20201014180756923.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
java
文章平均质量分 63
chunguang.yao
我在github,在这里我会分享一些学习笔记和项目
https://github.com/yaochunguang
展开
-
Java6及以上版本对synchronized的优化
目录1.概述2.实现同步的基础3.实现方式4.Java对象头(存储锁类型)5.优化后synchronized锁的分类6.锁的升级(进化)1.概述在多线程并发编程中synchronized一直是元老级角色, 很多人都会称呼它为重量级锁. 但是, 随着Java SE 1.6对synchronized进行了各种优化之后, 有些情况下它就并不那么重了. 本文详细介绍Java SE 1.6中为了减少获得锁和释放锁带来的性能消耗而引入的偏向锁和轻量级锁, 以及锁的存储结构和升级过原创 2021-11-03 16:21:33 · 571 阅读 · 0 评论 -
newSingleThreadExecutor和创建单个线程的区别
面试题曾经遇到过一次面试的时候问过:既然new Thread()和newSingleThreadExecutor()都是创建一个线程处理,为什么还需要存在单个线程的线程池呢?案例演示分析同样是10个任务需要处理,通过new Thread()和newSingleThreadExecutor()演示下new Thread()方式 public static void main(String[] args) { for (int i = 1; i <=10; i++)原创 2021-08-19 15:47:31 · 1815 阅读 · 3 评论 -
Java四大线程池
目录四大线程池简介案例演示线程池参数说明四大线程池简介案例演示线程池参数说明原创 2021-08-19 14:26:17 · 1285 阅读 · 0 评论 -
Java修改框架源码
这个话题听起来很高大上,重写源码,对于很多新手或者没有修改过的同学来说,觉得没什么头绪,其实是一个很简单的操作,当然简单仅仅只是指如何去修改源码这件事情~比如,我们想修改SpringSecurity的JdbcTokenRepositoryImpl.java的源码,那么我们就在工程中新建一个包名和类名一模一样的然后把源码中的代码,全部拷贝过来,对需要修改的部分进行修改即可;这样类加载器在加载的时候,就会优先加载到我们已经同名的类,优先使用;这是简单粗暴的一种方式;还有其他很多的方式,希望有原创 2020-12-12 14:49:24 · 1511 阅读 · 0 评论 -
redis 远程连接
我们一般会把redis部署在服务器,那么我们需要开启redis的远程连接才能在其他地方连接上通过修改redis.conf配置文件在redis的安装目录下注释原来绑定的127.0.0.1,并关闭保护模式vim redis.confvim redis.conf# 注释以下绑定的主机地址# bind 127.0.0.1# 关闭保护模式protected-mode no重启redis即可测试...原创 2020-07-22 11:43:16 · 234 阅读 · 0 评论 -
Linux下安装配置nginx
首先到ngnix官网(http://nginx.org/en/download.html)下载ngnix的安装包。当然你也可以通过wget命令wgethttps://nginx.org/download/nginx-1.19.1.tar.gz把下载好的安装包上传到linux上解压 tar -zxvfnginx-1.19.1.tar.gz然后把解压后的文件移到到 /usr/local目录下(也可以在解压的时候指定,通过-C指定, tar -zxvf nginx-1.19.1.tar.gz ..原创 2020-07-20 16:35:57 · 1106 阅读 · 0 评论 -
Linux下安装配置JDK
通过文件上传工具把安装包上传到linux上 我使用的是FileZilla,看个人喜好。有的人喜欢用xftp 把软件上传到/usr/local/software目录下 【这个目录根据个人情况去定,我习惯放到这个目录下】 解压文件 tar -zxvf jdk-8u191-linux-x64.tar.gz 配置环境变量 vim /etc/profile export JAVA_HOME=/usr/local/software/jdk1.8.0_191export CLASSPA..原创 2020-07-20 14:16:29 · 118 阅读 · 0 评论 -
SpringBoot使用Junit单元测试报错
使用SpringBoot的Junit单元测试,需要引入依赖 <!-- Spring Boot Test 依赖 --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope&g原创 2020-07-07 11:52:39 · 14446 阅读 · 3 评论 -
SpringBoot整合druid问题
之前看了一张帖子来整合druid的,帖子中使用的是SpringBoot1.5.x版本,我使用2.1.7版本。在整合druid的时候,发现启动就报错,提示dataSource找不到,具体报错:org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'userController': Unsatisfied dependency expressed through fie原创 2020-07-02 09:48:18 · 475 阅读 · 0 评论 -
单例模式
懒汉模式:// 懒汉模式:public class SingletonDemo { private static SingletonDemo instance; private SingletonDemo(){ } public static SingletonDemo getInstance(){ if(instance==null)...原创 2020-02-23 21:42:29 · 95 阅读 · 0 评论 -
Java文件处理(复制、移动、删除)
package com.company.io;import java.io.File;import java.io.FileInputStream;import java.io.FileOutputStream;import java.io.IOException;import java.text.SimpleDateFormat;import java.util.Date;/...原创 2020-02-23 11:55:27 · 429 阅读 · 0 评论 -
Java递归读取某个文件夹下的所有文件
import java.io.File;/** * @description: 递归读取文件夹下的文件 * @author: chunguang.yao * @date: 2020-02-22 23:24 */public class Recursion { public static void main(String[] args) { String p...原创 2020-02-22 23:34:44 · 683 阅读 · 0 评论 -
Java通过poi读取excel
背景:需要通过读取excel中的内容,插入到数据库中。 使用poi来读取excel 引入依赖<dependency> <groupId>org.apache.poi</groupId> <artifactId>poi</artifactId> <version>4.1.0</version><...原创 2019-11-08 23:11:23 · 194 阅读 · 0 评论 -
秒杀系统(SecKillGoods)
完整代码可以参考我的github:https://github.com/yaochunguang/SecKillGoods.git秒杀商品系统【多线程处理】 需求分析 技术架构 秒杀实现思路 数据库环境准备 导入秒杀商品到缓存 秒杀下单 超卖问题解决 并发问题解决需求分析所谓“秒杀”,就是网络卖家发布一些超低价格的商品,所有买家在同一时间网上抢购的一种销售方式...原创 2019-09-17 23:21:11 · 1374 阅读 · 1 评论 -
mybatis中使用包装对象
在实际的应用中,很多时候我们需要的查询条件都是一个综合的查询条件,因此我们需要对已经存在的实体进行再一次的包装,以方便我们进行查询操作,于是包装对象的作用就很明显了原创 2017-09-20 00:20:14 · 1775 阅读 · 0 评论 -
使用mybatis的延迟加载
使用mybatis的延迟加载原创 2017-10-02 01:33:26 · 316 阅读 · 0 评论 -
eclipse中部署web项目
eclipse中部署web项目原创 2017-10-15 22:33:00 · 728 阅读 · 1 评论 -
java动态代理
动态代理的特点:字节码随用随创建,随用随加载。它与静态代理的区别也在于此。因为静态代理是字节码一上来就创建好,并完成加载。 装饰者模式就是静态代理的一种体现。动态代理常用的有两种方式基于接口的动态代理提供者:JDK官方的Proxy类。要求:被代理类最少实现一个接口。基于子类的动态代理提供者:第三方的CGLib,如果报asmxxxx异常,需要导入asm.jar。...原创 2018-12-12 22:41:35 · 99 阅读 · 0 评论 -
浅谈java.util.ConcurrentModificationException(并发修改异常)
java中的list集合是我们经常使用的集合,而对集合进行增加和删除元素是我们最常用的操作。那么在什么时候对list集合什么样的操作,就会发生java.util.ConcurrentModificationException异常呢??? 带着这个问题来看下面的代码演示:(1)在使用iterator循环的时候,给list添加元素或者删除元素public static void main(S...原创 2018-12-12 00:24:04 · 587 阅读 · 0 评论 -
idea打包可执行jar
(1)在项目上鼠标右键 --> Open Module Settings 或者点击工具栏上的(2)Artifacts --> + --> JAR --> From modules with dependencies...(3)Main Class是你这个项目(脚本)的主方法,就是要运行的类,选一个关于 JAR files from ...原创 2019-03-19 00:25:14 · 125 阅读 · 0 评论 -
windows下和linux下运行jar
需要在windows下运行jar,首先需要我们打包出来可执行jaridea打包可执行jar可以参考我的另一篇博客【https://mp.csdn.net/postedit/88653200】一、windows下运行jar到jar所在目录,按住shift->点击鼠标右键->选择打开命令窗口然后通过java -jar 包名.jar即可二、linux下运行j...原创 2019-03-19 00:34:25 · 321 阅读 · 0 评论 -
官网下载eclipse
百度搜索eclipse,点击官网链接进入官网进入官网点击Download Packages根据自己需要选择对应的版本选择对应的版本进入下图下载页面,然后点击下载即可下载完成,解压zip包即可使用...原创 2019-03-23 22:38:09 · 2722 阅读 · 0 评论 -
String、StringBuffer、StringBuilder的区别
概述相信使用java的小伙伴对于String、StringBuffer、StringBuilder这三者已经很熟悉,特别是对于String是我们常用的数据类型。那么这三者有什么区别呢?是否是线程安全的呢?在开发中我们又该如何选择呢?String、StringBuffer、StringBuilder区别简单的来说,String是不可变的;StringBuffer和StringBuilde...原创 2019-06-18 23:25:41 · 260 阅读 · 0 评论 -
HashMap和HashTable的区别(面试题)
在面试的时候,面试官问到了平时常用的容器HashMap。问到的问题是,请你说说HashMap和HashTable的区别。感觉自己回答得很笼统,比较混乱,现在总结一下:1、是否线程安全HashMap不是线程安全的,HashTable是线程安全的;【HashTable内部的方法基本都使用了synchronized关键字修饰】 注意:现在HashTable在我们的开发中很少很少使用。...原创 2019-08-26 00:00:10 · 8895 阅读 · 0 评论 -
mybatis中实现一对一,一对多查询
mybatis中实现一对一,一对多查询原创 2017-09-28 00:19:12 · 667 阅读 · 0 评论