计算机基础
2022-11-30 14:01:25 0 举报
AI智能生成
自己整理的关于计算机的基础知识,后续一直学习,一直补充。。。
作者其他创作
大纲/内容
0.计算机
概要
概述
面试
框架
初面
技术面
基础
==和equals的区别
可以使用在基本数据类型变量和引用数据类型变量中
如果比较的是基本数据类型变量:比较两个变量保存的数据是否相等。(不一定类型要相同)
如果比较的是引用数据类型变量:比较两个对象的地址值是否相同.即两个引用是否指向同一个对象实体
如果比较的是基本数据类型变量:比较两个变量保存的数据是否相等。(不一定类型要相同)
如果比较的是引用数据类型变量:比较两个对象的地址值是否相同.即两个引用是否指向同一个对象实体
说明:0bject类中定义的equals ()和==的作用是相同的:比较两个对象的地址值是否相同.即两个引用是否指向同一个地址。
像String、Date、File、包装类等都重写了0bject类中的equals()方法。重写以后,比较的不是两个引用的地址是否相同,而是比较两个对象的“实体内容"是否相同。
像String、Date、File、包装类等都重写了0bject类中的equals()方法。重写以后,比较的不是两个引用的地址是否相同,而是比较两个对象的“实体内容"是否相同。
多态性的理解
他是编译时行为还是运行式
他是编译时行为还是运行式
抽象类与接口的区别
以下为相似的------------------------------------------
重载,重写的区别:
final,finally,finalize的区别:
throw和throws的区别:
collection,collections的区别:
string,string buffer,string builder的区别:
arrylist,linklist 的区别:
hashmap,linkhashmap的区别:
Java高级部分--------------------------------------------------
进程和线程的区别:
synchronized 与Lock的异同?
如何解决线程安全问题﹖有几种方式
sleep()和wait()的异同?
相同点
不同点
不同点
创建多线程有几种方式?四种!
其他
NETWORK
概要
概述
总图
简介
查看网络:
一、ping
主要是测试本机TCP/IP协议配置正确性与当前网络现状.
ping命令的基本使用格式是: ping IP地址/主机名/域名 [-t] [-a] [-n count] [-l size]
主要是测试本机TCP/IP协议配置正确性与当前网络现状.
ping命令的基本使用格式是: ping IP地址/主机名/域名 [-t] [-a] [-n count] [-l size]
二、netstat
主要是帮助了解整体网络情况以及当前连接情况.
基本使用命令格式:netstat [-n] [-a] [-e] [-r][-s]
主要是帮助了解整体网络情况以及当前连接情况.
基本使用命令格式:netstat [-n] [-a] [-e] [-r][-s]
三、ipconfig
主要是了解当前TCP/IP协议所设置的值,如IP地址、子网掩码、缺省网关、Mac地址等.
基本使用方法:ipconfig [/all/release/renew]
主要是了解当前TCP/IP协议所设置的值,如IP地址、子网掩码、缺省网关、Mac地址等.
基本使用方法:ipconfig [/all/release/renew]
四、route
主要用于配置路由与查看当前路由情况.
基本使用方法:route [print] [add] [change] [delete]
主要用于配置路由与查看当前路由情况.
基本使用方法:route [print] [add] [change] [delete]
五、tracert(trace router的缩写,为路由跟踪命令)
主要用于显示将数据包从计算机传递到目标位置的一组IP路由器,以及每个跃点所需的时间(即跟踪数据报传送路径),测试网络连通性问题.
主要用于显示将数据包从计算机传递到目标位置的一组IP路由器,以及每个跃点所需的时间(即跟踪数据报传送路径),测试网络连通性问题.
六、ARP(Address Resolution Protocol,地址解析协议,是获取物理地址的一个TCP/IP协议.)
主要用来查看本地计算机或另一台计算机的ARP高速缓存中的当前内容.
基本使用方法:arp [-a/g] [-s] [-d]
主要用来查看本地计算机或另一台计算机的ARP高速缓存中的当前内容.
基本使用方法:arp [-a/g] [-s] [-d]
网络基层模型
应用层
HTTP
表示层
会话层
传输层
TCP/UDP
网络层
IP
数据链路层
物理层
socket
socket
HTTP
webSocket
机器
语言
C语言
C++
C#
Java
概要
概述
结构图
框架
集合图
jvm内存
Java基础
运算
赋值
逻辑
比较
左右移位运算
变量的分类
基本类型
bite
short
char
int
float
double
long
string
boolean
类型转换
引用类型
class
interfase
array
数组
一维数组
初始化
二维数组
初始化
多维数组
数组长度一旦确定就不可修改
内存解析
后面补充
面向对象
方法
三条主线
方法的重载
两同1不同
同类同方法名
参数列表不同,参数个数不同,参数类型不同
方法的重写
方法名
形参列表
权限修饰符
返回值
抛出异常
面向对象的三大特性
封装
继承
多态
包装类
自动拆箱,装箱
包装类,基本数据类型-->string valueOf(xxx xx)
string --->包装类,基本数据类型 parseXxxx(String str) int i=Interger.parseInt(str);
string --->包装类,基本数据类型 parseXxxx(String str) int i=Interger.parseInt(str);
关键字
this(形参列表);本类重载的其他构造器
如有N个类this最多有n-1个
如有N个类this最多有n-1个
super(形参列表);调用父类中指定的构造器
至少有一个
至少有一个
static
修饰:属性,方法,代码块,内部类 ×构造器不能修饰
随着类的创建而创建
保存在方法区中的
随着类的创建而创建
保存在方法区中的
final
可以修饰,属性,方法,类
final变量是一个常量,只能赋值一次。
final方法为最终方法,不可以覆盖。
final类是最终类,不可以继承。
final变量是一个常量,只能赋值一次。
final方法为最终方法,不可以覆盖。
final类是最终类,不可以继承。
abstract
可以描述类和方法,属性不可描述
abstract方法只定义声名,没有定义实现。
abstract类不能实例化。
只有通过子类继承抽象类并覆盖了抽象类的所有抽象方法后该子类方可实例化。否则该子类还是个抽象类。
abstract方法只定义声名,没有定义实现。
abstract类不能实例化。
只有通过子类继承抽象类并覆盖了抽象类的所有抽象方法后该子类方可实例化。否则该子类还是个抽象类。
接口
异常
throw able
error
exception
编译时异常
IOException
FileNotFoundException
ClassNotFoundException
运行时异常
Nul1PointerException
ArrayIndexoutofBoundsException
ClassCastException
NumberFormatException
InputMismatchException
ArithmeticException
异常的处理
抓抛模型:try cach finally
抛:之后的代码不会执行
抛:之后的代码不会执行
throws
集合
collection
list
set
map
常用类
字符串
String
内存地址,赋值,初始化
方法
常用的主要方法:length();charAt();toUppercase();trim();equals();concat();compareto();substring();endswith();startwith();contains();indexof();lastindexof();
StringBuffer
StringBuilder
日期
Java高级部分
多线程
程序
一段静态的代码
子主题
进程
正在运行程序
作为资源分配的单位
作为资源分配的单位
一个运行中的程序的集合; 一个进程往往可以包含多个线程,至少包含一个线程
java默认有几个线程? 两个 main线程 gc线程
java默认有几个线程? 两个 main线程 gc线程
线程
进程进一步可以细化为线程
线程作为执行和调度的单位
Java最少有,main,gc,exception等三个线程
线程作为执行和调度的单位
Java最少有,main,gc,exception等三个线程
一个进程同时运行多个线程为多线程
*创建和使用
Thread类常用的方法:
继承thread类重写run()方法
继承thread类重写run()方法
start()
启动线程,调用当前线程run方法
run()
重写thread类中的此方法,线程所执行的操作放在此方法内。
currentThread()
get/setName()
join()
yield()释放
sleep()阻塞
alive()
Runable接口:实现接口的run()方法
推荐此方法*
推荐此方法*
创建实现runable接口的类且实现run()方法
创建实现类的对象,将此对象作为参数传递到thread类的构造器中创建thread类的对象
同过thread类的对象调用start()方法来启动线程。
创建实现类的对象,将此对象作为参数传递到thread类的构造器中创建thread类的对象
同过thread类的对象调用start()方法来启动线程。
Callable接口:重写call()方法,创建FuturTask(它实现了Runable和Callable),然后像前面一样,Thread里面放入调用start()方法来启动.
线程池:
Executorservice:
Executors:
Executorservice e=Executors.newfixedthreadpool(10);
NumTread numTread = new NumTread();//继承或实现thread的对象
ExecutorService executorService = Executors.newFixedThreadPool(10);
executorService.execute(numTread);
Executors:
Executorservice e=Executors.newfixedthreadpool(10);
NumTread numTread = new NumTread();//继承或实现thread的对象
ExecutorService executorService = Executors.newFixedThreadPool(10);
executorService.execute(numTread);
生命周期
*同步
synchronized
lock:Reentrantlock接口
通信
synchronizied里可用于通信的方法。调用下面的三个方法的同步监视器要一样synchronized(同步监视器)
wait()->sleep不会释放锁,而wait要释放锁
notify()
notifyall()
wait()->sleep不会释放锁,而wait要释放锁
notify()
notifyall()
其他新的特性
子主题
子主题
共享锁(S锁、读锁):多个事务可以对同一数据行共享一把S锁,但只能进行读不能修改;
排它锁(X锁、写锁):一个事务获取排它锁之后,可以对锁定范围内的数据行执行写操作,在锁定期间,其他事务不能再获取这部分数据行的锁(共享锁、排它锁),只允许获取到排它锁的事务进行更新数据。
排它锁(X锁、写锁):一个事务获取排它锁之后,可以对锁定范围内的数据行执行写操作,在锁定期间,其他事务不能再获取这部分数据行的锁(共享锁、排它锁),只允许获取到排它锁的事务进行更新数据。
JUC
锁
JDK
反射
JVM
GC
IO,NIO,AIO
框架
spring
spring
有一部分在文档里
注解驱动
容器
AnnotationConfigApplicationContext
@Configuration//告诉Spring这是一个配置类
@Componentscan(value="com.atguigu",includeFilters= i
@Filter(type=FilterType.ANNOTATION,classes={Controller.cla
})
@Filter(type=FilterType.ANNOTATION,classes={Controller.cla
})
/ / @ComponentScan value:指定要扫描的包
/ / excludeFilters = Filter[]﹔指定扫描的时候按照什么规则排除那些组件l
//includeFilters = Filter[]﹔指定扫描的时候只需要包含哪些组件
/ / excludeFilters = Filter[]﹔指定扫描的时候按照什么规则排除那些组件l
//includeFilters = Filter[]﹔指定扫描的时候只需要包含哪些组件
//FilterType .ANNOTATION:按照注解
//FilterType.ASSIGNABLE_TYPE:按照给定的类型;//FilterType.ASPECTJ:使用ASPECTJ表达式
//FilterType.REGEX:使用正则指定
//FilterType.cUSTOM:使用自定义规则
@scope( "prototype")
@Bean ( "person" )
@Bean ( "person" )
组件添加
概述
@ComponentScan
@Bean
@ Configuration
@Component
@Service
@Controller
@ Repository
@Conditional
@Primary
@Lazy
@Scope
@Import
ImportSelector
工厂模式
@Bean
@ Configuration
@Component
@Service
@Controller
@ Repository
@Conditional
@Primary
@Lazy
@Scope
@Import
ImportSelector
工厂模式
组件标注注解(@Controller/@Service/@Repository /@Component
@Bean[导入的第三方包里面的组件]
@Import[快速给容器中导入一个组件]
1)、@Import(要导入到容器中的组件)﹔容器中就会自动注册这个组件,id默认是全类名
2)、ImportSelector :返回需要导入的组件的全类名数组;
3) 、 ImportBeanDefinitionRegistrar:手动注册bean到容器中
使用Spring提供的 FactoryBean(工厂Bean)
类实现 factory bean接口 :class mybean implements FactoryBean<T>
实现他的三个方法
1)、默认获取到的是工广bean调用getobject创建的对象
2)、要获取工厂Bean本身,我们需要给id前面加一个&
&colorFactoryBean
2)、要获取工厂Bean本身,我们需要给id前面加一个&
&colorFactoryBean
生命周期
bean的生命周期:
bean创建-―-初始化-—––销毁的过程
容器管理bean的生命周期;
我们可以自定义初始化和销毁方法﹔容器在bean进行到当前生命周期的时候来调用我们自定义的初始化和销
bean创建-―-初始化-—––销毁的过程
容器管理bean的生命周期;
我们可以自定义初始化和销毁方法﹔容器在bean进行到当前生命周期的时候来调用我们自定义的初始化和销
1)、指定初始化和销毁方法;
指定init-method和destroy-method=" "
指定init-method和destroy-method=" "
1)、指定初始化和销毁方法;
通过@Bean指定init-method和destroy-method;2)、通过让Bean实现工nitializingBean (定义初始化逻辑)﹐
DisposableBean(定义销毁逻辑);
3)、可以使用JSR25O;
@PostConstruct:在bean创建完成并且属性赋值完成;来执行初始化方法@PreDestroy:在容器销毁bean之前通知我们进行清理工作
4) 、BeanPostProcessor 【interface] : bean的后置处理器;
在bean初始化前后进行一些处理工作;
postProcessBeforeInitialization:在初始化之前工作postProcessAfterInitialization:在初始化之后工作Spring底层对 BeanPostProcessor 的使用;
bean赋值,注入其他组件,@Autowired,生命周期注解功能,@Async ,xxxBeanPostPro
通过@Bean指定init-method和destroy-method;2)、通过让Bean实现工nitializingBean (定义初始化逻辑)﹐
DisposableBean(定义销毁逻辑);
3)、可以使用JSR25O;
@PostConstruct:在bean创建完成并且属性赋值完成;来执行初始化方法@PreDestroy:在容器销毁bean之前通知我们进行清理工作
4) 、BeanPostProcessor 【interface] : bean的后置处理器;
在bean初始化前后进行一些处理工作;
postProcessBeforeInitialization:在初始化之前工作postProcessAfterInitialization:在初始化之后工作Spring底层对 BeanPostProcessor 的使用;
bean赋值,注入其他组件,@Autowired,生命周期注解功能,@Async ,xxxBeanPostPro
组件赋值
概述
@Value
@Autowired o
@Property Source
@PropertySources
@Profile
@Autowired o
@Property Source
@PropertySources
@Profile
初始化bean对象的地方加入@propertySource
使用@PropertySource读取外部配置文件中的k/v保存到运行的环境变量中
使用@Value赋值;
1、基本数值
2、可以写SpEL;#{}
3、可以写${};取出配置文件中的值(在运行环境变量里面的值)
1、基本数值
2、可以写SpEL;#{}
3、可以写${};取出配置文件中的值(在运行环境变量里面的值)
组件注入
自动装配;
Spring利用依赖注入(DI),
完成对IOC容器中中各个
组件的依赖关系赋值;
Spring利用依赖注入(DI),
完成对IOC容器中中各个
组件的依赖关系赋值;
1、@Autowired:自动注入:
1)、默认优先按照类型去容器中找对应的组件:applicationContext.getBean(BookDao.class);
2)、如果找到多个相同类型的组件,再将属性的名称作为组件的id去容器中查找
applicationContext.getBean ( "bookDao" )
3) 、@Qualifier("bookDao")、使用@Qualifier指定需要装配的组件的id,而不是使用属性名BookService{
4)、自动装配默认一定要将属性赋值好,没有就会报错;
5)、@Primary:让Spring进行自动装配的时候,默认使用首选的bean
@Autowired
BookDao bookDao;
1)、默认优先按照类型去容器中找对应的组件:applicationContext.getBean(BookDao.class);
2)、如果找到多个相同类型的组件,再将属性的名称作为组件的id去容器中查找
applicationContext.getBean ( "bookDao" )
3) 、@Qualifier("bookDao")、使用@Qualifier指定需要装配的组件的id,而不是使用属性名BookService{
4)、自动装配默认一定要将属性赋值好,没有就会报错;
5)、@Primary:让Spring进行自动装配的时候,默认使用首选的bean
@Autowired
BookDao bookDao;
2、Spring还支持使用@Resource(JSR250)和@Inject(SR330)[java规范的注解]
@Resource:
可以和@Autowired一样实现自动装配功能;默认是按照组件名称进行装配的;没有能支持@Primary功能没有支持@Autowired (regiured=false);@Inject:
需要导入javax.inject的包,和Autowired的功能一样。没有required=false的功能;
@Autowired : Spring定义的;@Resource、@Inject都是java规范
@Resource:
可以和@Autowired一样实现自动装配功能;默认是按照组件名称进行装配的;没有能支持@Primary功能没有支持@Autowired (regiured=false);@Inject:
需要导入javax.inject的包,和Autowired的功能一样。没有required=false的功能;
@Autowired : Spring定义的;@Resource、@Inject都是java规范
3、@Autowired:构造器,参数,方法,属性;都是从容器中获取参数组件的值
1)、[标注在方法位置]:@Bean+方法参数,参数从容器中获取;默认不写@Autowired效果是一样的:都能自动
2)、[标在构造器上]∶如果组件只有一个有参构造器,这个有参构造器的@Autowired可以省略,参数位置的组件;
3)、放在参数位置:
1)、[标注在方法位置]:@Bean+方法参数,参数从容器中获取;默认不写@Autowired效果是一样的:都能自动
2)、[标在构造器上]∶如果组件只有一个有参构造器,这个有参构造器的@Autowired可以省略,参数位置的组件;
3)、放在参数位置:
4、自定义组件想要使用Spring容器底层的一些组件(ApplicationContext,BeanFactory,XXX.
自定义组件实现xXXAware,在创建对象的时候,会调用接口规定的方法注入相关组件;Aware;
把Spring底层一些组件注入到自定义的Bean中;
XXXAware:功能使用XXXProcessor;
ApplicationContextAware==》ApplicationContextAwareProcessor;
自定义组件实现xXXAware,在创建对象的时候,会调用接口规定的方法注入相关组件;Aware;
把Spring底层一些组件注入到自定义的Bean中;
XXXAware:功能使用XXXProcessor;
ApplicationContextAware==》ApplicationContextAwareProcessor;
//1、使用命令行动态参数:在虚拟机参数位置加载-Dspring . profiles.active=test
//2、代码的方式激活某种环境;
AnnotationConfigApplicationContext applicationContext =
new AnnotationConfigApplicationContext();
//1、创建一个applicationContext
//2、设置需要激活的环境
applicationContext.getEnvironment( ).setActiveProfiles( "dev","test");// 3、注册主配置类
applicationContext.register(MainconfigOfProfile.class);//4、启动刷新容器
applicationContext.refresh();
@Profile:指定组件在哪个环境的情况下才能被注册到容器中,不指定,任何环境下都能注册这个组件
1)、加了环境标识的bean,只有这个环境被激活的时候才能注册到容器中。默认是default环境
2)、写在配置类上,只有是指定的环境的时候,整个配置类里面的所有配置才能开始生效
3)、没有标注环境标识的bean在,任何环境下都是加载的;
//2、代码的方式激活某种环境;
AnnotationConfigApplicationContext applicationContext =
new AnnotationConfigApplicationContext();
//1、创建一个applicationContext
//2、设置需要激活的环境
applicationContext.getEnvironment( ).setActiveProfiles( "dev","test");// 3、注册主配置类
applicationContext.register(MainconfigOfProfile.class);//4、启动刷新容器
applicationContext.refresh();
@Profile:指定组件在哪个环境的情况下才能被注册到容器中,不指定,任何环境下都能注册这个组件
1)、加了环境标识的bean,只有这个环境被激活的时候才能注册到容器中。默认是default环境
2)、写在配置类上,只有是指定的环境的时候,整个配置类里面的所有配置才能开始生效
3)、没有标注环境标识的bean在,任何环境下都是加载的;
(Dependency Injection)”。
所谓依赖注入,就是由IOC容器在运行期间,动态地将某种依赖关系注入到对象之中
所谓依赖注入,就是由IOC容器在运行期间,动态地将某种依赖关系注入到对象之中
IOC=DI
AnnotationConfigApplicationContext applicationContext =
new AnnotationConfigApplicationContext();
AutowiredAnnotationBeanPostProcessor:解析完成自动装配功能;
AOP
AOP:【动态代理】
指在程序运行期间动态的将某段代码切入到指定方法指定位置进行运行的编程方式;
1、导入aop模块;Spring AOP:( spring-aspe
2、定义一个业务逻辑类(Mathcalculator) ;
3、定义一个日志切面类(LogAspects):
3、定义一个日志切面类(LogAspects):
通知方法:
前置通知(@Before): logStart:在目标方法(div)运行之前运行
后置通知(@After): logEnd:在目标方法(div)运行结束之后运行
返回通知(@AfterReturning): logReturn:在目标方法(div)正常返回之后运行
异常通知(@AfterThrowing): logException:在目标方法(div)出现异常以后运行
环绕通知(@Around):动态代理,手动推进目标方法运行(joinPoint.procced())
前置通知(@Before): logStart:在目标方法(div)运行之前运行
后置通知(@After): logEnd:在目标方法(div)运行结束之后运行
返回通知(@AfterReturning): logReturn:在目标方法(div)正常返回之后运行
异常通知(@AfterThrowing): logException:在目标方法(div)出现异常以后运行
环绕通知(@Around):动态代理,手动推进目标方法运行(joinPoint.procced())
4、给切面类的目标方法标注何时何地运行(通知注解)
5、将切面类和业务逻辑类(目标方法所在类)都加入到容器中;5、将切面类和业务逻辑类(目标方法所在类)都加入到容器中;
6、必须告诉Spring哪个类是切面类(给切面类上加一个注解:@Aspect)6、必须告诉Spring哪个类是切面类(给切面类上加一个注解:@方面)
[7]、给配置类中加@EnableAspectJAutoProxy【开启基于主解的aop模式】[7]、给配置类中加@EnableAspectJAutoProxy[开启基于主解的aop模式]
声明式事务
方法或类上加上@Transactional就可以完成事务管理的配置
扩展原理
BeanFactoryPostProcessor
使用对象bean之前创建对象
BeanFactoryPostProcessor: beanFactory的后置处理器;
在BeanFactory标准初始化之后调用,来定制和修改BeanFactory的内容;所有的bean定义已经保存加载到beanFactory,但是bean的实例还未创建
BeanDefinitionRegistryPostProcessor
BeanFactoryPostProcessor原理∶
1). ioc容器创建对象
2)、 invokeBeanFactoryPostProcessors( beanFactory );
如何找到所有的BeanFactoryPostProcessor并执行他们的方法;
1)、直接在BeanFactory中找到所有类型是BeanFactoryPostProcessor的组件,并执行他们的方法
2)、在初始化创建其他组件前面执行
1). ioc容器创建对象
2)、 invokeBeanFactoryPostProcessors( beanFactory );
如何找到所有的BeanFactoryPostProcessor并执行他们的方法;
1)、直接在BeanFactory中找到所有类型是BeanFactoryPostProcessor的组件,并执行他们的方法
2)、在初始化创建其他组件前面执行
ApplicationListener
监听器:监听容器中发布的事件
ApplicationListener:监听容器中发布的事件。事件驱动模型开发;
public interface ApplicationListenerK<E extends ApplicationEvent>监听ApplicationEvent及其下面的子事件;
public interface ApplicationListenerK<E extends ApplicationEvent>监听ApplicationEvent及其下面的子事件;
步骤;
1)、写一个监听器(ApplicationListener实现类)来监听某个事件(ApplicationEvent及其子类)
@EventListener
2)、把监听器加入到容器;
3)、只要容器中有相关事件的发布,我们就能监听到这个事件;
ContextRefreshedEvent:容器刷新完成(所有bean都完全创建)会发布这个事件;ContextClosedEvent:关闭容器会发布这个事件;
4)、发布一个事件:
applicationContext.publishEvent( ); //{applicationContex是AnnotationConfigApplicationContext的一个变量}
1)、写一个监听器(ApplicationListener实现类)来监听某个事件(ApplicationEvent及其子类)
@EventListener
2)、把监听器加入到容器;
3)、只要容器中有相关事件的发布,我们就能监听到这个事件;
ContextRefreshedEvent:容器刷新完成(所有bean都完全创建)会发布这个事件;ContextClosedEvent:关闭容器会发布这个事件;
4)、发布一个事件:
applicationContext.publishEvent( ); //{applicationContex是AnnotationConfigApplicationContext的一个变量}
原理
Spring容器创建过程
web
servlet3.0
1)、使用ServletContext注册Web组件(Servlet、Filter、Listener)
异步请求
Callable<String>
DeferredResult<String>
springMVC
RESTFul
GET
POST
PUT
PATCH
DELETE
POST
PUT
PATCH
DELETE
子主题
web.xml
主要是设置过滤器
字符编码过滤器
配置处理请求方式put和delete的hiddenhttpmethodfilter
配置springmvc的前端控制器dispatcherServlet
子主题
springmvc
配置文件
组件扫描
配置thymleaf视图解析器
配置视图控制器
mvc:view-controller path="/" view-name"index" ></mvc:view-controller>
<mvc:annotation-driven />
<mvc:annotation-driven />
开发视图View
view-controller
开放对静态资源的访问
default-servlet-handler
开启mvc注解驱动
文件上传解析器
异常处理
拦截器
HttpMessageConverter
@RequestBody
RequesEntity(极少用)
@ResponseBody
ResponseEntity
RequesEntity(极少用)
@ResponseBody
ResponseEntity
HttpServlet
DispatcherServlet
FrameworkServlet
HttpServletBean
HttpServlet
GenericServlet
Servlet
springboot
基础理解
配置文件
.pom文件自动配置
容器功能:常用的注解
@
最佳实践
· 引入场景依赖
https://docs.spring.io/spring-boot/docs/current/reference/html/using-spring-boot.html#using-boot-starter
·查看自动配置了哪些(选做)
。自己分析,引入场景对应的自动配置一般都生效了
配置文件中debug=true开启自动配置报告。
Negative (不生效)\Positive(生效)
·是否需要修改
。参照文档修改配置项
https:/docs.spring.io/spring-boot/docs/current/reference/html/appendix-application-properties.html#common-application-properties
.自己分析。
xxxxProperties绑定了配置文件的哪些。
。自定义加入或者替换组件
@Bean、@component。. 。。白定义器XXxxXcustomizer;
https://docs.spring.io/spring-boot/docs/current/reference/html/using-spring-boot.html#using-boot-starter
·查看自动配置了哪些(选做)
。自己分析,引入场景对应的自动配置一般都生效了
配置文件中debug=true开启自动配置报告。
Negative (不生效)\Positive(生效)
·是否需要修改
。参照文档修改配置项
https:/docs.spring.io/spring-boot/docs/current/reference/html/appendix-application-properties.html#common-application-properties
.自己分析。
xxxxProperties绑定了配置文件的哪些。
。自定义加入或者替换组件
@Bean、@component。. 。。白定义器XXxxXcustomizer;
核心功能
配置文件
web开发
网页上的某个请求调用了controller的那个方法
***doDispatch方法
***doDispatch方法
SpringMVC功能分析都从org.springframework.web.servlet.DispatcherServlet-》doDispatch ()
响应式
响应页面
json
xml
图片,音视频。。
自定义协议数据
数据访问
导入jdbc场景
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jdbc</artifactId>
</dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jdbc</artifactId>
</dependency>
导入数据库驱动
<!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
在ymL或properties文件里设置url,username,password,classname
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.url=jdbc:mysql://8.131.95.144:3306/ebp
spring.datasource.username=dms
spring.datasource.password=ZhangYuanMai123!
spring.datasource.url=jdbc:mysql://8.131.95.144:3306/ebp
spring.datasource.username=dms
spring.datasource.password=ZhangYuanMai123!
单元测试
导入依赖,一般自动导入的
注意注解的使用即可
指标监控
原理解析
分布式和负载均衡
概要
RPC
概要
简介
RPC两个核心模块:通讯,序列化。
RPC框架有很多如:
dubbo、gRPC、 Thrift、 HSF ( High Speed Service Framework)
dubbo、gRPC、 Thrift、 HSF ( High Speed Service Framework)
Apache Dubbo (incubating) |'dnbau|是一款高性能、 轻量级的开源Java RPC框架,它提供了三大核
心能力:面向接口的远程方法调用,智能容错和负载均衡,以及服务自动注册和发现。
官网:http://dubbo.apache.org/
心能力:面向接口的远程方法调用,智能容错和负载均衡,以及服务自动注册和发现。
官网:http://dubbo.apache.org/
子主题
mybatis
概要
总图
架构图
概述
理解
配置
Mapper接口类名和xml映射namespace值一致,接口方法名和映射id一致
获取session并且执行
InputStream resourceAsStream = Resources.getResourceAsStream("mybatis-config.xml").;
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(resourceAsStream);
SqlSession sqlSession = sqlSessionFactory.openSession(true);
UserMapper mapper = sqlSession.getMapper(UserMapper.class);
mapper.selectAll();
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(resourceAsStream);
SqlSession sqlSession = sqlSessionFactory.openSession(true);
UserMapper mapper = sqlSession.getMapper(UserMapper.class);
mapper.selectAll();
日志:
FATAL致命》ERROR错误》WARN警告》INFO信息》DEBUG调试
获取输入参数
#{}:
${}:
${}:
#{}
${}
需要自己添加单引号
1 ,mapper接口方法的参数为单个的字面量类型
可以通过${(}和#{手以任意的名称获取参数值,但是需要注意${的单引号问题
2、mapper接口方法的参数为多个时
此AayBatis会将这些参数放在一个map集合中,以两种方式进行存储a>以arg0, arg1. ..为键,以参数为值
b>以param1 , param2...为键,以参数为值
因此只需要通过#{}和{手以键的方式访问值即可,但是需要注意${}的单引号问题
3,若mapper接口方法的参数有多个时,可以手动将这些参数放在一个map中存储
4,mapper接口方法的参数是实体类类型的参数
只需要通过#{}和手以属性的方式访问属性值即可,但是需要注意$的单引号问题
5、使用@Param注解命名参数
可以通过${(}和#{手以任意的名称获取参数值,但是需要注意${的单引号问题
2、mapper接口方法的参数为多个时
此AayBatis会将这些参数放在一个map集合中,以两种方式进行存储a>以arg0, arg1. ..为键,以参数为值
b>以param1 , param2...为键,以参数为值
因此只需要通过#{}和{手以键的方式访问值即可,但是需要注意${}的单引号问题
3,若mapper接口方法的参数有多个时,可以手动将这些参数放在一个map中存储
4,mapper接口方法的参数是实体类类型的参数
只需要通过#{}和手以属性的方式访问属性值即可,但是需要注意$的单引号问题
5、使用@Param注解命名参数
传出参数映射
1、为字段起别名,保持和属性名的一致
2、设置全局配置,将_自动映射为驼峰
3、通过resultMap设置自定义的映射关系
2、设置全局配置,将_自动映射为驼峰
3、通过resultMap设置自定义的映射关系
resulMap
association
collection
分布查询很重要
if
test属性必须
:根据标签中test属性所对应的表达式决定标签中的内容是否需要拼接到sQL中
where
当where标签中有内容时,会自动生成where关键字,并且将内容前多余的and或or去掉当where标签中没有内容时,此时where标签没有任何效果
注意: where标签不能将其中内容后面多余的and 或or去掉
注意: where标签不能将其中内容后面多余的and 或or去掉
trim
若标签中有内容时:
prefix|suffix:将trim标签中内容前面或后面添加指定内容
suffixoverrides|prefixoverrides :将trim标签中内容前面或后面去掉指定内容
若标签中没有内容时,trim标签也没有任何效果
prefix|suffix:将trim标签中内容前面或后面添加指定内容
suffixoverrides|prefixoverrides :将trim标签中内容前面或后面去掉指定内容
若标签中没有内容时,trim标签也没有任何效果
choose. when. otherwise,相当于if...else if...else
子主题
foreach
collection:设置需要循环的数组或集合
item:表示数组或集合中的每一个数据
separator:循环体之间的分割符
open :foreach标签所循环的所有内容的开始符
close:foreach标签所循环的所有内容的结束符
item:表示数组或集合中的每一个数据
separator:循环体之间的分割符
open :foreach标签所循环的所有内容的开始符
close:foreach标签所循环的所有内容的结束符
sql标签
设置sQL片段:<sql id="empcolumns ">eid , emp_name , age, sex, email</sqL>
引用sQL片段:include refid="empcolumns "></include
引用sQL片段:include refid="empcolumns "></include
缓存机制
一级缓存
sqlsession级别:除了手动清空,,不同的查询条件语句,中间有增删改,之外的都会从缓存中获取
二级缓存
sqlsessionfactory级别:
级缓存开启的条件:
在核心配置文件中,设置全局配置属性cacheEnabled="true",默认为true,不需要设置
在映射文件中设置标签<cache />
二级缓存必须在SqlSession关闭或提交之后有效
查询的数据所转换的实体类类型必须实现序列化的接口
在核心配置文件中,设置全局配置属性cacheEnabled="true",默认为true,不需要设置
在映射文件中设置标签<cache />
二级缓存必须在SqlSession关闭或提交之后有效
查询的数据所转换的实体类类型必须实现序列化的接口
在mapper配置文件中添加的cache标签可以设置一些属性:.eviction属性:缓存回收策略
LRU (Least Recently Used)-最近最少使用的:移除最长时间不被使用的对象。FFO (First in First out)-先进先出:按对象进入缓存的顺序来移除它们。
SOFT-软引用:移除基于垃圾回收器状态和软引用规则的对象。
WEAK-弱引用:更积极地移除基于垃圾收集器状态和弱引用规则的对象。默认的是LRU。
o flushInterval属性:刷新间隔,单位毫秒
默认情况是不设置,也就是没有刷新间隔,缓存仅仅调用语句时刷新o size属性:引用数目,正整数
代表缓存最多可以存储多少个对象,太大容易导致内存溢出o readOnly属性:只读,true/false
true:只读缓存;会给所有调用者返回缓存对象的相同实例。因此这些对象不能被修改。这提供了很重要的性能优势。
false:读写缓存;会返回缓存对象的拷贝(通过序列化)。这会慢一些,但是安全,因此默认是false。
LRU (Least Recently Used)-最近最少使用的:移除最长时间不被使用的对象。FFO (First in First out)-先进先出:按对象进入缓存的顺序来移除它们。
SOFT-软引用:移除基于垃圾回收器状态和软引用规则的对象。
WEAK-弱引用:更积极地移除基于垃圾收集器状态和弱引用规则的对象。默认的是LRU。
o flushInterval属性:刷新间隔,单位毫秒
默认情况是不设置,也就是没有刷新间隔,缓存仅仅调用语句时刷新o size属性:引用数目,正整数
代表缓存最多可以存储多少个对象,太大容易导致内存溢出o readOnly属性:只读,true/false
true:只读缓存;会给所有调用者返回缓存对象的相同实例。因此这些对象不能被修改。这提供了很重要的性能优势。
false:读写缓存;会返回缓存对象的拷贝(通过序列化)。这会慢一些,但是安全,因此默认是false。
使二级缓存失效的情况:
两次查询之间执行了任意的增删改,会使一级和二级缓存同时失效
两次查询之间执行了任意的增删改,会使一级和二级缓存同时失效
逆向工程
没怎么听懂,后续重新学习
根据表来反向生成mapper以及对应的默认增删改查方法https://mybatis.org/generator/quickstart.html
pageHelper:
page
pageInfo
mybatis-plus
MyBatis-Plus简介及特性
只做增强不做改变
雪花算法
②优点:整体上按照时间自增排序,并且整个分布式系统内不会生ID碰撞,并且效率较高。
我在项目当中的调用流程
Controller
Service接口:extends IService
ServiceImpl: extends ServiceImpl implements Service接口
Mpper接口: extends BaseMapper<T>
调用接口为什么能调用其实现类的方法
基本功能
通用mapper
BaseMapper:其子类接口需要继承该泛型类
通用service
映射文件的配置路径:mybatis-plus.mapper-locations=classpath*:/mapper/**/*.xml
IService:接口
ServiceImpl:类
MyServiceImpl
实现MyService接口
实体类与数据库对应
@TableName("tuser")
@TableId(value="uid" type=IdType.AUTO)
@TableField("user_name")
@TableLogic表里的该字段为逻辑字段
@TableId(value="uid" type=IdType.AUTO)
@TableField("user_name")
@TableLogic表里的该字段为逻辑字段
常用注解
条件构造器
Wrapper
QueryWrapper
//查询用户的用户名,年龄、邮箱信息
//SELECT user_ name, age, email FROM t_ user WHERE is_ deleted=0
QueryWrapper<user> queryWrapper = new QueryWrapper<>();
queryWrapper . select( "user_ name",' "age" ," email");
List<Map<String, object>> maps = userMapper . selectMaps (queryWrapper);
maps. forEach(System. out: :println);
UpdateWrapper
//将用户名中包含有a并且(年龄大F20或邮箱为null)的用户信息修改
Updatewrapper<user> updateWrapper = new UpdateWrapper<>();
updatewrapper . like( column: "user_ name",val: "a")
.and(i -> i.gt( column: "age",val: 20) . or(). isNull( column: "email"));
updateWrapper . set("user_ name", "小黑" ). set(" email" ,"abc@atguigu. com");
int result = userMapper . update( entity: nu11, updateWrapper);
System. out . println("result: "+result);| I
子查询
//查询id小于等于100的用户信息
//SELECT uid AS id, user_ name AS name , age, email, is_ deleted FROM t_ user WHERE is_ _del
QueryWrapper<user> queryWrapper = new QueryWrapper<>();
queryWrapper . inSql( column: "uid", inValue: "select uid from t_ _user where uid <= 100
List<User> list = userMapper . selectList(queryWrapper);
list. . forEach(System . out::println);
条件查询
QueryWrapper<user> queryWrapper = new QueryWrapper<>();
queryWrapper .like(StringUtils. isNotBlank(username), column: "user_ name", username )
.ge( condition: ageBegin != nu11, column: "age", ageBegin)
.1e( condition: ageEnd != nu11, column: "age", ageEnd);
List<User> list = userMapper . selectlist(queryWrapper);
list . forEach(System . out : :println);
queryWrapper .like(StringUtils. isNotBlank(username), column: "user_ name", username )
.ge( condition: ageBegin != nu11, column: "age", ageBegin)
.1e( condition: ageEnd != nu11, column: "age", ageEnd);
List<User> list = userMapper . selectlist(queryWrapper);
list . forEach(System . out : :println);
通用枚举
插件
分页插件
Page
PageHelper
乐观锁
MyBatisX插件
多数据源
代码生成器
maven
理解:
约定》配置》编码
项目文件路径为什么需要src->main->java等路径来的,就是为了依赖管理
约定》配置》编码
项目文件路径为什么需要src->main->java等路径来的,就是为了依赖管理
POM:project object model
DOM:document object model
DOM:document object model
pom.xml对于Maven工程是核心配置文件,与构建过程相关的一切设置都在这个文件中进行配置。
重要程度相当于web.xml对于动态Web工程
重要程度相当于web.xml对于动态Web工程
构建工具
构建
构建
[1]概念︰以“Java源文件”、“框架配置文件”、“JSP”、“HTML”、“图片”等资源为“原材料”,去“生产”一个可以运行的项目的过程。
编译
部署
搭建
[1]概念︰以“Java源文件”、“框架配置文件”、“JSP”、“HTML”、“图片”等资源为“原材料”,去“生产”一个可以运行的项目的过程。
编译
部署
搭建
构建过程
构建过程的几个主要环节,
①清理:删除以前的编译结果,为重新编译做好准备。
②编译:将Java源程序编译为字节码文件。v
③测试:针对项目中的关键点进行测试,确保项目在迭代开发过程中关键点的正确性。
④报告:在每一次测试后以标准的格式记录和展示测试结果。v
⑤打包:将一个包含诸多文件的工程封装为一个压缩文件用于女装队部着。Java L柱NLs.Jjar,weu工程对应war包。v
⑥安装:在Maven环境下特指将打包的结果——jar包或war包安装到本地仓库中。
⑦部署:将打包的结果部署到远程仓库或将war包部署到服务器上运行。v
①清理:删除以前的编译结果,为重新编译做好准备。
②编译:将Java源程序编译为字节码文件。v
③测试:针对项目中的关键点进行测试,确保项目在迭代开发过程中关键点的正确性。
④报告:在每一次测试后以标准的格式记录和展示测试结果。v
⑤打包:将一个包含诸多文件的工程封装为一个压缩文件用于女装队部着。Java L柱NLs.Jjar,weu工程对应war包。v
⑥安装:在Maven环境下特指将打包的结果——jar包或war包安装到本地仓库中。
⑦部署:将打包的结果部署到远程仓库或将war包部署到服务器上运行。v
SSM
插件
lombok
概述:简化实体类的开发,直接通过注解实现有参考构造无参构造,getset等方法
常用注解
markdown
使用 = 和 - 标记一级和二级标题
使用 # 号标记
使用 # 号可表示 1-6 级标题,一级标题对应一个 # 号,二级标题对应两个 # 号,以此类推。
使用 # 号可表示 1-6 级标题,一级标题对应一个 # 号,二级标题对应两个 # 号,以此类推。
Markdown 段落没有特殊的格式,直接编写文字就好,段落的换行是使用两个以上空格加上回车。
字体
*斜体文本*
_斜体文本_
**粗体文本**
__粗体文本__
***粗斜体文本***
___粗斜体文本___
_斜体文本_
**粗体文本**
__粗体文本__
***粗斜体文本***
___粗斜体文本___
分隔线
你可以在一行中用三个以上的星号、减号、底线来建立一个分隔线,行内不能有其他东西。你也可以在星号或是减号中间插入空格。下面每种写法都可以建立分隔线:
***
* * *
*****
- - -
----------
~~
<u>
***
* * *
*****
- - -
----------
~~
<u>
脚注
[^要注明的文本]
列表
无序列表使用星号(*)、加号(+)或是减号(-)作为列表标记,这些标记后面要添加一个空格,然后再填写内容:
有序列表使用数字并加上 . 号来表示
列表嵌套只需在子列表中的选项前面添加两个或四个空格即可
有序列表使用数字并加上 . 号来表示
列表嵌套只需在子列表中的选项前面添加两个或四个空格即可
区块
Markdown 区块引用是在段落开头使用 > 符号 ,然后后面紧跟一个空格符号
> 区块中使用列表
> 1. 第一项
> 2. 第二项
> + 第一项
> 1. 第一项
> 2. 第二项
> + 第一项
* 第一项
> 菜鸟教程
> 学的不仅是技术更是梦想
* 第二项
> 菜鸟教程
> 学的不仅是技术更是梦想
* 第二项
代码
可以用反引号把它包起来(`)
代码区块使用 4 个空格或者一个制表符(Tab 键
你也可以用 ``` 包裹一段代码,并指定一种语言(也可以不指定)
链接
[菜鸟教程](https://www.runoob.com)
图片

表格
| 左对齐 | 右对齐 | 居中对齐 |
| :-----| ----: | :----: |
| 单元格 | 单元格 | 单元格 |
| 单元格 | 单元格 | 单元格 |
| :-----| ----: | :----: |
| 单元格 | 单元格 | 单元格 |
| 单元格 | 单元格 | 单元格 |
基础
数据结构
算法
设计模式
学习
人工只能
数据库
Oracle
概要
概述
总图
select 查询的使用
规则
基本语句
4大类运算
排序与分页
多表查询
单行函数
聚合函数
子查询
分类:
按子查询出现的位置:
select后面:
仅仅支持标量子查询
from后面:
支持表子查询
where或having后面:★
标量子查询(单行) √
列子查询 (多行) √
行子查询
exists后面(相关子查询)
表子查询
按结果集的行列数不同:
标量子查询(结果集只有一行一列)
列子查询(结果集只有一列多行)
行子查询(结果集有一行多列)
表子查询(结果集一般为多行多列)
按子查询出现的位置:
select后面:
仅仅支持标量子查询
from后面:
支持表子查询
where或having后面:★
标量子查询(单行) √
列子查询 (多行) √
行子查询
exists后面(相关子查询)
表子查询
按结果集的行列数不同:
标量子查询(结果集只有一行一列)
列子查询(结果集只有一列多行)
行子查询(结果集有一行多列)
表子查询(结果集一般为多行多列)
其他
函数
概要
总结
链接
1
字符
LOWER() 将整个字符串转换为小写
UPPER() 将整个字符串转换为大写
INITCAP() 把每个单词收个字母变成大写
CONCAT() 连接两个字符串
SUBSTR() 截取子字符串(全角算2字符)
substr(string string, int a, int b)
substr(string string, int a)
substr(string string, int a)
格式1
1、string 需要截取的字符串
2、a 截取字符串的开始位置(注:当a等于0或1时,都是从第一位开始截取)
3、b 要截取的字符串的长度
格式2
1、string 需要截取的字符串
2、a 可以理解为从第a个字符开始截取后面所有的字符串。
1、string 需要截取的字符串
2、a 截取字符串的开始位置(注:当a等于0或1时,都是从第一位开始截取)
3、b 要截取的字符串的长度
格式2
1、string 需要截取的字符串
2、a 可以理解为从第a个字符开始截取后面所有的字符串。
LENGTH() 返回字符串的长度(全角算1字符)
INSTR() 字符串中搜索字符位置(全角算1字符)
instr(srcStr,targetStr ,[start_position],[num])
LPAD() 在左边添加字符
RPAD() 在右边添加字符
TRIM() 删除左边和右边字符串
REPLACE() 替换子字符串
LISTAGG(XXX--要合并的列,XXX--分隔符) WITHIN GROUP( ORDER BY XXX) over(partition by XXX)
需要注意的事项如下:
1. 必须得分组,也就是说group by是必须的。
2. listagg函数的第一个参数是需要进行合并的字段;第二个参数是分隔符;同时还需要进行排序和分组within group (order by XXX)
数字
对数字四舍五入的ROUND函数;
对数字进行截取的TRUNC函数;
求模或求余的MOD函数
ceil
floor
日期
MONTHS_BETWEEN 两日期相差多少月,返回两个日期间隔月数
ADD_MONTHS 在一个日期上加或减若干月到新的日期,返回指定月数后的日期
NEXT_DAY 取得从当前日期开始遇到的第一指定星期几的日期,返回下周某一天的日期
LAST_DAY 计算指定日期所在月份的最后一天的日期,返回本月最后一天的日期
ROUND 取得按年或月四舍五入得到的新日期,四舍五入后的期间第一天
TRUNC 取得按年或月截取得到的新日期,返回日期所在期间的第一天
转换
概要
总图
总图
链接
TO_CHAR
格式
FM75%的位置
TO_DATE
TO_NUMBER
CAST
Converts one data type to another.
CAST( expression AS type_name )
CAST( MULTISET (subquery) AS type_name )
COALESCE
Returns the first non-NULL value.
COALESCE( expr1, expr2, [expr…] )
EXTRACT
Extracts and returns a field from within a specified datetime value.
EXTRACT ( date_component FROM expression )
SELECT SYSDATE,
EXTRACT(YEAR FROM SYSDATE) as EXTRACT_EXAMPLE
FROM dual;
TRUNC
Truncates the provided number to specified decimal places, or returns the date portion of a datetime value.
TRUNC ( date, fmt )
select to_char(sysdate, 'yyyy-mm-dd hh24:mi:ss'),
to_char(trunc(sysdate), 'yyyy-mm-dd hh24:mi:ss')
from dual t;--sysdate和trunc(sysdate)是不一样的 sysdate在当天的零时零分零秒等于trunc(sysdate)
select trunc(sysdate, 'dd'), trunc(sysdate) from dual t; --今天 20140703 零时零分零秒
select to_char(trunc(sysdate, 'dd'), 'yyyy/mm/dd hh24:mi:ss'),
to_char(trunc(sysdate), 'yyyy/mm/dd hh24:mi:ss')
from dual;
select trunc(sysdate-to_date('20140709 23:12:12','yyyy/mm/dd hh24:mi:ss')) from dual t;--两个日期相差的天数
select trunc(sysdate-1) from dual t;--昨天
select trunc(sysdate+1) from dual t;--明天
select trunc(sysdate, 'yy') from dual;--当年第一天
select trunc(sysdate, 'year') from dual;--当年第一天
select trunc(sysdate, 'yyyy') from dual;--当年第一天
select trunc(sysdate, 'q') from dual;--当前时间所在的季度的第一天
select trunc(sysdate, 'mm') from dual;--当月第一天
select trunc(sysdate, 'month') from dual;--当月第一天
select trunc(sysdate, 'd') from dual;--返回本周的第一天(周日为第一天)
select trunc(sysdate,'day') from dual;--返回本周的第一天(周日为第一天)
select trunc(sysdate, 'iw') from dual;--本周第二天(周日为第一天)
select trunc(sysdate, 'hh') from dual; --当前时间,精确到小时
select trunc(sysdate, 'hh24') from dual;--当前时间,精确到小时
select trunc(sysdate, 'mi') from dual;--当前时间,精确到分钟 没有精确到秒的精度/*
TRUNC ( number, decimals )
TRUNC(number,num_digits)
Number 需要截尾取整的数字。
Num_digits 用于指定取整精度的数字。Num_digits 的默认值为 0。
正数向后截取,负数向前截取
TRUNC()函数截取时不进行四舍五入
*/
select trunc(123.458) from dual; --123
select trunc(123.458, 0) from dual; --123
select trunc(123.458, 1) from dual; --123.4
select trunc(123.458, -1) from dual; --120
select trunc(123.458, -4) from dual; --0
select trunc(123.458, 4) from dual; --123.458
select trunc(123) from dual; --123
select trunc(123, 1) from dual; --123
select trunc(123, -1) from dual; --120
Number 需要截尾取整的数字。
Num_digits 用于指定取整精度的数字。Num_digits 的默认值为 0。
正数向后截取,负数向前截取
TRUNC()函数截取时不进行四舍五入
*/
select trunc(123.458) from dual; --123
select trunc(123.458, 0) from dual; --123
select trunc(123.458, 1) from dual; --123.4
select trunc(123.458, -1) from dual; --120
select trunc(123.458, -4) from dual; --0
select trunc(123.458, 4) from dual; --123.458
select trunc(123) from dual; --123
select trunc(123, 1) from dual; --123
select trunc(123, -1) from dual; --120
其他
函数名(。。。) over(partition by 。。 order by 。。 desc) r
regexp_substr(t.mat_code_desc, '[^*]+', 3, 2) lens
connect by
select rownum,level from dual connect by rownum<=10;
row_number()
rank()
dense_rank()
lead(列名,n,m): 当前记录后面第n行记录的<列名>的值,没有则默认值为m
lead()/lag() over(partition by ... order by ...) 取前面/后面第n行记录
first_value(sal)
last_value(sal)
lead(t.plan_status,4,'07') over(partition by t.order_no order by plan_no desc) r
LISTAGG(T.ITEM_NO, '/') WITHIN GROUP(ORDER BY T.S_NO, T.ITEM_NO) OVER(PARTITION BY T.S_NO) ITEM_NO,
DDL,DML,DCL
创建和管理库
创建和管理表
数据处理增删改查
数据类型
约束
其他
分类
DDL
create
alter
drop
rename
truncate
DML
insert
delete
update
select
子主题
DCL
commit
rollback
savepoint
grant
revoke
数据库对象
视图
存储过程与函数
变量,流程控制与游标
触发器
其他
其他特性
窗口函数
共用表表达式
MySQL
概述
总图
理解
select 查询的使用
规则
基本语句
4大类运算
排序与分页
多表查询
单行函数
聚合函数
子查询
其他
DDL,DML,DCL
创建和管理库
创建和管理表
数据处理增删改查
数据类型
约束
其他
分类
DDL
create
alter
drop
rename
truncate
DML
insert
delete
update
select
子主题
DCL
commit
rollback
savepoint
grant
revoke
数据库对象
视图
存储过程与函数
变量,流程控制与游标
触发器
其他
其他特性
窗口函数
共用表表达式
MariaDB
redis
概要:
概述
redis:not only sql
什么时候用NoSQL:(用不着sql 的和用了sql 也不行的情况,请考虑用NoSql )
什么时候用NoSQL:(用不着sql 的和用了sql 也不行的情况,请考虑用NoSql )
开始
总图
NoSQL使用场景
1.解决CPU及内存的压力
2.解决IO的压力
架构
1、解决功能性的问题:Java、Jsp、RDBMS、Tomcat、HTML、Linux、JDBC、SVN
2、解决扩展性的问题:Struts、Spring、SpringMVC、Hibernate、Mybatise
3、解决性能的问题:NoSQL、Java线程、Hadoop、Nginx、MQ、ElasticSearch
Redis6课程大纲
1、NoSQL数据库简介o
2、Redis6概述和安装
3、常用五大数据类型
key
set key val
get key
keys *
exists key
type key
del key
unlink key
getset key val
get key
keys *
exists key
type key
del key
unlink key
getset key val
Redis字符串(String)
数据结构:底层时动态的字符串结构,相当于ArrayList,value最大的大小不能超过512M
set key val
mset key1 val1 key2 val2
setrange key index val
setnx key val (key不存在时添加)
setex key mill(过期时间) val
get key
mget key1 key2
getrange key beginindex endindex
append key
strlen key
setnx key 设置但是不存在时设置
incr key(int)/decr key
incrby key/decrby key
mset key1 val1 key2 val2
setrange key index val
setnx key val (key不存在时添加)
setex key mill(过期时间) val
get key
mget key1 key2
getrange key beginindex endindex
append key
strlen key
setnx key 设置但是不存在时设置
incr key(int)/decr key
incrby key/decrby key
Redis列表(List)
数据结构:底层是双向链表
查看一直都是从左边
查看一直都是从左边
lpush/rpush key listval1 listval2 listval3
lrange key 0 -1 获取所有的值
lpop/rpop key 突出该key的值
rpoplpush source destination
lindex key index
llen key 获取长的
linsert key before val1
lrem key n 删除n个
lset key index newval
lrange key 0 -1 获取所有的值
lpop/rpop key 突出该key的值
rpoplpush source destination
lindex key index
llen key 获取长的
linsert key before val1
lrem key n 删除n个
lset key index newval
Redis集合(Set)
数据结构:数据字典,好用的是hashmap
sadd key1 val1 val2
smembers key
sismember key val 判断key中是否包含value
scard key 返回个数
srem key val1 val2 删除集合元素
spop key 随机吐出值
srandmember key n 集合中随机吐出n个值
smove source dest vale
sinter key1 key2 获取交集
sunion key1 key2 并集
sdiff key1 key2 差集
smembers key
sismember key val 判断key中是否包含value
scard key 返回个数
srem key val1 val2 删除集合元素
spop key 随机吐出值
srandmember key n 集合中随机吐出n个值
smove source dest vale
sinter key1 key2 获取交集
sunion key1 key2 并集
sdiff key1 key2 差集
Redis哈希(Hash)
数据结构:对应map特别适合存储对象类型
hset key filed1 val field2 val2
hget key field
hgetall key
hexists key field
hkeys key
hvals key
hincrby key field n
hsetnx key field val
hget key field
hgetall key
hexists key field
hkeys key
hvals key
hincrby key field n
hsetnx key field val
Redis有序集合Zset
数据结构:是一个有序的set,redis 正是通过分数来为集合中的成员进行从小到大的排序。
有序集合的成员是唯一的,但分数(score)却可以重复
有序集合的成员是唯一的,但分数(score)却可以重复
zadd key score val
zrange key 0 -1 withscores 获取所有的
zrangebyscore key min max 默认曾序
zrevrangebyscore key max min
zincrby key socore val
zrem key val
zcount key min max
zrank key val 返回排名
zrange key 0 -1 withscores 获取所有的
zrangebyscore key min max 默认曾序
zrevrangebyscore key max min
zincrby key socore val
zrem key val
zcount key min max
zrank key val 返回排名
4、Redis6配置文件详解
CONFIG GET *
CONFIG SET CONFIG_SETTING_NAME NEW_CONFIG_VALUE
5、Redis6的发布和订阅
概要:Redis 发布订阅 (pub/sub) 是一种消息通信模式:发送者 (pub) 发送消息,订阅者 (sub) 接收消息。
Redis 客户端可以订阅任意数量的频道。
Redis 客户端可以订阅任意数量的频道。
SUBSCRIBE channel [channel ...]
PUBLISH channel message
PUBLISH channel message
6、Redis6新数据类型
Bitmaps
setbit key ofset 0|1
getbit key ofset
bitcount key
getbit key ofset
bitcount key
HyperLogLog
专门统计基数的
PFADD key element [element ...]
PFCOUNT key [key ...]
PFMERGE destkey sourcekey [sourcekey ...]
PFCOUNT key [key ...]
PFMERGE destkey sourcekey [sourcekey ...]
Geospatial
Redis GEO 主要用于存储地理位置信息,并对存储的信息进行操作,该功能在 Redis 3.2 版本新增
geoadd:添加地理位置的坐标。
geopos:获取地理位置的坐标。
geodist:计算两个位置之间的距离。
georadius:根据用户给定的经纬度坐标来获取指定范围内的地理位置集合。
georadiusbymember:根据储存在位置集合里面的某个地点获取指定范围内的地理位置集合。
geohash:返回一个或多个位置对象的 geohash 值。
geopos:获取地理位置的坐标。
geodist:计算两个位置之间的距离。
georadius:根据用户给定的经纬度坐标来获取指定范围内的地理位置集合。
georadiusbymember:根据储存在位置集合里面的某个地点获取指定范围内的地理位置集合。
geohash:返回一个或多个位置对象的 geohash 值。
7、Jedis操作Redis6
可以操作redis java client
<!-- https://mvnrepository.com/artifact/redis.clients/jedis -->
<dependency>
<groupId>redis.clients</groupId>
<artifactId>jedis</artifactId>
<version>4.3.0</version>
</dependency>
<dependency>
<groupId>redis.clients</groupId>
<artifactId>jedis</artifactId>
<version>4.3.0</version>
</dependency>
redis 命令行有的所有的方法在本客户端都有
8、Redis6Spring Boot整合
9、Redis6的事务操作
Redis的事务定义
Redis 事务可以一次执行多个命令, 并且带有以下三个重要的保证:
批量操作在发送 EXEC 命令前被放入队列缓存。
收到 EXEC 命令后进入事务执行,事务中任意命令执行失败,其余的命令依然被执行。
在事务执行过程,其他客户端提交的命令请求不会插入到事务执行命令序列中
一个事务从开始到执行会经历以下三个阶段:
开始事务。
命令入队。
执行事务。
批量操作在发送 EXEC 命令前被放入队列缓存。
收到 EXEC 命令后进入事务执行,事务中任意命令执行失败,其余的命令依然被执行。
在事务执行过程,其他客户端提交的命令请求不会插入到事务执行命令序列中
一个事务从开始到执行会经历以下三个阶段:
开始事务。
命令入队。
执行事务。
Multi、Exec、discard
事务的错误处理事务冲突的问题
悲观锁
乐观锁
WATCH key [key ...]
UNWATCH key [key ...]
UNWATCH key [key ...]
Redis事务三特性
Redis事务秒杀案例
hset prod name ticket count 10 price 101
hgetall prod
hset prod count 9
hincrby prod count -1
hgetall prod
hgetall prod
hset prod count 9
hincrby prod count -1
hgetall prod
10、Redis6持久化之RDB
设置里面设置就好了
11、Redis6持久化之AOF
12、Redis6的主从复制
what:主机数据更新后根据配置和策略
13、Redis6集群
通过集群解决容量不够的问题
并发写操作
并发写操作
14、Redis6应用问题解决
缓存穿透
缓存击穿
缓存雪崩
分布式锁
15、Redis6新功能
ACLIO多线程
acl cat
acl list
acl whoami
acl setuser username on >password ~cached:* *get
acl list
acl whoami
acl setuser username on >password ~cached:* *get
redis 执行命令依然是单线程,多线程。。
工具支持ClusterRedis
新功能持续关注
子主题
MongoDB
图关系数据库
概要
概述:
主要应用:社会关系,公共交通网络,地图及网络拓谱(n*(n-1)/2)
前端
数据交互格式
JSON
数据交互格式
[]:数组 list
{}:对象 key:value map
[{},{},...]:多个数据
{}:对象 key:value map
[{},{},...]:多个数据
BS与外部交互格式
函数
JSON.stringify(value[, replacer [, space]])
JSON.parse(value[, replacer [, space]])
JSON.parse(value[, replacer [, space]])
XML
HTML
html
标签
h1,s,del,ins,b,i,u,strong,p,ul li,ol li ,
dl dt dd ,hr,br,div span,a,img,
table,lable,select,input,textarea,form
dl dt dd ,hr,br,div span,a,img,
table,lable,select,input,textarea,form
写重要的几个即可
样式
行内样式
内嵌样式
选择样式
属性
背景属性
width: 500px;height:600px;
border: 20px solid rgba(0, e,255,0.4);/*border: 1px solid #008;*/
/*设置背景图片*/
background-image: url("gfc.jpg");
/*背景平铺repeat no-repeat repeat-x repeat-y*/background-repeat: no-repeat;
/背景位置: Xy,可以写px,可以写方位名词*//*background-position: 108px5epx;*/
/*background-position: right sepx;*/ background-position: center center;*//*如果只写一个方向,另外一个方向是默认居中*//* background-position:10px;*/
background-color: red;
/*背景固定:背景不随着页面或者元素滚动*/
/*https://www.jq22.com/demo/scrolly-master201704141554/example/*//*background-attachment: fixed;*/
/华背景尺寸可以用来设置背景宽高:Px单位%单位,cover contain*//*background-size: cover; */
/* cover是宽高等比缩放,直到完全铺满屏幕,但是可能会导致某一边图片超出被裁减*/
/*contain是宽高等比缩放,宽高之一填满盒子,就会停止缩放,可能导致背景的盒子无法填满*/background-size: contain;1
background-origin: border-box;
border: 20px solid rgba(0, e,255,0.4);/*border: 1px solid #008;*/
/*设置背景图片*/
background-image: url("gfc.jpg");
/*背景平铺repeat no-repeat repeat-x repeat-y*/background-repeat: no-repeat;
/背景位置: Xy,可以写px,可以写方位名词*//*background-position: 108px5epx;*/
/*background-position: right sepx;*/ background-position: center center;*//*如果只写一个方向,另外一个方向是默认居中*//* background-position:10px;*/
background-color: red;
/*背景固定:背景不随着页面或者元素滚动*/
/*https://www.jq22.com/demo/scrolly-master201704141554/example/*//*background-attachment: fixed;*/
/华背景尺寸可以用来设置背景宽高:Px单位%单位,cover contain*//*background-size: cover; */
/* cover是宽高等比缩放,直到完全铺满屏幕,但是可能会导致某一边图片超出被裁减*/
/*contain是宽高等比缩放,宽高之一填满盒子,就会停止缩放,可能导致背景的盒子无法填满*/background-size: contain;1
background-origin: border-box;
类选择 .classname
选择器
子类选择器
并集选择器
伪类选择器
布局
盒子模型、浮动、定位共同的作用用来布局的
盒子模型解决局部内容布局
浮动解决:盒子在一行上的布局
定位解决盒子的叠加布局*
盒子模型解决局部内容布局
浮动解决:盒子在一行上的布局
定位解决盒子的叠加布局*
css
bootstrap
bootstrap前端框架
子主题
thymeleaf
注:文档记录的较多
vue
README.md
执行的语句定义是在package.json里的script中定义
使用时npm run xxx可以弄出前面的执行按钮
使用时npm run xxx可以弄出前面的执行按钮
重要的画面
加载过程
项目加载的过程是 index.tml → main.js → app.vue → index.js → helloworld.vue
index.html
项目的运行入口,在body体中只有一个 div 标签,其 id 为 app,这个 id 将会连接到 src/main.js 内容。
在浏览器打开的瞬间,浏览器中正文部分会瞬间显示index.html 中定义的正文部分。上面有一个 id 为 app 的挂载点,之后我们的 Vue 根实例就会挂载到该挂载点上
在浏览器打开的瞬间,浏览器中正文部分会瞬间显示index.html 中定义的正文部分。上面有一个 id 为 app 的挂载点,之后我们的 Vue 根实例就会挂载到该挂载点上
main.js
入口文件,主要作用是初始化vue实例,并引入所需要的插件。新建了一个 vue 实例,并使用 el:#app 链接到 index.html 中的 app,并使用 template 引入组件和路由相关的内容,也就是说通过 main.js 我们关联到 App.vue 组件
app.vue
主组件,所有页面都是在 App.vue 下进行切换的。可以理解为所有的路由 router,也是 App.vue 的子组件
index.js
标签下,有标签,标签将会把路由相关内容渲染在这个地方,路由中文件位于src/router/index.js 中。在 index.js 的代码中,建立了路由相关的内容,也就会渲染到 app.vue 下面的中
package.json
基础语法
起步
基础
v-on:==@
v-bind:==:
v-model.number=
.trim=
v-bind指令用于设置HTML属性:v-bind:href 缩写为 :href
v-on 指令用于绑定HTML事件 :v-on:click 缩写为 @click
v-on:==@
v-bind:==:
v-model.number=
.trim=
组件:组件可以扩展 HTML 元素,封装可重用的代码
component
component
v-bind指令用于设置HTML属性:v-bind:href 缩写为 :href
v-on 指令用于绑定HTML事件 :v-on:click 缩写为 @click
事件
v-on:click
v-on:dblclick可实现双击事件
v-on:dblclick可实现双击事件
绑定
组件
路由
响应
属性
计算属性
监听属性
watch:用于监听data里面的数据是否被修改,一旦修改就可以执行一些其他的操作【也是方法】
二者区别:
计算属性和监听属性的不同
1.计算属性的get必须有return,而监听属性return可有可无
2.计算属性具有缓存的效果,而监听属性没有缓存
3.计算属性可以自定义名称,而监听属性只能监听和data里面的名称相同
4.计算属性适用于复杂的运算,而监听属性适合一些消耗性功能,比如Ajax
1.计算属性的get必须有return,而监听属性return可有可无
2.计算属性具有缓存的效果,而监听属性没有缓存
3.计算属性可以自定义名称,而监听属性只能监听和data里面的名称相同
4.计算属性适用于复杂的运算,而监听属性适合一些消耗性功能,比如Ajax
methods
生命周期
8个钩子函数是那些:
beforeCreate
created
beforeMount
Mounted
创建vue实例
beforeUpdate
updated
更新实例
beforeDestroy
destroyed
created
beforeMount
Mounted
创建vue实例
beforeUpdate
updated
更新实例
beforeDestroy
destroyed
图片
生命周期
js
dom
子主题
node.js
node.js
Node.js® is a JavaScript runtime built on Chrome's V8 JavaScript engine.
是JavaScript运行环境
是JavaScript运行环境
npm
fs文件系统模块
path路径模块
http模块
服务器
tomcat
项目可以运行需要把打包的jar包放入tomcat路径下的webapps目录里
运行
D:\Users\23236\Java\apache-tomcat-8.5.61\bin下的startup.bat可以运行服务器
版本控制
概要
概述
分布式:Git,Mercurial,Bazaar,Darcs
集中式:SVN,CVS
集中式:SVN,CVS
介绍:linus
git
git cmd
概要
概述
github
token
口令名字:value
cookie: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
cookie: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
git bash
主要的语句
cd 打开或者鼠标右键Git Bash Here
ls -al 查看所有目录按照list格式
vim 打开编辑器
:wq 保存并退出编辑器
ls -al 查看所有目录按照list格式
vim 打开编辑器
:wq 保存并退出编辑器
版本控制
大致的流程
git config
git init
git status 查看现在的状态
git add
git commit 提交
git log/reflog 查看记录
.gitignore
git branch
git checkout
git merge
git clone
git init
git status 查看现在的状态
git add
git commit 提交
git log/reflog 查看记录
.gitignore
git branch
git checkout
git merge
git clone
常用的git
git remote -v
git push 推送
git pull 拉取
git clone 克隆(不需要登录账号)
修改代码
git add origin
git commit origin
git push origin
git push 推送
git pull 拉取
git clone 克隆(不需要登录账号)
修改代码
git add origin
git commit origin
git push origin
vim
cat filename
github
token
cookie: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
版本穿梭:
返回到摸一个版本,1.通过git reflog 来查询版本号(第一个)2.git reset --hard 查询到的版本号
分支
分支和切换分支图解
查看分支
git branch -v
创建分支
git branch branchname
修改分支
vim 直接修改保存,然后添加提交
切换分支
git checkout branchname
合并分支
git merge branchname(把branchname分支合并到当前的分支)
产生冲突解决冲突
忽略
概要
概述:###表示注释
以斜杠 “/” 开头表示跟目录,放在末尾表示跟目录以及子目录下的所有该文件夹;
以星号 “*” 通配多个字符;
以问号 “?” 通配单个字符;
以方括号 “[]” 包含单个字符的匹配列表;
以叹号 “!” 表示不忽略(跟踪)匹配到的文件或目录;
.ignore
所有的版本控制都用,需要在.gitconfig文件里声明
.gitignore
当前的项目控制,在当前项目下即可
git idea
概述
步骤
add
commit
push
pull
分支mergeinto
上面的两个一样,bash比cmd更强且更接近于Linux
Gitee码云
没什么好说的,跟GitHub不能说一模一样,只能说完全一样。
gitlab
svn
操作系统
概要
常用命令
cd 打开
dir/ls 查看目录
dir/ls 查看目录
端口号/PID
查找端口号对应的PID:netstat -aon|findstr "port"
根据PID查找对应的应用:tasklist|findstr "pid"
根据PID查找对应的应用:tasklist|findstr "pid"
Linux
概要
概述
常用的命令
gcc --version 查看c语言环境 ,查看环境就是--version
wget https://download.redis.io/redis-stable.tar.gz wget是获取下载,一个下载文件的工具
tar -xzvf redis-stable.tar.gz 解压压缩文件
make redis 编译 make Install 进行安装
sudo apt install redis-stable
wget https://download.redis.io/redis-stable.tar.gz wget是获取下载,一个下载文件的工具
tar -xzvf redis-stable.tar.gz 解压压缩文件
make redis 编译 make Install 进行安装
sudo apt install redis-stable
子主题
Windows
CMD比较常用命令集:
winver---------检查Windows版本
wmimgmt.msc----打开windows管理体系结构(WMI)
wupdmgr--------windows更新程序
wscript--------windows脚本宿主设置
write----------写字板
winmsd---------系统信息
wiaacmgr-------扫描仪和照相机向导
winchat--------XP自带局域网聊天
mem.exe--------显示内存使用情况
Msconfig.exe---系统配置实用程序
mplayer2-------简易widnows media player
mspaint--------画图板
mstsc----------远程桌面连接
mplayer2-------媒体播放机
magnify--------放大镜实用程序
mmc------------打开控制台
mobsync--------同步命令
dxdiag---------检查DirectX信息
drwtsn32------ 系统医生
devmgmt.msc--- 设备管理器
dfrg.msc-------磁盘碎片整理程序
diskmgmt.msc---磁盘管理实用程序
dcomcnfg-------打开系统组件服务
ddeshare-------打开DDE共享设置
dvdplay--------DVD播放器
net stop messenger-----停止信使服务
net start messenger----开始信使服务
notepad--------打开记事本
nslookup-------网络管理的工具向导
ntbackup-------系统备份和还原
narrator-------屏幕“讲述人”
ntmsmgr.msc----移动存储管理器
ntmsoprq.msc---移动存储管理员操作请求
netstat -an----(TC)命令检查接口
syncapp--------创建一个公文包
sysedit--------系统配置编辑器
sigverif-------文件签名验证程序
sndrec32-------录音机
shrpubw--------创建共享文件夹
secpol.msc-----本地安全策略
syskey---------系统加密,一旦加密就不能解开,保护windows xp系统的双重密码
services.msc---本地服务设置
Sndvol32-------音量控制程序
sfc.exe--------系统文件检查器
sfc /scannow---windows文件保护
tsshutdn-------60秒倒计时关机命令
tourstart------xp简介(安装完成后出现的漫游xp程序)
taskmgr--------任务管理器
eventvwr-------事件查看器
eudcedit-------造字程序
explorer-------打开资源管理器
packager-------对象包装程序
perfmon.msc----计算机性能监测程序
progman--------程序管理器
regedit.exe----注册表
rsop.msc-------组策略结果集
regedt32-------注册表编辑器
rononce -p ----15秒关机
regsvr32 /u *.dll----停止dll文件运行
regsvr32 /u zipfldr.dll------取消ZIP支持
cmd.exe--------CMD命令提示符
chkdsk.exe-----Chkdsk磁盘检查
certmgr.msc----证书管理实用程序
calc-----------启动计算器
charmap--------启动字符映射表
cliconfg-------SQL SERVER 客户端网络实用程序
Clipbrd--------剪贴板查看器
conf-----------启动netmeeting
compmgmt.msc---计算机管理
cleanmgr-------垃圾整理
ciadv.msc------索引服务程序
osk------------打开屏幕键盘
odbcad32-------ODBC数据源管理器
oobe/msoobe /a----检查XP是否激活
lusrmgr.msc----本机用户和组
logoff---------注销命令
iexpress-------木马捆绑工具,系统自带
Nslookup-------IP地址侦测器
fsmgmt.msc-----共享文件夹管理器
utilman--------辅助工具管理器
wmimgmt.msc----打开windows管理体系结构(WMI)
wupdmgr--------windows更新程序
wscript--------windows脚本宿主设置
write----------写字板
winmsd---------系统信息
wiaacmgr-------扫描仪和照相机向导
winchat--------XP自带局域网聊天
mem.exe--------显示内存使用情况
Msconfig.exe---系统配置实用程序
mplayer2-------简易widnows media player
mspaint--------画图板
mstsc----------远程桌面连接
mplayer2-------媒体播放机
magnify--------放大镜实用程序
mmc------------打开控制台
mobsync--------同步命令
dxdiag---------检查DirectX信息
drwtsn32------ 系统医生
devmgmt.msc--- 设备管理器
dfrg.msc-------磁盘碎片整理程序
diskmgmt.msc---磁盘管理实用程序
dcomcnfg-------打开系统组件服务
ddeshare-------打开DDE共享设置
dvdplay--------DVD播放器
net stop messenger-----停止信使服务
net start messenger----开始信使服务
notepad--------打开记事本
nslookup-------网络管理的工具向导
ntbackup-------系统备份和还原
narrator-------屏幕“讲述人”
ntmsmgr.msc----移动存储管理器
ntmsoprq.msc---移动存储管理员操作请求
netstat -an----(TC)命令检查接口
syncapp--------创建一个公文包
sysedit--------系统配置编辑器
sigverif-------文件签名验证程序
sndrec32-------录音机
shrpubw--------创建共享文件夹
secpol.msc-----本地安全策略
syskey---------系统加密,一旦加密就不能解开,保护windows xp系统的双重密码
services.msc---本地服务设置
Sndvol32-------音量控制程序
sfc.exe--------系统文件检查器
sfc /scannow---windows文件保护
tsshutdn-------60秒倒计时关机命令
tourstart------xp简介(安装完成后出现的漫游xp程序)
taskmgr--------任务管理器
eventvwr-------事件查看器
eudcedit-------造字程序
explorer-------打开资源管理器
packager-------对象包装程序
perfmon.msc----计算机性能监测程序
progman--------程序管理器
regedit.exe----注册表
rsop.msc-------组策略结果集
regedt32-------注册表编辑器
rononce -p ----15秒关机
regsvr32 /u *.dll----停止dll文件运行
regsvr32 /u zipfldr.dll------取消ZIP支持
cmd.exe--------CMD命令提示符
chkdsk.exe-----Chkdsk磁盘检查
certmgr.msc----证书管理实用程序
calc-----------启动计算器
charmap--------启动字符映射表
cliconfg-------SQL SERVER 客户端网络实用程序
Clipbrd--------剪贴板查看器
conf-----------启动netmeeting
compmgmt.msc---计算机管理
cleanmgr-------垃圾整理
ciadv.msc------索引服务程序
osk------------打开屏幕键盘
odbcad32-------ODBC数据源管理器
oobe/msoobe /a----检查XP是否激活
lusrmgr.msc----本机用户和组
logoff---------注销命令
iexpress-------木马捆绑工具,系统自带
Nslookup-------IP地址侦测器
fsmgmt.msc-----共享文件夹管理器
utilman--------辅助工具管理器
其他
知识框架
JAVA
结构图
框架
集合图
jvm内存
算法题
常见的
1.模拟一个trim方法,去除字符串两端的空格。
2.将一个字符串进行反转。将字符串中指定部分进行反转。比如"abcdefg"反转为"abfedcg"
3.获取一个字符串在另一个字符串中出现的次数。比如:获取“ab”在“abkkcadkabkebfkabkskab”中出现的次数
4.获取两个字符串中最大相同子串。比如:
str1 = "abcwerthelloyuiodef";str2 = "cvhellobnm"
提示:将短的那个串进行长度依次递减的子串与较长的串比较。
5.对字符串中字符进行自然顺序排序。提示:
1)字符串变成字符数组。2)对数组排序,选择,冒泡,Arrays.sort();3)将排序后的数组变成字符串。
2.将一个字符串进行反转。将字符串中指定部分进行反转。比如"abcdefg"反转为"abfedcg"
3.获取一个字符串在另一个字符串中出现的次数。比如:获取“ab”在“abkkcadkabkebfkabkskab”中出现的次数
4.获取两个字符串中最大相同子串。比如:
str1 = "abcwerthelloyuiodef";str2 = "cvhellobnm"
提示:将短的那个串进行长度依次递减的子串与较长的串比较。
5.对字符串中字符进行自然顺序排序。提示:
1)字符串变成字符数组。2)对数组排序,选择,冒泡,Arrays.sort();3)将排序后的数组变成字符串。
数组
存储
问问题
技术问题
基础
==和equals的区别
可以使用在基本数据类型变量和引用数据类型变量中
如果比较的是基本数据类型变量:比较两个变量保存的数据是否相等。(不一定类型要相同)
如果比较的是引用数据类型变量:比较两个对象的地址值是否相同.即两个引用是否指向同一个对象实体
如果比较的是基本数据类型变量:比较两个变量保存的数据是否相等。(不一定类型要相同)
如果比较的是引用数据类型变量:比较两个对象的地址值是否相同.即两个引用是否指向同一个对象实体
说明:0bject类中定义的equals ()和==的作用是相同的:比较两个对象的地址值是否相同.即两个引用是否指向同一个地址。
像String、Date、File、包装类等都重写了0bject类中的equals()方法。重写以后,比较的不是两个引用的地址是否相同,而是比较两个对象的“实体内容"是否相同。
像String、Date、File、包装类等都重写了0bject类中的equals()方法。重写以后,比较的不是两个引用的地址是否相同,而是比较两个对象的“实体内容"是否相同。
多态性的理解
他是编译时行为还是运行式
他是编译时行为还是运行式
抽象类与接口的区别
以下为相似的------------------------------------------
重载,重写的区别:
final,finally,finalize的区别:
throw和throws的区别:
collection,collections的区别:
string,string buffer,string builder的区别:
arrylist,linklist 的区别:
hashmap,linkhashmap的区别:
Java高级部分--------------------------------------------------
进程和线程的区别:
synchronized 与Lock的异同?
如何解决线程安全问题﹖有几种方式
sleep()和wait()的异同?
相同点
不同点
不同点
创建多线程有几种方式?四种!
api--------------
String s = new String("abc");方式创建对象,在内存中创建了几个对象?两个:一个是堆空间中new结构,另一个是char[]对应的常量池中的数据: "abc"
技术
写一个安全的懒汉式的单列模式--->
计算机好用
任务计划程序
用于自启动某个电脑程序的应用
version
M0++.0.0
根下增长的分支,0层上增加
根下增长的分支,0层上增加
M0.0.0
当主目录计算机增加其他模块时M0.0++.0
1层上增加的分支
1层上增加的分支
subv0.0.0
当计算机主目录下新增模块时subv0.0.0++
2层的版本控制,模块下的控制
2层的版本控制,模块下的控制
ssubv0.0.2
1.开始版本控制
2.redis 副本大概了解,主要就是key,value的中间数据库
计算机的相关知识包括前端,后端,数据库,以及框架,还有系统,网络,硬件等
0 条评论
下一页