<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[jun_422的专栏]]></title><description><![CDATA[]]></description><link>https://blog.csdn.net/jun_422</link><language>zh-cn</language><generator>https://blog.csdn.net/</generator><copyright><![CDATA[Copyright &copy; jun_422]]></copyright><item><title><![CDATA[线程池如何设置合理参数]]></title><link>https://blog.csdn.net/jun_422/article/details/121290349</link><guid>https://blog.csdn.net/jun_422/article/details/121290349</guid><author>jun_422</author><pubDate>Mon, 15 Nov 2021 08:45:00 +0800</pubDate><description><![CDATA[1.线程池的拒绝策略请你谈谈

(1)是什么？

等待队列也已经排满了,再也塞不下新的任务了

同时,

线程池的max也到达了,无法接续为新任务服务

这时我们需要拒绝策略机制合理的处理这个问题.

(2)JDK内置的拒绝策略

①AbortPolicy(默认):直接抛出RejectedException异常阻止系统正常运行

②CallerRunPolicy:"调用者运行"一种...]]></description><category></category></item><item><title><![CDATA[线程池ThreadPoolExecutor底层工作原理]]></title><link>https://blog.csdn.net/jun_422/article/details/121289895</link><guid>https://blog.csdn.net/jun_422/article/details/121289895</guid><author>jun_422</author><pubDate>Sun, 14 Nov 2021 03:45:00 +0800</pubDate><description><![CDATA[]]></description><category></category></item><item><title><![CDATA[线程池ThreadPoolExecutor几个重要参数介绍]]></title><link>https://blog.csdn.net/jun_422/article/details/121289666</link><guid>https://blog.csdn.net/jun_422/article/details/121289666</guid><author>jun_422</author><pubDate>Sat, 13 Nov 2021 08:00:00 +0800</pubDate><description><![CDATA[1.corePoolSize:线程池中的常驻核心线程数

1).在创建了线程池后,当有请求任务来之后,就会安排池中的线程去执行请求任务,近视理解为今日当值线程

2).当线程池中的线程数目达到corePoolSize后,就会把到达的任务放入到缓存队列当中.

2.maximumPoolSize:线程池能够容纳同时执行的最大线程数,此值大于等于1

3.keepAliveTime:多余的空闲线程存活时间,当空间时间达到keepAliveTime值时,多余的线程会被销毁...]]></description><category></category></item><item><title><![CDATA[线程池ThreadPoolExecutor]]></title><link>https://blog.csdn.net/jun_422/article/details/121289251</link><guid>https://blog.csdn.net/jun_422/article/details/121289251</guid><author>jun_422</author><pubDate>Fri, 12 Nov 2021 15:46:19 +0800</pubDate><description><![CDATA[1.为什么使用线程池,优势  

线程池做的工作主要是控制运行的线程的数量,处理过程中将任务加入队列,然后在线程创建后启动这些任务,如果线程超过了最大数量,超出的数量的线程排队等候,等其他线程执行完毕,再从队列中取出任务来执行.

他的主要特点为:线程复用:控制最大并发数:管理线程.

第一:降低资源消耗.通过重复利用自己创建的线程降低线程创建和销毁造成的消耗.

第二: 提高响应速度.当任务到达时,任务可以不需要等到线程和粗昂就爱你就能...]]></description><category></category></item><item><title><![CDATA[BlockingQueue 阻塞队列]]></title><link>https://blog.csdn.net/jun_422/article/details/121030467</link><guid>https://blog.csdn.net/jun_422/article/details/121030467</guid><author>jun_422</author><pubDate>Sun, 31 Oct 2021 19:30:00 +0800</pubDate><description><![CDATA[1.队列＋阻塞队列

(1)阻塞队列，顾名思义，首先它是一个队列，而一个阻塞队列在数据结构中所起到的作用大致如下图所示：



当阻塞队列为空的时，从队列中获取元素的操作将会被阻塞。

当阻塞队列是满的时，往队列中增加元素的操作将会被阻塞。

试图从空的阻塞队列中获取元素的线程将会被阻塞，直到其他的线程往队列中插入新的元素。

