在OpenSSL 文档中,它说:
所有这些功能都以宏的形式实现.包含1的那些增加了所提供的证书或链的引用计数,因此必须在操作之后的某个时刻释放它.包含0的那些不会增加引用计数,并且在操作之后不得释放提供的证书或链.
但是,当我试图查看一些案例的例子时,我应该在困惑的地方使用哪一个.
第一个OpenSSL:
它使用SSL_add0_chain_cert自身的SSL_CTX_use_certificate_chain_file功能ssl_rsa.c.这是来源:
static int use_certificate_chain_file(SSL_CTX *ctx, SSL *ssl, const char *file) {
if (ctx)
ret = SSL_CTX_use_certificate(ctx, x);
else
ret = SSL_use_certificate(ssl, x);
......
while ((ca = PEM_read_bio_X509(in, NULL, passwd_callback,
passwd_callback_userdata))
!= NULL) {
if (ctx)
r = SSL_CTX_add0_chain_cert(ctx, ca);
else
r = SSL_add0_chain_cert(ssl, ca);
......
}
Run Code Online (Sandbox Code Playgroud)
我看到的第二种用法是OpenResty Lua:
它SSL_add0_chain_cert以一种方式设置certificate(ngx_http_lua_ffi_ssl_set_der_certificate),见这里:
int ngx_http_lua_ffi_ssl_set_der_certificate(ngx_http_request_t *r,
const char *data, size_t …Run Code Online (Sandbox Code Playgroud) 我的 iOS 应用程序使用 AVPlayer 从我的服务器播放流音频并将其存储在设备上。我实现了 AVAssetResourceLoaderDelegate,所以我可以拦截流。我改变了我的方案(从http一个假方案,这样 AVAssetResourceLoaderDelegate 方法被调用:
func resourceLoader(_ resourceLoader: AVAssetResourceLoader, shouldWaitForLoadingOfRequestedResource loadingRequest: AVAssetResourceLoadingRequest) -> Bool
我跟着这个教程:
http://blog.jaredsinclair.com/post/149892449150/implementing-avassetresourceloaderdelegate-a
在那里,我将原始方案放回原处,并创建一个会话以从服务器提取音频。当我的服务器为Content-Length流式音频文件提供(以字节为单位的音频文件大小)标头时,一切正常。
但有时我会在无法提前提供长度的情况下流式传输音频文件(比如直播播客流)。在这种情况下,AVURLAsset 将长度设置为-1并失败:
"Error Domain=AVFoundationErrorDomain Code=-11849 \"Operation Stopped\" UserInfo={NSUnderlyingError=0x61800004abc0 {Error Domain=NSOSStatusErrorDomain Code=-12873 \"(null)\"}, NSLocalizedFailureReason=This media may be damaged., NSLocalizedDescription=Operation Stopped}"
我无法绕过这个错误。我试图采取一种骇人听闻的方式,提供 fake
Content-Length: 999999999,但在这种情况下,一旦下载了整个音频流,我的会话就会失败:
Loaded so far: 10349852 out of 99999999
The request timed out.
//Audio file got downloaded, its size is 10349852
//AVPlayer tries to get the next chunk and then fails with …
是否可以扩展搜索视图并添加多个搜索框或复选框以方便用户?
现在只有一个搜索框,有些时候用户不希望点击搜索框,然后键入,然后过滤或选择从过滤器plugin.It过滤器自定义过滤器会很快,如果我可以添加复选框.
从Android Studio 3.0开始,您可以简单地将google字体集成到您的项目中(请参阅android演练).
当您添加某些字体时,Android Studio会为您生成字体文件夹,包括字体的XML文件(在我的例子中为amatic_sc.xml).Studio还在value文件夹中创建了preloaded_fonts.xml.
amatic_sc.xml:
<?xml version="1.0" encoding="utf-8"?>
<font-family xmlns:app="http://schemas.android.com/apk/res-auto"
app:fontProviderAuthority="com.google.android.gms.fonts"
app:fontProviderPackage="com.google.android.gms"
app:fontProviderQuery="Amatic SC"
app:fontProviderCerts="@array/com_google_android_gms_fonts_certs">
</font-family>
Run Code Online (Sandbox Code Playgroud)
preloaded_fonts.xml:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<array name="preloaded_fonts" translatable="false">
<item>@font/amatic_sc</item>
</array>
</resources>
Run Code Online (Sandbox Code Playgroud)
当我将以下行static包含到我的xml文件中时,它可以正常工作:
android:fontFamily="@font/amatic_sc"
Run Code Online (Sandbox Code Playgroud)
但在我的情况下,我需要在我的自定义listAdapter中以编程方式设置字体系列.我尝试了以下代码示例,但没有任何作用:
// Display text with default fontFamily
viewHolder.textView.setTypeface(Typeface.create("@font/amatic_sc", Typeface.NORMAL));
// both throws java.lang.RuntimeException: Font asset not found [../res/]font/amatic_sc.xml
viewHolder.textView.setTypeface(Typeface.createFromAsset(context.getAssets(), "font/amatic_sc.xml"));
viewHolder.textView.setTypeface(Typeface.createFromAsset(context.getAssets(), "../res/font/amatic_sc.xml"));
// both throws java.lang.RuntimeException: Font asset not found [../res/]font/amatic_sc.xml
viewHolder.textView.setTypeface(Typeface.createFromFile("font/amatic_sc.xml"));
viewHolder.textView.setTypeface(Typeface.createFromFile("../res/font/amatic_sc.xml"));
Run Code Online (Sandbox Code Playgroud)
在我的情况下,我使用min SDK版本16,我希望我的代码片段足够.
谢谢您的帮助!
我有一个名为 django-rest 的项目main,在它下我创建了一个名为 的应用程序users。所以,我的项目有这些文件:-
主/主/urls.py
和
主/用户/urls.py
在 users/urls.py 我有
from django.conf.urls import url, include
from rest_framework import routers
from users import views
router = routers.DefaultRouter()
router.register(r'users', views.UserViewSet)
Run Code Online (Sandbox Code Playgroud)
在 main/main/urls.py 中我有
from django.conf.urls import url
from django.contrib import admin
from users import urls
urlpatterns = [
url(r'^admin/', admin.site.urls),
url(r'^users/', users.urls),
]
Run Code Online (Sandbox Code Playgroud)
但是,我不断收到错误NameError: name 'users' is not defined。当我有多个应用程序时,设置 url 的正确方法是什么?我希望为每个独立于项目的应用程序都有一个 urls.py 文件。在根 urls.py 中将包含到不同应用程序的路由。