随着spring功能的扩充,以及spring封装了很多底层实现的细节,使得我们在学习spring的源码的时候经常会比较困惑,本节开始研究spring容器启动的相关过程,暂时先从整体大流程上分析,比较细节的部分后续再补充说明,spring的版本为spring-framework-5.1.15.RELEASE,我们先从后台spring应用开始说明,web相关后续补充。
ClassPathXmlApplicationContext启动说明,其类继承结构如下:
在这里插入图片描述

当我们实例化一个 ClassPathXmlApplicationContext的时候,实际上最终会调用这个方法:

public ClassPathXmlApplicationContext(String[] configLocations, boolean refresh, @Nullable ApplicationContext parent)throws BeansException {super(parent);setConfigLocations(configLocations);if (refresh) {refresh();}}

而这里面refresh方法就是启动spring容器的方法,最终是通过:

AbstractAppliationContext.refresh实现

public void refresh() throws BeansException, IllegalStateException {synchronized (this.startupShutdownMonitor) {// Prepare this context for refreshing.prepareRefresh();// Tell the subclass to refresh the internal bean factory.//获取新的beanFactory,销毁原来的beanFactory,// 通过AbstractRefreshableApplicationContext获取到 DefaultListableBeanFactory,// 在这一步获取到beanFactory的时候回调用 loadBeanDefinitions,// AbstractRefreshableApplicationContext并没有实现它,模板方法,子类自己实现逻辑ConfigurableListableBeanFactory beanFactory = obtainFreshBeanFactory();// Prepare the bean factory for use in this context.// 对beanFactory进行一些配置prepareBeanFactory(beanFactory);try {// Allows post-processing of the bean factory in context subclasses.//模板方法,子类继承实现,对beanFactory的后置处理postProcessBeanFactory(beanFactory);// Invoke factory processors registered as beans in the context.// 调用注册实现了BeanFactoryPostProcessor接口类的postProcessBeanDefinitionRegistry方法,// 主要有是两个类 BeanFactoryPostProcessor和BeanDefinitionRegistryPostProcessor,// 会通过beanFactory.getBean方法实例化BeanFactoryPostProcessor,然后执行postProcessBeanDefinitionRegistry// 这一步处理的时候实际上BeanFactory已经准备好了,因此如果想往beanFactory中增加bean可以在这个地方进行处理,// 如ConfigurationClassPostProcessor就是实现了BeanDefinitionRegistryPostProcessor接口,在这里将相关bean加入到了IOC容器中invokeBeanFactoryPostProcessors(beanFactory);// Register bean processors that intercept bean creation.//向beanFactory中注册实现了BeanPostProcessor的beanregisterBeanPostProcessors(beanFactory);// Initialize message source for this context.//初始化国际化工具类initMessageSource();// Initialize event multicaster for this context.//初始化事件广播器initApplicationEventMulticaster();// Initialize other special beans in specific context subclasses.//模板方法,子类自己去实现相应逻辑onRefresh();// Check for listener beans and register them.// 注册监听器registerListeners();// Instantiate all remaining (non-lazy-init) singletons.//初始化所有的单例bean,不包含lazy-initfinishBeanFactoryInitialization(beanFactory);// Last step: publish corresponding event.finishRefresh();}catch (BeansException ex) {if (logger.isWarnEnabled()) {logger.warn("Exception encountered during context initialization - " +"cancelling refresh attempt: " + ex);}// Destroy already created singletons to avoid dangling resources.destroyBeans();// Reset 'active' flag.cancelRefresh(ex);// Propagate exception to caller.throw ex;}finally {resetCommonCaches();}}}

如上是refresh的实现逻辑步骤,我们一项一项分析
首先是:

(1)刷新容器前的准备工作prepareRefresh

AbstractApplicationContext.prepareRefresh启动容器前的一些准备工作,包含设置状态位,验证一些必要的属性是否存在等
具体方法如下:

/*** Prepare this context for refreshing, setting its startup date and* active flag as well as performing any initialization of property sources.*/protected void prepareRefresh() {// Switch to active.this.startupDate = System.currentTimeMillis();this.closed.set(false);this.active.set(true);if (logger.isDebugEnabled()) {if (logger.isTraceEnabled()) {logger.trace("Refreshing " + this);}else {logger.debug("Refreshing " + getDisplayName());}}// Initialize any placeholder property sources in the context environment.// 初始化任意属性,子类可以实现该方法initPropertySources();// Validate that all properties marked as required are resolvable:// see ConfigurablePropertyResolver#setRequiredPropertiesgetEnvironment().validateRequiredProperties();// Store pre-refresh ApplicationListeners...if (this.earlyApplicationListeners == null) {this.earlyApplicationListeners = new LinkedHashSet<>(this.applicationListeners);}else {// Reset local application listeners to pre-refresh state.this.applicationListeners.clear();this.applicationListeners.addAll(this.earlyApplicationListeners);}// Allow for the collection of early ApplicationEvents,// to be published once the multicaster is available...this.earlyApplicationEvents = new LinkedHashSet<>();}

其中initPropertySources如下三个类中有实现,基本上都是web相关

在这里插入图片描述
准备工作完成之后,接下来就开始实例化BeanFactory:

(2)实例化BeanFactory,obtainFreshBeanFactory

AbstractApplicationContext.obtainFreshBeanFactory();
其实现在
AbstractRefreshableApplicationContext.refreshBeanFactory
中,其代码逻辑如下:

protected final void refreshBeanFactory() throws BeansException {//如果已经有了BeanFactory先销毁关闭它if (hasBeanFactory()) {destroyBeans();closeBeanFactory();}try {//直接new 了一个 DefaultListableBeanFactory,// 并且在其继承父类中 AbstractAutowireCapableBeanFactory配置忽略自动装配的配置DefaultListableBeanFactory beanFactory = createBeanFactory();beanFactory.setSerializationId(getId());customizeBeanFactory(beanFactory);//这是重要的步骤,加载所有bean的配置,这是一个模板方法,由具体子类去实现loadBeanDefinitions(beanFactory);synchronized (this.beanFactoryMonitor) {this.beanFactory = beanFactory;}}catch (IOException ex) {throw new ApplicationContextException("I/O error parsing bean definition source for " + getDisplayName(), ex);}}

可以看到,主要做了如下事情:
(1)关闭销毁如果已经存在的BeanFactory
(2)实例化一个新的beanFactory实例(DefaultListableBeanFactory)以及将之前的一些属性赋值到新的beanFactory上
(3)加载bean的配置,这是最重要的一步

loadBeanDefinitions是一个模板方法,子类实现,通过idea,我们发现有如下几种实现方式,
在这里插入图片描述
这块后面再详细描述。

这样通过obtainFreshBeanFactory我们获得了一个beanFactory,并且已经加载了所有bean的信息,下面是对beanFactory进行一些前置处理:

(3)beanFactory的前置准备工作,prepareBeanFactory

AbstractApplicationContext.prepareBeanFactory
其代码逻辑如下:

protected void prepareBeanFactory(ConfigurableListableBeanFactory beanFactory) {// Tell the internal bean factory to use the context's class loader etc.// 设置beanFactory的类加载器beanFactory.setBeanClassLoader(getClassLoader());// 设置EL表达式处理类,bean在初始化后填充属性会用到beanFactory.setBeanExpressionResolver(new StandardBeanExpressionResolver(beanFactory.getBeanClassLoader()));//设置属性表达式处理类beanFactory.addPropertyEditorRegistrar(new ResourceEditorRegistrar(this, getEnvironment()));// Configure the bean factory with context callbacks.beanFactory.addBeanPostProcessor(new ApplicationContextAwareProcessor(this));// 设置忽略自动装配的bean,当bean实现这些接口,不要Autowired自动装配beanFactory.ignoreDependencyInterface(EnvironmentAware.class);beanFactory.ignoreDependencyInterface(EmbeddedValueResolverAware.class);beanFactory.ignoreDependencyInterface(ResourceLoaderAware.class);beanFactory.ignoreDependencyInterface(ApplicationEventPublisherAware.class);beanFactory.ignoreDependencyInterface(MessageSourceAware.class);beanFactory.ignoreDependencyInterface(ApplicationContextAware.class);// BeanFactory interface not registered as resolvable type in a plain factory.// MessageSource registered (and found for autowiring) as a bean.// 会将下面 beanFactory(DefaultListableBeanFactory)和// 当前类(可以理解为我们常用的ApplicationContext)放入到 DefaultListableBeanFactory的resolvableDependencies 这个map中beanFactory.registerResolvableDependency(BeanFactory.class, beanFactory);beanFactory.registerResolvableDependency(ResourceLoader.class, this);beanFactory.registerResolvableDependency(ApplicationEventPublisher.class, this);beanFactory.registerResolvableDependency(ApplicationContext.class, this);// Register early post-processor for detecting inner beans as ApplicationListeners.beanFactory.addBeanPostProcessor(new ApplicationListenerDetector(this));// Detect a LoadTimeWeaver and prepare for weaving, if found.// 这里就是对AspectJ的支持,LOAD_TIME_WEAVER 类加载时候编织if (beanFactory.containsBean(LOAD_TIME_WEAVER_BEAN_NAME)) {beanFactory.addBeanPostProcessor(new LoadTimeWeaverAwareProcessor(beanFactory));// Set a temporary ClassLoader for type matching.beanFactory.setTempClassLoader(new ContextTypeMatchClassLoader(beanFactory.getBeanClassLoader()));}// Register default environment beans.if (!beanFactory.containsLocalBean(ENVIRONMENT_BEAN_NAME)) {beanFactory.registerSingleton(ENVIRONMENT_BEAN_NAME, getEnvironment());}if (!beanFactory.containsLocalBean(SYSTEM_PROPERTIES_BEAN_NAME)) {beanFactory.registerSingleton(SYSTEM_PROPERTIES_BEAN_NAME, getEnvironment().getSystemProperties());}if (!beanFactory.containsLocalBean(SYSTEM_ENVIRONMENT_BEAN_NAME)) {beanFactory.registerSingleton(SYSTEM_ENVIRONMENT_BEAN_NAME, getEnvironment().getSystemEnvironment());}}

可以看到,这块主要是对beanFactory做一些前置处理为了接下来加载实例化做准备。
接下来是beanFactory准备工作的后置处理,

(4)beanFactory准备工作的后置处理,postProcessBeanFactory

AbstractApplicationContext.postProcessBeanFactory

这是一个模板方法,由子类自己去实现
在这里插入图片描述
当前ClasspathXmlApplicationContext没有相关实现,可以发现一般web相关容器会实现该方法,后续研究web相关容器我们在讨论。

到这一步,我们的beanFactory基本上就准备好了,当beanFactory准备好了之后,我们需要进行beanFactory准备好之后的后置方法,这样供相关子类在这个阶段:在beanFactory准备好了之后但是还没开始任何bean实例初始化的时候进行一些操作。

(5)执行BeanDefinitionRegistryPostProcessor.postProcessBeanDefinitionRegistry和BeanFactoryPostProcessor.postProcessBeanFactory方法,通过invokeBeanFactoryPostProcessors

AbstractApplicationContext. invokeBeanFactoryPostProcessors

具体代码实现如下:

protected void invokeBeanFactoryPostProcessors(ConfigurableListableBeanFactory beanFactory) {PostProcessorRegistrationDelegate.invokeBeanFactoryPostProcessors(beanFactory, getBeanFactoryPostProcessors());// Detect a LoadTimeWeaver and prepare for weaving, if found in the meantime// (e.g. through an @Bean method registered by ConfigurationClassPostProcessor)if (beanFactory.getTempClassLoader() == null && beanFactory.containsBean(LOAD_TIME_WEAVER_BEAN_NAME)) {beanFactory.addBeanPostProcessor(new LoadTimeWeaverAwareProcessor(beanFactory));beanFactory.setTempClassLoader(new ContextTypeMatchClassLoader(beanFactory.getBeanClassLoader()));}}

主要分为两步:
(1)调用PostProcessorRegistrationDelegate.invokeBeanFactoryPostProcessors来处理beanFactoryPostProcessor相关逻辑
(2)织入AspectJ相关处理

这里加入的LoadTimeWeaverAwareProcessor后置处理器,只处理LoadTimeWeaverAware类型bean,而实现这个接口的只有如下几个类:
在这里插入图片描述
这块后面讲AspectJ我们在细谈。

PostProcessorRegistrationDelegate.invokeBeanFactoryPostProcessors(beanFactory, getBeanFactoryPostProcessors());对两类BeanFactoryPostProcessor和BeanDefinitionRegistryPostProcessor进行处理,首先会获取自定义添加的

public List<BeanFactoryPostProcessor> getBeanFactoryPostProcessors() {return this.beanFactoryPostProcessors;}

可以发现,我们可以通过调用:

public void addBeanFactoryPostProcessor(BeanFactoryPostProcessor postProcessor) {Assert.notNull(postProcessor, "BeanFactoryPostProcessor must not be null");this.beanFactoryPostProcessors.add(postProcessor);}

可以手动添加BeanFactoryPostProcessor.

PostProcessorRegistrationDelegate.invokeBeanFactoryPostProcessors(beanFactory, getBeanFactoryPostProcessors());中,首先会处理自定义添加的:
实现了BeanFactoryPostProcessor接口的postProcessBeanDefinitionRegistry方法。然后在从容器中获取实现了这个接口bean并调用postProcessBeanDefinitionRegistry。执行完这个处理后,接下来会处理BeanFactoryPostProcessor.postProcessBeanFactory。这两步处理中,如果对应的bean没有实例化,通过getBean实例化Bean,但是自定义的添加进去的是已经实例化后的bean。

(6)注册BeanPostProcessor,通过registerBeanPostProcessors

AbstractApplicationContext.registerBeanPostProcessors

将容器中BeanPostProcessor类型的bean的信息从beanFactory中获取到并通过getBean(String name, Class<T> requiredType)方法实例化这些Bean,然后将其注册到beanFactory中,这里加入的都是BeanPostProcessor的实例。

private static void registerBeanPostProcessors(ConfigurableListableBeanFactory beanFactory, List<BeanPostProcessor> postProcessors) {for (BeanPostProcessor postProcessor : postProcessors) {beanFactory.addBeanPostProcessor(postProcessor);}}

(7)初始化国际化相关工具类,通过registerBeanPostProcessors实现

AbstractApplicationContext.initMessageSource
初始化国际化相关信息

protected void initMessageSource() {ConfigurableListableBeanFactory beanFactory = getBeanFactory();if (beanFactory.containsLocalBean(MESSAGE_SOURCE_BEAN_NAME)) {this.messageSource = beanFactory.getBean(MESSAGE_SOURCE_BEAN_NAME, MessageSource.class);// Make MessageSource aware of parent MessageSource.if (this.parent != null && this.messageSource instanceof HierarchicalMessageSource) {HierarchicalMessageSource hms = (HierarchicalMessageSource) this.messageSource;if (hms.getParentMessageSource() == null) {// Only set parent context as parent MessageSource if no parent MessageSource// registered already.hms.setParentMessageSource(getInternalParentMessageSource());}}if (logger.isTraceEnabled()) {logger.trace("Using MessageSource [" + this.messageSource + "]");}}else {// Use empty MessageSource to be able to accept getMessage calls.DelegatingMessageSource dms = new DelegatingMessageSource();dms.setParentMessageSource(getInternalParentMessageSource());this.messageSource = dms;beanFactory.registerSingleton(MESSAGE_SOURCE_BEAN_NAME, this.messageSource);if (logger.isTraceEnabled()) {logger.trace("No '" + MESSAGE_SOURCE_BEAN_NAME + "' bean, using [" + this.messageSource + "]");}}}

#(8)初始化事件广播器

AbstractApplicationContext.initApplicationEventMulticaster

初始化事件广播器

protected void initApplicationEventMulticaster() {ConfigurableListableBeanFactory beanFactory = getBeanFactory();if (beanFactory.containsLocalBean(APPLICATION_EVENT_MULTICASTER_BEAN_NAME)) {this.applicationEventMulticaster =beanFactory.getBean(APPLICATION_EVENT_MULTICASTER_BEAN_NAME, ApplicationEventMulticaster.class);if (logger.isTraceEnabled()) {logger.trace("Using ApplicationEventMulticaster [" + this.applicationEventMulticaster + "]");}}else {this.applicationEventMulticaster = new SimpleApplicationEventMulticaster(beanFactory);beanFactory.registerSingleton(APPLICATION_EVENT_MULTICASTER_BEAN_NAME, this.applicationEventMulticaster);if (logger.isTraceEnabled()) {logger.trace("No '" + APPLICATION_EVENT_MULTICASTER_BEAN_NAME + "' bean, using " +"[" + this.applicationEventMulticaster.getClass().getSimpleName() + "]");}}}

可以看到如果没有当前beanFactory中不包含名为applicationEventMulticaster的bean,则会默认注入SimpleApplicationEventMulticaster当做当前applicationContext的事件广播器

(9)执行模板方法onRefresh

AbstractApplicationContext.onRefresh
这是一个模板方法,当前类是一个空的实现,子类可以复写这块的逻辑,可以看到实际实现:
在这里插入图片描述
按照spring官方给出的注释:

Initialize other special beans in specific context subclasses.

可以在这个方法中实例化某个自定义的applicationContext中特殊的bean的处理,我们也可以看到,这块主要是web相关的application在应用,我们在讲解web相关处理的时候回详细说明。

(10)注册监听器,registerListeners

AbstractApplicationContext.registerListeners
注册监听器

在(8)步的时候,我们初始化了事件广播器,这里我们将注册的ApplicationListener加入到(8)步中注册的ApplicationEventMulticaster中去,这样后续当ApplicationEventMulticaster收到相关的事件的时候,通过调用SimpleApplicationEventMulticaster.multicastEvent继而调用SimpleApplicationEventMulticaster.invokeListener来通知监听器监听相关事件(这是以默认的SimpleApplicationEventMulticaster举例说明)

(11)初始化所有的单例bean(不包含lazy-init),finishBeanFactoryInitialization

AbstractApplicationContext.finishBeanFactoryInitialization

这一步就开始初始化我们自定义的相关bean,实现如下:

protected void finishBeanFactoryInitialization(ConfigurableListableBeanFactory beanFactory) {// Initialize conversion service for this context.if (beanFactory.containsBean(CONVERSION_SERVICE_BEAN_NAME) &&beanFactory.isTypeMatch(CONVERSION_SERVICE_BEAN_NAME, ConversionService.class)) {beanFactory.setConversionService(beanFactory.getBean(CONVERSION_SERVICE_BEAN_NAME, ConversionService.class));}// Register a default embedded value resolver if no bean post-processor// (such as a PropertyPlaceholderConfigurer bean) registered any before:// at this point, primarily for resolution in annotation attribute values.if (!beanFactory.hasEmbeddedValueResolver()) {beanFactory.addEmbeddedValueResolver(strVal -> getEnvironment().resolvePlaceholders(strVal));}// Initialize LoadTimeWeaverAware beans early to allow for registering their transformers early.String[] weaverAwareNames = beanFactory.getBeanNamesForType(LoadTimeWeaverAware.class, false, false);for (String weaverAwareName : weaverAwareNames) {getBean(weaverAwareName);}// Stop using the temporary ClassLoader for type matching.beanFactory.setTempClassLoader(null);// Allow for caching all bean definition metadata, not expecting further changes.beanFactory.freezeConfiguration();// Instantiate all remaining (non-lazy-init) singletons.beanFactory.preInstantiateSingletons();}
  1. 首先是设置当前applicationContext的ConversionService.ConversionService主要是用来类型转换。
public interface ConversionService {boolean canConvert(@Nullable Class<?> sourceType, Class<?> targetType);boolean canConvert(@Nullable TypeDescriptor sourceType, TypeDescriptor targetType);<T> T convert(@Nullable Object source, Class<T> targetType);Object convert(@Nullable Object source, @Nullable TypeDescriptor sourceType, TypeDescriptor targetType);
}

其默认实现DefaultConversionService继承如下:
在这里插入图片描述

  1. 注册默认的值替换器,
    比如我们经常在属性上进行值注入:
@Value("${name}")
private String name;

这里注册默认的值解决类。

  1. 实例化Aspect相关类
  2. 缓存当前bean的配置,并冻结配置不允许更改
  3. 实例化剩下的单例,通过DeaultListableBeanFactory.preInstantiateSingletons来预实例化单例
    我们可以看下DeaultListableBeanFactory.preInstantiateSingletons的实现。
public void preInstantiateSingletons() throws BeansException {if (logger.isTraceEnabled()) {logger.trace("Pre-instantiating singletons in " + this);}// Iterate over a copy to allow for init methods which in turn register new bean definitions.// While this may not be part of the regular factory bootstrap, it does otherwise work fine.List<String> beanNames = new ArrayList<>(this.beanDefinitionNames);// Trigger initialization of all non-lazy singleton beans...for (String beanName : beanNames) {RootBeanDefinition bd = getMergedLocalBeanDefinition(beanName);if (!bd.isAbstract() && bd.isSingleton() && !bd.isLazyInit()) {if (isFactoryBean(beanName)) {Object bean = getBean(FACTORY_BEAN_PREFIX + beanName);if (bean instanceof FactoryBean) {final FactoryBean<?> factory = (FactoryBean<?>) bean;boolean isEagerInit;if (System.getSecurityManager() != null && factory instanceof SmartFactoryBean) {isEagerInit = AccessController.doPrivileged((PrivilegedAction<Boolean>)((SmartFactoryBean<?>) factory)::isEagerInit,getAccessControlContext());}else {isEagerInit = (factory instanceof SmartFactoryBean &&((SmartFactoryBean<?>) factory).isEagerInit());}if (isEagerInit) {getBean(beanName);}}}else {getBean(beanName);}}}// Trigger post-initialization callback for all applicable beans...for (String beanName : beanNames) {Object singletonInstance = getSingleton(beanName);if (singletonInstance instanceof SmartInitializingSingleton) {final SmartInitializingSingleton smartSingleton = (SmartInitializingSingleton) singletonInstance;if (System.getSecurityManager() != null) {AccessController.doPrivileged((PrivilegedAction<Object>) () -> {smartSingleton.afterSingletonsInstantiated();return null;}, getAccessControlContext());}else {smartSingleton.afterSingletonsInstantiated();}}}}

主要是两步,如果bean对应的是一个OjectFactory类型,则通过getBean获取实例,如果ObjectFactory是SmartFactoryBeanisEagerInit为true时,提前实例化对应单例。
如果是普通单例,直接通过getBean获取。
getBean这个方法后面会着重描述

(12)结束容器刷新,执行相关方法,finishRefresh

protected void finishRefresh() {// Clear context-level resource caches (such as ASM metadata from scanning).clearResourceCaches();// Initialize lifecycle processor for this context.initLifecycleProcessor();// Propagate refresh to lifecycle processor first.getLifecycleProcessor().onRefresh();// Publish the final event.publishEvent(new ContextRefreshedEvent(this));// Participate in LiveBeansView MBean, if active.LiveBeansView.registerApplicationContext(this);}

首先是清空相关资源的缓存。

然后初始化运行周期相关处理类,默认使用DefaultLifecycleProcessor

初始化生命周期处理类之后,执行onRefresh生命周期相关方法

发布容器刷新完成事件消息

如果开启了JMX,执行JMX相关处理。

至此,一个spring容器启动成功。

查看全文
如若内容造成侵权/违法违规/事实不符,请联系编程学习网邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

相关文章

  1. 图解HTTP七:确保 Web 安全的 HTTPS

    7.1 HTTP 的缺点 HTTP 主要有这些不足,例举如下。通信使用明文(不加密),内容可能会被窃听 不验证通信方的身份,因此有可能遭遇伪装 无法证明报文的完整性,所以有可能已遭篡改7.1.1 通信使用明文可能会被窃听 由于 HTTP 本身不具备加密的功能,所以也无法做到对通信整体(…...

    2024/4/16 3:27:22
  2. 海信视像:电视王者的突破和被围堵

    今年新冠疫情的意外爆发,人们居家隔离,线下销售渠道卖场闭店休业,线上渠道受物流停运影响也不景气,产品供应和销售受阻,家电行业受到致命打击。 据奥维云网调研数据显示,2020年一季度中国彩电市场零售量同比下降20.1%,零售额同比下降33.8%。 面对如此严峻的市场环境,海…...

    2024/4/16 3:27:07
  3. 笔记38 笨办法学python练习43面向对象OOP的游戏代码改动(三)自己编故事

    笔记38 笨办法学python练习43面向对象OOP的游戏代码(三)自己编故事 这个练习43还得有一个笔记才行,按照巩固练习中的要求自己来编故事,但编码的水平有限,我还是在原代码的基础上稍作改动,编一个也许可以循环全部环节的游戏故事吧。至少不要像这个故事那样,那个密码怎么也…...

    2024/4/16 3:27:12
  4. 【好消息】我们计划招收300学员,免费零基础学习设计!

    工业设计是品牌发展之魂、行业进步之源。从互联网到日常消费品、从商业公司到政府部门,各行各业都在最高管理层设置专门的设计职位。近年来设计的职能不断延伸,从单纯的产品研发环节逐步延伸至产品的前期规划、后期运营等整个流程,都需要设计人才,设计人才成为当前极为缺乏…...

    2024/4/17 20:16:02
  5. SPring整合Juint单元测试

    1.Juint单元测试不能直接Spring框架的问题分析 应用程序的入口是main方法,在Juint单元测试中没有main方法也能执行是因为junit集成了一个main方法,但junit不会管我们是否采用了Spring框架,所以更不会为我们去读取配置文件来创建容器。所以在junit单元测试中即使写了@Autowir…...

    2024/3/14 10:04:42
  6. XSS漏洞攻击相关知识

    XSS漏洞 1.原理:攻击者在有漏洞的前端页面嵌入恶意代码,导致受害者访问页面时不知情的情况下触发恶意 代码,获取受害者关键信息。2.形成漏洞原因:本质上还是对输入输出的过滤限制不严格,导致精心构造的脚本输入后,在前端被当做有效 代码并执行。3.流程4.分类:(对DVWA环境…...

    2024/4/19 16:21:49
  7. Web前端-JS高级--异常处理--面向对象三大特性--构造函数的原型

    异常处理:针对js运行过程中 可能出现的一些不正常情况做一个预处理举个栗子:刘轩准备骑行去爬山1.骑行到一半 发现车胎没气了 (应该是出发前就做好预处理的)2.骑在路上很开心 看到路边有小石子 非得过去压一下 嘭... (自我脑残行为)3.骑行到半山腰 遇到山体滑坡 只能原路返回…...

    2024/4/15 5:11:29
  8. Springboot之访问web资源

    Springboot之访问web资源 在springmvc中,访问web资源是重要的知识。 其中springboot整合了主要两种访问web资源的方式。 RestTemplate访问 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-enf0xrnP-1591437322240)(C:\Users\18221\AppData\Roaming\T…...

    2024/4/20 19:02:44
  9. Vue父子组件传值之.sync

    首先,讲讲.sync的来历,在项目中常有父子组件传值,子组件修改父组件数据的需求,而Vue是不允许子组件直接修改操作的,直接红牌警告:于是乎,有了以下操作:子组件在props中声明,与父组件商量好的传值暗号xxx(用来作为传递值的别名) 子组件通过触发一个事件来告诉父组件:…...

    2024/4/15 5:11:27
  10. Xshell+Vbox+centOS7 安装、配置、连接

    Xshell+Vbox+centOS7 安装、配置、连接 第一次使用这些个软件,遇到了很多问题,花了巨多时间终于连上了,总结一下过程。 VBox中安装配置cents 安装配置参考:https://blog.csdn.net/lllllyt/article/details/82634089 配置时注意:因为在参考博客中,配置网络时用的是网络地址…...

    2024/4/15 5:11:26
  11. 51智能车入门

    在刚接触51单片机的时候觉得这是很难的事情 记录蓝牙小车的制作过程一、前言 不要觉得它很难,就像在做一个玩具一样。蓝牙小车对于初学者是道坎,pwm调速这个就难到了很多人,其实这些都不难。 二、什么是pwm调速 网上是这么说的: PWM(Pulse Width Modulation)控制——脉冲宽…...

    2024/4/20 4:27:25
  12. CT二分类

    网址 https://covid-ct.grand-challenge.org/ 首先阅读比赛相关的: 一 评估标准 F1 AUC ACC 二 数据集说明 有来自216个病人的349张ct图片 还有阴性的图片 比赛方已经分好了测试集训练集和验证集,用txt保存 比赛方还给出了两种参考方案也放在了github上 三 准备工作 1 数据集…...

    2024/4/16 3:27:27
  13. 《Python编程:从入门到实践》第17章添加自定义工具提示出错

    《Python编程:从入门到实践》第17章添加自定义工具提示出错:AttributeError: ‘NoneType’ object has no attribute ‘decode’ Stack Overflow有人回答了这个问题,链接:https://stackoverflow.com/questions/56890528/nonetype-object-has-no-attribute-decode 问题就在于…...

    2024/4/16 3:28:18
  14. 缓存系列文章--5.缓存穿透问题

    转载请注明出处哈:http://carlosfu.iteye.com/blog/2269678 一. 缓存穿透 (请求数据缓存大量不命中):缓存穿透是指查询一个一定不存在的数据,由于缓存不命中,并且出于容错考虑, 如果从存储层查不到数据则不写入缓存,这将导致这个不存在的数据每次请求都要到存储层去查询…...

    2024/4/16 3:28:18
  15. (Linux-OS实验-求100000个浮点数之和)信号量与共享内存

    信号量与共享内存 求100000个浮点数的和。要求: (1)随机生成100000个浮点数(父进程); (2)然后创建4个后代进程,分别求25000个浮点数的和; (3)父进程对4个后代进程的结果求和; (4)进程间用共享内存进行通信,用信号量实现同步和互斥。要求在创建子进程之后,由父…...

    2024/4/16 3:28:13
  16. 对3d坐标和四元数做线性插值计算c++实现

    功能介绍 设位姿点PPP的向量为(t,x,y,z,qx,qy,qz,qw)(t,x,y,z,qx,qy,qz,qw)(t,x,y,z,qx,qy,qz,qw), 其中 (t)(t)(t)代表时间戳,(x,y,z)(x,y,z)(x,y,z)代表3d3d3d位置坐标,(qx,qy,qz,qw)(qx,qy,qz,qw)(qx,qy,qz,qw)代表姿态四元数, 所要求的是按照指定的时间间隔,在两个位姿…...

    2024/4/20 0:50:45
  17. 聊聊 Java 与原生,尝尝 GraalVM 与 Quarkus | 向云原生靠近

    本人资历、水平有限,如有错误请大佬们批评指正,谢谢!文章目录前言基于 JVM 的应用启动比原生应用慢一拍运行期间性能不差,启动笨重一点又怎么样?环境准备本文环境概览准备 GraalVM初尝 GraalVM 的 Native ImageGraalVM 这名字听起来像是新研发的虚拟机?hello, world 的 N…...

    2024/4/16 3:27:58
  18. 慕课网项目 校园商铺项目01-------------准备工作

    准备工作环境准备创建项目解决报错解决警告新建Source Folder更改Dynamic Web Module版本 环境准备 1.Eclipse 2.Maven3.5.0 3.Tomcat8.5 4.JDK8 5.Mysql5.5 创建项目 解决报错 新建maven project——选择maven-archetype-webapp——一路点击next完成项目创建创建完成后会发现项…...

    2024/4/16 3:28:18
  19. 我的工具箱

    命令行工具 – cmder支持右键新建一个新的命令行窗口、这不香 ? 这么好看的界面、不香?各种提示、不香? Kafka Tool可以看到集群中的所有 broker , topic , consumer , 可以看到堆积情况、消息的 key、value 。支持多个平台(这个很重要) Jetbrains 全家桶之 – IntelliJ IDE…...

    2024/4/20 18:11:45
  20. freertos任务调度器

    任务调度器初始化过程: 1.创建空闲任务 /* The Idle task is being created using dynamically allocated RAM. */ xReturn = xTaskCreate( prvIdleTask, “IDLE”, configMINIMAL_STACK_SIZE, ( void * ) NULL, ( tskIDLE_PRIORITY | portPRIVILEGE_BIT ), &xIdleTaskHan…...

    2024/4/16 3:29:09

最新文章

  1. 获取单笔交易的详细信息,taobao.trade.fullinfo.get

    获取单笔交易的详细信息&#xff0c;taobao.trade.fullinfo.get 获取单笔交易的详细信息 1. 只有单笔订单的情况下Trade数据结构中才包含商品相关的信息 2. 获取到的Order中的payment字段在单笔子订单时包含物流费用&#xff0c;多笔子订单时不包含物流费用 3. 获取红包金额使…...

    2024/4/20 20:19:44
  2. 梯度消失和梯度爆炸的一些处理方法

    在这里是记录一下梯度消失或梯度爆炸的一些处理技巧。全当学习总结了如有错误还请留言&#xff0c;在此感激不尽。 权重和梯度的更新公式如下&#xff1a; w w − η ⋅ ∇ w w w - \eta \cdot \nabla w ww−η⋅∇w 个人通俗的理解梯度消失就是网络模型在反向求导的时候出…...

    2024/3/20 10:50:27
  3. Vue通过自定义指令实现元素平滑上升的动画效果(可以自定义动画时间、动画效果、动画速度等等)。

    1、演示 2、介绍 这个指令不是原生自带的&#xff0c;需要手动去书写&#xff0c;但是这辈子只需要编写这一次就好了&#xff0c;后边可以反复利用。 3、关键API IntersectionObserver IntersectionObserver 是一个用于监测元素是否进入或离开视口&#xff08;viewport&#x…...

    2024/4/19 16:37:10
  4. Python读取文件里内容

    如果要读取一个文件里的内容是 # 文件名&#xff1a;db.txt 1 2 3 4代码如下 import requests f open("db.txt", mode"rb") content f.read() f.close()data content.decode(utf-8)# 存到 list 里 data_list data.split(\r\n) print(data_list)# 结果…...

    2024/4/20 4:36:09
  5. jQuery(一)

    文章目录 1. 基本介绍2.原理示意图3.快速入门1.下载jQuery2.创建文件夹&#xff0c;放入jQuery3.引入jQuery4.代码实例 4.jQuery对象与DOM对象转换1.基本介绍2.dom对象转换JQuery对象3.JQuery对象转换dom对象4.jQuery对象获取数据获取value使用val&#xff08;&#xff09;获取…...

    2024/4/20 9:51:00
  6. 【外汇早评】美通胀数据走低,美元调整

    原标题:【外汇早评】美通胀数据走低,美元调整昨日美国方面公布了新一期的核心PCE物价指数数据,同比增长1.6%,低于前值和预期值的1.7%,距离美联储的通胀目标2%继续走低,通胀压力较低,且此前美国一季度GDP初值中的消费部分下滑明显,因此市场对美联储后续更可能降息的政策…...

    2024/4/19 14:24:02
  7. 【原油贵金属周评】原油多头拥挤,价格调整

    原标题:【原油贵金属周评】原油多头拥挤,价格调整本周国际劳动节,我们喜迎四天假期,但是整个金融市场确实流动性充沛,大事频发,各个商品波动剧烈。美国方面,在本周四凌晨公布5月份的利率决议和新闻发布会,维持联邦基金利率在2.25%-2.50%不变,符合市场预期。同时美联储…...

    2024/4/19 18:20:22
  8. 【外汇周评】靓丽非农不及疲软通胀影响

    原标题:【外汇周评】靓丽非农不及疲软通胀影响在刚结束的周五,美国方面公布了新一期的非农就业数据,大幅好于前值和预期,新增就业重新回到20万以上。具体数据: 美国4月非农就业人口变动 26.3万人,预期 19万人,前值 19.6万人。 美国4月失业率 3.6%,预期 3.8%,前值 3…...

    2024/4/19 11:57:31
  9. 【原油贵金属早评】库存继续增加,油价收跌

    原标题:【原油贵金属早评】库存继续增加,油价收跌周三清晨公布美国当周API原油库存数据,上周原油库存增加281万桶至4.692亿桶,增幅超过预期的74.4万桶。且有消息人士称,沙特阿美据悉将于6月向亚洲炼油厂额外出售更多原油,印度炼油商预计将每日获得至多20万桶的额外原油供…...

    2024/4/19 11:57:31
  10. 【外汇早评】日本央行会议纪要不改日元强势

    原标题:【外汇早评】日本央行会议纪要不改日元强势近两日日元大幅走强与近期市场风险情绪上升,避险资金回流日元有关,也与前一段时间的美日贸易谈判给日本缓冲期,日本方面对汇率问题也避免继续贬值有关。虽然今日早间日本央行公布的利率会议纪要仍然是支持宽松政策,但这符…...

    2024/4/19 11:57:52
  11. 【原油贵金属早评】欧佩克稳定市场,填补伊朗问题的影响

    原标题:【原油贵金属早评】欧佩克稳定市场,填补伊朗问题的影响近日伊朗局势升温,导致市场担忧影响原油供给,油价试图反弹。此时OPEC表态稳定市场。据消息人士透露,沙特6月石油出口料将低于700万桶/日,沙特已经收到石油消费国提出的6月份扩大出口的“适度要求”,沙特将满…...

    2024/4/19 11:57:53
  12. 【外汇早评】美欲与伊朗重谈协议

    原标题:【外汇早评】美欲与伊朗重谈协议美国对伊朗的制裁遭到伊朗的抗议,昨日伊朗方面提出将部分退出伊核协议。而此行为又遭到欧洲方面对伊朗的谴责和警告,伊朗外长昨日回应称,欧洲国家履行它们的义务,伊核协议就能保证存续。据传闻伊朗的导弹已经对准了以色列和美国的航…...

    2024/4/19 11:58:14
  13. 【原油贵金属早评】波动率飙升,市场情绪动荡

    原标题:【原油贵金属早评】波动率飙升,市场情绪动荡因中美贸易谈判不安情绪影响,金融市场各资产品种出现明显的波动。随着美国与中方开启第十一轮谈判之际,美国按照既定计划向中国2000亿商品征收25%的关税,市场情绪有所平复,已经开始接受这一事实。虽然波动率-恐慌指数VI…...

    2024/4/19 11:58:20
  14. 【原油贵金属周评】伊朗局势升温,黄金多头跃跃欲试

    原标题:【原油贵金属周评】伊朗局势升温,黄金多头跃跃欲试美国和伊朗的局势继续升温,市场风险情绪上升,避险黄金有向上突破阻力的迹象。原油方面稍显平稳,近期美国和OPEC加大供给及市场需求回落的影响,伊朗局势并未推升油价走强。近期中美贸易谈判摩擦再度升级,美国对中…...

    2024/4/20 7:40:48
  15. 【原油贵金属早评】市场情绪继续恶化,黄金上破

    原标题:【原油贵金属早评】市场情绪继续恶化,黄金上破周初中国针对于美国加征关税的进行的反制措施引发市场情绪的大幅波动,人民币汇率出现大幅的贬值动能,金融市场受到非常明显的冲击。尤其是波动率起来之后,对于股市的表现尤其不安。隔夜美国股市出现明显的下行走势,这…...

    2024/4/19 11:58:39
  16. 【外汇早评】美伊僵持,风险情绪继续升温

    原标题:【外汇早评】美伊僵持,风险情绪继续升温昨日沙特两艘油轮再次发生爆炸事件,导致波斯湾局势进一步恶化,市场担忧美伊可能会出现摩擦生火,避险品种获得支撑,黄金和日元大幅走强。美指受中美贸易问题影响而在低位震荡。继5月12日,四艘商船在阿联酋领海附近的阿曼湾、…...

    2024/4/19 11:58:51
  17. 【原油贵金属早评】贸易冲突导致需求低迷,油价弱势

    原标题:【原油贵金属早评】贸易冲突导致需求低迷,油价弱势近日虽然伊朗局势升温,中东地区几起油船被袭击事件影响,但油价并未走高,而是出于调整结构中。由于市场预期局势失控的可能性较低,而中美贸易问题导致的全球经济衰退风险更大,需求会持续低迷,因此油价调整压力较…...

    2024/4/20 3:12:02
  18. 氧生福地 玩美北湖(上)——为时光守候两千年

    原标题:氧生福地 玩美北湖(上)——为时光守候两千年一次说走就走的旅行,只有一张高铁票的距离~ 所以,湖南郴州,我来了~ 从广州南站出发,一个半小时就到达郴州西站了。在动车上,同时改票的南风兄和我居然被分到了一个车厢,所以一路非常愉快地聊了过来。 挺好,最起…...

    2024/4/19 11:59:15
  19. 氧生福地 玩美北湖(中)——永春梯田里的美与鲜

    原标题:氧生福地 玩美北湖(中)——永春梯田里的美与鲜一觉醒来,因为大家太爱“美”照,在柳毅山庄去寻找龙女而错过了早餐时间。近十点,向导坏坏还是带着饥肠辘辘的我们去吃郴州最富有盛名的“鱼头粉”。说这是“十二分推荐”,到郴州必吃的美食之一。 哇塞!那个味美香甜…...

    2024/4/19 11:59:23
  20. 氧生福地 玩美北湖(下)——奔跑吧骚年!

    原标题:氧生福地 玩美北湖(下)——奔跑吧骚年!让我们红尘做伴 活得潇潇洒洒 策马奔腾共享人世繁华 对酒当歌唱出心中喜悦 轰轰烈烈把握青春年华 让我们红尘做伴 活得潇潇洒洒 策马奔腾共享人世繁华 对酒当歌唱出心中喜悦 轰轰烈烈把握青春年华 啊……啊……啊 两…...

    2024/4/19 11:59:44
  21. 扒开伪装医用面膜,翻六倍价格宰客,小姐姐注意了!

    原标题:扒开伪装医用面膜,翻六倍价格宰客,小姐姐注意了!扒开伪装医用面膜,翻六倍价格宰客!当行业里的某一品项火爆了,就会有很多商家蹭热度,装逼忽悠,最近火爆朋友圈的医用面膜,被沾上了污点,到底怎么回事呢? “比普通面膜安全、效果好!痘痘、痘印、敏感肌都能用…...

    2024/4/19 11:59:48
  22. 「发现」铁皮石斛仙草之神奇功效用于医用面膜

    原标题:「发现」铁皮石斛仙草之神奇功效用于医用面膜丽彦妆铁皮石斛医用面膜|石斛多糖无菌修护补水贴19大优势: 1、铁皮石斛:自唐宋以来,一直被列为皇室贡品,铁皮石斛生于海拔1600米的悬崖峭壁之上,繁殖力差,产量极低,所以古代仅供皇室、贵族享用 2、铁皮石斛自古民间…...

    2024/4/19 12:00:06
  23. 丽彦妆\医用面膜\冷敷贴轻奢医学护肤引导者

    原标题:丽彦妆\医用面膜\冷敷贴轻奢医学护肤引导者【公司简介】 广州华彬企业隶属香港华彬集团有限公司,专注美业21年,其旗下品牌: 「圣茵美」私密荷尔蒙抗衰,产后修复 「圣仪轩」私密荷尔蒙抗衰,产后修复 「花茵莳」私密荷尔蒙抗衰,产后修复 「丽彦妆」专注医学护…...

    2024/4/19 16:57:22
  24. 广州械字号面膜生产厂家OEM/ODM4项须知!

    原标题:广州械字号面膜生产厂家OEM/ODM4项须知!广州械字号面膜生产厂家OEM/ODM流程及注意事项解读: 械字号医用面膜,其实在我国并没有严格的定义,通常我们说的医美面膜指的应该是一种「医用敷料」,也就是说,医用面膜其实算作「医疗器械」的一种,又称「医用冷敷贴」。 …...

    2024/4/19 12:00:25
  25. 械字号医用眼膜缓解用眼过度到底有无作用?

    原标题:械字号医用眼膜缓解用眼过度到底有无作用?医用眼膜/械字号眼膜/医用冷敷眼贴 凝胶层为亲水高分子材料,含70%以上的水分。体表皮肤温度传导到本产品的凝胶层,热量被凝胶内水分子吸收,通过水分的蒸发带走大量的热量,可迅速地降低体表皮肤局部温度,减轻局部皮肤的灼…...

    2024/4/19 12:00:40
  26. 配置失败还原请勿关闭计算机,电脑开机屏幕上面显示,配置失败还原更改 请勿关闭计算机 开不了机 这个问题怎么办...

    解析如下&#xff1a;1、长按电脑电源键直至关机&#xff0c;然后再按一次电源健重启电脑&#xff0c;按F8健进入安全模式2、安全模式下进入Windows系统桌面后&#xff0c;按住“winR”打开运行窗口&#xff0c;输入“services.msc”打开服务设置3、在服务界面&#xff0c;选中…...

    2022/11/19 21:17:18
  27. 错误使用 reshape要执行 RESHAPE,请勿更改元素数目。

    %读入6幅图像&#xff08;每一幅图像的大小是564*564&#xff09; f1 imread(WashingtonDC_Band1_564.tif); subplot(3,2,1),imshow(f1); f2 imread(WashingtonDC_Band2_564.tif); subplot(3,2,2),imshow(f2); f3 imread(WashingtonDC_Band3_564.tif); subplot(3,2,3),imsho…...

    2022/11/19 21:17:16
  28. 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机...

    win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机”问题的解决方法在win7系统关机时如果有升级系统的或者其他需要会直接进入一个 等待界面&#xff0c;在等待界面中我们需要等待操作结束才能关机&#xff0c;虽然这比较麻烦&#xff0c;但是对系统进行配置和升级…...

    2022/11/19 21:17:15
  29. 台式电脑显示配置100%请勿关闭计算机,“准备配置windows 请勿关闭计算机”的解决方法...

    有不少用户在重装Win7系统或更新系统后会遇到“准备配置windows&#xff0c;请勿关闭计算机”的提示&#xff0c;要过很久才能进入系统&#xff0c;有的用户甚至几个小时也无法进入&#xff0c;下面就教大家这个问题的解决方法。第一种方法&#xff1a;我们首先在左下角的“开始…...

    2022/11/19 21:17:14
  30. win7 正在配置 请勿关闭计算机,怎么办Win7开机显示正在配置Windows Update请勿关机...

    置信有很多用户都跟小编一样遇到过这样的问题&#xff0c;电脑时发现开机屏幕显现“正在配置Windows Update&#xff0c;请勿关机”(如下图所示)&#xff0c;而且还需求等大约5分钟才干进入系统。这是怎样回事呢&#xff1f;一切都是正常操作的&#xff0c;为什么开时机呈现“正…...

    2022/11/19 21:17:13
  31. 准备配置windows 请勿关闭计算机 蓝屏,Win7开机总是出现提示“配置Windows请勿关机”...

    Win7系统开机启动时总是出现“配置Windows请勿关机”的提示&#xff0c;没过几秒后电脑自动重启&#xff0c;每次开机都这样无法进入系统&#xff0c;此时碰到这种现象的用户就可以使用以下5种方法解决问题。方法一&#xff1a;开机按下F8&#xff0c;在出现的Windows高级启动选…...

    2022/11/19 21:17:12
  32. 准备windows请勿关闭计算机要多久,windows10系统提示正在准备windows请勿关闭计算机怎么办...

    有不少windows10系统用户反映说碰到这样一个情况&#xff0c;就是电脑提示正在准备windows请勿关闭计算机&#xff0c;碰到这样的问题该怎么解决呢&#xff0c;现在小编就给大家分享一下windows10系统提示正在准备windows请勿关闭计算机的具体第一种方法&#xff1a;1、2、依次…...

    2022/11/19 21:17:11
  33. 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机”的解决方法...

    今天和大家分享一下win7系统重装了Win7旗舰版系统后&#xff0c;每次关机的时候桌面上都会显示一个“配置Windows Update的界面&#xff0c;提示请勿关闭计算机”&#xff0c;每次停留好几分钟才能正常关机&#xff0c;导致什么情况引起的呢&#xff1f;出现配置Windows Update…...

    2022/11/19 21:17:10
  34. 电脑桌面一直是清理请关闭计算机,windows7一直卡在清理 请勿关闭计算机-win7清理请勿关机,win7配置更新35%不动...

    只能是等着&#xff0c;别无他法。说是卡着如果你看硬盘灯应该在读写。如果从 Win 10 无法正常回滚&#xff0c;只能是考虑备份数据后重装系统了。解决来方案一&#xff1a;管理员运行cmd&#xff1a;net stop WuAuServcd %windir%ren SoftwareDistribution SDoldnet start WuA…...

    2022/11/19 21:17:09
  35. 计算机配置更新不起,电脑提示“配置Windows Update请勿关闭计算机”怎么办?

    原标题&#xff1a;电脑提示“配置Windows Update请勿关闭计算机”怎么办&#xff1f;win7系统中在开机与关闭的时候总是显示“配置windows update请勿关闭计算机”相信有不少朋友都曾遇到过一次两次还能忍但经常遇到就叫人感到心烦了遇到这种问题怎么办呢&#xff1f;一般的方…...

    2022/11/19 21:17:08
  36. 计算机正在配置无法关机,关机提示 windows7 正在配置windows 请勿关闭计算机 ,然后等了一晚上也没有关掉。现在电脑无法正常关机...

    关机提示 windows7 正在配置windows 请勿关闭计算机 &#xff0c;然后等了一晚上也没有关掉。现在电脑无法正常关机以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容&#xff0c;让我们赶快一起来看一下吧&#xff01;关机提示 windows7 正在配…...

    2022/11/19 21:17:05
  37. 钉钉提示请勿通过开发者调试模式_钉钉请勿通过开发者调试模式是真的吗好不好用...

    钉钉请勿通过开发者调试模式是真的吗好不好用 更新时间:2020-04-20 22:24:19 浏览次数:729次 区域: 南阳 > 卧龙 列举网提醒您:为保障您的权益,请不要提前支付任何费用! 虚拟位置外设器!!轨迹模拟&虚拟位置外设神器 专业用于:钉钉,外勤365,红圈通,企业微信和…...

    2022/11/19 21:17:05
  38. 配置失败还原请勿关闭计算机怎么办,win7系统出现“配置windows update失败 还原更改 请勿关闭计算机”,长时间没反应,无法进入系统的解决方案...

    前几天班里有位学生电脑(windows 7系统)出问题了&#xff0c;具体表现是开机时一直停留在“配置windows update失败 还原更改 请勿关闭计算机”这个界面&#xff0c;长时间没反应&#xff0c;无法进入系统。这个问题原来帮其他同学也解决过&#xff0c;网上搜了不少资料&#x…...

    2022/11/19 21:17:04
  39. 一个电脑无法关闭计算机你应该怎么办,电脑显示“清理请勿关闭计算机”怎么办?...

    本文为你提供了3个有效解决电脑显示“清理请勿关闭计算机”问题的方法&#xff0c;并在最后教给你1种保护系统安全的好方法&#xff0c;一起来看看&#xff01;电脑出现“清理请勿关闭计算机”在Windows 7(SP1)和Windows Server 2008 R2 SP1中&#xff0c;添加了1个新功能在“磁…...

    2022/11/19 21:17:03
  40. 请勿关闭计算机还原更改要多久,电脑显示:配置windows更新失败,正在还原更改,请勿关闭计算机怎么办...

    许多用户在长期不使用电脑的时候&#xff0c;开启电脑发现电脑显示&#xff1a;配置windows更新失败&#xff0c;正在还原更改&#xff0c;请勿关闭计算机。。.这要怎么办呢&#xff1f;下面小编就带着大家一起看看吧&#xff01;如果能够正常进入系统&#xff0c;建议您暂时移…...

    2022/11/19 21:17:02
  41. 还原更改请勿关闭计算机 要多久,配置windows update失败 还原更改 请勿关闭计算机,电脑开机后一直显示以...

    配置windows update失败 还原更改 请勿关闭计算机&#xff0c;电脑开机后一直显示以以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容&#xff0c;让我们赶快一起来看一下吧&#xff01;配置windows update失败 还原更改 请勿关闭计算机&#x…...

    2022/11/19 21:17:01
  42. 电脑配置中请勿关闭计算机怎么办,准备配置windows请勿关闭计算机一直显示怎么办【图解】...

    不知道大家有没有遇到过这样的一个问题&#xff0c;就是我们的win7系统在关机的时候&#xff0c;总是喜欢显示“准备配置windows&#xff0c;请勿关机”这样的一个页面&#xff0c;没有什么大碍&#xff0c;但是如果一直等着的话就要两个小时甚至更久都关不了机&#xff0c;非常…...

    2022/11/19 21:17:00
  43. 正在准备配置请勿关闭计算机,正在准备配置windows请勿关闭计算机时间长了解决教程...

    当电脑出现正在准备配置windows请勿关闭计算机时&#xff0c;一般是您正对windows进行升级&#xff0c;但是这个要是长时间没有反应&#xff0c;我们不能再傻等下去了。可能是电脑出了别的问题了&#xff0c;来看看教程的说法。正在准备配置windows请勿关闭计算机时间长了方法一…...

    2022/11/19 21:16:59
  44. 配置失败还原请勿关闭计算机,配置Windows Update失败,还原更改请勿关闭计算机...

    我们使用电脑的过程中有时会遇到这种情况&#xff0c;当我们打开电脑之后&#xff0c;发现一直停留在一个界面&#xff1a;“配置Windows Update失败&#xff0c;还原更改请勿关闭计算机”&#xff0c;等了许久还是无法进入系统。如果我们遇到此类问题应该如何解决呢&#xff0…...

    2022/11/19 21:16:58
  45. 如何在iPhone上关闭“请勿打扰”

    Apple’s “Do Not Disturb While Driving” is a potentially lifesaving iPhone feature, but it doesn’t always turn on automatically at the appropriate time. For example, you might be a passenger in a moving car, but your iPhone may think you’re the one dri…...

    2022/11/19 21:16:57