GPU安装caffe的错误处理

安装环境:ubuntu16.04, cuda8.0 cudnn5.1 安装CAFFE后,编译出错: make: ***[.build_release/src/caffe/parallel.o] Error 1 解决办法: 将./include/caffe/util/cudnn.hpp 换成最新版的caffe里的cudnn的实现,即相应的cudnn.hpp. 参考: https://blog.csdn.net/zhuzizhong/article/details/86351665?utm_medium=distribute.pc_relevant_t0.none-task-blog-BlogCommendFromMachineLearnPai2-1.channel_param&depth_1-utm_source=distribute.pc_relevant_t0.none-task-blog-BlogCommendFromMachineLearnPai2-1.channel_param

win10一直卡在自动修复_Win10更新后提示“自动修复”无法进入系统问题解决办法...

部分用户更新系统后提示“自动修复”,无法进入系统,如下图所示: Win10更新后提示“自动修复”无法进入系统问题由于微软2月安全更新造成, 微软更新了在线文档,说明了这个问题提示如果用户已经安装了这个更新并遇到了问题,如何可以卸载它,如下链接请参考(目前文档仅有英文): You might encounter issues with KB4524244 操作步骤: 第一步:进入BIOS内Security选项卡中Secure Boot从Enabled更改为Disabled,具体操作如下: 1.进入BIOS方式:点击重新启动后,在重启过程中: lenovo笔记本按“F2”键或者“FN+F2”键进入BIOS 2.进入BIOS后,在Security选项卡中Secure Boot从Enabled更改为Disabled,按F10或FN+F10,选择Yes,保存退出。 3.正常进入系统后下载附件“Win10系统补丁卸载工具”工具卸载微软系统补丁KB 4524244,具体方法如下: 双击运行“Win10系统补丁卸载工具”后,输入“4524244”7个数字,点击卸载,弹出对话框后点击“是(Y)”,提示操作完成后点击“确认”,重启电脑。 4.重启电脑时按步骤1再次进入BIOS,Security选项卡中Secure Boot从Disabled更改为Enabled, 按F10或FN+F10,选择Yes,保存退出即可,该问题修复完成。 工具下载地址:http://webdoc.lenovo.com.cn/lenovowsi/new_cskb/att/187110/Win10%E7%B3%BB%E7%BB%9F%E8%A1%A5%E4%B8%81%E5%8D%B8%E8%BD%BD%E5%B7%A5%E5%85%B7.rar http://webdoc.lenovo.com.cn/lenovowsi/new_cskb/att/187110/Win10%E7%B3%BB%E7%BB%9F%E8%A1%A5%E4%B8%81%E5%8D%B8%E8%BD%BD%E5%B7%A5%E5%85%B7.rar

利用高德地图api绘制公交+地铁的等时圈

等时圈是指从某点出发,以某种交通方式在特定时间内能到达的距离覆盖的范围,在可达性分析中十分常见。原本我们需要将地图栅格化不停地调用路径规划api来获得等时圈,现在已经有网站为我们做好了这些工作,比如https://docs.mapbox.com/playground/isochrone/。我们只需要选择交通方式(步行、骑行和驾车),和需要绘制的时间即可,但是比较遗憾的是无法获取公交(地铁/地铁+公交)的等时圈。 如果我们想获得公交(地铁/公交+地铁)的等时圈,有什么比较简便的方法呢?——> 可以通过高德地图API的公交到达圈功能。 1.通过高德地图API搜索公交到达圈,点击选中。 2.这个时候我们就可以通过改变时长和出行方式来获得你想要的公交(地铁/公交+地铁)等时圈。 3.但是如果想要将这个图放到arcgis/qgis中进行操作,就需要将polygon抓取下来。我们可以打开开发者工具,在Network中找到这么一条链接,里面的polylines里的outer其实就是各个圈。 4.通过python抓取。 4.1首先找到它的url,里面的key需要自己在高德地图api里面注册获取(这里的服务平台选择Web端(JS API)),通过python的requests库解析。 import json url = 'https://restapi.amap.com/v3/direction/reachcircle?key=您的密钥&location=116.397428,39.90923&time=44&s=rsv3&extensions=all&output=json&strategy=2&callback=jsonp_488528_&platform=JS&logversion=2.0&appname=https%3A%2F%2Flbs.amap.com%2Fapi%2Fjavascript-api%2Fexample%2Fbus-info%2Farrival-range%2F&csid=73E0636A-636C-43C3-A098-5E94A75837C1&sdkversion=1.4.15' r = requests.get(url) r.text 4.2 解析数据。获得的数据不完全是json格式,需要稍作处理,将’jsonp_488528_(’,‘)’删除,再转化成json格式,取出outer里的数据。 ‘ 5.转化成Polygon 5.1 将经纬度转化成dataframe(这里我只取了两个outer测试) import pandas as pd test = polylines[0]['outer'].split(';') lng=[] lat=[] for item in test: lng.append(item.split(',')[0]) lat.append(item.split(',')[1]) a = {'lng':lng,'lat':lat} df = pd.DataFrame(a) test = polylines[1]['outer'].split(';') lng1=[] lat1=[] for item in test: lng1.append(item.split(',')[0]) lat1.append(item.split(',')[1]) a1 = {'lng':lng1,'lat':lat1} df1 = pd.DataFrame(a1) 5.2利用Polygon和geopandas转化成shp文件。 import geopandas from shapely.geometry import Polygon p0 = Polygon(df.

