context

【ASP.NET Core】处理异常(下篇)

别说谁变了你拦得住时间么 提交于 2020-01-16 03:45:29
上一篇中,老周给大伙伴们扯了有关 ASP.NET Core 中异常处理的简单方法。按照老周的优良作风,我们应该顺着这个思路继续挖掘。 本文老周就不自量力地介绍一下如何使用 MVC Filter 来处理异常。MVC 模型(当然适用于 Razor Page 、Web API 模型)可以用一系列的 Filter 来对请求与回应消息进行过滤处理。其中,在 Microsoft.AspNetCore.Mvc.Filters 命名空间下,你会发现有两个接口,它们跟异常处理有关: IExceptionFilter:实现 OnException 方法,可以自定义回传给客户端的异常信息。 IAsyncExceptionFilter:跟上面的一样的,只不过这厮支持异步等待而已。 在实现处理异常的 Filter 时,传给 OnException / OnExceptionAsync 方法的有一个 ExceptionContext 类型参数,我们可以通过它来设置自定义的返回结果。 访问 Exception 属性,你可以得到相关的异常实例,当然这个属性是可写的,所以你可以获取异常实例后,将它改为其他异常实例,再重新赋给这个属性,比如,你用你自己编写的异常类来重新封装。通过 Result 属性设置返回结果,这个与 MVC Action 方法的返回方法一样,不同的是,在 Action 方法中,你可以调用

Android动态加载代码技术

末鹿安然 提交于 2020-01-16 02:32:07
在开发Android App的过程当中,可能希望实现插件式软件架构,将一部分代码以另外一个APK的形式单独发布,而在主程序中加载并执行这个APK中的代码。 实现这个任务的一般方法是: // 加载类cls Context pluginContext = mainContext.createPackageContext(PLUGIN_PKG, Context.CONTEXT_IGNORE_SECURITY | Context.CONTEXT_INCLUDE_CODE); ClassLoader loader = pluginContext.getClassLoader(); Class<?> cls = loader.loadClass(CLASS_NAME); // 通过反射技术,调用cls中的方法,下面是一个示例,实际代码因情况而定 Object obj = cls.newInstance(); Method method = cls.getDeclaredMethod("someMethod"); method.invoke(obj); 但是,这个方法在Android 4.1及之后的系统中存在一些问题:对于收费应用,Google Play会将其安装在一个加密目录之下(具体就是/data/app-asec),而不是一个普通目录之下(具体就是/data/app)

【spring框架】spring获取webapplicationcontext,applicationcontext几种方法详解--(转)

