题目描述: 排列硬币 你总共有 n 枚硬币,你需要将它们摆成一个阶梯形状,第 k 行就必须正好有 k 枚硬币。
给定一个数字 n,找出可形成完整阶梯行的总行数。
n 是一个非负整数,并且在32位有符号整型的范围内。
示例 1:
n = 5 硬币可排列成以下几行: ¤ ¤ ¤ ¤ ¤ 因为第三行不完整,所以返回2. 示例 2:
n = 8 硬币可排列成以下几行: ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¤ 因为第四行不完整,所以返回3. 代码: class Solution { public: int arrangeCoins(int n) { if(n == 0) return 0; for(long i = 1; ; i ++){ if(n >= (i+1)*i/2&&n < (i+2)*(i+1)/2) return i; } } };
1、Shareinstall Shareinstall是一款为移动开发者量身打造的一款APP辅助推广工具!它核心价值在于,帮助Android/iOS开发者通过shareinstall提供的sdk,精确的获取app每一次安装的分享(或推广)来源。
特点:以渠道链接取代渠道包,精确的定位APP的各个安装渠道;ShareinstallSDK量级较轻,应用集成造成的代码冗余少,集成简单。是一款优秀又好用的开放SDK。下载渠道:IOS SDK下载、Android SDK下载 2、Arachnid Arachnid是一个基于Java的web spider框架.它包含一个简单的HTML剖析器能够分析包含HTML内容的输入流.通过实现Arachnid的子类就能够开发一个简单的Web spiders并能够在Web站上的每个页面被解析之后增加几行代码调用。 Arachnid的下载包中包含两个spider应用程序例子用于演示如何使用该框架。
特点:微型爬虫框架,含有一个小型HTML解析器 许可证:GPL
3、crawlzilla crawlzilla 是一个帮你轻松建立搜索引擎的自由软件,有了它,你就不用依靠商业公司的搜索引擎,也不用再烦恼公司內部网站资料索引的问题。
由 nutch 专案为核心,并整合更多相关套件,并卡发设计安装与管理UI,让使用者更方便上手。
crawlzilla 除了爬取基本的 html 外,还能分析网页上的文件,如( doc、pdf、ppt、ooo、rss )等多种文件格式,让你的搜索引擎不只是网页搜索引擎,而是网站的完整资料索引库。
拥有中文分词能力,让你的搜索更精准。
crawlzilla的特色与目标,最主要就是提供使用者一个方便好用易安裝的搜索平台。
授权协议: Apache License 2
开发语言: Java JavaScript SHELL
操作系统: Linux
https://github.com/shunfa/crawlzilla
http://sourceforge.net/projects/crawlzilla/
特点:安装简易,拥有中文分词功能
4、Ex-Crawler Ex-Crawler 是一个网页爬虫,采用 Java 开发,该项目分成两部分,一个是守护进程,另外一个是灵活可配置的 Web 爬虫。使用数据库存储网页信息。
授权协议: GPLv3
开发语言: Java
操作系统: 跨平台
特点:由守护进程执行,使用数据库存储网页信息
5、Heritrix Heritrix 是一个由 java 开发的、开源的网络爬虫,用户可以使用它来从网上抓取想要的资源。其最出色之处在于它良好的可扩展性,方便用户实现自己的抓取逻辑。
Heritrix采用的是模块化的设计,各个模块由一个控制器类(CrawlController类)来协调,控制器是整体的核心。
https://github.com/internetarchive/heritrix3
授权协议: Apache
开发语言: Java
操作系统:跨平台
特点:严格遵照robots文件的排除指示和META robots标签
6、heyDr heyDr是一款基于java的轻量级开源多线程垂直检索爬虫框架,遵循GNU GPL V3协议。
前一篇文章中,我们对CAS及SSO(单点登录)有了大致的了解,今天我们开始讲解如何搭建一个简单的CAS服务认证中心,如果你对CAS中单点登录的概念忘记了,可以先去复习一下先前的文章——CAS单点登录(一)——初识SSO,再开始接下来的内容。
一、搭建CAS基础服务 1、准备 首先CAS官方文档地址:https://apereo.github.io/cas/5.3.x/index.html,在后面我们可能随时会用到。
然后我们从Geting Started开始,在文档里面告诉我们部署CAS,推荐我们使用WAR Overlay method的方法,利用覆盖机制来组合CAS原始工件和本地自定义方法来达到自定义CAS的要求。
It is recommended to build and deploy CAS locally using the WAR Overlay method. This approach does not require the adopter to explicitly download any version of CAS, but rather utilizes the overlay mechanism to combine CAS original artifacts and local customizations to further ease future upgrades and maintenance. 官方给了两种编译方式,一种是Maven、另一种是Gradle,这里使用Maven安装部署。
具体的详情可以参考:https://apereo.github.io/cas/5.3.x/installation/Maven-Overlay-Installation.html
在开始之前,我们需要配置好电脑环境,笔者当前的环境为:
JDK 1.8Maven 3.5.3Tomcat 8.5(官方推荐Tomcat至少要8版本以上) 2、下载代码打包 我们需要下载打包成WAR的代码架子,地址为: https://github.com/apereo/cas-overlay-template。
这里我们使用的CAS当前最新版本5.3.x,然后我们进入代码根目录下打开pom.xml文件,添加国内的maven镜像源地址,加快下载包的速度,因为CAS需要的包有点多,并且很大,如果为原来的地址,速度非常慢。
<repositories> <repository> <id>sonatype-releases</id> <url>http://oss.
B+Tree 一种搜索,插入,删除都是log(n)的数据结构 a.节点可以有超过两个的子节点 b.适合顺序存取 两种访问叶子节点值得方法 1.Record IDs:指针指向元祖位置 2.Tuple Data:远足内容存在叶子节点中
B+ Tree Operations 插入 这时我们插入70 删除 首先,删除键值为70的这条记录,删除后。 接着我们删除键值为25的记录,但是该值还是Index Page中的值,因此在删除Leaf Page中25的值后,还应将25的右兄弟节点的28更新到Page Index中,最后可得到图。 最后我们来看删除键值为60的情况,删除Leaf Page中键值为60的记录后,填充因子小于50%,这时需要做合并操作,同样,在删除Index Page中相关记录后需要做Index Page的合并操作,最后得到图。 B+Tree 设计准测 Merge: 1.当DBMS半满时不会总是merge 2.延迟的merge操作会减少重组的数量
有重复键的索引 1.Duplicate keys:使用同一个叶子节点,但是存储相同的keys很多次 2.Value lists:只存储一次key,维护一个独一值的链表
不同长度的keys: 1.指针:存储键值作为指向元组属性的键值 2.不同长度的节点:B+tree的每个节点大小不同,但是需要仔细的内存管理 3.Key Map:插入一个指针数组,映射到节点中的key-value
前缀压缩: 1.中间层节点,我们不需要整个key 2.存储一个最小的节点,你要保证正确的指向索引
Skip List: 插入:扔硬币决定该节点在第几层,然后插入 删除:每个节点有一个flag,要删除时,就设置flag,告诉进程忽略这个值,然后一层一侧把他的引用给忽略点
Advantage over B+ Tree: a.使用更少的内存 b.插入和删除不需要再次平衡
Disadvantage over B+ Tree: a.硬盘/缓存不友好,因为没有优化位置 b.调用随机数(实现抛硬币)多次非常慢
Radix Tree: 1.每个字母一个节点,不同于TRIE(同样字母为一个节点,剩下的全部为一个节点)
ggplot2.multiplot是一个易于使用的功能,将多个图形在同一页面上使用R统计软件和GGPLOT2绘图方法。这个功能是从easyGgplot2包。
安装并加载easyGgplot2包 easyGgplot2 软件包可以安装如下:
install.packages("devtools") library(devtools) install_github("easyGgplot2", "kassambara") 使用装载该R代码软件包:
library(easyGgplot2)
ggplot2.multiplot(plot1,plot2,plot3,plot4, cols=2) 参数
参数
说明
...,plotList
用逗号分隔GGPLOT2对象的列表。(如:plot1,plot2,plot3)
COLS
布局列数
转载于:https://www.cnblogs.com/chuningning/p/9292731.html
Buffer Pools 用户对数据库的最基本要求就是能高效的读取和存储数据,但是读写数据都涉及到与低速的设备交互,为了弥补两者之间的速度差异,所有数据库都有缓存池,用来管理相应的数据页,提高数据库的效率,当然也因为引入了这一中间层,数据库对内存的管理变得相对比较复杂。 缓冲池是从磁盘读取的页面的内存缓存,一个内存区域。
Page table: 页中除了存储用户数据,还可以存储控制信息的数据。
缓冲池是从磁盘读取的页面的内存缓存 (a)它是一个由固定大小页面数组组织的内存区域。 每个数组条目称为一个帧 (b)当DBMS请求页面时,将精确副本放入其中一个帧中
缓冲池维护的元数据: (a)页面表:跟踪当前在内存中的页面 (b)Dirty-flag:线程修改页面时设置(需要回写) (c)Pin-counter:触摸该页面的线程数
Workloads: 1.OLTP:联机事务处理 短周期 行列式存储 2.OLAP:联机事务分析 周期长 复杂 列式存储
存储模型: 1.n-ary storage model 优点: 插入,更新,删除操作快 对于需要整个关系的查询非常友好 缺点: 数据量大,都传入内存时,容易堵塞 2.column store 优点: 减少IO,因为DBMS只读需要的数据 缺点: 不利于OLTP
Locks VS Latches 1.Locks 保护数据库事务免受其他事务影响 负责事务时期Held for transaction duration 允许事务执行或者让事务推迟直到一个安全的状态 2.Latches (a)保护DBMS内部数据结构的关键部分不受其他线程的影响 (b)负责操作时期Held for operation duration (c)不需要能够回滚更改
时钟算法: LRU(least recently used)参考链接:https://blog.csdn.net/wanghao109/article/details/13003479
redis的数据恢复过程 redis的数据载入主要是指redis重启时候恢复数据的过程,恢复的数据总共有两种:
aof 数据文件rdb 数据文件
数据恢复的过程是二选一的过程,也就是如果开启aof持久化那么就会使用aof文件进行恢复,如果没有才会选择rdb文件进行恢复。 void loadDataFromDisk(void) { // 记录开始时间 long long start = ustime(); // AOF 持久化已打开? if (server.aof_state == REDIS_AOF_ON) { // 尝试载入 AOF 文件 if (loadAppendOnlyFile(server.aof_filename) == REDIS_OK) // 打印载入信息,并计算载入耗时长度 redisLog(REDIS_NOTICE,"DB loaded from append only file: %.3f seconds",(float)(ustime()-start)/1000000); // AOF 持久化未打开 } else { // 尝试载入 RDB 文件 if (rdbLoad(server.rdb_filename) == REDIS_OK) { // 打印载入信息,并计算载入耗时长度 redisLog(REDIS_NOTICE,"DB loaded from disk: %.3f seconds", (float)(ustime()-start)/1000000); } else if (errno !
https://blog.csdn.net/moshenglv/article/details/77868014
https://zhidao.baidu.com/question/1735949485377425227.html
https://blog.csdn.net/jobjava/article/details/19084019
https://www.cnblogs.com/tanwei81/p/6814022.html
https://www.2cto.com/kf/201801/716435.html
https://blog.csdn.net/ninifengs/article/details/77141240
https://zhidao.baidu.com/question/2204028856388354348.html
https://blog.csdn.net/OiteBody/article/details/70882940
http://blog.sina.com.cn/s/blog_6472d0800102xjpm.html
https://blog.csdn.net/u012410733/article/details/52791086
https://blog.csdn.net/u010429286/article/details/79022484
https://jingyan.baidu.com/article/9158e00013a487a254122892.html
https://blog.csdn.net/qq_29347295/article/details/78089416
https://blog.csdn.net/jacksonning/article/details/8720195
https://www.cnblogs.com/feifanpc/archive/2011/04/11/2013067.html
https://blog.csdn.net/u012410733/article/details/52791086
https://www.2cto.com/kf/201710/694372.html
https://blog.csdn.net/Small_Mouse0/article/details/78551900
https://www.cnblogs.com/holten/p/5729226.html
http://www.cnblogs.com/cjsblog/archive/2018/01/16/8296863.html
https://blog.csdn.net/bigkylin/article/details/71438096
https://www.cnblogs.com/huzi007/p/5550440.html
https://www.cnblogs.com/softidea/p/3760213.html
https://blog.csdn.net/wu1226419614/article/details/73740899
https://blog.csdn.net/ls5718/article/details/52396652
https://www.cnblogs.com/benshan/p/3551987.html
https://www.cnblogs.com/chenjfblog/p/7685579.html
https://www.cnblogs.com/xdp-gacl/p/3777987.html
https://blog.csdn.net/loongshawn/article/details/72367771?locationNum=15&fps=1
https://blog.csdn.net/u013473691/article/details/52790227
https://blog.csdn.net/qq_23703157/article/details/53693334?locationNum=3&fps=1
https://blog.csdn.net/ouyida3/article/details/49534839
https://www.sohu.com/a/154690419_99937638
https://my.oschina.net/brucechen/blog/335653
https://www.2cto.com/database/201805/744702.html
http://www.uml.org.cn/pzgl/201805102.asp?artid=20718?weiid=2079
https://www.zhihu.com/question/48627764/answer/259103512
https://blog.csdn.net/fighting_one_piece/article/details/51765383
https://zhidao.baidu.com/question/449651156.html
https://yq.aliyun.com/articles/59972
https://www.cnblogs.com/heflat/p/7872860.html
https://blog.csdn.net/maozexijr/article/details/79364147
http://baijiahao.baidu.com/s?id=1567487737636864&wfr=spider&for=pc
https://blog.csdn.net/Andy86869/article/details/77939098
https://www.2cto.com/database/201803/733500.html
http://book.ecmoban.com/
http://www.yixieshi.com/16832.html
http://www.ifanr.com/minapp/929147
https://blog.csdn.net/Andy86869/article/details/77939098
https://www.zhihu.com/question/50662784
https://www.oschina.net/question/878630_2199030
https://blog.csdn.net/jueshengtianya/article/details/50268797
https://blog.csdn.net/jueshengtianya/article/details/44016693
https://zhidao.baidu.com/question/9837453.html
https://www.cnblogs.com/wt645631686/p/6868615.html
https://www.cnblogs.com/yeahwell/p/5330012.html
https://www.zhihu.com/question/40300713
https://blog.csdn.net/zhangmeng1020/article/details/50886185
https://www.jianshu.com/p/4fbb0b863c6e
https://blog.csdn.net/high2011/article/details/52812746
https://blog.csdn.net/ck4438707/article/details/53377413
https://blog.csdn.net/mazhenzhu1272/article/details/79783619
https://blog.csdn.net/tangruyi1992/article/details/51991889
http://www.runoob.com/linux/linux-command-manual.html
https://blog.csdn.net/ljianhui/article/details/11100625
https://www.zhihu.com/question/29075085
https://www.cloudera.com/more/events.html
https://blog.csdn.net/qq_37805183/article/details/75088375
https://blog.csdn.net/u011197448/article/details/53692244
### 随机生DataFrame 类型数据 import pandas as pd import numpy as np frame = pd.DataFrame(np.random.rand(4,4),index=list('abcd'),columns=list('ABCD')) frame ABCDa0.5600940.3526860.9541000.926277b0.5637280.3355170.2329020.973932c0.4821550.9766180.5654620.445108d0.4771460.9333530.2917640.986668 1、loc 基于行标签和列标签(x_label、y_label)进行索引
### .loc先行后列,中间用逗号(,)分割,例如取 a 和 A 对应的数据 frame.loc['a','A'] 0.56009394013943303 ### 取前两行对应数据 frame.loc['a':'b',:] ABCDa0.5600940.3526860.9541000.926277b0.5637280.3355170.2329020.973932 ### 取前两列对应数据 frame.loc[:,'A':'B'] ABa0.5600940.352686b0.5637280.335517c0.4821550.976618d0.4771460.933353 ### 取前两行和前两列对应数据 frame.loc['a':'b','A':'B'] ABa0.5600940.352686b0.5637280.335517 ### 上面的例子取的都是连续的行和列,若取第一行和第四行、第一列和第四列对应的数据,则 frame.loc[['a','d'],['A','D']]上面的例子取的都是连续的行和列,若取第一行和第四行、第一列和第四列对应的数据,则 frame.loc[['a','d'],['A','D']] ADa0.5600940.926277d0.4771460.986668 2、 iloc 基于行索引和列索引(index,columns) 都是从 0 开始
如果数据的行标签和列标签名字太长或不容易记,则用 iloc 很方便,只需记标签对应的索引即可
### .loc先行后列,中间用逗号(,)分割,例如取 a 和 A 对应的数据 frame.iloc[0,0] 0.56009394013943303 ### 取前两行对应数据 frame.iloc[0:2,:] ABCDa0.5600940.3526860.9541000.926277b0.5637280.3355170.2329020.973932 ### 取前两列对应数据 frame.iloc[:,0:2] ABa0.5600940.352686b0.5637280.335517c0.4821550.976618d0.4771460.933353 ### 取前两行和前两列对应数据 frame.
原文:https://mp.weixin.qq.com/s/tHbasjxsKbbnaIn7nP2D4g
一、一面多图的实现方法:
- 输入:
minute <- c(110,118,120,123,131,137,144,149,152,160) VC <- c(5283,5299,5358,5292,5602,6014,5830,6102,6075,6411) lrdata <- data.frame(minute,VC) modelle <- lm(VC~minute,data=lrdata) pre <- predict(modelle,newdata=data.frame(minute),interval = "prediction") newlr <- cbind(lrdata,pre) p1<-ggplot(newlr,aes(x=minute,y=VC))+geom_point(size=3,colour="blue") p2<-ggplot(newlr,aes(x=minute,y=VC))+geom_point(size=3,colour="blue")+ geom_segment(aes(x=minute, xend=minute, y=VC, yend=fit),size=1,linetype=2,colour="red")+ geom_line(aes(y=fit), color = "blue", linetype = "dashed",size=1)
方法1: - 输入:
library(gridExtra)
grid.arrange(p1,p2,nrow=1)
- 结果:
方法2: - 输入:
library(Rmisc)
multiplot(p1,p2,cols=2)
- 结果:
方法3: - 输入:
install.packages("cowplot")
library(cowplot)
plot_grid(p1, NULL, NULL,p2, labels = c("A", "", "", "B"),ncol = 2)
- 结果:
datagridview中输入密码,显示星号*
private void dataGridView1_CellFormatting(object sender, DataGridViewCellFormattingEventArgs e)
{
if (this.dataGridView1.Columns[e.ColumnIndex].Name == "password" && e.Value != null && e.Value.ToString().Length > 0)
{
e.Value = new string('*', e.Value.ToString().Length);
}
}
private void dataGridView1_EditingControlShowing(object sender, DataGridViewEditingControlShowingEventArgs e)
{
TextBox t=e.Control as TextBox;
for (int i=0;i<dataGridView1.Rows.Count;i++)
{
if (this.dataGridView1.Columns[i].Name == "password")
t.PasswordChar = '*';
else
t.PasswordChar = new char();
}
}
1)假设系统有N个核,创建N个线程,分别绑定到核0...(N-1);
2)所有线程通过同一个互斥锁[FIFO方式唤醒]进行阻塞和唤醒操作,并对自己被唤醒计数;
3)核间随机唤醒;执行一段时间,至少N分钟
#include "testfrmw.h"
#include "smp_test.h"
volatile int ipi_count[CPU_NUM] = {0};
volatile int ipi_count_temp[CPU_NUM] = {0};
pthread_mutex_t ipi_thread_mutex;
pthread_t ipi_t_id[CPU_NUM];
static smp_arg_stru arg_stru_arry[CPU_NUM];
int fail_flag = 0;
int ipi_main_ret = 0;
static int permanent_thread_init(void)
{
int id;
int ret;
ret = pthread_mutex_init(&ipi_thread_mutex,NULL);
if(ret)
{
printf("pthread_mutex_init fail!\n");
return ret;
}
//每核创建一个常驻线程
for(id = 0; id < CPU_NUM; id++)
{
arg_stru_arry[id].pcount = &ipi_count[id];
arg_stru_arry[id].pmutex = &ipi_thread_mutex;
ret = smp_pthread_init(&ipi_t_id[id],&arg_stru_arry[id],id);
if(ret)
环境:VS2013
C/C++端:
新建项目>> Visual C++ >> Win 32 控制台应用程序,后面注意选择 DLL、空项目。
然后新建一个C/C++源程序文件,完成的DLL需要处理的功能,如:
int dlltest(char *str, char *ans)
{
……
}
str作为传入的字符串,ans作为传回的字符串,因内存实际在C#调用端分配,提供内存引用。
新建一个 xxx.def 文件,内容如下:
LIBRARY MYDLL
EXPORTS
dlltest
其中,MYDLL是DLL项目工程名,也即最终的DLL文件名;dlltest是源程序文件中的某个函数,即DLL开放的接口。
在项目的属性配置中,配置属性>>链接器>>输入>>模块定义文件,输入xxx.def。
为了生成的DLL能在其他机器上正常运行,还需要修改:项目属性->配置属性->常规->MFC的使用:在静态库中使用MFC。
完成之后,生成mydll.dll,将文件复制到C#程序的目录下。
C#端:
usingSystem.Runtime.InteropServices;
[DllImport("mydll.dll",CharSet = CharSet.None, CallingConvention = CallingConvention.Cdecl)]
static extern int dlltest(byte[] str, byte[] ans);
在C#中需要注意 byte[] 和 string 的转换。
调用:
byte[] str = Encoding.ASCII.GetBytes(s);
byte[] ans = new byte[256];
int n = dlltest(str, ans);
string result = Encoding.
use ‘strict’: "严格模式"是一种在JavaScript代码运行时自动实行更严格解析和错误处理的方法。这种模式使得Javascript在更严格的条件下运行。
最好只在函数内使用严格模式。例如:
function doSomething() { “use strict”; // 严格模式下运行 }
function doSomethingElse() { // 非严格模式下运行 } 如果你想严格模式应用于多个函数:
(function() {
"use strict"; function doSomething() { // this runs in strict mode } function doSomethingElse() { // so does this } }()); 设立"严格模式"的优点: 1. 消除Javascript语法的一些不合理、不严谨之处,减少一些怪异行为;
2. 消除代码运行的一些不安全之处,保证代码运行的安全;
3. 提高编译器效率,增加运行速度;
4. 为未来新版本的Javascript做好铺垫。
注:经过测试 IE6,7,8,9 均不支持严格模式。
缺点: 现在网站的 JS 都会进行压缩,一些文件用了严格模式,而另一些没有。这时这些本来是严格模式的文件,被 merge 后,这个串就到了文件的中间,不仅没有指示严格模式,反而在压缩后浪费了字节。
事例:
变量必须先声明,再使用 function test(){ "use strict"; foo = 'bar'; // Error } 不能对变量执行delete操作 var foo = "
在前面讲解Kotlin数据类型的时候,提到了字符串类型,当然关于其定义在前面的章节中已经讲解过了。对Kotlin中的数据类型不清楚的同学。请参考Kotlin——初级篇(三):数据类型详解这篇文章。
在这篇文章中,会对字符串(String)的常用操作做出一个讲解。比如,字符串的截取、查找、获取长度、替换等等...
目录 一、字符串查找 字符串查找功能在实际开发中,只会用到几个简单的函数,这里我只说明几个常用的。
1.1、获取第一个元素 val str = "kotlin very good" str.first() <=> str[0] <=> str.get(0) 复制代码 其还实现了查找等于某一个字符的第一个元素,即first{}高阶函数
val str = "kotlin very good" // 如果未查找到满足条件的元素,会抛出NoSuchElementException异常 str.first{ it == 'o' } 复制代码 还有一个firstOrNull()函数,它和first()函数的区别在于如果字符串为空串时,first()函数会抛出异常,而firstOrNull()函数会返回null。当然还有firstOrNull{}函数,它和first{}函数的区别在于如果字符串为空串时,first{}函数会抛出异常,而firstOrNull{}函数会返回null
1.2、 获取最后一个元素 val str = ... str.last() <==> str.get(lastIndex) <==> str[lastIndex] 其中 lastIndex 是一个拓展属性,其实现是 length - 1 复制代码 同时还实现了查找等于某一个字符的最后一个元素,即last{}高阶函数
val str = "kotlin very good" // 如果未查找到满足条件的元素,会抛出NoSuchElementException异常 str.last{ it == 'o' } // 其实从源码中我们发现其是对原字符串反转之后再进行遍历查找满足条件的元素。 复制代码 lastOrNull()同firstOrNUll()一样。lastOrNull{}同firstOrNUll{}一样。
以下所列问题,都是本人在使用Logstash做异库同步业务中,所遇到的问题,记录一下,供大家参考。很多问题解决后,想想感觉很崩溃,尤其是第二个问题。
一、
[FATAL][logstash.runner ] An unexpected error occurred! {:error=>#<NoMethodError: undefined method `[]' for nil:NilClass>, :backtrace=>["/export/servers/logstash-6.2.2/vendor/bundle/jruby/2.3.0/gems/stud-0.0.23/lib/stud/buffer.rb:187:in `buffer_flush'", "/export/servers/logstash-6.2.2/vendor/bundle/jruby/2.3.0/gems/stud-0.0.23/lib/stud/buffer.rb:112:in `block in buffer_initialize'", "org/jruby/RubyKernel.java:1292:in `loop'", "/export/servers/logstash-6.2.2/vendor/bundle/jruby/2.3.0/gems/stud-0.0.23/lib/stud/buffer.rb:110:in `block in buffer_initialize'"]} [INFO ][logstash.pipeline ] Pipeline started succesfully {:pipeline_id=>"main", :thread=>"#<Thread:0x1b2da3f0 run>"} [INFO ][logstash.agent ] Pipelines running {:count=>1, :pipelines=>["main"]} [ERROR][org.logstash.Logstash ] java.lang.IllegalStateException: org.jruby.exceptions.RaiseException: (SystemExit) exit 这个问题很隐晦。当我们使用-t对logstash的配置文件进行测试的时候,没问题,但是当运行后,就会出现这样的错误。在我多次的测试中,发现这其实还是配置文件的问题,只是logstash架构自己不能检测出来。所以遇到这样的问题,别慌。细心检查自己的配置文件。
二、
[WARN ][logstash.outputs.webhdfs ] Failed to flush outgoing items {:outgoing_count=>1, :exception=>"LogStash::Error", :backtrace=>["org/logstash/ext/JrubyEventExtLibrary.java:202:in `sprintf'", "/export/servers/logstash-5.5.3/vendor/bundle/jruby/1.9/gems/logstash-output-webhdfs-3.0.4/lib/logstash/outputs/webhdfs.rb:194:in `flush'", "org/jruby/RubyArray.java:2409:in `collect'", "/export/servers/logstash-5.5.3/vendor/bundle/jruby/1.9/gems/logstash-output-webhdfs-3.0.4/lib/logstash/outputs/webhdfs.rb:189:in `flush'", "/export/servers/logstash-5.5.3/vendor/bundle/jruby/1.9/gems/stud-0.0.23/lib/stud/buffer.rb:219:in `buffer_flush'"
function addLi(){ var listNum=$(".divList").length; var num= listNum == 0 ? 1: listNum+1 ; console.log(num); var divObj = '<div class="divList"><input class="small_input" placeholder="起始年份" name="start_year'+num +'" /><input class="small_input" placeholder="结束年份" name="end_year'+num +'" /><input class="small_input" placeholder="国家" name="country'+num +'" /><input class="small_input" placeholder="项目金额" name="item_amount'+num +'" /><input class="small_input" placeholder="项目名称" name="item_name'+num +'" /></div>' $('.main_business').append(divObj); var input_sum_val=$(".input_sum").val() $(".input_sum").val(++input_sum_val); } <dd style="height: auto;"> <label>主营业务</label> <input class="input_sum" type="hidden" name="max" value="1" /> <div class="main_business"> <input class="small_input" placeholder="起始年份"><input class="small_input" placeholder="结束年份"> <input class="small_input" placeholder="国家"><input class="
https://www.easemob.com/news/797 25个最经典的JavaScript面试题及答案
https://www.cnblogs.com/dll-ft/p/5515692.html JS面试题(二)(常见算法编程)
https://blog.csdn.net/sinat_17775997/article/details/78122999 webpack篇
https://www.cnblogs.com/MythLeige/p/6047838.html 前端js面试中的常见的算法问题
https://www.thinksaas.cn/group/topic/460486/ 7 个基本的 JS 函数【译】
http://www.jobui.com/mianshiti/it/web/5066/ 史上最全前端面试题(含答案)
http://www.jb51.net/article/118657.htm JS实现数组去重方法总结(六种方法)
https://segmentfault.com/a/1190000013529404 vue生命周期面试题
https://blog.csdn.net/u013418331/article/details/53148069 2-面试题-HTML5+CSS3(前端常见面试题带答案 )
https://www.cnblogs.com/pssp/p/5216085.html 彻底理解js中this的指向,不必硬背
https://www.cnblogs.com/sichaoyun/p/8406194.html vuejs面试题
每一次跳槽都是一次复习基础知识的好机会,祝各位找到心仪工作
首先看下retrofit定义的接口:
1.ZhuangbiApi .class
public interface ZhuangbiApi { @GET("search") Observable<List<ZhuangbiImage>> search(@Query("q") String query); } 解释:get请求,baseurl后拼接search,后面跟上 ?q= 的形式(注:Query后自带?) 如:https://www.zhuangbi.info/search?q=110
2.GankApi .class
public interface GankApi { @GET("data/福利/{number}/{page}") Observable<GankBeautyResult> getBeauties(@Path("number") int number, @Path("page") int page); } 解释:get请求,拼接data/福利/{number}/{page},其中,@GET中的{number}会由下面getBeauties参数的number替代,page同理,(注:Path的用法和Query区分) 如:https://www.zhuangbi.info/data/福利/110/1
3.FakeApi .class
// (c)2016 Flipboard Inc, All Rights Reserved. package com.rengwuxian.rxjavasamples.network.api; import android.support.annotation.NonNull; import com.rengwuxian.rxjavasamples.model.FakeThing; import com.rengwuxian.rxjavasamples.model.FakeToken; import java.util.Random; import io.reactivex.Observable; import io.reactivex.functions.Function; public class FakeApi { Random random = new Random(); public Observable<FakeToken> getFakeToken(@NonNull String fakeAuth) { return Observable.
var name=""//动态的name
$('input:checkbox[name='+name+']:checked').each(function() {
alert($(this).val()) });//获取选中的多选的选项
var name="name1";
$('input[name='+ name+ ']:checked').val();//获取勾选的单选的选项
$('input:text[name='+name+']').val() //获取文本框的内容