1 java中判断一个字符串是否“都为数字”和“是否包含数字”和“截取数字”
// 判断一个字符串是否都为数字
public boolean isDigit(String strNum) {
return strNum.matches("[0-9]{1,}");
}
// 判断一个字符串是否都为数字
public boolean isDigit(String strNum) {
Pattern pattern = Pattern.compile("[0-9]{1,}");
Matcher matcher = pattern.matcher((CharSequence) strNum);
return matcher.matches();
}
//截取数字
public String getNumbers(String content) {
Pattern pattern = Pattern.compile("\\d+");
Matcher matcher = pattern.matcher(content);
while (matcher.find()) {
return matcher.group(0);
}
return "";
}
// 截取非数字
public String splitNotNumber(String content) {
Pattern pattern = Pattern.compile("\\D+");
Matcher matcher = pattern.matcher(content);
while (matcher.find()) {
return matcher.group(0);
}
return "";
}
// 判断一个字符串是否含有数字
public boolean HasDigit(String content) {
boolean flag = false;
Pattern p = Pattern.compile(".*\\d+.*");
Matcher m = p.matcher(content);
if (m.matches()) {
flag = true;
}
return flag;
}
2 Tomcat 报错:空指针。An internal error occurred during: "Launching on Tomcat 7.x"
按照如下的3个步骤解决:
1、首先关闭MyEclipse工作空间。
2、然后删除工作空间下的文件。
“MyEclipse10\workspace.metadata.plugins\org.eclipse.core.runtime.settings、com.genuitec.eclipse.ast.deploy.core.prefs”
因为在这个文件中存储了一些部署项目的信息。删了这个部署的项目的信息。
3、重启MyEclipse。
http://blog.csdn.net/hahawhyha/article/details/51815766###;
3 调试代码时,代码乱跳
今天晚上(03-04)遇到一个奇葩问题,在调试mySearch项目时,代码执行顺序很奇怪,不按照代码执行顺序乱跳,很是不解。
现在想来,应该是代码缓存的问题。
经过以下方法解决(类似问题都可以这样处理):
(1) mySearch项目、导入的jar(my_retrieve)项目clean;
(2)在重新生成my_retrieve的jar,导入到mySearch中;
4 近期主要任务
1 完成当前的文章(3.10)
2 完成小桔灯APP(3.23)
3 术语抽取文献仔细阅读,希望能有所突破
5 怎样才能写出一篇好的论文
1. 洗涤心灵阶段
在正式开始之前,花5到10分钟来沉淀心灵吧!写下任何盘旋在您脑海中的事情,无论是需要完成的差事或是所担心的事,而呈现方式则随个人喜好,条列式、树状式、或日记型式都可以(写日记可以帮助人们理解自己脑袋在想什么)。有时候我们会被一些枝微末节的小事所困惑,所以坐下来,写下任何想到的事情,如此便能屏除那些让人分心的想法,甚至想到一些对文章有帮助的点子。无论如何,在开始写作前先把脑袋净空;在开始写作后也可以将笔记本放在旁边,随时写下那些出现脑海里零零散散的想法。
2. 笔记阶段
不要只是阅读数据,要主动且专注地做笔记。做笔记最好的方法之一是1950年代被提出来的Cornell Note Taking System。Cornell笔记页分为三个区块,右边较大的区块为笔记区,让您一边看书/听课一边写下笔记;左边的小区块则用来记录重要的主题以及相关的想法、问题等;下方小区块则用来写下简短的摘要。Cornell笔记页样板:http://www.cornell-notes.com/。
3. 头脑风暴阶段
您不一定会需要这个阶段。假设您已经做好文献探讨并整理好手中的笔记,那您应该十分清楚自己想论述的各个论点,接下来要做的只是将各部份的笔记组合成一篇文章。有时候我们会遇到难题而被卡住,或是在一个段落里要结合很多不同的想法,这时就需要其他方法来帮助我们澄清思绪、架构文章。首先进行脑力激荡,给自己五分钟时间,快速且毫不犹豫地写下任何与研究主题相关的点子,不要花时间过度思考某一个点,即使毫无章法,仍要写下任何想得到的东西。此外,在您完成论文写作前,请不要丢弃这个随手的笔记,有些想法在当下或许看似无关,但却可能在之后忽然变得极具意义。
4. 构思框架阶段
以心智图的方式呈现脑力激荡所得到的结果,藉此整合想法并建立文章架构。心智图法为Tony Buzan于1970年代所提出的一种辅助思考的工具,Buzan强调图上的每一个主题都存在着关联性,由一个中心主题出发,在延长线上衍生更多新的想法。心智图能刺激您的思考,藉此激发更多想法,并帮助您厘清复杂的概念。
5. 完成摘要阶段
在完成资料搜集和脑力激荡后,便可以开始写下一些简短的文字,这些文字就像会议摘要一样,为一篇论文的基本架构。在参考过许多不同的方法后,我们选出七个重点做为文章架构基础。在您开始撰写文章或其中一个章节前,请先浏览以下七点并各写下一个句子。
焦点:广义上的重要事实或相关故事 (In . . .)
文献:有什么已经被研究过了?(It is argued that .. .)
缺口:有什么是缺少的?(However . . .)
迫切性:为什么这个东西现在很重要?(Without . . .)
问题:有什么是需要被探讨的?(This research asks. . .)
方法:该如何进行研究?(By analyzing . . .)
意涵:有什么实际上或哲学上的影响?(This researchshows . . .)
参考:Gerald Graff, Barbara Kamlerand Pat Thomson, Karen Kelsky, Inger Mewburn
6. 迸发阶段
如果手边有已经整理过的笔记,请直接将它们合并成一个新的档案,并尽快将每个笔记间不足的地方填补起来。若先前没有留下任何笔记,则尽可能地一次写下所有想说的论点。
这个阶段是利用写作来反思您在研究中所获得的东西。在此阶段所写下的东西并非是要呈现给读者的内容,而仅是为了帮助自己思考。对许多人来说,要一直到这个阶段他们才能真正厘清自己的思绪、明白自己将如何架构眼前的研究论文。例如,您可能想将某现象与理论作连结,但直到开始写作才了解此连结背后的意涵,并真正将理论与现象结合。此步骤的重要性在于,透过写作来帮助您重新整理脑海中的想法,厘清先前想不通或未曾发现的盲点。
尽可能加快此阶段写作的速度,以确认您是否已收集足够的想法和论点来写作文章。如果您能一口气将脑海中的想法写成粗略的草稿,便能立刻得知已完成的研究是否能与您所欲论述的观点或手中的写作结合,或者发现这些论点仍然不足,需要更多阅读或做进一步思考。只要尽可能写下您的想法,任何形式都可以,不需要过度思考或着墨。
在这个阶段不需要对自己太过严格。在您尝试一边思考一边写作、拟稿的当下,所要做的就仅是写下脑中所有的想法;此时您该做的并非花时间写下完美的草稿,而只是快速的写作,不需要回头修改任何写下的内容,因为还不是时候。在此阶段,请让您的思绪自由奔驰,不需要对写下的内容进行任何批判,也不需要反复检查,写完就进入下一步骤。
****7. 草稿阶段****
前面一个阶段可被视为thinking writing 阶段,接下来则是doing writing 阶段。在经过前面几个阶段后,您已经成功写下脑中的想法,也看过一遍,在这当中找到可以被论述的论点,手边也有足够的数据来发展、铺陈,接着便是时候改变写作型态了。在此阶段,写作不再是为了帮助思考,而是用来向读者展示、论述或证明您的想法及观点。检视您先前写下的每一个简短、粗糙的句子,设法把您初步的想法转变为意思清晰、明确的陈述句,使读者能直接接收您所欲传达的内容。
当进行到某一程度,或卡在某个点上的时候,您可以问问自己:我现在在做什么?是否已达成目的?想想自己在这个阶段遇到什么问题和困难,并写下答案。在经过不断的反思后,您将发现写下的答案都能在写作中派上用场。在写作过程中,您可能会碰上指导教授无法替您解决的、根本的问题,因此得学着自己解决。
8. 自我批判阶段
在批判阶段,您开始审阅、编辑前面写好的文章内容。假设您在没有过度思考的前提下写出了大量文字,现在该做的便是提出问题,并依答案精简您写好的文章,使其更具条理及连贯性。此阶段您可以尽可能的挑剔,大胆删去不相干的内容,使段落与段落间更加紧密。
9. 删减最爱阶段
删减被用来指称编修时最残忍的部分,意即删除您很喜欢、但却没有实际贡献的文字。“最爱”指的是过于累赘、或是因为作者个人偏好而出现的句子或段落。在小说中,这可能是指某个角色、或是一些优美但却对故事发展没有帮助的文句。在学术写作中则是指离题的段落/句子,或是某个很吸引您但却扭曲文章论点的部分。
在此阶段您可采用以下两步骤:
1. 将考虑拿掉的文字先划上删除线,然后重新阅读不含删除线的文章内容,随后再确认是否正式删除划线部分文字。
2. 将删除的文字另存至一个新的档案中,开一个新的文件夹来保存在此次写作中没派上用场的文字和数据。在每次写作过程中,都会有许多未使用但却很重要的数据,当中甚至包含在文章撰写初期出现的、有价值的想法。在处理这些文字时请保持谨慎,写作学术论文是为了清楚传达您的论点,而为了达成此目的,您必须尽可能排除任何可能模糊文章焦点的内容。
6 术语抽取,思路记录
方法:通过HanLP方法,计算三阶、四阶词的MI和Entropy。
1 坚决完成刚才思考的算法(不在迟疑,先去做,做,做)
a 在句子中求取种子词,通过计算MI。(计算一次爬取所有文章中每个词语的MI,小于阈值,则舍弃。)
b 计算种子词左右熵
c 扩展计算MI
d 得出计算结果
这种方法暂时无法继续:
a 句子中的每个词都有MI值,而且每个句子中的MI范围值又不同,所以很难确定一个对所有句子都合适的阈值;
所以:
改:1 通过“串频最大匹配法”提取出一部分种子词,在计算所有种子词的MI和Entropy,进行二次排序提取出合适的词
a 通过“串频最大匹配法”提取出一部分种子词;
b 计算所有种子词的MI,排序。和a对比结果(不同阶数的词,应该对应不同阶数的计算方法)
c 计算所有种子词的Entropy,排序。和a,b对比结果
d 计算所有种子词的MI + Entropy,排序。和a,b,c对比结果
1 使用分隔符,将文章变为句子,然后这些句子利用首尾词性抽取出适合的词
2 通过依存句法,找出句子的主谓宾,统计术语出现的位置,进而找出术语
7 搜索引擎建表数据
DROP TABLE IF EXISTS `t_index`;
CREATE TABLE `t_index` (
`RECID` int(10) NOT NULL AUTO_INCREMENT,
`businessId` int(10) NOT NULL,
`TYPE` varchar(50) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL,
`ACTION` varchar(50) CHARACTER SET utf8 COLLATE utf8_bin DEFAULT 'add',
`ERRCODE` int(11) DEFAULT '0',
`ERRMSG` varchar(1000) CHARACTER SET utf8 COLLATE utf8_bin DEFAULT NULL,
`flag` bigint(15) DEFAULT '0',
`INDEXEDDATE` datetime DEFAULT NULL,
PRIMARY KEY (`RECID`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;
DROP TABLE IF EXISTS `s_news`;
CREATE TABLE `s_news` (
`newsId` INT(11) NOT NULL AUTO_INCREMENT,
`newsTitle` VARCHAR(255) DEFAULT NULL,
`sourceUrl` VARCHAR(255) DEFAULT NULL,
`filePath` VARCHAR(255) DEFAULT NULL,
`newsTime` VARCHAR(255) DEFAULT NULL,
`sourceNet` VARCHAR(255) DEFAULT NULL,
`createTime` DATETIME DEFAULT NULL,
`mark` VARCHAR(255) DEFAULT NULL,
`content` TEXT,
`module` VARCHAR(255) DEFAULT NULL,
PRIMARY KEY (`newsId`)
) ENGINE=INNODB AUTO_INCREMENT=0 DEFAULT CHARSET=utf8;
8 Heritrix爬虫的利弊与抉择。
利:
- 1 整站自动爬取,输入网址,直接自动爬取网站所有内容,不需要繁琐的配置;
弊:
- 1 把网站上所有的内容都搬下来,即使有过滤算法,但是效果还是不佳,还是会抽取到一些主题无关的信息内容;
所以,根据目的要有所取舍。例如主题搜索引擎最主要的还是要与主题相关,自动化配置虽然重要,但是主题更重要。
9 论文主题确定
刚才发现,论文的主题很不明确,杂揉了两个部分:
- 1 自动化构建垂直搜索引擎
这个主题应该是自动化,应该突出的是网站功能(多个服务器、SSH等)。
重点是:由于良好的设计使得能够完成自动化构建垂直搜索引擎功能。
题目可以是类似:自动化构建油气行业垂直搜索引擎等。
摘要:在深入研究垂直搜索引擎各个过程的基础上,运用Heritrix、Solr等JAVA开源工具,结合网页内容抽取和完整性词抽取算法,提出了一套自动化构建垂直搜索引擎的方法。通过该方法,用户只需要在后台输入爬取网站地址,即可自动化完成搜索引擎的建立,具有较强的实用性。
- 2 对搜索引擎构建各个过程的优化(爬取--清洗--索引--搜索)
这个主题应该是对搜索引擎构建各个过程的优化(heritrix、正文抽取算法、抽词算法)。
题目可以是类似:油气行业垂直搜索引擎关键技术研究
所以,请确定一个主题。
10 前几天总结的一些呓语
1 保持专注,和心中的躁动作斗争
2 找回自己的斗志,不能在继续浑浑噩噩了(至少你已经在行动了)
3 我总是在学习的时候有冲动想玩,这个时候如果我去玩一定会增加心中的浮躁,玩的会很难受。
4 做到一点,学习的时候专注,绝对的不分神,因为我的内心深处真的是渴望每天都能够进步一点点的,这样的玩、分神没有任何意义。
5 能力的缺失:a 观察现象、发现问题。b 度量问题、解决问题。
6 每天的每节时间应该是有规划的,例如时间较充沛和时间较紧张时的任务重心应该有所变化
7 保持自制,始终专注于学习,在学习中遇到任何困难,都要勇于面对,静下心来一步一个脚印的处理问题。
a 学--难--分神--自制(学)--难--分神--自制(学)--难--分神(....)--浮躁,愈来愈甚!
b 玩--迷茫(害怕)--浮躁
8 每天需要把自己当天的学习进度做一个记录。
9 渴望绝不等于幸福!你总是渴望分神去做其他的事情,而把你仔细预想的重要的事情抛在脑后。记住做好你计划的事情,舍弃那些让你分神的,突然的渴望。
10 学习没状态时,不要老想着是因为没精神和体力,这些都能克服,其实最大的问题还是你内在的懒惰。这个时候,你需要摒弃一切杂念,全力的进入学习状态。
11 写的程序很乱,做事未能专注,总是半途而废。
12 我的独立思考和解决问题的能力较差,必须要刻意进行这方面的训练。
13 想起来全是问题,做起来才有答案!总在思考,有了思路却因为不完美(害怕)就不去实践,结果到现在一事无成!
14 身边的这些人,你每天会和它们相处8个小时以上,搞好关系非常重要。
15 人的记忆是有时效性的,所以,做一件事情一定要一次把事情做好,做完。否则后面在重新做是一件很痛苦的事情。
16 学习的过程中是绝对不能分神的,分神对于学习的影响真的很大,必须要有紧迫感,这样才能专注。
17 感觉自己辜负了蔡老师的期望。是自己假期的每一次选择导致了现在的后果。自作自受!
11 如何维持现在的状态?(03-06)
刚才感觉有些累,心累,真的是心累!
说实话,现在每天的节奏确实有些快,比之前更快,每天超过16个小时的时间自己都在不停的忙碌,事情一件接着一件,自己一直都在转。
说真的,在找到工作之前,我真的还不想停下来,也不敢。这是心里话,是经过"实践"得出的结论。
我必须学会节省体力,抓重点,这样才能继续坚持下去。
对我来说,重点是:
1 学习,所有的一切都是围绕这一点展开、为这一点服务的。所以学习时我必须保持专注,不断提醒自己兴奋起来。
2 那两个指标,我必须不断提醒自己,要努力控制自己,要"得高分"。
3 健身,身体是一切的基础。
除了所以以上三点,其他的事情,要学会划水。
特别是要控制情绪,少说话。遭遇到任何非重点的事情,不要总是一惊一乍的,要学会以一种很平静的状态面对。
12 SharedPreferences
这个东西一直都没有好好的研究,补一下。
使用步骤:
1、得到SharedPreferences对象。
方法1:
Context.getSharedPreferences(文件名称,操作模式)
文件名称不存在就会创建一个,操作模式有两种:
(1) MODE_PRIVATE:默认操作模式,直接在把第二个参数写0就是默认使用这种操作模式,这种模式表示只有当前的应用程序才可以对当前这个SharedPreferences文件进行读写。
(2) MODE_MULTI_PRIVATE:用于多个进程共同操作一个SharedPreferences文件。
注:MODE_WORLD_READABLE和MODE_WORLD_WRITEABLE这两种模式已经在android 4.2版本以后废弃了。
方法2:
Activity.getPreferences(操作模式)
使用这个方法会自动将当前活动的类名作为SharedPreferences的文件名,底层调用的是下面这个方法
Activity.getSharedPreferences(String name, int mode)我们也可以直接调用getSharedPreferences这个方法,传入自定义的名字。
方法3 :
PreferenceManager.getDefaultSharedPreferences(Context)
使用这个方法会自动使用当前程序的包名作为前缀来命名SharedPreferences文件
2、编辑SharedPreferences对象。调用SharedPreferences对象的edit()方法来获取一个SharedPreferences.Editor对象。
SharedPreferences.Editor editor = getSharedPreferences(“data”,MODE_PRIVATE).edit();
3、向SharedPreferences.Editor对象中添加数据。
editor.putString(“name”,”Lily”); //以键值对形式存储
editor.putInt(“age”,”20”); //以键值对形式存储
editor.putBoolean(“married”,false); //以键值对形式存储
4、调用commit方法将添加的数据提交。
editor.commit();
代码示例:
SharedPreferences pref = MainActivity.this.getSharedPreferences(“data”,MODE_PRIVATE);
SharedPreferences.Editor editor = pref.edit();
editor.putString(“name”,”lily”);
editor.putString(“age”,”20”);
editor.putBoolean(“married”,false);
editor.commit();
如果要读取数据:
SharedPreferences pref = getSharedPreferences(“data”,MODE_PRIVATE);
String name = pref.getString(“name”,”“);//第二个参数为默认值
int age = pref.getInt(“age”,0);//第二个参数为默认值
boolean married = pref.getBoolean(“married”,false);//第二个参数为默认值
保存对象:
Android使用SharedPreferences保存对象 - 推酷
http://www.tuicool.com/articles/6nAZrq
保存list:
可以将list转化为json字符串,然后以string的形式保存,使用的时候先取出这个string再解析json得到list。
13 eclipse启动时一直卡在android sdk content loader解决办法。方法2管用
方法1、工作目录.metadata.plugins\org.eclipse.core.resources.projects下面除(.org.eclipse.jdt.core.external.folders)外所有文件清空。
方法2、只要把 .android 目錄的ddms.cfg 删掉就可以了,记得删除前要备份额!然后重启eclipse。
http://blog.csdn.net/androidcc/article/details/52770634
14 Android Studio快速生成get,set,tostring,构造函数
两种方式(推荐方式一):
方式一:通过快捷键Alt+Insert
方式二:Code-->Generate
15 Android自动登录功能的实现
http://blog.csdn.net/lb1207087645/article/details/52900657
16 Android中常用的Adapter的总结
https://my.oschina.net/u/658933/blog/372151
17 PullToRefresh的使用
PullToRefresh是一套实现非常好的下拉刷新库,它支持:
1.ListView
2.ExpandableListView
3.GridView
4.WebView
PullToRefreshListView 用法和ListView 没有什么区别 listview能用的属性 pulltorefresh也能用,而且在下拉刷新或者分页加载数据的时候,使用PullToRefreshListView 实现下拉刷新或者分页加载配置起来更为简便,特别是对于Android底层不太熟悉的开发者,使用PullToRefreshListView 配置起来更为方便些,可以省去你写footView跟headerView相关底层代码的逻辑配置。
android studio引入library方法
//gradle 中配置
compile 'com.github.userswlwork:pull-to-refresh:1.0.0'
http://blog.csdn.net/xieluoxixi/article/details/53871286
18 Android-Studio常用快捷键记录
提取局部变量:Ctrl+Alt+V
提取全局变量:Ctrl+Alt+F
提取方法:Shit+Alt+M
对齐代码 : Ctrl+Alt+L
变大写 : Ctrl + Shift + U
19 Fragment中如何使用findViewById?
使用getView()方法就OK了,因为这个方法最终会返回当前fragment的根视图。进而使用findViewById
Button btn = (Button) getView().findViewById(R.id.btn);
而如果你用inflate方法自己实例化一个view,那就应该这样
Button btn = (Button) view.findViewById(R.id.btn);
http://blog.csdn.net/kwinwo/article/details/51111798
20 使用ButterKnife初始化界面控件,发现总是报错“空指针”
需要在页面初始化之后,调用ButterKnife.bind(this, view);
View view = UIUtils.getXmlView(R.layout.fragment_date);
ButterKnife.bind(this, view);
21 SwipeRefreshLayout布局中添多个控件时只能显示一个
所以首页的布局显示不出来
22 android项目中spinner设置默认值
23 在xml中将两个要占屏幕一半的控件都加上android:layout_weight="1";