自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(23)
  • 资源 (4)
  • 收藏
  • 关注

原创 ThreadPoolExecutor源码阅读

这样一个task为空的worker在线程执行的时候会去任务队列里拿任务,这样就相当于创建了一个新的线程,只是没有马上分配任务 第四个:这个方法就是放一个null的task进Workers Set,而且是在小于corePoolSize时,如果此时Set中的数量已经达到corePoolSize那就返回false,什么也不干。3、如果线程池中的线程数量大于等于corePoolSize,且队列workQueue已满,但线程池中的线程数量小于maximumPoolSize,则会创建新的线程来处理被添加的任务。

2024-12-12 10:48:55 650

原创 ConcurrentHashmap源码阅读(总结)

boolean remove(Object key, Object value) 移除指定 key 的元素,但对应key节点的value必须与 传入的value值相等,才会进行删除,返回值为 boolean。ConcurrentHashmap 相对于Hashmap是线程安全的,但对比hashTable 效率更高,适用与高并发场景,但不支持key或者null为null。的迭代器是弱一致性的,这意味着如果在迭代过程中其他线程修改了 map,这些修改对于迭代器来说在大多数情况下是不可见的。

2024-12-03 09:35:08 641

原创 ConcurrentHashmap 扩容和树的转换

CurrentHashmap 解决的hash冲突的策略就是在,hash桶中存储链表,链表长度达到一定值后转成红黑树。通过 三 可以知道当链表的长度大于8,会调用treeifyBin 方法 将该桶中的链表转换成树。2、当链表长度大于8,数组长度小于64 时候 进行扩容。1、当数组长度大于阈值sizeCtl时候进入扩容。2. 集合数组长度大于64。1. 链表长度大于等于8。树转链表的条件: 但树的节点个数小于6.从源码看currentHashmap 扩容时机。

2024-12-02 10:57:03 364

原创 ReentrantLock源码阅读

是一种可重入的互斥锁,支持公平锁和非公平锁的选择。private volatile int state:线程获取锁时候需要将state从0改为1,state为0代表没有线程持有锁,state大于0 代表某个线程正持有这把锁,state的值代表重入次数。可重入:正如其名称,ReentrantLock 是一个可重入的锁,意味着持有锁的线程可以 多次获取该锁,而不会引发阻塞。为了避免这问题,可以采用锁超时机制,或者设计更合理的锁加载顺序。非公平锁:不保证锁的获取顺序,线程请求时候会先去竞争一次锁,新能可能更好。

2024-11-26 10:25:46 562

原创 ConcurrentHashmap源码阅读

ConcurrentHashmap源码

2024-11-19 16:14:56 455

原创 设计模式之单列模式

public class User{private static User user=new User();pbilc User(){}public static User getUser(){if(user==null){ user=new User();}return user;}}

2024-11-18 09:40:54 378 2

原创 ArrayList 源码阅读

ArrayList 源码阅读

2024-11-15 15:59:03 642

原创 ArrayList的for(Object o:os)中ConcurrentModificationException

从源码可以看到Iterator(迭代器)中执行next方法时候,首先调用的就是 checkForComodifcation() 这里比较了两个值 expectedModCount 迭代器初始化时候赋值为ArrayList中的modCount。当我们for(Object o:os) 中当前集合进行修改时候,都会导致modCount值加一,就出现两个值不等版本不一致,抛出并发修改异常。一、我们先看for(Object o:os) 这里面其实是分为获取迭代器,然后执行迭代器的next() 方法。

2024-11-14 09:29:26 238

原创 Arrays.asList()执行add()报错UnsupportedOperationException

Arrays.asList() 之 UnsupportedOperationException

2024-11-12 11:13:46 316

转载 Java类加载机制

一、Java类加载机制1.概述       Class文件由类装载器装载后,在JVM中将形成一份描述Class结构的元信息对象,通过该元信息对象可以获知Class的结构信息:如构造函数,属性和方法等,Java允许用户借由这个Class相关的元信息对象间接调用Class对象的功能。      虚拟机把描述类的数据从class文件加载到内存,并对数据进行校验,转换解析和初始化,最终形成可以...

2018-10-03 05:18:56 257

原创 java 自定义注解

1.注解分类(1).按运行机制分类     1.源码注解  只在源码中存在  元注解@Retention(生命周期)中为SOURCE     2.编译注解  存在源码和class文件中  @Retention 中为CLASS     3.运行注解  运行阶段起作用,影响运行编辑  @Retention 中为RUNTIME(2).按来源分类     1.jdk注解     2.第三方注解     3...

2018-03-04 20:52:51 265