Mysql运程备份(Xtrabackup),并限制网络速度

实操过程 源数据库服务器(192.168.1.101)备份服务器(192.168.1.102)环境centos 7.4 mysql5.7 centos 7.4 数据库实例3306/安装备份工具Xtrabackup/安装网络限速工具 yum install pv #如果不做网络限速的话,可以不用安装 /ssh免密登陆 ssh-keygen #全部回车 ssh-copy-id -i /root/.ssh/id_rsa '-p 22 192.168.1.102' 创建备份目录mkdir -p /data/backupmkdir -p /data/backup备份及限速 innobackupex --user=root --password=123456 -S /tmp/mysql.sock --defaults=/etc/my.cnf --slave-info --stream=tar /data/backup | pv -q -L10m | ssh -p 22 root@192.168.1.102 cat " >" /data/backup/all_test.tar # 说明: pv -q -L10m : 限速 10MB/S 备份完成--查看备份文件ls /data/backup #没有文件ls /data/backup解压备份文件 tar -xf /data/backup/all_test.tar应用binlog(还原) innobackupex --apply-log /data/backup #如果不还原的话,可以不用此步骤 #需要安装Xtrabackup工具 特别说明:如果备份文件用于当作从库的话 ,请在备份前保证主库已做如下配置,否则无法创建主从:

C++核心编程-------1.内存分区模型

1.内存分区模型 C++程序在执行时,将内存大方向划分为4个区域 ●代码区:存放函数体的二进制代码,由操作系统进行管理的 ●全局区:存放全局变量和静态变量以及常量 ●栈区:由编译器自动分配释放,存放函数的参数值,局部变量等 ●堆区:由程序员分配和释放,若程序员不释放程序结束时由操作系统回收 内存四区意义: 不同区域存放的数据,赋予不同的生命周期,给我们更大的灵活编程 1.1程序运行前 在程序编译后,生成了exe可执行程序,未执行该程序前分为两个区域 代码区: 存放CPU执行的机器指令代码区是共享的,共享的目的是对于频繁被执行的程序,只需要在内存中有一份代码即可代码区是只读的,使其只读的原因是防止程序意外地修改了它的指令 全局区: 全局变量和静态变量存放在此全局区还包含了常量区,字符串常量和其他常量也存放在此.该区域的数据在程序结束后由操作系统释放. #include<iostream> using namespace std; //全局变量 int g_a = 10; int g_b = 10; //全局常量 const int c_g_a = 10; const int c_g_b = 10; int main() { //局部变量 int a = 10; int b = 10; //打印地址 cout << "局部变量a地址为:" << (int)&a << endl; cout << "局部变量b地址为:" << (int)&a << endl; cout << "全局变量g_a地址为:" << (int)&g_a << endl; cout << "

使用Squashfs和Overlayfs提高嵌入式Linux文件系统可靠性

By Toradex胡珊逢 在使用嵌入式 Linux 系统的时,会出现由于设备意外断电引起文件系统损坏而最终使该设备无法启动的现象。为了应对这种情况,通常会从硬件设计如采用备用电源,无论是锂电池还是超级电容等,或者从系统软件设上加以规避。本文接下来将介绍如何使用 squashfs 只读文件系统制作 Linux 系统文件,并采用 overlayfs 为用户目录增加可写权限。演示采用 Colibri iMX6 计算机模块,该方法同样也适用于 Toradex 其他产品,如 iMX8 计算机模块。 Squashfs 是一种只读压缩文件系统,通常被用于数据备份或者系统资源受限的计算机系统上使用,如 Linux 发行版的 LiveCD,OpenWRT 系统也采用 squashfs。OverlayFS 一个结合其他文件系统的联合挂载,将多个挂载点叠加为一个目录。常见的应用是在一个只读的分区上叠加可读写的另一个分区。嵌入式 Linux 设备通常的功能都是被设计好的,极少需要在后期安装其他软件或更改 Linux 系统软件,更多的是更新设备应用程序和相关数据。因此基于 squashfs 的只读文件系统,结合 overlayfs 为用户应用和数据提供读写操作,能够提高嵌入式 Linux 文件系统可靠性。 在 Colibri iMX6 的 eMMC 上我们将使用以下分区规划。BootFS 为 FAT32 格式,该分区上包含 Linux 内核文件,device tree 等启动文件,如果是 iMX8,则还包含一些其他固件文件。该分区通常只在文件系统烧写阶段被写入。RootFS 分区是 Linux 运行的文件系统,usr, bin, lib, etc, home 等目录都在上面。一般该分区是EXT3,EXT4 格式,支持文件的写入和删除。而文件系统的损坏也常发生于此,最终导致设备启动失败。因此我们这里会采用只读格式的 squashfs 。UserData 是能够读写的 EXT4 分区。该分区通过 overlayfs 会被挂载到原本位于只读 squashfs 中的 /home/root 目录。用户应用可以毫无察觉得使用该目录,在上面写入和删除文件,但不破坏只读 squashfs 文件系统,所有的操作都会被转移到 UserData 分区上。用户的应用也会存在 UserData 分区上,启动的时候从这里加载应用程序。该分区是可写的,所有这上面的文件是可以被更新。

