20160711

2016-07-19  本文已影响0人  2016AF

------English20160711------
1、polymorphism
英 [,pɒlɪ'mɔːfɪz(ə)m] 美 [,pɑlɪ'mɔrfɪzm]
n. 多态性;多形性;同质多晶
Polymorphism means the ability to assign a different meaning or usage to something in different contexts -- specifically, to allow an object to have more than one form.

2、
algorithm
英 ['ælgərɪð(ə)m] 美 ['ælgə'rɪðəm]
n. [计][数] 算法,运算法则
As with the LCS algorithm, for each cell you have three choices and pick the maximum one.

3、inflater
[in'fleitə]
n. 增压泵;充气者
getMenuInflater()

4、inflate
英 [ɪn'fleɪt] 美 [ɪn'flet]
vt. 使充气;使通货膨胀
vi. 膨胀;充气
getMenuInflater().inflate(R.menu.main, menu);

5、toast
英 [təʊst] 美 [tost]
n. 干杯;烤面包;接受敬酒的人;(在某领域)广受赞誉的人
vt. 向…祝酒,为…干杯
vi. 烤火,取暖;使暖和;烘烤(面包片等)
Toast.makeText(Context, Content, ShowTime).show;

6、category
英 ['kætɪg(ə)rɪ] 美 ['kætəɡɔri]
n. 种类,分类;[数] 范畴
<category android:name="android.intent.category.DEFAULT"/>
<category android:name="android.intent.category.LAUNCHER"/>
intent.addCategory();

7、intent
英 [ɪn'tent] 美 [ɪn'tɛnt]
n. 意图;目的;含义
adj. 专心的;急切的;坚决的
Intent intent = new Intent(Context, class);
intent.putExtra(key, value);
intent.setData(Uri.parse("tel:10086"));

------JAVA20160711------
1、方法重载:同一个类里多个同名方法,只是参数列表不同,返回值一样
2、变量分类
成员变量:实例变量(没有static)、类变量(static)
局部变量:形参、方法局部变量、代码块局部变量
3、若局部变量和成员变量同名,局部变量会覆盖成员变量,需要在这个方法里访问这个被覆盖的成员变量,需要使用this或类名作为调用者来限定访问成员变量
4、避免使用对象实例访问类变量(实例名.类变量),这是一个陷阱
5、定义局部变量后,系统并未为这个变量分配内存空间,直到程序为这个变量赋初始值时,系统才会为局部变量分配空间
6、封装,就是将对象的状态信息隐藏在对象内部,不允许外部程序直接访问对象的内部信息,而是通过该类所提供的方法来实现对内部信息的操作和访问
7、访问控制符的访问权限
private->default->protected->public
private(当前类访问权限):只能被当前类访问
default(包访问权限):相同包下的类可以访问
protected(子类访问权限):同一个包中的其他类,不同包的子类访问
public(公共访问权限):可被所有类访问
8、如果Java源文件里没有public类,则源文件名可以是任意合法的文件名;如果有一个public类,则文件名必须和该类的名称一样
9、JavaBean规范的类
所有成员变量都用private修饰
为每个成员变量提供getter和setter
10、包
将类放在包里:package packageName;//第一行非注释行,一个源文件只能指定一个包
位于包中的类,在文件系统中也必须有与包名层次相同的目录结构
建议使用Internet域名到写来作为包名
一个包里的类要访问该包的子包里的类,必须使用全路径访问(包名.子包名.被访问类名)
import语句:
import package.subpackage.ClassName;//package之后,类定义之前,可以多个
import package.subpackage.;//导入包内所有的类,不包括子包内的类
使用import语句后,不需要再使用类全名(包前缀)
Java默认为所有源文件导入java.lang包下的所有类
import static语句:
导入指定类的单个静态变量、方法和全部静态成员变量、方法
import static package.subpackage.ClassName.fieldName|methodName;
import static package.subpackage.ClassName.
;//全部静态变量和静态方法
11、java常用包
java核心类放在java包及其子包,java扩展的许多类都放在javax包及其子包下
java.lang:包含java语言的核心类
java.util:包含java的大量工具类、接口和集合框架类、接口
java.net:包含一些java网络编程相关的类、接口
java.io:包含一些java输入、输出编程相关的类、接口
java.text:包含一些java格式化相关的类
java.sql:包含java进行JDBC数据库编程的相关类、接口
java.awt:包含抽象窗口工具集的相关类、接口
java.swing:包含Swing图形用户界面编程的相关类、接口
12、类的构造器
如果没有编写构造器,系统会提供一个无参数的构造器,进行默认初始化(数值型)0、(布尔型)false、(引用类型)null
一旦程序员提供了自定义的构造器,系统就不再提供默认的构造器
同一个类里居右多个构造器,多个构造器的形参列表不同,即被称为构造器重载
可在构造器里使用this访问其他构造器,必须出现在构造器的第一行
可使用super关键字访问父类的构造器,必须出现在构造器的第一行
this和super只能二选一
13、类的继承
java类的继承通过extends关键字来实现
修饰符 class SubClass extends SuperClass{
statement;
}
单一继承,每个类只有一个直接父类,默认的父类是Object类
子类包含与父类同名方法的现象被称为方法重写(Override),也被称为方法覆盖
方法的重写遵循"两同两小一大"规则,“两同”即方法名相同,“两小”指的是子类方法返回值类型应比父类方法返回值类型更小或相等,子类方法声明抛出的异常类应比父类方法声明抛出的异常类更小或相等;“一大”指的是子类方法的访问权限应比父类方法的访问权限更大或相等
子类中访问父类的方法,使用super或者父类类名作为调用者来调用父类中被覆盖的方法,在static方法里不能使用
如果子类定义了和父类同名的实例变量,则会发生子类实例变量隐藏父类实例变量,默认访问子类定义的实例变量,可使用super来访问父类中被隐藏的实例变量
如果访问成员变量a时没有显式指定调用者,则系统查找实例变量a的顺序为:
A.查找该方法中是否有名为a的局部变量
B.查找当前类中是否包含名为a的成员变量
C.查找a的直接父类中是否包含名为a的成员变量,一次上溯a的所有父类,知道java.lang.Object类,如果最终不能找到名为a的成员变量,则系统出现错误
如果被覆盖的是类变量,在子类的方法中则可以通过父类名来作为调用者访问被覆盖的类变量
当在创建子类对象时,依然会为父类中定义的、被隐藏的变量分配内存空间
可使用super关键字访问父类的构造器,必须出现在构造器的第一行
this和super只能二选一
子类构造器执行体的第一行代码使用this显式调用本类中重载的构造器,系统将根据this调用里传入的实参列表调用本类中的另一个构造器。执行本类中另一个构造器时即会调用父类构造器
如果子类构造器执行体中既没有super调用,也没有this调用,系统将会在执行子类构造器之前,隐式调用父类无参数的构造器
创建任何对象总是从该类所在继承树最顶层类的构造器开始执行,然后依次乡下执行,最后才执行到本类的构造器
14、多态
多态:把一个子类对象直接赋值给一个父类引用变量,无须任何类型转换,被称为向上转型,向上转型由系统自动完成
当一个子类对象直接赋值给父类引用变量时,当运行时调用该引用变量时,其方法行为总是表现出子类方法的行为特征,而不是父类方法的行为特征,这就可能出现:相同类型的变量、调用同一个方法时呈现出
多种不同的行为特征,这就是多态
引用变量在编译阶段只能调用其编译时类型所具有的方法,但运行时刻则执行它运行时所具有方法
通过引用变量来访问其包含的实例变量时,系统总是试图访问它编译时类型所定义的成员变量,而不是它运行时类型定义的成员变量
如果要让引用变量调用它运行时类型的方法,则必须把它强制类型转换成运行时类型,强制类型转换需要借助于类型转换类型
类型转换运算符:(type)variable
基本类型只能在数值类型之间进行,引用类型之间的转换只能在具有继承关系两个类型之间进行
强制类型转换时可能出现异常,在进行类型转换之前应先通过instanceof运算符来判断是否可以成功转换
引用变量 instanceof 类名

------read by <疯狂java> P151------

------数据库20160711------
1、系统数据库
master数据库:记录SQL Server实例的所有系统级信息
msdb数据库:用于SQL Server代理计划警报和作业
model数据库:用于SQL Server实例上创建的所有数据库和模版。对model数据库进行的修改(如数据库大小、排序规则、恢复模式和其他数据库选项)将应用与以后创建的所有数据库
Resource数据库:一个只读数据库,包含SQL Server包括的系统对象,系统对象在物理保留在Resource数据库中,但在逻辑上显示在每个数据库的sys架构中
tempdb数据库:一个工作空间,用于保存临时对象或中间结果集
2、SQL创建数据库
create database Stu_db2
on primary --primary是指定关联的文件列表,定义主文件
(name=studio_db2,
filename='d:\studio_db2.mdf',
size=3mb,
maxsize=unlimited,
filegrowth=10%
),
(name=studio_db_two,
filename='e:\stu_db2_two.ndf',
size=3mb,
maxsize=500mb,
filegrowth=10mb
),
filegroup studio_new_group --一个新的文件组
(name=studio_db_new,
filename='d:\studio_db2_new.ndf',
size=3mb,
maxsize=300mb,
filegrowth=0)
log on
(name=studio_log,
filename='d:\studio_log.ldf',
size=3mb,
maxsize=20mb,
filegrowth=1mb
)

create database Stu_db3 //以model数据库默认的设置创建数据库,主文件初始3mb,增量1mb,大小不限制;日志文件初始1mb,增量10%,上线2TB
数据库主文件默认名字:数据库名字.MDF;日志文件默认名字:数据库名字_LOG.LDF;
右击数据库-“属性”-“文件”,可查看数据库文件存放位置

3、数据库文件类型
主要数据文件:主要数据文件包含数据库的启动信息,并指向数据库中的其他文件。用户数据和对象可存储在此文件中,也可以存储在次要数据文件中。每个数据库有一个主要数据文件。扩展名为.mdf
次要数据文件:次要数据文件是可选的,由用户定义并存储用户数据。通过将每个文件放在不同的磁盘驱动器上,次要文件可用户将数据分散到多个磁盘上。另外,如果数据库超过了单个Windows文件的
最大大小,可以使用次要数据文件,这样数据库就能继续增长,扩展名为.ndf
事务日志:事务日志,扩展名为.ldf
4、文件组
文件组包含主要数据文件和未放入其他文件组的所有次要文件
可以明确的在文件组上创建一个表,对表中数据的查询将分散到三个磁盘上,从而提高性能
数据库中创建对象时没有指定对象所属的文件组,对象将被分配给默认文件组。
PRIMARY文件组是默认文件组,除非使用ALTER DATABASE语句进行更改,不过就算改了,系统对象和表依然分配给PRIMARY文件组,而不是新的默认文件组
SQL增加新文件组:
ALTER DATABASE Stu_db1 ADD FILEGROUP file_group
SQL向文件组中添加文件:
ALTER DATABASE Stu_db1 ADD FILE(
name = "new_datafile",
filename="d:\new_datafile.ndf",
size=3072kb,
filegrowth=1024kb
)
TO FILEGROUP file_group
SQL删除数据库文件:
ALTER DATABASE Stu_db3 REMOVE FILE SSS ---不加扩展名
SQL设置默认文件组:
ALTER DATABASE onedb_bak MODIFY FILEGROUP Two_fg DEFAULT
SQ修改文件组名称:
ALTER DATABASE Onedb_bak MODIFY FILEGROUP Two_fg name=User_fg
SQL设置文件组中的文件只读:
ALTER DATABASE onedb_bak MODIFY FILEGROUP User_fg READONLY
SQL删除文件组:
ALTER DATABSE Onedb_bak REMOVE FILEGROUP User_fg ---文件组中必须没有文件
文件组的填充策略:
A.文件组对组内的所有文件都使用按比例填充策略。当数据写入文件组时,SQL Server数据库引擎按文件中的可用控件比例将数据写入文件组中的每个文件,而不是将所有数据都写入第一个文件直至其变
满,然后再写入下一个文件
B.假定将数据库设置为自动增长,当文件组中的所有文件填满后,数据库引擎便会采用自动循环方式一次自动扩展一个文件以容纳更多的数据
5、优化数据库的策略
通常,数据库在只有单个数据文件和单个事务日志文件的情况下性能发挥得才更好
如果使用多个文件,最好为附加文件创建第二个文件组,并将其设置为默认文件组,这样,主文件将只包含系统表和对象
若要使性能最大化,请在尽可能多的不同的可用本地物理磁盘上创建文件或文件组,将数据操作频繁的对象置于不同的文件组中
不要将事务日志文件置于已有其他文件和文件组的物理磁盘上
6、文件状态
在线状态、离线状态、还原中

------read by <大话数据库> P34------

------数据结构20160711------
1、算法是解决特定问题求解步骤的描述,在计算机中表现为指令的有限序列,并且每条指令表示一个或多个操作
2、算法的五个基本特性:输入、输出、有穷性、确定性、可行性
3、算法设计的要求:
A.正确性:指算法至少应该居右输入、输出和加工处理无歧义性、能正确反映问题的需求、能够得到问题的正确答案
四个层次:
a.算法程序没有语法错误
b.算法程序对于合法的输入数据能够产生满足要求的输出结果
c.算法程序对于非法的输入数据能够得出满足规格说明的结果
d.算法程序对于精心选择,甚至刁难的测试数据都有满足要求的输入结果
B.可读性:算法设计的另一个目的是为了便于阅读、理解和交流
C.健壮性:当输入数据不合法时,算法也能做出相关处理,而不是产生异常或莫名其妙的结果
D.时间效率高
E.存储量低
4、算法事前分析估算
A.与最高次项想乘的常数并不重要
B.可以忽略加法常数
C.判断一个算法的效率时,函数中的常数和其他次要项常常可以忽略,而应该关注主项(最高阶项)的阶数
5、算法时间复杂度定义
在进行算法分析时,语句总得执行次数T(n)是关于问题规模n的函数,进而分析T(n)随n的变化情况并确定T(n)的数量级。算法的时间复杂度,也就是算法的时间量度,记作:T(n)=O(f(n))
它表示随问题规模n的增大,算法执行时间的增长率和f(n)的增长率相同,称作算法的渐进时间复杂度,简称时间复杂度。其中f(n)是问题规模n的某个函数
一般情况下,随着n的增大,T(n)增长最慢的算法称为最优算法
6、推到大O阶:
A.用常数1取代运行时间中所有加法常数
B.在修改后的运行次数函数中,只保留最高阶项
C.如果最高阶项存在且不是1,则去除与这个项目相乘的常数
得到的结果就是大O阶
7、算法时间复杂度
A.与问题的大小无关(n的多少),执行时间恒定的算法,我们称之为具有O(1)的时间复杂度,又叫常数阶
B.线性阶,O(n)
C.对数阶,O(logn)
D.平方阶,O(n^2)

------read by <大话数据结构> P34------

------Android20160711------
1、第一个Activity代码
public class FirstActivity extends Activity{
@Override
protected void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);//必须放在setContentView语句之前
setContentView(R.layout.first_layout);//为当前活动加载布局文件
Button button1 = (Button) findViewById(R.id.button_1);//绑定布局中的按钮
button1.setOnClickListener(new OnClickListener(){//设置按钮单击事件
@Override
public void onClick(View v){
Toast.makeText(FirstActivity.this, "You clicked Button 1", Toast.LENGTH_SHORT).show();
//消息通知器Toast.makeText(Context, Content, ShowTime);
}
});
}
}
2、LinearLayout布局文件
<LinearLayout xmlns:android:="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
andoird:orientation="vertical">

