首页
学习
活动
专区
圈层
工具
发布
    • 综合排序
    • 最热优先
    • 最新优先
    时间不限
  • 来自专栏ml

    mybatis 对于基本类型数据传值的问题

    OgnlRuntime.ClassCache(); 81 private static OgnlRuntime.ClassCache nullHandlers = new OgnlRuntime.ClassCache (); 83 private static OgnlRuntime.ClassCache constructorCache = new OgnlRuntime.ClassCache(); static OgnlRuntime.ClassCache invokePermissionCache = new OgnlRuntime.ClassCache(); 87 private static OgnlRuntime.ClassCache fieldCache = new OgnlRuntime.ClassCache(); 88 private static List OgnlRuntime.ClassCache[]{new OgnlRuntime.ClassCache(), new OgnlRuntime.ClassCache()}; 90 private

    1.9K60发布于 2018-03-27
  • 来自专栏云时代Java开发:原理、实战与优化

    Java源码:深入Java IO 核心ClassCache 源码全景解析—2026 年内存敏感型元数据缓存的精妙设计与工程实践

    java.io.ClassCache正是JDK为解决“如何在有限内存下高效缓存与Class相关的元数据”这一核心难题而设计的内部工具。 ClassCache的出现,就是为了优雅地解决这个矛盾。 第二章:微观剖析——CacheRef内部类的精妙设计ClassCache的核心智慧体现在其私有静态内部类CacheRef上。 >cl)方法是ClassCache的入口,其实现逻辑清晰地展示了其应对各种状态的策略。 JDK内部应用:ObjectStreamClass:这是ClassCache最著名的使用者。

    11120编辑于 2026-05-02
  • 来自专栏IT民工的代码世界

    【springboot】基于jdbctemplate封装一个轻量级orm框架

    Class runClass) throws Exception{ if(null==cacheMap){ cacheMap = new HashMap<Class,ClassCache classCache = new ClassCache(); String tableName = InitTableName(item); Field f.isAnnotationPresent(Ignore.class))).collect(Collectors.toList()); classCache.setTableName (tableName); classCache.setKeyField(keyField); classCache.setKeyFieldName(keyFieldName ); classCache.setFields(fs); cacheMap.put(item,classCache); }

    53730编辑于 2023-07-19
  • 来自专栏俞其荣的博客

    ARouter源码解析(三)前言@Autowired解析结束

    public class AutowiredServiceImpl implements AutowiredService { private LruCache<String, ISyringe> classCache private List<String> blackList; @Override public void init(Context context) { classCache blackList.contains(className)) { // 先从缓存中取 ISyringe autowiredHelper = classCache.get / 完成依赖注入 autowiredHelper.inject(instance); // 放入缓存中 classCache.put

    2.6K30发布于 2019-01-07
  • 来自专栏俞其荣的博客

    ARouter源码解析(三)

    public class AutowiredServiceImpl implements AutowiredService { private LruCache<String, ISyringe> classCache private List<String> blackList; @Override public void init(Context context) { classCache blackList.contains(className)) { // 先从缓存中取 ISyringe autowiredHelper = classCache.get / 完成依赖注入 autowiredHelper.inject(instance); // 放入缓存中 classCache.put

    65930编辑于 2022-07-28
  • 序列化SerialVersionUID源码及过程详解

    Serializable.class.isAssignableFrom(cl))) { return null; } return Caches.localDescs.get(cl); }在通过ClassCache static class Caches { /** cache mapping local classes -> descriptors */ static final ClassCache <ObjectStreamClass> localDescs = new ClassCache<>() { @Override

    13500编辑于 2025-07-02
  • 来自专栏小灰灰

    常见Bean拷贝框架使用姿势及性能对比

    throws BeansException { CachedIntrospectionResults results; Object value; synchronized (classCache ) { value = classCache.get(beanClass); } if (value instanceof Reference) { Reference ) { classCache.put(beanClass, results); } } else { ) { classCache.put(beanClass, new WeakReference<CachedIntrospectionResults>(results)) ; } } } return results; } 看上面的实现,每次获取value都加了一个同步锁,而且还是锁的全局的classCache,这就有些过分了啊

    2.3K00发布于 2021-04-19
  • 来自专栏小灰灰

    常见Bean拷贝框架使用姿势及性能对比

    throws BeansException { CachedIntrospectionResults results; Object value; synchronized (classCache ) { value = classCache.get(beanClass); } if (value instanceof Reference) { Reference ) { classCache.put(beanClass, results); } } else { ) { classCache.put(beanClass, new WeakReference<CachedIntrospectionResults>(results)) ; } } } return results; } 看上面的实现,每次获取value都加了一个同步锁,而且还是锁的全局的classCache,这就有些过分了啊

    1.2K30发布于 2021-04-22
  • 来自专栏同步文章

    基于netty实现rpc远程调用

    Object> registryMap = new ConcurrentHashMap<String,Object>(); //用来存放class private List<String> classCache map中 这就是注册过程 * 注册的服务名字,叫接口名字 * 约定优于配置 */ private void doRegister() { if (classCache.size ()==0) { return; } for (String className:classCache) { try { +file.getName()); } else { classCache.add(packageName+"."

    75010编辑于 2022-10-25
  • 来自专栏对角另一面

    读Zepto源码之样式操作

    读Zepto源码系列文章已经放到了github上,欢迎star: reading-zepto 源码版本 本文阅读的源码为 zepto1.2.0 内部方法 classRE classCache = {} function classRE(name) { return name in classCache ? classCache[name] : (classCache[name] = new RegExp('(^|\\s)' + name + '(\\s|$)')) } 这个函数是用来返回一个正则表达式,这个正则表达式是用来匹配元素的 calssCache 初始化时是一个空对象,用 name 用为 key ,如果正则已经生成过,则直接从 classCache 中取出对应的正则表达式。 否则,生成一个正则表达式,存储到 classCache 中,并返回。

    2.4K00发布于 2017-12-27
  • 来自专栏编程从踩坑到跳坑

    动态执行代码逻辑

    >> classCache = new ConcurrentHashMap<>(); /** * 获取单例 * * @return 实例 */ > aClass = classCache.get(md5); if (aClass == null) { aClass = groovyClassLoader.parseClass (codeSource); classCache.putIfAbsent(md5, aClass); } return aClass; }

    3K10发布于 2019-12-19
  • 来自专栏小义思

    数据库增量数据同步,用Canal组件好使吗?

    CanalSyncService<T> { @Resource private RedisTemplate redisTemplate; private Class<T> classCache Class */ @SuppressWarnings("unchecked") protected Class<T> getTypeArgument() { if (classCache == null) { classCache = (Class) ((ParameterizedType) this.getClass().getGenericSuperclass ()).getActualTypeArguments()[0]; } return classCache; } /** * 获取Object标有

    82711编辑于 2024-04-10
  • 来自专栏Java快速进阶通道

    真的够可以的,基于Netty实现了PRC框架

    Object> registryMap = new ConcurrentHashMap<>(); // 类名的缓存位置 private static final List<String> classCache String className = packageName + "." + file.getName().replace(".class", "").trim(); classCache.add // 把扫描到的Class实例化,放到Map中 // 注册的服务名称就叫做接口的名字 [约定优于配置] private void doRegister(){ if(classCache.size () == 0) return; for (String className: classCache){ try { Class<

    1K20发布于 2021-04-09
  • 来自专栏哈雷彗星撞地球

    YYModel V1.0.4源码解析

    cls) return nil; // 1.声明一个类缓存字典 static CFMutableDictionaryRef classCache; /** 2.声明一个元类缓存字典 static dispatch_semaphore_t lock; dispatch_once(&onceToken, ^{ // 4.初始化类缓存字典 classCache metaCache : classCache, (__bridge const void *)(cls)); // 7.如果能取到,但是需要更新,则利用runtime更新一下 if (info metaCache : classCache, (__bridge const void *)(cls), (__bridge const void *)(info)); dispatch_semaphore_signal

    87440发布于 2018-08-22
  • 来自专栏后端开发

    深入理解Java的整型类型:如何实现2+2=5?

    先看代码:展开代码语言:JavaAI代码解释privatestaticvoiddoSomethingMagic()throwsException{Classcache=Integer.class.getDeclaredClasses

    9910编辑于 2026-03-04
  • 来自专栏张师傅的博客

    一些可以显著提高 Java 启动速度方法

    CachedLaunchedURLClassLoader extends JarIndexLaunchedURLClassLoader { private final Map<String, LoadClassResult> classCache loadClassWithCache(String name, boolean resolve) throws ClassNotFoundException { LoadClassResult result = classCache.get clazz = super.loadClass(name, resolve); } if (clazz == null) { classCache.put } return clazz; } catch (ClassNotFoundException exception) { classCache.put

    2.7K30编辑于 2022-12-05
  • 来自专栏EmacsTalk

    Clojure 运行原理之字节码生成篇

    下面来看看 DynamicClassLoader 的核心实现: // 用于存放已经加载的类 static ConcurrentHashMap<String, Reference<Class>>classCache 每次调用时会先清空缓存里已加载的类 public Class defineClass(String name, byte[] bytes, Object srcForm){ Util.clearCache(rq, classCache ); Class c = defineClass(name, bytes, 0, bytes.length); classCache.put(name, new SoftReference

    1.2K20编辑于 2022-07-26
  • 来自专栏码上修行

    内存泄漏 - 从Class类加载器说起

    在CachedIntrospectionResults中同样使用了类静态变量classCache来缓存类的定义,如果Spring的类库存在于应用类加载器上一级的JVM系统或应用服务器类路径上,则有可能导致 :"not")+"cache-safe"); if(cacheSafe) classCache.put(beanClass,results ); else classCache.put(beanClass,new WeakReference(results)); class CachedIntrospectionResults { private static final Log logger; private static final Map classCache "" : "not ") + "cache-safe"); if(cacheSafe) classCache.put(beanClass, results); else classCache.put

    3.5K40发布于 2019-09-24
  • 注解与反射底层全解密:从 JVM 原理到框架设计,再到性能优化终极方案

    >> classCache = new ConcurrentHashMap<>(); /** * 类的字段缓存 */ privatefinal Map<Class<? classCache.containsKey(className)) { synchronized (this) { if (! classCache.containsKey(className)) { Class<? > clazz = Class.forName(className); classCache.put(className, clazz); } } } return classCache.get(className); } /** * 缓存获取类的所有字段

    14310编辑于 2026-04-14
  • 来自专栏iOS技术

    YYModel 源码剖析:关注性能

    cls) return nil; //初始化几个容器和锁 static CFMutableDictionaryRef classCache; static CFMutableDictionaryRef dispatch_once_t onceToken; static dispatch_semaphore_t lock; dispatch_once(&onceToken, ^{ classCache metaCache : classCache, (__bridge const void *)(cls)); //更新成员变量列表、属性列表、方法列表 if (info && info->_needUpdate metaCache : classCache, (__bridge const void *)(cls), (__bridge const void *)(info)); dispatch_semaphore_signal (lock); } } return info; } 由于同一个类的相关信息在程序运行期间通常是相同的,所以使用 classCache(类hash) 和 metaCache

    2.4K80发布于 2018-06-19
领券