A. Knapsack------------------------------------思维(贪心)

题意: 给定n个数和w,每个数都有一个权值ai. 问你如何选择使得权值之和在 [(w+1)/2,w] 之间。如果满足输出选择数的下标。如果不行输出-1 解析: 贪心,从大到小贪。 例: n=6 w=12 1 1 1 1 1 11 如果从小到大贪,这个样例会输出-1.必须从大到小贪 #include<bits/stdc++.h> using namespace std; typedef long long ll; const int N=1e6+1000; ll w; struct node { ll x; int pos; } a[N]; int t,n; bool cmp(const node &a,const node &b) { return a.x<b.x; } int main() { scanf("%d",&t); while(t--) { scanf("%d %lld",&n,&w); for(int i=1;i<=n;i++) scanf("%lld",&a[i].x),a[i].pos=i; sort(a+1,a+1+n,cmp); vector<int> v; ll sum=0; for(int i=1;i<=n;i++) { if(sum+a[i].

该连接被站点断开怎么办_中山白色船形开关价格,电子锁连接器厂家

东莞市神久电子科技有限公司为您详细解读jycuYn中山白色船形开关价格的相关知识与详情,相信很多小伙伴都有过本人接电线的阅历,但是马马虎虎的接法吗,即便是能用,也是存正在很大的宁静隐患的,关于一些低电压或是小型非工业使用来说,那种连接办法还能够,但是那种办法用于住宅配电或者是工业使用上都是难以令人承受的,本文为各人详细引见一下。而随着WLANFTTx的建立,网络不时深化,装置于弱电井楼梯间等缺乏特地的环境调理设备场所的站点越来越多,温度湿度空气干净度都无法保证。 假如捕获到开关开关偶发瞬时后不单单满足于对该的简单阐发取计较,还希望可以正在系统中重现该,那么RIGOL数字示波器取函数任意波形发作器的无缝互连则能够供给完美的处理计划。DGA发作器能够通过公用接口间接会见DSCA的波形内存,从而正在发作器上再现之前捕捉的或偶发波形。通过那样的办法,能够再现,让测试丈量愈加便利。 因为端接和对接除了要求稳固连接外,还有一点至关重要:宁静性!因而使用连接器可说是“专业中的专业”的接线办法。 连接器是连接两个或以上电路的器件统称,可用于电力传输,也用于传输,例如是音频或视频的传送。市场供给的连接器品种可说是五花百门,卖得货数目能够百万计较。高压部分高压变压器磁芯采用新的非晶态材料, 采用独特的高频高压绕制工艺,双高压变压器叠加工作。 陈述还指出,传统的灯具市场早已根深蒂固,如今要为LED灯供给开关器件,LED商们面临着新的挑战,需要有较强的开关器件专业技术,那为开关商缔造了时机。对LED照明开关的要求首先取决于额定功率LED和LED灯串的数量以及使用环境等设想因素。Snderson暗示,那些设想要求加上对LED照明尺度的缺乏意味着LED灯具商需要具备强大的开关器件专业技术,能够聘请行业专家或取专业的开关商协作。 那些连接器正在过去几十年的研发,既能够像音频视频连接器般设想用于传送特定的,也能够用RCA连接器般把某一厂商的机械工具和其它厂商的机械工具连接,以及供给其它方方面面的用处。 高工LED产业研究所所长张小飞则认为,由于LED开关产品价格的迅速下滑,渠道商对LED产品表现出极大的热情,才造成生产订单饱满。 由于陈某国电子开关行业是电子信息财产中比力重要的构成部门,而且也是具有必然国际合作力的细分行业。年以来跟着一系列的宏不雅政策的落实及全球经济趋于不变之后,陈某国电子信息卖得货呈现出了快速恢复的开展势头,陈某国开关开关行业顺势而上,产值规模到达了亿元,删速超越%。 连接器能够共同其它器件供给上锁功用,避免有人未经核准任意断开连接。有些连接器备有可压接特点以便于取一组线缆停止连接,实现面向各类机械工具的轻松连接和断开,无需停止烦琐的绕线工做。开关体积的减小意味着散热能力的变差,因而要求开关的功耗变小,即在输出功率不变的前提下,效率必须提高。 同时,开关开关工做时,输入端的电压Vin稳定,但是电流是随开关变革的。那时输入开关不会很好地供给电流,凡是正在靠近电流输入端(以BucK型为例,是SWITcH附近),并联电容来供给电流。 连接器能够通过端子块、插头、刀片形、圆形、D-Sub连接器或其它样子呈现。有些连接器只要专有应用(例如用于传送无线电的射频(RF)连接器),另一些则供给更广的应用,例如刀锋连接器可用于传输数据以至是电能。电气连接器凡是有两个版本:和母头,别离代表那个连接器用于接上插座和连接到插头。 如果在你的开关标称电流之内,当然是安全的。 东莞市神久电子科技有限公司是一家专业从事精细电脑连接器研发、生产、销售一体的企业,公司以生产笔记本电脑电池连接器、闸刀式连接器、间距有、、5mm大电流电池连接器公座和母座及和间距电池座系列,电子开关及电源插座产品为主。

