js实现保存文件到本地
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
function fake_click(obj) { var ev = document.createEvent("MouseEvents"); ev.initMouseEvent( "click", true, false, window, 0, 0, 0, 0, 0, false, false, false, false, 0, null ); obj.dispatchEvent(ev); } function download(name, data) { var urlObject = window.URL || window.webkitURL || window; var downloadData = new Blob([data]); var save_link = document.createElementNS("http://www.w3.org/1999/xhtml", "a") save_link.href = urlObject.createObjectURL(downloadData); save_link.download = name; fake_click(save_link); } //调用方法 download("save.txt","内容"); |
from:https://www.cnblogs.com/frost-yen/p/10226705.html
View Detailsc# 确定dynamic类型的数据对象是否存在某个属性
1 2 3 4 5 6 |
public static bool IsPropertyExist(dynamic data, string propertyname) { if (data is ExpandoObject) return ((IDictionary<string, object>)data).ContainsKey(propertyname); return data.GetType().GetProperty(propertyname) != null; } |
https://www.cnblogs.com/94cool/p/8135579.html
View Detailsjs解析websocket二进制数据包
js解释数据包 做一个项目,服务器要给我发一个数据包,格式为,前面16位short,后32位int,后面就全是string,我用javascript怎么去把这个数据包解读出来? 用WebSocket,接收到的就是一个Blob对象.而我要给服务器返回的也是这种格式,我又怎么把我的数据封装成这样的数据包? ——解决方案——————--
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 |
var reader = { readAs: function(type,blob,cb){ var r = new FileReader(); r.onloadend = function(){ if(typeof(cb) === 'function') { cb.call(r,r.result); } } try{ r['readAs'+type](blob); }catch(e){} } } function parseBlob(blob){ var shortVar, intVar, stringVar; reader.readAs('ArrayBuffer',blob.slice(0,2),function(arr){ shortVar = (new Int16Array(arr))[0]; console.log(shortVar); }); reader.readAs('ArrayBuffer',blob.slice(2,6),function(arr){ intVar = (new Int32Array(arr))[0]; console.log(intVar); }); reader.readAs('Text',blob.slice(6,blob.size,'text/plain;charset=UTF-8'),function(result){ stringVar = result; console.log(stringVar); }); } var buffer = new ArrayBuffer(6);//建立6个字节的缓冲,前两个字节是short,后四个是int var bufferView = new Int16Array(buffer); //建立16位的视图,那么视图的长度应该是3 bufferView[0] = 32767; bufferView[1] = 0; bufferView[2] = 1; //现在buffer中的内容由低位到高位应该是 //11111111 11111110 00000000 00000000 100000000 00000000 var blob = new Blob([bufferView,"words words 文本文本文本文本"]); //构造这个blob类型 //测试一下parseBlob函数是否正确 parseBlob(blob); //32767 //65536 //words words 文本文本文本文本 //第一个short是32767 //第二个int,前16位为0,第17位为1,所以结果是65536 //第三个字符串,和我们构造blob的时候一样 |
from:https://blog.csdn.net/woxingwosu0100/article/details/51273523/
View DetailsJS字符串与二进制的相互转化
1 2 3 4 5 |
//字符串转ascii码,用charCodeAt(); //ascii码转字符串,用fromCharCode(); var str = "A"; var code = str.charCodeAt(); var str2 = String.fromCharCode(code); |
十进制转二进制
1 2 3 |
var a = "i"; console.log(a.charCodeAt()); //105 console.log(a.charCodeAt().toString(2)); //1101001 |
1 2 3 |
var a = "我"; console.log(a.charCodeAt()); //25105 console.log(a.charCodeAt().toString(2)); //110001000010001 |
1 2 3 4 |
var a = "我们"; console.log(a.length); //2 var list = a.split(""); console.log(list.length); //2<br>console.log(a.charCodeAt().toString(2)); //110001000010001 100111011101100 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 |
//将字符串转换成二进制形式,中间用空格隔开 function strToBinary(str){ var result = []; var list = str.split(""); for(var i=0;i<list.length;i++){ if(i != 0){ result.push(" "); } var item = list[i]; var binaryStr = item.charCodeAt().toString(2); result.push(binartStr); } return result.join(""); } console.log(strToBinary("我们")); //110001000010001 100111011101100 console.log(strToBinary("@%$+")); //1000000 100101 100100 101011 //将二进制字符串转换成Unicode字符串 function binaryToStr(str){ var result = []; var list = str.split(" "); for(var i=0;i<list.length;i++){ var item = list[i]; var asciiCode = parseInt(item,2); var charValue = String.fromCharCode(asciiCode); result.push(charValue); } return result.join(""); } console.log(binaryToStr("110001000010001 100111011101100")); //我们 console.log(binaryToStr("1000000 100101 100100 101011")); //@%$+ |
转载请注明出处:http://www.cnblogs.com/it-deepinmind/ from:https://www.cnblogs.com/it-deepinmind/p/7430025.html
View Detailsdocker从容器里面拷文件到宿主机或从宿主机拷文件到docker容器里面
1、从容器里面拷文件到宿主机? 答:在宿主机里面执行以下命令 docker cp 容器名:要拷贝的文件在容器里面的路径 要拷贝到宿主机的相应路径 示例: 假设容器名为testtomcat,要从容器里面拷贝的文件路为:/usr/local/tomcat/webapps/test/js/test.js, 现在要将test.js从容器里面拷到宿主机的/opt路径下面,那么命令应该怎么写呢? 答案:在宿主机上面执行命令
1 |
docker cp testtomcat:/usr/local/tomcat/webapps/test/js/test.js /opt |
2、从宿主机拷文件到容器里面 答:在宿主机里面执行如下命令 docker cp 要拷贝的文件路径 容器名:要拷贝到容器里面对应的路径 示例:假设容器名为testtomcat,现在要将宿主机/opt/test.js文件拷贝到容器里面的/usr/local/tomcat/webapps/test/js路径下面,那么命令该怎么写呢? 答案:在宿主机上面执行如下命令
1 |
docker cp /opt/test.js testtomcat:/usr/local/tomcat/webapps/test/js |
3、在这里在记录一个问题,怎么看容器名称? 执行命令:docker ps,出现如图所示,其中NAMES就是容器名了。 4.需要注意的是,不管容器有没有启动,拷贝命令都会生效。 from:https://www.cnblogs.com/areyouready/p/8973495.html
View Details5分钟学会MySQL-this is incompatible with sql_mode=only_full_group_by错误解决方案
5分钟学会MySQL- "this is incompatible with sql_mode=only_full_group_by"错误解决方案 前言: 一、原理层面 这个错误发生在mysql 5.7 版本及以上版本会出现的问题: mysql 5.7版本默认的sql配置是:sql_mode="ONLY_FULL_GROUP_BY",这个配置严格执行了"SQL92标准"。 很多从5.6升级到5.7时,为了语法兼容,大部分都会选择调整sql_mode,使其保持跟5.6一致,为了尽量兼容程序。 二、sql层面 在sql执行时,出现该原因: 简单来说就是:输出的结果是叫target list,就是select后面跟着的字段,还有一个地方group by column,就是 group by后面跟着的字段。由于开启了ONLY_FULL_GROUP_BY的设置,所以如果一个字段没有在target list 和group by字段中同时出现,或者是聚合函数的值的话,那么这条sql查询是被mysql认为非法的,会报错误。 一、查看sql_mode的语句如下
1 |
select @@GLOBAL.sql_mode; |
二、解决方案-(推荐解决方案二) ①解决方案一:sql语句暂时性修改sql_mode
1 |
set @@GLOBAL.sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION |
问题: 重启mysql数据库服务之后,ONLY_FULL_GROUP_BY还会出现。 ②解决方案二:完美解决方案。 需修改mysql配置文件,通过手动添加sql_mode的方式强制指定不需要ONLY_FULL_GROUP_BY属性, my.cnf位于etc文件夹下,vim下光标移到最后,添加如下:
1 |
sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION |
重启mysql服务,顺利解决。 from:https://blog.csdn.net/qq_42175986/article/details/82384160
View DetailsIIS上部署Asp.Net Core 3.1应用
前置条件 官网下载页面:https://dotnet.microsoft.com/en-us/download/dotnet/3.1 安装ASP.NET Core Runtime 3.1.31 安装 Hosting Bundle 3.1.31 执行以下命令 net stop was /y net start w3svc 发布应用 部署到IIS 1.应用程序池:选择无托管模式。我电脑是64位,选择“启用32位应用程序”为“false”。 2.网站设置 为你的网站创建windows用户,把网站目录设置对该用户全部权限。 IIS管理器选择你的网站:基本设置 -> 连接为 -> 特定用户。 参考资料: https://blog.csdn.net/weixin_33757609/article/details/93693395 https://blog.csdn.net/xulong5000/article/details/106072771 https://docs.microsoft.com/zh-cn/aspnet/core/tutorials/publish-to-iis?view=aspnetcore-3.1&tabs=visual-studio
View Detailswindow server 2012 R2 Standard 部署.netcore 3.1 踩坑
服务器版本:window server 2012 R2 Standard SDK 版本: dotnet-sdk-3.1.302-win-x64.exe 部署步骤: 1. 官网下载sdk( https://download.visualstudio.microsoft.com/download/pr/56b00a71-686f-4f27-9ad1-9b30308688ed/1fa023326e475813783a240532c9f2c8/dotnet-sdk-3.1.302-win-x64.exe ) 2.安装部署: 拷贝到服务器,双击安装,安装完毕后,打开cmd名称,输入 dotnet命令查看。。。。结果如下 这是个啥??? 某度查询说是缺少补丁,需要打补丁,服务器又不能联网只能手动上网单独下载了。 其中:https://www.microsoft.com/en-us/download/details.aspx?id=42334 这里面包含KB2919355,KB2932046,KB2934018,KB2937592,KB2938439,KB2959977,chearcompressionflag.exe,可以一次下载。 但是在安装这些补丁之前需要先安装KB2999226 地址 https://www.microsoft.com/en-us/download/confirmation.aspx?id=49063 和 KB2919442,地址:https://www.microsoft.com/zh-cn/download/details.aspx?id=42135 补丁安装顺序: KB2999226 KB2919442, clearcompressionflag.exe、 KB2919355、 KB2932046、 KB2959977、 KB2937592、 KB2938439、 KB2934018。 严格按照补丁顺序安装,否则不确保是否能安装成功。 最后在安装 Visual C++ Redistributable for Visual Studio 2015 地址:https://www.microsoft.com/zh-cn/download/details.aspx?id=48145 安装时提示重启,可以都安装完毕后重启,也可以每次重启,我是都安装完了再重启的,也可以成功。 安装重启后,在cmd命令下输入 dotnet --version 如果出现一下内容,就说明安装成功 光子:我按以上教程实际操作时不行,要安装:https://www.microsoft.com/en-us/download/confirmation.aspx?id=42162 from:https://www.cnblogs.com/jone_sun/p/13403269.html
View DetailsDocker Toolbox替换默认docker machine的存储位置
一直想试试docker,但是docker高度依赖Linux内核,Windows7的机子用起来比较麻烦,由于某些契机还是用了起来。Windows想用docker的话,需要借助虚拟机,Windows7不像Windows10自带Hyper虚拟机,所以要用docker只有Docker Toolbox这个选择了。具体安装过程就不具体说了,官网也有详细的教程,不过让我最气的是联想的本本一直进入不了bios,最后Fn+F2进入bios启用虚拟设置。 Docker ToolBox安装 1、安装前,需要去bios启用虚拟设置,这样虚拟机才能运行。 2、安装,安装可选的工具: Kitematic,docker的界面化,没什么太大需要 Git,本来已安装的话也不用安装 3、修改 Docker QuickStart 快捷方式,将里面的Git的位置换成你的Git的安装位置(或者可以直接Git进入Docker Toolbox安装位置,运行./start.sh) 替换默认docker machine的存储位置 我相信大部分人都是直接安装官网的教程或者上面的安装方式直接安装的,但是将虚拟机安装在系统盘可能会带来各种问题,所以趁docker的镜像还没膨胀的时候赶快迁移吧。下面步骤可以在安装前做,这样可以减少删除已安装的default docker虚拟机。 1、在Windows的系统环境添加MACHINE_STORAGE_PATH ,指向虚拟机的位置(我推荐D:\VM\machines) 2、复制boot2docker.iso到虚拟机的位置同级目录cache上(D:\VM\cache),如果不是最新的话需要下载最新。 下面分两种情况: 如果还没安装default docker虚拟机,可以进入Docker QuickStart直接安装。 已安装了default docker虚拟机,需要先删除原来的,再安装到指定位置。 删除default docker虚拟机 1、进入Docker QuickStart命令行(Docker QuickStart不能进的话,用Git命令行) 2、运行docker-machine stop default,停止运行中的虚拟机 3、运行docker-machine rm default,删除默认的虚拟机 创建docker虚拟机 1、运行docker-machine create --driver=virtualbox default,等待创建完成 2、创建完成后,运行docker run hello-world测试。可以看到出现问题了:
1 |
error during connect: Get http://%2F%2F.%2Fpipe%2Fdocker_engine/v1.36/version: open //./pipe/docker_engine: The system cannot find the file specified. In the default daemon configuration on Windows, the docker client must be run elevated to connect. This error may also indicate that the docker daemon is not running. |
3、运行docker-machine env default,可以看到docker server的变量,copy变量在命令行中运行。 4、再次运行docker run hello-world测试,这次应该没问题。 修改docker 的配置 嫌弃官网的docker源太慢需要使用国内的源加速的话,要怎么配置呢? 1、运行docker-machine ssh default连接虚拟机 2、修改
1 2 3 4 5 6 7 |
docker@default:~$ sudo tee /var/lib/boot2docker/etc/docker/daemon.json <<-'EOF' { "registry-mirrors": [ "https://registry.docker-cn.com" ] } EOF |
3、退出ssh,重启docker-machine restart default from:https://www.cnblogs.com/ginponson/p/8601320.html
View DetailsInfoWorld 公布 2020 年最佳开源软件
InfoWorld 公布了 2020 年最佳开源软件榜单。 InfoWorld 是致力于引领 IT 决策者走在科技前沿的国际科技媒体品牌,每年 InfoWorld 都会根据软件对开源界的贡献,以及在业界的影响力评选出当年的“最佳开源软件” (InfoWorld’s Best of Open Source Software Awards, Bossies),该奖项评选已经延续了十多年。 获奖的 25 个开源项目包含用于构建 Web 应用的工具、机器学习模型、数据可视化工具、工作流、数据库和数据分析工具等。 下边来看看每一个项目(点击每个项目名可跳转进入项目介绍页面)。 Hasura Hasura GraphQL Engine 是一个超快的 GraphQL 服务器,可以让你基于 PostgreSQL 数据库快速建立 GraphQL API 服务。通过数据库事件实现 webhook triggers ,其 remote schemas 用于构建业务逻辑。 Prisma Prisma 被认为是一款对 TypeScript 开发者友好的 ORM 框架,包括 SQL 查询自动补全功能,可用于快速构建 GraphQL 服务、REST API 和数据库服务等。 已支持 MySQL, PostgreSQL, MongoDB 和 SQLite 等数据库,其他流行数据库正在开发中 客户端已支持 JavaScript, TypeScript, Flow, Go 等语言 类型安全的数据库访问,包括过滤器、聚合、分页和事务 数据库的实时事件系统以获得有关数据库事件的通知 具有简单 SDL 语法的声明性数据建模和迁移 Jekyll InfoWorld 对 Jekyll 的评价是“最好的静态站点生成器之一”。Jekyll 无需数据支持,可以将内容打包为单个网页的集合,然后推送到 CDN。Jekyll 所做的工作虽然只是将文本放入模板并生成静态内容,正因如此,用户获得了模板所带来的灵活性以及存储静态文件的良好速度。 Gatsby Gatsby 是基于 React 构建的静态站点生成器,拥有丰富的插件生态,其主要目标之一是交付访问速度快速的网页,它通过利用良好的缓存、静态页面生成和基于边缘的 CDN 数据源来实现这一目标。所以 Gatsby 声称自己比其他的静态站点生成器快 2.5 倍。InfoWorld 对 Gatsby […]
View Details