首页
学习
活动
专区
圈层
工具
发布
    • 综合排序
    • 最热优先
    • 最新优先
    时间不限
  • 来自专栏微信公众号【Java技术江湖】

    Java并发指南7:JUC的核心AQS详解

    简介 在分析 Java 并发包 java.util.concurrent 源码的时候,少不了需要了解 AbstractQueuedSynchronizer(以下简写AQS)这个抽象,因为它是 Java 并发包的基础工具,是实现 ReentrantLock、CountDownLatch、Semaphore、FutureTask 等的基础。 本文将从 ReentrantLock 的公平锁源码出发,分析下 AbstractQueuedSynchronizer 这个是怎么工作的,希望能给大家提供一些简单的帮助。 reentrantLock.unlock(); } } } ReentrantLock 在内部用了内部类 Sync 来管理锁,所以真正的获取锁和释放锁是由 Sync 的实现来控制的 serialVersionUID = -3000897897090466540L; // 争锁 final void lock() { acquire(1); } // 来自

    53010发布于 2019-11-20
  • 来自专栏Java后端技术栈cwnait

    万字总结,Spring 最核心7 注解

    这里按照类型总结了这7种最常用的注解。 一. 核心注解 @Required 此注解用于bean的setter方法上。 可以使用其method属性来限制请求匹配的http method。 @ResponseStatus 此注解用于方法和exception上,声明此方法或者异常返回的http状态码。 使用了此注解的首先会让Spring Boot启动对base package以及其sub-pacakage下的进行component scan。 数据访问注解 @Transactional 此注解使用在接口定义、接口中的方法、定义或者中的public方法上。

    67920编辑于 2022-04-19
  • 来自专栏Tom弹架构

    30个手写Spring核心原理之自定义ORM(下)(7

    本文节选自《Spring 5核心原理》 3 基于Spring JDBC实现关键功能 3.1 ClassMappings ClassMappings主要定义基础的映射类型,代码如下: package com.tom.orm.framework 先看全局定义: package com.tom.orm.framework; ... /** * BaseDao 扩展,主要功能是支持自动拼装SQL语句,必须继承方可使用 * @author /** * 查询函数,使用查询规则 * 例如以下代码查询条件为匹配的数据 * * @param queryRule 查询规则 * @return 查询的结果List this.jdbcTemplateReadOnly().queryForList(sql,args); } ... /** * 分页查询函数,使用查询规则
    * 例如以下代码查询条件为匹配的数据 参考阅读 Tom弹架构:30个手写Spring核心原理之自定义ORM(上) Tom弹架构:花了30天才肝出来,史上最全面Java设计模式总结,看完再也不会忘 本文为“Tom弹架构”原创,转载请注明出处

    54030编辑于 2021-12-21
  • 来自专栏C++核心准则原文翻译

    C++核心准则T.150:用static_assert检查和概念的匹配

    T.150: Check that a class matches a concept using static_assert T.150:用static_assert检查和概念的匹配性 Reason 如果你希望一个和概念相匹配,尽早地检查可以减轻用户的痛苦。

    57520发布于 2020-10-10
  • 来自专栏Tom弹架构

    30个手写Spring核心原理之自定义ORM(下)(7

    本文节选自《Spring 5核心原理》3 基于Spring JDBC实现关键功能 3.1 ClassMappings ClassMappings主要定义基础的映射类型,代码如下: package com.tom.orm.framework Character.toLowerCase(name.charAt(0)) + name.substring(1); } } 3.2 EntityOperation EntityOperation主要实现数据库表结构和对象结构的映射关系 先看全局定义: package com.tom.orm.framework; ... /** * BaseDao 扩展,主要功能是支持自动拼装SQL语句,必须继承方可使用 * @author /** * 查询函数,使用查询规则 * 例如以下代码查询条件为匹配的数据 * * @param queryRule 查询规则 * @return 查询的结果List this.jdbcTemplateReadOnly().queryForList(sql,args); } ... /** * 分页查询函数,使用查询规则
    * 例如以下代码查询条件为匹配的数据

    67720编辑于 2021-12-17
  • 来自专栏新零售项目实践

    从浏览器原理拆解:为什么你的CSS选择器拖慢了页面?

    其根源在于浏览器渲染机制的三个核心特性:从右向左的匹配机制:浏览器先定位关键选择器(最右侧),再反向回溯节点,低效关键选择器会导致遍历成本指数级上升;样式重算的连锁反应:一个选择器匹配的节点变化可能触发整个渲染树的重新计算 例如选择器 .nav li a 的执行逻辑是:收集页面所有 标签(关键选择器)向上过滤元素是否为

  • 再向上过滤是否在 .nav 中。 性能陷阱:若页面有 1000 个 标签,则需执行 1000 次链检查,时间复杂度 O(n³)。 过滤机制:先快速筛选可能匹配的元素,再验证祖先关系。回溯成本:复杂的选择器需要更多的回溯验证。 CSS 选择器优化的核心是对渲染机制的深度适配:性能优先场景(如动画组件):严格遵循关键选择器优化原则,使用选择器 + CSS 变量。

45520编辑于 2025-07-17
  • Agent开发:Java视角下的RAG数据处理

    1.核心策略:语义与结构的博弈在目前的实践中,“一刀切”的固定长度分块已被抛弃,现代JavaAgent主要采用以下差异化策略:第一:必须基于“条目边界”切分。 利用正则匹配第X条,确保一个完整的法条不被切断。第二:基于“语义单元”切分。必须保留缩进,并在元数据中注入名和方法名。第三:采用“问答对”模式。保持一问一答为一个块,绝不将一个回答拆成两半。 块(Parent):保留较大的原始上下文,在最终生成时喂给大模型。逻辑流程:命中子块->通过parent_id追溯到块->将块发给LLM。 多语言/代码场景:intfloat/e5-mistral-7b-instruct表现优异。 这能过滤掉那些“相似但错误”的噪音。

    9910编辑于 2026-04-24
  • 来自专栏JAVA乐园

    浅析 Spring Security 的认证过程及相关过滤

    Spring Security 的核心之一就是它的过滤器链,我们就从它的过滤器链入手,下图是Spring Security 过滤器链的一个执行过程,本文将依照该过程来逐步的剖析其认证过程。 核心过滤器链简介 Spring Security 中的过滤器有很多,一般正常的项目中都有十几个过滤器,有时候还包含自定义的过滤器,当然我们不可能对每一个过滤器都进行分析,我们需要抓住重点,找比较关键的几个过滤器 上面已经简述了一堆核心过滤器,这里先从 SecurityContextPersistenceFilter这个过滤器的开端开始分析整个表单登录的认证过程。 的是 AbstractAuthenticationProcessingFilter,首先进入的 foFilter方法,部分源码如下: public abstract class AbstractAuthenticationProcessingFilter 大多数情况下我们会依靠它来进行身份认证,它的是 AbstractUserDetailsAuthenticationProvider ,认证过程首先会调用的 authenticate方法,核心源码如下

    85610编辑于 2022-12-05
  • 《C++ 与对象进阶下:从初始化列表到编译器优化,吃透 7核心特性》

    ⽅式,友元分为:友元函数和友元,在函数声明或者声明的前⾯加friend,并且把友元声明放到⼀个的⾥⾯。 • 外部友元函数可访问的私有和保护成员,友元函数仅仅是⼀种声明,他不是的成员函数。 • 友元函数可以在定义的任何地⽅声明,不受访问限定符限制。 • ⼀个函数可以是多个的友元函数。 ,不具有交换性,⽐如A是B的友元,但是B不是A的友元。 ) • 内部类本质也是⼀种封装,当A跟B紧密关联,A实现出来主要就是给B使⽤,那么可以考虑把A设计为B的内部类,如果放到private/protected位置,那么A就是B的专属内部类,其他地 ,以及编译器对对象拷贝的智能优化 —— 这些特性相互配合,既解决了初始化限制、数据共享、封装突破等实际问题,也为代码的高效性与优雅性提供了支撑,是写出高质量 C++ 代码的核心知识体系

    18910编辑于 2025-10-13
  • 来自专栏编程技术沉思录

    深入理解Spring Security授权机制原理

    拦截过程主要一个动作,是把该请求所拥有的权限集与@PreAuthorize设置的权限字符“sys:user:add”进行匹配,若能匹配上,说明该请求是拥有调用“/save”接口的权限,那么,就可以被允许执行该接口资源 主要授权功能在AbstractSecurityInterceptor中实现; 我们将从FilterSecurityInterceptor这里开始重点分析Security授权机制原理的实现。 super.afterInvocation(token, null); 24 } 25 } 授权机制实现的入口是super.beforeInvocation(fi),其具体实现在 > clazz); 7 } AccessDecisionManager是一个interface接口,这是授权体系的核心。 到这一步,代码就开始难懂了,这部分封装地过于复杂,总体的逻辑,是将用户信息所具有的权限与该接口的权限表达式做匹配,若能匹配成功,返回true,在三目运算符中, allowed ?

    3.1K20发布于 2020-12-28
  • 来自专栏ApacheHudi

    Apache Hudi索引实现分析(二)之HoodieGlobalBloomIndex

    分析 HoodieGlobalBloomIndex是HoodieBloomIndex的子类,其主要重写了的如下几个方法 // 加载分区下所有最新的文件 List<Tuple2<String, BloomIndexFileInfo metaClient.getFs(), metaClient.getBasePath(), config.shouldAssumeDatePartitioning()); // 调用方法加载所有分区下最新数据文件 { throw new HoodieIOException("Failed to load all partitions", e); } } 首先会获取所有的分区路径,然后调用方法获取分区下最新数据文件 .flatMap(List::iterator); } 可以看到和 HoodieBloomIndex#explodeRecordRDDWithFileComparisons处理逻辑类似,在使用索引过滤器获取所有匹配的文件和分区路径时 } else { return getTaggedRecord(hoodieRecord, Option.empty()); } }); } 其处理逻辑与处理逻辑相同

    87420发布于 2021-04-13
  • 来自专栏开发框架-Spring Boot

    【Spring Boot 源码学习】OnClassCondition 详解

    引言上篇博文带大家从源码深入了自动配置过滤匹配 FilteringSpringBootCondition,那么笔者接下来的博文将要介绍它的三个子类 OnClassCondition、OnBeanCondition ConditionalOnClass 注解配置的,然后调用 FilteringSpringBootCondition 中的 filter 方法,获取匹配失败的集合。 如果匹配失败的集合不为空,则返回不满足过滤匹配的结果【即 ConditionOutcome.noMatch.didNotFind,其中不存在需要的】List<String> missing = filter ConditionalOnMissingClass 注解配置的,然后调用 FilteringSpringBootCondition 中的 filter 方法,获取匹配成功的集合。 如果匹配成功的集合不为空,则返回不满足过滤匹配的结果【即 ConditionOutcome.noMatch.found,其中存在不想要的】List<String> present = filter(

    26521编辑于 2024-05-07
  • 来自专栏大前端(横向跨端 & 纵向全栈)

    JQuery常用命令

    原生 DOM 对象封装到JQuery 数组对象 $(domObject) ②. JQuery 数组对象中取出封装的 DOM 对象 $('button')[index] (7). JQuery 对象方法的返回值一般还是当前选定的数组对象,可以实现“链式调用” 7. 基本过滤选择器 — 重点 基本过滤选择器把所有满足选中的元素放在一个大集合中进行排序,不论是否在同一个元素中与否,下标从 0 开始 (1). :first 第一个 (2). 子元素过滤选择器 — 重点  在每个元素中进行分组,查找指定的子元素,下标从 1 开始 (1). :first-child 第一个子元素 语法: $('li:first-child'); (2). 内容过滤选择器 (1). :contains(txt) 文本中包含“txt”字的元素 (2). :has(selector) 包含选择器所匹配的元素的元素 (3).

    7.5K10发布于 2020-11-26
  • 来自专栏开发框架-Spring Boot

    【Spring Boot 源码学习】深入 FilteringSpringBootCondition

    AutoConfigurationImportFilter { // 自动配置组件的过滤匹配 boolean[] match(String[] autoConfigurationClasses 、OnClassCondition、OnWebApplicationCondition 继承该抽象,实现 getOutcomes 方法,完成实际的过滤匹配操作。 而这个 getOutcomes 方法是过滤匹配核心功能,由抽象 FilteringSpringBootCondition 的子类来实现它。 是 ClassNameFilter.MISSING,则 filter 方法获取指定的集合中加载失败的集合【即匹配失败的集合】。 总结本篇 Huazie 带大家介绍了自动配置过滤匹配核心 FilteringSpringBootCondition,这对于笔者后续博文详解它的三个子类【OnBeanCondition、OnClassCondition

    25721编辑于 2024-05-06
  • 来自专栏硬核项目经理的专栏

    Vue.js前端开发快速入门与专业应用

    v-for循环 5.v-on,事件绑定 6.v-text,参数类型为String,作用是更新元素的textContent,与{{}}不同的是,v-text需要绑定到某个元素上,能避免未编译前的闪现问题 7. 1.Vue.js提供了全局方法Vue.filter()注册一个自定义过滤器,接受过滤器的ID和过滤器函数两个参数 2.在2.0中取消了内置过滤器,即capitalize、uppercase、json等 过渡 1.使用transition绑定一个DOM元素,过滤系统自动给元素添加*-transition的class名,在插入和移除时添加了另外两个糊锅:*-enter和*-leave 2.Vue.js提供了在插入或 ,enterClass属性和leaveClass属性 4.Vue.js官方推荐CSS动画库,animate.css,需要先给元素附上animated名,然后再添加预设的动效名 B.JavaScript <slot>标签允许有一个匿名slot,不需要name值,作为找不到匹配的内容片段的回退插槽,如果没有默认的slot,这些找不到匹配的内容片段将被忽略 4.在组件中,也可以定义多个相同slot属性的DOM

    3.4K20发布于 2019-08-06
  • 来自专栏程序猿DD

    【译】Spring 官方教程:Spring Security 架构

    ProviderManager 可以有一个认证器,如果所有的提供者返回null,则将再交给去认证。 如果不可用,则会导致 AuthenticationException。 通常,每个人都是一个 ProviderManager,他们共享一个。 父母是一种“全局”资源,充当所有提供者的失败回调。 ? 图 1. 以下是配置全局() AuthenticationManager的应用程序示例: @Configuration public class ApplicationSecurity extends WebSecurityConfigurerAdapter 请注意, AuthenticationManagerBuilder 是 @Autowired 到 @Bean 中的一个方法 - 使用它构建全局() AuthenticationManager。 ,一个是整个过滤器链的请求匹配器,另一个只是选择应用的访问规则。

    2.2K70发布于 2018-03-26
  • 来自专栏程序萌部落

    JQuery选择器和JQuery包装集

    JQUERY选择器包括以下几种: 1、基础选择器 2、层次选择器 3、基本过滤器 4、内容过滤器 5、可见性过滤器 6、属性过滤7、子元素过滤器 8、表单选择器 9、表单过滤器 下面列出几种重要的选择器 属性过滤器 $("div[id]")匹配包含给定属性的元素 $("input[name='...']") 匹配给定的属性是某个特定值的元素 name='...' $("input[name! 表单过滤器 $("input:enabled")匹配所有可用元素 $("input:disabled")匹配所有不可用元素 $("input:checked")匹配所有选中的被选中元素(复选框、单选框等

    执行$("p").parent()之后结果为:[

    Hello

    Hello

    ] $("p").parent(".selected")查找段落的元素中每个名为 parent(".selected")之后结果为:[

    Hello Again

    ] 其他 使用is()方法查找段落的元素中每个名为

    4.5K20发布于 2019-08-08
  • 来自专栏springboot

    Spring源码解析(二):bean容器的创建、注册默认后置处理器、bean定义扫描

    创建bean工厂-beanFactory 调用AnnotationConfigApplicationContext 的无参构造方法 AnnotationConfigApplicationContext的是 GenericApplicationContext 调用当前的无参构造,先会调用的无参构造,先看下无参构造做的事情 这个beanFactory就是spring容器的核心实现 DefaultListableBeanFactory ,接口抽象,等 MetadataReader metadataReader = getMetadataReaderFactory().getMetadataReader(resource) failure during classpath scanning", ex); } return candidates; } isCandidateComponent判断是不是bean 和排除过滤匹配 ,如果匹配成功则此.class不是扫描的bean 先和之前注册的扫描过滤@Component匹配,再判断@Conditional的条件是否满足 protected boolean isCandidateComponent

    73221编辑于 2025-01-21
  • 来自专栏达达前端

    Web前端JQuery面试题(二)

    jquery选择器有:基本选择器,层次选择器,过滤选择器,表单选择器四大。 基本选择器: #id 根据给定的id进行匹配一个元素 element 根据给定的元素名进行匹配所有元素 .class 根据给定的匹配该类的所有元素 * 匹配所有元素 selector1,selector2 匹配给定的元素,合并一起 层次选择器: ancestor descendant 根据祖先元素匹配所有后代的元素 祖先和后代的关系 parent > child 根据元素匹配所有的子元素 父子的关系 *= value] 匹配有包含某些值的特定元素 [selector1][selector2] 同时满足多个条件使用 子元素过滤选择器: :nth-child 从1开始的,匹配每个元素下第n个元素 :first-child 匹配每个元素下的第一个子元素 :last-child 匹配每个元素下的最后一个子元素 :only-child 匹配元素中只有唯一的子元素,如果元素中有多个子元素,就不会被匹配

    2.8K30发布于 2019-07-03
  • 某知名it培训班前端三阶段vue相关面试题

    ####3.请简述Vue的单向数据流Vue的单向数据流核心规则:​**数据只能从父组件流向子组件,子组件不能直接修改组件传递的props**​;*具体表现:*组件通过props向子组件传值,子组件只读 ####7.Vue循环的key作用key是Vue列表渲染的核心属性,作用:​*唯一标识节点**​:Vue根据key判断节点是否为同一节点,避免复用错误(如输入框值错乱);​*提升更新效率**​:当列表数据变化时 **路由匹配**​:1.定义路由规则(routes数组),每个规则包含path、component等;2.VueRouter监听URL变化,匹配对应路由规则;2.​ ####34.Vue组件中的传值方式组件传值分7核心场景,覆盖父子/兄弟/跨级:|场景|传值方式|示例||----------|-----------------------------|------ **组件中转**​:组件A→组件(\$emit)→组件B(props)。####37.如果一个组件需要在多个项目中使用怎么办核心方案:​**组件封装并发布为npm包**​,步骤:1.​

    13000编辑于 2026-01-06
  • 第 2 页第 3 页第 4 页第 5 页第 6 页第 7 页第 8 页第 9 页第 10 页第 11 页
    点击加载更多
    领券