- 博客(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
原创 设计模式之单列模式
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的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
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