当前位置: 首页 > news >正文

怎么用自己的电脑做网站空间wordpress 怎么上传头像不显示

怎么用自己的电脑做网站空间,wordpress 怎么上传头像不显示,哈尔滨网站关键词优化排名,长沙债务优化公司#x1f4e2; 大家好#xff0c;我是 【战神刘玉栋】#xff0c;有10多年的研发经验#xff0c;致力于前后端技术栈的知识沉淀和传播。 #x1f497; #x1f33b; CSDN入驻不久#xff0c;希望大家多多支持#xff0c;后续会继续提升文章质量#xff0c;绝不滥竽充数… 大家好我是 【战神刘玉栋】有10多年的研发经验致力于前后端技术栈的知识沉淀和传播。 CSDN入驻不久希望大家多多支持后续会继续提升文章质量绝不滥竽充数如需交流欢迎留言评论。 文章目录 写在前面的话构思阶段实现阶段应用阶段总结陈词 写在前面的话 上篇博文介绍了《监听器 Listener》主要介绍了 Spring 监听器的用法用的最多的还是初始化监听器可以程序启动之前执行一些诸如数据加载到缓存等动作。 显然这个用法很简单关于 ContextRefreshedEvent 的初始化监听作为具体某个模块的开发人员完全可以写一个 Spring 监听器类完成自己想要的初始化动作So easy~ 但该用法存在一些局限性 首先该操作是同步的若初始化执行的程序逻辑耗时较多会影响整个服务的启动时长进而引发一系列问题例如KS8误判启动失败等 其次该操作中只要业务逻辑存在未把控到位的情况意外抛出了异常那么将直接导致程序启动失败这可能是违背初衷的 总之这两点因素带来的影响都很大那么作为一个框架搭建人员如何应对这些现象如何给开发人员更灵活的编码体验这个是需要我们思考的。 构思阶段 情况大致了解了开始构思如何处理这个需求呢 上面提到的两个问题肯定有人要问了业务开发人员直接可以通过编码的方式避免。例如添加异步多线程操作或者将异常catch住有什么需要框架封装人员好考虑的 其实不然并不是所有开发人员都有良好的编程习惯可以对自己的代码负责。框架封装人员就是要为大部分的开发人员做兜底操作替他们考虑好可能的问题让他们更明确自己的代码走向。 那说了怎么多怎么解决呢答案就是包装一层对异步和异常进行可配置具体往下看实现。 实现阶段 1、框架层面定义一个初始化类ApplicationInitializerInvoker其也是实现 ApplicationListener 接口 2、定义一个操作接口 ApplicationInitializer包含是否异步、是否抛出异常等属性 3、定义一个抽象类 AbstractApplicationInitializer实现 ApplicationInitializer 接口的若干方法 4、在第一步的ApplicationInitializerInvoker#onApplicationEvent方法中获取项目的所有ApplicationInitializer接口的Bean包含框架内置的和用户自定义的执行初始化逻辑 5、至此流程结束详见下方代码示例部分。 public class ApplicationInitializerInvoker implements ApplicationListenerApplicationStartedEvent {private final ListApplicationInitializer initializers;Overridepublic void onApplicationEvent(ApplicationStartedEvent event) {// 是否已经处理过(多个容器加载的情况下事件会被多次刷新)if (this.processed.getAndSet(true)) {return;}if (initializers null || initializers.isEmpty()) {return;}initializers.sort(Comparator.comparingInt(ApplicationInitializer::getOrderIndex));log.info([应用初始化事件] 共找到{}个初始化事件,开始初始化..., initializers.size());long start System.currentTimeMillis();OnelinkInitResult onelinkInitResult new OnelinkInitResult();for (ApplicationInitializer initializer : initializers) {// 异步初始化if (initializer.isAsync()) {this.initWithAsync(initializer, event, onelinkInitResult);} else {this.init(initializer, event, onelinkInitResult);}}long end System.currentTimeMillis();log.info([应用初始化事件] 初始化完成,总耗时:{}ms, end - start);}/*** 同步方式初始化*/private void init(ApplicationInitializer initializer, ApplicationStartedEvent event, OnelinkInitResult initResult) throws Exception {if (!initializer.preInit(event)) {return;}try {initializer.init(event);this.finish(initializer, initResult);} catch (Exception e) {initResult.addFailureEx(e);if (initializer.throwable()) {throw e;} else {log.error(应用程序初始化失败:[{}]}, initializer.getClass().getName(), e);}}}/*** 异步方式初始化*/private void initWithAsync(ApplicationInitializer initializer, ApplicationStartedEvent event, OnelinkInitResult initResult) {ThreadUtil.execute(() - {try {this.init(initializer, event, initResult);this.finish(initializer, initResult);} catch (Exception e) {initResult.addFailureEx(e);log.error(应用程序初始化失败:[{}] - 原因:{}, initializer.getClass().getName(), e.getMessage(), e);}});} }public interface ApplicationInitializer {/*** 是否异步*/default boolean isAsync() {return false;}/*** 要执行初始化之前的判断逻辑** param event 容器事件* return , true为执行 , false 不执行*/default boolean preInit(ApplicationStartedEvent event) {return true;}/*** 执行顺序(值越小优先级越高)** return 默认优先级为0*/default int getOrderIndex() {return 0;}/*** 事件名,用于描述当前初始化的动作,可以为空*/default String eventName() {return null;}/*** 是否可以抛出异常** return true 初始化发生异常会中断程序的启动 , false 初始化发生异常不会中断程序的启动*/default boolean throwable() {return true;}/*** 初始化逻辑** param event 容器事件* throws Exception 初始化时发生的异常*/void init(ApplicationStartedEvent event) throws Exception;}public abstract class AbstractApplicationInitializer implements ApplicationInitializer {Overridepublic void init(ApplicationStartedEvent event) throws Exception {long start System.currentTimeMillis();String eventName this.eventName() null ? this.getClass().getName() : this.eventName();String asyncType this.isAsync() ? 异步方式 : 同步方式;if (preInit(event)) {this.doInit(event);}long end System.currentTimeMillis();log.info([应用初始化事件] [{}] [{}] 初始化完成,耗时:{}ms, asyncType, eventName, end - start);}/*** 执行初始化** param event 容器事件* throws Exception .*/protected abstract void doInit(ApplicationStartedEvent event) throws Exception; }应用阶段 开发人员怎么使用呢 如下所示只需要继承框架封装的抽象类AbstractApplicationInitializer即可实现doInit方法即可。 可以按需配置是否异步、是否可以抛出异常等等。 Slf4j Component public class Portalnitializer extends AbstractApplicationInitializer {Overrideprotected void doInit(ApplicationStartedEvent event) {log.info(自定义初始化事件);}/*** 是否异步*/Overridepublic boolean isAsync() {return false;}/*** 是否可以抛出异常* return true 初始化发生异常会中断程序的启动 , false 初始化发生异常不会中断程序的启动*/Overridepublic boolean throwable() {return false;} }总结陈词 上文介绍了框架封装人员如何提供一个相对灵活的初始化自定义事件让业务开发人员可以用的更顺手。 本系列博文也以此示例开篇介绍框架搭建人员如何以恰当的方式应对各式各样的情况这也是此专栏的主题。 后续将持续更新请多多支持
http://www.hkea.cn/news/14311368/

