VM虚拟机上linux网络问题 初心
对虚拟机不太熟悉的同学相信都会遇到连不上网络这个问题吧,我也遇到过,但被我通过上网查资料解决了,我运气也比较好吧,一查就查到了根本原因,但有些同学可能会遇到各种回答,能把你绕晕那种,又无法解决你的问题,又无奈,又沮丧。
抱着遇到问题就必须做一哈笔记的心,我也写一个针对vm虚拟机上的linux连接不上网络问题的简单操作回答,希望能加深自己的映像和加强自己以后遇到类似解决问题的能力,献丑了!
愿望
希望能帮助有需要的同学,我们共同进步,共勉!!!
有不足的地方请指教!!!
若有其他问题,可以留言,愿意与你一起解决你遇到的问题。
文章以图片形式,简单粗暴细致
正文 关闭连不上网络的虚拟机!!!
点击上方“编辑”,下拉列表中选中“虚拟网络编辑器”
开始上图:
1、Windows、Office等微软原版镜像下载:https://msdn.itellyou.cn/
2、V2EX:科技宅/程序员,新奇想法聚集地:https://www.v2ex.com/
3:计算机书籍控:汇总各类编程语言的pdf书籍下载:
http://bestcbooks.com/
4:最新版迅雷发布站:http://yangtai.xunlei.com/
5、有趣网址之家:汇集上千个有趣网站:https://youquhome.com/
6、书格:提供大量古籍免费下载的网站:
http://pc.shuge.org:8888/
7、不会百度吗?动图链接生成站:
http://buhuibaidu.me/
8、苦瓜书盘:免费电子书下载站:
https://kgbook.com/
9、免费论文下载站:
http://lib.cust.edu.cn/webs/list/notice/723.html
10、收录上万个国内外网站的导航站:
http://www.egouz.com/
11、小视频解析下载站:
http://downfi.com/video/
12、BOOK ZZ国外的一个免费书籍下载站:http://zh.b-ok.xyz/
13、查看国内影视作品拍摄备案的网站:
http://www.sapprft.gov.cn/sapprft/channels/10564.shtml
14、高质量百度网盘资源搜索站:www.aisouziyuan.com
15、稿定抠图:在线免费抠图网站:
https://www.gaoding.com/koutu
16、Windows 绝赞应用是一个汇总Windows平台上一些良心软件的网站,目前汇集软件上百个,均将流氓类软件排除在外。地址:https://amazing-apps.gitbooks.io/windows-apps-that-amaze-us/content/zh-CN/
17、好读:电子书下载站:
http://www.haodoo.net
18、优品PPT是是一家专注于分享高质量的免费PPT模板下载网站。包括PPT图表、PPT背景图片、PPT素材、PPT教程等各类PPT资源。地址:http://www.ypppt.com/
19、谷歌浏览器crx插件下载站:
https://www.crx4chrome.com
20、simpledesktops:简约电脑壁纸网站:
http://simpledesktops.com/
21、ape8是一个专门致力于提供国内外无损音乐下载的网站,网站提供的音乐都可以进行免费下载,值得收藏。地址:http://ape8.com
22、文言文、白话文互译站:
https://fanyi.baidu.com
23、视频鱼是一个视频解析站,支持BiliBili、AcFun、优酷网、腾讯视频、微博秒拍、搜狐、乐视、百度视频、土豆网、芒果tv、凤凰视频、新浪视频、56、酷6、央视网、天天看看、网易视频、百度贴吧、爆米花网、Dilidili、豆瓣、斗鱼、熊猫、风行网、爱奇艺、激动网、秒拍、PPTV、企鹅直播、战旗等,输入地址即可获取下载地址。地址:http://www.shipinyu.cn/
24、W3School 是一个不以盈利为目的的编程教程网站,当然教程主要是网页编程类的,从基础的 HTML 到 CSS,乃至进阶的 XML、SQL、JS、PHP 和 ASP.NET,教程完全免费。地址:http://www.w3school.com.cn/
25、SooPAT提供国内外专利检索与下载服务:http://www.soopat.com
26、正版行业标准下载站:http://www.gb688.cn/bzgk/gb/index
27、无损音乐吧也是一个分享无损音乐专辑的网站,提供百度网盘免费下载,目前网站已收录上万首歌曲。地址:http://www.dtshot.com/
28、飘花电影网主要收集电影下载,网站资源挺全,迅雷下载即可。地址:https://www.piaohua.com/
29、粤视频是一个专门分享粤语影视剧的网站,提供在线观看,体验还不错,资源也挺全。地址:http://www.yuesp.com
30、田鸡影院:在线观影站:http://www.tianjiyy123.com/
31、迅雷仓主要分享720P,乃至4K高清电影下载的网站,资源挺全,还有左右3D格式电影。地址:http://www.xunleicang.com/
32、麦克周是一个资源论坛,主要分享电影、电视剧、无损音乐,提供免费下载,相当不错。地址:https://mcchou.com
33、阳光电影是个老网站了,网站虽说界面简陋,但资源丰富,提供资源免费下载。地址:http://www.ygdy8.com/
34、八零电子书是专业提供玄幻,言情,武侠,历史,网游,科幻,恐怖,文学,名著,经管,励志,传记,法律,教育,外国名著等全本小说免费下载的网站,资源很新,下载畅通无套路。地址:https://www.80txt.com/
35、世界数字图书馆是联合国与上百个国家联合创办的公益性质书籍分享网站,书籍均提供扫描版免费下载,涵盖了193个国家近20000多书籍资料,涵盖公元前 8000 年至 2000年世界范围内的文库,值得收藏。地址:https://www.wdl.org/zh/
36、PhotoFunia是一个在线编辑照片的网站,里面有各种各样的图片特效,由于是国外网站,所以慢一些,但是确实好玩。地址:http://photofunia.com/
37、百度搜索风云榜以数亿网民的每日搜索行为作为数据基础,建立权威全面的各类关键词排行榜,引领热词阅读时代。各个类别的数据热点都能看到。地址:http://top.baidu.com/
38、百度识图做的也是挺不错的,识图就是上传图片,找到其在互联网里出现的蛛丝马迹,常用来找电影出处或者原图。地址:http://image.baidu.com/?fr=shitu
39、腾讯位置大数据主要是汇集国内热门景点热力图、人口迁徙图等大数据,以地图图像形式展示,非常有意思。地址:https://heat.qq.com
40、百度指数主要统计某事件或者人物的热度趋势,按照时间,包括媒体热度、资讯指数等。地址:http://index.baidu.com/
41、掘金社区也是一个小众社区,主要是分享编程技术,开发者交流的网站,里面干货教程很多,经验交流也很多,很好的网站,各种编程语言都会涉及到。地址:https://juejin.im/
42、绿色软件分享站:https://www.portablesoft.org/
43、Photopea是国外一个独立开发者开发的网页版PS,与PS界面基本一致,直接在线运行,完全免费,功能也是挺多的,部分地区网络可能无法访问。地址:https://www.photopea.com/
44、uwp应用分享站,适用于win8和win10:https://uwp.cn/
报错信息: 开发反馈富文本内容太多,发送post请求,Nginx会返回如下报错
<html> <head> <title>414 Request-URI Too Large</title> </head> <body bgcolor="white"> <center> <h1>414 Request-URI Too Large</h1> </center> <hr> <center>nginx/1.14.0</center> </body> </html> 解决方法: 原因是请求头的长度超出了nginx限制,http块需增加如下参数并reload Nginx。
client_header_buffer_size 512k; large_client_header_buffers 4 512k; 再次请求Tomcat 或 spring boot会报如下错误: java.lang.IllegalArgumentException: Request header is too large 因为请求头超过默认的head大小限制,需调大参数
tomcat 在server.xml中增加maxHttpHeaderSize
<Connector connectionTimeout="20000" port="8080" protocol="HTTP/1.1" redirectPort="8443" maxPostSize="0" maxHttpHeaderSize ="102400"/> spring boot 在application.properties文件中添加 server.max-http-header-size
server.max-http-header-size=102400 转载于:https://www.cnblogs.com/fsckzy/p/10583985.html
最近总觉得系统用起来很卡,一看任务管理器发现win10磁盘占用率接近100%,而且在任务管理器中也关不掉,然后百度了一下,发现可能是家庭组导致,结果还真是,下面给出解决方法:
服务-》HomeGroup Listener和HomeGroup Provider-》右键属性改为禁用,完美解决。
如果还是占用高,尝试
1.控制面板–管理工具–服务- Windows Search禁用。
2.控制面板–管理工具–服务– Superfetch -启动类型–自动(延迟启动)
只要在jsp页面需要打断点的地方加上一句话即可
debugger 效果如下:
具体看代码可以按f12一行一行调试
今天angularjs的网站突然加载报错,提示Refused to execute script from 'https://cdnjs.com/' because its MIME type ('text/html') is not executable, and strict MIME type checking is enabled
后查看引用的//cdn.bootcss.com/require.js/2.1.11/require.min.js 无法打开。
解决方法:把所有 cdn.bootcss.com替换成cdnjs.cloudflare.com/ajax/libs
转载于:https://www.cnblogs.com/wsprince/p/10577939.html
**前情:**公司的一个产品涉及到硬件交互,选用了mqtt协议,于是乎经过一番技术选型。我用emq做mqtt broker,又撸了一个mqtt消息处理服务(A)。
这个A服务用了spring-integration,spring框架集成spring-integration自然是so easy。又花了点时间用策略设计模式写好了A服务的业务框架,接下来就是堆业务逻辑了。
**问题:**自己做压力测试的时候,发现经常会报ERROR,MQTT(32202): 正在发布过多的消息,研究了一下发现在paho源码里有如下代码:
if (message instanceof MqttPublish) { synchronized (queueLock) { if (actualInFlight >= this.maxInflight) { //@TRACE 613= sending {0} msgs at max inflight window log.fine(CLASS_NAME, methodName, "613", new Object[]{new Integer(actualInFlight)}); throw new MqttException(MqttException.REASON_CODE_MAX_INFLIGHT); } 注意maxInflight这个值,默认是10,也就是说,在使用paho发送mqtt消息时,同时只能发10个,你要是多起几个thread循环往mqtt client里怼消息,很容易就超过10个了,这个时候就会报错丢消息。
解决方案:
增大maxInflight(最低需要paho1.2.0版本)对paho源码修改配置多个mqtt client 我选用第三种办法。由于我选用了spring-integration,没有单独使用paho,单独使用paho可以直接做成多client模式。下面介绍如何使用spring-integration配置成多mqtt client,**思路是:**由于mqttMessageHandler只会引用一个paho客户端,并且在内部对paho客户端做了封装,所以直接修改MqttPahoMessageHandler复杂度较高,我们可以重新写一个MultiMqttMessageHandler,内部初始化多个MqttPahoMessageHandler,这样通过MessageingGateway发送消息时,直接通过MultiMqttMessageHandler来处理mqtt消息,MultiMqttMessageHandler可以通过负载均衡的方式来把消息分派给各个MqttPahoMessageHandler。
自定义MyMqttPahoMessageHandler类,继承MqttPahoMessageHandler,重写MqttPahoMessageHandler的doStop(),onInit(),handleMessageInternal()方法,注意权限由protected改成public。handleMessageInternal()会由channel通过dispatcher间接调用;重写onInit()用来手动初始化MqttPahoMessageHandler。
@Override public void doStop() { super.doStop(); } @Override public void handleMessageInternal(Message<?> message) throws Exception { super.handleMessageInternal(message); } @Override public void onInit() { try { super.
题目链接
题意:
给你n个串,让你找出最长的串s,使得这n个串都不是s的子串。串只由0,1组成
如果串可以是无穷长,输出-1
解析:
一开始看的时候没有怎么深入想,后来赛后看了题解。发现是ac自动机,后来看自己以前做的ac自动机的题目,
发现有做到过类似的....都是给你n个串,让你构造不包含这个n个串的一个串。
这道题构造出ac自动机,你在ac自动机上跑就可以了。
一开始还没搞清楚ac自动机的两个版本的区别——空孩子(字符表示为c)不指向null,指向父节点的fail指针的那条链上,
第一个孩子节点字符表示为c的孩子节点 和空孩子直接指向null的版本。
这道题你要用第一个空孩子不指向null的版本,因为当你匹配串时,进入了一个空孩子,这并不是代表串可以无穷了
,因为后面的串可能还会包含n个串里面的某一个,所以就需要继续去匹配。我一开始就是这里没搞清楚一直再WA
那怎么判断串可以无穷呢,就是成环。你从一个节点往下dfs,最后又回到这个点,那么说明就成环了。这个你用vis[]
标记一下就可以了。不过我这里一开始这样写T了。因为有两个地方写得太LJ了。
1.一个是在x,需要往下遍历他的孩子时,首先要判断当前状态+他的孩子会不会包含一个串的结尾。所以就需要从他的孩子
的fail出发,一直到root,如果中间有碰到一个点是串的结尾(end>0)说明会有这种情况,那么这个孩子就不能遍历了。
我这里是dfs的时候,判断一遍孩子,就遍历一遍他的fail链,其实这个完全可以在构造点的fail链的时候通过递推传递到每一个点
这样,dfs的时候只需要O(1)判断当前孩子的end>0就可以了
2.在记录答案字符串的时候,我写的是每当你可以往下走,并且长度>len,那么就重新把当前表示的字符串赋给答案字符串。
这样的话,如果答案串的长度为2e5,那么在找答案串的过程中,长度每+1,那么就需要重新复制一遍,复杂度就为O(n*(n-1)/2)
=O(n*n)。。。。。。。后来发现这里写傻了..我改成每到一个点,他不能再往下遍历了,并且长度>len,就把串赋给答案串
这样复杂度会好一点。
网上看到大佬用dp数组来存的,就完全没有这种问题。当dfs一遍后,dp数组算出来,只要从dp根节点出发,
dp[son[x][i]]+1==dp[x]就输出i,往son[x][i]这边走。
其实我后面写的那个vis[x]记录从x点出发,最多能得到的串的长度的版本从也是跟dp那个类似的,这个版本我还加了剪枝。
#include<iostream> #include<cstdio> #include<cstdlib> #include<set> #include<cstring> #include<cmath> #include<queue> #include<algorithm> using namespace std; //const int N = 1e3+100; const int MAX = 3e5+100; const int C = '0'; const int NUM = 2; struct Tree//字典树 { int fail;//失配指针 int vis[NUM];//子节点的位置 int end;//标记有几个单词以这个节点结尾 int id; }AC[MAX];//Trie树 set<int> res; int cnt=0;//Trie的指针 int newnode() { ++cnt; AC[cnt].
var pageIndex = '2-2' strHtml='<img class="back" '+'onclick="goBack(\''+pageIndex+'\')" src=img/icon_back.png"/>' strHtml='<img class="back" '+'onclick="goBack(\'2-2\')" src="img/icon_back.png"/>' //打印结果 <img class="back" onclick="goBack('2-2')" src="img/icon_back.png"/>
1、概念: 单例模式(Singleton):又叫单态模式,它出现的目的是为了保证一个类在系统中只有一个实例,并提供一个访问它的全局访问点。即:为了可以保证系统中一个类只有一个实例而且该实例又易于外界访问,从而方便对实例个数的控制并节约系统资源而出现的解决方案;
2、应用场景: 2.1、有频繁实例化然后销毁的情况,也就是频繁的 new 对象,可以考虑单例模式;
2.2、创建对象时耗时过多或者耗资源过多,但又经常用到的对象;
2.3、频繁访问 IO 资源的对象,例如数据库连接池或访问本地文件;
3、线程安全的单例模式 3.1 静态内部类模式:
public class Singleton{ // 无参构造器 private Singleton(){ } // 静态内部类 private static class Innerclass{ private static final Singleton SINGLETON = new Singleton(); } public Singleton getInstance(){ return Innerclass.SINGLETON } } 3.2 双重检查锁:
public class Singleton{ // 静态可见的实例 private static volatile Singleton instance = null; // 无参构造器 private Singleton(){} public Singleton getInstance(){ if(instance == null){ synchronized(Singleton.class){ if(instance == null){ instance = new Singleton(); } } } return instance ; } } 4、五种单例示例
jcaptcha是做图片验证码的,主要说下在springboot 里面的使用方法.
pom.xml里面的配置
xml
<dependency>
<groupId>com.octo.captcha</groupId>
<artifactId>jcaptcha</artifactId>
<version>1.0</version>
</dependency>
两个java类
CaptchaService 处理图片
import com.octo.captcha.component.image.backgroundgenerator.GradientBackgroundGenerator; import com.octo.captcha.component.image.color.SingleColorGenerator; import com.octo.captcha.component.image.fontgenerator.RandomFontGenerator; import com.octo.captcha.component.image.textpaster.NonLinearTextPaster; import com.octo.captcha.component.image.wordtoimage.ComposedWordToImage; import com.octo.captcha.component.word.wordgenerator.RandomWordGenerator; import com.octo.captcha.engine.GenericCaptchaEngine; import com.octo.captcha.image.gimpy.GimpyFactory; import com.octo.captcha.service.captchastore.FastHashMapCaptchaStore; import com.octo.captcha.service.image.DefaultManageableImageCaptchaService; import com.octo.captcha.service.image.ImageCaptchaService; import java.awt.*; public class CaptchaService { private static class SingletonHolder { private static ImageCaptchaService imageCaptchaService = new DefaultManageableImageCaptchaService( new FastHashMapCaptchaStore(), new GenericCaptchaEngine( new GimpyFactory[]{new GimpyFactory( new RandomWordGenerator("123456789ABCE"), new ComposedWordToImage( new RandomFontGenerator(20, 20, new Font[]{new Font("Arial", 20, 20)}), new GradientBackgroundGenerator(90, 30, new SingleColorGenerator(new Color(235, 255, 255)), new SingleColorGenerator(new Color(255, 195, 230))), new NonLinearTextPaster(4, 4, new Color(11, 11, 11)) ) )} ), 180, 180000, 20000 ); } private CaptchaService() { } public static ImageCaptchaService getInstance() { return SingletonHolder.
从搭建集群和使用集群…
进过不少坑……
对常用命令做一下笔记…
常用查看命令 查看主机情况qhost -q
BIP 正常
E 错误状态
a 警告(a generic indicator of badness)
u 无法连接
d 被管理员设置无法使用
可以通过下列方法对某个队列上的的节点进行操作
清除错误 qmod -c all.q@cca-train02设置节点不可用 qmod -d all.q@cca-train02设置节点可用 qmod -e all.q@cca-train02重启节点,详细操作见后 查看进程运行情况qstat -f
状态码详细信息r正在执行t把节点跑死了,若长期处于 t 状态请杀掉该进程,占用大量资源s被暂时挂起,往往是由于优先级更高的job抢占了资源dr/dt节点挂了之后,删除任务会出现这个状态,只有节点重启任务才会消失qw正在等待,一旦有计算资源会马上执行Eqwjob的提交产生错误hqw该job依赖于其它正在执行的job,待前面的job执行完毕后再开始执行qstat -f 结果中的states
(a)larm, (u)nreachable, (E)rror state
(au) whenever: - A node is down - A node is hung/frozen - Network problems
遇到错误状态怎么办?
查看某一个任务的详细情况,找到错误
qstat -j <job-id>
qalter -w v job-id
将某个队列从错误状态转变回正常状态
qmod -c all.
目录 1 前言2 正文2.1 业务中需要在多个地方监听下载,怎么办?2.2 在列表中监听下载的进度,进度回调过于频繁,导致界面刷新太多,怎么办?2.3 项目中可以设置最大线程数,可以调整这个值后,怎么没有效果?2.4 已经暂停的任务,为什么还继续回调?2.5 想要把下载回调信息,展示在通知栏中,怎么办?2.6 同一个下载 url,多次下载,对应的下载 id 还一样吗?2.7 怎样查看 FileDownloader 的日志呢? 3 最后 1 前言 前段时间,使用流利说的 FileDownloader,来实现视频下载器 app 的多任务下载的功能。在开发过程中,查看了不少官方的 issue,觉得有必要记录一下,希望能够加快大家集成的进度。
2 正文 导入方式,初始化的知识可以查看官方的文档。官方文档有中文版的,可以多看几遍,发现有用的 API。这里记录一下几个解决的问题:
2.1 业务中需要在多个地方监听下载,怎么办? 可以查看 https://github.com/lingochamp/FileDownloader/issues/4,作者给出了一个解决办法:思路是通过第三方DownloadManager将FileDownloadTask从界面中解耦出来。
当然,如果项目中使用了 EventBus 的话,可以使用 EventBus 把下载回调信息发出去,在其他页面在通过设置 EventBus 的接收事件方法就可以了。
2.2 在列表中监听下载的进度,进度回调过于频繁,导致界面刷新太多,怎么办? 可以查看 https://github.com/lingochamp/FileDownloader/issues/932。
作者给出了详细的解释:progress 的回调由回调时间间隔和回调次数共同控制。对应的 API 是 BaseDownloadTask#setCallbackProgressMinInterval(int) 和 BaseDownloadTask#setCallbackProgressTimes(int)。
2.3 项目中可以设置最大线程数,可以调整这个值后,怎么没有效果? 比如,设置最大线程数为 3,现在开启 5 个任务,那么应该有 2 个处于等待状态。但实际上却不是。
可以查看 https://github.com/lingochamp/FileDownloader/issues/677。
作者的解释是:FileDownloader.getImpl().setMaxNetworkThreadCount(1)需要在 当前运行队列为空并且下载服务已经启动并绑定的情况下。
可以看到需要满足两个条件:1,当前运行队列为空;2,下载服务已经启动并绑定。
那么怎么办呢?
可以查看 https://github.com/lingochamp/FileDownloader/issues/320。
代码如下:
FileDownloader fileDownloader = FileDownloader.
由于记不清 代码参考的出处,如有侵权,请联系删除。
/* * FFMPEG DRM/KMS example application * Jorge Ramirez-Ortiz <jramirez@baylibre.com> * * Main file of the application * Based on code from: * 2001 Fabrice Bellard (FFMPEG/doc/examples/decode_video.c * 2018 Stanimir Varbanov (v4l2-decode/src/drm.c) * * This code has been tested on Linaro's Dragonboard 820c * kernel v4.14.15, venus decoder * ffmpeg 4.0 + lrusacks ffmpeg/DRM support + review * https://github.com/ldts/ffmpeg branch lrusak/v4l2-drmprime * * Copyright (c) 2018 Baylibre * * Licensed under the Apache License, Version 2.
有时候训练过程中想要打印某一可训练参数的值,查看训练效果,可以使用如下方法
import tensorflow as tf with tf.name_scope('A'): var = tf.Varable(initial_value = tf.zeros([3,3]), name = 'var') with tf.Session() as sess: varvar = sess.graph.get_tensor_by_name('A/var:0') print(sess.run(varvar)) 如果不确定变量var的name,也可以用下面的方法获得
with tf.Session() as sess: for v in tf.trainable_variables(): print(v.name)
TensorFlow的 matmul 已经支持了batch,对于高维向量的相乘(比如两个三维矩阵),tensorflow把前面的维度当成是batch,对最后两维进行普通的矩阵乘法。也就是说,最后两维之前的维度,都需要相同。比如 A.shape=(a, b, n, m),B.shape=(a, b, m, k),tf.matmul(A,B) 的结果 shape=(a,b,n,k)
有时候需要一个矩阵与多个矩阵相乘,也就是一个 2D Tensor 与一个 3D Tensor 相乘,比如 A.shape=(m, n),B.shape=(k, n, p),希望计算 A*B 得到一个 C.shape=(k, m, p) 的 Tensor,可以采取的思路为:
B transpose(B,[1,0,2]),(n,k,p),维度交换B reshape(B,[n,k*p])C=AB (m,kp)C reshape(c,[m,k,p])C transpose(C,[1,0,2]),(k,m,p),维度交换 可以看下面一个例子(c为标准答案,g为最后的正确结果,e是错误的):
import tensorflow as tf a = tf.reshape(tf.linspace(1.,6.,6),[2,3]) b = tf.reshape(tf.linspace(1.,24.,24),[2,3,4]) c = tf.matmul(tf.tile(tf.expand_dims(a,0),multiples=[2,1,1]),b) d = tf.matmul(a,tf.reshape(b,[3,2*4])) e = tf.reshape(d,[2,2,4]) f = tf.transpose(b,[1,0,2]) g = tf.matmul(a,tf.reshape(f,[3,-1])) g = tf.reshape(g,[2,2,4]) g = tf.transpose(g,[1,0,2]) with tf.
Node.js 以单线程的模式运行,使用事件驱动来处理异步 IO 并发(底层是多线程的线程池)。
然而,要是 Node 运行在一个多核 CPU 上,如何让 Node 充分利用多核的优势,并行地处理任务?我们可以使用多进程。由于 Node 的单线程特性,开启多进程后,Node 也获得多线程的执行能力。
Node 提供了 child_process 模块来创建子进程:
const child_process = require("child_process"); /* Use exec. */ for (let i = 0; i < 3; i++) { /* child_process.exec(command[, options], callback) */ /* callback <Function> called with the output when process terminates. */ const childProcessorExec = child_process.exec("node child.js " + i, function(error, stdout, stderr) { if (error) { console.error(`exec error: ${error}`); return; } /* ES6 template literal */ console.
1.对已知影像或者要素必须进行准确的定义投影信息,以albers等面积圆锥投影,参数如下表,克拉克椭球体,转换成西安80椭球体,albers投影,中央经线105度,双纬线不变。
2.查看属性获取要素的投影信息。
3.因为本元素直接有投影信息,所以不需要进行定义投影了,直接进行转换即可,选择2投影。
4.找到albers等面积圆锥投影栏,但是这个时候是在WGS84椭球体下面的,虽然没有西安80的椭球体,但是可以自己定义一个西安80。
5.进行投影变换,就可以了。
今天是3月8号,是传统佳节二月二,也是国际三八妇女节,也是我们曙光公司2018年的年会。现场非常的震撼,激动万分,我作为曙光人也非常的自豪。回想2014年公司上市的时候,提出三年实现百亿的年度销售目标,而今在2018年终于实现了,这是一个小小的里程碑,是23年来曙光人不懈奋斗的结果。今天大家欢聚一堂,3000多曙光人从全国各地,甚至从海外中心,一起共赴北京,相聚在美丽的雁栖湖畔,一起为庆祝阶段性的百亿目标而欢呼。大家在庆祝之余,也感受到了未来的机遇和挑战,那就是真正的自主可控、真正的民族信息产业的核心技术之一,芯片。海光CPU已经正式面世,即将在未来三年里实现飞速发展,这对于曙光,对于国家来说,都是难得的机遇,我们一定要抓住历史给予我们的重担,在未来的信息化全面自主可控的目标下不断前行。
我在曙光奋斗了6个年后,即将开始第7个年头的工作,曙光给我们员工提供了巨大的展示舞台,我们也把青春都奉献给了曙光。未来,我愿意继续为曙光付出汗水,为自己也为企业做出更大的贡献。希望曙光能越来越好,早日实现百万片的国产CPU销售目标,振兴民族的信息产业。
曙光,我为你骄傲;曙光,我为你自豪;曙光,我愿意与你携手,追逐属于我们的曙光梦。
附年会照片,供大家欣赏。
点击上方蓝色字体,选择“置顶公众号”
优质文章,第一时间送达
当在10亿数据中只需要进行10几次比较就能查找到目标时,不禁感叹编程之魅力!人类之伟大呀! —— 学红黑树有感。
终于,在学习了几天的红黑树相关的知识后,我想把我所学所想和所感分享给大家。红黑树是一种比较难的数据结构,要完全搞懂非常耗时耗力,红黑树怎么自平衡?什么时候需要左旋或右旋?插入和删除破坏了树的平衡后怎么处理?等等一连串的问题在学习前困扰着我。如果你在学习过程中也会存在我的疑问,那么本文对你会有帮助,本文帮助你全面、彻底地理解红黑树,面试官放马过来!
本文将通过图文的方式讲解红黑树的知识点,并且不会涉及到任何代码,相信我,在懂得红黑树实现原理前,看代码会一头雾水的,当原理懂了,代码也就按部就班写而已,没任何难度。
阅读本文你需具备知识点:
二叉查找树
完美平衡二叉树
关于红黑树的知识面试经常问,本文作者是安卓大叔,欢迎点击阅读原文关注作者的简书。事不宜迟,让我们进入正题吧。
正文 红黑树也是二叉查找树,我们知道,二叉查找树这一数据结构并不难,而红黑树之所以难是难在它是自平衡的二叉查找树,在进行插入和删除等可能会破坏树的平衡的操作时,需要重新自处理达到平衡状态。现在在脑海想下怎么实现?是不是太多情景需要考虑了?啧啧,先别急,通过本文的学习后,你会觉得,其实也不过如此而已。好吧,我们先来看下红黑树的定义和一些基本性质。
红黑树定义和性质 红黑树是一种含有红黑结点并能自平衡的二叉查找树。它必须满足下面性质:
性质1:每个节点要么是黑色,要么是红色。
性质2:根节点是黑色。
性质3:每个叶子节点(NIL)是黑色。
性质4:每个红色结点的两个子结点一定都是黑色。
性质5:任意一结点到每个叶子结点的路径都包含数量相同的黑结点。
从性质5又可以推出:
性质5.1:如果一个结点存在黑子结点,那么该结点肯定有两个子结点
图1就是一颗简单的红黑树。其中Nil为叶子结点,并且它是黑色的。(值得提醒注意的是,在Java中,叶子结点是为null的结点。)
图1 一颗简单的红黑树
红黑树并不是一个完美平衡二叉查找树,从图1可以看到,根结点P的左子树显然比右子树高,但左子树和右子树的黑结点的层数是相等的,也即任意一个结点到到每个叶子结点的路径都包含数量相同的黑结点(性质5)。所以我们叫红黑树这种平衡为黑色完美平衡。
介绍到此,为了后面讲解不至于混淆,我们还需要来约定下红黑树一些结点的叫法,如图2所示。
图2 结点叫法约定
我们把正在处理(遍历)的结点叫做当前结点,如图2中的D,它的父亲叫做父结点,它的父亲的另外一个子结点叫做兄弟结点,父亲的父亲叫做祖父结点。
前面讲到红黑树能自平衡,它靠的是什么?三种操作:左旋、右旋和变色。
左旋:以某个结点作为支点(旋转结点),其右子结点变为旋转结点的父结点,右子结点的左子结点变为旋转结点的右子结点,左子结点保持不变。如图3。
右旋:以某个结点作为支点(旋转结点),其左子结点变为旋转结点的父结点,左子结点的右子结点变为旋转结点的左子结点,右子结点保持不变。如图4。
变色:结点的颜色由红变黑或由黑变红。
图3 左旋
图4 右旋
上面所说的旋转结点也即旋转的支点,图4和图5中的P结点。左旋只影响旋转结点和其右子树的结构,把右子树的结点往左子树挪了。右旋只影响旋转结点和其左子树的结构,把左子树的结点往右子树挪了。
所以旋转操作是局部的。另外可以看出旋转能保持红黑树平衡的一些端详了:当一边子树的结点少了,那么向另外一边子树“借”一些结点;当一边子树的结点多了,那么向另外一边子树“租”一些结点。
但要保持红黑树的性质,结点不能乱挪,还得靠变色了。怎么变?具体情景又不同变法,后面会具体讲到,现在只需要记住红黑树总是通过旋转和变色达到自平衡。
balabala了这么多,相信你对红黑树有一定印象了,那么现在来考考你:
思考题1:黑结点可以同时包含一个红子结点和一个黑子结点吗? (答案见文末)
接下来先讲解红黑树的查找热热身。
红黑树查找 因为红黑树是一颗二叉平衡树,并且查找不会破坏树的平衡,所以查找跟二叉平衡树的查找无异:
从根结点开始查找,把根结点设置为当前结点;
若当前结点为空,返回null;
若当前结点不为空,用当前结点的key跟查找key作比较;
若当前结点key等于查找key,那么该key就是查找目标,返回当前结点;
若当前结点key大于查找key,把当前结点的左子结点设置为当前结点,重复步骤2;
若当前结点key小于查找key,把当前结点的右子结点设置为当前结点,重复步骤2;
如图5所示。
图5 二叉树查找流程图
非常简单,但简单不代表它效率不好。正由于红黑树总保持黑色完美平衡,所以它的查找最坏时间复杂度为O(2lgN),也即整颗树刚好红黑相隔的时候。能有这么好的查找效率得益于红黑树自平衡的特性,而这背后的付出,红黑树的插入操作功不可没~
红黑树插入 插入操作包括两部分工作:一查找插入的位置;二插入后自平衡。查找插入的父结点很简单,跟查找操作区别不大:
从根结点开始查找;
若根结点为空,那么插入结点作为根结点,结束。
若根结点不为空,那么把根结点作为当前结点;
若当前结点为null,返回当前结点的父结点,结束。
若当前结点key等于查找key,那么该key所在结点就是插入结点,更新结点的值,结束。
若当前结点key大于查找key,把当前结点的左子结点设置为当前结点,重复步骤4;
若当前结点key小于查找key,把当前结点的右子结点设置为当前结点,重复步骤4;
如图6所示。
图6 红黑树插入位置查找