Entry

.NET Core Web APi大文件分片上传研究

我是研究僧i 提交于 2020-08-10 15:53:15
前言 前两天发表利用FormData进行文件上传,然后有人问要是大文件几个G上传怎么搞,常见的不就是分片再搞下断点续传,动动手差不多也能搞出来,只不过要深入的话,考虑的东西还是很多。由于断点续传之前写个几篇,这里试试利用FormData来进行分片上传。 .NET Core Web APi文件分片上传 这里我们依然是使用FormData来上传,只不过在上传之前对文件进行分片处理,如下HTML代码 < div class ="form-horizontal" style ="margin-top:80px;" > < div class ="form-group" > < div class ="col-md-10" > < input name ="file" id ="file" type ="file" /> </ div > </ div > < div class ="form-group" > < div class ="col-md-offset-2 col-md-10" > < input type ="submit" id ="submit" value ="上传" class ="btn btn-success" /> </ div > </ div > </ div > 接下来则是上传脚本,如下: $( function () { $( '#submit')

Synchronized解析——如果你愿意一层一层剥开我的心

限于喜欢 提交于 2020-08-10 15:52:54
前言 synchronized,是解决并发情况下数据同步访问问题的一把利刃。那么synchronized的底层原理是什么呢?下面我们来一层一层剥开它的心,就像剥洋葱一样,看个究竟。 Synchronized的使用场景 synchronized关键字可以作用于方法或者代码块,最主要有以下几种使用方式,如图: 接下来,我们先剥开synchronized的第一层,反编译其作用的代码块以及方法 。 synchronized作用于代码块 public class SynchronizedTest { public void doSth(){ synchronized (SynchronizedTest.class){ System.out.println("test Synchronized" ); } } } 反编译,可得: 由图可得,添加了synchronized关键字的代码块,多了两个指令 monitorenter、monitorexit 。即JVM使用monitorenter和monitorexit两个指令实现同步,monitorenter、monitorexit又是怎样保证同步的呢?我们等下剥第二层继续探索。 synchronized作用于方法 public synchronized void doSth(){ System.out.println("test

Codeforces,Topcoder,SGU,Timus,ProjectEuler

删除回忆录丶 提交于 2020-08-10 14:27:08
世界顶级选手的刷题之道 dreamoon,知名中国台湾籍ACM选手,此为他的codeforces曲线: 关于中间突降的那段,还有个小故事: 当时dreamoon已经是世界上的顶级选手,甚至前一场的div1他排名第3!(当时cf的分制和现在不同,所以现在看起来只是个红名) 由于他没有拿到过div2的第一名,于是决定一直故意掉分使自己有资格打级别较低的div2场。 这个机会终于到来,but当dreamoon决定在这一场暴露大佬本质并拿下第一之时……他被狙了。 没错,被一个更牛逼的神仙开个小号调戏了…… 回归正题来讲。 dreamoon作为一个世界顶级选手,罕见地给全世界众萌新发放了福利!本期为他在codeforces上的blog:If you ask me how to improve your algorithm competition skill, I will give you the link of this blog.(如果你问我如何提高算法竞赛水平,我将给你这篇博客的链接),原文链接为: http://codeforces.com/blog/entry/16599 以下为AlphaWA的翻译,如有不准确之处,见谅;另,博客下的讨论请读者移步原文链接查看,此处就不做提供了。 正文: 最近一年有许多人在发消息问我同样的问题,所以我决定创建这篇博客。 丑话说在前头

vuecli中一些配置的解释以及webpack基础知识点

|▌冷眼眸甩不掉的悲伤 提交于 2020-08-10 12:46:56
webpack.dev.config.js devServer:是启动http服务器到指定的端口,这时不会在./dist下面生成静态文件,原因是devServer会把构建的文件保存在内存中,需要通过http访问。 它不会理会配置中的output.path属性,所以要获取bundle.js正确的url是http://localhost:port/bundle.js; 修改index.html不会触发热更新,因为webpack 启动时会议配置entry为入口区递归解析出entry所依赖的文件,只有entry本身和依赖的文件才会被监听; build.js require('./check-versions')() //检查node和npm的版本 ora=require('ora') //在启动项目时使用的一个loading插件; const spinner = ora('building for production...') spinner.start() //开始loading画面 webpack.prod.config.js const merge = require('webpack-merge') //一个可以合并数组和对象的插件 const HtmlWebpackPlugin = require('html-webpack-plugin') /

Webpack常见问题总结

守給你的承諾、 提交于 2020-08-10 10:14:40
一、有哪些常见的Loader raw-loader :加载文件原始内容(utf-8) file-loader :把文件输出到一个文件夹中,在代码中通过相对 URL 去引用输出的文件 (处理图片和字体) url-loader :与 file-loader 类似,区别是用户可以设置一个阈值,大于阈值时返回其 publicPath,小于阈值时返回文件 base64 形式编码 (处理图片和字体) source-map-loader :加载额外的 Source Map 文件,以方便断点调试 svg-inline-loader :将压缩后的 SVG 内容注入代码中 image-loader :加载并且压缩图片文件 json-loader 加载 JSON 文件(默认包含) babel-loader :把 ES6 转换成 ES5 ts-loader : 将 TypeScript 转换成 JavaScript style-loader :将 CSS 代码注入 JavaScript 中,通过 DOM 操作去加载 css-loader :加载 CSS,支持模块化、压缩、文件导入等特性 eslint-loader :通过 ESLint 检查 JavaScript 代码 更多 Loader 请参考官网:https://webpack.docschina.org/loaders 二、常见的Plugin

如何把shellcode转换成exe文件分析

霸气de小男生 提交于 2020-08-10 06:47:27
【转】 http://www.freebuf.com/articles/web/152879.html 前言 在分析 shellcode 时,静态分析或者使用 scdbg 模拟分析都不够准确,如果转换成 exe 文件那么就可以用 debugger 或者 IDA 分析,会方便很多。 样本分析 这里以 CVE-2013-3346 的样本为例,使用 peepdf 分析样本: $ python peepdf.py -i -f ~/Downloads/sample.pdf File: sample.pdfMD5: 6776bda19a3a8ed4c2870c34279dbaa9SHA1: ad6a3564e125683a791ee98c5d1e66e1d9c6877dSize: 177511 bytesVersion: 1.1Binary: FalseLinearized: FalseEncrypted: FalseUpdates: 0Objects: 4Streams: 2Comments: 0Errors: 1Version 0:Catalog: 1Info: No Objects (4): [1, 2, 3, 10] Errors (1): [3] Streams (2): [10, 3] Encoded (0): [] Objects with JS code (1): [3]

MegaCli使用

依然范特西╮ 提交于 2020-08-10 06:43:25
0.前沿介绍 1. lsscsi -s 查看盘符对应关系 2. 查看物理槽位占用情况 3.查看适配器(控制器)个数 4.查看控制器序号,名称,序列号 5.查看所有逻辑层次磁盘详细信息 6.查看所有物理层次磁盘详细信息 7.查看raid信息(对应到target id,即逻辑磁盘): 8. 查看是raid还是JBOD 9.查看物理磁盘和逻辑磁盘对应关系 10.附录:查询物理和逻辑所有磁盘信息 0.前沿介绍 PD:物理的磁盘信息 LD:逻辑的磁盘信息 MegaCli64 参数对大小写不敏感 a:Adapter,适配器,适配器即为阵列卡控制器,以下以‘控制器’简称 -LdPdInfo:物理和逻辑的信息 MegaCli64不是所有的磁盘阵列卡都可以使用,如果不支持,需要使用其他的工具,如storcli/percli等 1. lsscsi -s 查看盘符对应关系: 通过lsscsi查看磁盘情况,这里显示的是逻辑层的,比如sda实际上是二块盘组成的raid1. The first entry on each line is the scsi_host,channel,target_number,LUN [root@node-5 MegaCli]# lsscsi -s [0:2:0:0] disk DELL PERC H730P Mini 4.26 /dev/sda 299GB [0:2:1:0]

vue项目中使用bpmn-流程图json属性转xml(七篇更新完成)

痴心易碎 提交于 2020-08-10 02:45:02
内容概述 本系列“vue项目中使用bpmn-xxxx”分为七篇,均为自己使用过程中用到的实例,手工原创,目前陆续更新中。主要包括vue项目中bpmn使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。如果转载或通过爬虫直接爬的,格式特别丑,请来原创看: 我是作者原文 前情提要 上一节我们讨论了将xml中的节点属性,转成前端常用的json格式。这一篇,我们来讨论更改了json后,如何写入到xml中去。首先,我们通过一张图看看流程图xml和json结构的对应关系。一定要仔细看,这张图理解了,这篇文章就理解一半了。 思路分析 xlm中,属性包裹在<bpmn:extensionElements>中,下一层分别是<camunda:inputOutput>和<camunda:inputParameter>,inputParameter的下一层,会有三种格式。上一节我们读取属性也是按照这个顺序,层层遍历拿到的属性值。 所以,我们本次的出发点,是根据json各字段的属性类型,从里向外为<bpmn:extensionElements>添加内容。步骤如下: 1.elementRegistry.get 和节点id找到节点实例element,因为写入xml的时候需要知道为哪个节点写属性 2.bpmnFactory.create ,顾名思义,作用为创建标签

java 的 引用

一曲冷凌霜 提交于 2020-08-09 21:46:37
Java中的引用有四种,分别是强引用,软引用,弱引用以及虚引用。 1.首先是强引用。即常用的创建对象object o = new object();只要强引用还存在,垃圾回收器就永远不会回收掉此类对象。 2.软引用。用来描述一些还有用但非必需的对象。在内存即将发生内存溢出之前,会把这些对象列进回收范围二次垃圾回收。如果这次回收还没有足够内存,才会发生内存溢出异常。软引用可用来实现 内存敏感的高速缓存 。 3.弱引用。描述非必需的对象。被弱引用关联的对象只能存活到下一次垃圾收集发生之前。当进行垃圾回收时,无论当前内存是否足够,都将回收掉被弱引 用关联的对象。一般用于保存对象额外的信息。 比如 ThreadLocal 有使用到,每个线程都有一个ThreadLocalMap,每一个Entry继承了WeakReference。entry的key是ThreadLocal对象,value是设置的值。没有强引用指向该ThreadLocal对象,那么这个entry就会回收,防止内存泄露。但是这是回收key,value是没有回收!因此调用remove来释放value占用的内存 如果引用还有一个使用WeakhashMap。使用了ReferenceQueue来清理value 4.虚引用。最弱的一种引用关系。无法通过一个虚引用获得一个对象实例; 一个对象是否有虚引用,都不会对其生存周期构成影响。

nacos 分布式配置中心工作原理源码分析

纵饮孤独 提交于 2020-08-09 18:56:03
nacos 分布式配置中心 个人阿里巴巴nacos改造项目: alibaba_nacos 1. 服务启动配置加载 源码:NacosPropertySourceLocator 工作流程:Nacos自定义PropertySourceLocator,用于服务启动时从配置中心获取数据,然后添加再本地运行环境,从而实现配置的加载 1.0 配置加载逻辑 方法:com.alibaba.cloud.nacos.client.NacosPropertySourceLocator.locate @Override public PropertySource<?> locate(Environment env) { // 借助于NACOS属性配置创建ConfigService,用于配置中心交互API ConfigService configService = nacosConfigProperties.configServiceInstance(); if (null == configService) { log.warn("no instance of config service found, can't load config from nacos"); return null; } // 创建NACOS属性源建造器 nacosPropertySourceBuilder = new