<button
  android:id="@+id/button_1"
  android:layout_width="match_parent"
  android:layout_height="wrap_content"
  android:text="Button1"
  />

</LinearLayout>
3、在AndroidManifest.xml中对活动进行注册<application>标签对里
<activity
android:name=".FirstActivity"
android:label="This is FirstActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
4、为活动创建菜单
在res目录下新建一个menu文件夹,在menu文件夹里新建Android XML File
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:id="@+id/add_item"
android:title="Add"/>
<item
android:id="@+id/remove_item"
android:title="Remove"/>
</menu>
在Activity里重写onCreateOptionsMenu方法
public boolean onCreateOptionsMenu(Menu menu){
getMenuInflater().inflate(R.menu.main, menu);
return true;//true显示,false不显示
}
在Activity里重写onOptionsItemSelected()方法
public boolean onOptionsItemSelected(MenuItem item){
switch(item.getItemid()){
case R.id.add_item:
Toast.makeText(this, "You clicked Add", Toast.LENGTH_SHORT).show();
break;
case R.id.remove_item:
Toast.makeText(this, "You clicked Remove", Toast.LENGTH_SHORT).show();
break;
default:
}
return true;
}
5、销毁一个活动
finish();
6、从当前活动跳转到另一个活动(显式)
Intent intent = new Intent(FirstActivity.this, SecondActivity.class);
startActivity(intent);
隐式:
为要启动的活动添加<intent-filter>
<intent-filter>
<action android:name="com.example.activitytest.ACTION_START" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="com.example.activitytest.MY_CATEGORY"/>
</intent-filter>
创建intent:
Intent intent = new Intent("com.example.activitytest.ACTION_START");
intent.addCategory("com.example.activitytest.MY_CAYTEGORY");//如果是DEFAULT的category则不需要添加
7、intent启动浏览器
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setData(Uri.parse("http://www.baidu.com"));
startActivity(intent);
8、可在Activity注册的<intent-filter>标签里添加<data>标签,指定该Activity能够响应的隐式intent
A.android:scheme 用于指定数据的协议部分,如上例中的http部分
B.android:host 用户指定数据的主机名部分,如上例中的www.baidu.com服务
C.android:port 用于指定数据的端口部分,一般紧随在主机名之后
D.android:path 用于指定主机名和端口之后的部分
E.android:mimeType 用于指定可以处理的数据类型,允许使用通配符的方式来进行指定
只有<data>标签中指定的内容和Intent中携带的Data完全一致时,当前活动才能够相应该Intent
9、intent拨打电话
Intent intent = new Intent(Intent.ACTION_DIAL);
intent.setData(Uri.parse("tel:10086"));
startActivity(intent);
10、用Intent给下一个活动传递数据
数据写入处:
String data = "Hello SecondActivity"
Intent intent = new Intent(this, SecondActivity.class);
intent.putextra("extra_data", data);
startActivity(intent);
数据读取处:
Intent intent = getIntent();
String data = intent.getStringExtra("extra_data") //传递什么类型,就getTypeExtra什么类型
Log.d("SecondActivity", data);
11、返回数据给上一个活动
第一个Activity:
Intent intent = new Intent(FirstActivity.this, SecondActivity.class);
startActivityForResult(intent, 1);
第二个Activity:
Intent intent = new Intent();
intent.putExtrea("data_return", "Hello FirstActivity");
setResult(RESLT_OK, intent);
finish();
//设置按下返回键时也传回数据
@Override
public void onBackPressed(){
Intent intent = new Intent();
intent.putExtra("data_return", "Hello FirstActivity");
setResult(RESULT_OK, intent);
finish();
}
第一个Activity:
@Override //requestCode就是启动活动时传入的请求码,第二个resutCode就是返回数据时传入的处理结果
protected void onActivityResult(int requestCode, int resultCode, Intent data){
switch(requestCode){ //data就是携带返回值的intent
case 1:
if(resultCode == RESULT_OK){
String returnedData = data.getStringExtra("data_return");
Log.d("FirstActivity", returnData);
}
break;
default:
}
}
------ read by <android第一行代码> P54 ------

上一篇下一篇

猜你喜欢

热点阅读