在用CoreIDRAW画图时,有时会遇到这样的问题:
这是因为需要先打开下面的服务,设置为启动即可:
Mac navicat连接mysql报2003错误
2003 - Can’t connect to MySQL server on ‘127.0.0.1’ (61 “Connection refused”) 命令行sudo /usr/local/Cellar/mysql/8.0.22_1/support-files/mysql.server start
重新启动mysql,报MySQL server PID file could not be found!
ERROR! The server quit without updating PID file (/usr/local/var/mysql/minxxx.pid
是没有bogon/没有权限,我们给予权限即可
执行:
sudo chmod -R 777 /usr/local/var/mysql/
再启动mysql就成功了!!!
navicat也能连上了!
目录 前言正文1.创建项目2.创建app3.在app中写入数据并创建4.写入路由5.在views.py中写入相应的代码6.基本实现简单的前后端分离开发 前言 我们开发网站时需要有前端和后端,开发方式分为前端和后端一起开发,前端后端分离开发,一般大多数采用前后端分离开发,因为这样开发的效率高且安全,Django本身就可以完成前后端分离开发,为前端提供json数据返回,但是django本身的序列化太麻烦,几乎没人用。所有Django推出了一个Django-REST-framework,它是一个建立在django基础上的框架,后续我们会介绍Django-REST-framework,它比较常用。
我们现在用django实现一个简单的前后端分离开发,感受一下django前后端分离开发有多么的困难。。。。。
正文 1.创建项目 2.创建app 3.在app中写入数据并创建 4.写入路由 5.在views.py中写入相应的代码 其中的在前端显示的必须是序列化的类型的数据,所以在django中需要把数据先序列化才行,这个特别麻烦(简单的还好,复杂的就很麻烦了),其中的safe=False的作用是返回是数据类型不唯一,因为它的JsonResponse()里面的数据必须是字典的形式,所以我们需要用safe=False把格式不唯一。
6.基本实现简单的前后端分离开发
Mifare Classic Tool经典版官方介绍:
Mifare Classic Tool经典版,一般又称Mifare Classic Tool。
功能读取Mifare经典标签你读的标签数据储存和编辑写入到的Mifare经典的标签(逐块)克隆的Mifare经典标签基于字典攻击的密钥管理(写在一个文件中(字典)的钥匙,你知道。谭将尝试验证这些键对所有部门和尽可能地阅读。)创建,编辑和保存密钥文件(字典)解码和编码的MIFARE Classic值块显示通用标签信息突出的十六进制显示标签数据标签数据显示7位US-ASCII作为一个表,显示的Mifare经典的准入条件显示的Mifare经典值块整数它是开源(GPL第三版)
Mifare Classic Tool经典版下载安装失败或使用异常,请 -> 一键举报
Mifare Classic Tool经典版最新版v4.0.2更新说明(2020-12-05)
Version 3.1.2: • Bugfix: Export dumps correctly. (Thanks to Niel!) • Show error if Access Conditions could not be decoded.Version 3.1.1: • Some minor bug fixes.Version 3.1.0: • Importing/Exporting keys is now possible. • Importing multiple files is now possible. • Some minor bug fixes.Version 3.0.0:• Added import/export tool for different file formats.
Zabbix 简介[1]
Zabbix 是由 Alexei Vladishev 开发的一种网络监视、管理系统,基于 Server-Client 架构。可用于监视各种网络服务、服务器和网络机器等状态。
Zabbix 使用 MySQL、PostgreSQL、SQLite、Oracle 或 IBM DB2 储存资料。Server 端基于 C语言、Web 前端则是基于 PHP 所制作的。Zabbix 可以使用多种方式监视。可以只使用 Simple Check 不需要安装 Client 端,亦可基于 SMTP 或 HTTP 等各种协定做死活监视。在客户端如 UNIX、Windows 中安装 Zabbix Agent 之后,可监视 CPU 负荷、网络使用状况、硬盘容量等各种状态。而就算没有安装 Agent 在监视对象中,Zabbix 也可以经由 SNMP、TCP、ICMP检查,以及利用 IPMI、SSH、telnet 对目标进行监视。另外,Zabbix 包含 XMPP 等各种 Item 警示功能。
Zabbix 功能和特性[2]
安装与配置简单
可视化web管理界面
免费开源
支持中文
自动发现
分布式监控
实时绘图
环境
Kubernetes 版本 1.15.6
Zabbix 版本 3.4.7 (镜像,在官方基础上修改,下文会具体介绍)
Mariadb 版本 10.3.5
今天在vue项目中的js代码中引用Element UI的Message 消息提示
this.$message.success('复制成功') 但是在调用的时候却会报错,如图:
查了好多资料得到解决:
是因为,在js文件里找不到this.$message这个属性。
正确的写法因该是如下:
先单独引入: import { Message } from "element-ui"; 然后使用: Message.success('复制成功') 或者 // Message({ // message: "复制成功", // type: "success" // }); 参考
https://www.jianshu.com/p/7297eed4b162
kafka stream 将一个topic里的消息进行业务处理,再写入到另一个topic进行消费(拆分开每个id的分类关系 1. 编写flume执行文件2. kafka stream 将一个topic里的消息进行业务处理,再写入到另一个topic进行消费(拆分开每个id的分类关系)2.1 以 12112,1211,yes 的格式消费出来2.2 代码: 1. 编写flume执行文件 vi eventsattend-flume-kafka.conf
eventattend.sources=eventAttendSource eventattend.channels=eventAttendChannel eventattend.sinks=eventAttendSink eventattend.sources.eventAttendSource.type=spooldir eventattend.sources.eventAttendSource.spoolDir=/opt/flume160/conf/jobkb09/dataSourceFile/eventAttend eventattend.sources.eventAttendSource.deserializer=LINE eventattend.sources.eventAttendSource.deserializer.maxLineLength=320000 eventattend.sources.eventAttendSource.includePattern=eventAttend_[0-9]{4}-[0-9]{2}-[0-9]{2}.csv eventattend.sources.eventAttendSource.interceptors=head_filter eventattend.sources.eventAttendSource.interceptors.head_filter.type=regex_filter eventattend.sources.eventAttendSource.interceptors.head_filter.regex=^event,yes* eventattend.sources.eventAttendSource.interceptors.head_filter.excludeEvents=true eventattend.channels.eventAttendChannel.type=file eventattend.channels.eventAttendChannel.checkpointDir=/opt/flume160/conf/jobkb09/checkPointFile/eventAttend eventattend.channels.eventAttendChannel.dataDirs=/opt/flume160/conf/jobkb09/dataChannelFile/eventAttend eventattend.sinks.eventAttendSink.type=org.apache.flume.sink.kafka.KafkaSink eventattend.sinks.eventAttendSink.batchSize=640 eventattend.sinks.eventAttendSink.brokerList=192.168.116.60:9092 eventattend.sinks.eventAttendSink.topic=eventAttend_raw eventattend.sources.eventAttendSource.channels=eventAttendChannel eventattend.sinks.eventAttendSink.channel=eventAttendChannel 执行见博客:https://blog.csdn.net/weixin_43434273/article/details/110880886
2. kafka stream 将一个topic里的消息进行业务处理,再写入到另一个topic进行消费(拆分开每个id的分类关系) 2.1 以 12112,1211,yes 的格式消费出来 2.2 代码: package cn.bright.kafka; import org.apache.kafka.common.serialization.Serdes; import org.apache.kafka.streams.*; import org.apache.kafka.streams.kstream.KStream; import java.util.ArrayList; import java.util.List; import java.util.Properties; import java.util.concurrent.CountDownLatch; /** * @Author Bright * @Date 2020/12/18 * @Description */ public class EventAttendStream { public static void main(String[] args) { Properties prop = new Properties(); prop.
jdk实际上自带了两种简单定时任务类,但由于功能的局限性,通知不会应用到项目中,这里只做简单介绍
1.Timer类
1.1概念
java.util.Timer类
Timer可以调用java.util.TimerTask任务
可以使TimerTask按固定频率执行
功能单一,通常不用
1.2任务类
extends TimerTask
public class DemoTimerTask extends TimerTask { @Override public void run() { System.out.println("Timer task1" + new Date()); } } 1.3启动定时任务
我这里写在了controller,如果要自启动那么定义到main即可
@GetMapping("/timer") public void timer() { TimerTask timerTask = new DemoTimerTask(); Timer timer = new Timer(); //指定任务首次执行延迟,执行频率,单位毫秒 timer.schedule(timerTask, 5000, 10000); } 1.4注意
在多线程情况下Timer运行TimerTask时,
只要其中之一的TimerTask抛出异常,那么所有的TimerTask都会中止
而ScheduledExecutorService解决了这一问题
2.ScheduledExecutorService
2.1概念
java.util.concurrent.ScheduledExecutorService
与Timer类似,也是java自带的定时任务类
区别Timer的地方在于,ScheduledExecutorService是基于线程池设计的,
每个任务都会分配到线程池中的一个线程去执行,并发执行,互不影响
2.2任务类
implements Runnable
public class DemoScheduledExecutorService implements Runnable { @Override public void run() { System.
importrandomimporttimefrom PIL importImagefrom io importBytesIOimportrequests as rqfrom bs4 importBeautifulSoup as bsfrom selenium importwebdriverfrom selenium.webdriver importActionChainsfrom selenium.webdriver importChromeOptionsdefcrop_image(image_file_name):#保存图片
#截图验证码图片
#定位某个元素在浏览器中的位置
time.sleep(2)
img= browser.find_element_by_xpath("//*[@class='geetest_canvas_slice geetest_absolute']")
location=img.locationprint("图片的位置", location)
size=img.size
top, buttom, left, right= location["y"], location["y"]+size["height"], location["x"], location['x'] + size["width"]print("验证码位置", left,top, right, buttom)
screenshot=browser.get_screenshot_as_png()
screenshot=Image.open(BytesIO(screenshot))
captcha=screenshot.crop((int(left),int(top), int(right), int(buttom)))
captcha.save(image_file_name)returncaptchadefcompare_pixel(image1, image2, i, j):#判断两个图片像素是否相同
pixel1 =image1.load()[i, j]
pixel2=image2.load()[i, j]
threshold= 60
if abs(pixel1[0] - pixel2[0]) < threshold and abs(pixel1[1] - pixel2[1]) < threshold and abs(pixel1[2] - pixel2[2]) has_find =Falsefor i in range(left, img1.
TypeError: init() got an unexpected keyword argument ‘n_iter’ 今天遇到一个报错:
Traceback (most recent call last): File "C:/Python/pythonProject/learning-nlp-master/chapter-9/classification/classifier.py", line 225, in <module> main() File "C:/Python/pythonProject/learning-nlp-master/chapter-9/classification/classifier.py", line 143, in main svm = SGDClassifier(loss='hinge', n_iter=100) File "C:\Users\Tony\anaconda3\lib\site-packages\sklearn\utils\validation.py", line 73, in inner_f return f(**kwargs) TypeError: __init__() got an unexpected keyword argument 'n_iter' Process finished with exit code 1 这是因为该分类器的参数n_iter 在新版本中变成了n_iter_no_change,所以只要把这一行的n_iter改为n_iter_no_change就行:
svm = SGDClassifier(loss='hinge', n_iter=100) svm = SGDClassifier(loss='hinge', n_iter_no_change=100) 参考链接:
https://blog.csdn.net/qq_37171215/article/details/107302609
这个是官网当前给出的配置文件模板
https://github.com/rabbitmq/rabbitmq-server/blob/v3.8.x/deps/rabbit/docs/rabbitmq.conf.example
模板链接: link.
把这个放到 centos7下面的 /etc/rabbitmq目录下,命名为rabbitmq.conf
如图
vim编辑这个文件
如图
注释那里是错误的写法,旧的写法没有的
没注释那里的写法是对的,详细见官方
官方文档link
如图
然后就可以在其他主机登录了。
在python中使用过程中,我们常常会遇到数据类型转换的问题。本文小编整理了python中str转int的两种方法:map函数法和lambda表达式法。具体内容请看本文。
方法一:map函数法
map() 会根据提供的函数对指定序列做映射。
def square(x): return x ** 2 a = [1,2,3,4,5,6] b = map(square,a) b = list(b) print(b) #result:[1, 4, 9, 16, 25, 36] print(list(map(lambda x,y:x + y ,[1,2,3,4,5],[10,20,30,40,50]))) #result:[11, 22, 33, 44, 55] 方法二:lambda表达式法
from functools import reduce DIGITS = {'0': 0, '1': 1, '2': 2, '3': 3, '4': 4, '5': 5, '6': 6, '7': 7, '8': 8, '9': 9} def str2int(str): def char2num(s): return DIGITS[s] return reduce(lambda x,y:x*10+y,map(char2num,str)) str = '5632' nums = str2int(str) print('str-->int:',nums) 以上就是小编总结的python中str转int的两种方法,大家可以选择自己喜欢的方式进行转换哟~
零基础如何入门激光SLAM 最近有几个人加我,都说是刚开始学激光slam,基本都是研一,也有一些大四的(大四的都开始学SLAM了!)。
情况也都差不多,有的是课题组里只有自己做slam,有的是完全没人带,有的是完全没基础,c++都没学过的那种。
这些小白都不知道怎么进行学习,问了我好多相同的问题,所以我就将我自己的思路整理了一下,也就是这篇文章的由来.
第一部分是我自己的SLAM接触史,第二部分是为硕士小白入门写的推荐学习路线,第三部分是为了SLAM爱好者入门写的推荐学习路线.
长文,无图,做好准备.以下内容仅为我自己的观点,有可能有错误及不足,望见谅.
1 我的SLAM接触史 1.1 c++ 我也是研一的时候知道自己课题是SLAM相关的。
所以就在2016年10月份的时候开始看 c++ prime plus。之前我没接触过编程,就大一时候上过c语言的课,学完了也没记得什么,之后也没再碰过代码。
这时候还不知道咋编代码,咋运行程序,所以 c++ prime plus 就是光看,没去实际编代码。
1.2 ubuntu 到了2017年3月,课题正式确定,《基于SLAM的室内移动机器人导航技术研究》。
经过同学的帮助,帮我装了人生第一个双系统,ubuntu1404,开始正式接触linux系统。
1.3 ROS 之后边学ubuntu的命令行(简单教程),边去学ROS ,ROS的wiki地址为 wiki.ros.org。
ROS的wiki上的知识实在是太多了,有太多太多的网页跳转,导致我花了太多的时间用在逛wiki上,当时存了30多个书签等着我一个一个的去看。
其实只要学完 Beginner Level 的教程就可以了,这个之后详细说明。
1.4 ROS By Example 1 之后去看了这本书《ros by example 1》,这本书对我来说真的非常重要,让我跑通了第一个ros的demo,十分有成就感。
这本书有配套的代码,可以直接运行,照着书中的步骤一步一步运行即可。学了这么久,通过这本书里的例子,终于在rviz中看到了turtlebot,并让机器人成功的动起来了,真是非常有成就感的一件事。
1.4 概率机器人 忘记了看这本书的具体时间了,只记得实验室里有这本书,然后我实习的时候借去看了一遍。这本书真的是很厉害,里边有关于机器人定位与建图的所有概念和公式。
强烈建议入门的时候不要读这本书,不要读,不要读。
因为当时我看完了一遍,真是一点都没理解,也一点没记住。这本书就是现在的我来看,也有很多不理解,读不懂的地方,更别说刚入门的小白了。
1.5 小强机器人 之后,我去公司实习,实习的时候有个机器人可以让我玩,小强机器人。这是第一次弄机器人,也是第一次在机器人上操作ROS。
实践ROS与操作机器人大概花费了我至少2个月的时间。时间很长,因为可能突然出现有些问题导致你卡住,进行不下去了。
记得很清楚,在笔记本上rviz点击下发move_base的目标点,机器人始终不动,这个问题卡了我2周的时间。原因是没有在机器人里的/etc/hosts里添加笔记本的ip。。。
所以,如果你课题组里只有自己做SLAM或者机器人相关,一定要多加几个社群,qq群也好,微信群也好,一定不要自己一个人去研究.有很多小问题在别人那只是一句话就能解决的事,自己研究可能就要耽误2周甚至更长的时间。而且,现在做社群的有很多,搜索也很容易找到。
1.6 cartographer 再之后,17年12月份开始,到18年1月份,弄了将近1个月如何使用carographer。弄懂如何跑demo之后,又开始学如何修改launch文件,如何写urdf。
再之后,就是做导航相关的了。
回顾这一年的时间,由于没人带真是走了挺多弯路,学习也没有抓住重点。当然,学过的所有知识都不是无用的,只是没到需要用的时间而已。同时,由于之前基础打的牢,学的多,所以现在我对ROS相关的理解非常深刻,操作也很流畅。
接下来,我将我认为的入门需要学的最重要的东西以及流程写下来,希望可以帮助小白们知道如何学习SLAM,以及如何做SLAM相关的科研。
2 硕士小白做激光SLAM相关课题的学习路线 硕士同学如果课题是SLAM相关的,该如何尽快入门呢?课题组只有自己一个做SLAM的该怎么办呢?
不要慌。目前大部分做SLAM的几乎都是自学的,即使是课题组有其他做SLAM的也只能是让自学的速度更快一点而已,因为知识始终是要自己理解了之后才能成为自己的。多加几个社群多交流,也是一样的.
2.1 第一步:双系统 我认为的第一步就是先要装个双系统,windows+ubuntu ,不建议使用虚拟机,虚拟机本身会有很多问题,小白根本不知道出现的问题是虚拟机本身的问题还是环境没弄好导致的问题。相信每个做SLAM的都自己装过不下1遍的双系统。
一、常用命令
1、显示 Docker 版本信息。
docker version
2、显示 Docker 系统信息,包括镜像和容器数
docker info
3、帮助
docker --help
二、镜像命令
1、docker images
1)、含义
列出本地主机上的镜像
2)、说明
参数说明
1、REPOSITORY:表示镜像的仓库源
2、TAG:镜像的标签
3、IMAGE ID:镜像ID
4、CREATED:镜像创建时间
5、SIZE:镜像大小
OPTIONS 说明
-a :列出本地所有的镜像(含中间映像层,默认情况下,过滤掉中间映像层);
--digests :显示镜像的摘要信息;
-f :显示满足条件的镜像;
--format :指定返回值的模板文件;
--no-trunc :显示完整的镜像信息;
-q :只显示镜像ID
2、docker search
1)、含义
从Docker Hub查找镜像
2)、示例
3)、说明
OPTIONS 说明
--automated :只列出 automated build类型的镜像;
--no-trunc :显示完整的镜像描述;
-s :列出收藏数不小于指定值的镜像
3、docker pull
1)、含义
下载镜像
2)、示例
docker pull mysql
4、docker rmi
1)、含义
以前不懂服务器是什么,就知道可以搭建网站。后来去阿里云注册了账号,看见学生活动才114一年就买了,配置很垃圾,是对于初学者来说还不错。
想着当时也够傻,没有一点基础,还作死地装了一个linux系统。完全摸不着门道啊,就想放一个静态页面上去让自己可以访问。无奈刚入门的时候你连提问都不知道怎么提,当然就搜不到需要的东西,再说也看不懂。后来,装上熟悉windows系统。
当时刚好准备做一个失物招领的小程序。有了服务器还缺域名,然后申请了xyz的域名,现在差不多都过期了。买的时候便宜。续费还是比较贵,现在买的top域名,续费比其他的便宜。这还不够,我写小程序前端,一个学长写后台,然后勉强能运行。但是两个人都是菜鸟,其实对接还是不太够。后来跟着老师去宁夏一个多月,学了java的springboot,对新手挺友好的,我就自己写了一个后台。整个小程序都自己完成以后,虽然承受不住并发什么的,也算是自己的一个项目,想要发布的时候,发现个人身份不能发布。现在整个项目也就荒废了,除了我大概没人记得。
然后就消停了很长一段时间,平时也就远程上去用浏览器刷刷课,或者用pandownload下载一些东西,毕竟不用我自己一直开着电脑。mooc的选修课,直接给他放那还会自动播放,都不用操心就刷完了。
我其实一直都想拥有一台自己的服务器,对就是放自己家的那种,感觉心里比较稳。(过了一两个月其实感觉然并卵,可能等真正需要的时候才知道好用,暂时没体会到方便的地方,除了搭建了网站自己访问装装逼以外。如果可以的话其实买高级的就方便办公,我买的垃圾货总共加起来才400多,配置高的话装好环境,在网吧都可以写程序)
最近的话,是前一个月吧。刷b站发现一个装nas的教程,反正我就发现这玩意和电脑主机差不多。up有自己组装的教程,我由于懒得弄,就买了一台他提到的蜗牛星际。当时在群里问了一下群友,知道是比以前涨了不少价钱,但是还是忍不住买了。
蜗牛到手之后是黑群晖,然后按照卖家的说法下载群晖助手,顺利搜索到机器。用网页访问,可以上传下载。容量也不太,只有送的16g固态。想着真没意思,用不惯。
然后问卖家可以不可以装windows系统,卖家说可以,我其实当时非常不确定,也不知道该怎么弄。就想着这16g肯定不够,去pdd买了个320的拆机机械硬盘,不能用的话亏得也不多,还有一年的质保。买回来以后卖家说要把一个盘位的sata线换一下。
换了以后,成功装上windows系统,发现还是启动群晖系统,就把固态给拆了。可能是有坏道还是什么问题,启动的时候,自动修复了一下才启动成功。这也就是一台主机了,只不过这台主机功耗小很多,挂一块硬盘大概25w吧,一天半度电左右。
接下来就和电信要了公网ip,但是是动态的,所以我部署了程序,动态的修改域名解析,这样就不用担心找不到自己的主机。不知道ddns的时候,想着每次更换ip都能知道,就检测ip变化给我发邮件。后来自己根据阿里云提供的接口部署了一个java程序,每分钟检测ip。所以,现在这两家伙总是一起来的,也懒得关了。
还不够,路由器还要设置端口转发,不然不知道到底访问哪台机器。所以这个时候就需要设置静态ip,设置了端口转发也可能找不到。这里忘了说,如果路由器不是桥接模式,机器的网线可能要接光猫才可以。我是和电信说给我改桥接模式,用路由器拨号上网,网线连接的是路由器。
这样连接好就可以远程访问了,不管是不是一个局域网。
另外就是随便弄了一下,把tomcat加入服务,每隔一分钟就检测公网ip是否改变,改变了更换域名解析。我发现tomcat有时候会停止,也不报错就是不检查。我又在电脑设置计划任务,每隔4个小时重启一次tomcat服务,这样即使停了,至少4小时以后又能够正常检测。当然,这种异常停止的情况还是比较少的。
当有了服务器,就可以做这些东西,我的搭建的都是别人提供的项目。感谢这些大佬!Tenderne:自己拥有一台服务器可以做哪些很酷的事情?www.zhihu.com
这次的swoole学习,比较缓慢
也由于这些几天事比较多,晚上没去学习,swoole的笔记也一直在没编写,下面简单介绍和应用下swoole
swoole是什么?
异步、并行、高性能
纯C编写
php扩展
swoole能做什么?
异步多线程服务器及客户端
异步MySQL、Reids、数据库连接池、任务队列
http/websocket服务器/客户端
异步文件读写
Swoole2.0支持协程
Swolle 实践
swoole手册:https://wiki.swoole.com/wiki/page/1.html
服务器版本:centos7/ubuntu16
php版本:5.4+
一、swoole安装(百度上有很多安装文章,也可以用宝塔直接安装)
二、简单TCP服务器创建
/**@创建TCP服务器
* 作者:生生
*/
$host = '127.0.0.1';//监听对应外网的IP 0.0.0.0监听所有ip
$port = 9501; //端口号(1024以下端口需要root权限)
$mode = SWOOLE_PROCESS;//SWOOLE_PROCESS 进程模式-多进程方式
$socke_type= SWOOLE_SOCK_TCP;//SWOOLE_SOCK_TCP 服务器类型-默认TCP
$serv = new swoole_server($host,$port); //后面2参数不写是默认
/**@
* 函数:bool $swoole_server->on(string $event,miexd $callback);
* $event
* connect:当建立链接的时候(2个默认参数:$serv-服务器信息,$fd-客户信息 /-名字随意)
* receive:当接收数据的时候(4个默认参数:$serv-同上,$fd-同上,$from_id-客户id,$data-传递数据)
* close:关闭链接
*/
//@作用:监听链接进入事件
$serv->on('connect',function($serv,$fd){
echo '链接成功';
});
//@作用:监听数据接收事件
$serv->on('receive',function($serv,$fd,$from_id,$data){
var_dump($fd.'--'.$data);
/**@
* 函数:bool Server->send(mixed $fd, string $data, int $serverSocket = -1);
展开全部
我个人e68a84e8a2ad3231313335323631343130323136353331333365656531认为:1KHZ是中间值1KH-60HZ是低音频区,比如800HZ调到10BD,那么600HZ就要调到20BD最佳,不过这要看你的感觉了,也可以少调一点.1KHZ以后是高频区,也就常说的高音区,调的时候和上面一样.我个人认为最佳的调音方式是,以1KHZ为中心点成V字形,但是也要看你听的音乐了,比例你要是挺火爆一点的,就把低音区调高一点,但是也不能调太高,物极必反,会出现浑浊的声音,高音区适当调低一点.这个东西只能告诉你一点最基本的东西,因为萝卜白菜各有所爱,只要自己合适就行.还有你要是不把分给我,就对比起我打了这么多字.
没有仪器靠耳朵调,声音浑浊减60-80,低音压耳减125,中音过厚减400,500,中频打耳朵减1250-2000,人声太突出减3K,高频刺耳减4-6K,齿音太重减8K,高音发毛减12-16K。反过来,低频不丰满加60-80,力度不足加125,人声单薄加200-400,声音发虚加1K附近,人声位置偏后,提3K,声音不亮,不通透加4-8K,空间感不足加12-16K。低音太硬减160-200,男声喉音重减200,鼻音重减250。
①首先把MIC输入电平调整到0db,然后把该路推子拉到底。;
②将MIC放到音箱前3、4米左右处,MIC指向音箱
③把推子慢慢往上推直到听见啸叫后(记住这个啸叫点),迅速往下拉(拉到临界状态:也就是似叫非叫的状态)
④谈到重点了,也就是调整均衡器。新手入门级调音师普遍遇到有啸叫时,不知道这个啸叫点是哪个频点。那么好,我们就要逆向思维。
比如:步骤“③”时这个啸叫点,以自己个人主观判断大概是低中高哪个频率段。如果这个啸叫点是低频段20Hz—500Hz范围内,然后31Hz,40Hz,50Hz,63Hz.。。500Hz。依次往上推3个db,直到听到与步骤“③”时这个啸叫点一样的点时。然后将该点往下拉3个db,均衡器调整完第一个点时,将MIC的推子在临界点的位置继续往上推,直到听见下一个啸叫点。(如果还是步骤“③”时这个啸叫点在叫,那么有两种可能:一是拉错点了,二是这个点还需要往下拉)!主音箱以3,4个点左右为宜,返送6,7个点为宜。均衡器调整完后将点与点圆滑过渡一下。
数字基本概念 数组,array,为处理方便,在脚本编写中,把具有相同类型的若干个变量按照有序的形式组织起来。
数组的定义 Dim a(n)
a是数组名,这个数组一共有n+1个元素。
数组下标从0开始,最大下标为n,注意这里的n只能是数值常量,不能是变量。
数组的赋值 Dim 道具栏(5)
“道具栏(5)”这个数组共有6个元素,当脚本执行到这句话时,按键精灵就会给它分配6个空间,其索引号从0到5
例如:
Dim 道具栏(5)
道具栏(0)=“小红药”
道具栏(1)=“大红药”
道具栏(2)=“小蓝药”
道具栏(3)=“大红药”
道具栏(4)=“屠龙刀”
道具栏(5)=“倚天剑”
动态数组 数组分为静态数组和动态数组
动态数组在声明时没有确定数组大小
redim语句可以重新分配数组大小
**Dim 道具栏()**定义一个动态数组
**ReDim 道具栏(5+1)**给数组变量重新分配空间,现在共有7个元素
数组的上限和下限 用UBound可以获取数组的上限,既最大下标
用LBound可以获取数组的下限,既最小下标
Dim 道具栏(5)
TrancePrint “数组上限” & UBound(道具栏)//输出上限为5
TrancePrint"数组下限" & LBound(道具栏)//输出下限为0
数组的遍历 将整个数组所有元素从头到尾“数”一遍,使用for语句。
例如:
Dim 道具栏(5)
道具栏(0)=“小红药”
道具栏(1)=“大红药”
道具栏(2)=“小蓝药”
道具栏(3)=“大红药”
道具栏(4)=“屠龙刀”
道具栏(5)=“倚天剑”
for i=0 to Ubound(道具栏)
tranceprint"道具栏(" & i & “)=” & 道具栏(i)
next
数组的复制 定义一个变量,直接把数组复制给它
例如:
//定义一个数组a
Dim a(2)
gradle守护程序还会为每个构建日志创建许多大型文本文件。 它们存储在这里:
app/build.gradle
“X.X”是使用的gradle版本,如“4.4”,“XXXX”只是随机数,如“1234”。
在短短几个月内,总大小可以增长到几百MB。 无法禁用日志记录,文件不会自动删除,也不需要保留它们。
但是您可以创建一个小的gradle任务来自动删除它们,并释放大量的磁盘空间:
将其添加到您的app/build.gradle:
android {
buildTypes {
...
}
// Delete large build log files from ~/.gradle/daemon/X.X/daemon-XXX.out.log
// Source: https://discuss.gradle.org/t/gradle-daemon-produces-a-lot-of-logs/9905
def gradle = project.getGradle()
new File("${gradle.getGradleUserHomeDir().getAbsolutePath()}/daemon/${gradle.getGradleVersion()}").listFiles().each {
if (it.getName().endsWith('.out.log')) {
// println("Deleting gradle log file: $it") // Optional debug output
it.delete()
}
}
}
要查看哪些文件正在被删除,您可以在Android Studio中看到调试输出 - &gt; 查看 - &gt; 工具Windows - &gt; 建立。 然后按该窗口上的“切换视图”按钮以显示文本输出。
请注意,Gradle Sync或任何Gradle Build将触发文件删除。
更好的方法是自动将文件移动到废纸篓/回收站,或者至少先将它们复制到废纸篓文件夹。 但我不知道该怎么做。
首先声明HDFS并不擅长append操作。 本文以循环追加内容到文件为例,文件大小达到1KB后,重新创建新文件继续写入,写满5个文件后程序停止……,代码如下:
package com.leboop.www; import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.fs.FSDataOutputStream; import org.apache.hadoop.fs.FileSystem; import org.apache.hadoop.fs.Path; /** * Created by leb on 2018/4/16. */ public class HDFSAppend { public static void main(String[] args) throws Exception { Configuration conf = new Configuration(); // conf.set("fs.defaultFS", "hdfs://192.168.128.11:9000"); FileSystem fs = FileSystem.get(conf); System.out.println("fs = " + fs); String content = "Hello Word!\r\n"; Path filePath = new Path("/append/file"); FSDataOutputStream fsDos = null; int fileCount = 0; while (true) { // 循环向文件中写入数据 if (!
神经网络的学习 这里所说的“学习”是指从训练数据中自动获取最优权重参数的过程。
损失函数 神经网络的学习通过某个指标表示现在的状态,然后,以这个指标维基准,寻找最优权重参数,神经网络的学习中所用的指标称为损失函数
均方误差 E = 1 2 ∑ k ( y k − t k ) 2 E = \frac{1} {2}\sum_k(y_k-t_k)^2 E=21k∑(yk−tk)2
这里, y k y_k yk 表示神经网络的输出, t k t_k tk表示监督数据,k表示数据的维度
def mean_squared error(y, t): return 0.5 * np.sum((y-t)**2) 交叉熵误差 E = − ∑ k t k l o g e y k E = -\sum_kt_klog_{e}y_k E=−k∑tklogeyk
y k y_k yk是神经网络的输出, t k t_k tk是正确解标签
由于 t k t_k tk中只有正确解标签的索引为1,其他均为0(one_hot表示)。因此,式实际上只计算对于正确标签的输出的自然对数。
原标题:20个必须知道的转录组知识点!
随着测序成本的不断下降,转录组测序分析已然成为生物学及医学研究不可或缺的技术手段。
但是,对于大多数初学者来说,会遇到各种各样的问题。这里,小编就给大家重点介绍一下转录组测序分析的相关知识。
Question and Answer
1、什么是转录组测序?
转录组广义上指在某一生理条件下,细胞内所有转录组产物的集合,包括:mRNA、ncRNA、rRNA等;狭义上指所有mRNA的集合。
转录组测序的研究对象为特定细胞在某一功能状态下所能转录出来的所有RNA的总和,主要包括mRNA和ncRNA。
转录组具有时间特异性、组织特异性、空间特异性等特点。
2、无参转录组和有参转录组的区别?
如果所研究的物种有组装注释质量较好基因组序列,且和该基因组序列比对效率较高,那么可以采用有参转录组的分析策略,直接进行分析。反之,则需要按照无参转录组的分析策略进行转录本组装,构建unigene库,然后进行后续分析。
3、普通转录组测序适用于哪些情况?
普通转录组测序主要适用于两大类:一是不同的生长阶段或者发育过程;二是不同的环境、药物、病原菌等逆境胁迫处理。
4、转录组测序推荐的测序数据量?
转录组测序所需数据量与所研究物种的基因组大小有关,基因组越大,则所需数据量越大。按照我们的经验来说:
常规物种一般建议6G数据即可;
基因组较大的物种推荐8G以上数据,比如:小麦建议10G数据起,甘蔗、甘薯建议至少8G数据。
5、转录组测序的取样建议?
取样要遵守三个原则:代表性和一致性原则、迅速性原则、低温原则。
6、转录组测序必须做生物学重复么?需要几个重复?
生物学重复是生物实验所必须的,转录组测序也不例外,至少3 次生物学重复。
准备生物重复样品时,通过对实验的预先设计和控制,尽可能将与实验处理无关的背景条件控制在同一水平,减少批次效应对结果的影响。
7、转录组测序可以同时测到mRNA、lncRNA、micRNA以及circRNA么?
我们通常所讲的转录组测序只能测到mRNA。但是全转录组测序通过构建两个测序文库(一是小RNA测序文库、二是lncRNA测序文库)是可以测到以上4种RNA的。
8、有参转录组测序分析中,与参考基因组的比对效率多高才能够满足后续分析?
与参考基因组的比对效率与多个因素有关,包括基因组组装质量、测序质量、有无污染等;一般来说,与参考基因组的比对效率在70%以上时,该基因组可以满足后续的分析需求。当比对效率低于60%时,需要考虑换参考基因组或者按照无参转录组分析策略进行分析。
9、所研究物种有参考基因组时,必须按照有参的来分析么?
按照有参或者无参进行转录组分析,取决于基因组的质量、所研究物种与参考基因组的比对效率。具体如下:
若参考基因组质量较差,则可以选择按照无参转录组分析策略进行分析;
若所研究物种与参考基因组比对效率比较低,则需要按照无参转录组分析策略进行分析。
10、做完转录组之后一定要进行Q-PCR验证么?一般验证多少个差异基因合适?
目前来说,Q-PCR验证是转录组测序分析必不可少的补充验证实验,发文章必须。一般验证15-20个差异基因比较合适。
11、Q-PCR与转录组测序结果的吻合度一般多高是合适的?为什么会出现不吻合的现象?
Q-PCR与有参转录组分析结果的吻合度在80%以上;Q-PCR与无参转录组分析结果的吻合度在70%以上。
出现结果不吻合现象的原因如下:实验所用样本弄混;没有使用与转录组测序同一批的样本进行Q-PCR验证;挑选的基因表达量较低或差异不显著。
12、转录组测序的后续补充分析有哪些?
做完转录组测序可以考虑以下分析内容做为补充,用于提高文章档次和深度。
可变剪接的深入分析(对生信基础要求较高)
基因家族分析
WGCNA分析
其他分析(参考其他人的高分文章,整理自己的个性化分析思路)
13、有参转录组测序分析的结果文件中有全部基因的cds序列么?在哪个文件中?
一般来说结果文件中有全部基因的cds序列。我公司有参转录组分析结果中的基因cds序列信息位于Gene_Func_Anno文件夹下面的NewGene中的All.longest_tran.fa文件里。
14、转录组测序分析常用的数据库有哪些?重点关注哪些注释信息?
Nr:NCBI非冗余蛋白数据库,包含的信息很全面, 注释到的基因较多。
COG :中文释义即“同源蛋白簇”。COG 分为两类,一类是原核生物的,另一类是真核生物。原核生物的一般称为 COG 数据库;真核生物的一般称为 KOG 数据库。
SWISS-PROT:经过注释的蛋白质序列数据库,数据库中的蛋白质的功能经过了试验验证,注释是精确的;
TrEMBL:数据库全称“Translation of EMBL”,是从EMBL中的cDNA序列翻译得到的,其中TrEMBL收录的是未经人工注释的编码DNA序列翻译数据;
KEGG:翻译成中文是京都基因与基因组百科全书,是一个整合了基因组、化学和系统功能信息的数据库,旨在揭示生命现象的遗传与化学蓝图。它是由人工创建的一个知识库,KEGG数据库最优的地方在于拥有描绘已知通路的代谢通路图。另外KEGG中有一个“专有名词”KO(KEGG Orthology),它是蛋白质(酶)的一个分类体系,序列高度相似,并且在同一条通路上有相似功能的蛋白质被归为一组,然后打上KO(或K)标签,一般用字母K后面加5个数字表示。KEGG_ID 是pathway的ID,表示方法是2-4个字母,后面跟上5个数字;
GO(gene ontology):是基因本体联合会(Gene Onotology Consortium)所建立的数据库,旨在建立一个适用于各种物种的,对基因和蛋白质功能进行限定和描述的数据库。按照三大类别BP(生物学过程)、 MF((分子功能)、CC(细胞组分)对基因的产物-蛋白质进行了分类,并能随着研究不断深入而更新的语言词汇标准。在GO数据库中,本质上是一个有向无环图的数据结构,在三大类别之下,又有小的分类层级,一层一层的分类下去。对于某个具体的GO号来说,代表一组同源蛋白,拥有相似的结构和功能;
Pfam:是一个被广泛使用的蛋白家族数据库,它有两个数据库,高质量,手工确定的Pfam-A,自动注释的Pfam-B数据库。
15、差异分析的筛选标准默认是多少?是固定不变的么?
关于激光头故障,石头扫地机器人无限次复活记!
2019-08-17 19:15:41
61点赞
174收藏
82评论
小编注:此篇文章来自即可瓜分10万金币,周边好礼达标就有,邀新任务奖励无上限,点击查看活动详情
创作立场声明:本文记录的是个人经历,不涉及产品评议,不承担个人拆机带来的后果,仅供参考。
楔子
自从用了扫地机器人,感叹科技改变生活的力量,是个实用的好东西。
一年多后,机器人报了“激光测距传感器异常,请拨动激光头确认无遮挡或卡住“的故障,开始罢工了。
本人平日喜欢鼓捣,有些修理各类物件儿的基础,这次忍不住对机器人动手了。
闲话不多说,以下内容,请各位看官上眼。
拆机步骤
给人看病讲究对症下药,给物件儿看病也一样,既然是激光头故障了,外表又看不出什么异常,那就把激光头拿出来看看吧。
拆机步骤如下,不难,一把螺丝刀。
1、关闭机器人电源。
2、上半部分的盖板是卡上去的,抠下了就可以了,第一次可能有点紧,不用担心,可以稍微用点儿力。
3、上盖板抠下来后,可以看到左右两边有两个塑料卡子,每个上面3颗螺丝,是固定下盖板用的,把这6颗螺丝拆除。
4、拿掉两个塑料卡子,拿掉下盖板,取出尘盒。
5、激光头在圆圆的白色凸起的盖子下,盖子上有5颗螺丝,2颗看得到,3颗隐藏,抠出密封的小软盖,拆除5颗螺丝,拿掉激光头的保护盖。
6、至此,红色的激光头就出现了,这是扫地机器人的核心部件,起到发射、接收、测距、定位等作用,它不工作,机器人就是瞎子和瘸子。
7、激光头上有4颗螺丝,拆除螺丝后拿出激光头,可以捧在手里观赏一番了。
8、激光头和机器人主体是通过金手指和小卡槽连接,激光头由测距传感器、小皮带、滑轮、驱动马达、电路板、支架等组成。
故障判断
在机器人正常工作时,激光头是转动的,因为它要四处看,这样才能找到正确的位置和传递信息。
在机器人报故障时,我曾观察到激光头已经不转了,此时并无遮挡、也没有卡住。用手去拨动激光头,实际上能转动,但机器人通过程序和指令已经无法驱动激光头了。
问题,就在这里。
激光头无法转动的原因,主要有以下几种可能:
1、小皮带脱落或断开,导致马达不能带着激光头转了。(用手拨着转转就可以判断。)
2、激光头透镜上有灰尘或脏污,影响了激光头的视力。(棉签清理,吹扫干净)
3、马达坏了。(重点)
4、电路板坏了。(重点)
5、马达和电路板之间是小插头连接,有松动或接触不良的可能,但可能性很小。(重新插拔或按压)
6、激光头的金手指和小卡槽出现接触不良。(检查有无灰尘或氧化痕迹,用橡皮或棉签蘸着酒精清理,吹扫干净。)
好了,下面说说两个重点。
小电路板是给马达供电的,小电路板收到主机的程序指令,就会给马达供应电压,马达转动时就带动了小皮带,小皮带又带动了测距传感器,机器人的眼睛就睁开四处看了,然后告诉主机准备就绪可以工作了,主机就下令机器人开始干活。
如果测距传感器没有转动,主机不会进行下一步指令,这些都是程序写好的,眼都没睁开怎么干活?
所以要想办法试试马达还能不能转?!
想了想也简单,这种小马达一般是直流驱动的,家用5号电池就可以搞定。
人为的给小马达供应一个5V的电压,搞一段导线,电池的正负没关系,无非是让马达正转和反转。(这个大家小时候可能都玩过,就是小电池驱动小马达。)
如果小马达和传感器都转起来了,那么恭喜你,你的机器人还有救。
如果小马达没转起来,那就是小马达坏了,换一个也能解决,银子花的很少。(多试几次,一般小马达也没那么容易坏。)
进行到此,我开始思考了。
马达能转,传感器也能转,电路板上也没有明显灼烧痕迹,那机器人为什么报故障罢工呢?激光头上的东西都没有坏啊?
然后,我用了30秒做了个决定,把所有的零件都原样装回去了,摁下机器人的开关。
我期待一个奇迹,这一刻我想到了刘谦。
果然,机器人动了!我盯着它的一举一动,第一次觉得它转身的姿势很帅。
我长舒了一口气。
解释说明
后来,我思考了这个问题,也想了个大概。
扫地机器人分为两个部分,一是硬件,二是软件(程序)。
硬件包含各种元器件,组装而成,有些是独立的,有些是封装到电路板上的,如电容、电阻、二极管、芯片等,比较复杂。各个硬件和人的器官一样,随着时间都存在着老化,硬件老化势必带来性能下降,性能下降不是说坏彻底了不工作,而是代表出现故障的频率和机率增多,代表一种不稳定和亚健康的状态。即生病了,但不致命,活动活动或吃吃药还能起床干活。
硬件性能下降久了,也就彻底坏了,这时就只能换新了。硬件性能是一个综合体现,和产品生产时的元器件筛选、工艺控制、测试环境、生产成本等等都有关系,寿命有长短和差别。
软件(程序)通过硬件传输指令来控制另一个硬件,实现某种具体的功能,像是一个人的神经和脉络。如果软件和硬件不匹配了呢?结果还是生病躺在床上。
程序有优劣,软件也有不同的版本,软件是不断升级的,但不见得每次升级都能和硬件兼容。
小电池是一副药引子,复位或激活了某些点,不能病愈康复,只是续命而已。
以上言论,属个人浅见,不涉及对具体产品的评议,点到为止。
后记
用此办法,我让机器人复活了两次,已经延缓了几个月的寿命了,尽可能省些银子吧。
如果今后有时机,我也会再给大家写点儿东西。
各位看官自取所需,祝好!
文章目录 一、集群概述1.1 集群是什么?1.2 集群的分类1.2.1 负载均衡集群 – LBC1.2.2 高可用集群 – HAC1.2.3 高性能运算集群 – HPC 二、负载均衡集群2.1 LVS 相关原理2.2 LVS 工作方式2.2.1 LVS – DR(Direct Routing)直接路由模式2.2.2 LVS – NAT(隧道)模式2.2.3 LVS – TUN(网络地址转换)模式 2.3 LVS 实验构建环境构建2.3.1 LVS – DR 模式集群构建2.3.1.1 负载调度器 (10.10.10.11)2.3.1.2 真实服务器(10.10.10.12、13 ) 2.3.2 LVS – NAT 模式集群构建2.3.2.1 负载调度器(10.10.10.11)2.3.2.2 真实服务器(10.10.10.12、13) 2.4 负载均衡集群相关调度算法2.4.1 静态调度算法2.4.2 动态调度算法 2.5 LVS 持久连接2.5.1 持久客户端连接2.5.2 持久端口连接2.5.3 持久防火墙标记连接 三、高可用集群3.1 Keepalived 相关说明3.1.1 Keepalived 相关介绍3.1.1 Keepalived 实现原理 3.2 Keepalived + LVS -DR 高可用实验构建3.2.1 LVS主节点(10.
[root@mbs01 k8s]# kubectl apply -f ingress-tomcat6.yaml
error: error validating “ingress-tomcat6.yaml”: error validating data: [ValidationError(Ingress.spec.rules[0].http.paths[0]): unknown field “serviceName” in io.k8s.api.extensions.v1beta1.HTTPIngressPath, ValidationError(Ingress.spec.rules[0].http.paths[0]): unknown field “servicePort” in io.k8s.api.extensions.v1beta1.HTTPIngressPath, ValidationError(Ingress.spec.rules[0].http.paths[0]): missing required field “backend” in io.k8s.api.extensions.v1beta1.HTTPIngressPath]; if you choose to ignore these errors, turn validation off with --validate=false
[root@mbs01 k8s]# cat ingress-tomcat6.yaml
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: web
spec:
rules:
host: tomcat6.mbs.com
http:
paths:
- backend:
serviceName: tomcat6
servicePort: 80
[root@mbs01 k8s]# cat ingress-tomcat6.
epoch是一个单位。
一个epoch表示学习中所有训练数据均被使用过一次时的更新次数。比如,对于10000笔训练数据,用大小为100笔数据的mini-batch进行学习时,重复随机梯度下降法100次,所有的训练数据就都被看过了。此时100次就是一个epoch。
天线波束宽度计算公式
天线增益:某一方向上的天线增益是指该方向上的功率通量密度和理想点源或半波振子在最大辐射方向上的功率通量密度之比。
水平波束宽度:在水平方向上,在最大辐射方向2侧,辐射功率下降3dB的两个方向的夹角。
垂直波束宽度:在垂直方向上,在最大辐射方向2侧,辐射功率下降3dB的2个方向的夹角。
单级化天线和双极化天线的区别在于一根双极化天线等于2根单极化天线。
当电磁波在空间传播时,其电场强度矢量的方向具有固定的规律,这种现象称为电磁波的极化。
极化方式是卫星电视信号的电磁场振动方向的变化方式。极化方式分为垂直极化和水平极化。
极化方向:天线向周围空间辐射电磁波。电磁波由电场和磁场构成。人为规定:电场的方向就是天线极化方向。一般使用的天线为单极化的。
天线对空间不同方向具有不同的辐射或接受能力,这就是天线的方向性。
衡量天线方向性通常使用方向图,在水平方向上,辐射与接收无最大方向的天线称为全向天线,有一个或多个最大方向的天线称为定向天线。
在方向图中通常都有两个瓣或多个瓣,其中最大的瓣称为主瓣,其余的瓣称为副瓣。主瓣两半功率点间的夹角定义为天线方向图的波瓣宽度(波束宽度)。称为半功率(角)瓣宽。主瓣瓣宽越窄,则方向性越好,抗干扰能力越强。——(工程上一般用3dB波瓣宽度)。
天线是一种能量集中的装置,在某个方向辐射的增强意味着其他方向辐射的减弱。通常可以通过水平波束宽度的缩减来增强某个方向的辐射强度以提高天线增益。在天线增益一定的情况下,天线的水平波束宽度与垂直波束宽度成反比,其关系可以表示为:
Ga≈10*lg[32400/(a*b)]
其中Ga为天线增益,单位:dBi;a为水平波束宽度,b为垂直波束宽度,单位:角度。
最近项目需要使用到html转PDF,如翻阅了很多资料,自己整理了如下的内容做个笔记
博客:https://www.jianshu.com/p/559c594678b6
官方下载:https://wkhtmltopdf.org/downloads.html
我们一起踩过一坑:https://blog.csdn.net/qq_39541254/article/details/107541497
asp.net转换实例:https://www.cnblogs.com/ztf20/archive/2004/01/13/10414832.html
1、下载好 默认安装路径:C:\Program Files\wkhtmltopdf\bin\wkhtmltopdf.exe
2、根据情况把你安装wkhtmltopdf目录下的bin子目录加到 PATH 环境变量
3、导入类pdfconvert.cs 设计web.config 的wkhtmltopdf.exe路径如下 <configuration> <appSettings>
<add key="wkhtmltopdf:path" value="C:\Program Files\wkhtmltopdf\bin\wkhtmltopdf.exe"/>
</appSettings>
</configuration> 4、定义css类分页,增加qrcode.min.js 二维码连接,引入JS jquery.min.js 如下代码 增加生成动态二维码方法
string str = string.Format(@"<style>div{0}</style> <script src=""Scripts/jquery.min.js""></script><script src=""Scripts/qrcode.min.js""></script><script>{1}</script><div id=""tpdf"">", "{page-break-before:always;font-size:8px;}", "function makeCode(_div,str){var qrcode = new QRCode(document.getElementById(_div),{width:80,height:80});qrcode.makeCode(str);}");
5、后台动态接拼代码 :
for (int i = 0; i < 100; i++)
{
str += string.Format(@"<div id=""qrcode{0}"" >測試" + i.ToString()+"</div>",i.ToString());
endstr += string.Format(@"makeCode(""qrcode{0}"",""{1}"");", i.ToString(),i.ToString());
}
endstr += "</script>";
private void m_txtComment_TextChanged(object sender, EventArgs e) { int lines = m_txtComment.GetLineFromCharIndex(m_txtComment.Text.Length - 1); //m_txtComment.Lines.Length; //行数 if(lines > maxLine - 1) { //第6行第一个字的位置 int my_index = m_txtComment.GetFirstCharIndexFromLine(maxLine); //只保留前五行 m_txtComment.Text = m_txtComment.Text.Substring(0, my_index - 1); } m_ri.CommentContent.Content = m_txtComment.Text; m_txtComment.Select(m_txtComment.Text.Length, 0); }
写在前面:本文ES版本为:6.4.2(单机),并安装了head插件,运用postman进行操作。也可以使用head插件在前端浏览器中进行傻瓜式操作,后续会介绍这种方式!如果没有安装es和head插件的话,请先安装!至于索引分片等相关知识,请自行学习,后续也会更新出来!
以下方法中的地址省略了ip+端口。。。。。。
1、新建索引
PUT /index_001
新建一个名字为index_001的索引
1.1索引设置
es默认很多索引的配置选项,如果不知道,使用默认的即可。
分片:
number_of_shards
每个索引的主分片数,默认值是 5 。这个配置在索引创建后不能修改。
number_of_replicas
每个主分片的副本数,默认值是 1 。对于活动的索引库,这个配置可以随时修改。
举个栗子:
上图中我建立了一个名字为index_001的索引,并设置了主分片数为3,副分片数为1。
建立成功!
查看一下索引状态:
GET /_cat/indices?v
返回结果:
1:主分片数量为3,副分片数量为1。
index_001索引的状态是yellow,这是因为此时虽然有3个主分片和一个备份。但是由于只是单个节点,我们的分片还在运行中,无法动态的修改。因此当有其他的节点加入到集群中,备份的节点会被拷贝到 另一个节点中,状态就会变成green。
修改一下副分片数量:
PUT /index_001/_settings
{
"number_of_replicas": 2
}
查看一下:
修改成功!
也可以这样查看索引的详细信息:
GET /index_001/_search_shards
删除索引命令:
DELETE /索引名
在讨论度量空间的稠密性的时候,涉及到一些概念,下面我们逐一进行讨论一下,以区分不同,方便理解和记忆。
(一)稠密:设R是度量空间,A及E是R中的点集。如果E中的任何一点的任何环境都含有集A中的点,就称A在E中稠密。教材里面好像也称呼A为稠密子集。仔细推敲这个概念,需要特别注意的是A和E都是一个度量空间的点集,而且它们之间可能不相交,也可能不相交,另外就是特别注意两个任何,也就是E中的任何一点的任何环境,两个任何体现了E中点的任意性和该点对应环境的任意性。第一个任何可以理解,第二个任何需要强调的是该点的环境可以任意小。那么该点的环境指的是什么呢?这个特别要注意,这个环境指的是E中一点x,也是R中的点,以该点为中心,以r(>0)为半径的球,不是在E中的球,我们看教材环境的定义,针对的是度量空间中某一点的环境,对于度量空间中的点集,只要不是子空间,我们是没有环境概念的,也就是环境不是在E中的概念,环境只能是空间中的概念。我们举一个例子,A是有理数集合,E是无理数集合,根据稠密的概念,E中任何一点在R中的任何环境都必然包含一个有理数,也就是包含A中的点,因此有理数点集在无理数点集中稠密。而有理数点集和无理数点集并不相交。
(二) 可析点集:R是度量空间,A是R中的点集。如果R中存在有限点集或可列点集在A中稠密,就称A为可析点集。这个概念比较明确和好理解,就是A中只要能够挑选可列点集在A中稠密,或者在R中能够挑选一些可列点集在A中稠密,就称A为可析点集。举一个例子,实数空间中,无理数子集就是可析点集,因为实数空间中可以挑选可列的有理数点集在无理数子集中稠密,给定一个区间也是可析点集,因为该区间可以抽取所有有理数点集在该区间稠密。因此抽取的可列点集可以属于该可析点集,也可以不属于,但是一定要属于该子集所在的度量空间。
(三) 可析空间:这个概念简单,也就是一个度量空间存在一个可列点集在该空间中稠密就是了。比如实数空间就是可析空间,一个度量空间的子空间也可能是可析空间。
(四) 疏朗集:R是度量空间,A是R的子集。如果A不在R的任何一个非空的开集中稠密,那么A称作疏朗集。此时称为疏朗集应该注意是相对于一个空间而言的,此外需要注意4点:任何,非空,开集,稠密。我们还是举一个例子说明一下。假设区间[-1,1]是一个子空间,那么{0}是疏朗集吗?思考疏朗集的概念,0是否在[-1,1]中的任何一个开集中稠密?首先观察在(-1/3,1/3)中稠密吗?不稠密,虽然0在这个开区间内,但是在这个开集中随便找一个开集,比如(1/4,1/3),0就不在该开集中,也就是不满足在该开集中稠密。因此0在[-1,1]的任何一个开集中都不稠密。因此{0}不是疏朗集,也不是稠密子集。在这个概念中,我们最应该注意的是A不在开集中稠密的含义,不要理解成A中有的点属于开集,也就是不要理解成A和任何开集有交点。
稠密集与疏朗集.pdf
第36卷 第9期 高 师 理 科 学 刊 V01.36 No.9
2016正 9月 JournalofScienceofTeachers CollegeandUniversity Sep. 2016
文章编号:1007—9831(2016)09—0061—03
稠密集与疏朗集
蒋巧云,袁邢华
(南通大学 理学院,江苏 南通 226019)
摘要:从定义、基数和测度等方面讨论了稠密集与疏朗集之间的关系,使得学生更好地了解和掌
握这个 内容.
关键词:基数;测度 ;稠密集;疏朗集
中图分类号:017:G642.0 文献标识码 :A doi:10.3969j/.issn.1007—9831.2016.09.018
Simplediscussionaboutdensesetandnowheredenseset
JIANGQiao-yun,YUANXing-hua
(SchoolofScience,NantongUniversity,Nantong226019,China)
Abstract:Therelationshipbetweenthedensesetandnowheredensesetisdiscussedfrom definition,cardinalnumber
andmeasure,thenmakesstudentsunderstandandmasterthiscontentbetter.
Keywords:cardinalnumber;measure;denseset;nowheredenseset
实变函数是本科阶段数学专业的一门重要专业基础课,由于该课程具有概念f生强、内容抽象、推理严
谨 、题 目难做等特点.因此,成为数学系专业课程中公认的既难教又难学的一门课程.把握好教材教法是
上好这门课的关键,本文就稠密集与疏朗集作出一些简单的探讨.
1 定义
O
定义 设EcR ,若E=R ,则称 为R 中的稠密集;若E=(2j,则称 £为R 中的无处稠密集
(疏朗集 );可数多个无处稠密集 (疏朗集)的并集称为第一纲集,不是第一纲集的集合称为第二纲集.
定义 2雎 设EcR”,若对于任意XER , >0,有U(x, )NE≠(2j,则称 为R”中的稠密集;设
EcR”,若XER, >0,有U(x,)\-2≠(2j,则称 为R”中的无处稠密集 (疏朗集).
Redisson是架设在Redis基础上的一个Java驻内存数据网格Java驻内存数据网格(In-Memory Data Grid)。
Redisson介绍
1、Redisson是架设在Redis基础上的一个java驻内存数据网格。
2、Redisson在基于NIO的Netty框架上,充分的利用了Redis键值数据库提供的一系列优势。
3、在java使用工具包中常用接口的基础上,为使用者提供了一系列具有分布式特性的常用工具类。
4、使得原本作为协调单机多线程并发程序的工具包获得了协调分布式多机多线程并发系统的能力,大大降低了设计和研发大规模分布式系统的难度。
5、同时结合各富特色的分布式服务,更进一步简化了分布式环境中程序相互之间的协作。
Redisson官方网站
1、官网:https://redisson.org
2、Github:https://github.com/redisson/
3、wiki:https://github.com/redisson/redisson/wiki
Redisson功能
1、支持同步/异步/异步流/管道流方式连接
2、多样化数据序列化
3、集合数据分片
4、分布式对象
5、分布式集合
6、分布式锁和同步器
7、分布式服务
8、独立节点模式
9、三方框架整合
pom.xml
org.redisson
redisson
3.3.2
程序化配置方法package com.what21.redisson;
import java.io.IOException;
import org.redisson.Redisson;
import org.redisson.api.RedissonClient;
import org.redisson.config.Config;
/**
* 程序化配置方法
*/
public class FirstApp {
public static void main(String args[]) throws IOException {
Config config = new Config();
config.useSingleServer().setAddress("127.0.0.1:6379");
RedissonClient redisson = Redisson.create(config);
String json = redisson.getConfig().toJSON().toString();
System.out.println(json);
}
刚接触vue2不是太久,勉强算是小白一枚吧,在此分享一下我最近踩的一个坑,望以后的小白们借鉴;
首先,数据结构:
data(){
return {
outer: {
mid: [{
inner: ""
}]
}
}
},
数据大致就是这样子,反正封了很多层,至于为什么这么分,大概是因为惯性思维的原因,里层的东西一定都是包含于外层,下意识的就这么写了,简直害死人,不过,这些都不是重点,重点在后面的数据更新以及页面渲染,嗯,最开始我是这么写的
queryInfo (index){
var condition = ....,
http.api({
url: '/tv/orderForm/ClickDetail',
params: condition,
successCallback: function (data) {
this.outer.mid[index].inner = data;
}.bind(this)
})
}
(http.api只是公司的老前辈们将ajax请求进行了一下封装,由于这不是重点,就不说了。)
以一个android开发出身的我来看,这代码看上去没毛病啊,但是运行之后发现虽然inner的值确实改变了,但是页面就是不渲染,我靠,这是肿么了,先百度一波,然后代码就成了这样
queryInfo (index){
var condition = ....;
http.api({
url: '/tv/orderForm/ClickDetail',
params: condition,
successCallback: function (data) {
this.$set(this.outer.mid[index], 'inner' ,data);
}.bind(this)
})
}
都说,当数据不是data的第一层,而是包了几层之后,=赋值是不会触发页面渲染的,要用$set(obj,key,val),但是结果还是然并卵,接着百度,偶然之间看到一个标题,vue ajax请求提前渲染什么的,
大致说的是,ajax请求一般是异步的,vue并不知道你在这里发了ajax请求,所以就不会说等到你执行完毕完成赋值之后再渲染,所以值虽然附近去了,但是页面上显示的还是原来的,恩,讲的好有道理啊,但
是木有讲怎么解决啊,于是,下面这个版本的代码又出来了
queryInfo (index){
var condition = .
//如果打印区域宽度大于纸张,进行缩放 int pWidth = m_pd.DefaultPageSettings.Bounds.Width; int pHeight = m_pd.DefaultPageSettings.Bounds.Height; g.DrawImage(m_displayArea, new System.Drawing.Rectangle(0, 0, pWidth, pHeight),//缩放图 new System.Drawing.Rectangle(0, 0, m_displayArea.Width, m_displayArea.Height),//源图 GraphicsUnit.Pixel);
文章目录 题目描述解析解答剪枝原理分析代码 题目描述 给定两个整数 n 和 k,返回 1 … n 中所有可能的 k 个数的组合。
示例:
输入: n = 4, k = 2 输出: [ [2,4], [3,4], [2,3], [1,2], [1,3], [1,4], ] 解析 以 n=4, k=2 为例,选出组合的第一个数时,我们有 4 种选择,如下图。
选出第二个数时,本来有 4 种选择,但有的选择和上一个选择相同,有的选择会产生重复的组合,比如 [1,2] 和 [2,1]。
这些选择应该被修剪掉,因为无法通往正确的完整解。
怎么修剪?
在每次递归中控制枚举选项的范围,下一个选择的遍历起点,是当前选择的数字 +1。
我们通常使用 数组/向量/字符串 来存储正在构建的“部分解”。
当选够 k 个数时,就把它加入解集。但不是找到一个组合就完事,要找齐。
所以,遇到完整解时,结束当前搜索分支,要撤销最后一个选择,回到选择前的状态,尝试另一个选择,去搜下一个分支。
解答 class Solution { public: vector<vector<int>> combine(int n, int k) { if(n<1&& n<k) return {}; this->n = n; this->k = k; vector<int> memo; dfs(-1,memo); return res; }//end function:combine private: vector<vector<int>> res; int n,k; void dfs(int i,vector<int>& memo){ if(memo.
第一:打开哔哩哔哩点击【左上角头像】。
第二:进入【个人中心】。
第三:点击【联系客服】。
第四:在【自主服务】点击【账号找回申诉】。
第五:填写个人信息。
第六:提交【申诉】等待处理完。(快速涨粉涨赞上热门!就去B站速刷网)
想要去B站看视频,但是自己密码忘记了,怎么去找回呢?一起看看吧。(快速涨粉涨赞上热门!就去B站速刷网)
方法/步骤:
1 、点击右上角登录B站:首先我们打开B站,在右上角的注册和登录里来进行登录,只是观看视频的话也不需要登录,但是发送弹幕,送硬币等操作,就都需要登录才可以完成。
2 、点击忘记密码进行找回:登录之后,在我们输入B站账号、密码的下方,有一个忘记密码,点击忘记密码就可以进入找回B站账号密码的页面了,我们继续下面的步骤。
3、 授权的账号可以用绑定的第三方账号登录:如果你的账号先前是授权登录的,那么你可以直接通过qq啊或者微博啊等来进行登录,如果是微博账号忘记了密码,那就要去微博的网站上进行找回了。
4 、使用其中一种密保手段找回:如果账号本来有绑定的密保的方式,比如我的B站账号绑定了手机,那么就可以直接通过手机的验证码很方便的把我们的B站账号的密码给找回来(重新设定)
5、 验证码有使用的时间限制:用手机短信找回很简单,不过你要注意B站给你的短信验证码是有时间限制的,而且只有五分钟而已,如果五分钟超过了,就需要重新发送了。
6、 记住我的功能请不要随便使用:如果是家用电脑,特别容易忘记密码的话,在确保电脑安全的情况下,可以开启记住我,但是去外面的公共电脑上不要随便开启这个功能,容易被盗号。
7 、建议下载手机的APP:现在手机很普遍,B站也有专门的APP,电脑账号的找回通过手机APP也可以,所以我是比较推荐大家下载一个B站的APP的,不管是看视频,还是其他作用。
安规就是产品认证中对产品安全的要求,包含产品零件的安全的要求、组成成品后的安全要求。安规其实是中国人自己的产物,国外一般会叫成regulatory。
什么是安规?
安规——最佳的英文解释应当是Production Compliance。是指产品从设计到销售到终端用户,贯穿产品使用的整个寿命周期,相对于销售地的法律、法规及标准产品安全符合性。这种产品安全符合性不仅仅包含了普通意义上的产品安全,同时还包括产品的电磁兼容与辐射、节能环保、食品卫生等等方面的要求。她应当不仅仅是一种要求、一本标准、一张证书、一份测试报告所能取代或能说明的,更应该是贯穿了产品生命周期的一种产品安全责任和活动。
单纯地把安规理解为认证应当是片面的。认证只是评估产品符合性的一种手段或过程,但是它不是必需的手段或过程。这种符合性应当在产品设计之初予以考核,经过但不一定经过第三方通过测试,考察产品对相关法律、法规及标准的符合性,对可预见或不可预见的风险进行评估,确保使用者在使用过程中尽可能地避免出现预见或不可预见的人身伤害或财产损失。
安规通过模拟终端客户可能的使用方法,经过一系列的测试,考核产品在正常或非正常使用的情况下可能出现的电击、火灾、机械伤害、热伤害、化学伤害、辐射伤害、食品卫生等等危害,在产品出厂前通过相应的设计,予以预防。
此安规规范适用于输入电压低于600V的弱点类设备的PCB安规设计。
第一部分 安规基础知识
UL与 VDE的安全标准有本质上的差异,UL规格比较集中在防止失火的危险,而 VDE规格则比较关于操作人员的安全,对于电源供给器而言,VDE乃是最严厉的电气安全标准.
下面的安全件均需要有VDE and UL证书(如果到加拿大的机型还外加CUL证书):
1. 变压器(骨架、绝缘胶带、聚酯绝缘胶带)
2. 滤波器(骨架、绝缘胶带、聚酯绝缘胶带)
3. 光耦
4. Y电容
5. X电容
6. PCB材质(并包括制板黄卡)
7. 可燃性塑胶材质(包括前面板、电源板支撑胶柱、电源板绝缘PVC、保险管座、电源线插座VH-3等)
8. 保险管
9. 热缩套管
10.大容量的电解电容.
11.各类线材
空间距离(clearance) / 电气间隙:
在两个导电零部件之间或导电零部件与设备防护界面之间测得的最短空间距离。
沿面距离(Creepage ) / 爬电距离:
沿绝缘表面测得的两个导电零部件之间或导电零部件与设备防护界面之间的最短路径。
防护界面(boundingsurface):
电气防护外壳的外表面,对于可触及绝缘材料可以认为是在材料表面上压贴了金属箔那样的表面。
抗电强度:
又叫电介质强度测试, 英文为hipot test, 大概是最多人知道的和经常执行的生产线安全测试。实际上,表明它的重要性是每个标准的一部分。hipot 测试是确定电子绝缘材料足以抵抗瞬间高电压的一个非破坏性的测试。这是适用于所有设备为保证绝缘材料是足够的的一个高压测试。进行hipot 测试的其它原因是, 它可以查出可能的瑕疵譬如在制造过程期间造成的漏电距离和电气间隙不够。
测试方法就是在交流输入线之间或交流输入与机壳之间将零电压增加到3000V交流或4200V直流时,不击穿或拉电弧就合格。
温度:
安全标准对电子电器的求很严,并要求材料有阻燃性,开关电源的内部温升不应超过65℃,比如环境温度是25℃,电源元器件的温度应小于90℃。但一般来说,不管是UL或CE认证的测试中,都是按照元器件(特别是安全器件)的安全证书所标识的耐温限值为标准。安规测试中表示温度单位为K(热力学温标又称开尔文温标,或称绝对温标,它规定分子运动停止时的温度为绝对零度,记符号为K。),它是减去室温的才得出的结果。
接地测试:
亦称接地连续性测试, 接地测试必须对所有一类产品(Class I)进行。测试的目的是保证产品上的所有在单一绝缘失效的情形下会变成带电体,并且可以被使用者接触到的导电性部件被可靠连接到电源输入的接地点。换句话说, 一个接地测试使用大电流的低电压源加到接地回路来核实接地路径的完整性。
通过测量连接在保护接地连接端子或接地触点和零件之间的阻抗来判断是否符合标准要求, 阻抗不超出产品安全标准确定的某个值则认为是符合要求的。一定要记住, 从结构和设计观点来看, 用做保护接地的导体不应该包含任何的开关或保险丝。
漏电流测量(leakage current measurement)
一、
ELISA
的原理
ELISA
的基础是抗原或抗体的固相化及抗原或抗体的酶标记。结合在固相载体表面的抗
原或抗体仍保持其免疫学活性,
酶标记的抗原或抗体既保留其免疫学活性,
又保留酶的活性。
在测定时,
受检标本
(测定其中的抗体或抗原)与固相载体表面的抗原或抗体起反应。
用洗
涤的方法使固相载体上形成的抗原抗体复合物与液体中的其他物质分开。
再加入酶标记的抗
原或抗体,
也通过反应而结合在固相载体上。
此时固相上的酶量与标本中受检物质的量呈一
定的比例。
加入酶反应的底物后,
底物被酶催化成为有色产物,
产物的量与标本中受检物质
的量直接相关,
故可根据呈色的深浅进行定性或定量分析。
由于酶的催化效率很高,
间接地
放大了免疫反应的结果,使测定方法达到很高的敏感度。
二、
ELISA
的类型
ELISA
可用于测定抗原,也可用于测定抗体。在这种测定方法中有三个必要的试剂:
(
1
)固相的抗原或抗体,即
"
免疫吸附剂
"
(
immunosorbent
)
;
(
2
)酶标记的抗原或抗体,称为
“
酶联物
”
、
“
结合物
”
(
conjugate
)
;
(
3
)酶反应的底物。根据试剂的来源和标本的情况以及检测的具体条件,可设计出各种不
同类型的检测方法。用于临床检验的
ELISA
主要有以下几种类型:
(一)
双抗体夹心法测抗原
ELISA原理示意图详解.ppt
免疫酶技术及其应用——ELISA 一、实验目的 了解和掌握免疫酶技术的测定原理。 掌握酶联免疫吸附测定技术的操作步骤,学会利用竞争ELISA的方法,定量测定抗体或抗原。 了解免疫酶技术在生物学和医学研究的重要意义及应用价值。 二、实验原理 免疫标记技术(immunolabelling technique): 是指用荧光素、放射性同位素、酶、发光剂或电子致密物质等作为示踪剂,标记抗体或抗原进行的抗原抗体反应。 特点:高度灵敏、特异、快速,定性、定量、定位 分类:免疫酶技术、免疫荧光技术、放射免疫技术、免疫电镜技术、免疫胶体金技术和发光免疫测定。 免疫酶技术(enzyme immunoassay): 是将抗原和抗体的特异性免疫反应与酶的催化反应相结合而建立的一种免疫检测技术。 就是利用酶标记抗体或抗原,以检测相应抗原或抗体的一种免疫学标记技术。 酶联免疫吸附试验ELISA (enzyme linked immunosorbent assay) 是一类常用的免疫酶技术。是将已知的抗原或抗体吸附在固相载体表面,使抗原抗体反应在固相表面进行。 常用的酶:辣根过氧化物酶(HRP) 碱性磷酸酶(AP)。 ELISA检测抗原 Ag + Ab* ? Ag-Ab* ELISA检测抗体 Ab + Ag* ? Ab-Ag* ELISA检测抗体 Ag + Ab1 ? Ag-Ab1 Ag-Ab1 + Ab2* ? Ag-Ab1-Ab2* 竞争ELISA检测抗原 实验材料: 羊抗人血清白蛋白抗体(一抗) 已知含量的人血清白蛋白(作标准曲线) 待检人血清白蛋白 辣根过氧化物酶标记的驴抗羊抗体(二抗) 包被液CBS:PH9.6,0.05mol/L碳酸盐缓冲液 洗板液或稀释液:PH7.4,0.01mol/L PBS 底物溶液:OPD-H2O2 终止液:2mol/L H2S04 酶标反应板(一条/人) 三、操作步骤 包被抗原 抗原用包被液(CBS)稀释至合适浓度,加入到酶标板中,100μl/孔,放入湿盒中,4℃过夜。 抗原与抗体的预孵育 制作标准曲线: 在稀释板中,用PBS倍比稀释标准抗原,每种浓度的抗原最终为50μl,分别在各抗原孔中加入250μl一定浓度的抗体,放入37℃恒温培养箱中30 min。 待测抗原: 取50μl未知浓度的抗原按照同上操作。 3.
处理器:
295MHz
打印分辨率:
600X600dpi
内
存:
128M
复印分辨率:
600X600dpi
接
口:
USB2.0
扫描分辨率:
1200dpi
首次打印时间:
<9
秒
打印速度:
A4:26ppm
,
A5:40ppm
复印速度:
26cpm
纸盒容量:
150
页
输出容量:
50
页
耗材型号:硒鼓
LD100
(
10000
页)墨粉
LT100
(
1500
页)
随机硒鼓寿命
10000
页,随机墨
粉可打印
1000
页
墨粉型号:
三星联想通用粉
1610
、
1710
联想领像
M100
加粉后清零方法
粉盒清零方法:打开上盖,
1
秒钟内连续按电源钮
2
次,合上上盖。
硒鼓清零方法:打开上盖,
2
秒钟内连续按电源钮
5
次,合上上盖。
联想领像
M100W
加粉后清零方法和硒鼓、定影单元清零复位方法
清零方法:手机
APP
清零(首先手机和打印机必须在同一网络环境下)
,手机
javascript - 按对象属性从数组中删除对象
var listToDelete = ['abc', 'efg'];
var arrayOfObjects = [{id:'abc',name:'oh'}, // delete me
{id:'efg',name:'em'}, // delete me
{id:'hij',name:'ge'}] // all that should remain
如何通过匹配对象属性从数组中删除对象?
请使用原生JavaScript。
我在使用拼接时遇到问题,因为每次删除都会缩短长度。在orignal索引上使用克隆和拼接仍然会给你带来缩短长度的问题。
Dan Kanze asked 2019-07-17T23:34:28Z
12个解决方案
132 votes
我假设您使用过Array#filter这样的东西?
for (var i = 0; i < arrayOfObjects.length; i++) {
var obj = arrayOfObjects[i];
if (listToDelete.indexOf(obj.id) !== -1) {
arrayOfObjects.splice(i, 1);
}
}
你需要做的就是修复这个bug,下次再减少Array#filter,然后(向后循环也是一个选项):
for (var i = 0; i < arrayOfObjects.length; i++) {
前言
连续平滑曲线的需求,在项目中经常会遇到,有很多种方式可以画出来,网上也有很多教程,但是总是不能画出自己满意的曲线,无奈最后还是得自己造轮子,这里分享一种平滑曲线图的实现方式,希望可以作为一个合格的砖头,欢迎大家留言交流
思路
这里绘制曲线图用到 CAShapeLayer、UIBezierPath关于贝塞尔曲线,这里不过多介绍。有需求的移步贝塞尔曲线一篇就够了。我们采用3阶贝塞尔曲线来绘制曲线图
连续平滑曲线
连续平滑在数学中的概念就是 一阶连续可导,理解起来就是,在锚点的位置,前一段曲线的切线跟后一段曲线的切线共线,在贝塞尔曲线中表现为锚点跟锚点前后两个控制点共线。对于锚点P(i) 用 Pc1(i)、Pc2(i) 表示 P(i-1)-P(i) 之间的三次贝塞尔曲线的两个控制点。则有
1)Pc2(i)、P(i)、Pc1(i+1) 三点共线,Pc2(i+1)、P(i+1)、Pc1(i+2)三点共线。
为了更好的拟合锚点的走势,我们把 1)中确定的线取与锚点前后点的斜率一致,这样让锚点的走势在曲线的走势中体现出来。即
2) Pc2(i) - P(i) - Pc1(i+1) 平行于 P(i-1) - P(i+1)
最后只需要确定控制点 x坐标,就可以确定两个控制点了,两锚点x坐标差 stepX = P(i).x - P(i -1).x,两个控制点的x坐标 距离锚点的距离在[0-stepX/2] 之间,越小越接近直线,取多少就看个人喜好了。我们取 stepX/3,即
3) Pc1(i).x = P(i-1)+ (P(i).x - P(i -1).x)/3
Pc2(i).x = P(i) - (P(i).x - P(i -1).x)/3
由 1)、2)、3) 即可算出除起止点外的所有锚点的相邻控制点,起止锚点的控制点就取起止点本身。这样就得到了所有锚点和控制点,绘制出来即可。
image
代码
代码的核心就是计算控制点的方法:
-(void)drawCurveLine:(NSArray *)array{
//曲线图layer
CAShapeLayer *layer = [[CAShapeLayer alloc] init];
本文主要和大家分享H5移动端页面加入canvas可滑动代码条件下android手机点击input重复弹出键盘,在移动端页面使用canvas的动画,为了实现动画的触摸滑动,会加入createjs.Touch.enable(stage, true, false)这条语句,但加入这条语句后,页面的input和click等可点击事件都会失效,所以会用触摸事件来实现相关功能,如下:$('#button').on('touchstart', function() {
window.location.href = 'xx.html'
})
触摸事件控制焦点的获取来使input键盘弹出:$('#input').on('touchstart', function() {
$(this).focus()
})
然而苹果手机键盘关闭后input焦点自动失去,再次点击键盘弹出无异常,安卓手机键盘关闭input还是获取焦点状态,故键盘无法重复弹出。本想在关闭键盘的事件上加个失去焦点的行为,但查过资料无法找到这个事件,所以另辟奇径,找到了另一种办法:每次点击input都会删除原来的input并且生成新的input放在这里,这样新的input又可以获取焦点并弹出键盘了,实现代码如下:
html代码:
js代码:$('#btn').on('touchstart', function() {
var value = $('input').val()
$('input').remove()
$('.box').html('')
if(value!=''){
$('input').val(value)
}
$('input').focus()
})
相关推荐:
展开全部
设置佳能G 2800打印机清零的步骤如下:e68a8462616964757a686964616f31333365656537
1.清零操作之前先关闭打印机电源,给打印机装3张A4纸。
2.先按住“停止/重置”键,然后按电源键 开机(别松开)。按电源键不放手的同时,松开“停止/重置”键(此时电源键还是按住不放的状态)。然后再按5下“停止/重置” 键,按最后一下的时候按住不放。(此时电源键与“停止/重置”键都处于按住不放的状态)。
3.同时松开电源键和“停止/重置”键,等打印机启动运行完毕后,打印机会显示为"0",即进入打印机维修模式。
4.电脑提示找到新硬件并提示安装驱动,不用管它,如果没有找到新硬件,建议重启电脑或更换电脑试试。(如果电脑找不到新硬件,清零软件是无法使用的)点击“安装驱动程序”。
5.使用清零软件进行清零,先将本机的杀毒软件关闭。
6.打开软件,选Accept。
7.选择打印机,选择Perticular adjustment mode。
8.完成后,点击“OK”关闭打印机,再开机。清零完成。
拓展资料:
就是打印机的打印数量上线到了或着是 废墨到了上线。
打印机清零的方法:
1、手工清零
第一步:关闭打印机电源,并把电源线从电源插座拨开。
第二步:按紧打印机的电源键同时插上电源线(此时机器电源灯亮)。
第三步:按住电源键,连续按4下进纸键。电源灯显示,黄→绿→黄→绿(有的为黄→橙)。
第四步:松开电源键。打印机启动后,电源灯熄灭。
第五步;重新开机,机器开机正常,再连接电脑。
2、软件清零
第一步:打开维修软件。出现程序窗口后,在右上角的“USB PORT"(USB端口)项中选择该打印机所对应的USB端口。
第二步:点“SET DESTINATION" (设置目标)下的I255按钮,然后勾选"CLEAING" (清零)和"EEPROM CLEAR"(存储器清除)项,点击"TEST PATTERN 2"(测试模式2)按钮。打印机电源灯闪动,机器开始清零复位,待电源灯停止闪动后重新开机即可。
第三步:这是非常关键的一步,按"READ SERIAL NUMBER" (读取串号)键即可(很多操作方法由于没有第三步,使得造成每次开机你都得手工清零一次,大家往往会以为是清零不成功,其实是清零没有保存) 。
《网络安全法》和公安部82号令要求网络日志留存180天,为了满足国家网络安全法要求,企业客户通常会配置日志审计系统将网络日志进行集中存储,那么日志审计系统是如何将华为、Cisco、H3C、中兴厂商的网络设备/安全设备的syslog日志采集到日志审计系统中的呢?下面我就介绍一下华为、Cisco、H3C、中兴厂商的网络设备如何配置syslog日志采集。
一、华为设备配置syslog日志采集
system-view //进入系统视图
[huawei] info-center enable // 开启信息中心
[huawei] info-center loghost 192.168.1.2 channel loghost
// 指定向日志主机输出日志信息的通道为 loghost 通道
[huawei] info-center source default channel loghost debug state off log state off trap state off
//关闭所有模块(模块:各种信息,如ARP、pppoe、nat)日志主机的 trap、log、debug 的状态。 Log:日志信息 trap:告警信息 debug:调试信息
[huawei] info-center loghost 192.168.1.2 facility local6 language english
// 将 IP 地址为192.168.1.2的主机作为日志主机,设置信息级别为informational,输出语言为英文
[huawei] info-center source default channel loghost log level warning
[huawei] info-center source default channel loghost debug state on
可以在CAD图纸文件中点击上方工作空间的三角形,在弹出的菜单中就会显示软件默认的几种布局,建议选择【AutoCAD 经典】就可以看到工具栏。还可以在菜单栏中依次选择【工具】-【工具栏】-【AutoCAD】-【修改(调出修改工具栏)】,可以根据自己的需要添加工具。具体介绍如下:
第一种方法:
1、在打开的CAD图纸文件中点击上方工作空间的三角形,在弹出的菜单中就会显示软件默认的几种布局,分别是【草图与注释】、【三维基础】、【三维建模】、【AutoCAD 经典】和【自定义的工作空间】;
2、建议选择【Auto CAD 经典】,这样就会恢复到原本的界面设定,也就能够看到菜单栏和工具栏;
第二种方法:
1、在工作空间右侧有个带横杠的下拉三角,点击它然后点击显示菜单栏,这个时候就可以看到菜单栏了;
2、在菜单栏中依次点击【工具】-【工具栏】-【AutoCAD】-【修改(调出修改工具栏)】;
3、按照第二步方法用户依次点击【图层(调出图层工具栏)】,【工作空间(调出工作空间工具栏)】、【标准(调出标准工具栏)】、【样式(调出样式工具栏)】、【特性(调出特性工具栏)】、【绘图 (调出绘图工具栏)】、【绘图次序(调出绘图次序工具栏)】;
4、这样就可以根据自己的需要调整或者隐藏需要或者无需使用的工具。
cookie cookie是浏览器端的一种数据存储,常和localStorage、session一起比较,常被用来记录用户的身份信息状态,为无状态的http请求添加了访问用户的身份标志。只要满足了发送条件,就会自动添加到http请求头中。满足条件是根据cookie的几个可选属性决定的,首先cookie是以键值对的方式存储(name = value),每个键值对还有不同的可选属性,都可以在设置cookie时一并添加:
path:可以访问cookie的页面路径,该路径及它的子路径都可以访问domain:可以访问cookie的域名,该域名及它的子域名都可访问max-age和expire:都是设置cookie的存储周期,expire是一个绝对的过期时间,以客户端为准,max-age是一个相对存储时间。不设置超时时间的cookie存储周期为session,浏览器关闭后,cookie失效secure:限制只能通过https发送cookiehttpOnly:限制只有http请求才能访问cookie,这样客户端脚本就不能读取cookie了,可以预防xss攻击SameSite:最开始由Chrome浏览器提出,现在已经得到了很多浏览器的支持,主要是用来防止csrf攻击 这些属性决定了cookie什么时候、什么场景下被使用。
设置cookie的方式 设置cookie的方式有两种,客户端和服务端,客户端通过document.cookie设置,每次仅能对一个cookie进行设置和更新,可以参考MDN文档。服务端通过Set-Cookie响应头设置。需要注意的一点是cookie的domain的默认值是服务端或客户端当前的域名,即使设置,也只能是当前域名及其父域名。
跨域cookie 前面说了,只要满足上面的可选属性,cookie就会自动被发送,但是有一种情况例外。就是当跨域请求发生时,浏览器默认不会携带cookie,即便cookie满足domain, path, secure等属性。想要发送cookie需要分别在客户端和服务端进行相应的设置。
客户端需要添加携带cookie的标志:
1.ajax可以添加withCredentials: true的选项
2.fetch可以添加credentials: 'include'选项
服务端需要携带Access-Control-Allow-Credentials: true响应头,同时Access-Control-Allow-Origin响应头不能为:*通配符,只能指定具体的单一域名。
当然也可以使用代理来避免前后端跨域的问题。
SameSite属性 sameSite属性在Chrome 51开始添加,在Chrome 80后将默认值设置为Lax,主要用来限制跨站点cookie的发送情况。注意,这里的跨站和跨域是两个不同的定义。同站表示两个域名的二级域名+顶级域名相同。且顶级域名得是有效顶级域名(eTLD),有效顶级域名注册在 Mozilla 维护的公共后缀列表(Public Suffix List)中,例如.com, .co.uk, pvt.k12.ma.us。所以a.baidu.com和b.baidu.com是同站,a.github.io和b.github.io不是同站,因为github.io不属于有效顶级域名。
samesite有三个值:
Strict 完全禁止跨站cookie的传递Lax 大多数情况不发送跨站cookie,具体如下 请求类型示例正常情况Lax链接<a href="..."></a>发送 Cookie发送 Cookie预加载<link rel="prerender" href="..."/>发送 Cookie发送 CookieGET 表单<form method="GET" action="...">发送 Cookie发送 CookiePOST 表单<form method="POST" action="...">发送 Cookie不发送iframe<iframe src="..."></iframe>发送 Cookie不发送AJAX$.get("...")发送 Cookie不发送Image<img src="...">发送 Cookie不发送 None 无论是否跨站都会发送cookie csrf攻击 csrf全称是:Cross-site request forgery,意思为跨站点伪造攻击。原理是借助用户已有的身份标志,去完成攻击操作。例如用户在某系统登录成功后,进入到了另外的攻击网站,网站后台不经过用户允许发起删除数据、篡改数据的操作(由于已经登录成功,会携带cookie身份标志)。防御这类攻击的方案有多种:
1.阻止cookie身份标志在未经允许的情况下被发送,可以借助samesite属性实现
2.由于攻击请求都是来源于攻击网站,服务端可以通过referer头来验证请求方的身份
3.csrftoken,csrf攻击的要点就是用户身份可以伪造,所以我们可以在请求中加入一些自己的标志,由服务端为客户端生成专用的token,在发送请求时添加到请求头中,攻击网站发起的恶意攻击则不能伪造出这样的标志
和localStorage的比较 跟cookie相比较,localStorage的优势是存储空间更大,而在安全性方面,反而不如cookie,对于xss攻击,cookie和localStorage都可以被读取,但cookie可以设置httpOnly属性,localStorage没有任何的防御机制。
和session的比较 session是被存储在服务端的,也就是服务器的内存中,相对cookie,使用session存储重要信息更安全,但是也有缺点,会消耗服务器内存,同时session在多台服务器的同步也是一个问题。
2
miui9
卸载哪些内置应用不会卡米?
/miui9
内置软件可精简列表?
一、以下项酌情精简:
1
、
/system/data-app
非系统软件
全部删除
/cust/app/
预置非系统软件
全部删除
2
、
/system/app
AppIndexProvider
应用搜索
删
Analytics
谷歌分析
删
BugReport
用户反馈
删
CloudService
小米云服务,可删建议保留
Calculator
计算器
删
DocumentsUI
文档界面
删
DownloadProviderUi
下载管理界面
删
Email
电子邮件
删
FileExplorer
小米管理器
(
可删但插
U
盘
FC)
GameCenter
游戏
删
HTMLViewer
本地网页查看器
删
HybridPlatform
直达服务
删
klobugreport
漏洞反馈
删
MiuiVideo
小米视频
删
MiuiCompass
指南针
删
MiuiMusic
小米音乐
可删可换
MiuiCamera
大家好,我是仔仔!
我的手机设备在十月份升级了基于安卓Q的MIUI11后,想卸载系统自带软件,但是没有找到卸载入口。进入升级安全中心-软件管理,但是有些自带软件还是没有卸载按钮的。
有人说,为什么不ROOT或者戴面具呢?我的小米手机升级安卓10后还没有测试ROOT和面具,但是我知道实行上面其中一种方法必定会出现软件不兼容(比如“建行app”无法在越狱设备上运行!)
所以今天给大家带来一种(ADB)卸载方法!
测试环境;小米8 MIUI11开发版 安卓Q 安全补丁2019-11-01
操作环境;windows10家庭版 1909
使用方法:(手机端连接设置)①点击“我的设备”→“全部参数”→连续点击“MIUI版本”,直至出现“您现在处于开发者模式”,②点击“更多设置”→“开发者选项”→“USB调试”,出现“一律允许使用这台计算机进行调试”,点击“确定”(私信作者获取连接下载)
③解压下载文件 点击运行后缀为“bat”的对应文件,以卸载对应软件(备注为“不要卸载,会卡米”的文件,请不要点击卸载,否则会无法开机,如果不慎卸载,可以通过进入recovery清除所有数据恢复,或者通过MiFlash线刷恢复,不过这样,数据就没了)
另外注意:
①我没有测试其他系统软件,不能确定其他系统软件卸载后是否会卡开机界面,其他未在文件里出现的系统软件需要你们自己去用备用机测试
②如果你需要卸载其他系统软件,首先复制一个文件内的bat文件,再粘贴,然后进入编辑(如果直接复制里面内容,再新建文本文档改成bat文件,运行后就会出现乱码,这个也是可以用的,你一路回车就行,只是难看了点)
③卸载其他系统软件只需将对应应用的名称替换即可,下图中红笔圈出来的就是要替换的内容,
部分应用在不同手机上应用包名有略微区别,
“米币支付”的应用包名为“com.xiaomi.payment”,
同样是一个米币支付,应用包名会出现不同,
如“小米4”的“米币支付”的应用包名为“com.xiaomi.payment”,
“小米6”的“米币支付”的应用包名为“com.miui.xiaomi.payment”
所以,会出现有的手机可以卸载,有的则不能,出现不能卸载,就是包名不对,需要自己修改
(名称查看方法:进入MIUI自带的应用管理,点击你所要卸载的软件,屏幕右上角有个“圆圈i”的东西,点进去,就会显示当前应用应用包名,如下图。)
好啦,本期到此结束,完我们评论区见!
1. 单双缓冲区处理文件所需的时间求法 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-VqIXS15r-1608372451790)(
)]
其中C,M,T表示如下:
C:为处理机对一块数据的处理时间M:缓冲区数据送达用户区的时间T:一块数据输入到缓冲区的时间 单缓冲区
由于T和C可以并发执行,所以单缓冲区的工作示意图如下
计算公式:
处 理 文 件 的 时 间 = n ∗ ( M a x ( C , T ) + M ) + M i n ( C , T ) 处理文件的时间=n*(Max(C,T)+M)+Min(C,T) 处理文件的时间=n∗(Max(C,T)+M)+Min(C,T)
双缓冲区
由于是双缓冲区, 当在处理缓冲区1数据的同时,可以向缓冲区2输入数据。所以双缓冲工作示意图如下:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Qf3TVFG8-1608372451802)(D:\笔记图片集\1608372009209.png)]
计算公式:
处 理 文 件 的 时 间 = n ∗ M a x ( C + M , T ) + M i n ( C + M , T ) 处理文件的时间=n*Max(C+M,T)+Min(C+M,T) 处理文件的时间=n∗Max(C+M,T)+Min(C+M,T)
*试卷常用的是A3尺寸的纸。相当于A4纸的两倍,也就是俗称8开的纸。各种纸型:A1尺寸、A2尺寸、A3尺寸、A4尺寸、A5尺寸、B1尺寸、B2尺寸、B3尺寸、B4尺寸、B5尺寸:A1:594mm×840mmA2:420×594mmA3:297×420mmA4:210×297mmA5:148×210mmA6:105*148mmB1:706×1000mmB2:500×706mmB3:353×500mmB4:250×353mmB5:176×250mm依照长度和宽度不同分类,A4规格:21*29.7厘米 B4的规格:25*35.4,B5的规格:18.2*25.7。常用纸张按尺寸可分为A和B两类:A类就是我们通常说的大度纸,整张纸的尺寸是889*1194mm,可裁切A1(大对开,570*840mm)、A2(大四开,420*570mm)、A3(大八开,285*420mm)、A4(大十六开,210*285mm)、A5(大三十二开,142.5*210mm)……;B类就是我们通常说的正度纸,整张纸的尺寸是787*1092mm,可裁切B1(正对开,520*740mm)、B2(正四开,370*520mm)、B3(正八开,260*370mm)、B4(正十六开,185*260mm)、B5(正三十二开,130*185mm)……。纸张按种类可分为新闻纸、凸版印刷纸、胶版纸、有光铜版纸、哑粉纸、字典纸、地图纸、凹版印刷纸、周报纸、画报纸、白板纸、书面纸、特种纸等。
目录 题目示例 求解题目的理解代码 题目 给定一个 m x n 的非负整数矩阵来表示一片大陆上各个单元格的高度。“太平洋”处于大陆的左边界和上边界,而“大西洋”处于大陆的右边界和下边界。
规定水流只能按照上、下、左、右四个方向流动,且只能从高到低或者在同等高度上流动。
请找出那些水流既可以流动到“太平洋”,又能流动到“大西洋”的陆地单元的坐标。
提示:
输出坐标的顺序不重要
m 和 n 都小于150
示例 给定下面的 5x5 矩阵: 太平洋 ~ ~ ~ ~ ~ ~ 1 2 2 3 (5) * ~ 3 2 3 (4) (4) * ~ 2 4 (5) 3 1 * ~ (6) (7) 1 4 5 * ~ (5) 1 1 2 4 * * * * * * 大西洋 返回: [[0, 4], [1, 3], [1, 4], [2, 2], [3, 0], [3, 1], [4, 0]] (上图中带括号的单元).
在用Transformer RoBERTa的时候,使用RoBERTaTokenizer,分词之后每个token前面会出现奇奇怪怪的“G”(上面还有个点号,其实试unicode 字符\u0120)
原因是RoBERTa和GPT-2等一样,词表用的是BPE(original BPE paper by Sennrich et al),它不同于我们用的普通BERT的tokenizer,即WordPiece vocabulary,把未知的word不停按照subword分下去(比方说“#T”,"##ok",按照分的级数确定前面“#”的个数)
其实在下载RoBERTa的时候就会发现,它和普通BERT相比,下载文件有点不一样
普通BERT:
RoBERTa:
RoBERTa的vocab里面打开会发现所有的word前面都会有个"G",同时它还多了个merge.txt
还有为什么会出现“G”?
有关tokenization:
机器如何认识文本 ?NLP中的Tokenization方法总结
参考资料 github-为什么会出现“G”
github-为什么要有merge.txt
Difficulty in understanding the tokenizer used in Roberta model
Tokenization issue with RoBERTa and DistilRoBERTa
wx.uploadFile({
url:serverUrl+"/user/uploadFace?userId="+app.userInfo.id ,
filePath: tempFilePaths[0],
name: 'file',
header: {
'content-type': 'application/json', // 默认值
},
success: function (res) {
var data = JSON.parse(res.data);
console.log(data);
wx.hideLoading();
if(data.status == 200){
wx.showToast({
title: '上传成功',
icon: 'success',
});
//图片地址给小程序
var imageUrl = data.data;
me.setData ({
faceUrl : serverUrl+imageUrl
});
}else if(data.status==500){
wx.showToast({
title: data.data.msg,
duration: 3000
});
}
}
})
这里要注意以下,wx.upload()里,success返回的参数类型里:data 是String,字符串类型,需要用JSON.parse() 转换格式,和wx.request()不一样;
最近入职了一家上市公司,公司转正需要进行答辩,我准备了一份PPT,内容包含四个方面:工作认知、案例讲述、自我分析、工作感悟。正好借此机会和大家分享一下,希望能对大家有所帮助。
以下将以“PPT图片+文字内容”的形式为大家进行介绍:
Part1 工作认知 我认为呢,产品这个岗位应该包含四个方面的工作,分别是需求,产品,数据和管理,这四个方面共同作用才能够实现业务闭环。
对于需求,应该源自于两个方面,一个是用户,用户是我们产品的直接受众,用户的意见和建议,是我们产品的根本方向;而另一方面的需求来源于市场,因为用户的需求是很直观的需求,对于用户的一些潜在需求,用户其实自己也并不清楚,很多时候,用户的需求都是被引导的。所以看一下市场上面有什么最新的技术,有什么更好的产品,我们取其精华,去其糟粕,以“拿来主义”的思想进行适用性创新,就可以调制我们自己的鸡尾酒了(这里提的一个概念是“创新”,我们所处的时代,“创造”或许已不复存在,对于这一论点,有兴趣的同学可以看一下凯文·凯利的《必然》)。总而言之,有一个根本立足点就是,做产品一定要了解用户!
对于产品岗位的第二部分工作,就是产品本身了,我觉得这主要是一个需求可视化的过程,产品岗位的交付物主要包括两大方面,一个是界面可视化的原型图,另外一个是逻辑可视化的PRD文档,其中PRD文档又包含多种视图,流程图、用例图、泳道图等。原型和文档这两方面是相辅相成的关系。
关于数据方面的工作呢,产品经理的一个侧重点,我觉得应该是首先想办法建立数据视图,然后对数据进行分析,进而确定下一步的工作方向。对于C端产品典型的数据视图为用户画像,而对于B端产品,我理解的数据视图应该是业务数据模型的建立。
产品的最后一项工作是管理方面的工作,这个管理主要是侧重于对节点的管理和对结果的把控,我们需要保证产品最终的走向与我们预期的方向保持一致。这是我对于“产品经理”工作的一个简单理解。
该如何总结自己的成绩呢?很简单,用数据说话。大家细看这张PPT,其实可以分为三个部分:最顶层的微服务架构;各个模块的数据展示;以及做每个模块中自己的收获。简单啰嗦两句,我当时是如何讲解这张PPT的,嘿嘿。
入职三个月,首先知道了我们微服务架构的这个概念,然后在一次次的实践中,一步步增加对这个概念的认知。列举了一下,大概做了这些方面的事,吧啦吧啦~(说啰嗦两句,就啰嗦两句)
Part2 案例讲述 我在答辩的时候,把案例讲述分为了两部分:
第一部分是纯粹的原型展示,原型是产品经理的基本功,展示一下原型,让大家有一个“第一印象”;第二部分是工作流的演示,我从接收需求开始,到最终的环节交付,整体讲述了自己工作的方式方法。案例讲述方面,同样可以用在面试的过程中。我们接下来看一下产品经理的工作流吧。
我选择的案例,我们就称之为“动态标签”吧!
工作流程的第一环节,就是背景与目标。背景或者业务场景,是我们分析的基础:批量用户的权限发生改变时,学校目前只能是通过管理员为相关用户进行一个个地修改权限,或者是以文件导入的方式,批量修改权限,这样的做法对管理员的压力非常大,并且存在不及时或者遗漏的情况。于是我们对于这样的业务场景,就设立了这样的目标。
“动态标签”四个字,我们分两部分进行分析。PPT中应该已经把性质说的很清楚了,这里就不赘述啦。至于分析的方式方法,我觉得这个就需要就事论事了,没有固定的方法论~
接下来就是流程设计啦,设计流程的第一步,是先确定流程包含几个方面,以及这几个方面的性质是什么,然后我们再确定各个方面之间如何流动是最合理的。流程也牵扯具体的业务,我把当时我如何讲述的内容说明一下,如果看起来不那么明白的,那么客官您一笑而过就行了~
“根据以上的分析,我这边设计了整体了流程。首先与动态标签有关联的有五个服务或者说是系统,分别为用户管理,开放平台,授权服务和两个第三方系统,他们是干嘛的呢?我们来看一下:***,我们再来看一下整体的流程,我们在用户管理中创建一个动态标签,然后把这个标签通过接口的方式,将相关数据同步至开放平台和授权服务。在开放平台中,我们通过这个标签API的接口,和第三方系统进行数据交互,获取到符合标签的用户数据;同样,我们在授权服务中,给标签匹配相应的角色,角色对应哪些权限,这个同样是来源于第三方系统。最后将三者通过接口的形式实现数据同步,这样我们就建立了用户和权限的联系。”
原型设计 介绍完流程之后,我紧接着介绍了自己设计的原型图,讲解步骤如下:
一,根据流程进行演示;二,重点介绍如何实现动态变更权限;三,介绍界面的其他功能,例如查询条件,编辑设置等。
Part3 自我分析 我用了比较流行的“SWOT”分析法。自我分析的内容,在面试过程中,命中率基本上100%!
我们直接进入主题,我当时是这样讲述这张PPT的:
“这一页是一张自我分析的PPT,入职了一家公司,不仅是公司要对员工进行评价,我觉得员工也很有必要对自己以及自己选择的道路进行反思。我借鉴了“SWOT”分析法。
首先反思了一下“strength”,我对自己这方面的评价是“实实在在“,老老实实做事,踏踏实实做人,不浮夸,不造作,我欣然接受自己的不足,我会不断地努力改进,但是我也会自己认为不合理的事情提出质疑;
再说一下“weakness”,这个跟自己的经历有关吧,之前的工作方向,我为自己设定的为“系统分析师”的角色,也就是面向业务的产品经理,之前我对产品总监的认知就是,能够深耕业务,并带领团队朝着正确的方向前行,当然,也和当时的工作环境息息相关,而来到我们公司,我发现,我们公司对产品的要求可能更偏向于“系统架构师”的定位,也就是面向技术的产品经理,我觉得这是我的不足之处,但同时,我觉得这也是我的“opportunity”,我乐于接受这份挑战,虽然我是软件出身,也做过一段时间的开发,但是时间不长,理解不深,正好,这样的工作环境,能够弥补我这方面的缺陷。
最后分析了一下“threat”方面,我觉得我们这个团队好像生在了一个“动荡的年代”,当然这个词是需要加引号的,动荡不至于,年代更谈不上,但是我们团队经历了直属领导的离职,我们也确实处在这种分割的团队协作体制中,沟通成本过大,日常交流不便,而且我们都是新人,对于公司的熟悉,对于业务方向的熟悉都需要一定的时间沉淀,更需要过来人引领方向,这点希望领导们能够给予一定的帮助,共同解决一下这方面的问题,因为我们也确实想变的更好,而不是过一天是一天!”
面试问题 在面试过程中是不是经常会遇到这几个问题:“你的优缺点是什么?”,“你的职业规划是怎样的?”,“你怎样理解产品经理这个岗位的?”
怎么样,看到以上的分析,对于这些问题有没有启发呢?
Part4 工作感悟 “二八原则”大家应该都听过,我觉得产品经理应该也有自己的“二八原则”,80%的时间思考,20%的时间实现。产品经理这个岗位的核心,我觉得在于分析和设计,大到一套方案,小到一个流程,这些事情只有先想清楚了,才能够开始做,不然一次次的变更,一次次的返工,不仅浪费了时间和精力,更打磨了自己的积极性。这是自己的第一条感悟,作为一个合格的产品经理,应该勤于思考,而不是只知道“埋头苦干”。
我觉得我们做任何一件事情,都应该明确其目的和意义,而不是单纯地去为了完成上级交代的任务而去开展工作。说起这个话题,我想起去年年终比较火的一首歌,就是新东方年会的那首,有句歌词印象特别深刻:“不想努力干活,只想应付考核”。所以,在这个地方,两个方面吧,一方面是我们自身一定要有这个意识,多去了解多去问我们做事情的意义在哪里,我们做的事情能够创造什么价值,另一方面,也希望领导们多给我们讲一些这方面的内容,我们还是很愿意去了解的。
总结一下 好啦,小伙伴们,我的整个转正述职报告,基本上就是以上内容了。因为面向的对象,不仅有软件部的各位同事,还有业务部门,人力资源部的领导们,所以每个方面都没有太深入,不过我觉得“格局”还是有的,并且领导们也都喜欢听这方面的内容,哈哈~
也欢迎大家一块探讨学习,借用别处我特别喜欢的一句话结尾吧:“一个人能走多远,关键是看与谁同行!”
我希望能与大家风雨同舟,如果我的内容对大家有帮助的话,也希望您能够打赏一下,不胜感激,嘿嘿~
本文由 @晓庄同学 原创发布于人人都是产品经理。未经许可,禁止转载
题图来自Unsplash,基于CC0协议
前几年,很多人会说雷电3接口大部分人用不到,不过通过这两年的发展,可以看到除了苹果的MacBook系列的笔记本配备了雷电3接口外,越来越多的Windows笔记本也开始使用雷电3接口了。它对于轻薄笔记本来说是一个非常重要的发展方向,因为有雷电3的话,轻薄本可以放弃很多接口,直接使用扩展坞来达到甚至超越传统笔记本的性能与功能。
而说到雷电3接口,很多人就会想到Type-C接口,其实两者之间看似没差别,但关系还是要先理清的,简单来说:
Type-C只是接口的一种规格(形态),而雷电3是一种连接标准(技术)。目前的雷电3接口统一都是Type-C标准,但并不是所有的Type-C接口都支持雷电3标准。
一句话:雷电3可以说是USB Type-C的最顶级呈现。
它能够实现USB Type C的绝大多数功能,传输速度提升到了 40 Gbps,可以扩展相当多的设备,比如同时外接多个显示器和拓展多个高性能显卡,甚至如果嫌弃自己电脑存储空间不够用的话还可以外接个SSD继续打游戏。并且相比上代更加省电,能够提供 100W 的电力输送(实际可以更高)。
除此之外它兼容了市面上多种规格的传输协议,也就是说雷电3几乎能替代电脑上的所有接口,所以才会出现只有一个雷电3接口的笔记本电脑。
而以上提到的雷电3接口的优点,自然也能够在题主买的MacBook上的雷电3接口呈现。也就是说在Mac上用该接口转VGA或HDMI的转换接头可以使用外设显示器,输出视频和音频。同时它还支持双向充电,可以通过它直接给其他设备充电,也可以给笔记本充电。
而且雷电3接口因其异于常人的输出功率使其能串联外接设备,可以同时外接多个显示器进行多屏超清画面扩展,这一点对于追求多屏扩展、分辨率高、鼠标操控无拖沓感的需求的金融用户以及极客玩家来说体验可以说是爽爆了。
此外,Mac上的雷电3还有其他强大的专属功能,比如利用高速PSSD(通常写入速度在700MB/s以上,读取速度过1500MB/s)为Mac扩容。
虽然Mac OS操作系统需要占用不了多大硬盘空间(大约6-7个G),但我们在日常使用时储存的文件、工作/学习资料、应用程序等东西可能就得占好几百个G,内置的500GB固态硬盘根本不够用。
众所周知,固态硬盘可用存储空间过低,会影响PC的性能。所以,外接硬盘盒为Mac扩容成了很多老铁们的选择。
而普通USB 3.1的带宽才10 Gbps,与MacBook上雷电3的简直有天壤之别,如果PC配备的是USB 3.1,没有雷电3接口的话,传输速度完全不够看,PSSD的速度也上不去,干啥都很慢。
但MacBook有雷电3接口,高达40 Gbps的带宽提供了强大的数据吞吐能力,传输文件快速,在PSSD内操作也很流畅。以我在使用的三星X5为例,这款PSSD采用的就是雷电3接口,还配备了NVMe接口,读写速度基本在2800 MB /2300MB/s左右,传输大数据文件轻轻松松。
现在正好需要从同事电脑里拷贝文件,我就给大家做个图感受一下。
54GB的文件也只花了30s左右,这还是由于Windows资源管理器拷贝文件的队列纵深不高,使得PSSD没有达到理论最大性能的结果。这种传输速度在以前想都不敢想了吧,这些都是雷电3的功劳。
如果外接PSSD玩游戏的话,雷电3接口带来的强大数据交换能力也可以让你更快地加载地图。无论创建实时3D渲染图像,还是处理大容量游戏数据完全ojbk。尤其是在玩《APEX英雄》、《战地》、《绝地求生》等这类必须完全载入的大地图射击游戏里,更是需要频繁读取文件,数据交接稍微慢一点就不行。
但有雷电3接口的三星X5就不一样了,通过NVMe与雷电3间的技术协同,就算需要大量读盘的时候也完全不带怂的,可以快速加载进入新地图,流畅还不带喘。这就是超大的带宽带来的爆棚般的性能体验。
所以为什么现在很多人对这个接口情有独钟,那时因为人家真的强悍啊,高速的性能提升就是效率的提升!现在说雷电3没啥用的人,过不了多久,也肯定逃不了真香的宿命啊!
1.方法一:苹果官网序列号查询
查看您的保障服务和支持期限
可以查询设备是否是真机,以及手机保修结束日期。
2.方法二:GSX查询
GSX查询指的是苹果全球联网的售后查询渠道,它有以下功能:
查询id锁/id黑白
查询网络锁/运营商黑白
查询激活状态/激活日期/保修结束日期
查询是否是官换机/官修机/BS资源机/借出设备/行货
查询是否维修过
查询设备是否更换了序列号
...
GSX查询与 Apple 官方同步,100%准确。支持 iPhone/iPad/iPod/Apple Watch/Mac 等所有苹果产品验机。
使用GSX查询进行鉴别手机教程:
第一步:关注 PG小记者 公众号,点击左下角 GSX查询 。
第二步:输入查询码和需要查询的设备的IMEI,然后勾选需要查询的内容,即可获取查询结果哦~
在日常开发中,我们前端必不可少的需要像后端请求数据。
但是一般前后端分离,所以域名、端口等肯定不尽相同,这样就不可避免的会遇到浏览器的同源策略限制。
在一般情况下,后端都会设置请求跨域允许的来源、方法等。
但是也保不准后端疏忽而忘记这个问题。
那为了不影响我们的开发,前端只能被动的去找后端解决跨域问题。
其实,我们前端也可以解决跨域问题,那就是使用代理。
举个例子:
我请求的地址是这个:http://192.168.12.36:9000/api/SourceManager
但是我本地的vue项目的端口号是8080,这里就涉及到了端口号不一致导致的同源策略问题(别想着改成同端口,会冲突)、
那么我发起请求就会跨域而被浏览器拦截,那么我们来看看解决办法:
在vue的config文件夹中有个index.js文件:
在proxyTable中配置代理(名字可以随便起,我用的是web)
proxyTable: {
'/web': {
//设置你调用的接口域名和端口号 别忘了加http
target: 'http://192.168.12.36:9000/api/SourceManage',
changeOrigin: true,
pathRewrite: {
'^/web': ''
//这里理解成用‘/web'代替target里面的地址,后面组件中我们掉接口时直接用web代替 比如我要调用'http://192.168.12.36:9000/api/SourceManage/user/add',直接写‘/web/user/add'即可
}
}
}
因为我是把公共的请求地址抽离出来的,所以大家可以参考以下部分:
获取数据:http://192.168.12.36:9000/api/SourceManager/GetAll
增加数据:http://192.168.12.36:9000/api/SourceManager/AddSource
修改数据:http://192.168.12.36:9000/api/SourceManager/UpdateSource
删除数据:http://192.168.12.36:9000/api/SourceManager/DeleteSource
理论上代理中配置到端口号即可,但是我为了后期方便,把公共地址抽离出来,一直配置到公共的结束,所以代理中我配置的是http://192.168.12.36:9000/api/SourceManager
然后在config文件夹中的dev.env.js文件中配置生产环境(开发环境):
这边写自己的路径端口号以及前面配置的代理名:
module.exports = merge(prodEnv, {
NODE_ENV: '"development"',
API_ROOT: ' "http://localhost:8080/web" '
})
然后在config文件夹中的prod.env.js文件中配置产品环境(上线环境):
这边我暂时就不写了,大家上线打包的时候写成自己的实际请求地址即可。
module.exports = {
NODE_ENV: '"production"',
API_ROOT: ' "" '
}
然后在main.js里改为请求配置的地址:
// 引入axios
import axios from 'axios'
退出登录时,如果不使JWT Token失效会产生如下2个问题
问题1-未过期的token还是可以用
要是用户在多个设备登录了,而且本地保存了token。当一个地方丢弃token,但是这个token要是没有过期,那之前token还是可以用的。
问题2-多个设备会出现死循环
如果我把token存到数据库,当用户退出登录或者修改密码,更新token。当用户下次拿着之前的token来认证时,找到该用户数据库存的token,两个对比一下,如果一样就通过,否则让用户登录。有一个问题,如果这样做,要是有两设备,就死循环了。一个设备登录了,token就会变,导致另一个去登录,然后这个token又失效了,成死循环了。
解决
其实要完美地失效JWT是没办法做到的。
"Actually, JWT serves a different purpose than a session and it is not possible to forcefully delete or invalidate an existing token."
这篇文章写得比较简单易懂:https://medium.com/devgorilla...
有以下几个方法可以做到失效 JWT token:
将 token 存入 DB(如 Redis)中,失效则删除;但增加了一个每次校验时候都要先从 DB 中查询 token 是否存在的步骤,而且违背了 JWT 的无状态原则(这不就和 session 一样了么?)。
维护一个 token 黑名单,失效则加入黑名单中。
在 JWT 中增加一个版本号字段,失效则改变该版本号。
在服务端设置加密的 key 时,为每个用户生成唯一的 key,失效则改变该 key。
第一节 Promise
1.1 promise是什么?
Promise 是异步编程的一种解决方案,比传统的解决方案——回调函数和事件——更合理和更强大
有了Promise对象,就可以将异步操作以同步操作的流程表达出来,避免了层层嵌套的回调函数
1.2 promsie产生的原因
在JavaScript的世界中,所有代码都是单线程执行的。
由于这个“缺陷”,导致JavaScript的所有网络操作,浏览器事件,都必须是异步执行。异步执行可以用回调函数实现:
function callback() {
console.log('Done');
}
console.log('before setTimeout()');
setTimeout(callback, 1000); // 1秒钟后调用callback函数
console.log('after setTimeout()');
观察上述代码执行,在Chrome的控制台输出可以看到:
before setTimeout()
after setTimeout()
(等待1秒后)
Done
可见,异步操作会在将来的某个时间点触发一个函数调用。
异步回调的问题:之前处理异步是通过纯粹的回调函数的形式进行处理
很容易进入到回调地狱中,剥夺了函数return的能力
问题可以解决,但是难以读懂,维护困难
稍有不慎就会踏入回调地狱 - 嵌套层次深,不好维护
回调地狱
一般情况我们一次性调用API就可以完成请求。
有些情况需要多次调用服务器API,就会形成一个链式调用,比如为了完成一个功能,我们需要调用API1、API2、API3,依次按照顺序进行调用,这个时候就会出现回调地狱的问题
1.3 promise详解
1.3.1 语法
new Promise(
function (resolve, reject) {
// 一段耗时的异步操作
resolve('成功') // 数据处理完成
// reject('失败') // 数据处理出错
}).then(
(res) => {console.log(res)}, // 成功
(err) => {console.log(err)} // 失败)
匿名用户
1级
2017-12-01 回答
git bash 下操作文件及文件夹命令:
1, cd : change directory的简写,改变目录的意思,就是切换到哪个目录下, 如 cd e:\fff 切换 E 盘下面的fff 目录。
当我们用cd 进入文件夹时,我们可以使用 通配符*, cd f*, 如果E盘下只有一个f开头的文件夹,它就会进入到这个文件夹.
2, cd .. 回退到上一个目录。我们在写js,或css时,我们引入文件时,.. 表示的就是上一个目录, 所以 cd .. 回退到上一个目录就很好理解了。注意,cd 和两个点点..之间有一个空格,
3, pwd : print working directory, 打印工作目录,它会显示我们当前所在的目录路径。
4, ls: list, 列出当前目录中的所有文件, 只不过ll(两个ll)列出的内容更为详细。
5, touch : 新建一个文件 如 touch index.js 就会在当前目录下新建一个index.js文件。
6,rm: 删除一个文件, rm index.js 就会把index.js文件删除.
7, mkdir: 新建一个目录,就是新建一个文件夹. 如mkdir src 新建src 文件夹.
8, rm -r : 删除一个文件夹, r (recusive 是递归的意思), 删除用的就是递归,先删除文件夹里面的内容,再删除文件夹。 rm -r src 删除src目录。
路径方向与非零环绕原则平时我们画的图形都是规规矩矩的,那么如果我们用线条画了个抽象派作品,就像下面这图一样,童鞋们知道怎么用fill()染色呢?
这里就要用到数学上的一个方法——非零环绕原则,来判断哪块区域是里面,哪块区域是外面。接下来,我们具体来看下什么是非零环绕原则。
首先,我们得给图形确定一条路径,只要“一笔画”并且“不走重复路线”就可以了。如图,标出的是其中的一种路径方向。我们先假定路径的正方向为1(其实为-1啥的也都可以,正负方向互为相反数,不是0就行),那么反方向就是其相反数-1。
然后,我们在子路径切割的几块区域内的任意一点各取一条方向任意的射线,这里我只取了三个区域的射线为例,来判断这三块区域是“里面”还是“外面”。
接下来,我们就来判断了。S1中引出的射线L1,与S1的子路径的正方向相交,那么我们就给计数器+1,结果为+1,在外面。
S2中引出的射线L2,与两条子路径的正方向相交,计数器+2,结果为+2,在外面。
S3中引出的射线L3,与两条子路径相交,但是其中有一条的反方向,计数器+1-1,结果为0,在里面。没错,只要结果不为0,该射线所在的区域就在外面。
绘制圆环记得arc方法吗?它的最后一个参数就是判断是路径方向的,如果是路径相反的两个同心圆在一起,图上色会有什么神奇的效果呢?
下面我们通过代码来实现它。
JavaScript Code复制内容到剪贴板
html>
圆环 body { background: url("./images/bg3.jpg") repeat; }
#canvas { border: 1px solid #aaaaaa; display: block; margin: 50px auto; }
你的浏览器居然不支持Canvas?!赶快换一个吧!!
window.onload =function(){
varcanvas = document.getElementById("canvas");
canvas.width = 800;
canvas.height = 600;
varcontext = canvas.getContext("2d");
context.fillStyle ="#FFF";
context.fillRect(0,0,800,600);
context.shadowColor ="#545454";
context.shadowOffsetX = 5;
context.shadowOffsetY = 5;
context.shadowBlur = 2;
context.arc(400, 300, 200, 0, Math.PI * 2 ,false);
context.arc(400, 300, 230, 0, Math.
怎样调整EXCEL柱状图的宽度
在Excel文调整分类间距的值调整柱状图的宽度,具体操作照以下步骤。
1、在电脑上目标Excel表格文件,然后用鼠标选中目标数据。
2、然后利用Excel表格的插入功能,在页面中插入一个柱形图。
3、然后选中柱形图的柱子后,右击鼠标,在右键菜单中点击选项“设置数据系列格式”。
4、在出现的窗口中,分类间距默认为150%,如果需要柱子变宽,则将分类间距调得比150%小,这样演示调为32%。
5、如果要将柱子变窄,则将分类间距调得比150%大,这样演示调为379%。这样柱子与柱子之间的距离比较宽。
6、如果要把两种系列的柱子之间的距离调得宽一些,就要把系列重叠的百分比调到0%以下。完成以上设置后,即可调整EXCEL柱状图的宽度。
excel做柱形图怎么设置柱形的大小
选中后拖动控制夹点,调整到满意为止
excel柱状图 横坐标怎么改啊
1、数据如下表所示。
2、以折线图为例,和销售额随的变化,做出线图如下所示,这个图表相信大家一眼就可以看出来缺点在哪里,数量和销售额相差太大,基本在单坐标轴图表中就看不到数量的变化。
3、在这个图表的基础上做出双坐标轴图表,看看有什么效果的差别。选中“数量”那条线,鼠标右键单击,然后选择“设置数据系列格式”。
4、在弹出的的“设置数据系列格式”窗口中,依次选择“系列选项”-“次坐标轴”,最后点击“关闭”。
5、这样就在刚才的图表中又添加了一个坐标轴,“数量”的变化也很清晰可见,这就是双坐标轴的优点。
6、稍加修饰一下,就变成很漂亮的一个图表。
EXCEL图表当中的柱状图怎么加粗,太细了。
双击任意柱子,将分类间距调整为0(越小越粗).
关于均衡器的作用,大佬们说的都很清楚了。我从开车听歌的角度来说说。
一般来说,音乐制作出来的时候,调音已经趋于完美了,所以调整EQ主要时为了适应不同的环境,开车时就是一个相对恶劣的环境。比如我,作为贝斯手,在大道上开车时很难听清贝斯声,又或者听rap的时候听不清歌词,这种情况令人头秃。
所以我会基于下图的指标,预存几个EQ组合:
1、低音专用
在噪音比较大的地方,想听点电音之类节奏感强烈的音乐,所以会调高31、63、125三个频段,控制在7 dB以内,就会有“上头”的感觉,有保持清醒之奇效。
2、人声专用
如果比较注重人声,或者为了听说唱,可以适当提升500、1k、2k,不超过5 dB,就可以突出人声,但如果开的太高,会失真,导致听起来像打电话。
如果听电台语音节目,就为了听清主播说话,还可以再拉高。
3、摇滚专用
开车时周遭环境已经很“轰鸣”了,如果听摇滚乐(特别是金属),很容易直接轰隆一片,神马也听不见。可以按照经典的“V型调法”,也就是提升两边,降低中间,提升31-125和4k-16k频段(最高不超过10 dB),能够分别增加低音的“结实感”,同时提升吉他riff的清晰度,让摇滚乐更加有冲击性。
对于我来说,以上三种组合适用大多开车场景,如果有研究出更多调法会同步更新。
展开全部
xy因各软件设置问题,导致可以互相转化,但32313133353236313431303231363533e78988e69d8331333366306439是在一般情况下:
x坐标代表南北方向。
y坐标代表东西方向。
东西方向:
坐标上X的数值越大表示该点越向北,X的数据越小表示该点越向南。
坐标上Y的数值越大表示该点越向东,Y的数据越小表示该点越向西。
扩展资料
道路坐标计算公式
1、圆曲线坐标计算公式 β=180°/π×L/R (L= βπ R/180°)弧长公式β为圆心角
△X=sinβ×R
△Y=(1-cosβ)×R
C= 弦长
X=X1+cos (α ± β/2)×C
Y=Y1+sin (α ± β/2)×C
β代表偏角,(既弧上任一点所对的圆心角)。β/2是所谓的偏角(弦长与切线的夹角) △X、△Y代表增量值。X、Y代表准备求的坐标。X1、Y1代表起算点坐标值。α代表起算点的方位角。R 代表曲线半径
2、缓和曲线坐标计算公式
β= L2/2RLS ×180°/π
C= L - L5/90R2LS2
X=X1+cos (α ± β/3)×C
Y=Y1+sin (α ± β/3)×C
L代表起算点到准备算的距离。LS代表缓和曲线总长。X1、Y1代表起算点坐标值。
3、直线坐标计算公式
X=X1+cosα×L
Y=Y1+sinα×L
X1、Y1代表起算点坐标值,α代表直线段方位角。L代表起算点到准备算的距离。
4、左右边桩计算方法
X边=X中+cos(α±90°)×L
Y边=Y中+sin(α±90°)×L
在计算左右边桩时,先求出中桩坐标,在用此公式求左右边桩。如果在线路方向左侧用中桩方位角减去90°,线路右侧加90°,乘以准备算的左右宽度。
常用的查看设备运行状况及排错诊断时命令
1. 接口下查看接口的传输包的近300s的个数,bits,以及入向和出向的包的流量、丢包个数、带宽占比
[Huawei]interfaceethernet 2/0/0[Huawei-Ethernet2/0/0]displaythisinterface
2. displaycpu-defendstatistics命令用来查看上送CPU报文的统计信息
display diagnostic-information dia-info.txt
display diagnostic-information命令用来一键式采集并查看设备当前的诊断信息或将诊断信息存储在指定文件
若输出诊断信息过长,可以按Ctrl+C停止
3. displaycpu-usage命令用来查看设备CPU占用率的统计信息
displaycpu-usageslot11显示指定槽位单板的CPU占用率的统计信息。
displaycpu-usageslave显示备用主控板CPU占用率的统计信息
display cpu-usage configuration命令用来查看设备CPU占用率的配置信息
定期(建议以1天为周期,收集3次)查看2分区大小块的内存使用情况
[Huawei]diagnose[Huawei-diagnose]displayinspect mem-debug-info 13 2 0 0
4. displaymemory-usage命令用来查看设备的内存占用率信息
displaymemory-usage slot 2查看2号槽位的接口板内存占用率信息。
5. display device命令用来查看设备的部件类型及状态信息。
6. display esn命令用来查看设备的序列号ESN(Equipment Serial Number)
7. display health命令用来查看设备的健康状况。
8. display fan命令用来查看风扇的状态
9. display version命令用来查看设备的版本信息
10. displayalarmactive命令用来查看设备当前的活动告警信息。
11. displaylogbuffer命令用来查看Log缓冲区记录的信息
显示指定路径的日志文件中保存的日志信息。
display logfile usb0:/logfile/log.log
12.进入诊断视图查看日志信息
[Router]diagnose[Router-diagnose]display logfile buffer[Router-diagnose]display diag-logfile buffer
原文:http://hcietea.blog.51cto.com/9642637/1981754
1、准备一组图片,最好大小一致,文件的命名相似,如:pic1.jpg、pic2.jpg、pic3.jpg;
2、在网页中插入一个2×3的表格,表格的宽度与你的图片宽度一致;
3、把表格的第一行的叁个单元格合并,并在其中插入第一张图片,把图片命名为“imag1”,这一点很重要,这是以后替换图片的标识;
4、在表格的第二行的左右两个单元格中分别插入两个按钮,一个这“下一张”,一个为“上一张”。在“下一张”按钮的代码中加上代码:οnclick="img(1)",在“下一张”按钮的代码中加上代码:οnclick="img(2)"。其作用是当相应的按钮按下时执行相应的函数实现切换图片的功能。在表格第二行中间那个单元格中写上“第一张”,并在该段文字的前后加上一个标记,在其中加上代码:id="picnum",这样做的目的是给这段文字加一个标识,以便动态替换。
5、在网页代码的
与之间插入以下代码: 以上是实现图片切换的主要函数,除标明可以的外可以不必更改。
5、表格、图片及按钮部分的代码如下:
第1张 上面的红字部分可以根据实际情况改写
网络延迟100ms以下算是正常的。
1、1~30ms:极快,几乎察觉不出有延迟,玩任何游戏速度专都特别顺畅。属
2、31~50ms:良好,可以正常游戏,没有明显的延迟情况。
3、51~100ms:普通,对抗类游戏能感觉出明显延迟,稍有停顿。
4、>100ms:差,无法正常游戏,有卡顿,丢包并掉线现象。
计算方法:1秒=1000毫秒(例:30ms为0.03秒)
扩展资料:
在各式各样的数据在网络介质中通过网络协议(如TCP/IP)进行传输,如果信息量过大不加以限制,超额的网络流量就会导致设备反映缓慢,造成网络延迟。
如果自己的手机或者笔记本与无线路由器之间距离太远,又或者中间需要经过墙面等障碍物,那么就会导致无线信号衰减很大,无线网络速度不稳定的情况,所以尽量减少距离与避免障碍物;无线路由器尽可能远离无绳电话、微波炉、手机蓝牙、无线键盘鼠标等无线设备干扰;建议将路由器关机一段时间,再进行开机使用,最好将路由器放置在通风较好的地方。
参考资料来源:
百度百科-网络延迟
问题描述: System.Net.WebException:远程服务器返回错误: (500) 内部服务器错误。
问题分析: 1、由于要请求的WCF服务已经崩溃导致了请求失败。
解决办法:重新启动WCF服务。详细步骤请查看以下博客。
C# System.InsufficientMemoryException: 内存入口检查失败,因为可用内存少于总内存的 5%问题解决
curl https://raw.githubusercontent.com/rapid7/metasploit-omnibus/master/config/templates/metasploit-framework-wrappers/msfupdate.erb > msfinstall chmod +x msfinstall ./msfinstall 国内的服务器好像有的没法下载,只能手动访问:https://raw.githubusercontent.com/rapid7/metasploit-omnibus/master/config/templates/metasploit-framework-wrappers/msfupdate.erb到本地,命名成msfinstall
然后执行后面的两句即可
ArcGIS服务启动失败解决方案 1.显示启动失败如下图:
2.后来点击启动弄了半天没成功,去ArcGIS重新发布服务,但出现以下错误:
原因:这arcgisserver-system这一堆小东西没启动
需要先全部启动这里的工具:
如果上面的启动不了可以先重启“服务”中的ArcGIS Server:
再点击启动问题解决:
hive启动时遇到以下错误:
Exception in thread “main”java.lang.RuntimeException:
java.lang.IllegalArgumentException:java.net.URISyntaxException:
Relative path in absolute
URI:{system:java.io.tmpdir%7D/%7Bsystem:user.name%7D
解决办法: 在hive下创建临时IO的tmp文件夹。然后将路径配置到hive-site.xml的下列参数中
<property> <name>hive.querylog.location</name> <value>/usr/local/src/hive/iotmp</value> <description>Location of Hive run time structured log file</description> </property> <property> <name>hive.exec.local.scratchdir</name> <value>/usr/local/src/hive/iotmp</value> <description>Local scratch space for Hive jobs</description> </property> <property> <name>hive.downloaded.resources.dir</name> <value>/usr/local/src/hive/iotmp</value> <description>Temporary local directory for added resources in the remote file system.</description> </property> 保存,重启hive即可。
[root@master ~]# hive Logging initialized using configuration in jar:file:/usr/local/src/hive/lib/hive-common-2.0.0.jar!/hive-log4j2.properties Hive-on-MR is deprecated in Hive 2 and may not be available in the future versions.
以前遇到的异常,通过各种办法解决掉了,但是都没有记录。后来再次遇到又记不起来了。。
!!! 这里记录平时工作、生活中遇到的异常。
一、Caused by: java.sql.SQLException: null, message from server: "Host ‘172.17.0.1’ is blocked because of many connection errors; unblock with 'mysqladmin flush-hosts 原因:同一个ip在短时间内产生太多(超过mysql数据库max_connection_errors的最大值)中断的数据库连接而导致的阻塞;
解决办法:flush hosts; 二、[NACOS HTTP-POST] The maximum number of tolerable server reconnection errors has been reached 解决办法: 内存太小了 三、Caused by: com.mysql.cj.exceptions.CJCommunicationsException: The last packet successfully received from the server was 66,232 milliseconds ago. The last packet sent successfully to the server was 66,233 milliseconds ago. is longer than the server configured value of ‘wait_timeout’.
本次教程是针对家用小米电视来讲的,因为公共单位的小米电视有没有广告我们基本也不会CARE,通常去广告有两种方法,下面详细讲解下。 方法一:开启ADB调试,禁用广告程序,需要点安卓经验,恢复出厂需要再次设置。 01.打开开发者模式,设置 -> 关于 -> 版本号 连续点击七次
02.打开adb调试,设置 -> 账号与安全->ADB调试,改为允许
03.查看IP,设置 -> 无线/有线->选择你已经连接的网络-> IPV4地址就是你电视的IP
04.下载“小米电视去广告工具”,打开后输入电视IP,点击连接,如果这时电视会出现 "是否允许USB调试" 的弹窗,选择允许,然后点击执行去广告命令。
05.重启电视查看效果。 去广告工具: https://www.lanzous.com/i59lmvi 方法二:在路由器上屏蔽小米电视广告地址,简单高效,可能连MIUI的广告也能屏蔽。 这里我已经用鲨鱼抓到了开机广告和视频头条的广告地址,我们直接进路由器屏蔽即可。然后点击电视管家深度清理一下广告缓存,重启之后就没有广告了。 屏蔽的域名有
ad.xiaomi.com
ad1.xiaomi.com
ad.mi.com
tat.pandora.xiaomi.com
api.ad.xiaomi.com
t7z.cupid.ptqy.gitv.tv
最近完成了学校让做的Java大作业,我写了一个教务管理系统。现在有两种用户类型,一个是教师端,一个是学生端。
教师功能:教学安排查询、录入成绩、导出成绩
学生功能:课表信息查询、选课、成绩查询
源码链接:https://gitee.com/lifuxu/educationaladmin
以下是效果展示觉得有帮助的给我点个赞,Gitee starred一下吧!
转载请说明来源于"厦门SEO"
本文地址:http://www.96096.cc/Article/161516.html
历史记录画笔 您可能感兴趣的话题: photoshop 核心提示:让我们随着这篇教程来了解一下ps的历史记录画笔工具吧!
历史记录画笔工具组中包括2种画笔工具,分别是“历史记录画笔”工具和“历史记录艺术画笔”工具。在默认状态下,工具箱上显示的是“历史记录画笔”工具按钮,如图1所示。
图1 历史记录画笔工具组
“历史记录画笔”工具可以将图像的一个状态或快照的拷贝绘制到当前图像窗口中。该工具创建图像的拷贝或样本,然后用拷贝的样本来绘画。在Photoshop中,用“历史记录艺术”画笔工具绘画,可以创建特殊效果。本节将通过实际操作步骤来讲解“历史记录画笔”工具和“历史记录艺术画笔”工具的使用方法和应用技巧。
历史记录是电脑对我们在处理图像时操作状态的纪录。记录步骤的多少是可以设定的。选择“编辑”→“首选项”→“Performance”命令,打开“首选项”对话框,如图2所示。在“History States”设置框中输入需要的步骤数,数值越大,占用的内存就越多。默认设置为20。
图2 “首选项”对话框
关于更多历史记录画笔内容,可以收藏本网页。
在上一篇"理论篇"中,咱们一起讨论了保证影像组学特征提取的可重复一致性,所需要具备的各项理论知识,包括实现过程中需要注意的重要细节和避免的错误。但大家心中是否始终存有一个疑问:理论我是清楚了,但真的要我自己动手去编程实现吗?我的目标是完成毕业论文或者发表学术论文,特征提取只是其中一步,真的没时间(没实力)去实现这一大套啊。
重复造轮子的事情当然不能干。不用担心,Radiomics的大神们也早已想到了这一点。光说不练假把式,连说带练才是真把式。大咖们虽然没听说过王阳明,也不懂心学,但对“知行合一”的追求,却是共通和共同的。
PyRadiomics 废话铺垫这里,必须引出工具篇的主角,PyRadiomics工具箱了。这是Radiomics网站团队开发和推出的一个开源Python工具包。
Github:https://github.com/Radiomics/pyradiomics
文档网站:https://pyradiomics.readthedocs.io/en/latest/
官方参考文献:Griethuysen J J M V , Fedorov A , Parmar C , et al. Computational Radiomics System to Decode the Radiographic Phenotype[J]. Cancer Research, 2017, 77(21):e104-e107. https://cancerres.aacrjournals.org/content/77/21/e104
如果想系统了解这个工具,推荐阅读上面的官方参考文献。这篇文章发表在Cancer Research期刊上,这个期刊的影响因子(IF)8.7。
一群理工男(Geek),一起写了一个Python库,然后就发了一篇IF 8.7的文章,也算是值得传颂的“佳话”了。也再次印证了之前提到的,影像组学在医工结合、独辟蹊径发表高分文章领域的威力。(多说一句,文章发表在2017年,现在想要走这个捷径,可要慎重了。)
目标 PyRadiomics的研发目标很明确:影像组学研究长期苦于缺少一套标准化的图像预处理和特征提取工具,所以,Radiomics团队要解决这个痛点,并且开源给大家使用。发现痛点、研发工具、开源共享,绝对的极客精神。
功能 目标明确了,那么按照这个目标,PyRadiomics实现了哪些具体功能呢?
来自参考文献的下图,给出了很好的说明。大家注意,图片中间灰色方框中的内容是PyRadiomics覆盖的功能范围,方框以外的都不在PyRadiomics范围内。说的更具体一些,一个完整的影像组学分析过程包括:1)左侧的图像采集和分割;2)中间的图像处理和特征提取;3)右侧的特征分析。PyRadiomics只负责中间的图像处理和特征提取。
从图片中也可以看到,PyRadiomics主要提供两大类功能:图像过滤和特征提取。下面分别简单介绍。
图像滤波 这部分相对简单。PyRadiomics提供了一系列函数,用于对原始图像进行滤波变换,从而生成小波图像、Laplacian of Gaussian (LoG)图像、以及square, square root, logarithm, 和exponential 图像。最新版本PyRadiomics在2017年论文的基础上,扩展增加了新的滤波输出图像类型。详细信息大家可以直接参考官方在线文档。
https://pyradiomics.readthedocs.io/en/latest/radiomics.html#module-radiomics.imageoperations
对影像组学不熟悉的同学可能有疑惑。直接在原始图像上进行特征提取就可以了,为什么还需要这些不同类型的滤波图像?大家应该看过一些影像组学的论文,里面动辄就提取出上千种特征。这上千种怎么来的?秘诀就是在原始图像以外,还对原始图像衍生出的多种类型滤波图像,并对滤波图像进行了特征提取。
额外说两句。
滤波即卷积。做不同类型的卷积,然后再提取特征,组合成一个大特征向量组,对向量组做筛选,然后进行分析和拟合。这和深度卷积网络在基本思想上,可以说已经达到80%的趋同了。不严格的说,影像组学类似于深度卷积网络的简化版;深度卷积网络则类似于影像组学的扩充版,二者颇有些“大道趋同”的意思。
在图像滤波部分,很多函数是调用SimpleITK来实现的。SimpleITK是基于ITK开发的一个Python库。而ITK则是从1999年开始开发的一个C++开源库,主要提供图像分割和配准功能。从ITK到SimpleITK,再到PyRadiomics,我们既看到了开源软件“九层之台,起于垒土”,也看到了开源软件的“薪火相传”。
特征提取 特征提取是影像组学中最重要的步骤。PyRadiomics工具箱提供了下述7大类特征(Shape-based 3D/2D 作为一类)。
First Order Statistics (19 features)
Shape-based (3D) (16 features)
wheel文件是python的一种生成包格式文件,像一种特定的zip文件,以‘.whl’后缀。
安装wheel
可以使用pip在线安装wheel:pip install wheel。
制作和安装自定义的wheel包
在Python入门的包中介绍了自定义包,本节在自定义包的基础上创建能安装的wheel包。
在自定义包的同级目录创建文件setup.py,其内容如下:#-*- coding:utf-8 -*-
from setuptools import setup
setup(
name='mypackage',
version="0.1.0",
packages=['mypackage'],
)
使用如下命令生成wheel包:python setup.py bdist_wheel。生成的wheel包位于目录dist下,后缀名为whl。
使用pip可以安装wheel包:pip install wheel包位置 。
卸载wheel包
卸载wheel包的步骤也很简单:
只需将目录site-package下包相关的两个文件夹删除即可:packagename和packagename-ver.dist-info。
无需登录 SM.MS:https://sm.ms
imgbox:https://imgbox.com
Postimage:https://postimages.org
imgurl:https://imgurl.org
iqy:https://pic.iqy.ink
imgbed:https://imgbed.cn
路过图床:https://imgchr.com
国内访问速度快
如优图床:https://img.rruu.net
Coding 图床:http://picbed.librejo.cn
小波图床:https://www.tuchuangs.com
imagelol:https://imagelol.com
sbimg:https://sbimg.cn
老兄 de 图床:https://www.riem.in
小太阳图床:https://yun.cncncloud.com
郭老三图床:https://tu.glsan.cn
飞舞图床:http://img.fei05.xyz
图库:http://tuku.link
ZOZS:https://pic.zozs.cn
weimp3:http://img.weimp3.com
牛图网:https://www.niupic.com
需要登录 imgur:https://imgur.com
聚合图床:https://www.superbed.cn
hualigs:https://www.hualigs.cn
Hello 图床:https://www.helloimg.com
1.关闭Hyper-V 2.快捷键win+r 输入regedit 地址栏:计算机\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\DeviceGuard
新建四项都为DWORD(32位):
ConfigureSystemGuardLaunch 值为 2 EnableVirtualizationBasedSecurity 值为 0 RequireMicrosoftSignedBootChain 值为 1 RequirePlatformSecurityFeatures 值为 1 地址栏:计算机\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa
新增1项
LsaCfgFlags 值为 0 全部保存再次重启即可
目录 课程介绍HOMEWORK #1 - SQLQ1 [0 POINTS] (Q1_SAMPLE)Q2 [5 POINTS] (Q2_WARMUP)Q3 [10 POINTS] (Q3_POPULAR_CITY)Q4 [15 POINTS] (Q4_MOST_POPULAR_STATION)Q5 [15 POINTS] (Q5_DAYS_MOST_BIKE_UTILIZATION):Q6 [10 POINTS] (Q6_OVERLAPPING_TRIPS)Q7 [10 POINTS] (Q7_MULTI_CITY_BIKES)Q8 [10 POINTS] (Q8_BIKE_POPULARITY_BY_WEATHER)Q9 [10 POINTS] (Q9_TEMPERATURE_SHORTER_TRIPS)Q10 [15 POINTS] (Q10_RIDING_IN_STORM) 课程介绍 cmu15-445是一门关于数据库的课程,看到该课程的homeworks和project就觉得十分有挑战性。目前该课程已经更新到2020fall,为了方便学习,同时之前版本也在官网上公布了homeworks的参考答案,参考资料相对较多,因此选择2018秋季学期课程来学习。课程首页,youtube课程视频
homework1对应的作业文档为HOMEWORK #1 - SQL
HOMEWORK #1 - SQL 配置sqlite以及下载数据库省略,作业给出的数据库关系图如下。
如下题目在官网有参考答案,我还是记录一下我的解决过程。参考答案
Q1 [0 POINTS] (Q1_SAMPLE) Count the number of cities. The purpose of this query is to make sure that the formatting of your output matches exactly the formatting of our auto- grading script.
问题描述: top命令查看,资源被kdevtmpfs占满,导致云服务器大量服务被关
原因分析: 这种病毒入侵的方式很多,redis,ssh,nginx,mariadb,博主遇到的是redis入侵,建议设置密码,不允许外网访问,因为redis一般是后端使用,后端使用如jar包,jar包访问完全在redis本机访问,访问地址让后端写127.0.0.1即可,或者配置文件在bind选项里面指定访问ip,具体配置看我之前redis教程修改配置文件项即可
解决方案: crontab -r # 清除定时任务 ps -aux |grep kdevtmpfsi |grep -v grep|cut -c 9-15 |xargs kill -9 ps -aux |grep kinsing |grep -v grep|cut -c 9-15 |xargs kill -9 # 关闭进程 yum -y remove e2fsprogs yum -y install e2fsprogs # 要删除的病毒被加了隐藏属性导致无法删除,病毒把去除隐藏属性的命令给删了,重装即可 chattr -i /etc/newdat.sh find / -name kdevtmpfsi rm -rf # 查看是否还有文件所在,chattr -i然后删除即可 find / -name kinsing rm -rf # 查看是否还有文件所在,chattr -i然后删除即可 # 一般这样就结束了,查看一下是否还存在残留即可 crontab -l ps -ef |grep kdevtmpfsi ps -ef |grep kinsing find / -name kdevtmpfsi find / -name kinsing # 这些都没有则结束,有则删干净即可
基于pandas的电影评分差异分析 实验内容 数据来源 详细步骤 import pandas as pd import numpy as np unames = ['user id','age','gender','occupation','zip code'] users = pd.read_csv('ml-100k/u.user',sep ='|',names = unames) # sep定义的是每行数据间的分隔符 rnames = ['user id','item id','rating','timestamp'] ratings = pd.read_csv('ml-100k/u.data', sep = '\t',names = rnames)# names指的是每个表的列名 users_df = users.loc[:,['user id','gender']] # 做数据筛选,users中只使用'user id','gender'这两个属性 ratings_df = ratings.loc[:,['user id','rating']] rating_df = pd.merge(users_df,ratings_df) # 把两个dataframe都有user id属性,通过merge函数连接起来 # print(rating_df) # 按gender计算rating的标准差,先对gender进行分组,再对rating属性使用std方法 # 下面是两种计算标准差的方法,区别在于numpy的是有偏估计(使用的是1/n),而pandas的是无偏估计(使用的是1/n-1),更贴近于实际情况 # 1. std1 = rating_df.groupby("gender").rating.std() print("第一种计算std的方法") print(std1) # 2.
索引 1.深度图像中提取NARF关键点2.SIFT关键点提取3.Harris关键点提取参考 1.深度图像中提取NARF关键点 #include<iostream> #include <pcl/range_image/range_image.h> #include <pcl/io/pcd_io.h> #include <pcl/features/range_image_border_extractor.h> #include <pcl/visualization/range_image_visualizer.h> #include <pcl/visualization/pcl_visualizer.h> #include <pcl/keypoints/narf_keypoint.h> // -----Parameters----- float angular_resolution = 0.5f; float support_size = 0.2f; pcl::RangeImage::CoordinateFrame coordinate_frame = pcl::RangeImage::CAMERA_FRAME; int main(int argc, char* argv[]) { angular_resolution = pcl::deg2rad(angular_resolution); // -----Read pcd file or create example point cloud if not given----- pcl::PointCloud<pcl::PointXYZ>::Ptr point_cloud_ptr(new pcl::PointCloud<pcl::PointXYZ>); pcl::PointCloud<pcl::PointXYZ>&point_cloud = *point_cloud_ptr; pcl::PointCloud<pcl::PointWithViewpoint>far_ranges;//远距离点云数据 Eigen::Affine3f scense_sensor_pose(Eigen::Affine3f::Identity()); if(pcl::io::loadPCDFile("./frame_00000.pcd",point_cloud)==-1) { std::cerr << "Was not able to open file \n"
将array转换为image
需要导入的头文件
from PIL import Image 函数
Image.fromarray() # 可以实现将numpy数组的图像数据转换为PIL用的数据对象 实例
pil_img = Image.fromarray(np.uint8(img)) uint8是专门用于存储各种图像的(包括RGB,灰度图像等),范围是从0–255,大于255的值会被截断。
需要注意的是,如果出现read-only错误,并不是转换的错误,一般是你读取的图片的时候,默认选择的是"r","rb"模式有关。
修正的办法: 手动修改图片的读取状态
img.flags.writeable = True # 将数组改为读写模式
因为个人的原因,好长时间没有更新了。这里将自己学习Go及其区块链的一些笔记、积累分享一下,如果涉及到了文章、文字侵权,请联系我删除或调整。 在函数中声明变量时,推荐使用更为简洁的形式: s := "Hello World!"声明一个名为s的变量。请注意,这里既没有关键字var也没有类型 符号:=表示用其右边的值初始化其左边的变量,并据此推导其类型 简短变量声明,被声明变量的类型不由程序编写者显式给出,而是借由初始值让编译器隐式推导出来 虽然不写类型,但其实还是有类型,形似JavaScript但与之不同 类型由系统根据值自动推导,但不是在运行时而是在编译时,形似Python但与之不同 简短形式的变量声明只能出现在函数级局部作用域中,包级作用域不可使用 // 简短的变量声明 // 简短的变量声明既不需要var关键字,也不需要 // 显式类型,只需在:=后面给出类型确切的初值 // // 变量 := 初值 // ^ \_/ // |_______| // 类型推导 package main import "fmt" func main() { s := "Hello World!" fmt.Println(s) }
linux安装ftp服务 1、打开终端,修改root用户密码:sudo passwd root 然后会要求输入当前用户的密码 接着输入root的密码 最后确认输入root的密码 2、切换到root用户:su root 然后要求输入root的密码 3、rpm -qa |grep vsftpd 可以检测出是否安装了vsftpd软件 如果出现问题:程序“rpm”尚未安装。 您可以使用以下命令安装: apt install rpm 4、apt install rpm 安装rpm命令 5、重复第一步,检查 6、sudo apt-get install vsftpd 安装ftp ( 也可以用这个方法安装ftp服务 6.1、apt install yum 安装yum命令 6.2、yum install vsftpd -y 安装ftp ) 另外 service vsftpd start 启动ftp命令 service vsftpd stop 停止ftp命令 service vsftpd restart 重启ftp命令
作者:Shadow
有网友提出了以下这个具有代表性的曲面导圆角的问题:
老问题,下图几个面相互匹配,配好了一个面,另一个面就有缝隙,求讲解! Shadow 老师提供了1Span面模拟圆角小教程,主要讲解如何分面,希望对Rhino友有用,先看最终效果:
对中间这几个面执行blendedge指令,做G2圆角。它肯定是不会自动处理好,所以这个不太重要。
1.先选上一步倒出来的圆角的边界,修剪掉多余的曲面,最后效果如下图。
2.过那个公共交点,在顶视图做红色直线。然后投影到两个面上,如下图所示:
3.把之前做的圆角曲面删掉,执行splitedge把上面的圆柱曲面的边分成三段,接着执行blendsrf,如下图:
4.可以看到边界2的调节杆有点歪了。按住Alt键,点边界2的第二或者第三个点,这时候发现这个调节杆可以绕圈自由活动,然后捕捉那个红色线的端点,把调节杆拉到和边界1的这排点相同的平面,下图所示:
5.相同方法blend出下面的曲面。在顶视图看可以发现这两个面的边界在同一个平面上。也许有人认为,直接在第三步用直线剪掉那两圆角曲面,它们的边界也会在同一平面上。没错,这样也可以,但是有弊端,后面再讲。
6.再执行blendsrf,做这个缺口的过渡面,按住shift键拉滑杆调整右侧的边界,使边界尽量与那两个倒圆角曲面吻合。
7.因为blend出来的曲面,在U方向上只有3阶,不方便以后的调整。执行changedegree改变它的阶数为5阶。改变阶数之后,曲面会在U方向变成8排点,变成3个span了,再执行removeknot减少U向的点,让它变成只有6排即可。
这一步也会有人觉得疑惑,直接用rebuild不就完事了,何必如此啰嗦?
这个问题先不回答,做多了就明白个中原因了。
8.将这个曲面执行split by iso分成两半,右边的的面insertknot,增加曲面的V向的点数。因为原来 blend出来的面,在V向是5阶6排点,6排点要去匹配那两个圆角曲面远远不够。
9.这是本例的关键一步,matchsrf。。。
执行matchsrf 指令,选增加了ISO的那个曲面的右侧边界,命令行提示Select edge to match ( ChainEdges ),点chainedges,里面有两个选项,边界自动选择和连续性。这里选autochain=yes,连续性保持Tangency 即可。然后接着点圆角曲面的边界,这时候可以看到,系统自动把两条边都选上,在边界上有箭头显示...
结束命令之后,算是完成了。因为右侧的匹配只动到3排控制点,左侧还有3排控制,所以本次匹配并不会影响左侧的连续性,最后斑马效果。
那1span 怎么做?其它的面都已经是5阶6排点了,这时候只要把刚才匹配的那个面,splitiso成两个面,也就成两个1span曲面了。
总结:
关键是matchsrf那一步,很多人不会用到chainedges这个选项,也有的人不会用MultipleMatches,就是一个面可以同时和几条边匹配。为什么要做第4、5、6步的那两个面而不是用用原来的面?
因为如果用原来的面,就需要剪切,再往下做过渡面的边界不会和这个切口吻合,会离得很远,这就会给后面的匹配带来不必要的麻烦。
还有一个就是将后面的过渡曲面分成两半来做,如果用blend出来的面做,跨度太长了,变形会比较大,影响到其它边界的连续性,也不方便匹配,所以用分成两部分来做就可以减小变形,同时又可以保证曲面的品质。
不想依赖第三方插件,要学习手工光顺曲面的小伙伴们可以留意以下原厂吴继斌Shadow 老师这门课:
Rhino产品高品质曲面合集第1章 五边曲面分面方法和瓶子造型练习class.rhino3d.asia
目前,立体成像,结构化的光投影和飞行时间(或ToF)这三项领先的3D成像技术正在争夺手机和汽车中的市场空间。
通过3D成像技术,可以实现行人检测,基于面部特征对用户进行身份验证,检测手的移动并提供SLAM(同时定位和映射)算法等应用。 今天,我们主要来了解飞行时间传感器。
一、什么是飞行时间传感器? 飞行时间传感器测量物体穿过介质传播所需的时间。通常,是在发出波脉冲,从对象反射到返回到ToF传感器之间经过的时间的度量。 而飞行时间相机是一种利用ToF测量来确定相机与物体或环境之间的距离,创建由单独测量的点生成的图像的设备。 ToF相机的应用包括基于激光的无扫描器LiDAR成像系统,运动感测和跟踪,用于机器视觉和自动驾驶的物体检测,地形图等等。 二、飞行时间传感器确定距离的方法 使用飞行时间来确定距离的方法有以下3种: ①、在图像的顶部,您可以看到第一种方法,该方法是发送脉冲并测量时间间隔,直到它们在反射后返回为止。 ②、图像的中间部分显示了第二种方法,其中您可以调制光源的振幅并记录反射波的相移。 ③、图像的底部表示第三种方法,该方法传输占空比为50%的方波,并记录在特定间隔内到达的返回光量。
利用飞行时间确定距离的方法 但在实际应用中,确定距离的方法远没有这么简单。比如,当飞行时间传感器应用在相机中,实现毫米级精密ToF相机时,以上利用飞行时间确定距离的方法就不太适用了,而是需要经过改进。 光波和无线电波的传播速度接近300,000,000,000 mm/s,对于波传播1 mm,光波和无线电波的传播速度约为3.3 ps(返回波速为3.3 ps)。这意味着,如果您想要一个可以对房间内所有物体成像的设备,并且想要的分辨率约为1毫米,则定时电子设备将需要皮秒级的分辨率,转化为数百GHz的时钟速度。 设计在这些频率下工作的电子电路既不容易,也不经济,因此,如果设计人员希望将这些设备带入消费市场,那么他们必须想出一种在较低频率下工作的方法。 存在两种常见的方法,可以在合理的GHz频率下实现毫米级精度: 将正弦调制波的相移与距离相关; 使用50%占空比方波的相移和差分电压来确定距离。 在以下各节中,我们将更详细地介绍这两种方法。 三、改进飞行时间传感器确定距离的方法 通过调幅波的相移确定距离 假设您要绘制最大长度为15 m的小型办公室或大型客厅。要确定适合该长度的工作频率,请使用Ç=λ&CenterDot;&˚FC=λ⋅F其中c是光速(c=3x10 8 m/s),λ是一个波长(λ=15 m),ƒ是频率。在此示例中,ƒ=20 MHz,这是一个相对容易使用的频率。 当亮光的输出由20 MHz正弦信号调制时,一切就开始了。光波最终将到达物体或墙壁,并且将反射和反转方向。原始调制光的调光器版本将返回接收器。除非对象恰好是15米的整数倍,否则相位将偏移一定量。 相移可用于计算波传播的距离。
如果您可以准确地测量相角,则可以准确地确定反射物体与传感器/接收器的距离。 如何测量正弦波的相角? 那么,如何快速测量正弦波的相位角?这涉及在四个等距的点(即90°或1/4λ的间隔)处测量接收信号的幅度。
我试图在下面说明测量值和相角之间的关系。A 1和A 3之间的差与A 2和A 4之间的差之比等于相角的切线。ArcTan实际上是两个参数的反正切函数,该函数映射适当的象限,并将A 2=A4且A 1>A 3或A 3>A 1分别定义为0°或180°。 下面图像说明了变量A 1,A 2,A 3和A 4的差如何拟合到单位圆上。
在上面的插图中,图形的最左侧有两条垂直数字线,显示了减去A 1和A 3(表示为深黄色)以及A 2和A 4(表示为蓝色)的结果。测量值在中间的正弦曲线图中显示为垂直线。 请注意,此图形未考虑反射(这将使所有物体有效地移动180°)。 确定给定距离的工作频率: 回到我们的示例,到目标的距离由以下公式确定:
其中c是光速,phi(φ)是相位角(以弧度为单位),ƒ是调制频率。 测量光子的实际飞行时间需要333 GHz电子设备。此方法最大需要4倍的调制频率,在这种情况下为4 x 20 MHz=80 MHz。这显着减少了资源。但是,您会很高兴知道一些聪明的工程师找到了一种进一步降低最大频率的方法。 通过带电电容器的差分电压测量确定相移 下一个测量情况涉及频闪光源和每个像素有两个电容器的CMOS成像传感器。 时钟源产生占空比为50%的方波,该方波控制明亮的选通光源以及与每个像素内部的电荷存储电容器的连接。 下图显示了这种系统的示例: “光子混合器设备固态阵列LiDARS的快速校准方法”中的图像显示了一个CMOS像素,该像素带有两个交替连接的电荷存储电容器,以记录入射光。
sys.path.append(os.pardir)
从父目录中导入文件
需要导入的头文件 sys, os
使用情形:
当需要导入的文件不在当前目录下时,而在父目录的另一个文件夹中就可以使用此函数。
实际就是把父目录加入到sys.path(Python的搜索模块的路径集)中,从而可以导入父目录下的任何目录中的文件。
转载请说明来源于"厦门SEO"
本文地址:http://www.96096.cc/Article/160875.html
办公软件
我们平常使用office办公的时候,经常会将Excel、Word这样的文档放在桌面,但是有些时候经常会发现这些文档的图标上出现一个锁的痕迹,要怎么去除呢?下面小编就带着大家一起学习一下吧!
操作方法:
1、win+R快捷键打开运行界面,输入%userprofile% 点击确定;
2、找到带锁的office文件右击,然后点击属性;
3、选择到安全界面,点击编辑;
4、选择添加;
5、在输入对象名称来选择的框里输入au,点击检查名称;
6、点击确定;
7、回到属性界面,选中Authenticated Users,点击应用。
此方法是将安全调到最低来解决的,不过还是非常好用哦。
19 程序填空题3 (5分)
参照输出样例补全以下程序,使程序输出结果与输出样例一致。
public class Main {
public static void main(String[] args) {
Son son = new Son();
son.method();
}
}
class Parent {
Parent() {
System.out.println(“Parent’s Constructor without parameter”);
}
Parent(boolean b) { System.out.println("Parent's Constructor with a boolean parameter"); } public void method() { System.out.println("Parent's method()"); } }
class Son extends Parent {
//补全本类定义
}
输入格式:
无
输出格式:
无
输入样例:
输出样例:
Parent’s Constructor with a boolean parameter
在现在的时代,网络已经成为家庭组成不可或缺的一部分,网络的发展速度越来越快,而我们对网络的稳定也越来越高的要求。而现在三大宽带运营商出厂的光猫基本上都自带路由功能也就是路由模式,以至于很多网友为了追求网络的稳定性想尽千方百计把路由模式改成桥接模式。
这里先说说路由模式和桥接模式的区别:桥接模式就是光猫只负责做转换光电信号的工作,不能直接转换成WiFi,并且需要自己手动拨号,所以还需要接上一个路由器来做拨号、分发内网IP地址,做NAT转换,这样才能形成WiFi。路由模式就是光猫直接拨号分发IP地址,一般运营商给你安装的时候,就已经替你自动拨好号了,无需自己在手动拨号,就能直接形成WiFi。这样就不用另一个路由器设备了,不过光猫的路由性能稳定通常比较差,覆盖范围也很小,管理功能也很好啊,做端口转发比较麻烦。
因为光猫的作用本来就是用来把光纤传输的光信号转化为数据信号,虽说单纯的转换光信号,是不需要光猫的太多的硬件资源,但如果在这基础上开启路由模式,无疑会大大加大它的工作量,导致负荷从而影响网络的稳定,甚至会加快光猫的使用寿命,这里顺便说一个点,如果家里光猫开启路由模式,而家里联网的设备过多很容易,引起光猫的死机。
而如果把光猫改成桥接模式,则需要加一个路由器,现在的无线路由器也分为2.4G 5G双频,每个都有单独的天线,不管是信号覆盖范围还是网络稳定,都比光猫自带的WiFi好上不少,还能有利于光猫的使用寿命,而且如果联网设备过多也,自行动用路由器的管理功能进行偷偷限制网速!
很多人会疑惑自己手机里面没下载多少软件呀,为什么内存还占了那么多,想要去手机储存空间里面看看能不能删除掉,却发现全是英文根本看不懂,到底代表什么?下面小编就带大家看看手机储存空间里面能删除的文件夹!
1、 DCIM 手机里面这个文件夹储存手机下载的视频以及图片的,里面的文件我们可以定期清理一下,从而可以大大缓解手机的内存空间!
2、 Tencent-QQfile_recv 这是QQ文件传输都文件夹,里面都文件都是通过QQ传输保存到手机上面的,基本上都是无用的,所以我们尽量将些文件夹给删除掉!
3、 Browser 里面有我们在浏览器里面下载的软件以及图片,里面的东西一些东西我们可以有选择性的删除一下!
4、 temp 这个文件夹里面储存的是临时文件夹,很多临时文件放在这里,用来收藏夹,浏览网页的临时文件,编辑文件等,里面的内容我们可以定时删除一下!
5、pictures 这里面保存了手机软件保存生成的图片文件,里面有很多不用的图片,有需要的可以直接删除掉!
6、 backup 这个文件夹里面存储着手机备份的文件,也就是对你手机里的通讯录,短信或其他数据文件进行备份以后,会保留在这个文件夹里
就比如我手机里面经常使用的【迅捷PDF转换器】APP,所有转换的文件备份都在这个文件夹里面,里面的备份文件如果你有什么不要的可以选择性删除掉!
7、Download 下载时保存的的一个文件夹,里面有很多软件安装包,是在下载时候保存在这个文件夹里面的,如果你安装了原软件的话可以直接删除掉,或者也可以留着备用!
除此之外像手机文件夹里面后缀为“apk”的文件是属于安装包文件;后缀为“.log”的文件是程序日志文件;后缀为“cache”的文件是临时缓存文件,这些文件都是可以直接删除的
(图文来源于网络,如侵权,请联系删除)
可能你还喜欢
1.2019年最落后的4种手机配置,用微信都卡,但愿你还没买
2.苹果iPhone的锁屏天气功能终于来了,但你知道怎么设置吗?
3.手机音量太小了?只需要打开这个开关,声音瞬间变大!
4.实拍:手机坚持不贴膜,一年后屏幕会怎样?看完你还贴膜吗?
5.人傻钱多的标配,这四款手机不要买,准吃亏!
链接:https://ac.nowcoder.com/acm/contest/9925/D
来源:牛客网
时间限制:C/C++ 1秒,其他语言2秒
空间限制:C/C++ 1048576K,其他语言2097152K
Special Judge, 64bit IO Format: %lld
题目描述
As a world-famous traveler, Prof. Pang’s research interest is to travel as many places as possible in his life.
We have a segment {[0, n]}. There are two travelers on it. The first one is on position p1 with velocity v1 (which means s/he can walk v1 unit on the segment per second). The second one is on position p2 with velocity v2.
openMV和单片机串口通信 前段时间用到openmv用到了串口通信,与PC通信还好,单片机之间通信就有小问题了,这几天有时间总结一下,做个笔记。
以下有三个要点:
1、波特率不要太小,默认的9600就别用了(个别机型也可能适用),建议115200。
2、openmv串口通信必须以字节为单位发送数据,否则单片机连串口接收中断都进不了(串口助手例外)。可采用以下函数:
data=bytearray([0x30]) #ascill码0x30对应字符0 uart.write(data) 3、单片机进入串口接收中断处理数据,数据大多以回车换行为结束符(0x0d,0x0a),所以最后别忘了连结束符一块发过去,顺序别颠倒,多数据连续发送时可以考虑采用恰当的帧格式保证数据的准确性。
data=bytearray([0x30,0x0d,0x0a]) uart.write(data)
VS2019 编译报错:“缺少此项目引用的NuGet程序包…” 错误提示: This project references NuGet package(s) that are missing on this computer. Use NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is XXXXXXXXX.
XXXXXXXXX代表缺少的那个文件。
被这个问题搞了一下午,头大呀!
参考资料: 缺少的文件是 …\packages\Microsoft.Net.Compilers.1.0.0\build\Microsoft.Net.Compilers.props。
看了这位仁兄的文章,才有了思路的,在此感谢!
用VS2019打开别人的C#工程的时候,总是提示,缺少某个版本的安装包,可是我在NuGet包管理中已经安装过对应的版本了(其实工程是自带的,我查看了一下版本),卸载后又重新安装,还是编译不过。然后就是,各种尝试…查资料…再尝试…
解决方案: 删除原工程.csproj文件中的关于某个安装包的所有信息,然后重新加载该工程,再编译,就通过了。
记录一下,希望能帮到遇到同样问题的小伙伴!
1.7
from scrapy.xlib.pydispatch import dispatcher from scrapy import signals dispatcher.connect(self.spider_closed,signals.spider_closed) #爬虫关闭时调用程序 2.4.1
from pydispatch import dispatcher from scrapy import signals dispatcher.connect(self.spider_closed,signals.spider_closed) #爬虫关闭时调用程序
每天接话总有用户要桥接改路由,路由改桥接,改完要提醒重设路由器,否则就要重复呼入,可是怎么设置呢?到底哪个模式更好呢? 小万别着急。今天,我们就来学习一下光猫连接,不同模式下路由器的设置方法。
设置路由器可分为3步
1、线路连接
我们日常的培训中不乏各种网络连接示意图,这里我就不再赘述。只提醒一点,光猫网口(LAN口、网口1、百兆口)接出来的网线连接路由器的WAN口,路由器的网口(LAN口)接出来的网线连接电脑,通过这台电脑来设置路由器。
2、登录设置界面
在浏览器中输入路由器的IP,一般是192.168.1.1(路由器的厂家不同,登录IP也可能不同,具体需以说明书或路由器底部标注为准)。打开登录界面,输入登录账号及密码一般是admin,123456(具体以路由器说明书为准),点击确认。
页面自动跳转到路由器的设置界面,如图:
流程就是如此顺畅!可能你会疑问,为什么用户总是找不到自己路由器的设置界面呢?
可能的原因有:
1、IP地址、账号及密码错误,用户的路由器IP、登录账号及密码需要以说明书或路由器底部标注为准;
2、可能用户登录了电信的光猫设置界面,因为光猫的IP默认也为192.168.1.1(缘,妙不可言);解决方法:把猫连接路由的网线拔了,对,你没有听错,就是不要接光猫了,电脑仅连接路由器是可以设置路由器的。
3、设置
我们先来简单过一下桥接模式光猫的路由器设置步骤,找到 “设置向导”-“下一步”-选择“PPPOE”,“下一步”-输入上网账号和密码(电信宽带账号及密码),点击“下一步”-“无线安全选项”中选择“wpa-psk/wpa2-psk”(打开无线),输入WIFI密码-“下一步”-“重启”完成路由器设置,如图。如果你对这个操作很熟悉了,可以看的快一点。
向右滑动查看截图
接下来,我们再看一下路由模式光猫设置路由器的步骤,找到 “设置向导”-“下一步”-选择“动态IP”-“下一步”-“无线安全选项”中选择“wpa-psk/wpa2-psk”(打开无线),输入WIFI密码-“下一步”-“重启”。
向右滑动查看截图
是不是觉得设置比桥接模式的还简单。
对!因为没有账号和密码。
为区分路由器和光猫(避免设备IP冲突),我们还需将路由器的IP进行修改。点击“网络参数”下的“LAN口设置”,在IP地址中将原有192.168.1.1改为192.168.2.1-“保存”-“重启”完成IP的修改。(当然,如果路由器IP非192.168.1.1可以不做此步操作。)
总结一下两种模式设置路由器的区别点:路由模式,设置前拔光猫,设置时选“动态IP”,设置后改路由器IP。桥接模式,……(你懂的,可以考考寄几,哈哈)
光猫厂商将光猫附加路由功能、无线信号无非是想完成光猫本身的进阶,使光猫的连接更便捷,功能更强大。
桥接模式和路由模式并没有本质的优劣,只是方式的不同,希望小伙伴们通过本次的分享可以对不同模式下设置路由器的方式有所掌握,为用户提供更优质的服务,我们一同继续努力!
投稿丨话务运营故障专席 丁方
万号翼家公众号
万号翼家是万号大学同学们展现青春风采,也是传递万号人正能量的平台。