基于Apache Common-pool2理解连接池

基于Apache Common-pool2理解连接池 基于Apache Common-pool2理解连接池目的文档介绍PooledObjectStatejava代码实现代码实现输出 接口PooledObjectFactor作用代码 PooledObject作用代码 ObjectPool作用代码 实现类分析DefaultPooledObject 文档地址 基于Apache Common-pool2理解连接池 目的 理解连接池的参数设置 文档介绍 PooledObjectState 事件说明IDLE在队列中,但是为使用ALLOCATED正在使用EVICTION在队列中,但是正在被测试,可能清除EVICTION_RETURN_TO_HEAD不在队列中,目前正在测试可能的驱逐。在测试时试图借用该对象,该对象被删除从队列中。它应该返回到队列的头部一次,驱逐测试完成。VALIDATION在队列中,当前正在被校验VALIDATION_PREALLOCATED不在队列中,当前正在验证。这东西是借的正在进行验证,由于配置了testOnBorrow,所以删除了它,从队列中预先分配。应该在验证之后分配它VALIDATION_RETURN_TO_HEAD不在队列中,当前正在验证。试图借用对象是在之前进行驱逐测试时制作的,该测试将其移除队列。验证之后,它应该返回到队列的头部完成INVALID无效的,维护失败和将要被摧毁的对象ABANDONED废弃的RETURNING返回到池子中 java代码实现 代码实现 StringPoolObject.java package com; import org.apache.commons.pool2.BasePooledObjectFactory; import org.apache.commons.pool2.PooledObject; import org.apache.commons.pool2.impl.DefaultPooledObject; public class StringPoolObject extends BasePooledObjectFactory<StringBuffer> { @Override public StringBuffer create() { System.out.println("创造了一个object"); return new StringBuffer(); } @Override public PooledObject<StringBuffer> wrap(StringBuffer obj) { DefaultPooledObject<StringBuffer> stringBufferDefaultPooledObject = new DefaultPooledObject<>(obj); System.out.println("wrap状态为-->"+stringBufferDefaultPooledObject.getState()); return stringBufferDefaultPooledObject; } @Override public void passivateObject(PooledObject<StringBuffer> p) throws Exception { System.out.println("passivateObject状态为-->"+p.getState()); super.passivateObject(p); } } MyStringUtils.

clickhouse跟hive的不同

虽然clickhouse可以是多台机器,因为占用内存,每台机器存储不同的数据,所以需要有一个视图,将三台机器的数据进行汇总,原始表跟视图的创建语句如下 --创建 clickhouse , drop table dm.city_dim on cluster my_cluster; CREATE TABLE dm.city_dim on cluster my_cluster( city_id Int32 comment '城市ID', city_name String comment '城市名' ) ENGINE=MergeTree ORDER BY city_id SETTINGS index_granularity = 8192; --创建 clickhouse 分布式视图表 drop table dm.city_dim on cluster my_cluster; CREATE TABLE dm.city_dim on cluster my_cluster( city_id Int32 comment '城市ID', city_name String comment '城市名' )ENGINE = Distributed(my_cluster, dm, city_dim, rand()); 怎么将hive的数据转到clickhouse中? 如果要删除原始数据,使用下面语句, /usr/bin/clickhouse-client --host xxxxxxxxxx --port xxxx --uxxxx bigdata --password xxxxxx --multiline -q "

电脑主板接口_POWER SW、RESET SW、POWER LED、HDD LED电脑主板跳线怎么接?

