- 博客(42)
- 收藏
- 关注
原创 Spring实战(第四版)
Spring的核心类库是 DefaultListableBeanFactory一个 Spring 组件可以是任何形式的 POJOJavaBean的同义词(本书中)是POJOSpring 最根本的使命上:简化 Java 开发重量级开发:EJB 轻量级开发:Spring为了降低 Java 开发的复杂性,Spring 采取了以下 4 种关键策略: 基于 POJO 的轻量级和最小侵入性编程; 通过依赖注入和面向接口实现松耦合; 基于切面和惯例进行声明式编程;
2022-02-15 11:50:09 690
原创 证书的安装 导出公钥证书 以及证书的java可读类型转换
1.首先用cmd命令行进入到你下载好的java的bin目录下 先要生成密钥库文件keystore.jks 方法:生成密钥库文件keystore.jks须要使用JDK的keytool工具 那么我们输入以下命令:keytool -genkey -aliasserver-keyalg RSA -keysize 2048 -keystore keystore.jks -storepasspassword-keypasspassword参数表示:alias:可自定义的keystore...
2021-08-01 17:57:00 656
原创 初高级排序 快速排序与归并排序
初级排序:O(n^2)选择排序(遍历全部数组将小的一个一个往前排) 插入排序(每次保证前面的次数有序) 冒泡排序(冒泡排序和选择排序就是相逆的 冒泡是先往后排大的)复杂的排序:O(N*logN)快排代码:public static void quickSort(int []array,int begin,int end){if(end<=begin) return ; 定义一个最后一个数的指针 这个指针之前的数不应该
2020-10-14 13:13:41 196
原创 AVL树和红黑树的特性
AVL树其实就是加入了平衡因子(balance factor) 即它的左子树高度减去右子树高度或者右减左balance factor={-1,0,1}有时平衡数超过1时就用四种旋转操作进行平衡(左旋右旋 左右旋 右左旋)平衡因子的由来就是因为它的查询的时间复杂度是等于树的深度的AVL是一个自平衡的二叉搜索树 不足:节点需要储存额外的信息 且调整次数频繁红黑树是一种近似平衡的二叉搜索树 它能确保任何一个节点的左右子树的高度差小于两倍&
2020-10-14 11:16:25 110
原创 AVL树和红黑树的特性
AVL树其实就是加入了平衡因子(balance factor) 即它的左子树高度减去右子树高度或者右减左balance factor={-1,0,1}有时平衡数超过1时就用四种旋转操作进行平衡(左旋右旋 左右旋 右左旋)平衡因子的由来就是因为它的查询的时间复杂度是等于树的深度的AVL是一个自平衡的二叉搜索树 不足:节点需要储存额外的信息 且调整次数频繁红黑树是一种近似平衡的二叉搜索树 它能确保任何一个节点的左右子树的高度差小于两倍&
2020-10-14 11:13:25 103
原创 二分查找 算法
二分查找的前提:1.目标函数单调性(单增 单减)2.存在上下界(bounded)3.能够通过索引访问(index accessible)实现intSqrt(int x)函数 (平方根函数) (二分查找)class Solution{publicint intSqrt(int x){if(x0||x1) return x;intleft=1; int right=x; 因为x时非负整数 所以左边界最低为1 右边界是xwhile(left&
2020-10-13 11:28:59 143
原创 贪心算法
贪心算法与动态规划的不同在于它对每个子问题的解决方案都做出选择 不能回退 动态规划则会保存以前的运算结果 并根据以前的结果对当前进行选择 有回退功能饼干分发(贪心算法)class Solution{publicint findContentChildren(int [] g,int [] s){if(gnull||snull) return 0;Array.sort(g); 给两个数组排序 升序Array.sort(s);
2020-10-09 11:33:31 132
原创 DFS DBS算法
DFS(深度优先搜索 适合搜索全部解 在空间上有优势 因为不用保存搜索过程中的状态)BFS(广度优先搜索 适合最优解 在空间上需要用一个队列来保存搜索过程)一般情况下 DFS都是用递归来写算法 BFS需要手动维护一个队列queueDFS代码-递归写法 模板(记住)visited=set()def dfs(node,visited):visited.add(node)#processcurrent node here…
2020-10-08 20:16:52 1159
原创 算法 分治与回溯
分治和回溯其实就是一种更为复杂的递归分治代码模板:(与递归模板基本一样)def divide_conquer(problem,param1,param2,…):recursion terminatorif problem is None:print_resultreturnprepare datadata=propare_data(problem)subproblems=split_problem(problem,data)#conquer subproblemssubresult1=
2020-10-07 20:39:44 230
原创 算法递归题
验证二叉搜索树(利用二叉搜索树的定义来写递归即左子树必须小于根右子树必须大于根)class Solution{publicboolean heelper(TreeNode node,Integer lower,Integer upper){ 定义一个树node 最小值和最大值 左子树不能大于根 右子树不能小于根if(node==null) return false;intval=node.val;if(l
2020-10-07 20:39:05 242
原创 基础算法 递归
LinkedList(链表)是特殊化的Tree Tree是特殊化的Grape(图)二叉搜索树的复杂度一般是O(log n)增加叶子 搜索叶子 删除叶子都是O(log n)二叉树的遍历:前序:根左右中序:左根右 后续:左右根树的面试题的解法一般都是递归树的定义(背下来)public class TreeNode{ intval; TreeNodeleft; TreeNoderight; TreeNode(intx){
2020-10-07 20:37:44 114
原创 基础算法题目
正常情况下我们认为哈希表的复杂度时O(1)特殊情况下 如hash的size过小 导致碰撞几率更大 那么哈希表变成了链表 那么复杂度机会退化成O(n) 对于java code来说 Map和Set时常用于工程的hash基础上抽象出来的表 Map表内主要是键值对 key不重复 value可以重复 Set是存储单个的值 不重复有效的字母异次位(解法:将st两个单词排序字母即可)O(1)public boolea
2020-10-06 14:03:59 166 1
原创 基础算法题目
stack:堆 栈 先进后出 queue:队列 先进先出 两者的添加删除皆为O(1)double-end queue:双端队列(没有顺序可言)(可以理解成一个q和s的结合体):这个队列可以在前端增加或者取出元素 也可以在尾端添加或者取出元素 查询O(n) 增加和删除:O(1)判断括号是否匹配 O(N)public static Boolean Solution(String s){LinkedListlinkedList=new LinkedList(); linked
2020-10-06 14:03:22 94
原创 基础算法题目
leetcode是个很好的算法题网站时间复杂度的基本类型:O(1):常熟复杂度 O(log n):对数复杂度 O(n):线性事件复杂度 O(n^2):平方O(n^3):立方 O(2^n):指数 O(n!):阶乘实例:移动零:(0,1,0,2,5)把0移动到后面去 (此题是一维坐标的交替变换)public void movezeroes(int [] nums){int j=0 新加入的下标元素j
2020-10-04 13:30:02 180
原创 MyBatis
一级缓存(本地缓存)1.一级缓存默认是开启的2.一级缓存是SqlSession级别的缓存 也就是每一个SqlSession对象都有自己的一级缓存 并且互不共享3.一级缓存的工作机制:同一个SqlSession对象 每次查询都要从自己的一级缓存中查询数据 如果有则直接获取 如果没有 则从数据库中获取 然后将查询到的数据放到一级缓存中 方便后续的查询使用一级缓存失败的情况:不同的SqlSession对应不同的一级缓存
2020-10-03 18:51:51 87
原创 MyBatis
MyBatis框架是基于java的持久层框架(即dao与数据库之间的增删改查)iBatis(MyBasic的前身)持久层框架包括SQL Maps和Data Access Objects(Dao)MyBatis搭建基本过程:创建MyBatis 的全局配置文件 mybatis-config-xml 创建SqlSessionFactory对象创建SqlSession对象创建MyBatis的SQL映射文件重要配置文件:全局配置文件:mybatis-config-xml(即全局的一些配置)
2020-09-29 15:47:06 126
原创 springmvc
spring整合springmvc:spring:数据源 DaoService 事务 AOP等springmvc:web相关的spring容器对象如何创建:非web环境:在main方法通过new ClassPathXmlApplicationContext(“配置文件”)创建web环境:期望:在web应用服务器启动时 将spring容器创建好解决办法:通过监听器ServletContext对象创建:ServletContext(application)是上下文对象 实在web因公服
2020-09-26 13:14:57 87
原创 spring mvc
视图解析:springmvc如何解析视图 如何完成响应?前提:不论请求处理方法的返回值是string modelandview。。。在调用完请求处理方法后 都会重新处理成一个ModelAndView对象springmvc通过视图解析器后 解析ModelAndView中的view信息 得到具体的视图对象(简单理解为用于描述某个页面的对象 即jsp)再通过视图对象处理ModelAndView中的model数据 就是将mo
2020-09-26 10:48:52 85
原创 springmvc
jsp实际上是servlet里的东西 属于网页服务器的内容 而不是客户端内容 因为jsp最后也是转为java然后转为class类ModelAndView处理模型数据:需要将请求处理方法的返回值声明为ModelAndView类型添加到ModelAndView中的模型数据 最终会被设置到Request域对象中ModelAndView源码流程大概图(实际很复杂)使用Map处理模型数据:需要在请求处理方法的形参中声明一个Map类型的i形参结论:不论请求处理方法的返回值是string ModelAn
2020-09-24 13:51:29 132
原创 springMVC
sprintMBVC是spring的研发后续 是基于web的一种springspringMVC创建helloword的过程: 在web.xml中配置前端控制器 DIspatcherServlet 编写框架的核心配置文件 springmvc.xml 1.组件扫描 2.试图解析器 (视图解释器工作机制:prefix
2020-09-23 11:31:46 143
原创 spring
spring框架里的 jdbcTemplate 类似于模板 同样配置于xml里的jdbcTemplate方法:update():增删改batchupdata():批量增删改queryForObject():查询一条数据返回一个对象 查询返回单个值query():查询多条数据返回多个对象的集合@Transactional注解的属性:1.propagation:事务的传播行为 一个事务方法被另外一个事务方法调用时 被调用的事务方法如何使用事务2.i
2020-09-20 20:53:20 98
原创 spring
JDK动态代理:Proxy:是所有的动态代理类的父类 主要用于创建动态代理类或者是动态代理类的对象 InvocationHandler:主要用于完成代理的过程AOP是面向切面编程 主要对象是切面 而切面模块化横切关注点(即公共功能)AOP术语:横切关注点:从每个方法中抽取出来的同一类非核心业务 切面:封装横切光柱点信息的类 每个关注点都体现为一个通知方法 通知:切面必须要完成的各个具体工作 切入点表
2020-09-16 12:17:42 68
原创 spring
p命名空间可以简化配置文件(xml)的内容bean的生命周期:调用构造器创建bean对象调用set方法给bean的属性赋值调用初始化方法使用bean当容器关闭时 调用bean的销毁方法后置处理器会对IOC容器中的每个bean对象都起到作用在spring配置文件中可以直接配置连接池通过外部属性文件 配置连接池的方法有两个自动配置:(之前的都是手动配置bean)byName:使用要装置的属性名于IOC容器中的bean的id值进行匹配 匹配成功就进行装配
2020-09-15 11:33:56 86
原创 spring
ssm框架springjava ee ssm框架ssm框架(大的主体解决方案就叫框架)主流:spring springMVC myBatisspring是一个IOC(DI)和AOP容器框架spring也类似于一个大的api 其中bean是一个类bean里的id代表唯一标识符 class代表全类名 是通过反射的方法创建bean对象的 要求类中有无参的构造器property(属性)为bean对
2020-09-14 16:38:26 105
原创 JAVA基础篇
Day29(JDBC)(DBUtils)01:JDBC的意思是java与数据库连接。 驱动程序是两个设备进行通信的必要程序(这里的两个设备即java程序与数据库) 也是java里写的一套类。02:JDBC其实就是一套API 在MySQL里的驱动 就是类库 实现了API内的种种接口。04:JDBC操作数据库的步骤:1.注册驱动(让JVM知道你用的是什么数据库)2.与数据库连接(使用JD...
2019-12-13 19:49:47 78
原创 JAVA基础篇
Day28(MySQL数据库)(这里的命令行内的所有语句都是针对SQLyog内来说的)01:数据库其本质就是一个文件系统。数据库管理系统就是某一个事物(如一个软件)来管理这个数据库对数据库进行统一管理和控制,以保证数据库的安全性和完整性,用户通过管理系统可以访问数据库内的数据内容。02:常见的数据库:MySQL Oracle DB2 SQLServer SQLite。03:数据库管...
2019-12-10 19:59:54 125
原创 JAVA基础篇
Day2703:如果一个方法为重写父类的方法(如实现一个接口的实现类方法) 方法内部的异常不能抛 只能try catch。 多线程共用同一资源时会发生安全隐患问题。04:解决线程安全问题的方法:同步技术(synchronized):结构:synchronized(任意对象){线程要操作的共享数据} 这个大括号括起来的部分就叫做 :同步代码块。05:synchronized(任意对象...
2019-12-09 20:55:13 83
原创 JAVA基础篇
Day26(多线程)(thread)02:单线程就是从main开始 一条路走到结束 优点安全缺点运行慢。多线程就是一个程序有多条路径 使其一起执行多个方法。03:cpu开启的执行的路程就是线程。多线程运行快。05:程序运行原理分为 分时调度和抢占式调度 分时就是所有线程轮流使用cpu 平均分配使用cpu的时间 而抢占式就是让优先级高的线程使用cpu cpu线程切换的很快 人类...
2019-12-09 18:31:35 238
原创 JAVA基础篇
Day2501:properties集合(存储键值对)与IO流结合可以实现数据的持久性存储。02:setproperty()方法等同于集合map里的put 是获取键的意思。 setproperty(string key,string value)这是对应的键值。getpropertise(string key)这种方法可以通过键拿到值(value)。Getproperty() 是获取值的方法...
2019-12-08 18:16:15 70
原创 JAVA基础篇
Day2401:转换流可以帮助我们解决乱码问题。02:outputstreamwriter为转换流 是字符流向字节的意思 (原理过程就是:java程序 >编码表>转换流>字节输出流>文本)。 (其实转换流就是为了把相同字符通过不同的编码表来进行复制 在文本中得到相同字符的这样的一个过程)。03:string charsetname是编码表名字的意思(一般我们只用U...
2019-12-05 18:42:12 296
原创 JAVA基础篇
Day2301:将盘里的东西读入到JAVA程序里是输入 从JAVA程序里写东西到盘里是输出。02:outputstream是输出字节流的所有类的超类(自己本身是抽象类) 此类里的东西只能操作文件 流每次操作文件中的一个字节。03:流对象的构造器可以创建文件,如果文件存在(即原先有这个文件并且里面有自己的内容时)那么直接覆盖原文件 在文件中 一个字节时八位01 一个汉字是两个字节 ...
2019-12-05 15:27:02 105
原创 JAVA基础篇
Day22(IO流对象)01:内存数据存储到持久化设备这个动作称作输出(写)Output操作。当把持久化设备数据读取到内存中的动作叫做输入(读)Input操作。而这个输入输出的动作就称为IO操作。02:File类时用来操作文件和目录途径的 其中在UNIX中 /表示根目录 而windows里用\来表示根目录 但是file类有跨平台的功能 所以这两个系统 file类都是很好的应对。...
2019-12-03 19:48:53 105
原创 JAVA基础篇
Day2001:collection中的集合是单列集合,map中的集合是双列集合。Map里的左侧是键 右侧是值 键不可重复 值可以重复 所以在map里 这一对元素成为键值对元素 而且每个键只能对应一个值。02: Hashmap里有个方法是put put方法的返回值一般情况为null 除非在键重复时 返回的值为被覆盖之前的那个键值03:方法keyset只取键值里的键。 。...
2019-12-02 19:59:33 84
原创 JAVA基础篇
Day1903:迭代器在遍历的过程中 如果这个过程中修改了集合的长度 那么这时就会出现迭代器并发修改异常04:数据储存的常用结构由:堆栈内存采用先进后出的形式 队列内存采用先进先出 数组内存采用索引法直接查找 链表内存采用数据之间的记录内存地址的形式(即上一个对象记住下一个对象的内存地址) 其中链表内存增删快 而数组内存查找快06:数组和链表都是线程不安全的...
2019-11-28 20:36:42 126
原创 JAVA基础篇
Day18(集合框架)01:数组长度不可变 而arrayList集合的长度可变 而且arraylist里可以是引用类型,也可以是基本类型。 集合的主要功能是存储和遍历。02:集合的体系与目标:使用集合存储对象 遍历集合 取出对象 集合自己的特性03:Collection类是集合里接口的最高类 其次List(列表)接口和Set(集)接口继承Collection接口 然后arra...
2019-11-28 11:38:27 137
原创 JAVA基础篇
Day1601:正则表达式的作用就是:检测某些东西是否符合规则,如检测用户名密码。02:^ 这个符号是亦或的意思 【^abc】就是除了abc之外的所有字母都能跟它匹配,只要是abc就不行。而【abc】所匹配的就是abc。 【.】代表任何字符。 X?代表x出现一次或者一次没有 x*代表x出现0次或多次 x+一次或多次 x{n}恰好出现几次 x{n,}至少出现几次 x{n,m}...
2019-11-27 11:43:30 124
原创 JAVA基础篇
Day1409:类可以作为一个方法的参数,即一个类可以在一个方法的参数列表中。10:方法的调用链是完全行得通的,只要格式正确。 其次,方法的返回值可以是一个类,只需要在方法名前加上这个类的名字即可。11:方法中的参数列表为抽象类时,需要先创建抽象类的子类对象,然后再用方法去调用子类对象。(方法的参数列表无论是什么类型,都应该是以 : 类名 变量 这种格式来写 )例如 opera...
2019-11-25 22:42:17 76
原创 JAVA基础篇
Day1301:final是个修饰符,有了它就不能被继承,就不能有子类,那么就是最终类。02:如果final用在父类的方法中,那么这个方法在子类中不能重写。04:final也可以固定变量。05:当用final来固定成员变量时,有两种方法,一种是在定义的时候直接赋值,一种是采用构造方法来赋值,因为构造方法是用子类的对象来完成的,而恰巧子类对象调用构造方法就是之前所说的初始化赋值,所以可以用来...
2019-11-25 22:39:41 77
原创 JAVA基础篇
Day12(构造方法,构造器:constructor)02:构造方法的作用:在new的同时,对成员变量赋值。03:普通方法:public void person(){} 构造方法:public person(){}05:想要在测试类中调用构造方法,就必须满足那个构造方法的结构,观察是否有参或者无参。07:构造方法也有重载,就是有参的构造方法和无参的构造方法。08:构造方法只能用一次,普...
2019-11-25 22:38:14 174
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人