core

IdentityServer4迁移至3.x版本注意问题详解

核能气质少年 提交于 2020-03-02 08:08:11
前言 之前有一位购买我课程的童鞋利用最新的IdentityServer4版本即对应.NET Core 3.x,发布到生产环境在学习,结果出了一些问题,此前我并未过多关注IdentityServer4升级到3.x版本,所以在此做一个基本的总结,或许能对出现相同问题的童鞋能提供一点帮助。 IdentityServer4迁移至3.x版本问题 针对将.NET Core 2.x升级到3.x就不用再多讲,请参看官方迁移文档( https://docs.microsoft.com/en-us/aspnet/core/migration/22-to-30?view=aspnetcore-3.1&tabs=visual-studio ),我们只介绍对于对于配置IdentityServer4方面的更改变化 .NET Core Identity 对于Identity里面的上下文【IdentityDbContext】需要额外下载包【Microsoft.AspNetCore.Identity.EntityFrameworkCore】 OIDC配置 针对如下客户端OIDC的配置,需要下载包【Microsoft.AspNetCore.Authentication.OpenIdConnect】 授权中间件配置 针对客户端认证和授权配置,需要如下配置授权中间件(认证和授权无先后顺序) 迁移类生成

linux 系统内核参数优化

大憨熊 提交于 2020-03-02 03:53:56
一、修改内核参数 kernel.panic = 5 #内核崩溃5s后重启 kernel.core_uses_pid = 1 #控制core文件的文件名中是否添加pid作为扩展。 net.core.netdev_max_backlog = 10000 #允许队列最大的数据包数 net.core.rmem_max = 8388608 #接收套接字缓冲区最大大小 net.core.somaxconn = 1024 #每个端口最大的监听队列的长度 net.core.wmem_max = 8388608 #发送套接字缓冲区最大大小 net.ipv4.ip_forward = 0 #禁用转发 net.ipv4.ip_local_port_range = 1024 65000 #动态端口范围 net.ipv4.tcp_fin_timeout = 30 #FIN-WAIT-2状态最大时间 net.ipv4.tcp_keepalive_intvl = 2 #当探测没有确认时,重新发送探测的频度 net.ipv4.tcp_keepalive_probes = 2 #在认定连接失效之前,发送多少个TCP的keepalive探测包 net.ipv4.tcp_keepalive_time = 60 #发送keepalive消息的频度,60s net.ipv4.tcp_max_syn_backlog =

Spring的设计理念和整体架构

懵懂的女人 提交于 2020-03-02 01:23:53
1.为什么要学习spring? 1.1设计理念和目标 首先要了解spring的设计理念和目标,可以这么说,spring为开发者提供的是一个 一站式的轻量级应用开发框架 (平台),作为平台,spring抽象了我们 在许多应用开发中遇到的共性问题,同时,作为一个轻量级的应用开发框架,spring和传统的J2EE开发相比,有其自身的特点,通过这些自身的特点 充分体现了它的设计理念: 在java EE的应用开发中,支持POJO和使用JavaBean的开发方式,使应用面向接口开发,充分支持OO(面向对象)的设计方 式 。 比如,在java EE应用开发中,传统的EJB开发需要依赖按照J2EE规范实现的J2EE应用服务器,我们的应用在设计,特别是实现时,往往需要一系列的接口标 准 才能够在应用服务器的环境中得到测试和部署,这种开发方式,使应用在可测试性和部署上都会受到一些影响,spring的设计理念采用了相对EJB而言的 轻量级开发思想,即使用POJO的开发方式,只需要使用简单的java对象或者JavaBean就能进行Java EE开发,这样开发入门,测试,应用部署都得到了简化 另一方面,在我们的应用开发中,往往会涉及复杂的对象耦合关系,如果在java代码中处理这些耦合关系,对代码的维护性和应用扩展性会带来很多不便 而如果使用spring作为应用开发平台,通过使用spring的IOC容器

36.Linux应用调试-使用gdb和gdbserver

回眸只為那壹抹淺笑 提交于 2020-03-01 23:19:04
1.gdb和gdbserver调试原理   通过linux虚拟机里的gdb,来向开发板里的gdbserver发送命令,比如设置断点,运行setp等,然后开发板上的gdbserver收到命令后,便会执行应用程序做相应的动作,来实现调试的功能   和之前学的裸板GDB调试 一样,只不过之前学的是在win下的,本次是在linux里的gdb 1.1同样,它们都会需要一个带调试信息的编译文件.   通过Makefile里的arm-linux-gcc -g 来的, -g:表示编译文件里包含gdb调试信息 1.2为什么需要调试信息的编译文件?   比如读开发板的应用程序里的变量a:   首先gdb通过应用程序的带调试信息的编译文件,来找出变量a存的地址位置   然后将地址发送给开发板里的gdbserver,来读出a地址的值 2.安装gdb和gdbserver   首先进入官网下载gdb-7.4: http://ftp.gnu.org/gnu/gdb/ 2.1在虚拟机上安装GDB: # tar xjf gdb-7.4.tar.bz2 //解压 # cd gdb-7.4/ //进入gdb-7.4目录 # . / configure -- target = arm - linux //GDB需要在pc本机里运行,并调试开发板里的应用程序,所以--target设为arm-linux #make //编译

iOS教程:如何使用Core Data – 预加载和引入数据

北城余情 提交于 2020-03-01 14:18:21
这是接着上一次《 iOS教程:Core Data数据持久性存储基础教程 》的后续教程,程序也会使用上一次制作完成的。 再上一个教程中,我们只做了一个数据模型,之后我们使用这个数据模型中的数据创建了一个表视图,我们还学习了如何测试数据模型的可行性,今天,我们来看看如何在应用启动的时候,将已经存在的数据载入或者引用到我们的程序中去。 请注意我们在上一次的教程中学习到的是直接通过操作SQLite数据库来加载数据,你当然可以一直使用这种方法,但是这个教程教授的方法更加优雅,更加合理。 在下一部分的教程中,我们将会讨论如何使用NSFetchedResultsController来优化我们的应用的访问数据的方式。 至于如果你没有上一次做好的程序的话,你可以从 这里 下载。 预加载/引入数据 那么我们究竟怎样把数据存储进Core Data数据库呢?目前有两种比较好的选择。 在App启动的时候从外部文件引入数据,就是在程序开始运行的时候从外部的资源,比如SQLite数据库或者XML文件中,引入数据。 提供一个已经制作完成的SQLite数据库,首先制作一个像上次的教程说的那样的数据库模型,之后在这个模型中填充数据,填充数据的方式是使用一个utility app,这个utility app可以是一个使用Core Data API填充数据库的Mac或者iOS app,也可以是一些直接填充数据库的程序

django.core.exceptions.ImproperlyConfigured: Application labels aren't unique, duplicates: blog

杀马特。学长 韩版系。学妹 提交于 2020-03-01 10:06:01
D:\Python\PythonCodeSpace\myblog>python manage.py runserver Watching for file changes with StatReloader Exception in thread django-main-thread: Traceback (most recent call last): File "D:\Anaconda3\lib\threading.py", line 926, in _bootstrap_inner self.run() File "D:\Anaconda3\lib\threading.py", line 870, in run self._target(*self._args, **self._kwargs) File "D:\Anaconda3\lib\site-packages\django\utils\autoreload.py", line 53, in wrapper fn(*args, **kwargs) File "D:\Anaconda3\lib\site-packages\django\core\management\commands\runserver.py", line 109, in inner_run autoreload.raise_last_exception(

核心JavaScript(一):数据类型与变量之Number初探

限于喜欢 提交于 2020-03-01 09:44:19
说起Number,应该是ECMAScript中最令人关注的数据类型了,遵循IEEE754格式,最基本的声明如下: var intNum = 34; //整数 var a = 070; //若数值起始为0,JS尝试解析为8进制数字 var b = 079; //八进制解析失败,解析为十进制,返回79 var c = 08; //八进制解析再次失败,返回8 var d = 0xA; //若其实为0x或者0X,则尝试解析为十六进制 var e = 0x1f; //同上,并且ABCDEF不区分大小写 1、浮点数值 浮点数值的声明有两种方法 var a = 34.34 var b = .34 //不推荐 碰到比较大或者比较小的数值可以用科学记数法来表示 var as = 342343.34e9; //表示342343.34乘以10的9次方 但是,浮点数值的最高精度是17位小数,但在进行算术计算时其精度就远远不如整数,所以会出现如下情况 因此,永远不要测试特定的浮点数的值 ,比如: function fn(a,b) { return a + b; } console.log('今天花了' + (1.2 + 122.6) + '元'); //不可靠 //那怎么办呢,凉拌!! console.log('今天花了' + (1.2 * 100 + 122.6 * 100) / 100 + '元');

net core 序列化与反序列化与遇到的几个坑

╄→尐↘猪︶ㄣ 提交于 2020-03-01 09:24:12
原文: net core 序列化与反序列化与遇到的几个坑 之前在C#里面序列化直接引入命名空间后使用JavaScriptSerializer jss = new JavaScriptSerializer();就可以用, 而net core里面不这样用了,我们来看一看怎么使用。 nbsp; 1、序列化与反序列化。 2、开发中与C#的不同点。 序列化与反序列化: 同样的,在Nugetnbsp;入Newtonsoft.Json,如下图引用: nbsp; nbsp; 使用方式如下: //将实体类序列化为JSON var jso n= Newtonsoft.Json.JsonConvert.SerializeObject(data); //反序列化JSON nbsp;T Model = Newtonsoft.Json.JsonConvert.DeserializeObjectlt;Tgt;(json); 开发中与C#的不同点: nbsp;1、后台接收前台的值;  C# 后台接收: 在方法的括号里面直接接收; 使用Request[ldquo;指定名称rdquo;]; 使用获取body的方式 nbsp;net core 后台接收: 在方法的括号里面直接接收; 使用Request.Form[ldquo;指定名称rdquo;]; 使用获取body的方式 nbsp; 2

核心JavaScript(一):数据类型与变量之Number再探

拥有回忆 提交于 2020-03-01 08:46:13
接上篇: 4、数值转换 有3个函数可以把非数值转换为数值:Number()、parseInt()、parseFloat()。 但是,Number在转换的时候比较复杂,并且不合理,所以, 请优先选择parseInt和parseFloat 由于我们大部分情况下都是用十进制来转换,因此 始终将10作为第二个参数是非常有必要的 ! parseFloat比parseInt的不同也就是能转换浮点数,此处不再罗嗦 5、Number内置函数 先看toString,它可以传入一个参数,告诉返回的是几进制 toFixed():按照小数位来显示数值 toExponential():指数表示法,接收一个参数,返回的小数个数 toPrecision():返回合适的格式 6、Math对象 Math中有N多常量与好用的数值方法,请自行API之! 关于JS中的Number,还没完,敬请期待! 来源: oschina 链接: https://my.oschina.net/u/942854/blog/117781