自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(166)
  • 收藏
  • 关注

原创 主要的七种排序(快排、希尔排序、堆排序、归并排序、选择排序、插入排序、冒泡排序)

一、冒泡排序冒泡排序是最简单的排序,不需要额外空间,时间复杂度为O(N^2);代码如下import java.util.Arrays;public class BubbleSort { public static void sort(int[] arr) { for(int i=0;i<arr.length;i++) { for(int j=arr.length-1...

2019-03-06 22:18:05 262

原创 二叉树遍历&剑指offer——二叉搜索树与双向链表

借着这道题,把二叉树的遍历给总结一下。二叉树遍历:主要分为:先序,中序和后序,实现方法也有两种:递归和非递归,递归就比较简单,三种遍历顺序就体现在在什么时候访问当前节点,递归的代码如下 //先序 public void PreOrder(TreeNode root) { if(root==null) return; System.out.println(root.val...

2019-01-07 19:32:58 115

原创 C#与matlab混合编程以及C#编程

把最近所做的C#与MATLAB混合编程,还有界面一些问题进行总结。MATLAB有非常强大的运算功能,C#有很多封装好的库可以用来做界面,所以利用两者的优势来制作一个c#调用MATLAB算法程序的展示界面。C#与MATLAB混合编程是整个项目中比较难的一部分,主要可以采用两种方式:一是C#调用MATLAB编写的动态链接dll文件,这个方法我最后只用来调用画图程序,因为在利用这个方法来调用比较复杂...

2018-10-17 16:41:10 5881 9

原创 b树和红黑树的联系以及树学习最后知识

一、操作等价性1、在2-3-4树的插入过程中分裂4-节点与红黑树的插入过程中的颜色变换是相等的2、红黑树中的旋转和把2-3-4树转换成红黑树时选择哪个节点做父节点时等价的二、效率1、时间层数:       红黑树——log(N+1)(底数为2)       B树——log(N+1)到log(N+1)/2(底数为2)2-3-4树中的查找时间与平衡二叉树如红黑树大致相等,都是O(logN)2、存储需求...

2018-06-13 21:28:07 300

原创 平衡树——红黑树

平衡树:左右子树的树的高度相差不超过1。红黑书使得时间复杂度大大降低,从O(N)到O(logN)。红黑规则1、每一个节点不是红色就是黑色2、根点总是黑色3、如果节点是红色,则它的子节点必须是黑色(反之不一定为真)4、从根到叶节点或空子节点的每条路径,必须包含相同的黑色节点。...

2018-06-12 22:10:08 326

原创 事务 @Transaction

是基于 AOP 面向切面的,它将具体业务与事务处理部分解耦,代码侵入性很低,声明式事务也有两种实现方式,一种是基于 TX 和 AOP 的 xml 配置文件方式,二种就是基于 @Transactional 注解了,实际开发中 @Transactional 用的比较多。传播特性主要用到了Propagation.REQUIRED、Propagation.REQUIRES_NEW两个,Propagation.REQUIRES_NEW会新创建一个事务,不会受到前面事务的影响。

2022-09-05 17:03:02 232 1

原创 分布式锁——redis setnx

利用String result = jedis.set(lockKey, requestId, SET_IF_NOT_EXIST, SET_WITH_EXPIRE_TIME, expireTime);key作为锁,然后requestID是区分请求,区分这个锁是哪个请求加的,SET_IF_NOT_EXIST这个参数我们填的是NX,意思是SET IF NOT EXIST,即当key不存在时,...

2022-09-05 14:15:34 274

原创 https通信过程

https=http+认证+加密+完整性保护或者 https=http+ssl其实https就是在http上又加了一层处理加密信息的模块,过程如图图片来源博客https://limboy.me/tech/2011/02/19/https-workflow.html过程描述:1. 首先客户端通过一个url请求到服务器端2. 服务器端,收到这个请求时,会要先将证书信...

2019-08-17 18:48:32 250

原创 缓存热点key问题

2019-08-12 23:08:21 216

原创 缓存无底洞问题

2019-08-12 22:57:26 158

原创 缓存穿透问题

如下图所示即当请求没命中时,会直接到存储层,然后存储层也没有命中,则会返回一个空的给request,这样下次的时候还是会穿透cache到存储层,这样就失去了cache保护存储层的作用。解决方案代码示例,主要注意要设置过期时间bloom过滤器可以使用很小的内存空间完成过滤,bloom过滤器还是会存在问题,如果是比较固定的数据,比较合适,但是...

2019-08-12 22:32:06 116

转载 RPC框架原理

一、基本原理由于网站越来越庞大,在一台机器上进行部署是不太现实的,所以有了分布式架构,把一些核心业务抽离出来。这样就会存在比如一台机器要调用另一台机器的上的服务或者操作,就有了RPC请求。二、基本过程1. 建立通信由于两台机器要调用对方机器上的服务,肯定是需要通信的,所以需要建立TCP连接2. 服务器寻址即要得到对方服务器上的IP地址和端口号,调用方法名称,传入返回参数等。...

2019-08-08 22:34:17 182

原创 redis 主从、哨兵、集群

目录一、主从模式二、 哨兵三、集群(cluster)模式一、主从模式即slave节点保存master数据副本,可以读写分离,从slave节点读,缓解了master的节点的读写压力二、 哨兵1. 基本过程:集群监控、消息通知,故障转移、配置中心2.具体过程: 多个sentinel节点监控master、slave节点,当一个sentinel节点发现master节点出现...

2019-08-08 11:37:35 150

原创 分布式session 及cookie session区别

cookie session 区别:cookie只能是string类型,session可以是Java任何类型,cookie有大小限制,而session没有,cookie的存储限制了数据量,只允许4KB,而session是无限量的,cookie和session结合使用1、存储在服务端:通过cookie存储一个session_id,然后具体的数据则是保存在session中。如果用户已经登录...

2019-07-22 19:06:53 302

原创 Spring——Spring中的AOP使用及相关术语

Spring是基于AspectJ的AOP开发。相关术语:Joinpoint(连接点):所谓连接点是指那些被拦截到的点。在 spring 中,这些点指的是方法,因为 spring 只支持方法类型的连接点. Pointcut(切入点):所谓切入点是指我们要对哪些 Joinpoint 进行拦截的定义. Advice(通知/增强):所谓通知是指拦截到 Joinpoint 之后所要做的事情就是通...

2019-07-04 11:14:01 269

原创 Spring——AOP之JDK动态代理

要求:被代理的对象必须要实现了接口类接口:package DynamicProxySpring;public interface UserDao { public void save(); public void update(); public void find(); public void delete();}被代理的类:package DynamicPr...

2019-07-04 10:45:43 96

原创 Spring——面向切面编程(AOP)概述

AOP:对业务逻辑的各部分进行隔离,减小各部分间的耦合,提高代码的重用性。实质:就是在不修改源码的前提下,增加其他功能:如权限校验、日志记录等。其实主要就是通过代理机制,完成对功能的添加。两种代理机制:JDK的动态代理:必须要实现了接口的类(一般实现了接口的类优先) Cglib的动态代理:针对没有实现接口的类,应用的是底层字节码增强的技术,生成当前类的子对象...

2019-07-04 10:17:50 149

原创 Spring——配置多个xml文件

两种方法:在加载配置文件的时候,加载多个:在一个配置文中引入多个配置文件:

2019-07-02 15:43:28 675

原创 Spring——SpEL配置属性注入

SpEL是Spring 3.0以后开始用的,主要是比较灵活,在赋值时可以进行运算。package spring.demo2;public class employee { String name; Car car; public void setName(String name) { this.name = name; } public void setCar(Car ca...

2019-07-02 15:38:10 717

原创 Spring——p名称空间的属性注入方式

通过引入p名称空间完成属性的注入: 写法: 普通属性 p:属性名=”值” 对象属性 p:属性名-ref=”值” 首先要引入p名称空间使用p名称空间...

2019-07-02 11:14:17 442

原创 Spring——属性注入的方法

属性注入有3种方法:但是Spring只支持构造器注入和set方法注入具体xml中的配置如下:构造方法的属性注入Set方法的属性注入Set方法设置对象类型的属性...

2019-07-02 11:01:28 102

原创 Spring——作用范围

在<bean>标签中的 scope来设置scope=“singleton” / “prototype” / “session” / “request” / “globalsession”singleton:单例模式prototype:多例模式session:将该类放到session域中request:将该类放到request域中前两种是用得最多得...

2019-07-02 10:21:12 312

原创 Spring——工厂类

BeanFactory:调用getBean()才会生成类的实例ApplicationContext :加载配置文件的时候,就会将Spring管理的类都实例化。 ClassPathXMLApplicationContext:加载类路径下的配置文件 FileSystemXMLApplicationContext:加载文件系统下的配置文件A...

2019-07-02 09:50:32 110

原创 Spring——底层IOC实现原理

总结:工厂+反射+配置文件 即 Spring底层实现的IOC(控制反转):一般用到的方法是依赖注入,还有依赖查找。原理如上图所示,当需要一个对象时,我们不用去new一个对象,而只需要声明,然后交给工厂去从配置文件中去得到所需要的类信息,进行类的创建返回给声明的引用,这就是控制反转。注意 IOC(控制反转)与DI(依赖注入)区别IOC:控制反转,将对象的创建权反转给了Spring。...

2019-07-01 16:13:41 898

转载 Java Web经典三层框架

WEB层+业务逻辑层(Service)+数据访问层(Data Access) 是由Java Web提出, 即JavaWeb独有的!WEB层: 包含JSP和Servlet等, 与WEB相关的内容;Service层: 不含JavaWeb API, 只关注业务逻辑;DAO层: 对数据库的访问细节;意义: 设定WEB层/Service层/DAO层从上到下排序,①下层完全独立于上层(即下...

2019-07-01 15:07:55 231

原创 Leetcode——Word Ladder II

这是一道太难的题了,做了一天,最后进行一下记录和反思。这道题主要是用到图的方法。包括邻接表构建图,然后用bfs,dfs去做。主要有几点:1、在做bfs时,尤其在建邻接图时,用HashMap<T,ArrayList<T>>,并用HashMap<T,Integer>来记录边长,并且可以用来判断图中是否已经遍历过该节点了。bfs直接用队列即可,比较简单。...

2019-06-29 23:32:05 118

转载 hash索引和B+索引区别

MySQL的btree索引和hash索引的区别Hash 索引结构的特殊性,其检索效率非常高,索引的检索可以一次定位,不像B-Tree 索引需要从根节点到枝节点,最后才能访问到页节点这样多次的IO访问,所以 Hash 索引的查询效率要远高于 B-Tree 索引。可 能很多人又有疑问了,既然 Hash 索引的效率要比 B-Tree 高很多,为什么大家不都用 Hash 索引而还要使用 B-Tre...

2019-06-26 16:30:24 1844

原创 数据库优化查询方法

1. 在where里使用!=或<>,会放弃索引,所以尽量不要这样使用2. 使用null判断也会使得数据库放弃索引,所以尽量不要这么做,用0来代替 select id from t where num is null 可以在num上设置默认值0,确保表中num列没有null值,然后这样查询: select...

2019-06-26 16:26:02 669

原创 3.2 适配者模式具体应用场景举例

手机电源适配器:将220v的交流电转化成5v的直流电package AdapterDesign.ObjectAdapter;public class AC220v { public int outputAC220v() { int output=220; System.out.println("输出交流电:"+output+"v"); return output; }}...

2019-06-21 22:05:44 165

原创 3 .1适配器模式概念

定义:适配器模式将某个类的接口转换成客户端期望的另一个接口表示,主的目的是兼容性,让原本因接口不匹配不能一起工作的两个类可以协同工作。其别名为包装器(Wrapper)。使用场景:1 系统需要使用现有的类,而这些类的接口不符合系统的需要。2 想要建立一个可以重复使用的类,用于与一些彼此之间没有太大关联的一些类,包括一些可能在将来引进的类一起工作。3 需要一个统一的输出接口,而输入端...

2019-06-21 21:44:31 261

原创 Spring框架——IOC详解

默认就是单例prototype:每次引用时都会产生一个新的实例在创建后可以进行的一些操作,实现下面接口即可进行回调 有比较简便的方法:同样销毁之后也是...

2019-06-05 11:25:27 339

原创 Spring框架——AOP(面向切面编程)

2019-06-04 22:06:30 134

原创 Spring框架——IoC

不同螺丝刀口我们可以只把接口给换掉,这就是IoC(控制反转)如果要需要十字刀口,则替换刀口即可。解决上述不足方案,设置一个接口,控制刀口依赖注入,将对象注入。...

2019-06-04 21:56:41 139

原创 数据库中死锁

MySQL里都是行锁,如下图死锁产生的必要条件,其实和操作系统里的并发控制类似,都是四个必要条件:互斥、持有等待、不可剥夺、循环等待。上述两种数据库都无法避免或打破。不可剥夺可以通过回滚来打破循环等待也可以通过程序设计检查而避免。数据库中有两种锁:排他锁(X),共享锁(S)数据库加锁方式:外部加锁直接通过SQL语句,如果只有select则没...

2019-06-02 22:22:14 349

原创 数据库——事务

特性:原子性 两个交易互不影响增加 断点,在出现错误时,从错误上一个SQL语句进行执行具体执行如下隔离特性 重要原因:读未提交允许脏读;读提交不允许脏读;重复读不允许脏读、重复读;串行化上述三个都不允许。具体设置隔离级别:...

2019-06-02 22:05:34 131

原创 SQL注入与防范

密码被拼接注释掉了,也能登陆成功解决方法:preparedStatement

2019-06-02 21:08:52 176

原创 数据库连接

数据库连接的步骤:1、加载数据库驱动程序:JDBC_DRIVER="com.mysql.jdbc.Driver"2、获取数据库连接,USER,PASS都为字符串3、创建statement4、执行SQL语句不同数据库URL:执行SQL语句返回的是一个ResultSet的对象,该对象的类可以进行如下操作注意异常的抛出:Connectio...

2019-06-02 20:49:09 175

原创 文件系统概述

文件描述符:文件系统种类:

2019-05-29 15:35:27 222

原创 进程间的通信——信号、管道、消息队列、共享内存

信号:其相当于是传的那个bit,不是数据,相当于就是通知,所以不适合数据交换,但是效率很高。实现:管道,用于数据交换:管道就是内核中的一个buffer管道是从文件中写的。管道其实是父进程帮子进程建立好的一个通道,若进程间没有父子关系,管道(pipe)就没法工作了;管道里面数据是一种字节流,不具有结构化的表示形式。这两个缺点都可以通过消息队列克服消息队列:...

2019-05-29 11:35:00 213

原创 进程间的通信(IPC)概述

直接通信与间接通信:阻塞和非阻塞方式都有其不同的应用场景

2019-05-29 10:57:23 104

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除