服务器调优

今天把以前的windows server 2003给覆盖了,在C盘地下安装了windows server 2008。安装好windows server 2008后,系统很多地方都需要设置。我就说下我遇到的一些问题吧,关于其他的一些小问题网上有,我在后面也贴出来了。 1.关于驱动的问题 安装windows server 2008后,驱动都没有安装,不能上网也不能听声音。在安装之前,最好先准备好相应的网卡驱动(只需要网卡驱动就可以,也许原本的驱动盘里面的驱动不兼容 windows server 2008),如果你不知道网卡具体型号,知道个大概也行,上驱动之家找。比如我只知道我的网卡是realtek系列的,我就先去下10几款realtek 系列的网卡驱动,适应系统最好是windows vista的,安装好2008后,就一款一款试吧,网卡驱动安装好以后(如果10几款都不行,只能怪人品,接着找),其他的驱动就用驱动工具安装(比如超级兔子)。 2.关于windows media player 11安装的问题 windows server 2008是自带media player 11的,有些阴影播放器或工具是基于media player服务的,但是它默认是不安装media player的。具体操作如下: 打开服务器管理器-->在功能摘要里面找到“添加功能”-->选择“桌面体验”,然后安装,安装好后重启,在开始菜单里面就有windows media player 11的安装向导了,看截图: 重启后就可以在开始菜单看到windows media player的安装了 3.关于ghost的问题 安装好windows server 2008,以及一些开发软件和一些常用软件后,我们常常会把装好的系统做个ghost备份(以防系统瘫痪,免得重装系统,重装软件)。我在装ghost时出现了一些问题:ghost备份完后,重启又接着ghost,无法进入到我我安好的2008系统中。 解决办法:重启时,按F8,选择进入windows server 2008,然后选择“计算机”-->“属性”-->“高级系统设置”-->选择“启动和故障恢复”-->选择里面的默认操作系统为“windows server2008”,顺便把”显示操作系统列表时间“给勾掉。 4.关于有些应用程序无法执行的问题 装好系统后,我想装一个酷我音乐盒(在此之前必须先装media player),系统提示”DEP帮助保护数据“,应用程序结束。 解决办法:”计算机“-->”属性“-->”高级系统设置“-->选择”高级“选项卡中的”性能“,然后点”设置“-->选择”数据执行保护“-->点击”添加“,添加你想排除DEP服务的应用程序。 5.文件缩略图的设置 原本我们用xp或win 2003时,文件查看都有缩略图选项,而windows server 2008里面没有,设置如下: 随便打开一个盘,找到”文件夹选项“-->选择”查看“选项卡,把”以缩略图形式显示文件夹“勾上,windows server 2008提供了以大图标的形式浏览文件,这样我们在浏览图片的时候以缩略 图的大图标形式浏览,看起来就非常舒服。 其他的一些设置就不说了,有什么问题网上也很容易搜到。 下面贴一些其他地方的设置: 原文: http://www.cnblogs.com/zhouxiaxue/archive/2008/11/07/1328733.html Windows 2008常用 优化设置 1.如何关闭UAC? 控制面板→用户帐户→打开或关闭用户账户控制→取消使用用户账户控制(UAC)帮助保护您的计算机。 2.如何取消开机按 CTRL+ALT+DEL登陆? 控制面板→管理工具→本地安全策略→本地策略→安全选项→交互式登陆:无须按CTRL+ALT+DEL→启用。 3.如何取消关机时出现的关机理由选择项? 开始→运行gpedit.msc →计算机配置→管理模板→系统→显示“关闭事件跟踪程序”→禁用。

typora专业写作要会的图片排版方法

<div align="center" > <img src="https://ss0.bdstatic.com/94oJfD_bAAcT8t7mm9GUKT-xh_/timg?image&quality=100&size=b4000_4000&sec=1567043374&di=06a84a5b828ba4f1db6b398a2f52ea95&src=http://hbimg.huabanimg.com/db8111b7a5c7b2935248a8e9bb9baa25266b60dbcc8ae-6fLBhf_fw658" style="width: 30%;display: inline;"/> <img src="https://ss0.bdstatic.com/94oJfD_bAAcT8t7mm9GUKT-xh_/timg?image&quality=100&size=b4000_4000&sec=1567043374&di=06a84a5b828ba4f1db6b398a2f52ea95&src=http://hbimg.huabanimg.com/db8111b7a5c7b2935248a8e9bb9baa25266b60dbcc8ae-6fLBhf_fw658" style="width: 30%;display: inline;" /> <img src="https://ss0.bdstatic.com/94oJfD_bAAcT8t7mm9GUKT-xh_/timg?image&quality=100&size=b4000_4000&sec=1567043374&di=06a84a5b828ba4f1db6b398a2f52ea95&src=http://hbimg.huabanimg.com/db8111b7a5c7b2935248a8e9bb9baa25266b60dbcc8ae-6fLBhf_fw658" style="width: 30%;display: inline;" /> </div> <div align="center"> <div style="display: inline-block;width: 40%;" > <img src="https://ss0.bdstatic.com/94oJfD_bAAcT8t7mm9GUKT-xh_/timg?image&quality=100&size=b4000_4000&sec=1567043374&di=06a84a5b828ba4f1db6b398a2f52ea95&src=http://hbimg.huabanimg.com/db8111b7a5c7b2935248a8e9bb9baa25266b60dbcc8ae-6fLBhf_fw658" style="width: 400%;display: block;height:100px;"/> <img src="https://ss0.bdstatic.com/94oJfD_bAAcT8t7mm9GUKT-xh_/timg?image&quality=100&size=b4000_4000&sec=1567043374&di=06a84a5b828ba4f1db6b398a2f52ea95&src=http://hbimg.huabanimg.com/db8111b7a5c7b2935248a8e9bb9baa25266b60dbcc8ae-6fLBhf_fw658" style="width: 400%;display: block;height:100px;" /> </div> <div style="display: inline-block;width: 40%;" > <img src="https://ss0.bdstatic.com/94oJfD_bAAcT8t7mm9GUKT-xh_/timg?image&quality=100&size=b4000_4000&sec=1567043374&di=06a84a5b828ba4f1db6b398a2f52ea95&src=http://hbimg.huabanimg.com/db8111b7a5c7b2935248a8e9bb9baa25266b60dbcc8ae-6fLBhf_fw658" style="width: 100%;display: block;;height:200px;" /> </div> </div> 结果:

使用vuex时,actions如何使用$nextTick