相关文章:

  • 只有域名怎么做网站网站建设维护公司排名
  • 注册网站英语网站建设实训报告收获
  • 网站开发答辩设计预期目标四川门户网站建设
  • 免费加速器永久免费版不用登录网站做SEO优化多少钱
  • 网站备案管理苏州知名网站建设
  • 深圳网站建设领先网站的域名解析怎么做
  • 黑龙江省城乡和建设厅网站自己做h5制作开发
  • 网站建设主要流程图专业网站建设定制公司哪家好
  • 手机网站带后台源代码网站备案流程图片
  • 做网站 如何注册公司怎么看一个网站是谁做的
  • 怎么申请域名 制作网站网站开发与建设方向
  • 机关网站建设创新软件工程师证书报考网站
  • 网站开发公司怎么接单子河南网站关键词优化
  • 企业网站管理系统论文蚌埠企业做网站
  • 做网站准备的资料关键词优化怎样
  • 制作网站赚钱吗网站建设常见问题及解决办法
  • 培训营销型网站建设电子商务网站创建的4个阶段
  • 建设银行网上交管网站北京工商注册流程
  • 云服务器上建网站网站开发实战视频
  • 企业网站模板趋势个人证件查询
  • 苏州做网站的公司有哪些网站ico图标怎么用
  • 淘宝上成都网站建设网络营销的方法是什么
  • 怎么区分网站的好坏3d建模是干什么的
  • 杨凌网站建设推广thinkphp做中英文网站
  • 企业黄页哪个网站好定制网站建设的流程图
  • 国外订房网站怎么和做品牌网站建设流程图
  • 母婴网站建设的与功能模块个人网站可以做百度推广吗
  • 哪个素材网站做美工最好宁波网站建设公司推荐易企网
  • 成都市住房和城乡建设局网站如何在国内做网站
  • 青岛谁做网站多少钱wordpress手机页面模板