组装一台电脑其实很简单,相信对于普通用户来说,在组装电脑的过程中最难的部分就是电脑主板跳线接法,但其实主板和跳线上都有了标注,我们跟着标注正确接入即可,一般接口上都防呆设计,但是POWER SW、RESET SW、POWER LED、HDD LED却没有防呆设计,有些需要区别正负极。那么POWER SW、RESET SW、POWER LED、HDD LED电脑主板跳线怎么接?下面装机之家来详细讲解一下,帮助大家更好的理解主板跳线。 主板跳线接法教程 跳线标注的英文代表什么含义? 除了AUDIO、USB2.0、USB3.0接口都有防呆设计,插错是无法插入的,按照主板标注来插入即可。所以这里我们重点来说下标注了POWER SW、RESET SW、POWER LED、HDD LED的主板跳线,具体的含义如下: 电脑主板跳线含义 1、POWER SW:机箱开关机按键; 2、RESET SW:机箱重启按键; 3、Power LED:电源指示灯; 4、HDD LED:硬盘指示灯; 主板跳线接法图解: 找到主板跳线位置,我们分别对应插入即可,主板跳线接法图解如下图所示。 主板跳线接法图解 注:电源指示灯(Power LED)和硬盘指示灯(HDD LED)必须区别正负极,电源开关(POWER SW)和重启键(RESET SW)是不用区分正负极的,需要注意一下,如上图所示,蓝色线所指处为正极,而红色线所指处为负极。 以上就是装机之家分享的POWER SW、RESET SW、POWER LED、HDD LED电脑主板跳线接法,我们按照主板跳线接法图解来对应插入即可,希望本文能够帮助到大家。 ​

如何配置ssl 证书(腾讯云的 ubuntu系统 apache 服务器)

如何配置ssl 证书(腾讯云的 ubuntu系统 apache 服务器) 第一步:开通服务器的443端口 第二步:下载ssl证书 第三步:创建443端口的配置文件default-ssl.conf 第四步:启动命令 第五步:修改80端口的配置文件000-default.conf 第一步:开通服务器的443端口 腾讯云服务器有网页支持很容易开通 只要打开 客户端管理->安全组->点击新建安全组->模版选择开通443端口 不需要填写任何内容。 ** 第二步 下载ssl证书 腾讯云可以免费申请ssl证书 申请成功后点击云产品->在搜索框里输入“SSL 证书”->选择证书管理->下载证书 ** 第三步:创建443端口的配置文件default-ssl.conf 假设我的网站域名是www.yahoo.cn,通过申请后得到的证书有三个文件1_root_bundle.crt,2_yahoo.cn.crt,3_yahoo.cn.key 上传证书到服务器,证书可以放到你选择的地方,不过大家一般会放到(/etc/httpd/ssl),我把证书上传到我的项目目录(/var/www/yahoo/ssl/) 在服务器端输入命令开启apache ssl模块 sudo a2enmod ssl 服务器就会在/etc/apache2/sites-available文件夹里生成一个模版文件default-ssl.conf 修改这个文件 <VirtualHost 0.0.0.0:443> DocumentRoot "/var/www" ServerName yahoo.cn ServerAlias www.yahoo.cn <Directory /var/www> AllowOverride All Require all granted </Directory> SSLEngine on SSLCertificateFile /var/www/yahoo/ssl/2_yahoo.cn.crt SSLCertificateKeyFile /var/www/yahoo/ssl/3_yahoo.cn.key SSLCertificateChainFile /var/www/yahoo/ssl/1_root_bundle.crt </VirtualHost> 第四步:启动命令 在服务器端输入 sudo a2ensite default-ssl 命令 (创建default-ssl.conf文件的软连接) 可以到目录(/etc/apache2/sites-enabled)看default-ssl.conf 是否存在,存在表示软连接成功。 也可以用命令 sudo a2dissite default-ssl 解除软链接启动 apache

hd630 黑苹果_黑苹果(hackintosh)技术整合指南

