一、数据库(以MySQL为例):
数据类型(SQL Server )
- char:会自动用空格补全。固定长度的内容,效率高。存储空间范围(1-2000)字节。
- nchar(5):会自动用空格补全。
- varchar:可变长度的字符类型,存储空间范围(1-4000)字节
- nvarchar(5):可变长
- datetime:2019-03-21 00:00:00.000
- date:2019-02-02
- numeric(6, 4):小数位有4位,如果没有写,会自动补0。整数位就只能有2位的,小数位或整数位 超过都会报错。
- decimal(size,d):与numeric一样。其中size表示可供存储的值的总位数(不包括小数点),默认值为18;d表示小数点后的位数,默认值为0;
char和nchar是定长字符串类型,varchar和nvarchar是变长字符串类型。至于前面那个n有什么不同,有n代表支持unicode字符,而没有n的则不支持,text和ntext的区别也是一样。
char 和nchar 当填入数据为空时,数据库自动使用全空格来代替,从而使not null形同虚设。所以如果字段不能为空,一定要在程序中提前判断。
char 和nchar因为长度固定,据说读写的速度要比 varchar和nvarchar快。
text和char及varchar的区别在于,char和varchar字段的数据是保存在表中,而text字段可以保存大容量的文本,数据是保存在另外的空间里,当然在表面上看来并没有什么区别。
数据库三大范式
数据库的设计范式是数据库设计所需要满足的规范,满足这些规范的数据库是简洁的、结构明晰的,同时,不会发生插入(insert)、删除(delete)和更新(update)操作异常。
1.第一范式(1NF):列不可再分
2.第二范式(2NF)属性完全依赖于主键
3.第三范式(3NF)属性不依赖于其它非主属性 属性直接依赖于主键
库操作
create database OrderDB;
查看数据库中所有的表:show databases;/*查看所有数据库*/
use baidu_reward;/*进入对应的数据库*/
show tables;/*查看数据库中所有表*/
表操作
/*建表*/
create table product(
id int(3) primary key AUTO_INCREMENT,
name varchar(25) not null,
unique
adress varchar(30) default '北京');
改表名:alter table db_1 rename db_new;
删表:drop table ndb_2;
复制表结构及数据:create table 新表 as select * from 旧表
复制表结构不需要数据:create table 新表 as select * from 旧表 where 2<>2
复制表数据 :insert into 目标表 select * from 参考表
查看指定用户下所有的表:select table_name from all_tables where owner = upper('用户名');
字段(列)操作
增加字段:alter table 表名 add( id_adress int(10) )
修改字段:alter table 表名 modify(字段名称 字段类型)
alter table 表名 change 旧字段名 新字段名 新字段描述符
alter table t1 change name score int not null;
删除字段:alter table 表名 drop column 字段名称
desc :从大到小,降序排序
acs :从小到大,升序排序
查
select * from product where price between 2000 and 3000;
多表查询:select t1.id,t1.score,winton.name from t1,winton where t1.id=winton.id;
插
全字段插入:insert into winton values(001,'aww'),(002,'rs');
个别字段插入:insert into winton(id) values(004);
改
update t1 set score=69 ,name="join" where id=2;
删
delete from winton where id=4;
常用函数
求和:select sum(score) from t1;
求平均值:select avg(score) from t1;
计数:select count(*) from t1;
求最大值:select max(name) from winton;
求最小值:select min(name) from winton;
distinct 字段中 唯一的值:select distinct name from winton;
limit查询结果数限制:select * from winton limit 2;
order by 排序:select * from winton order by name;
slelect * from winton order by name desc;
group by 分组:select name from winton group by name;
索引
创建普通索引:create index wintonIndex on winton (name);
创建唯一索引:create unique index wintonIndex on winton (id);
删除索引:drop index wintonIndex on winton;
系统分析与设计,前端,框架,后端
web(World Wide Web)即全球广域网,也称为万维网,它是一种基于超文本和HTTP的、全球性的、动态交互的、跨平台的分布式图形信息系统。是建立在Internet上的一种网络服务,为浏览者在Internet上查找和浏览信息提供了图形化的、易于访问的直观界面,其中的文档及超级链接将Internet上的信息节点组织成一个互为关联的网状结构。
前端技术指的是在浏览器上编程的技术,比如:JS,HTML,CSS,这些前端技术是运行在客户端Browser浏览器上的,而并非在服务器端。
服务器端(应用程序后端),服务器端只是一个统称,具体细分的话,有:应用程序服务器端、数据库服务器端、缓存服务器端、文件服务器端等
SOA(Service-Oriented Architecture)面向服务的分布式架构
Web服务体系结构描述了三个角色:服务提供者,服务请求者和服务代理。
B/S,C/S架构
B/S
(Browser/Server):又称浏览器/服务器模式。三层架构:
第一层表现层:主要完成用户和后台的交互及最终查询结果的输出功能;
第二层逻辑层:主要是利用服务器完成客户端的应用逻辑功能;
第三层数据层:主要是接受客户端请求后独立进行各种运算。
B/S结构是随着互联网的发展,web出现后兴起的一种网络结构模式。这种模式统一了客户端,让核心的业务处理在服务端完成。你只需要在自己电脑或手机上安装一个浏览器,就可以通过web Server与数据库进行数据交互。在手机或电脑上用浏览器上百度搜索、看新闻等就是在使用“B/S”结构进行数据交互。
这种“B/S”结构的好处:维护和升级方式更简单,客户端是浏览器,基本不需要维护,只需要维护升级服务器端就可以。
C/S
(Client/Server):又称客户/服务器模式。
具有两层结构:第一层:客户端——表示层(界面层与逻辑层)。
第二层:服务器模式——数据库层
优缺点:C/S将需要处理的业务合理地分配到客户端和服务器端,这样可以大大降低通信成本,但是升级维护相对困难。比如我们手机中安装的微信、qq、王者荣耀等应用程序就是C/S结构。
更详细的可看:由面试引发的思考:B/S与C/S究竟是何物 https://www.cnblogs.com/zuowj/p/5313505.html
线程
java
框架
Spring框架、Hibernate框架、Struts框架、Play框架、GoogleWebToolkit框架、Grails框架、Blade框架、JavaServerFaces框架、Vaadin框架九大框架
Java Web 框架
- Struts框架教程
- Hibernate框架教程
- Spring框架入门教程(新版)
- MyBatis 框架基础入门
- Spring MVC 简易教程
- Spring Boot 入门教程
- Netty 开发实战入门
数据类型
byte:有符号(意思是有正和负),在网络传输中都是会用到byte的,它占1个字节,共8位。其中前7位表示数字,最高位表示符号,0为正,1为负。范围是 (-2的7次 ~ 2的7次 - 1)。
short:有符号,占2个字节,共16位。同byte一样,它的取值范围就是 (-2的15次 ~ 2的15次 - 1)。
int :有符号,占4个字节,共32位。它的取值范围就是(-2的31次 ~ 2的31次)。
long:有符号,占8个字节,共64位,它的取值范围就是(-2的63次 ~ 2的63次)。
short 可以转成long ,long 不能转成short
运算符
^:表示异或位运算,两者相同则为0,两者不同则为1。比如说15^2,15用二进制表示就是1111,2用2进制表示就是0010,两者进行异或运算,结果就是1101,转换为十进制就是13。
|:表示或运算,两者只有有一个为1就为1, 比如说13|2,13用二进制表示就是1101,2用二进制表示就是0010,两者进行或运算,那么结果就是1111,转换为十进制就是15。
&:表示与运算,两者都为1就为1,其余都为0,比如说15&2, 13用二进制表示就是1111,2用二进制表示就是0010, 两者进行与运算,那么结果就是0010,转换为十进制就是2。
~:取反,就是本来是0变成1,本来是1变成0。
j++与++j
int a = j++ : 先将j的值赋给a,j再自增1
int a = ++j : j先自增1,再将j的值赋给a
eg: int i=0;
int a=i++;
int b=i++ + ++i + ++i;
System.out.println(a+" "+b);
输出:0 8
java中常见的异常:
方法的参数错误:java.lang.illegalargumentexception
没有访问权限:java.lang.illegalaccessexception
算术异常类:ArithmeticExecption,比如程序中出现了除以零这样的
空指针异常类:NullPointerException,调用了未经初始化的对象或者是不存在的对象。
类型强制转换异常:ClassCastException
数组负下标异常:NegativeArrayException
数组下标越界异常:ArrayIndexOutOfBoundsException
违背安全原则异常:SecturityException
文件已结束异常:EOFException
文件未找到异常:FileNotFoundException
字符串转换为数字异常:NumberFormatException
操作数据库异常:SQLException
输入输出异常:IOException
方法未找到异常:NoSuchMethodException
抽象方法错误 :java.lang.AbstractMethodError, 当应用试图调用抽象方法时抛出。
Java中Wait、Sleep和Yield方法的区别
在这3个在Java中能够用来暂停线程的方法中,sleep()和yield()方法是定义在Thread类中,而wait()方法是定义在Object类中的, 这也是面试中常问的一个问题。
wait()和sleep()的关键的区别在于,wait()是用于线程间通信的,而sleep()是用于短时间暂停当前线程。更加明显的一个区别在于,当一个线程调用wait()方法的时候,会释放它锁持有的对象的管程和锁,但是调用sleep()方法的时候,不会释放他所持有的管程。
回到yield()方法上来,与wait()和sleep()方法有一些区别,它仅仅释放线程所占有的CPU资源,从而让其他线程有机会运行,但是并不能保证某个特定的线程能够获得CPU资源。谁能获得CPU完全取决于调度器,在有些情况下调用yield方法的线程甚至会再次得到CPU资源。所以,依赖于yield方法是不可靠的,它只能尽力而为。
wait和sleep方法的区别:
wait和sleep的主要区别是调用wait方法时,线程在等待的时候会释放掉它所获得的monitor,但是调用Thread.sleep()方法时,线程在等待的时候仍然会持有monitor或者锁。另外,Java中的wait方法应在同步代码块中调用,但是sleep方法不需要。另一个区别是Thread.sleep()方法是一个静态方法,作用在当前线程上;但是wait方法是一个实例方法,并且只能在其他线程调用本实例的notify()方法时被唤醒。另外,使用sleep方法时,被暂停的线程在被唤醒之后会立即进入就绪态(Runnable state),但是使用wait方法的时候,被暂停的线程会首先获得锁(译者注:阻塞态),然后再进入就绪态。所以,根据你的需求,如果你需要暂定你的线程一段特定的时间就使用sleep()方法,如果你想要实现线程间通信就使用wait()方法。
yield和sleep的区别:
yield和sleep的主要是,yield方法会临时暂停当前正在执行的线程,来让有同样优先级的正在等待的线程有机会执行。如果没有正在等待的线程,或者所有正在等待的线程的优先级都比较低,那么该线程会继续运行。执行了yield方法的线程什么时候会继续运行由线程调度器来决定,不同的厂商可能有不同的行为。yield方法不保证当前的线程会暂停或者停止,但是可以保证当前线程在调用yield方法时会放弃CPU。
线程
线程属于一次性消耗品,在执行完run()方法之后线程便会正常结束了,线程结束后便会销毁,不能再次start,只能重新建立新的线程对象,但有时run()方法是永远不会结束的。例如在程序中使用线程进行Socket监听请求,或是其他的需要循环处理的任务。
有三种方法可以结束线程:
-
1.设置退出标志,使线程正常退出,也就是当run()方法完成后线程终止
-
2.使用interrupt()方法中断线程
-
3.使用stop方法强行终止线程(不推荐使用,Thread.stop, Thread.suspend, Thread.resume 和Runtime.runFinalizersOnExit 这些终止线程运行的方法已经被废弃,使用它们是极端不安全的!)
测试
软件测试方法:白盒测试、黑盒测试、灰盒测试、静态测试、动态测试
黑盒测试(又叫功能测试或数据驱动测试) 软件的黑盒测试意味着测试要在软件的接口处进行。这种方法是把测试对象看做一个黑盒子,测试人员完全不考虑程序内部的逻辑结构和内部特性,只依据程序的需求规格说明书,检查程序的功能是否符合它的功能说明。
白盒测试(又称为结构测试或逻辑驱动测试)软件的白盒测试是对软件的过程性细节做细致的检查。这种方法是把测试对象看做一个打开的盒子,它允许测试人员利用程序内部的逻辑结构及有关信息,设计或选择 测试用例,对程序所有逻辑路径进行测试。通过在不同点检查程序状态,确定实际状态是否与预期的状态一致。
final、finally、finalize的区别。
final用于声明属性,方法和类,分别表示属性不可交变,方法不可覆盖,类不可继承。
finally是异常处理语句结构的一部分,表示总是执行。(如下代码,不管try里会不会抛出异常,都会执行finally)
finalize是Object类的一个方法,在垃圾收集器执行的时候会调用被回收对象的此方法,供垃圾收集时的其他资源回收,例如关闭文件等。
try {
int []a={0,1,2,3};
System.out.println(a[5]);
System.out.println("try 代码块被执行!");
return ;
} catch (Exception e) {
System.out.println("catch 代码块被执行!");
return ;
} finally {
System.out.println("finally 代码块被执行!");
}
GC(垃圾回收机制)
大白话说就是垃圾回收机制,内存空间是有限的,你创建的每个对象和变量都会占据内存,gc做的就是对象清除将内存释放出来,这就是GC要做的事。
Java单例模式(Singleton)以及实现
一. 什么是单例模式
因程序需要,有时我们只需要某个类同时保留一个对象,不希望有更多对象,此时,我们则应考虑单例模式的设计。
二. 单例模式的特点
1. 单例模式只能有一个实例。
2. 单例类必须创建自己的唯一实例。
3. 单例类必须向其他对象提供这一实例
java基本语法
for循环的不同表达方式(如下):
int []a={0,1,2,3};
for(int b:a){
System.out.println(b);
}
for(int i=1;i<=10;i=i+1){
System.out.println(i);
}
数组声明方式,如果只写一个维度,只有这样写是对的(如下):
int [][]a=new int[2][];
java 函数
trim函数:去掉字符串首尾的空格。
String a=" hello world ";
a=a.trim();//去掉字符串首尾的空格
封装,继承,多态,动态
封装:
类的抽象是指将类的实现和类的使用分离开,实现的细节被封装,并且对用户隐藏,这被称为类的封装。
继承:
在java中是不允许多重继承的,这种限制称为单一继承,但多重继承是可以通过接口来实现的。
当构造一个子类的对象时,子类构造方法会在完成自己的任务之前,首先调用它的父类的构造方法。如果父类继承自其他类,那么父类构造方法又会在完成自己的任务之前,调用它自己的父类的构造方法。即,在任何情况下,构造一个类的实例时,将会调用沿着继承链的所有的父类的构造方法,这就是构造方法链。
无参,有参的构造方法都没有,会自动调用默认的无参构造。已经有了,就不会再调用系统默认的了。
多态:
多态:把子类声明为父类。使用父类对象的地方都可以使用子类的对象。
动态:
动态绑定:实例可以使用声明类型或它的子类型的构造方法创建,一个对象调用哪个方法由对象的实际类型决定。
重载与重写:
方法重写发生在通过继承而相关的不同类中;方法重载可以发生在同一个类中,也可以发生在由于继承而相关的不同类中。
方法重写具有同样的签名和返回值类型;方法重写具有同样的名字,但是不同的参数列表。
计算机网络
TCP/IP
socket绑定本地窗口
数据结构
二叉树
先序、中序、后序遍历序列
操作系统
Python是一种面向对象、解释型计算机程序设计语言
最后
以上就是安详导师最近收集整理的关于编程类基本知识---尽量通俗易懂---持续更新中一、数据库(以MySQL为例):系统分析与设计,前端,框架,后端java计算机网络数据结构操作系统的全部内容,更多相关编程类基本知识---尽量通俗易懂---持续更新中一、数据库(以MySQL为例):系统分析与设计内容请搜索靠谱客的其他文章。
发表评论 取消回复