Other

Java Service Provider Interface

Terms and Definitions of Java SPI Java SPI 定义了四个主要组件 Service A well-known set of programming interfaces and classes that provide access to some specific application functionality or feature. Service Provider Interface An interface or abstract class that acts as a proxy or an endpoint to the service. If the service is one interface, then it is the same as a service provider interface(SPI). Service and SPI together are well-known in the Java Ecosystem as API.

解决Django3使用editormd上传图片后前端页面未显示后端传回的URL

导致这种情况的原因可能有: 一、editormd是使用POST方法提交的数据,需要对views.py中处理图片上传的函数使用@csrf_exempt解除CSRF验证(注意看控制台的输出,如果未解除验证会报错)。当然也可以修改editormd的源码在前端添加csrf验证。 二、使用@xframe_options_sameorigin解决iframe拒绝问题(在网上看到的配置editormd的教程里大多没提到这点)。如果是这个原因导致的,在chrome浏览器中的右键–>检查在console中会显示Refused to display 'http://127.0.0.1:8000/ in a frame because it set 'X-Frame-Option‘之类的错误。此时只需要在views.py中对应的处理函数前加上@xframe_options_sameorigin装饰器即可。至于原因已经有前人详细的讲解过了,下面是参考链接: Django 报错 Refused to display 'http://127.0.0.1:8000/ in a frame because it set 'X-Frame-Option django3 Refused to display ‘url‘ in a frame because it set ‘X-Frame-Options‘ to ‘deny‘ django解决frame拒绝问题 Django的X-Frame-Options设置 三、注意从request中取值的方式,使用request.FILES[‘editormd-image-file’]或者是request.FILES.get(‘editormd-image-file’,None)。注意返回值的格式,成功就返回{‘success’:1,‘message’:’’,url:’’}失败就返回{‘success’:0,‘message’:’’} # 下面给出大概的参考代码 from django.views.decorators.clickjacking import xframe_options_sameorigin from django.views.decorators.csrf import csrf_exempt @csrf_exempt @xframe_options_sameorigin def upload_image(request): if requst.method=='POST': data = {'success': 0, 'message': '图片上传失败'} image = request.FILES.get('editormd-image-file', None) if image: # 这里做图片存储的工作 image_url = '' # 连接到图片位置的url data = {'success': 1, 'message': '图片上传成功', 'url': image_url} return JsonResponse(data, content_type=text/html) https://blog.

Pset_ColumnCommon

Pset_ColumnCommon 所有引用和类型对象定义的公共属性。    NameTypeDescription Reference P_SINGLEVALUE / IfcIdentifier Bauteiltyp Bezeichnung zur Zusammenfassung gleichartiger Bauteile zu einem Bauteiltyp (auch Konstruktionstyp genannt). Alternativ zum Namen des Typobjekts, insbesondere wenn die Software keine Typen unterstützt. Reference Reference ID for this specified type in this project (e.g. type 'A-1'), Also referred to as construction type. It should be provided as an alternative to the name of the object type, if the software does not support object types.

Nginx 如何将所有 HTTP 的流量转移到 HTTPS