原创 orcale数据库 update 语句报错ERROR: Cannot parallelize an UPDATE statement that updates the distribution col

ERROR: Cannot parallelize an UPDATE statement that updates the distribution columns中文解释:错误: 无法并行更新分发列的更新语句引起原因主要是你的更新语句,修改了表格的主键导致修改失败解决方式修改表格主键,改成不会被修改或者不能被改的唯一列

2018-01-18 18:05:45 5844

转载 纯java项目使用hibernateSessionFactory访问数据库

package com.zz.util;import org.hibernate.HibernateException;import org.hibernate.Session;import org.hibernate.cfg.Configuration;/** * Configures and provides access to Hibernate sessions

2017-07-21 17:12:38 2348

原创 微信openId的获取

要获取微信的openid首先需要获取到code值。获取code值请求链接为https://open.weixin.qq.com/connect/oauth2/authorize?appid=APPID&redirect_uri=REDIRECT_URI&response_type=code&scope=SCOPE&state=STATE#wechat_redirect参数 是否必填参数

2017-07-17 17:15:29 2051

转载 微信公众号推送消息获取access_token

做公众号消息推送需要用道acces_token这是微信通过你公众号的appid和appsecrect生成的。/** * * 获取微信access_token * * @param appid * @param secret * @return * @see [类、类#方法、类#成员] */

2017-07-17 09:45:47 3308

转载 hibernate的gethibernatetemplate find条件查询方法

Spring中常用的hql查询方法---------------------------------一、find(String queryString);     示例:this.getHibernateTemplate().find("from bean.User");     返回所有User对象二、find(String queryString ,

2017-07-13 17:45:34 1402

转载 properties文件的写入和读取

配置文件一般放一些长期不变的配置参数,当有时候我在想要去修改配置配置文件的参数。每次都手动修改是不是不太方便。还有有时候需要在程序运行时添加参数或者新建立配置文件,就找了这么个方法。/*** 实现对Java配置文件Properties的读取、写入与更新操作*/package test;import java.io.BufferedInputStream;import java.io

2017-07-13 15:28:48 1173

转载 java中jar封装 使用fat-jar插件

由于需要将操作数据库部分封装成java的jar便于操作,自己开始使用myeclipse自带的封装工具出现要封装项目中的jar包丢失,运行报CLASSNOTfound的异常。自己去对应的下了个fat-jar插件。下载地址:http://download.youkuaiyun.com/detail/u014046192/8991729需要积分这个网址。(也可以自己去官网下载)       下载完成后将压缩包中

2017-07-10 10:35:19 485

转载 websocket页面与后台会话

由于自己需要做一个页面监控后台数据的自己了解了下websocket做了个小实验小测试类package com.pw.controller;import org.springframework.stereotype.Controller;import org.springframework.web.bind.annotation.RequestMapping;@Controll

2017-07-07 17:27:15 1105

原创 String字符串截取或者替换

由于前段时间自己调试一个接口需要将XML和JSON相互转换,但在将Bean对象转换成JSON时候,我使用的json包会把每个属性的首字母小写。而我要提交到接口方的XML文件需要首字母大写,自己写了个字符串转换的方法。public class StringUtil{public static void main(String[] args){ System.out.println(days

2017-07-06 15:47:25 1490

转载 Semaphore处理高并发的内存溢出

在项目实际应用中,由于下载文件内容都比较大,如果同时有很多用户同时在下载,JVM的内存就会升的很高,甚至崩溃。为了避免很多用户同时下载,特引入Semaphore控制一次最多有配置个线程能进入实际下载的代码,即而控制JVM内存不会升的很高而导致崩溃。 import java.io.FileInputStream; import java.io.IOException;

2017-07-06 15:22:53 669

转载 tomcat内存溢出问题解决

1.Tomcat内存溢出的原因1.OutOfMemoryError 堆内存溢出2.OutOfMemoryError 永久保存区域溢出4.OutOfMemoryError 无法创建新的线程

2017-07-06 15:00:22 310

转载 json与xml的相互转换

很多人遇到接口调试返回数据或者请求数据为XML格式,而自己公司使用的数据交互却是json格式的 这里就对xml与json相互转换写个小方法。import net.sf.json.JSONObject;import net.sf.json.xml.XMLSerializer;/** * * Title: JSON-XML转换工具* desc:* Copyright:

2017-07-05 16:39:52 601

gradle_3.1

项目jar依赖管理,类似maven的依赖工具,可以直接使用的工具

2018-09-25

java使用hibernate操作数据库jar

hibernate数据库操作jar包

2017-07-25

ssh框架使用源代码

SSH框架简单代码示例

2017-07-14

空空如也

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

TA关注的人

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