今天在完善仿卖座移动端项目的时候,因为获取影院的ajax在actions里面定义,因为数据量大,所以使用了better-scroll 之前是因为在影院组件里面直接写的ajax,所以$nextTick出现了判断的错误,如果变换了ajax的获取,它会存留上一次的最后的状态 所以我用了一个比较笨的办法,将组件里面的this直接传给state里面定义的一个变量,然后使用这个变量再调用$nextTick state: { vuethis: null }, mutations: { //获取this getVuethis(state, loop) { state.vuethis = loop } }, actions: { GetCinemas(store) { Indicator.open({ text: '加载中...', spinnerType: 'fading-circle' }); axios({ url: `https://m.maizuo.com/gateway?cityId=${store.state.cityID}&ticketFlag=1&k=1573618`, methods: 'get', headers: { 'X-Client-Info': '{"a":"3000","ch":"1002","v":"5.0.4","e":"15656848532164663517222"}', 'X-Host': 'mall.film-ticket.cinema.list' } }).then((res) => { store.state.CinemaData = res.data.data.cinemas Indicator.close(); //这里调用 store.state.vuethis.$nextTick(() => { new BScroll('.cinemas-scroll', { scrollY: true, scrollbar: true, }); }) }) } } 就可以正常使用了。如果还有更好的方式欢迎指出。。

springboot集成redis缓存

redis是一个key-value存储系统。和Memcached类似,它支持存储的value类型相对更多,包括string(字符串)、list(链表)、set(集合)、zset(sorted set --有序集合)和hash(哈希类型)。这些数据类型都支持push/pop、add/remove及取交集并集和差集及更丰富的操作,而且这些操作都是原子性的。在此基础上,redis支持各种不同方式的排序。与memcached一样,为了保证效率,数据都是缓存在内存中。区别的是redis会周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文件,并且在此基础上实现了master-slave(主从)同步。 废话不多说,今天我们来搭建一个简单的demo,实现redis存储数据 首先,我们使用idea搭建一个简单的springboot工程,其目录结构如图: 相信这个目录已经够简洁了哈,注意这里我们多写了一个utils工具类用来存放redis相关的操作方法以及配置。 工程创建OK了,我们添加相关依赖,web模块,mysql,mybatis,redis等几个依赖,因为这里我用到了代码生成器,所以也添加了generator插件,详细的pom配置文件如下: <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.1.3.RELEASE</version> <relativePath/> <!-- lookup parent from repository --> </parent> <groupId>com.example</groupId> <artifactId>demo02</artifactId> <version>0.0.1-SNAPSHOT</version> <name>demo02</name> <description>Demo project for Spring Boot</description> <properties> <java.version>1.8</java.version> </properties> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> <!-- Mysql驱动包 --> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <scope>runtime</scope> </dependency> <!--mybatis和tk.mybatis--> <dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis-spring-boot-starter</artifactId> <version>1.3.2</version> </dependency> <dependency> <groupId>redis.clients</groupId> <artifactId>jedis</artifactId> <version>2.9.0</version> </dependency> </dependencies> <build> <plugins> <plugin> <groupId>org.

connect ECONNREFUSED 127.0.0.1:80错误解决

这个报错也是一直困扰了我许久,服务端一直打印这个报错,但是页面数据响应又都正常,起初真不知道是因为什么原因,能看出来他是在调用80端口, 但是不明白为什么会调用80端口。一度以为是config.js里面配置问题,所以解决的思路就一直在考虑配置方面,端口等方面。 最后发现都没有效果,在网上也查了各种类似的报错问题,解决方案也都不在点子上。考虑到我的config配置都是按官方模板配置的,应该不会出问题,所以考虑到换个方向去解决。 最后突然想到之前了解过nuxt的生命周期,beforeCreated 和 created 是同时运行在服务端和客户端上的,mounted以后才会运行在客户端。 那么问题关键就找到了,之前spa项目在created生命周期里请求数据,我使用的三方axios,那么整体转为ssr,为避免大量改动,就还是使用的三方axios,接口 /api/user ,现在这个会跑在服务端,那么superagent 内部是用的node url parse 去解析你的这个 /api 参数的,然后再传给相应的如 http request,所以默认就是80端口。 问题原因找到了,那我们就需要改下生命周期就行了,让原先spa项目里在created里请求数据,全部改成mounted里去请求。果然问题就解决了。 转载于:https://www.cnblogs.com/goloving/p/11440967.html

[Centos]检查端口被哪个进程占用并杀死该进程

Centos上的C++服务器工作的时候,检测到990端口占用异常 没有占用... 再运行一下果然好了 如果被占用了,可以使用kill命令杀死进程: kill -9 process_id 好的,今天终于遇到了进程爆炸:启动一个C++服务器的时候僵死,这个程序叫service,直接搜索: ps -ef | grep service 杀死该进程:(第一列的2614和3816是进程号,第二列不是,我目前也不知道第二列是什么) kill -9 2614 同时ssh登录界面监视到kill执行:

Thread线程中的yield()方法和join()方法

yield()方法:当一个线程使用了这个方法之后,它就会把自己CPU执行的时间让掉,让自己或者其它的线程运行,注意是让自己或者其他线程运行,并不是单纯的让给其他线程。yield()的作用是让步。它能让当前线程由“运行状态”进入到“就绪状态”,从而让其它具有相同优先级的等待线程获取执行权;但是,并不能保证在当前线程调用yield()之后,其它具有相同优先级的线程就一定能获得执行权;也有可能是当前线程又进入到“运行状态”继续运行! 举个例子:一帮朋友在排队上公交车,轮到Yield的时候,他突然说:我不想先上去了,咱们大家来竞赛上公交车。然后所有人就一块冲向公交车,有可能是其他人先上车了,也有可能是Yield先上车了。 但是线程是有优先级的,优先级越高的人,就一定能第一个上车吗?这是不一定的,优先级高的人仅仅只是第一个上车的概率大了一点而已,最终第一个上车的,也有可能是优先级最低的人。并且所谓的优先级执行,是在大量执行次数中才能体现出来的。 join()方法:在一个线程中调用了其他线程的join方法,当前线程会停止运行,直到被调用的线程运行完成后当前线程再开始运行。 更多:https://www.cnblogs.com/huangzejun/p/7908898.html

变量命名的通用规则

目录 一、参考 一 、普通变量: 一 、 MFC中ID 一 、 vc资源名字定义格式: 一 、 MFC 消息命名 一、注意: 1、变量名只能是字母(A-Z,a-z)、数字(0-9)或下划线。 1、第一个字母不能是数字,例如2Lerver这不是一个合法的C++变量。 1、不能是c++关键字,例如不能用class这个单词来命名一个变量。 1、区分大小写,例如iA和ia是两个不同的变量。 一、用最短的字符表示最多的意义。 一、使用变量前缀 1、整型的前缀 一、变量命名的宗旨: 用最短的字符表示最多的意义。 一、使用变量前缀 1、局部变量:tmp_ 1、类的成员变量(member):m_ 1、类的静态成员变量(static member):sm_ 1、静态变量(static):s_ 1、外部全局变量(global):g_ 1、静态全局变量(static global):sg_ 1、进程间共享的共享数据段全局变量(global global):gg_ 1、除非不得已,否则应该尽可能少使用全局变量。 1、整型的前缀 1、浮点型的前缀 1、字符型的前缀 1、字符串的前缀 1、布尔型的前缀 1、指针型的前缀 1、数组的前缀 1、枚举变量的前缀 1、结构变量的前缀:t 1、字节变量的前缀: 1、字变量的前缀 1、字符指针的前缀 1、STL容器类型前缀 vector vecValue; 1、MFC绑定控件变量的前缀 1、矩形结构的前缀: 1、句柄对象一律以h开头 1、windows颜色类型的前缀:cr COLORREF crFront; 1、windows中DC(设备上下文)类型的前缀 CClientDC dcClient; 1、类的成员变量以m_开头,后面为变量体,变量体依然要有前缀。 1、定义一个变量,为了简化,在不影响变量意义的情况下,可以仅仅使用前缀。 RECT rc; 1、全局变量一律以g_开头,后面为变量体,变量体依然要有前缀。 int g_iNums; 1、变量体如果是多个单词,每个单词的首字母大写。 int iStudentAge; 1、在意义明确的情况下可以仅仅使用首字母命名变量可以缩短变量名。 int iID; 1、定义一个类使用C作为类名的前缀。 class CStudent { … }; 一、参考 https://blog.

数据库开发及ADO.NET(8)——删除- delete [from] Table where col=data

1、删除表中全部数据:DELETE FROM T_Person。 2、Delete只是删除数据,表还在,和Drop Table不同。 3、Delete 也可以带where子句来删除一部分数据:DELETE FROM T_Person WHERE FAge > 20 4、Truncate:删除表数据/还原标识。下一篇文章会有详细说明。 Truncate Table <表名> 5、删除表中全部数据:①DELETE FROM 表名。②DELETE 表名。①和②两种写法的效果是一样的。表还在。Delete 也可以带where子句来删除一部分数据。 6、Drop Table是删除表本身。 7、级联删除:在做删除操作时,外键表也会自动删掉相应的。为了数据安全,一般不使用级联。

CSS扩展语言

CSS没有变量?不要诬蔑我们大CSS好不?就像ES一样,你说JS没有模块,ES6给你整一个出来,而在这之前就已经有相关的库出来了。CSS也一样,你说CSS没有变量,CSS3就给你一个var(),变量你值得拥有! // 语法 // <custom-preperty-name> 自定义属性名 // <declaration-value>声明值(回退值) // var( <custom-preperty-name>, <declaration-value>? ) :root { --main-bg-color: pink; } body { background-color: var(--main-bg-color, blue); } 它也同ES6一样存在浏览器未部署不兼容的情况,即便它给了var()来打造变量,它仍旧显得很笨重!我提一个组件样式,为了避免样式冲突每次就得在前面加上一个组件唯一标识,就像这样: .my-content article h1 { color: #333 } .my-content article p { margin-bottom: 1.4em } .my-content aside { background-color: #EEE } 得亏CSS扩展语言出现了,它为CSS引入了变量、混合器等等语法,让CSS得到模块化发展。CSS扩展语言大体上差不多,具体使用哪个语言来工作取决于开发者个人喜好,这里以Sass/SCSS举例。先说下这两位的区别,SCSS 是 Sass 3 引入新的语法,其语法完全兼容 CSS3,并且继承了 Sass 的强大功能。也就是说,任何标准的 CSS3 样式表都是具有相同语义的有效的 SCSS 文件。另外,SCSS 还能识别大部分 CSS hacks(一些 CSS 小技巧)和特定于浏览器的语法,例如:古老的 IE filter 语法。 .my-content { article { h1 { color: #333 } p { margin-bottom: 1.

Python Pandas模块 to_execl 和read_execl出错

最近查看别人的例程代码的时候,里面用到了pandas模块,使用pycham一运行关于读写execl的代码,就报 exit code 3错误。 一头雾水,经过不断翻阅资料,折腾了好长时间终于解决了。问题的原因是少了两个依赖模块。 解决办法: pip install xlwt 这是写execl模块 pip install xlrd 这是读execl模块 转载于:https://www.cnblogs.com/guomeng888/p/11435252.html

C++读写文件

文章目录 C++读写 C++读写文件原文链接: C++读写 #include <fstream> int main() { fstream file("file.txt"); string line; out<<"out"<<endl;//不可以同时读写 for(int i=0;i<10;i++) getline(file,line); cout<<line<<endl; return 0; }

【leetcode】

文章目录 快慢指针+反转链表 快慢指针+反转链表 bool isPalindrome(ListNode* head) { if(!head||!head->next) return true; ListNode* fast = head;ListNode* slow = head; while(fast&&fast->next) { fast = fast->next->next; slow = slow->next; } ListNode* cur = slow;ListNode *nex = NULL;ListNode *list_back = NULL; while(cur) { nex = cur->next; cur->next = list_back; list_back = cur; cur = nex; } ListNode* list_front = head; while(list_back&&list_front) { if(list_back->val==list_front->val) { list_back = list_back->next; list_front = list_front->next; } else return false; } return true; }

mysql my.ini

Mysql my.ini [client] #设置mysql客户端默认字符集 default-character-set=utf8 [mysql] # 设置mysql客户端默认字符集 default-character-set=utf8 user = 'root' password = '123' [mysqld] #设置3306端口 port = 3306 # 设置mysql的安装目录 basedir=E:\mysql-5.6.45-winx64 # 设置mysql数据库的数据的存放目录 datadir=E:\mysql-5.6.45-winx64\data # 允许最大连接数 max_connections=200 # 服务端使用的字符集默认为8比特编码的latin1字符集 character-set-server=utf8 # 创建新表时将使用的默认存储引擎 default-storage-engine=INNODB

smooth L1 loss是什么以及为什么好

转载链接:https://www.jianshu.com/p/19483787fa24 smooth L1 loss能从两个方面限制梯度: 当预测框与 ground truth 差别过大时,梯度值不至于过大;当预测框与 ground truth 差别很小时,梯度值足够小。 考察如下几种损失函数,其中 损失函数对 x 的导数分别为: 观察 (4),当 x 增大时 L2 损失对 x 的导数也增大。这就导致训练初期,预测值与 groud truth 差异过于大时,损失函数对预测值的梯度十分大,训练不稳定。 根据方程 (5),L1 对 x 的导数为常数。这就导致训练后期,预测值与 ground truth 差异很小时, L1 损失对预测值的导数的绝对值仍然为 1,而 learning rate 如果不变,损失函数将在稳定值附近波动,难以继续收敛以达到更高精度。 最后观察 (6),smooth L1 在 x 较小时,对 x 的梯度也会变小,而在 x 很大时,对 x 的梯度的绝对值达到上限 1,也不会太大以至于破坏网络参数。 smooth L1 完美地避开了 L1 和 L2 损失的缺陷。其函数图像如下: 由图中可以看出,它在远离坐标原点处,图像和 L1 loss 很接近,而在坐标原点附近,转折十分平滑,不像 L1 loss 有个尖角,因此叫做 smooth L1 loss。

自用模板

文章目录 自己用的模板1.二分查找2.分治算法标准库常见用法string用法swap函数vector用法 自己用的模板 1.二分查找 二分查找链接模板原文链接 1.求最小的i,使得a[i] = key,若不存在,则返回-1 int binary_search_1(int a[], int n, int key) { int m, l = 0, r = n - 1; // 闭区间[0, n - 1] while (l < r) { m = l + ((r - l) >> 1); // 向下取整 if (a[m] < key) l = m + 1; else r = m; } if (a[r] == key) return r; return -1; } 2.

c/c++基础知识记录

数据结构类型 c/c++语言的数据结构类型分为基本数据类型和高级数据类型两种。基本数据类型分为:整型、浮点型、字符型、逻辑型。 整型 整型数据类型根据表示范围分为short、int 、long。 关键字长度范围short2字节-215~215-1unsigned short2字节0~216-1int4字节-231~231-1unsigned int4字节0~232-1long4字节-231~231-1unsigned long4字节0~232-1 浮点型 浮点型数据有float、double、long double。 关键字长度float4字节double8字节long double8字节 float类型数据精度为小数点后有效位6位,double类型数据精度为小数点后有效位15位。 字符型 关键字长度范围char1字节-128~127unsigned1字节0~255 逻辑类型 关键字长度范围bool1字节true、false 局部变量 在一个函数内部或者一个复合结构(包括类)内定义的变量称为局部变量(又称内部变量),其有效范围只在所定义的函数或者结构中。全局变量 全局变量的作用范围不仅仅局限于函数中,而是在程序的任何部分都能起作用,c++规定在函数之外定义的变量为全局变量,又称外部变量。 #include<iostram.h> int m=1;//全局变量 int main() { return 0; } 自动数据类型转换 在进行数据运算时,c++可以实现将参与运算的各个数据项从一种数据类型到另一种数据类型的自动转换。c++中各数据类型的数量级顺序是: char–>short–>int–>long–>float–>double 强制数据类型转换 强制数据类型转换有两种方式 float(a)(int) a 数据结构相关知识 算法时间复杂度 算法时间复杂度是算法运行时间的相对度量,语句频度是语句重复执行的次数,一个算法所耗费的时间就是该算法中所有语句频度之和。要准确计算出一个算法的语句频度有时是相当繁琐的,也是没有必要的,实际中只要大致估计出算法时间复杂度的的**数量级(order)**即可。时间的复杂度就是语句频度的数量级表示,一般只要分析算法中的循环语句重复执行的次数即可;算法空间复杂度 算法空间的复杂度是算法所需存储的空间的度量,它是问题规模 n n n的函数,记为 S ( n ) S(n) S(n)。 链表 链表的创建与打印 #include<stdio.h> #include<stdlib.h> typedef struct student{ char name[8]; char num[10]; int score; struct student *next; }NODE; //将struct student 结构类型定义为新的类型名NODE //(我得理解是,链表是一种特殊的结构,就是形如 NODE 一样的结构体,所以用NODE表示这种特殊的结构) int main() { NODE *head; //变量声明,定义 一个NODE结构类型的指针变量head NODE *creat(); // creat函数原型申明 ,返回值类型为NODE结构指针 (该函数实现链表的创建) void display(NODE*); // display 函数原型申明,形参为NODE结构指针,返回值为空 (该函数实现链表的打印) head=creat(); //创建链表 display(head); //打印链表 return 0; } //定义函数 NODE *creat() { NODE *head, *p, *s; //声明三个NODE类型的指针 ,head头指针,p可以看作尾指针,s可以看作节点指针 int key=1,n; //n表示链表的节点个数 char k[3],grad[3]; // head=(NODE*)malloc(sizeof(NODE)); //给头指针动态分配内存地址 p=head; // while(key) { printf("

修改echarts转化生成表格的样式

echartstoolbox对数据视图(dataview)自定义操作 不知道大家有没有和我一样觉得echarts自带的数据视图很难看,想自己动手改造一下,下面就介绍一下: 主要是在dataView的contentToOption事件中重定义样式;直接上代码 toolbox: { show: true, itemGap: 5, top: -5, feature: { dataView: { // readOnly: true, optionToContent: (opt) => { // opt为图表option,拿到对应数据重新渲染 const axisData = opt.rawData.valueData; const series = opt.rawData.yAxisData; let table = `<table border style="user-select:text;width:100%;text-align:center;color:#000"><tbody><tr> <td>省份</td> <td>数量</td> </tr>`; for (let i = 0, l = axisData.length; i < l; i += 1) { table += `<tr> <td>${series[i]}</td> <td>${axisData[i]}</td> </tr>`; } table += '</tbody></table>'; return table; }, }, }, }, 效果如下:

The Accuracy Updated Ensemble Algorithm(精度更新集合算法)

一种用于处理不同类型概念漂移的混合算法 算法简介数据流与概念漂移概念漂移的几种不同类型当前主流的几种处理概念漂移的方法与不足Algorithm AUE2小结 算法简介 随着在传感器网络,银行和通信等领域广泛应用数据流挖掘技术,越来越多在线处理数据流的算法也应运而生。本文我要介绍的这个算法名为The Accuracy Updated Ensemble Algorithm。关于这个算法的论文:Reacting to Different Types of Concept Drift: The Accuracy Updated Ensemble Algorithm 是由Pznan University of Technology 的一位博士生和他的导师一起提出来发表在IEEE Trans的。而这篇论文的主要贡献就是提出了一种新的数据流分类器,旨在处理不同类型的概念漂移。 数据流与概念漂移 在这之前我们提到了数据流与概念漂移。那么究竟它们究竟是什么呢?研究它们又有什么意义呢? 接下来我就用我粗浅的见识来简单介绍一下这两个概念吧。 1.数据流 百度上对数据流的介绍是这样的:数据流(data stream)是一组有序,有起点和终点的字节的数据序列。包括输入流和输出流。数据流最初是通信领域使用的概念,代表传输中所使用的信息的数字编码信号序列。这个概念最初在1998年由Henzinge提出,他将数据流定义为“只能以事先规定好的顺序被读取一次的数据的一个序列”。 举个简单的例子,大家都知道这段时间网络上仍然发生着大量的电信诈骗事件,如果我们能够用一种方法可以实时准确在互联网上分辨出诈骗信息,将它屏蔽并交给警察叔叔,那么是不是很有意义呢?正如刚才所说,那些此时此刻正在发送的一封一封的短信就是我们的数据流,一个短信就是一个数据(简称样本)。这样可以理解了吧? 2.概念漂移 概念漂移是由英文concept drift直译过来的。它是机器学习领域重要的问题之一,也是数据挖掘工作中的一个巨大的阻碍。网上的翻译都直接用这个作为例句(哈哈): Concept drift is a big obstacle in the field of mining stream data. 简单地说就是我们在用数据训练我们的分类器时,随着时间的推移,数据的分布发生了改变,这种改变就叫做概念漂移,随之而来的严重后果就是之前训练的模型就不再适用于处理当前数据了。 再用刚刚电信诈骗来举例:本来今天一上午到晚上,骗子们偷懒都没有发一封诈骗短信,而到了晚上他们突然想到再不“工作”,第二天就没饭吃了,于是开始陆陆续续向外发短信,而我们的算法在经过了一个白天的大量正常短信的训练,这突然遇到了一封诈骗短信,就突然没有反应过来,直到诈骗短信越来越多,它才慢慢反应过来,这是不是已经为时已晚了呢?这就是机器学习呀…而我们的工作就是尽可能让这种算法在实时处理大量正常短信中夹杂着生活极度不规律的“骗子”发的诈骗短信反应再快一点,准确度(简称精度)更高一点。 关于概念漂移,我想不久我会专门写一篇关于概念漂移的全面总结性文章,这么简单的介绍一个如此复杂的东西,心里总有点过意不去~ 概念漂移的几种不同类型 概念漂移可以从很多角度进行细分,如果按变化速度来的话,可以分为四类: 突变型(sudden)概念漂移 ,发生迅速且不可逆;渐变型(incremental gradual)概念漂移,incremental和gradual都是强调改变发生的缓慢,incremental强调值的随时间改变,gradual则是数据分布的改变;临时型(recurring)概念漂移,recurring则是一种temporary(临时性)的改变,在短时间内会恢复成之前的状态。这是一种不规则的反复变化;稀罕型(blip)概念漂移,通常又将这种情况被视为anomaly或者outlier(异常);噪音型(noise)概念漂移 这一种随机的改变也被视为噪音的一种,往往需要剔除; 来源:A Review on Real Time Data Stream Classification and Adapting To Various Concept Drift Scenarios

{"status":false,"msg":"您操作太频繁,请稍后再访问","clientIp":"113.94.81.141"}

在爬取拉勾网的时候报错{"status":false,"msg":"您操作太频繁,请稍后再访问","clientIp":"113.94.81.141"} 需要获取搜索结果那一页的cookie 以及header里面需要添加Accept、Referer、User-Agent import requests url = 'https://www.lagou.com/jobs/positionAjax.json?city=%E5%B9%BF%E5%B7%9E&needAddtionalResult=false' payload={ 'first': 'true', 'pn': '1', 'kd': '自然语言处理' } header = { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.86 Safari/537.36', 'Referer': 'https://www.lagou.com/jobs/list_%E8%87%AA%E7%84%B6%E8%AF%AD%E8%A8%80%E5%A4%84%E7%90%86?px=default&city=%E5%B9%BF%E5%B7%9E', 'Accept': 'application/json, text/javascript, */*; q=0.01' } urls ='https://www.lagou.com/jobs/list_%E8%87%AA%E7%84%B6%E8%AF%AD%E8%A8%80%E5%A4%84%E7%90%86?city=%E5%B9%BF%E5%B7%9E&cl=false&fromSearch=true&labelWords=&suginput=' s = requests.Session() # 获取搜索页的cookies s.get(urls, headers=header, timeout=3) # 为此次获取的cookies cookie = s.cookies # 获取此次文本 response = s.post(url, data=payload, headers=header, cookies=cookie, timeout=5).text print(response)

三目运算符

语法:条件/布尔表达式 ? 值1:值2 三目运算符表达式的结果是值1或值2中的一个,如果满足条件,返回值1;如果不满足条件,则返回值2 int a = 10; System.out.println(a+10>20? “大于”:“不大于”);

ArrayList和LinkedList的面试题

ArrayList和LinkedList的区别是什么? 答:数据接口实现:ArrayList:是动态数组数据结构实现的,LinkedList是基于双向链表数据结构实现的. 随机访问效率:ArrayList比LinkedList访问效率高,因为LinkedList是基于线性数据存储的方式,所以要移动指针依次查找数据. 增加和访问的效率:在非首尾添加数据,LinkedList要比ArrayList要高,因为ArrayLIst是基于数组实现的他的添加要影响数组的数据下标.

-bash: ifconfig: command not found

执行命令: ifconfig 错误截图: 解决方案: 1.运行命令 :sudo yum install net-tools 2.根据提示输入 y 3.根据提示再次输入 y 看到Complete! 就OK了 测试: 再次执行命令:ifconfig 好了 问题成功解决!

Centos7 查看端口的常用命令

Centos7 查看端口的常用命令 安装net-tools工具 # yum install net-tools 查看端口被哪个进程使用 # netstat -lnp | grep 8031 查看监听(Listen)的端口 # netstat -lntp 查看所有建立的TCP连接 # netstat -antp

初始化数组

一维 动态初始化:String[]strs = new String[4] 静态初始化:String[]strs = new String[]{“AA”,“BB”} 二维: 动态初始化: 1.String[][] str = new String[4][3]; 2.String[][] str1 = new String[4][]; str1[0] = new String[3]; str1[3] = new String[5]; str1[0][0]=“看”; 3.静态初始化: int[][] arr = new int[][]{{1,2}{4,3}}; 2.引用二维数组的元素: arr[1][0] =12; 3.二维数组的长度:arr.length;//3 arr[1],length;//2 4.遍历二维数组 嵌套fao循环 for(int i = 0;i < arr.length;i++){ for(int j = 0;i < arr[i].length;j++){ System.out.print(arr[i][j]+"\t"); } System.out.println(); 5.关于数组的默认初始化值: 1)byte int short long 0 2) float double 而言:0.0 3)char而言: 空格

Java中去除字符串中空格的方法

1、方法分类 str.trim(); //去掉首尾空格str.replace(" “,”"); //去除所有空格,包括首尾、中间str.replaceAll(" ", “”); //去掉所有空格,包括首尾、中间str.replaceAll(" +",""); //去掉所有空格,包括首尾、中间 str.replaceAll("\s*", “”); //可以替换大部分空白字符, 不限于空格 ; 注意:\s* 可以匹配空格、制表符、换页符等空白字符的其中任意一个。 2、代码示例 package test; public class Test { /** * description:字符串去除空格的方法 */ public static void main(String[] args) { String str = " hi world ~ "; //方法1:str.trim() System.out.println("1--->"+str.trim()); //方法2:str.repalce(" ","") System.out.println("2--->"+str.replace(" ", "")); //方法3:str.repalceAll(" ","") System.out.println("3--->"+str.replaceAll(" ", "")); //方法4:str.repalceAll(" +","") System.out.println("4--->"+str.replaceAll(" +", "")); //方法5:str.repalceAll("\\s*","") System.out.println("4--->"+str.replaceAll("\\s*", "")); } } 3、输出结果 4、replace和replaceAll是JAVA中常用的替换字符的方法,它们的区别是: (1) replace的参数是char和CharSequence,即可以支持字符的替换,也支持字符串的替换(CharSequence即字符串序列的意思,说白了也就是字符串); (2) replaceAll的参数是regex,即基于规则表达式的替换,比如,可以通过replaceAll("

Javascript 之 DOM案例(1)

1.点击按钮弹出对话框 <input type="button" value="弹出来" onclick="alert('我是弹框')"> 2.点击按钮修改超链接的地址和热点文字 // 根据id获取按钮,注册点击事件,增加事件处理函数 document.getElementById("bth").onclick()=function () { // 根据id获取超链接,设置href的属性 document.getElementById("bj").href="https://123.sogou.com/"; //根据id获取超链接,设置文字内容 document.getElementById("bj").innerText="嘎嘎"; } //优化代码 document.getElementById("bth").onclick()=function () { //根据id获取按钮,赋值给变量aobj var aObj= document.getElementById("bj"); aObj.href="https://123.sogou.com/"; aObj.innerText="嘎嘎"; } 3.点击(每个)图片弹出对话框 <img src="images/1.jpg" alt="" id="im1" /> <img src="images/2.jpg" alt="" id="im2" /> <img src="images/3.jpg" alt="" id="im3" /> <script> // document.getElementById("im1").onclick=function () { // alert("被点了"); // }; // document.getElementById("im2").onclick=function () { // alert("被点了"); // }; // document.getElementById("im3").onclick=function () { // alert("被点了"); // }; //根据标签的名字获取图片标签,分别注册点击事件 var imgObjs=document.

3个珍藏已久的资源网站,个个都很厉害,赶快私藏起来吧

现在想要找到好的资源真的是难上加难了,拥有资源即拥有财富,今天小编就来给大家分享几个优质的资源网站,让你从此以后找资源不发愁! 1. 爱资料工具 这个网站是一个小工具合集的网站,虽说它页面布局有点混乱,但是这完全不影响它的实用性,包括开发工具、网站运维、作图神器、文档转换等办公中常用的工具,里面都有所提供。 2. Free Stock Photos pexels 这时一个图片资源网站,大家都知道现在网上很多稍微好看一点的网站都是有版权,需要付费的,那么当我们工作中需要图片资源的时候,怎么办呢? Free Stock Photos pexels一个免费的图片资源网站,里面还提供少量的视频资源,有了它基本上可以满足你日常工作图片的需求。 3. Zou114 一个实用的查询工具网站,通过它可以查询到通信物流、电脑网络、出行旅游、工作商务、学习教育等多个行业的信息,不论是在生活中,还是在工作中都十分的好用! 今天的分享到这里就结束了,除了这些,你还有哪些私藏的资源网站呢?

guiplan介绍

1.引言 编写目的 随着社会的发展,互联网与我们的生活密切相关,而用户在手机与电脑上使用最多的莫过于浏览网页、企业网站、后台管理等等。然而网站的制作成本极高,难度极大,对技术的要求苛刻。企业急需产出,投入大量的成本。程序员也在每日每夜的奋战中,熬夜加班。客户迟迟等待不见结果,很容易错过好的市场机会。为了更好的解决这些问题,guiPlan由此诞生。此软件旨在解决:1,企业产出效率问题。2,程序员日常加班问题。3,客户需求进展解决过慢问题。它打破了传统手写代码,guiPlan使用简单,对程序员的技术要求不高,能够更好的服务大众。退一步讲,即使非技术人员通过此软件,也能制作出简单的页面。 软件用途 guiPlan是一款集编辑,制作,预览三位一体可视化网页编辑工具!同时,也是一款代码自动编写、后端接口与数据库配置代码自动生成、前后端全部通用的全能工具(PS:不只是生成代码,还可插入到本地对应的位置,用户无需手动复制粘贴来获取代码)。用户无需再边写html代码同时边写css代码,查看效果也无需打开浏览器实时刷新预览。通俗讲:用户可以像ps一样的实时看到自己制作的页面,并运用快捷拖拽等方式轻松的绘制出自己想要的效果,只需一键点击保存,此软件即可自动生成相应的代码与文件。 因为是软件自动生成代码,所以开发效率至少是传统手写代码的7倍,代码错误率至少降低80% 。总之,此款软件对于企业,能降低巨额成本,最大限度提升企业效益,高效产出及时抓住市场先机,极大提升行业竞争力。而对于程序员,则轻松诸多,以后不必过多加班。 软件核心亮点 1.像ps一样通过快捷键拖拽等等 快速绘制静态页面 2.一键生成所有静态文件(html,css,js,图片等等)到服务端,告别手写代码,用户下载即可使用。也可直接生成到本地,输入本地路径即可,无需下载。 3.单独保存本地功能,如只需保存css或html等等到本地 4.快速添加vue相关组件、自动生成vue文件、并一键保存到本地。 5.接口配置、一键生成代码、一键保存到本地、接口调用一键插入到对应的文件中。 6.数据库配置、一键生成代码、一键保存到本地。 官网 www.guiplan.com

前端自适应常适配的屏幕大小

/** * 媒体查询,参考部分Bootstrap框架 */ /**当前页面大于1200px时,大屏幕,主要是PC端。**/ @media (min-width: 1200px) { } /**在992和1199像素之间的屏幕里,中等屏幕,分辨率低的PC**/ @media (min-width: 992px) and (max-width:1199px) { } /**在768和991像素之间的屏幕里,小屏幕,主要是PAD**/ @media (min-width:768px ) and (max-width:991px) { } /*在480和767像素之间的屏幕里,超小屏幕,主要是手机。 */ @media (min-width: 480px) and (max-width:767px) { /* * 1、浏览器屏幕宽度大于等于480,小于768时,将header等的高度设置为45px; * 2、header中的logo隐藏; * 3、nav的宽度由55%改为100%,行高设置为45px; * */ #header,#header .head_bx,#header .link{ height: 50px; } #header .logo,.xs_hidden{ display: none; } #header .link{ width: 100%; height: 50px; } #header .link li{ line-height: 50px; } } /**在小于480像素的屏幕、微小屏幕、更低分辨率的手机**/ @media (max-width:479px) { /** * 1、浏览器屏幕小于480,将header等的高度设置为45px * */ #header, #header .

C++如何定义一个长度超过一百万的整型数组

今天在解决一道题的时候,在函数内部定义数组突然脑子抽风多打了几个零(一百万),一运行 ——嗯,爆了orz 于是,我翻开了书,但并没有发现哪里有说数组大小限制。 后来找到度娘帮忙 首先明确,数组申明在函数内部,即属于局部变量,是存放在栈上的 其次,栈的默认内存空间为 1 M左右 一百万长度的数组占用的内存大小:1000000=1000 *1000 * 4byte ≈ 4M int型数据长度为4byte 所以,会导致内存溢出。 要想解决这个问题有两种方法:可以将数组申明在全局存储区或堆上 方法一:申明为全局变量 #include<iostream> using namespace std; int list[1000000]; int main() { ... return 0; } 方法二:存放在堆上 #include<iostream> using namespace std; int main() { int *list; list=new int[1000000]; ... return 0; } 总结一下: 函数内申请的变量,数组,是在栈(stack)中申请的一段连续的空间。栈的默认大小为2M或1M,开的比较小。全局变量,全局数组,静态数组(static)则是开在全局区(静态区)(static)。大小为2G,所以能够开的很大。而malloc、new出的空间,则是开在堆(heap)的一段不连续的空间。理论上则是硬盘大小。

静态方法和非静态方法区别?

静态方法static(类方法)和 非静态方法(实例方法)的区别: 方法我们主要分为三种: 1.构造方法 2.静态方法(类方法) 3.非静态方法(普通方法/实例方法/成员方法) 对于1(补充一下):构造方法分为无参构造方法 和 有参构造方法。另外 这两个方法,涉及到了方法重载(小伙伴可以自己去了解方法重载、方法重写、方法重构区别,当然我其他文章也会写相关的介绍)。 一、静态方法和非静态方法的区别(调用对象、引用变量不同) 对于2:静态方法,是使用static关键字修饰的方法,又叫类方法。属于类的,不属于对象,在实例化对象之前就可以通过类名.方法名调用静态方法。(静态属性,静态方法都是属于类的,可以直接通过类名调用)。 A.在静态方法中,可以调用静态方法。 B.在静态方法中,不能调用非静态方法。 C.在静态方法中,可以引用类变量(即,static修饰的变量)。 D.在静态方法中,不能引用成员变量(即,没有static修饰的变量)。 E.在静态方法中,不能使用super和this关键字 对于3:非静态方法,是不含有static关键字修饰的普通方法,又称为实例方法,成员方法。属于对象的,不属于类的。(成员属性,成员方法是属于对象的,必须通过new关键字创建对象后,再通过对象调用)。 A.在普通方法中,可以调用普通方法。 B.在普通方法中,可以调用静态方法 C.在普通方法中,可以引用类变量和成员变量 D.在普通方法中,可以使用super和this关键字 二、静态方法和非静态方法的区别(调用方法不同) 静态方法可以直接调用,类名调用和对象调用。(类名.方法名 / 对象名.方法名) 但是非静态方法只能通过对象调用。(对象名.方法名) 三、静态方法和非静态方法的区别(生命周期不同) 静态方法的生命周期跟相应的类一样长,静态方法和静态变量会随着类的定义而被分配和装载入内存中。一直到线程结束,静态方法和静态属性才会被销毁。(也就是静态方法属于类) 非静态方法的生命周期和类的实例化对象一样长,只有当类实例化了一个对象,非静态方法才会被创建,而当这个对象被销毁时,非静态方法也马上被销毁。(也就是非静态方法属于对象) 总结:类方法可以直接通过类名调用;实例方法必需先实例化类,再初始化对象,然后通过类的实例对象才能调用 举例: class ABC{ public static void testStatic(){ System.out.println("This is static method"); } public void testMethod(){ System.out.println("This is instance method"); } public static void main(String[] str){ ABC.testStatic(); //直接通过类调用 ABC a = new ABC(); //实例化,然后构造方法会初始化 a.testMethod(); //对象调用方法 } }

python环境安装(一)

之前安装过很多次了,但是每次到新电脑上或者版本更新后都又要找在线教程。今天打算把流程写下来,便于以后随便在其他电脑上可以安装。 步骤一: 打开python官网,找到下载地址:https://www.python.org/downloads/下载需要的版本。目前一般下载2.7或者3.6. 这里是下载3.6版本为例https://www.python.org/downloads/release/python-361/ x86是32位,x86-64是64位。 web-based ,executable , embeddable zipfile区别: 1、web-based installer 是需要通过联网完成安装的,就是执行安装后才透过网络下载python(下载很快,比较文件小,但是后面安装的时候通过网络下载会非常考验你的网络。很容易在最后安装过程中失败) 2、executable installer 是可执行文件(*.exe)方式安装。 3、embeddable zip file 压缩档,就是python打包成zip压缩包,嵌入式版本,可以集成到其它应用中。 我这里是下载的Windows x86-64 web-based installer版本的。 步骤二: 点击安装。勾选Add Python 3.6 to PATH。将python加入到windows的环境变量中,如果忘记打勾,则需要手工加到环境变量中可以选择自定义安装。自己选择安装的位置和特证 下一步,将下图几个全部勾选上。不要问为什么,越全越好O(∩_∩)O哈! 下一步,再次勾选(这里把Python的环境变量已经加了,但是后面要使用pip的时候就需要手动配置一下环境变量),点击安装 点击下一步后,就开始真正安装了 步骤三: 测试 python安装好之后,我们要检测一下是否安装成功,用系统管理员打开命令行工具cmd,输入“python -V”,然后敲回车,如果出现如下界面,则表示我们安装成功了;查看到版本是3.6.1 环境变量配置好以后,我们在cmd下面可以直接输入python,就可以切换到python的编译环境了。 上面是python的安装方法,适合初学者的学习,安装完成后,通常我们还要安装pycharm,PyCharm是一种Python IDE,我们在编写python程序时,通常用该工具进行开发,调试和管理工程等 注意: 如果在刚才安装的时候,忘记将加入到环境变量的勾打上,那么就需要手工配置环境变量之后,才能使用python。具体配置方式网上搜下很多的。

上传多张图片插件

上传多张图片插件 1.HTML <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta content="width=device-width,initial-scale=1.0,maximum-scale=1.0,user-scalable=no" name="viewport"> <meta content="yes" name="apple-mobile-web-app-capable"> <meta content="black" name="apple-mobile-web-app-status-bar-style"> <meta content="telephone=no" name="format-detection"> <meta content="email=no" name="format-detection"> <title>上传多张图片</title> <script src="../js/jquery.min.js"></script> <script src="../js/public.js"></script> <link href="../css/bianji.css" rel="stylesheet"/> <!--上传图片--> <script src="../js/upload.js"></script> </head> <body> <div class="bianji_contBox_cont" style="height: auto;"> <span>商户图片:</span> <div class="bianji_contBox_cont_shtpBox"> <div class="bianji_contBox_cont_shtpBox_imgBox"> </div> <div class="z_file"> <input class="z_file_bnt" type="file" name="file" id="file" value="" accept="image/*" multiple onchange="imgChange('bianji_contBox_cont_shtpBox_imgBox','z_file');" /> </div> <!--遮罩层--> <div class="z_mask"> <!--弹出框--> <div class="z_alert"> <p>确定要删除这张图片吗?</p> <p> <span class="z_cancel">取消</span> <span class="

vue+element-ui中的el-table-column配合v-if 数据位置错乱问题

我们在做vue 开发中,经常会使用到 element-ui, el-table是我们使用场景特别高的组件 有时候我们在不同标签下,使用不同的el-table,会出现数据列错乱的问题。 <div class="list-item"> <div class="tabs"> <div class="tab-title"> <a class="tab-item" :class="{'tab-active':currentType==0}" @click="handleClick(0)">普通用户</a> <a class="tab-item" :class="{'tab-active':currentType==1}" @click="handleClick(1)">会员用户</a> </div> </div> <div v-if="currentType===0"> <el-table :data="tabs[0].dataList.rows" border :tooltip-effect="toolTipEffect" key="0"> <el-table-column :width="indexWidth" align="center" label="序号" type="index" :index="indexMethod"></el-table-column> <el-table-column prop="name" label="名字" show-overflow-tooltip> </el-table-column> <el-table-column prop="name" label="电话" show-overflow-tooltip> </el-table-column> <el-table-column prop="name" label="邮箱" show-overflow-tooltip> </el-table-column> </el-table> <el-pagination v-if="tabs[0].dataList.total" @size-change="onSizeChange" @current-change="onCurrentChange" :current-page="currentPage" :page-size="rows" layout="total, sizes, prev, pager, next" :total="tabs[0].dataList.total"> </el-pagination> </div> <div v-if="currentType===1"> <el-table :data="tabs[1].dataList.rows" border :tooltip-effect="

Spark安装步骤及第一次启动failed to launch: nice -n 0错误

基本条件:同步时间、免密登录、关闭防火墙、安装JDK1.8 在安装spark之前 emmm 我有三台虚拟机 hadoop01 hadoop02 hadoop03 然后jdk1.7 就是因为这个 我第一启动时failed to launch: nice -n 0错误 哦 对了 网上好多说配置 /root/.bashrc 文件 在后面加上 export JAVA_HOME= /usr/local/jdk1.8.0_191 这句话就好了 我弄了没用 因为 我的jdk1.7 启动失败好多错误信息 有提示信息 你要认真去看下面的错误信息 它提示我去看日志 我进入到提示目录看的日志 告诉我 Unsupported major.minor version 52.0 注意了 看到这个就应该知道这是版本不兼容的问题出现了 因为我前面因为替换jar包的问题遇到过 所以 含泪舍弃了jdk1.7 从官网下载了jdk1.8 上传解压 在这里 还在想以前的jdk1.7的配置怎么办 一些路径 还有配置文件写的jkd1.7怎么弄 一个一个改? 大佬告诉我! 将加压后的jdk1.8的名字改为现在存在的jdk1.7的名字就行了 就是内容变为1.8 但名字还是1.7!!!! ok 安装好重启spark 果然成功! 步骤 1.上传安装包到hadoop01 2.将文件解压到指定的目录 tar -zxvf spark-2.2.0-bin-hadoop2.7.tgz -C /usr/local 2.在其conf下配置 3.1修改conf目录下的env文件 mv spark-env.sh.template spark-env.

CDH6.3.0 报错汇总

文章目录 Cloudera 建议将 /proc/sys/vm/swappiness 设置为最大值 10已启用透明大页面压缩,可能会导致重大性能问题。JDBC driver cannot be found. Unable to find the JDBC database jar on host存在隐患 : 9 DataNodes are required for the erasure coding policies: RS-6-3-1024k.不良 : 该主机与 Cloudera Manager Server 失去联系的时间过长。Redaction rules file doesn't exist不良 : 群集中有 1,972 个 副本不足的块 块。群集中共有 1,977 个块。百分比 副本不足的块: 99.75%。 临界阈值:40.00%。不良 : 此 DataNode 未连接到其一个或多个 NameNode。not enough live tablet servers to create a table with the requested replication factor 3; 1 tablet servers are aliveimpala-shell -f 脚本失败impala并发执行查询SQL报错NameNode and SecondaryNameNode have different heapsizes不良 : Canary 测试无法为 /tmp/.

快速利用mybatis的自动生成代码插件生成代码

在上一篇文章中,我们简单的集成了一个springboot+mybatis+mysql的小demo,初步实现了前端后端数据的联通。我们发现我们日常开发过程中一些简单的代码,如实体类,简单的查询语句以及Dao层接口等,如果都靠自己手动编写,既费时又费力。那我们可以考虑利用mybatis的代码自动生成插件来帮助我们完成这些简单的代码编写。下面我们就来实现这个功能吧。。let's Go。。。 第一步:新建一个springboot整合mybatis的项目,上篇文章已经讲过,这里就不做详细介绍了,有兴趣可以看我上篇文章:https://blog.csdn.net/fy18120588045/article/details/99474643 新建好项目并按照标准规范建好文件夹,如图所示: com/fly/mapper/generator这个文件夹,我们用来存放待会生成的Dao层接口 src/main/resources/mapper/generator文件夹,我们用来存放映射文件 src/main/resources/generator/generatorConfig.xml就是我们代码生成工具的配置文件 第二步:利用pom.xml集成代码生成工具插件: <!-- mybatis generator 自动生成代码插件 --> <plugin> <groupId>org.mybatis.generator</groupId> <artifactId>mybatis-generator-maven-plugin</artifactId> <version>1.3.2</version> <configuration> <configurationFile>${basedir}/src/main/resources/generator/generatorConfig.xml</configurationFile> <overwrite>true</overwrite> <verbose>true</verbose> </configuration> </plugin> 新建generatorConfig.xml文件,修改配置文件中的配置参数,下面给出完整的配置文件: <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE generatorConfiguration PUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN" "http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd"> <generatorConfiguration> <!-- 数据库驱动:选择你的本地硬盘上面的数据库驱动包--> <classPathEntry location="D:\maven\MyRepository_bak2\MyRepository\mysql\mysql-connector-java\5.1.45\mysql-connector-java-5.1.45.jar"/> <context id="context" targetRuntime="MyBatis3"> <commentGenerator> <property name="suppressDate" value="true"/> <!-- 是否去除自动生成的注释 true:是 : false:否 --> <property name="suppressAllComments" value="true"/> </commentGenerator> <!--数据库链接URL,用户名、密码 --> <jdbcConnection driverClass="com.mysql.jdbc.Driver" connectionURL="jdbc:mysql://localhost:3306/test" userId="root" password="123456"> </jdbcConnection> <javaTypeResolver> <property name="forceBigDecimals" value="

搭建一个vue项目

一、安装node环境 1、下载地址为:https://nodejs.org/en/ 2、检查是否安装成功:如果输出版本号,说明我们安装node环境成功 3、为了提高我们的效率,可以使用淘宝的镜像:http://npm.taobao.org/ 输入:npm install -g cnpm –registry=https://registry.npm.taobao.org,即可安装npm镜像,以后再用到npm的地方直接用cnpm来代替就好了。 检查是否安装成功: 二、搭建vue项目环境 1、全局安装vue-cli npm install --global vue-cli 2、进入你的项目目录,创建一个基于 webpack 模板的新项目 说明: Vue build ==> 打包方式,回车即可; Install vue-router ==> 是否要安装 vue-router,项目中肯定要使用到 所以Y 回车; Use ESLint to lint your code ==> 是否需要 js 语法检测 目前我们不需要 所以 n 回车; Set up unit tests ==> 是否安装 单元测试工具 目前我们不需要 所以 n 回车; Setup e2e tests with Nightwatch ==> 是否需要 端到端测试工具 目前我们不需要 所以 n 回车; 3、进入项目:cd vue-demo,安装依赖

华为手机备忘录,到底有多好用?花粉看完,纷纷点赞

还记得第一次接触华为手机,是我爸淘汰给我的华为畅享6,刚到手就迫不及待的把玩起来,不过那商务风的图标还真提不起兴趣……后来我爸给我换了一套花哨的UI主题,我就不无得意成为第二任小主人了! 一开始当然是玩游戏、听音乐、看漫画啦,不过随着年龄增长,阅历成熟,后来慢慢的开始尝试内置应用,其中用的最多的就是备忘录了,记考号、记生日、记密码都要用到它,怀旧一下,分享一些备忘录中的功能,小巧且强大! 1 * 手写笔记 平时用不上,一旦需要就尤为关键,自带了一个小画板,简直可以独立出来了,可以在已有文字、图片上方直接涂鸦标注,还能调整具体的各项参数,当年画了上百张的火柴人小漫画,现在想来,都是回忆! 就在前段时间,华为还搞了一个备忘录涂鸦大赛呢,可见对该功能有多自信啦! 2 * 待办日程 这个是每天都要用到,年纪越来越大,意味着破事越来越多,忘性也越来越大,这是每个人的必然,当完成了童年理想,童年又成了理想,不只是简单的备忘提醒,而是智能检测,推荐提醒,真的多次救我于水火之中啊。 3 * 语音速记 应该是我用过最多的功能了,毕竟用手不如用口,人之初性本懒,最长支持5分钟的待办或笔记,平时记个账啊、备个忘啊,非常实用,只需语音录入,就能转换成文本,何况别的软件还要花钱呢~ 不过像我这种职场老油子,在外企工作还是不能满足,公司里哪国人都有,平时就在用语音翻译器这款应用,支持英语、日语、韩语等12种语言的语音实时互译播放,还能贴心的调节语速, 如果你说不出来,还可以输入文本,这次则是支持25种语言的互译!学生党、境外游都用得上,而你绝对想不到的是,这个应用目前完全免费! 我最喜欢的是全屏功能,你一定看过类似的场景,直接把翻译结果,横拿着手机给客户看,横持效果如图—— 华为应用市场就能搜到,而且还有同名iOS版哦~用过就知道多良心啦! 4 * 分享快乐 这个功能其实没必要多讲,只是曾经有很多美好的回忆,都是这么分享出去的,写的第一篇情书、第一首小诗、第一篇影评、第一首歌词……满庭花簇簇,添得许多香。 华为手机自带备忘录,真的是小巧又强大,希望你也能用到这些小功能~

guiplan安装与使用

安装与使用 下载安装 打开官网http://www.guiplan.com/下载完之后双击即可运行软件 注册登录与项目创建 注册 输入手机号与验证码即可直接注册与登录 创建项目与页面 点击新建项目点击查看页面出现弹框弹框里面最下方文本框里输入页面名称点击创建即可出现页面列表点击页面名称即可进入页面可视化编辑 如下图所示组件面板点击可快速插入样式与组件样式面板可手动修改当前样式以及属性 快捷键使用

数组题——数组中出现次数超过一半的数

数组中出现次数超过一半的数 题目描述 数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。例如输入一个长度为9的数组{1,2,3,2,2,2,5,4,2}。由于数字2在数组中出现了5次,超过数组长度的一半,因此输出2。如果不存在则输出0。 解题思路 先将数组排序,那么在数组中间的那个数一定就是超过数组一半长度的数,再分别左右对比,计算出其出现的次数,如果大于数组长度一半,就将其输出。 class Solution { public: int MoreThanHalfNum_Solution(vector<int> numbers) { if(!numbers.size()) return 0; auto l=numbers.begin(),r=numbers.end(); sort(l,r); auto m=l+(r-l)/2; int time=0,target=*m; while(*m==target) { m--; time++; } m=l+(r-l)/2+1; while(*m==target) { m++; time++; } if(time>(r-l)/2) return target; return 0; } }; 注意,用sort来进行排序。往前找完往后找的时候,注意要m+1,不然就会多计算一次m。

手机卡顿只清理垃圾是不行的,关掉这个开关,比新手机还好用

平时你的手机有出现过卡顿变慢的情况吗?相信很多人都会直接清理手机垃圾,但其实这样是不行的。下面就来教大家一招,轻松让手机变得通畅,比新手机还好用。 一、文件夹清理 1、手机卡顿时,我们一般会选择一些软件来清理垃圾,但是这样清理的只是表层的一部分,还有很多深层的垃圾基本是扫描不出来的,这时候就需要我们手动来清理这些隐藏垃圾。 2、首先打开手机的【文件管理】,然后点击【压缩包】,这里面的文件都是平时清理垃圾时,没有清除不干净的。 3、我们先点击右上角的【编辑】,再点击左上角的【全选】,接着在下面找到【删除】,最后将它们全部清理干净,这样手机里的所有隐藏垃圾,就全部清理干净了。 二、微信清理 1、打开微信,点击【设置】-【通用】-【照片、视频和文件】。进入后可以看到有四个选项都是默认开启的,我们应该将他们全部关闭,这样在查看照片和视频时,就不会自动下载了,可以省下很大的空间和内存。 2、接下来我们返回上一页,点击进入在最下方的【微信储存空间】,现在可以看到微信已用空间和手机已用空间,点击【管理微信储存空间】。 3、先清理其他微信账号聊天数据,然后再管理当前微信账号聊数据。这里面都是我们平常聊天时留下来的数据,我们可以选择性删除,这样手机空间就会瞬间增大很多。 按照上面的方法,手机就不会出现卡顿的情况,这样清理手机内存的方法,大家都学会了吗?赶紧试试吧。

hive与hbase整合过程及遇到的错误锦集

这个整合其实就是第一次你在hive创建与hbase的表相映射的表 这样就就在hive查看到hbase的表的信息 我们在hive中可以直接查询hbase中的数据 hbase中添加会删除一条数据,在hive中立刻就能体现!!! 在hive中插入一条记录,也能立刻在hbase中体现 就是create表 只不过跟平常创建表不同 你就直接在hive建表(先建个库吧) create external table if not exists hive2hbase( id int, age int, name string ) stored by 'org.apache.hadoop.hive.hbase.HBaseStorageHandler' WITH SERDEPROPERTIES ( "hbase.columns.mapping"=":key,base_info:age,base_info:name" ) TBLPROPERTIES( "hbase.table.name"="user_info" ); 然后就出现错误了 现在先看错误 1.首先清楚 版本依赖错误: 我的hive是1.2.1 hbase也是1.2.1,然后,hive下面的lib目录有个hive-hbase-handler-1.2.1.jar 包,在你第一次在hive上建与hbase表时,会产生 Cannot find class 'org.apache.hadoop.hive.hbase.struct.HBaseStorageHandler' 既要协调使用hive中的jar,也要使用hbase中的jar包。但是hive的hive-hbase-handler-1.2.1.jar中引用的关于hbase的jar包版本过低(0.9x),所以导致hbase的版本不支持。 解决方案 修改hive-hbase-handler-1.2.1.jar的hbase相关的jar依赖 修改源码的方式–eclipse 1. 打开一个eclipse 2. 在eclipse中随便创建已给java工程 3. 将我们之前下载好的源码导入到eclipse的src目录下,这个时候一会发现一堆错误提示 file ---> import ---> filesystem--->选择你的源码--->finish 4. 创建一个lib目录,把准备好的jar包都拷贝到lib目录中 5. 选中所有的jar包---鼠标右键--->build path 你就会发现不报错 6. 导出 file--->export--->jar file ---> 7.

VM options配置

-Xms512m -Xmn512m -Xmx1g -XX:ReservedCodeCacheSize=240m -XX:MaxMetaspaceSize=512m -XX:+UseG1GC -XX:SoftRefLRUPolicyMSPerMB=50 -ea -Dsun.io.useCanonCaches=false -Djava.net.preferIPv4Stack=true -Djdk.http.auth.tunneling.disabledSchemes="" -XX:+HeapDumpOnOutOfMemoryError -XX:-OmitStackTraceInFastThrow

启动hive出错Exception in thread "main" java.lang.IncompatibleClassChangeError: Found class jline.Termina

启动hive出错: 启动hive出错: Exception in thread "main" java.lang.IncompatibleClassChangeError: Found class jline.Terminal, but interface was expected 解决方案: cp /usr/apps/hive/hive‐1.2.1/lib/jline‐2.12.jar $HADOOP_HOME/share/hadoop/yarn/lib/ 如果hive遇到错误 记得去查看日志 1.HIVE默认log文件保存的地方 /tmp/<user.name>文件夹的hive.log文件中,全路径就是/tmp/当前用户名/hive.log。 我的就在cat /tmp/root/hive.log 可以参考别人的博客查看日志信息 https://www.cnblogs.com/kouryoushine/p/7805657.html

Petalinux系列-Petalinux2019.1安装

Petalinux2019.1的安装与之前大体类似,但是有几个小坑,再次记录一下。 安装依赖 ug1144中提供了快速安装依赖的脚本, sudo apt-get install -y gcc git make net-tools libncurses5-dev tftpd zlib1g-dev libssl-dev flex bison libselinux1 gnupg wget diffstat chrpath socat xterm autoconf libtool tar unzip texinfo zlib1g-dev gcc-multilib build-essential -dev zlib1g:i386 screen pax gzip 这里边有很多错误,比如build-essential -dev,没有安装gawk,没有安装gawk就运行.run文件就会出现如下报错 awk: read error (Bad address) Please refer to the PetaLinux Tools Installation Guide. Check the troubleshooting guide at the end of that manual, and if you are unable to resolve the issue please contact customer support with file: /media/Document/Xilinx/Petalinux/petalinux_installation_log .

【leetcode】优先队列题目集合

一、在N个元素中选出前M个元素(N远大于M时) 在1,000,000个元素中选出前100名。 思路一:对N的元素进行排序,然后选出前M个元素,时间复杂度为O(NlogN)(采用快排或归并排序等高级排序算法) 思路二:使用优先队列,可以将时间复杂度降低为O(NlogM)。具体实现:使用优先队列维护M个元素,即每次向优先队列中加入一个元素时,需要将当前队列中的最小元素替换出去,保证队列中的M个元素是当前遍历过的元素中的最大的前M个。 使用最小堆 347 前k个高频元素 给定一个非空的整数数组,返回其中出现频率前 k 高的元素。 示例 1: 输入: nums = [1,1,1,2,2,3], k = 2 输出: [1,2] 示例 2: 输入: nums = [1], k = 1 输出: [1] import heapq from collections import Counter class Solution: def topKFrequent(self, nums, k): res = [] dic = Counter(nums) max_heap = [(-val, key) for key, val in dic.items()] heapq.heapify(max_heap) for i in range(k): # 把Heap里面出现最大的几个数pop出来就好,记得这里需要pop出来的是key, 不是val res.append(heapq.heappop(max_heap)[1]) return res # 利用Counter + PriorityQueue来做 # python skill class Solution(object): def topKFrequent(self, nums, k): return [item[0] for item in collections.

使用maven,在一个项目中调用另一个项目

Maven项目只能识别项目本身包含,和本地仓库的信息。 项目1依赖项目2,则必须将项目2 放在本地仓库中(install)。 需要创建两个maven项目。 一、首先,创建一个名为service的maven项目 新建一个demo类: package com.mf; /** * @ClassName Demo * @Description TODO * @Author msi * @Date 2019/8/18 15:34 */ public class Demo { public static void demo(){ Class clazz = Demo.class; System.out.println("service 项目中的" + clazz.getSimpleName() + " 类,它里面的" + clazz.getMethods()[0] + " 方法被调用!"); } } 二、再新建一个maven项目,取名叫client。 写一个类UserDemoTest,来调用service项目Demo类中的demo(); 这时是报错的,因为client项目没有这个方法。 切换到service项目,使用maven命令 install 在本地仓库创建 jar包。 去本地仓库查看 我们将client项目的pom.xml中引入service的jar 可以看见UserDemoTest 没有报错了。并且运行成功执行了demo方法。