我们都知道,如果希望将 http 的访问自动切换到 https ,其实有多种方法可以去做。 比如说在 DNS 服务器上直接配置。 主要目的就是让网站只支持 https 的方法。 Nginx 的配置方法 在 Nginx 的虚拟主机配置文件中,只需要下面的 2 句话就可以了。 server { listen 80; server_name src.ossez.com; return 301 https://$host$request_uri; }    如上图的几句话就能够完成 http 到 https 的重定向了。 Listen 80: 这个定义的是将所有的 HTTP 80 端口的流量进行转换 Server_name _;:这个将会是针对所有的主机名,你也可以指定特定的主机名 Return 301::这个告诉浏览器或者搜索引擎这个重定向是永久的重定向。 https://$host$request_uri: 这个参数配置的是重定向的的目标地址,如果你只是希望换行协议的话,就直接使用上面的配置就行。 https://www.ossez.com/t/nginx-http-https/13949

访问局域网资源,出现“指定的网络密码不正确”

之前一直都可以正常访问的局域网共享文件夹,突然就不能访问了,提示密码不正确,特意到共享电脑上验证了一下,确认密码是正确的。 上网搜了一下解决方案,绝大多数都是这两种:(其实效果是一样的) secpol.msc - 本地策略 — 安全选项 - “网络安全:LAN 管理器身份验证级别”设为“发送 LM 和 NTLM 响应” 注册表 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa,删除 Lmcompatibility 项 这两个方案都没有解决我的问题,我的问题是这样解决的:(在共享电脑上设置) secpol.msc - 本地策略 - 安全选项 - “网络访问:本地账户的共享和安全模型” 由 “来宾...” 改为 “经典...” 这个问题的起因貌似是因为共享电脑上使用腾讯电脑管家优化了一次系统,看来这些管家、卫士的无脑优化功能要谨慎使用,导致很多莫名其妙的问题,浪费宝贵时间。  

IntelliJ IDEA 如何增加运行时候的内存

如果你的 IntelliJ IDEA 在调试的时候越来越慢,那么时候需要增加 IntelliJ IDEA 使用的内存了。 通过 Help | Edit Custom VM Options 路径来打开 VM 的选项。 IJ 将会使用自己的编辑器打开 .vmoptions 文件。 在这个文件中,你需要调整 -Xmx 参数,然后保存重启就可以了。 正常来说 IntelliJ IDEA 应该需要分配至少 4G 的内存。 如果你配置的参数不够的话,那么就增加这个内存配置。  https://www.ossez.com/t/intellij-idea/13947

LiberOJ 10014 数列分段 II 二分

题意 给定长度为 \(N\) 的序列 \(A\),要将其划分为连续的 \(M\) 段,并最小化每一段总和的最大值。 输入格式 第1行包含两个正整数 \(N,M\) 第2行包含 \(N\) 个空格隔开的非负整数 \(A_i\),含义如题目所述。 输出格式 仅包含一个正整数,即每段和最大值最小为多少。 Input 5 3 4 2 4 5 1 Output 6 \(Note:\) 划分方式可以为:\([4,2][4][5,1]\) Solution 我们二分答案,答案的左端点 \(l = \max_i(A_i)\),右端点 \(r = \sum_i A_i\) 我们每次 \(check\) 答案的时候,统计段落数 \(cnt\). 如果 \(cnt\geq M\),说明我们此时需要增大左端点(因为上限偏小,这样才会使得段落数变多) \(Code:\) 点击查看代码 int n,m; const int N = 1e5+5; int a[N]; int sum[N]; bool check(int x){ int cnt=0; int cur = 0; for(int i=2;i<=n;i++){ if(sum[i]-sum[cur]>x){ cur = i-1; cnt+=1; } } if(cnt>=m) return true; return false; } int main(){ //ios::sync_with_stdio(false); n = read();m = read(); int l=0,r; for(int i=1;i<=n;i++)a[i] = read(),sum[i] = sum[i-1]+a[i],l = max(l,a[i]); r = sum[n]; int ans = sum[n]; while(l<r){ int mid = (l+r)>>1; if(check(mid)){ l=mid+1; } else{r=mid;} } cout<<r<<endl; } \(\\\) 这里的二分模板为:

递归

递归 自己调用自己, 递归结构包括两部分: 递归头:什么时候不能调用自身方法,如果没有头,将陷入死循环 递归体:什么时候需要调用自身方法 package big.com.Cai; public class Annotation { public static void main(String[] args) { System.out.println(func(5)); } public static int func(int n){ if(n==1){ return 1; } else return n*func(n-1); //f(1) 1 //f(2) 2*f(1) //f(3) 3*f(2) //f(4) 4*f(3) } } java都是使用栈机制 简易计算器: package big.com.Cai; import java.util.Scanner; public class Annotation { public static void main(String[] args) { Scanner s = new Scanner(System.in); System.out.println(请输入两位待计算的数:); double num1 = s.nextDouble(); double num2 = s.

命令行传递参数

方法重载 重载规则: 方法名称必须相同 参数列表必须不同 方法返回类型可以相同可以不同 仅仅返回类型不同不足以成为方法的重载 命令行传递参数

gitlab文件恢复

gitlab文件恢复  xshell的ftp中下载 cd /var/opt/gitlab/backups 点击ftp插件 get 1573077714_2019_11_07_12.1.4_gitlab_backup.tar C:\Users\admin\Desktop\aa gitlab数据恢复 新gitlab进入到备份目录下 如果没有则要生成备份目录 sudo gitlab-rake gitlab:backup:create 生成以后进入备份目录 cd /var/opt/gitlab/backups 点击ftp插件 put C:\Users\admin\Desktop\aa\1573077714_2019_11_07_12.1.4_gitlab_backup.tar /var/opt/gitlab/backups 停止相关数据连接服务 sudo gitlab-ctl stop unicorn sudo gitlab-ctl stop sidekiq 恢复数据 sudo gitlab-rake gitlab:backup:restore BACKUP=1573077714_2019_11_07_12.1.4 启动gitlab sudo gitlab-ctl start sudo gitlab-ctl reconfigure ################################################## 修改存储位置 vim /etc/gitlab/gitlab.rb (1). 修改仓库git_data_dir存放位置 git_data_dirs({ default => { path => /data/gitlab/git-data } }) (2). 修改数据库postgresql['data_dir']存放位置 postgresql['data_dir'] = /data/gitlab/postgresql/data (3). 更改gitlab备份目录 gitlab_rails['backup_path'] = '/data/gitlab/backups' ################################################ 查看gitlab版本 gitlab-rake gitlab:env:info ################################################### 后面报错 Warning: Your gitlab.