同样，试图往已满的阻塞队列中添加新的元素的线程将会被阻塞，直到其他线程从队列中移除一个或多个元素或者完全清空队列后是队...]]></description><category></category></item><item><title><![CDATA[Synchronized和Lock有什么区别]]></title><link>https://blog.csdn.net/jun_422/article/details/121030039</link><guid>https://blog.csdn.net/jun_422/article/details/121030039</guid><author>jun_422</author><pubDate>Sat, 30 Oct 2021 17:00:00 +0800</pubDate><description><![CDATA[1.原始构成

Synchronized是关键字属于JVM层面，

monitorenter（底层是通过monitor对象来完成，其实wait/notify等方法也依赖montior对象只有在同步块或方法中才能调用wait/notify等方法）

Lock是具体类(java.util.concurrent.locks.Lock)是api层面的锁

2.使用方法

Synchronized不需要用户去手动释放锁，当Synchronized代码执行...]]></description><category></category></item><item><title><![CDATA[CountDownLatch、CyclicBarrier、Semaphore使用]]></title><link>https://blog.csdn.net/jun_422/article/details/121029816</link><guid>https://blog.csdn.net/jun_422/article/details/121029816</guid><author>jun_422</author><pubDate>Fri, 29 Oct 2021 10:39:08 +0800</pubDate><description><![CDATA[1.CountDownLatch案例

让一些线程阻塞直到另一些线程完成一系列操作后才被唤醒

CountDownLatch主要有两个方法，当一个或多个线程调用await方法时，调用线程会被阻塞。

当计数器的值变为零时，因调用await方法被阻塞的线程会被唤醒，继续执行


//未使用CountDownLatch
public class CountDownLatchDemo {
    public static void main(String[] ar...]]></description><category></category></item><item><title><![CDATA[JUC多线程及并发笔记--公平锁和非公平锁、可重入锁、递归锁、自旋锁]]></title><link>https://blog.csdn.net/jun_422/article/details/119873266</link><guid>https://blog.csdn.net/jun_422/article/details/119873266</guid><author>jun_422</author><pubDate>Mon, 23 Aug 2021 17:11:04 +0800</pubDate><description><![CDATA[1.公平锁和非公平锁

(1) 是什么？

公平锁： 是指多个线程按照申请锁的顺序来获取锁，类似排队打饭，先来后到


Lock lock=new ReentrantLock(true);

非公平锁：是指多个线程获取锁的顺序不是按照申请锁的顺序，有肯可能后申请的线程比先申请的线程优先获取锁，在高并发情况下，有可能会造成优先级翻转或者饥饿现象


Lock lock=new ReentrantLock(); //Reentran...]]></description><category></category></item><item><title><![CDATA[JUC多线程及并发笔记--多线程下集合类不安全问题]]></title><link>https://blog.csdn.net/jun_422/article/details/119872047</link><guid>https://blog.csdn.net/jun_422/article/details/119872047</guid><author>jun_422</author><pubDate>Mon, 23 Aug 2021 16:24:44 +0800</pubDate><description><![CDATA[1.ArrayList多线程下安全问题

1).故障现象 java.util.ConcurrentModificationException 并发修改异常

2).导致原因 List add()方法没有并发锁

并发争抢修改导致。

比如生活中花名册签名，一个人正在写，另一个同学过来抢夺，导致数据一致异常。并发修改异常

3).解决方案

(1) List lists=new Vector&lt;&gt;();

(2) Lis...]]></description><category></category></item><item><title><![CDATA[JUC多线程及并发笔记--原子类(AtomicInteger)的ABA问题]]></title><link>https://blog.csdn.net/jun_422/article/details/119784041</link><guid>https://blog.csdn.net/jun_422/article/details/119784041</guid><author>jun_422</author><pubDate>Wed, 18 Aug 2021 17:37:07 +0800</pubDate><description><![CDATA[原子类AtomicInteger的ABA问题谈谈？原子更新引用知道么？

1.ABA问题产生