更新: 2019.5.15日:优化结构,去除了扩展,把他们合并到正文,把无关的东西扔后面! 2019.4.10号:链接了本站大神翟海生的纯净安装教程;一位简书大佬解释和配置config文件的文章(非常详细,十分推荐)。 第一:常用的论坛、工具网站介绍。 第二:黑苹果装机流程。 第三:我碰见的一些问题及解决办法。 一、常用的论坛和工具 1、国光的blog,国光大师的教程很适合入门,但这不代表大师不厉害。 国光​www.sqlsec.com 2、黑果小兵的blog,很有效但不适合入门,推荐基本了解 config 配置文件后观看。 黑果小兵的部落阁​blog.daliansky.net 3.1、clover文件详解,以及这位大神安装黑苹果的全步骤(万分推荐,首要必看) MAC 10.14 安装教程4-制作安装EFI文件​www.jianshu.com 3.2远景论坛很好,有问题去搜查查找就好。 远景论坛:自行检索需要的信息。 有clover 和 clover configurator原版和汉化文件的下载和教程(但需要论坛币)。 我在论坛见过congfig全套解释的,但那时候我懂得差不多了,到现在也没下载,可能后面会去看看质量如何。 重要:如果你的配置没有现成参考,需要自己操作,请务必熟悉config配置,扩展4稍微提下 【Clover用户必看】Config.plist参数架构讲解合集及.efi Drivers解释-远景论坛-微软极客社区 4、tonymacx86:国外论坛,可以看完美黑苹果配置,如果你冲着黑苹果去买硬件DIY电脑,可以去看看。 https://www.tonymacx86.com/​www.tonymacx86.com 可以下载一些驱动工具,比如nvdia显卡的驱动。 那里面有安装指南,纯净安装,这方面我推荐本站大神翟海生的教程,无敌纯净安装!建议有经验的玩家采用这种方式。 翟海生:[安装实录] 零基础完美黑苹果安装之华硕篇​zhuanlan.zhihu.com 懵懵懂懂建议黑果小兵集成的系统:tonymacx86的教程是按照在mac中下载原版文件,然后用工具制作引导镜像,而这一步黑果小兵集成的镜像已经帮我们完成了,小兵大神的镜像还有个好处就是它的普适性,比较轻松就可以开机亮屏进入系统,这对初期很有必要,但是要注意,黑果小兵发布的引导镜像是面向全体人群的,后期我们技术上来了,可以对它进行删改,让它专门针对我们的机型,也可以自己去制作原版镜像,做到更纯净。 5、百度和google:黑苹果的路上有太多现成的案例,很多错误可以从中找到参考,比在各种群里问别人有效的多。有能力就用google,针对黑苹果这方面搜集到的信息质量比较高。 6、关于mojave硬件支持,摘自远景,折腾之前先看看你的硬件能不能装吧。 macOS Mojave 台式机黑苹果硬件选购指南-远景论坛-微软极客社区​bbs.pcbeta.com 7.必备工具:transmac(15天试用)(windos下的格式化写入镜像工具) ,diskgenius (磁盘管理) ,clover configurator(官方最新原版)(配置config文件), clover configurator(质量很高的汉化版本)但版本有些过时,hackintool应该对7.8代cpu支持比较好,关于它的使用方法。 8g优盘一个,实测 10.13,10.14 镜像写入8G完全足够,建议再多一个优盘来装pe引导系统,或者你有多台电脑,以防万一。 二、黑苹果安装流程 如何更简单明了的写出整个流程,我觉得站在巨人的肩膀上比较好,国光的教学视频非常好,十分推荐先看一遍视频,再来看下面的流程: 视频链接,对应图文在他的博客里。 注意bios设置,视频里没提: 进入BIOSLoad Optimized Defaults 恢复默认设置If your CPU supports VT-d, disable it 如果你的CPU支持VT-d设置为(禁用)If your system has CFG-Lock, disable it 如果你的主板有 CFG-Lock设置为(禁用)Secure Boot Mode, disable it 关闭主板的安全模式(Secure Boot Mode)Set OS Type to Other OS 将系统类型设置为(Other OS)If your system has IO Serial Port, disable it 如果你的主板有 IO Serial Port设置为(禁用)Set XHCI Handoff to Enabled 设置XHCI为(启用)保存退出 1.

Flutter性能优化-WebView使用姿势

