计算机基础
2022-11-30 14:01:25 0 举报
AI智能生成
自己整理的关于计算机的基础知识,后续一直学习,一直补充。。。
作者其他创作
大纲/内容
概述
框架
初面
可以使用在基本数据类型变量和引用数据类型变量中如果比较的是基本数据类型变量:比较两个变量保存的数据是否相等。(不一定类型要相同)如果比较的是引用数据类型变量:比较两个对象的地址值是否相同.即两个引用是否指向同一个对象实体
说明:0bject类中定义的equals ()和==的作用是相同的:比较两个对象的地址值是否相同.即两个引用是否指向同一个地址。像String、Date、File、包装类等都重写了0bject类中的equals()方法。重写以后,比较的不是两个引用的地址是否相同,而是比较两个对象的“实体内容\"是否相同。
==和equals的区别
多态性的理解他是编译时行为还是运行式
抽象类与接口的区别
以下为相似的------------------------------------------
重载,重写的区别:
throw和throws的区别:
string,string buffer,string builder的区别:
Java高级部分--------------------------------------------------
进程和线程的区别:
synchronized 与Lock的异同?
如何解决线程安全问题﹖有几种方式
相同点不同点
sleep()和wait()的异同?
创建多线程有几种方式?四种!
基础
其他
技术面
面试
概要
总图
简介
一、ping 主要是测试本机TCP/IP协议配置正确性与当前网络现状.ping命令的基本使用格式是: ping IP地址/主机名/域名 [-t] [-a] [-n count] [-l size]
二、netstat 主要是帮助了解整体网络情况以及当前连接情况. 基本使用命令格式:netstat [-n] [-a] [-e] [-r][-s]
三、ipconfig 主要是了解当前TCP/IP协议所设置的值,如IP地址、子网掩码、缺省网关、Mac地址等. 基本使用方法:ipconfig [/all/release/renew]
四、route 主要用于配置路由与查看当前路由情况. 基本使用方法:route [print] [add] [change] [delete]
六、ARP(Address Resolution Protocol,地址解析协议,是获取物理地址的一个TCP/IP协议.) 主要用来查看本地计算机或另一台计算机的ARP高速缓存中的当前内容. 基本使用方法:arp [-a/g] [-s] [-d]
查看网络:
HTTP
应用层
表示层
会话层
TCP/UDP
传输层
IP
网络层
数据链路层
物理层
网络基层模型
socket
webSocket
NETWORK
C语言
C++
C#
集合图
jvm内存
结构图
赋值
逻辑
比较
左右移位运算
运算
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);
自动拆箱,装箱
包装类
this(形参列表);本类重载的其他构造器如有N个类this最多有n-1个
super(形参列表);调用父类中指定的构造器至少有一个
修饰:属性,方法,代码块,内部类 ×构造器不能修饰随着类的创建而创建保存在方法区中的
static
可以修饰,属性,方法,类final变量是一个常量,只能赋值一次。final方法为最终方法,不可以覆盖。final类是最终类,不可以继承。
final
可以描述类和方法,属性不可描述abstract方法只定义声名,没有定义实现。abstract类不能实例化。只有通过子类继承抽象类并覆盖了抽象类的所有抽象方法后该子类方可实例化。否则该子类还是个抽象类。
abstract
接口
error
FileNotFoundException
IOException
ClassNotFoundException
编译时异常
Nul1PointerException
ArrayIndexoutofBoundsException
ClassCastException
NumberFormatException
InputMismatchException
ArithmeticException
运行时异常
exception
throw able
抓抛模型:try cach finally抛:之后的代码不会执行
throws
异常的处理
异常
关键字
面向对象
list
set
collection
map
集合
内存地址,赋值,初始化
常用的主要方法:length();charAt();toUppercase();trim();equals();concat();compareto();substring();endswith();startwith();contains();indexof();lastindexof();
String
StringBuffer
StringBuilder
字符串
日期
常用类
Java基础
一段静态的代码
子主题
程序
正在运行程序作为资源分配的单位
进程
一个进程同时运行多个线程为多线程
启动线程,调用当前线程run方法
start()
重写thread类中的此方法,线程所执行的操作放在此方法内。
run()
currentThread()
get/setName()
join()
yield()释放
sleep()阻塞
alive()
Thread类常用的方法:继承thread类重写run()方法
创建实现runable接口的类且实现run()方法创建实现类的对象,将此对象作为参数传递到thread类的构造器中创建thread类的对象同过thread类的对象调用start()方法来启动线程。
Runable接口:实现接口的run()方法推荐此方法*
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);
线程池:
*创建和使用
生命周期
synchronized
lock:Reentrantlock接口
*同步
synchronizied里可用于通信的方法。调用下面的三个方法的同步监视器要一样synchronized(同步监视器)wait()->sleep不会释放锁,而wait要释放锁notify()notifyall()
通信
其他新的特性
共享锁(S锁、读锁):多个事务可以对同一数据行共享一把S锁,但只能进行读不能修改;排它锁(X锁、写锁):一个事务获取排它锁之后,可以对锁定范围内的数据行执行写操作,在锁定期间,其他事务不能再获取这部分数据行的锁(共享锁、排它锁),只允许获取到排它锁的事务进行更新数据。
JUC
线程
多线程
锁
JDK
反射
JVM
GC
Java高级部分
有一部分在文档里
@Configuration//告诉Spring这是一个配置类
//FilterType .ANNOTATION:按照注解//FilterType.ASSIGNABLE_TYPE:按照给定的类型;//FilterType.ASPECTJ:使用ASPECTJ表达式//FilterType.REGEX:使用正则指定//FilterType.cUSTOM:使用自定义规则
/ / @ComponentScan value:指定要扫描的包/ / excludeFilters = Filter[]﹔指定扫描的时候按照什么规则排除那些组件l//includeFilters = Filter[]﹔指定扫描的时候只需要包含哪些组件
@Componentscan(value=\"com.atguigu\
@scope( \"prototype\")@Bean ( \"person\" )
AnnotationConfigApplicationContext
@ComponentScan@Bean@ Configuration@Component@Service@Controller@ Repository@Conditional@Primary@Lazy@Scope@ImportImportSelector工厂模式
组件标注注解(@Controller/@Service/@Repository /@Component
@Bean[导入的第三方包里面的组件]
1)、@Import(要导入到容器中的组件)﹔容器中就会自动注册这个组件,id默认是全类名
2)、ImportSelector :返回需要导入的组件的全类名数组;
3) 、 ImportBeanDefinitionRegistrar:手动注册bean到容器中
@Import[快速给容器中导入一个组件]
实现他的三个方法
类实现 factory bean接口 :class mybean implements FactoryBean<T>
1)、默认获取到的是工广bean调用getobject创建的对象2)、要获取工厂Bean本身,我们需要给id前面加一个&&colorFactoryBean
使用Spring提供的 FactoryBean(工厂Bean)
组件添加
bean的生命周期:bean创建-―-初始化-—––销毁的过程容器管理bean的生命周期;我们可以自定义初始化和销毁方法﹔容器在bean进行到当前生命周期的时候来调用我们自定义的初始化和销
1)、指定初始化和销毁方法;指定init-method和destroy-method=\" \"
@Value@Autowired o@Property Source@PropertySources@Profile
使用@PropertySource读取外部配置文件中的k/v保存到运行的环境变量中
初始化bean对象的地方加入@propertySource
使用@Value赋值;1、基本数值2、可以写SpEL;#{}3、可以写${};取出配置文件中的值(在运行环境变量里面的值)
组件赋值
1、@Autowired:自动注入:1)、默认优先按照类型去容器中找对应的组件:applicationContext.getBean(BookDao.class);2)、如果找到多个相同类型的组件,再将属性的名称作为组件的id去容器中查找applicationContext.getBean ( \"bookDao\" )3) 、@Qualifier(\"bookDao\")、使用@Qualifier指定需要装配的组件的id,而不是使用属性名BookService{4)、自动装配默认一定要将属性赋值好,没有就会报错;5)、@Primary:让Spring进行自动装配的时候,默认使用首选的bean@AutowiredBookDao 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规范
3、@Autowired:构造器,参数,方法,属性;都是从容器中获取参数组件的值1)、[标注在方法位置]:@Bean+方法参数,参数从容器中获取;默认不写@Autowired效果是一样的:都能自动2)、[标在构造器上]∶如果组件只有一个有参构造器,这个有参构造器的@Autowired可以省略,参数位置的组件;3)、放在参数位置:
//1、使用命令行动态参数:在虚拟机参数位置加载-Dspring . profiles.active=test//2、代码的方式激活某种环境; AnnotationConfigApplicationContext applicationContext =new AnnotationConfigApplicationContext();//1、创建一个applicationContext//2、设置需要激活的环境applicationContext.getEnvironment( ).setActiveProfiles( \"dev\
自动装配;Spring利用依赖注入(DI),完成对IOC容器中中各个组件的依赖关系赋值;
(Dependency Injection)”。所谓依赖注入,就是由IOC容器在运行期间,动态地将某种依赖关系注入到对象之中
AnnotationConfigApplicationContext applicationContext =new AnnotationConfigApplicationContext();
IOC=DI
AutowiredAnnotationBeanPostProcessor:解析完成自动装配功能;
组件注入
AOP:【动态代理】指在程序运行期间动态的将某段代码切入到指定方法指定位置进行运行的编程方式;1、导入aop模块;Spring AOP:( spring-aspe
2、定义一个业务逻辑类(Mathcalculator) ;3、定义一个日志切面类(LogAspects):
通知方法:前置通知(@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模式]
AOP
方法或类上加上@Transactional就可以完成事务管理的配置
声明式事务
容器
使用对象bean之前创建对象
BeanFactoryPostProcessor: beanFactory的后置处理器;在BeanFactory标准初始化之后调用,来定制和修改BeanFactory的内容;所有的bean定义已经保存加载到beanFactory,但是bean的实例还未创建
BeanFactoryPostProcessor
BeanFactoryPostProcessor原理∶1). ioc容器创建对象2)、 invokeBeanFactoryPostProcessors( beanFactory );如何找到所有的BeanFactoryPostProcessor并执行他们的方法; 1)、直接在BeanFactory中找到所有类型是BeanFactoryPostProcessor的组件,并执行他们的方法 2)、在初始化创建其他组件前面执行
BeanDefinitionRegistryPostProcessor
监听器:监听容器中发布的事件
ApplicationListener:监听容器中发布的事件。事件驱动模型开发;public interface ApplicationListenerK<E extends ApplicationEvent>监听ApplicationEvent及其下面的子事件;
步骤;1)、写一个监听器(ApplicationListener实现类)来监听某个事件(ApplicationEvent及其子类) @EventListener2)、把监听器加入到容器;3)、只要容器中有相关事件的发布,我们就能监听到这个事件;ContextRefreshedEvent:容器刷新完成(所有bean都完全创建)会发布这个事件;ContextClosedEvent:关闭容器会发布这个事件;4)、发布一个事件:applicationContext.publishEvent( ); //{applicationContex是AnnotationConfigApplicationContext的一个变量}
原理
ApplicationListener
Spring容器创建过程
扩展原理
1)、使用ServletContext注册Web组件(Servlet、Filter、Listener)
servlet3.0
Callable<String>
DeferredResult<String>
异步请求
web
注解驱动
spring
GETPOSTPUTPATCHDELETE
RESTFul
主要是设置过滤器
字符编码过滤器
配置处理请求方式put和delete的hiddenhttpmethodfilter
配置springmvc的前端控制器dispatcherServlet
web.xml
配置文件
组件扫描
配置thymleaf视图解析器
mvc:view-controller path=\"/\" view-name\"index\" ></mvc:view-controller><mvc:annotation-driven />
配置视图控制器
view-controller
开发视图View
default-servlet-handler
开放对静态资源的访问
开启mvc注解驱动
文件上传解析器
异常处理
拦截器
springmvc
@RequestBodyRequesEntity(极少用)@ResponseBodyResponseEntity
HttpMessageConverter
Servlet
GenericServlet
HttpServlet
HttpServletBean
FrameworkServlet
DispatcherServlet
springMVC
.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;
最佳实践
基础理解
SpringMVC功能分析都从org.springframework.web.servlet.DispatcherServlet-》doDispatch ()
网页上的某个请求调用了controller的那个方法***doDispatch方法
响应页面
json
xml
图片,音视频。。
自定义协议数据
响应式
web开发
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-jdbc</artifactId> </dependency>
导入jdbc场景
<!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java --> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> </dependency>
导入数据库驱动
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driverspring.datasource.url=jdbc:mysql://8.131.95.144:3306/ebpspring.datasource.username=dmsspring.datasource.password=ZhangYuanMai123!
数据访问
导入依赖,一般自动导入的
注意注解的使用即可
单元测试
指标监控
原理解析
核心功能
雷丰阳老师的笔记
springboot
RPC两个核心模块:通讯,序列化。
RPC框架有很多如: dubbo、gRPC、 Thrift、 HSF ( High Speed Service Framework)
dubbo
Apache Dubbo (incubating) |'dnbau|是一款高性能、 轻量级的开源Java RPC框架,它提供了三大核心能力:面向接口的远程方法调用,智能容错和负载均衡,以及服务自动注册和发现。官网:http://dubbo.apache.org/
RPC
分布式和负载均衡
架构图
理解
Mapper接口类名和xml映射namespace值一致,接口方法名和映射id一致
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();
获取session并且执行
FATAL致命》ERROR错误》WARN警告》INFO信息》DEBUG调试
日志:
配置
#{}
需要自己添加单引号
${}
#{}:${}:
获取输入参数
1、为字段起别名,保持和属性名的一致2、设置全局配置,将_自动映射为驼峰3、通过resultMap设置自定义的映射关系
association
collection
resulMap
分布查询很重要
传出参数映射
:根据标签中test属性所对应的表达式决定标签中的内容是否需要拼接到sQL中
test属性必须
if
当where标签中有内容时,会自动生成where关键字,并且将内容前多余的and或or去掉当where标签中没有内容时,此时where标签没有任何效果注意: where标签不能将其中内容后面多余的and 或or去掉
where
若标签中有内容时:prefix|suffix:将trim标签中内容前面或后面添加指定内容suffixoverrides|prefixoverrides :将trim标签中内容前面或后面去掉指定内容若标签中没有内容时,trim标签也没有任何效果
trim
choose. when. otherwise,相当于if...else if...else
collection:设置需要循环的数组或集合item:表示数组或集合中的每一个数据separator:循环体之间的分割符open :foreach标签所循环的所有内容的开始符close:foreach标签所循环的所有内容的结束符
foreach
设置sQL片段:<sql id=\"empcolumns \
sql标签
sqlsession级别:除了手动清空,,不同的查询条件语句,中间有增删改,之外的都会从缓存中获取
一级缓存
在mapper配置文件中添加的cache标签可以设置一些属性:.eviction属性:缓存回收策略LRU (Least Recently Used)-最近最少使用的:移除最长时间不被使用的对象。FFO (First in First out)-先进先出:按对象进入缓存的顺序来移除它们。SOFT-软引用:移除基于垃圾回收器状态和软引用规则的对象。WEAK-弱引用:更积极地移除基于垃圾收集器状态和弱引用规则的对象。默认的是LRU。o flushInterval属性:刷新间隔,单位毫秒默认情况是不设置,也就是没有刷新间隔,缓存仅仅调用语句时刷新o size属性:引用数目,正整数代表缓存最多可以存储多少个对象,太大容易导致内存溢出o readOnly属性:只读,true/falsetrue:只读缓存;会给所有调用者返回缓存对象的相同实例。因此这些对象不能被修改。这提供了很重要的性能优势。false:读写缓存;会返回缓存对象的拷贝(通过序列化)。这会慢一些,但是安全,因此默认是false。
级缓存开启的条件:在核心配置文件中,设置全局配置属性cacheEnabled=\"true\",默认为true,不需要设置在映射文件中设置标签<cache />二级缓存必须在SqlSession关闭或提交之后有效查询的数据所转换的实体类类型必须实现序列化的接口
使二级缓存失效的情况:两次查询之间执行了任意的增删改,会使一级和二级缓存同时失效
sqlsessionfactory级别:
二级缓存
缓存机制
没怎么听懂,后续重新学习
根据表来反向生成mapper以及对应的默认增删改查方法https://mybatis.org/generator/quickstart.html
逆向工程
page
pageInfo
pageHelper:
mybatis
只做增强不做改变
雪花算法
Mpper接口: extends BaseMapper<T>
ServiceImpl: extends ServiceImpl implements Service接口
Service接口:extends IService
Controller
我在项目当中的调用流程
调用接口为什么能调用其实现类的方法
MyBatis-Plus简介及特性
BaseMapper:其子类接口需要继承该泛型类
通用mapper
映射文件的配置路径:mybatis-plus.mapper-locations=classpath*:/mapper/**/*.xml
IService:接口
ServiceImpl:类
实现MyService接口
MyServiceImpl
通用service
@TableName(\"tuser\")@TableId(value=\"uid\" type=IdType.AUTO)@TableField(\"user_name\")@TableLogic表里的该字段为逻辑字段
实体类与数据库对应
常用注解
QueryWrapper
//将用户名中包含有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\
UpdateWrapper
Wrapper
子查询
条件查询
条件构造器
通用枚举
基本功能
Page
PageHelper
分页插件
乐观锁
插件
MyBatisX插件
多数据源
代码生成器
mybatis-plus
理解:约定》配置》编码项目文件路径为什么需要src->main->java等路径来的,就是为了依赖管理
pom.xml对于Maven工程是核心配置文件,与构建过程相关的一切设置都在这个文件中进行配置。重要程度相当于web.xml对于动态Web工程
POM:project object modelDOM:document object model
构建[1]概念︰以“Java源文件”、“框架配置文件”、“JSP”、“HTML”、“图片”等资源为“原材料”,去“生产”一个可以运行的项目的过程。编译部署搭建
构建
构建过程的几个主要环节,①清理:删除以前的编译结果,为重新编译做好准备。②编译:将Java源程序编译为字节码文件。v③测试:针对项目中的关键点进行测试,确保项目在迭代开发过程中关键点的正确性。④报告:在每一次测试后以标准的格式记录和展示测试结果。v⑤打包:将一个包含诸多文件的工程封装为一个压缩文件用于女装队部着。Java L柱NLs.Jjar,weu工程对应war包。v⑥安装:在Maven环境下特指将打包的结果——jar包或war包安装到本地仓库中。⑦部署:将打包的结果部署到远程仓库或将war包部署到服务器上运行。v
构建过程
构建工具
maven
SSM
概述:简化实体类的开发,直接通过注解实现有参考构造无参构造,getset等方法
lombok
Java
使用 = 和 - 标记一级和二级标题
使用 # 号标记使用 # 号可表示 1-6 级标题,一级标题对应一个 # 号,二级标题对应两个 # 号,以此类推。
Markdown 段落没有特殊的格式,直接编写文字就好,段落的换行是使用两个以上空格加上回车。
*斜体文本*_斜体文本_**粗体文本**__粗体文本__***粗斜体文本***___粗斜体文本___
字体
你可以在一行中用三个以上的星号、减号、底线来建立一个分隔线,行内不能有其他东西。你也可以在星号或是减号中间插入空格。下面每种写法都可以建立分隔线:**** * ******- - -----------~~<u>
分隔线
[^要注明的文本]
脚注
无序列表使用星号(*)、加号(+)或是减号(-)作为列表标记,这些标记后面要添加一个空格,然后再填写内容:有序列表使用数字并加上 . 号来表示列表嵌套只需在子列表中的选项前面添加两个或四个空格即可
列表
Markdown 区块引用是在段落开头使用 > 符号 ,然后后面紧跟一个空格符号
> 区块中使用列表> 1. 第一项> 2. 第二项> + 第一项
* 第一项 > 菜鸟教程 > 学的不仅是技术更是梦想* 第二项
区块
可以用反引号把它包起来(`)
代码区块使用 4 个空格或者一个制表符(Tab 键
你也可以用 ``` 包裹一段代码,并指定一种语言(也可以不指定)
代码
[菜鸟教程](https://www.runoob.com)
链接
![alt 属性文本](图片地址 \"可选标题\")
图片
| 左对齐 | 右对齐 | 居中对齐 || :-----| ----: | :----: || 单元格 | 单元格 | 单元格 || 单元格 | 单元格 | 单元格 |
表格
markdown
语言
数据结构
算法
设计模式
学习
人工只能
机器
规则
基本语句
4大类运算
排序与分页
多表查询
单行函数
聚合函数
子查询的详细介绍csdn
分类:按子查询出现的位置: select后面: 仅仅支持标量子查询 from后面: 支持表子查询 where或having后面:★ 标量子查询(单行) √ 列子查询 (多行) √ 行子查询 exists后面(相关子查询) 表子查询按结果集的行列数不同: 标量子查询(结果集只有一行一列) 列子查询(结果集只有一列多行) 行子查询(结果集有一行多列) 表子查询(结果集一般为多行多列)
select 查询的使用
总结
1
LOWER() 将整个字符串转换为小写
UPPER() 将整个字符串转换为大写
INITCAP() 把每个单词收个字母变成大写
CONCAT() 连接两个字符串
格式11、string 需要截取的字符串 2、a 截取字符串的开始位置(注:当a等于0或1时,都是从第一位开始截取)3、b 要截取的字符串的长度格式21、string 需要截取的字符串2、a 可以理解为从第a个字符开始截取后面所有的字符串。
SUBSTR() 截取子字符串(全角算2字符)
LENGTH() 返回字符串的长度(全角算1字符)
INSTR() 字符串中搜索字符位置(全角算1字符)
LPAD() 在左边添加字符
RPAD() 在右边添加字符
TRIM() 删除左边和右边字符串
REPLACE() 替换子字符串
需要注意的事项如下:
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 取得按年或月截取得到的新日期,返回日期所在期间的第一天
databasestar
FM75%的位置
格式
TO_CHAR
TO_DATE
TO_NUMBER
Converts one data type to another.
CAST( expression AS type_name )
CAST( MULTISET (subquery) AS type_name )
CAST
Returns the first non-NULL value.
COALESCE
Extracts and returns a field from within a specified datetime value.
EXTRACT ( date_component FROM expression )
EXTRACT
TRUNC
转换
函数名(。。。) over(partition by 。。 order by 。。 desc) r
connect by
row_number()
rank()
dense_rank()
span style=\
lead()/lag() over(partition by ... order by ...) 取前面/后面第n行记录
first_value(sal)
last_value(sal)
函数
创建和管理库
创建和管理表
数据处理增删改查
数据类型
约束
create
alter
drop
rename
truncate
DDL
insert
delete
update
select
DML
commit
rollback
savepoint
grant
revoke
DCL
分类
视图
存储过程与函数
变量,流程控制与游标
触发器
数据库对象
窗口函数
共用表表达式
其他特性
Oracle
data define ldata management ldata control l
MySQL
MariaDB
redis:not only sql什么时候用NoSQL:(用不着sql 的和用了sql 也不行的情况,请考虑用NoSql )
getting-started
开始
1.解决CPU及内存的压力
2.解决IO的压力
NoSQL使用场景
1、解决功能性的问题:Java、Jsp、RDBMS、Tomcat、HTML、Linux、JDBC、SVN
2、解决扩展性的问题:Struts、Spring、SpringMVC、Hibernate、Mybatise
3、解决性能的问题:NoSQL、Java线程、Hadoop、Nginx、MQ、ElasticSearch
架构
概要:
redis菜鸟
1、NoSQL数据库简介o
2、Redis6概述和安装
set key valget keykeys *exists keytype keydel keyunlink keygetset key val
key
数据结构:底层时动态的字符串结构,相当于ArrayList,value最大的大小不能超过512M
set key valmset key1 val1 key2 val2setrange key index valsetnx key val (key不存在时添加)setex key mill(过期时间) valget keymget key1 key2getrange key beginindex endindexappend keystrlen keysetnx key 设置但是不存在时设置incr key(int)/decr key incrby key/decrby key
Redis字符串(String)
数据结构:底层是双向链表查看一直都是从左边
lpush/rpush key listval1 listval2 listval3lrange key 0 -1 获取所有的值lpop/rpop key 突出该key的值rpoplpush source destination lindex key indexllen key 获取长的linsert key before val1 lrem key n 删除n个lset key index newval
Redis列表(List)
数据结构:数据字典,好用的是hashmap
sadd key1 val1 val2smembers keysismember key val 判断key中是否包含valuescard key 返回个数srem key val1 val2 删除集合元素spop key 随机吐出值srandmember key n 集合中随机吐出n个值smove source dest valesinter key1 key2 获取交集sunion key1 key2 并集sdiff key1 key2 差集
Redis集合(Set)
数据结构:对应map特别适合存储对象类型
hset key filed1 val field2 val2hget key fieldhgetall keyhexists key fieldhkeys keyhvals keyhincrby key field nhsetnx key field val
Redis哈希(Hash)
zadd key score valzrange key 0 -1 withscores 获取所有的zrangebyscore key min max 默认曾序zrevrangebyscore key max minzincrby key socore valzrem key valzcount key min maxzrank key val 返回排名
Redis有序集合Zset
3、常用五大数据类型
CONFIG GET *
CONFIG SET CONFIG_SETTING_NAME NEW_CONFIG_VALUE
4、Redis6配置文件详解
概要:Redis 发布订阅 (pub/sub) 是一种消息通信模式:发送者 (pub) 发送消息,订阅者 (sub) 接收消息。Redis 客户端可以订阅任意数量的频道。
SUBSCRIBE channel [channel ...]PUBLISH channel message
5、Redis6的发布和订阅
setbit key ofset 0|1getbit key ofsetbitcount key
Bitmaps
专门统计基数的
PFADD key element [element ...]PFCOUNT key [key ...]PFMERGE destkey sourcekey [sourcekey ...]
HyperLogLog
Redis GEO 主要用于存储地理位置信息,并对存储的信息进行操作,该功能在 Redis 3.2 版本新增
geoadd:添加地理位置的坐标。geopos:获取地理位置的坐标。geodist:计算两个位置之间的距离。georadius:根据用户给定的经纬度坐标来获取指定范围内的地理位置集合。georadiusbymember:根据储存在位置集合里面的某个地点获取指定范围内的地理位置集合。geohash:返回一个或多个位置对象的 geohash 值。
Geospatial
6、Redis6新数据类型
<!-- https://mvnrepository.com/artifact/redis.clients/jedis --><dependency> <groupId>redis.clients</groupId> <artifactId>jedis</artifactId> <version>4.3.0</version></dependency>
可以操作redis java client
redis 命令行有的所有的方法在本客户端都有
7、Jedis操作Redis6
8、Redis6Spring Boot整合
Redis 事务可以一次执行多个命令, 并且带有以下三个重要的保证:批量操作在发送 EXEC 命令前被放入队列缓存。收到 EXEC 命令后进入事务执行,事务中任意命令执行失败,其余的命令依然被执行。在事务执行过程,其他客户端提交的命令请求不会插入到事务执行命令序列中一个事务从开始到执行会经历以下三个阶段:开始事务。命令入队。执行事务。
Redis的事务定义
Multi、Exec、discard
悲观锁
WATCH key [key ...]UNWATCH key [key ...]
乐观锁
事务的错误处理事务冲突的问题
Redis事务三特性
hset prod name ticket count 10 price 101hgetall prodhset prod count 9hincrby prod count -1hgetall prod
Redis事务秒杀案例
9、Redis6的事务操作
设置里面设置就好了
10、Redis6持久化之RDB
11、Redis6持久化之AOF
what:主机数据更新后根据配置和策略
12、Redis6的主从复制
通过集群解决容量不够的问题并发写操作
13、Redis6集群
缓存穿透
缓存击穿
缓存雪崩
分布式锁
14、Redis6应用问题解决
acl catacl listacl whoamiacl setuser username on >password ~cached:* *get
redis 执行命令依然是单线程,多线程。。
ACLIO多线程
工具支持ClusterRedis
新功能持续关注
15、Redis6新功能
Redis6课程大纲
redis
MongoDB
主要应用:社会关系,公共交通网络,地图及网络拓谱(n*(n-1)/2)
概述:
图关系数据库
数据库
数据交互格式
BS与外部交互格式
JSON
XML
写重要的几个即可
标签
行内样式
内嵌样式
选择样式
样式
背景属性
类选择 .classname
属性
子类选择器
并集选择器
伪类选择器
选择器
盒子模型、浮动、定位共同的作用用来布局的盒子模型解决局部内容布局浮动解决:盒子在一行上的布局定位解决盒子的叠加布局*
布局
html
HTML
css
格栅系统
bootstrap前端框架
bootstrap
注:文档记录的较多
thymeleaf
执行的语句定义是在package.json里的script中定义使用时npm run xxx可以弄出前面的执行按钮
README.md
项目加载的过程是 index.tml → main.js → app.vue → index.js → helloworld.vue
加载过程
项目的运行入口,在body体中只有一个 div 标签,其 id 为 app,这个 id 将会连接到 src/main.js 内容。在浏览器打开的瞬间,浏览器中正文部分会瞬间显示index.html 中定义的正文部分。上面有一个 id 为 app 的挂载点,之后我们的 Vue 根实例就会挂载到该挂载点上
index.html
入口文件,主要作用是初始化vue实例,并引入所需要的插件。新建了一个 vue 实例,并使用 el:#app 链接到 index.html 中的 app,并使用 template 引入组件和路由相关的内容,也就是说通过 main.js 我们关联到 App.vue 组件
main.js
主组件,所有页面都是在 App.vue 下进行切换的。可以理解为所有的路由 router,也是 App.vue 的子组件
app.vue
标签下,有标签,标签将会把路由相关内容渲染在这个地方,路由中文件位于src/router/index.js 中。在 index.js 的代码中,建立了路由相关的内容,也就会渲染到 app.vue 下面的中
index.js
package.json
重要的画面
起步
v-on:==@v-bind:==:v-model.number= .trim=
组件:组件可以扩展 HTML 元素,封装可重用的代码component
v-bind指令用于设置HTML属性:v-bind:href 缩写为 :hrefv-on 指令用于绑定HTML事件 :v-on:click 缩写为 @click
v-on:clickv-on:dblclick可实现双击事件
事件
绑定
组件
路由
响应
计算属性
watch:用于监听data里面的数据是否被修改,一旦修改就可以执行一些其他的操作【也是方法】
监听属性
计算属性和监听属性的不同 1.计算属性的get必须有return,而监听属性return可有可无 2.计算属性具有缓存的效果,而监听属性没有缓存 3.计算属性可以自定义名称,而监听属性只能监听和data里面的名称相同 4.计算属性适用于复杂的运算,而监听属性适合一些消耗性功能,比如Ajax
二者区别:
methods
beforeCreatecreatedbeforeMountMounted创建vue实例beforeUpdateupdated更新实例beforeDestroydestroyed
8个钩子函数是那些:
基础语法
vue
dom
js
Node.js® is a JavaScript runtime built on Chrome's V8 JavaScript engine.是JavaScript运行环境
node.js
npm
fs文件系统模块
path路径模块
http模块
前端
项目可以运行需要把打包的jar包放入tomcat路径下的webapps目录里
D:\\Users\\23236\\Java\\apache-tomcat-8.5.61\\bin下的startup.bat可以运行服务器
运行
tomcat
服务器
介绍:linus
git cmd
口令地址
口令名字:valuecookie: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
token
github
cd 打开或者鼠标右键Git Bash Herels -al 查看所有目录按照list格式vim 打开编辑器:wq 保存并退出编辑器
主要的语句
git config git initgit status 查看现在的状态git addgit commit 提交git log/reflog 查看记录.gitignoregit branchgit checkoutgit mergegit clone
大致的流程
git remote -vgit push 推送git pull 拉取git clone 克隆(不需要登录账号)修改代码git add origingit commit origingit push origin
vim
cat filename
常用的git
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分支合并到当前的分支)
合并分支
产生冲突解决冲突
分支
git bash
概述:###表示注释
以斜杠 “/” 开头表示跟目录,放在末尾表示跟目录以及子目录下的所有该文件夹;
以星号 “*” 通配多个字符;
以问号 “?” 通配单个字符;
以方括号 “[]” 包含单个字符的匹配列表;
以叹号 “!” 表示不忽略(跟踪)匹配到的文件或目录;
所有的版本控制都用,需要在.gitconfig文件里声明
.ignore
当前的项目控制,在当前项目下即可
.gitignore
忽略
add
push
pull
分支mergeinto
步骤
git idea
上面的两个一样,bash比cmd更强且更接近于Linux
git
没什么好说的,跟GitHub不能说一模一样,只能说完全一样。
Gitee码云
gitlab
svn
cd 打开dir/ls 查看目录
查找端口号对应的PID:netstat -aon|findstr \"port\"根据PID查找对应的应用:tasklist|findstr \"pid\"
端口号/PID
常用命令
常用的命令
Linux
winver---------检查Windows版本wmimgmt.msc----打开windows管理体系结构(WMI)wupdmgr--------windows更新程序wscript--------windows脚本宿主设置write----------写字板winmsd---------系统信息wiaacmgr-------扫描仪和照相机向导winchat--------XP自带局域网聊天mem.exe--------显示内存使用情况Msconfig.exe---系统配置实用程序mplayer2-------简易widnows media playermspaint--------画图板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-----------启动netmeetingcompmgmt.msc---计算机管理cleanmgr-------垃圾整理ciadv.msc------索引服务程序osk------------打开屏幕键盘odbcad32-------ODBC数据源管理器oobe/msoobe /a----检查XP是否激活lusrmgr.msc----本机用户和组logoff---------注销命令iexpress-------木马捆绑工具,系统自带Nslookup-------IP地址侦测器fsmgmt.msc-----共享文件夹管理器utilman--------辅助工具管理器
CMD比较常用命令集:
Windows
操作系统
JAVA
常见的
存储
算法题
api--------------
String s = new String(\"abc\");方式创建对象,在内存中创建了几个对象?两个:一个是堆空间中new结构,另一个是char[]对应的常量池中的数据: \"abc\"
写一个安全的懒汉式的单列模式--->
技术
技术问题
问问题
知识框架
用于自启动某个电脑程序的应用
任务计划程序
计算机好用
0.计算机
当主目录计算机增加其他模块时M0.0++.01层上增加的分支
当计算机主目录下新增模块时subv0.0.0++2层的版本控制,模块下的控制
1.开始版本控制
2.redis 副本大概了解,主要就是key,value的中间数据库
ssubv0.0.2
subv0.0.0
计算机的相关知识包括前端,后端,数据库,以及框架,还有系统,网络,硬件等
M0.0.0
version
根
0 条评论
下一页