CAS会导致ABA问题

    CAS算法实现一个重要前提需要取出内存中某时刻的数据并在当下时刻比较并替换，那么在这个时间差类会导致数据的变化。比如说一个线程one从内存位置v取出A，这时另一个线程two也从内存中取出A，并且线程two进行了一些操作将值变成B，然后线程two又将v位置的数据变成A，这时候one线程进行CAS操作发现内容中仍然是A，然后线程one操作成功。

   ...]]></description><category></category></item><item><title><![CDATA[JUC多线程及并发笔记--volatile问题详解]]></title><link>https://blog.csdn.net/jun_422/article/details/119459481</link><guid>https://blog.csdn.net/jun_422/article/details/119459481</guid><author>jun_422</author><pubDate>Fri, 06 Aug 2021 17:18:51 +0800</pubDate><description><![CDATA[1.volatile是java虚拟机提供的轻量级的同步机制

保证可见性

package register;

import java.util.concurrent.TimeUnit;
class MyData{
    volatile int number=0;

    public void addTo60(){
        this.number=60;
    }
}

/**
 * 1.验证volatile可见性
 * 1.1 假如int number=0;number变量之前没有添加]]></description><category></category></item><item><title><![CDATA[Spring2+struts2.3+ibatis框架整合]]></title><link>https://blog.csdn.net/jun_422/article/details/9453143</link><guid>https://blog.csdn.net/jun_422/article/details/9453143</guid><author>jun_422</author><pubDate>Fri, 06 Aug 2021 17:04:56 +0800</pubDate><description><![CDATA[这几天一直想着搭建一个简单的SSI框架，下面就把步骤一步一步写下来，相互学习交流！
1.新建Web Project工程
2.增加struts2的jar包

3.然后配置web.xml中的struts过滤器，启动应该是不报错误。
  
  	struts2  
  	org.apache.struts2.dispatcher.FilterDispatcher  
    
    
   ]]></description><category></category></item><item><title><![CDATA[JUC多线程及并发笔记--CAS问题详解]]></title><link>https://blog.csdn.net/jun_422/article/details/119454577</link><guid>https://blog.csdn.net/jun_422/article/details/119454577</guid><author>jun_422</author><pubDate>Fri, 06 Aug 2021 16:55:36 +0800</pubDate><description><![CDATA[1.CAS是什么？

比较并交换：是JUC中方法 compareAndSet(int expect, int update) ，expect-物理内存中期望值，update-修改值


import java.util.concurrent.atomic.AtomicInteger;

/**
 * 1.CAS是什么？  =====&gt;compareAndSet
 * 比较并交换
 */
public class CASDemo {
    public static void main...]]></description><category></category></item><item><title><![CDATA[docker 安装nginx+php(多服务站点)+mysql]]></title><link>https://blog.csdn.net/jun_422/article/details/115004543</link><guid>https://blog.csdn.net/jun_422/article/details/115004543</guid><author>jun_422</author><pubDate>Fri, 19 Mar 2021 16:00:08 +0800</pubDate><description><![CDATA[最近在在研究docker部署多站点的php web服务，在配置nginx时遇到很多坑，把配置过程分享给大家！！！

ps：

  1-3是前期准备，如果虚拟机网络配置好可以忽略.....

  4开始以此安装mysql,php,nginx

  centos7下安装docker请查相关资料

1.使用的工具

(1).VMware Workstation Pro 16虚拟机

(2).CentOS-7-x86_64系统服务(docker支持CentOS-7以上版本)

(3).docker最新版...]]></description><category></category></item><item><title><![CDATA[IntelliJ IDEA 的安装、配置与使用（四）-常用配置]]></title><link>https://blog.csdn.net/jun_422/article/details/88219267</link><guid>https://blog.csdn.net/jun_422/article/details/88219267</guid><author>jun_422</author><pubDate>Fri, 26 Apr 2019 16:59:47 +0800</pubDate><description><![CDATA[IntelliJ IDEA 有很多人性化的设置我们必须单独拿出来讲解，也因为这些人性化
的设置让那些 IntelliJ IDEA 死忠粉更加死心塌地使用它和分享它。

进入设置界面：



目录结构如下：



1.Appearance &amp; Behavior
1.1 设置主题