背景 Flutter从诞生到现在,已经成为了跨端开发的领跑者,国内外越来越多的公司走上了flutter探索之路,我们智云大前端团队从2018年就已经开始尝试使用flutter开发少量页面,经过一年时间的技术探索和沉淀,2019年前端组发起了智云健康app的全量flutter化(基于flutter sdk 1.9.0),经过flutter组小伙伴3个月的努力,智云健康app flutter版本稳定上线。 本文记录了我们在全量flutter化app中遇到的问题,并说明我们是怎么解决这些问题的。 Flutter WebView使用问题 简介 由于flutter 通过将Widget Tree转换为纹理,然后通过Skia实现控件绘制的,从原理上就决定了flutter UI无法直接使用Android/IOS原生的控件,也就无法使用原生已经成熟稳定的WebView、MapView等了。对于这种情况,我们有两种处理方案: 开发一个Plugin,在Plugin里打开一个Activity/Controller,通过Activity/Controller加载并展示原生WebView,这种方案可以完全复用原生WebView的所有能力,也可以根据需求高度定制化WebView,不过存在一个严重的缺陷,无法实现从一个打开的原生WebView再打开flutter页面,重新打开flutter页面被盖在原生WebView下面了,相信使用此方案的小伙伴都遇到过这个问题。(如flutter_webview_plugin就是使用的此方案) 在flutter sdk 1.20之前,官方提供了一个叫PlatformView的东西,Android端叫AndroidView,IOS端叫UIKitView,通过这两个Widget,开发者可以将Android/IOS Native组件嵌入到Flutter的Widget Tree中。(官方的webview_flutter就是使用这种方式实现) 基于业务场景选择Flutter WebView方案 第一种方案,只适用于点开一个新页面打开webview,且webview不需要再打开flutter页面的情况,这种方案的好处就是能避免flutter使用原生控件会遇到的所有的坑。 第二种方案,算是官方对flutter通过PlatformView使用原生控件的一种实践,flutter sdk1.22之前,还只是处于预览状态,不建议上生产,遗留问题很多。 回到我们具体的业务场景,智云健康app主界面存在四个tab,其中社区、商城为h5页面,需要使用webview加载,其中有一个流程是这样:商场首页->商品购买页->客服聊天页,而客服聊天页为flutter开发的页面。第一种方案明显无法满足我们的需求,所以我们采用了官方webview_flutter方案。 而选择官方预览版的webview_flutter有大量的问题亟待解决,由此我们开启了漫长的flutter webview问题治理之路。。。 官方webview_flutter原理解析 AndroidView(Android): 方式:在flutter sdk 1.20之前,flutter通过AndroidView将需要渲染的内容绘制到VirtualDisplay的内存中,然后通过对应textureId获取绘制数据渲染在Surface中。VirtualDisplay类似一个虚拟显示区域,通过VirtualDisplay输出纹理,Android端可以将原生控件直接添加到Flutter Widget Tree的层次结构中。 缺陷: 因为AndroidView是被渲染在VirtualDisplay内存中,当用户点击看到的AndroidView时,其实真正点击到是渲染的Flutter纹理(Texture),用户触摸事件是发送到Flutter View中的,而不是AndroidView,所以这种方式实现的AndroidView是需要特殊处理触摸事件的,而特殊处理造成的问题就是触摸信息存在发送错误或者丢失的情况。 因为VirtualDisplay所在的位置始终是no focus的,而Flutter中focused的Window通常是实际持有的且并且对于用户是可见的Flutter纹理和Widget,所以这种方式需要特殊处理焦点问题。 由于前面两点缺陷,造成AndroidView在处理触摸、焦点是非常脆弱,而AndroidView中加入WebView的使用,由于Android WebView具有自己内部的逻辑来创建和设置输入连接,这使得前两个问题变得更加复杂了,出现各种奇怪问题,软键盘弹出异常、文本复制、共享对话框不可用等等 UIKitView(IOS): 方式:在IOS端,实现方式和Android端不同,采用的是图层混合的方式:flutter有两个透明纹理:一个在IOS原生视图之下,一个在IOS原生视图之上,需要展示在IOS原生视图下面的Flutter UI绘制在下方的透明纹理上,而需要展示在IOS原生视图上面的Flutter UI绘制在上方的透明纹理上,最后将所有图层组合起来就我们需要的界面了,这种方式IOS端同样也可以将原生控件直接添加到Flutter Widget Tree的层次结构中。 优势:使用的都是纹理组合,仍处于flutter widget渲染逻辑范围,不存在像Android端那边需要特殊处理的问题。 那为什么Android端不使用这种方式呢? 原因是在 iOS 上框架渲染后系统会有回调通知,例如:当 iOS 视图向下移动 1px 时,我们也可以将其列表中的所有其他 Flutter 控件也向下渲染 1px。 然而在Android系统上没有任何有关渲染回调的系统API,无法实现同步输出渲染。 Hybird Composition(Android): 方式:从flutter sdk 1.20官方开始推出和IOS PlatformView类似的新的Hybird Composition模式,在此模式下,官方新增了一个FlutterImageView,FlutterImageView本身是一个普通的原生View,它具有混合图层的能力。PlatformView通过把原生控件添加到FlutterView上,然后再通过FlutterImageView去实现图层的混合。 改进:类似IOS图层组合实现,无VirtualDisplay那种需要特殊处理情况,能解决之前的触摸、软键盘、文本功能。

swiper指示点 在图下面_带指示灯的按钮开关怎么接线,实物接线图详解按钮开关的接线方法...

有关指示灯的接线方法,按钮开关的指示灯怎么接线,按钮开关指示灯共有二种类型,一种是按钮一体的,一种是单独的指示灯,究竟带指示灯的按钮开关怎么接线,通过实物接线图来学习下具体的接线方法。 指示灯的二种类型,见下面二张图: 图1:按钮一体的指示灯 图2:单独的指示灯 一体的指示灯有两个点用来接灯,单独的指示灯就两个点,在选择耐压值时,一般是和工作的接触器线圈一样。 以简单的自锁来举例: 图3:自锁 先不考虑指示灯,先把线路接好。 图4:红色对应停止蓝色启动 图4:额外加了一个热过载继电器 接线原理分析: 断路器出来三根线,这种接触器的线圈应是380伏,两个指示灯也是380伏。两个指示灯的一端已经接通了一条火线(红色线),只要考虑剩下的一条线接在什么地方就可以了。 既然是启动按钮,当接触器吸合时就是工作状态,其常开辅助触点一定会闭合,所以启动指示灯接常开点上。 当按下停止按钮,接触器断电,辅助触点常闭一定是闭合状态,所以停止按钮的指示灯可以接到常闭点上。 注意:在这种情况下,电机不工作时停止按钮的指示灯会常亮,可以通过单P断路器来控制开关。