拟墨画扇 提交于 2020-01-16 02:02:38
1、我们在使用springmvc进行配置的时候一般初始化都是在web.xml里面进行的,但是自己在使用的时候经常会测试一些数据,这样就只有加载spring-mvc.xml的配置文件来实现。为了更方便的使用注解,而不影响具体的实现效果,我今天看到了一个初始化的方式,就是实现ApplicationListener接口 2.spring容器加载bean完成后进行初始化 package com.cy.init; import org.springframework.context.ApplicationListener; import org.springframework.context.event.ContextRefreshedEvent; public class SpringListener implements ApplicationListener<ContextRefreshedEvent>{ //spring容器加载bean完成后进行初始化 @Override public void onApplicationEvent(ContextRefreshedEvent event) { if (event.getApplicationContext().getParent() == null) {    //root application context 没有parent

Asp.Net Core下的开源任务调度平台ScheduleMaster—快速上手

情到浓时终转凉″ 提交于 2020-01-15 18:30:22
概述 ScheduleMaster 是一个开源的分布式任务调度系统,它基于Asp.Net Core平台构建,支持跨平台多节点部署运行。 它的项目主页在这里: https://github.com/hey-hoho/ScheduleMasterCore 关于它的简单介绍可以看这里: https://www.cnblogs.com/hohoa/p/12162581.html 本地部署 使用前请准备好所需环境: Visual Studio 2019 、 .Net Core3.0 SDK 、 Mysql 5.7 、 Centos(可选) 、 Docker(可选) 。 下载源码到本地,然后用VS2019打开解决方案并编译通过。 打开项目Hos.ScheduleMaster.Web根目录下的 appsettings.json 文件,先修改Mysql数据库连接字符串以保证数据库正常访问,再找到 NodeSetting 节点,修改 IP 字段为master将要部署的ip地址(master端口为30000不用修改),在项目上右击选择发布...,发布到本地文件夹。 打开项目Hos.ScheduleMaster.QuartzHost根目录下的 appsettings.json 文件,同样先修改Mysql连接字符串,再找到 NodeSetting 节点,设置worker的名称 IdentityName

Django rest framework动态校验字段类型

▼魔方 西西 提交于 2020-01-15 17:05:49
重写is_valid动态校验参数 有了 动态返回字段 怎么能没有 动态的校验字段! 看了半天Serializer的实现代码,终于捣鼓出来了动态校验字段的方式,该方法还是自己测试阶段,没有开始实际应用,有什么问题请大家及时反馈,我这里实际使用过以后也会更新本篇的内容。 更新:已经实际应用了,暂时没有发现问题。 使用方法 调用serializers:传入的context可以在is_valid中获得 context = { "data" : { "name" : "rename" , "valid" : "CharField(required=True)" } } # 调用校验,传入的context可以在is_valid中获得 DataSerializer ( data = validated_data , context = context ) . is_valid ( True ) 数据校验serializers:重写is_valid修改 _declared_fields ,然后继续使用原有的方法校验 from rest_framework . serializers import Serializer from rest_framework . fields import CharField class DataSerializer ( Serializer ) : name =

设计模式之行为型模式

↘锁芯ラ 提交于 2020-01-15 14:31:50
1、观察者模式: /** * 抽象观察目标 */ public abstract class Subject { protected ArrayList<Observer> observers=new ArrayList<>();//定义一个观察者集合用于存储所有观察对象 //注册方法,用于向观察者集合中添加一个观察者 public void attach(Observer observer){ observers.add(observer); } //注销方法,用于在观察者集合中删除一个观察者 public void detach(Observer observer){ observers.remove(observer); } //抽象通知方法 public abstract void notifyObserver(); } /** * 具体观察目标 */ public class ConcreteSubject extends Subject { //通知所有观察者 @Override public void notifyObserver(){ for(Object obs:observers){ ((Observer)obs).update(); } } } /** * 抽象观察者 */ public interface Observer { void update();/

spring boot 之监听器ApplicationListener

好久不见. 提交于 2020-01-15 06:17:32
监听器 ApplicationListener 就是spring的监听器,能够用来监听事件,典型的观察者模式。 ApplicationListener和ContextRefreshedEvent一般都是成对出现的 在IOC容器的启动过程中,当所有的bean都已经处理完成之后,spring ioc容器会有一个发布事件的动作。从AbstractApplicationContext 的源码中可以看出: /** * Finish the refresh of this context, invoking the LifecycleProcessor's * onRefresh() method and publishing the * {@link org.springframework.context.event.ContextRefreshedEvent}. */ protected void finishRefresh() { // Clear context-level resource caches (such as ASM metadata from scanning). clearResourceCaches(); // Initialize lifecycle processor for this context. initLifecycleProcessor(); //

Android Home键监听

人盡茶涼 提交于 2020-01-15 05:40:06
Android Back Home键监听 Back键的监听   对于Back键的监听比较容易,可以在多个系统回调处拦截,比如在 activity的下列方法中都可以收到Back键按下的事件 : @Override public void onBackPressed() { // super.onBackPressed();//注释掉这行,back键不退出activity Log.i(LOG_TAG, "onBackPressed"); } @Override public boolean dispatchKeyEvent(KeyEvent event) { Log.i(LOG_TAG, "dispatchKeyEvent: keyCode -- " + event.getKeyCode()); return super.dispatchKeyEvent(event); } @Override public boolean onKeyDown(int keyCode, KeyEvent event) { Log.i(LOG_TAG, "onKeyDown: keyCode -- " + keyCode); switch (keyCode) { case KeyEvent.KEYCODE_BACK: Log.i(LOG_TAG, "KeyEvent.KEYCODE_BACK");

android Frame动画---animation-list

谁说我不能喝 提交于 2020-01-15 04:19:35
大家平时见到的最多的可能就是Frame动画了,Android中当然也少不了它。它的使用更加简单,只需要创建一个AnimationDrawabledF对象来表示Frame动画,然后通过addFrame 方法把每一帧要显示的内容添加进去,最后通过start 方法就可以播放这个动画了,同时还可以通过 setOneShot方法设置是否重复播放。 下面就是一个用Frame动画模拟日全食的效果。先看看效果。 Activity01 Java代码 package xiaohang.zhimeng; import android.app.Activity; import android.os.Bundle; import android.view.KeyEvent; import android.view.Window; import android.view.WindowManager; public class Activity01 extends Activity { private GameView mGameView; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); // 设置无标题栏 requestWindowFeature(Window

springmvc源码部分理解

白昼怎懂夜的黑 提交于 2020-01-15 03:56:11
目录 初始化 处理请求 总结: 主要还是借鉴了很多大佬的分析,参考如下: 完整版: https://www.cnblogs.com/zgwjava/p/11040154.html 分步骤一: https://blog.csdn.net/gududedabai/article/details/83352106 分步骤一: https://blog.csdn.net/gududedabai/article/details/83375156 详细版: https://blog.csdn.net/qq_38410730/article/details/79507465 从代码角度看: 初始化 DispatcherServlet.onRefresh() protected void onRefresh(ApplicationContext context) { this.initStrategies(context); } ​ //根据web.xml中配置的和默认的设置初始化 protected void initStrategies(ApplicationContext context) { this.initMultipartResolver(context); //上传文件相关 this.initLocaleResolver(context); //default this