这里默认提供了三套主题：IntelliJ，Darcula，Windows。这里可以根据自己的喜好进行选择。
...]]></description><category></category></item><item><title><![CDATA[IntelliJ IDEA 的安装、配置与使用（三）-IDEA创建项目工程]]></title><link>https://blog.csdn.net/jun_422/article/details/88194224</link><guid>https://blog.csdn.net/jun_422/article/details/88194224</guid><author>jun_422</author><pubDate>Tue, 05 Mar 2019 18:25:21 +0800</pubDate><description><![CDATA[创建 Java 工程，运行 HelloWorld

1.创建 Java 工程



 Create New Project:创建一个新的工程
 Import Project:导入一个现有的工程
 Open:打开一个已有工程。比如：可以打开 Eclipse 项目。
 Check out from Version Control:可以通过服务器上的项目地址 check out Github
上...]]></description><category></category></item><item><title><![CDATA[IntelliJ IDEA 的安装、配置与使用（二）]]></title><link>https://blog.csdn.net/jun_422/article/details/88193790</link><guid>https://blog.csdn.net/jun_422/article/details/88193790</guid><author>jun_422</author><pubDate>Tue, 05 Mar 2019 18:08:00 +0800</pubDate><description><![CDATA[本章主要说明启动应用后简单配置

1.是否导入已有设置

首次启动，会弹出如下的对话框。选择不导入已有的设置。

2.激活

然后根据提供的激活文档《IDEA2017-2018_激活方法》或百度：idea 破解码，填入：lisence server 的具体值即可。（需要联网）或者 选择 Activation code，根据文档提供的激活码，同样可以激活。（不需要联网）



补充：
对于 IDEA...]]></description><category></category></item><item><title><![CDATA[IntelliJ IDEA 的安装、配置与使用（一）]]></title><link>https://blog.csdn.net/jun_422/article/details/88192501</link><guid>https://blog.csdn.net/jun_422/article/details/88192501</guid><author>jun_422</author><pubDate>Tue, 05 Mar 2019 17:59:23 +0800</pubDate><description><![CDATA[本章主要说明windows 下安装过程

1. 安装前的准备
1.1 硬件要求

个人建议配置：内存 8G 或以上，CPU 最好 i5 以上，最好安装块固态硬盘(SSD)，将 IDEA
安装在固态硬盘上，这样流畅度会加快很多。

1.2 软件要求

操作系统：Microsoft Windows 10/8/7/Vista/2003/XP (32 or 64 bit)

2.具体安装过程






...]]></description><category></category></item><item><title><![CDATA[联合主键用Hibernate注解映射方式]]></title><link>https://blog.csdn.net/jun_422/article/details/42638571</link><guid>https://blog.csdn.net/jun_422/article/details/42638571</guid><author>jun_422</author><pubDate>Mon, 12 Jan 2015 09:48:21 +0800</pubDate><description><![CDATA[﻿﻿
联合主键用Hibernate注解映射方式主要有三种：
第一、将联合主键的字段单独放在一个类中，该类需要实现java.io.Serializable接口并重写equals和hascode，再将该类注解为@Embeddable,最后在主类中(该类不包含联合主键类中的字段)保存该联合主键类的一个引用，并生成set和get方法，并将该引用注解为@Id
第二、将联合主键的字段单独放在一个类中，该]]></description><category></category></item><item><title><![CDATA[Hibernate和MyBatis的区别]]></title><link>https://blog.csdn.net/jun_422/article/details/9411797</link><guid>https://blog.csdn.net/jun_422/article/details/9411797</guid><author>jun_422</author><pubDate>Mon, 22 Jul 2013 17:42:20 +0800</pubDate><description><![CDATA[Hibernate简介
Hibernate是一个开放源代码的对象关系映射框架，它对JDBC进行了非常轻量级的对象封装，使得Java程序员可以随心所欲的使用对象编程思维来操纵数据库。Hibernate可以应用在任何使用JDBC的场合，既可以在Java的客户端程序使用，也可以在Servlet/JSP的Web应用中使用，最具革命意义的是，Hibernate可以在应用EJB的J2EE架构中取代CMP，完]]></description><category></category></item></channel></rss>