vue—watch深度监听(deep:true)

1、监听数字 如下图:第一个输入框绑定了data中的num,使用watch监听num的变化,可以发发现是可以正常监听的。 2、监听对象 通过上面案例可以发现,如果监听的是一个对象,那么我们这种写法是监听不到对象内部的变化的。 3、深度监听 1、watch加上deep:true之后就是深度监听 2、handler中返回变化后端obj 3、watch第一次加载不执行,数据有变化才会执行,如果需要页面加载完毕执行,那就加上immediate:true与deep同级

删除文件却提示没有权限,怎么解决

有时候,我们想删除一个文件或者文件夹,却发现删除不了,提示一个错误的信息。 这时候,我们要首先看有没有系统进程占用了这个文件,如果占用则先关闭这个软件,如果没有占用,再用管理员身份试试能不能删除,如果还是不行,则要尝试修改成超级管理员权限。 比如我要删除WindowsApps文件夹,先右击,选择属性-安全-高级。 之后,所有者那里点击更改,然后弹出一个页面,输入Everyone,注意大写,小写我测试失败了。 然后回到界面,把这个框点勾,然后点击确定,之后应该就有权限访问了。 注意:以上操作设计到超级管理员身份,修改文件需注意不要误删,可以做好备份再放心删除。 另外,还有一个方法可以直接删除文件,使用unlocker软件,右击unlocker,然后点击删除,点确定即可,这个方法是删除在回收站,但是注意,回收站的文件有时候是不能直接还原的,还是需要修改权限。 如果这些方法还是不行,可以在评论区留言,我会想办法找到一个适合你的方法。

DVD管理器

某音像店有一批DVD,通过对外出租DVD盈利。现在需要你为该店开发一 个迷你DVD管理器,实现DVD碟片的管理,包括如下功能: 新增DVD 查看DVD 删除DVD 借出DVD 归还DVD,并计算租金 DVD管理菜单,实现菜单切换 创建DVDMenu类 public class DVDMenu { Scanner input = new Scanner(System.in); DVDSet dvdSet = new DVDSet(); /** * 显示菜单内容 */ public void showMenu(){ System.out.print("\n"); System.out.println("\t欢 迎 使 用 迷 你 DVD 管 理 器"); System.out.println("------------------------------------------"); System.out.println("\t\t\t1.新增DVD"); System.out.println("\t\t\t2.查看DVD"); System.out.println("\t\t\t3.删除DVD"); System.out.println("\t\t\t4.借出DVD"); System.out.println("\t\t\t5.归还DVD"); System.out.println("\t\t\t6.排行榜"); System.out.println("\t\t\t7.退 出"); System.out.println("-------------------------------------------"); } /** * 实现菜单选择 * @return */ public int startMenu() { int getNum; showMenu(); System.out.print("请选择:"); if (input.hasNextInt()) { getNum = input.

区分in和exists、not in和not exists

区分in和exists、not in和not exists select * from 表A where id in (select id from 表B) 上面SQL语句相当于 select * from 表A where exists(select * from 表B where 表B.id=表A.id) 区分in和exists主要是造成了驱动顺序的改变(这是性能变化的关键),如果是exists,那么以外层表为驱动表,先被访问,如果是IN,那么先执行子查询。所以IN适合于外表大而内表小的情况;EXISTS适合于外表小而内表大的情况。 关于not in和not exists,推荐使用not exists,不仅仅是效率问题,not in可能存在逻辑问题。

Mysql循环删除或更新数据

使用前提: 1.删除或更新数据时,需要使用索引条件,并且控制每次更新或删除的行数。 2.更新后的数据不能再次被更新,可以通过where条件进行控制实现。 python3脚本如下 from pymysql import connect as MysqlConn #pip3 install pymysql==0.9.3 from datetime import datetime from time import sleep def loop_delete_update(host,port,user,pswd,db,sql): conn = MysqlConn(host=host, port=port, user=user, passwd=pswd, db=db, charset='utf8') total_count = 0 while True: with conn.cursor() as cursor: #cursor.execute("SET SQL_LOG_BIN=0") #是否关闭当前会话的binlog日志,关闭后速度更快,但是操作不会同步到从库 counts = cursor.execute(sql) conn.commit() total_count += counts print("%s\t%s"%(datetime.now().strftime("%Y-%m-%dT%H:%M:%S.%f"),total_count)) #执行进度 if counts == 0: #上一次更新或删除的行数为0时,退出循环 break sleep(0.01) #控制频率 conn.close() sql = "DELETE FROM test WHERE create_time < '2020-10-01 00:00:00' LIMIT 200 "