package jdbc.ch06;
import java.sql.*;
import java.util.ArrayList;
class Values{
private String name;
private int number;
private String type;
private int low,high;
private int status;
public Values(){}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getNumber() {
return number;
}
public void setNumber(int number) {
this.number = number;
}
public String getType() {
return type;
}
public void setType(String type) {
this.type = type;
}
public int getLow() {
return low;
}
public void setLow(int low) {
this.low = low;
}
public int getHigh() {
return high;
}
public void setHigh(int high) {
this.high = high;
}
public int getStatus() {
return status;
}
public void setStatus(int status) {
this.status = status;
}
}
class DatabaseConnect {
Connection conn;
Statement stat;
ResultSet res;
void connect(){
try {
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
String url = "jdbc:sqlserver://localhost:1433;databaseName = master";
String username = "sa";
String password = "sa";
conn = DriverManager.getConnection(url, username, password);
stat = conn.createStatement();
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
System.out.println("驱动加载失败");
e.printStackTrace();
}catch(SQLException e){
System.out.println("数据库连接失败");
}
}
ResultSet query(String sql){
if(stat == null){
System.out.println("数据库访问失败");
}
try {
res = stat.executeQuery(sql);
return res;
} catch (SQLException e) {
// TODO Auto-generated catch block
System.out.println("数据表操作失败");
e.printStackTrace();
}
return null;
}
void close(){
try {
if(conn != null)
conn.close();
if(stat != null)
stat.close();
if(res != null)
res.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public static void main(String[] args) {
// TODO Auto-generated method stub
DatabaseConnect dbConn = new DatabaseConnect();
dbConn.connect();
String sql = "select name,number from spt_values";
ResultSet res = dbConn.query(sql);
System.out.println("name" + "\t\ttnumber" );
ArrayList<Values> values = new ArrayList<Values>();
try {
while(res.next()){
int number = res.getInt("number");
String name = res.getString("name");
//存储结果集中的所有记录
//System.out.print(name);
//System.out.println("\t\t" + number);
Values value = new Values();
value.setNumber(number);
value.setName(name);
values.add(value);
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally{
dbConn.close();
}
System.out.println(values.size());
}
}
考研良言
“如果再给我一次机会,我肯定会做得更好!”考研后几乎每个人都会这么说,为什么呢?因为在这一次考研中我犯了一些不该犯的错,否则……那么,考研中有那些事情本来可以做得更好呢?考研中有什么禁忌呢?经过分析总结,归纳演绎,总结出考研中的十大禁忌如下:
禁忌一:三心二意
考研成功的理由有成百上千个,但考研失败的原因却只有一个,那就是考研最大之忌:三心二意。
我觉得考研最主要的还是一个心态的问题:三心二意、心猿意马、心浮气噪。不管是已经毕业的还是在校的学生,这一点都是考研大忌。在考与不考之间徘徊,把考研当成一个平衡的手段,老觉得考不上还可以工作,实际上这种心理对考研的影响是很大的。考研是一件艰辛的事,耐不住寂寞的人和心浮气噪的人考研,往往不能把心事放在复习上,别看他整天在教室呆着,但效果究竟如何呢?在考研教室里趴着桌子睡觉是司空见惯的事情。
还有我们考研的大都是二十好几的人了,特别是还没有找另一半的,既眼红于眼前的卿卿你我,又要应付老爸唠叨,有时倍感凄凉,即使考研期间也不例外。感情在考研期间也倍受煎熬,有时也会受到意想不到的致命打击。但我想既然选择了这一切,目前的局势还无法改变,唯一能做的就是好好备考。
有一些考研的复习时老爱灵魂出窍,三天打鱼,两天晒网,认真不了三天就想轻松轻松,可能是平时散漫惯了。考研考的是人的毅力,要坚持,虽不可能是天天如一日,但也不能只有三天的热情吧!要有足够的勇气去大胆的选择,要有足够的精力去应付。这是很重要的。
考研需要耐力,信心,忍受寂寞,学会放松。既然选择了考研就要专心考,不要朝三暮四,花其它的心思,我知道做到这一点,非常困难,却很重要。考研就是两个字“坚持”。
禁忌二:意气用事
考研之所以失败,是因为没有把考研真正的放在心上,是因为我们太意气用事了!不是发自内心的考研动机,成功的几率不会太大。
意气用事到底害了谁?
有的人只是为了一个名校梦,不切实际只能注定失败;有的人把考研当成一种与他人抗衡的工具或途径,这样考研就失去了它本身的意义;有的人觉得无所谓,可考可不考,只是觉得这段时间很无聊,甚至把考研当成了水平测验。实际上这牵涉到了为什么考研的问题。我知道,好多人考研只是为了感情、工作等造成的压力,内心并没有太大的动力,意气用事往往造成主次不分,这样的考研即使成功了又有什么意义呢?
我认为始终要坚持考研第一,把考研当成自己目前的事业来做。态度决定一切,一定要端正考研态度,给自己一个明确的定位,知道自己在做什么该做什么并且知道自己要该怎样去做;要勇敢地面对考研中遇到的困难和障碍,克服犹豫不决、精力分散、躲避面对、信心不足等消极影响,集中精力积极面对,只要能够在较长时间里保持注意力,并且坚持学习到最后,我想没有什么我们达不到的目的。
禁忌三:信心不足
可以这么说,考研那么多人,有信心的能有几个?这也许就是整体成绩不高,每年有大面积的人落榜的真正原因吧!
不是因为做不到而没有信心,而是因为没有信心所以才做不到。
其实考研并不难,难的是如何相信自己有成功的绝对实力。这是好多同学的通病,还没有考试心已胆怯,那样失败只是早晚的事情。他们可能在大学四年的成绩一般,甚至可能在一所不入流的学校,而考研的千军万马中不乏那些来自名校成绩骄人的学子,再加上地域、主场优势,可能未战已失去了一些信心。这是要不得的!
事实上,平时成绩好坏与能否考上研没有太大的关系,好多成绩不好的学生,他们甚至有个别课程没有及格,英语没过四级,但这并不影响他们考上重点院校;考研比考大学要相对容易的多,好多没能考上清华、北大的在考研时实现了他们四年前的梦想。大家都是从考的独木桥上走过来的,为何在考研时不相信自己呢?
禁忌四:没有良伴
谁与我度过漫长的这么多天是一个大问题。
考研需要花费很长的时间,中间还要承受很大的压力,其中有时你也会很烦躁,希望有人在身边和自己一起努力,提醒自己曾经定下的目标和当初的梦想;在遇到困难时有人与你并肩作战,可以排除孤独感,增加必胜的信心;同时在比较中前进,可能会有更好的效果。
虽说考研最好结伴,但要睁大双眼选择。意志不坚定的不要选,你不仅要帮他增强信心上,而且说不定你的意志也会被他给催垮了;边考研边找工作的人不要选,这种人不会全心投入考研,最后很有可能结伴去找工作了;别做考研中的电灯泡,一来妨碍了别人,二来让你倍感凄凉与冷落,影响复习的心情;慎重对待男女同考,这是一件很危险的事情,试想两个人亲亲密密一边嗑瓜子一边看辅导书,效率到底会怎样呢?
禁忌五:消息闭塞
错过一些必要的信息,是导致考研失败的一大原因。
现在的考研实际上是一个信息战争,得到一些确切的相关情报不仅可以节省你的时间和精力,而且还会出其不意地得到一个理想的结果。有的人喜欢一人埋头苦干,以为工夫下到了,自然水到渠成。但考研还讲究效率,还讲究针对性。公共课的命题趋势、重点,专业课历年的题目,没有换老师命题(专业课一般换老师命题就会大变)等等信息,将很大程度地影响考研结果。
考研期间要多和考研的战友交流,这样可以获得一些大家都心知肚明的信息;通过多种途径与考过该专业的学长请教一下考研经验,吸取一些教训,问问注意事项,甚至可以获得一些“内幕消息”;了解一下专业课老师的喜好,有可能就上上他讲的课,再分析一下历年真题,一般都可以得出点什么结论来;还有就是利用网络,可以提供一些相当适用的信息。但劝诫一下,每天上网时间不可超过三个小时,因网络容易让人沉溺,信息庞杂,要有目的地搜寻相关信息,不要干无关的事情。
禁忌六:法不得当
在考研中除了勤奋用功、坚持不懈以外,复习方法也非常重要。
如果考研中法不得当,就会不得要领,甚至本末倒置,做出舍本逐末的事情来。
复习时就要抓住考试这个根本,从分析考试大纲和真题入手,确定复习重点,将重要的知识点和题型搞透,不要妄图面面俱到,否则你的时间肯定不够。还要注意把握记忆规律,平时不会做或做错的题要特别注意,最好隔段时间就要重做一遍,直到它真的成为你自己的东西,否则考试时你就会觉得许多题都似曾相识,却就是做不出。
复习要注意几点:方法技巧是很重要的,但要重在理解;不提倡题海战术,但做题要有一定的量,不要只看例题,不动笔练习,还要学会与人交流,学会归纳总结,适当记忆;还有要重基础,明主次,把握好什么是重要的,什么是次要的,不要舍本逐末,花时间做无用功;还有就是要做到持之以恒,坚持到考试结束。
禁忌七:过分依赖
经历了这次考研,真切地体会到人与人是不同的。
没有一个人的经验可以完全适用于另外一个人。
过分依赖情况,迷信于别人所谓的经验。用哲学的观点来说就是知和行的关系。别人的经验只可以用来借鉴而不可以生搬硬套。每个人的情况都是不一样的,我们应该实事求是,找出适合自己的学习方法来。
复习最主要的还是要靠自己静下心来慢慢地理解。不要太迷信前人,也不要太在意周围的人怎么着怎么着。很重要的一点是问问自己究竟是属于哪一种学习类型的人,再根据自己的情况制定计划书,千万不可以盲目跟从别人的经验和进度,那样不但扰乱了自己正常的学习计划,也会影响了别人的情绪。对待辅导班时一定要谨慎,不要被辅导班的广告所迷惑,如果非要上不可,那就多向师兄师姐请教,选择口碑最好的辅导班。
禁忌八:贪得无厌
考研后,我们发现有不少的资料只看了一点点或者根本没看,有一部分资料我们看了一半,还有一些资料确实对有用,我们看了N遍!
考研时的复习资料很多,而且值得参考的也很多,不过,没有一个人可能把所有的资料都看完,更何况也没有必要,因此我们就要有选择的来看。
买过多的参考书,不但浪费钱,而且还会给自己造成心理负担,如果书的质量不高的话,做了浪费时间而且影响做题思路,绝对百害而无一利。
一般说来,前期每科固定一两本书就可以了,比如说英语用朱泰淇的,数学看陈文灯的,政治用任汝芬的,不能贪多,俗话说的好“贪多嚼不烂”,还浪费“粮食”!后期各科选择一本习题集加上真题来做就OK了。
禁忌九:没有计划
考试准备不足的最大的原因是没有一个合理的复习计划。
这样将造成很多的考生不能很好地利用时间,一部分知识点不能充分地理解和掌握。
Bad planning will lead to difficulty later。制定合理有效的学习计划是考研成功的保证。把考研时间划分成不同阶段,针对各阶段的特点有所侧重地安排任务,根据整体复习与阶段复习、单科复习相配套的原则,结合自己的实际情况,制定出全面兼顾,有的放矢的计划。虽然计划赶不上变化,但制定了计划就要最大限度的发挥作用,就要在必要的灵活变通的情况下坚决执行,不要很随意的一变再变。
有了计划可以保长补短,可以避免外界的干扰,可以提高自己的自信心。如果我们订的计划能够得到完全执行,相信考研只是小事一桩。因为通过计划我们可以更合理地学到考试要点,不会有去找工作或者报考公务员之类想法,不会盲目地和其他同学攀比。循序渐进,肯定能高效率的达到目标。
禁忌十:准备不足
大多数考生考完后的感觉是:题目不难也不是很偏,只是自己时间太少了,自己的复习准备不足。
凡是预则立,不预则废。常胜将军不打无预备之仗。虽然有的人在很早之前就声称考研了,可那也是雷声大,雨点小,没有什么实际行动。到了关键阶段好不容易有了行动,但由于不是很投入,也没有什么效果。等到幡然悔悟时,离考试也就没多少时间了!更有的不到火烧眉毛不着急,待到着急时,后悔都来不及了!所以每年号称有数十万人报名考研,但真正坐到考场上时就少了一小半,等到真正坚持考完而且有信心者,寥寥无几,而这些人基本上就没什么问题了。
准备不在于早,而在于是否真正用心准备,是否真正全身心地投入。一般情况下在大三暑假即七月份开始着手准备,此时距考试还有半年,时间足够了。甚至在9月份也来得及。但千万记住:一旦开始动手准备,就要全身心的投入,至少要保证每天有8~10小时的复习时间,否则,到时候你也会后悔的。
问题描述:随机产生n个黑白颜色的球,围成一个圆圈,作为初始状态,现按如下规则进行调整:若相邻两球同色,则新增黑球,反之,增加白球;试讨论这n个球在经过若干不调整后,颜色是否收敛(即同色)。
猜想(可能是定理吧,我没证明):
当球的个数为2的n次方时,最多经过2的n次方减1次调整,即可同色。否则,仅当初始状态同色,或黑白相间时,经调整才会同色,其余情况,都不可能同色。
截图略,可参看上篇博文。。。
matlab代码:(感谢MC同学指点,使代码执行速度显著提高)
function Game(graphNum,runNum)
A=randint(1,graphNum,[0 1]);
B=zeros(1,graphNum);
t=0:0.1:2*pi;
r=pi/(2*graphNum);
plot(sin(t),cos(t));
axis equal;
hold on;
for j=1:runNum
for i=1:graphNum-1
if A(i)==A(i+1)
B(i)=1;
else B(i)=0;
end
end
if A(1)==A(graphNum)
B(graphNum)=1;
else B(graphNum)=0;
end
A=B;
end
for i=1:graphNum
if A(i)==0
patch(sin(2*pi/graphNum*(i-1))+r*sin(t),cos(2*pi/graphNum*(i-1))+r*cos(t),'r');
else patch(sin(2*pi/graphNum*(i-1))+r*sin(t),cos(2*pi/graphNum*(i-1))+r*cos(t),'k');
end
end
用实际数据预测的截图:
观测值与预测值的相对误差,及拟合图像:
matlab代码如下,各种函数功能及调用结构在注释中有详细的说明
%原始观测值
X0=[0.1162 0.1245 0.1346 0.1499 0.1727 0.1930 0.2184 0.2489];
[~,m]=size(X0);
T=zeros(1,m-1);
for n=1:m-1
T(n)=abs(X0(n+1)-GM(X0,n+1))/X0(n+1); %计算相对误差
end
W=zeros(1,m-1);
for n=1:m-1
W(n)=GM(X0,n+1);
end
[~,m]=size(X0);
YN=zeros(m-1,1);
for i=1:m-1
YN(i,1)=X0(i+1);
end
wucha=max(T) %最大误差值
nine=GM(X0,9)
ten=GM(X0,10)
plot(W,'k'); %W为预测值
hold on;
plot(YN','k'); %YN'为观测值
plot(T,'k') %T为相对误差
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%X=GM(X0,n)函数用来返回观测值运用GM(1,1)算法得到的第n个预测值
function X=GM(X0,n)
Y=zeros(1,n);
X1=acc(X0); %调用自定义函数acc
B=getB(X1); %调用自定义函数getB
YN=getYn(X0); %调用自定义函数getYn
C=(B'*B)\(B'*YN); %拟合出a,b的值存入C矩阵
a=C(1,1);
b=C(2,1);
for k=0:n-1 %将为还原的预测值(积累加值)存入Y矩阵
Y(k+1)=(X0(1)-b/a)*exp(-a*k)+b/a;
end
X=Y(n)-Y(n-1); %还原出X
function X1=acc(X0) %子函数acc,用来获取X0的累加之后的矩阵
[~,m]=size(X0);
X1=zeros(1,m);
X1(1)=X0(1);
for i=2:m
X1(i)=X1(i-1)+X0(i); %累加
end
end
function B=getB(X1) %子函数getB,用来获取B矩阵
[~,m]=size(X1);
B=zeros(m-1,2);
for i=1:m-1
B(i,1)=-0.5*(X1(i)+X1(i+1));
B(i,2)=1;
end
end
function YN=getYn(X0) %子函数getYn,用来获取YN矩阵
[~,m]=size(X0);
YN=zeros(m-1,1);
for i=1:m-1
YN(i,1)=X0(i+1);
end
end
end
主要思路:用自定义的getx 和gety这两个函数获得相同高度的所有点的坐标之后,用plot函数将这些点用线段连接起来,boingo!
下面是完整的代码:(还有需要改进的地方)
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%数据区域,H为高度矩阵,A为横坐标,B为纵坐标
H=[370 470 550 600 670 690;
510 620 730 800 850 870;
650 760 880 970 1020 1050;
740 880 1080 1130 1250 1280;
830 980 1180 1320 1450 1420;
880 1060 1230 1390 1500 1500;];
A=[0 400 800 1200 1600 2000];
B=[0 400 800 1200 1600 2000];
lamda=10; % 等高线条数
step=(max(max(H))-min(min(H)))/lamda; %步长
%用自定义的函数getX和gexY获取横向和纵向所有等高点的坐标
for height=400:step:1500
[X1,Y1]=getX(height,H,A,B);
[X2,Y2]=getY(height,H,A,B);
X=[X1 X2];
Y=[Y1 Y2];
line(X,Y); %将这些等高点用线段连接起来
end
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
function [X1,Y1]=getX(height,H,A,B);
anoH=abs(H-height);
[m,~]=size(H);
X1=zeros(1,m);
Y1=zeros(1,m);
for j=m:1
ROW=anoH(j,:);
[~,t]=min(ROW(:,:));
if t<m
u=t+1;
else u=t-1;
end
nan=A(t);
nv=A(u);
X1(j)=nan+(nv-nan)/(H(u,j)-H(t,j))*(height-H(t,j));
Y1(j)=B(j);
end
end
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
function [X2,Y2]=getY(height,H,A,B);
anoH=abs(H-height);
[~,n]=size(H);
X2=zeros(1,n);
Y2=zeros(1,n);
for i=1:n
myLine=anoH(i,:);
[~,t]=min(myLine(:,:));
if t<n
u=t+1;
else u=t-1;
end
nan=B(t);
nv=B(u);
Y2(i)=nan+(nv-nan)/(H(i,u)-H(i,t))*(height-H(i,t));
X2(i)=B(i);
end
代码可能不完美,仅供参考,切勿用于商业之用







