自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Redis 链表的好处

typedef struct listNode{ //前置节点 struct listNode *prev; //后置节点 struct listNode *next; //节点的值 void *value;}listNode;typedef struct list{ //头节点 listNode *head; //尾节点 listNode *tail; //链表的大小 unsigne.

2021-09-17 14:43:58 73

原创 设计模式理解

建造设计模式领导:负责指挥产品经理:负责提需求产品:我们最终需要交付的东西开发:负责模块开发总结下来就是,产品经理提出需求,以及最后产品的模型,然后交给部门老大,部门老大出设计方案,然后再分配到开发手里面,最终提测到时候,部门老大吧代码合并,最终就是产品。例如:需要生产一辆单车Bike 类。 -- 这个产品经理提出的需求设计方案 抽象类Builder 类。 -- 这是部门老大出的设计方案模块开发 MobikeBike 去继承Builder。 -- 也就是去实现老大出的..

2021-07-02 15:24:59 65

原创 Java线程池总结

线程的生命周期创建-就绪-运行-阻塞-死亡调用start和运行run方法创建多线程的方法:继承Thread类,重写run方法,使用start方法创建一个线程 实现Runnable接口,重写run方法,通过new Thread(Runnable target).start创建一个线程通过start去创建一个线程,属于线程级别的的调用,而run方法属于方法级的调用,我们常说的现场复用,其实也是做了cas的方法级的调用,让我们误以为是一个多线程。线程池executorService1

2021-01-28 16:19:59 87

原创 初识RabbitMQ

RabbitMQ的工作原理Broker:消息队列服务进程,此进程包括两个部分:Exchange和Queue。Exchange:消息队列交换机,按一定的规则将消息路由转发到某个队列,对消息进行过虑。Queue:消息队列,存储消息的队列,消息到达队列并转发给指定的消费方。Producer:消息生产者,即生产方客户端,生产方客户端将消息发送到MQ。Consumer:消息消费者,即消费方客户端,接收MQ转发的消息。发布/接收消息的流程 消息发布流程: ...

2020-11-07 21:08:40 83

原创 流量控制和拥塞控制

流量控制 就是让发送方的发送速率不要太快,要让接受方有时间接收。 利用滑动窗口机制可以很方便的在TCP连接上实现对发送方的流量控制。 TCP接收方利用自己的接受窗口的大小来限制发送方的窗口大小。 TCP发送方收到接受方的0窗口通知后,应启动持续计时器,持续计时器超时后,向接收方发送0窗口探测报文。拥塞控制 概念:在某段时间,如果对网络中的某一资源的需求超过了该资源所能提...

2020-11-07 20:16:19 1000

原创 传统方式和SpringBoot连接数据库的两种方式

1.传统方式 1.编写db.properties的配置文件 2.编写jdbcConfig的工具类 @Configuration@PropertySource("classpath:jdbc.properties")public class JdbcConfig { @Value("$ {jdbc.driverClass}") private String driverClass; @Value...

2020-10-09 17:51:36 341

原创 ssm框架整合步骤流程

1.导入maven的jar包。<properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <maven.compiler.source>1.8</maven.compiler.source> <maven.compiler.target>1.8</maven.compiler.target>

2020-09-13 16:35:07 151

原创 DFS和BFS的总结

如果我们使用 DFS/BFS 只是为了遍历一棵树、一张图上的所有结点的话,那么 DFS 和 BFS 的能力没什么差别,我们当然更倾向于更方便写、空间复杂度更低的 DFS 遍历。不过,某些使用场景是 DFS 做不到的,只能使用 BFS 遍历。这就是本文要介绍的两个场景:「层序遍历」、「最短路径」。还有写DFS/BFS的算法模版。1.DFS深度遍历 递归模版:void dfs(TreeNode root){ if(root != null){ retu...

2020-09-12 20:01:22 181

原创 SpringMVC常用注解

1.@RequesParam 当请求参数和实体类参数不一样时,可以命名一个别名,在参数前加上@RequesParam(name = "请求参数")2.@RequesBody 获取请求体的内容,get方法不适用(因为使用表单异步请求)3.@PathVariable 获取占位符4.@cookieValue 获取指定cookie名称的值5. @ModelAttribute 作用于方法时,当请求某个URL链接时,注解的方法会优先执行。6.@SessionAttribute 执行控制器方法之间的.

2020-09-10 23:52:13 47

原创 SpringMVC 总结一

SpringMVC在三层架构中属于表现层的东西,它是由一个个的组件集合而成的,底层的是基于servlet实现的,和Struts2不同,Struts2的底层是由Filter实现的。1.SpringMVC的组件 前端控制器:它是整个的核心,由它来调度其他的组件。<servlet> <servlet-name>dispatcherServlet</servlet-name> <servlet-class> o...

2020-09-09 20:43:35 67

原创 Spring之开发搭建编写

Spring个人开发总结(一)1.搭建环境 准备工作,jdk1.8,tomcat,maven,git。 创建一个新的工程,在maven里选择webapp,然后选择工作组,和项目名并创建项目,接下来创建Java目录和resources目录,右击选择对于的资源。配置数据库的db.properties文件,数据库新手建议可以用持久层mybatis框架来做,最后就是创建bean.xml文件,这里编写可以减少程序的耦合,多多考虑代码的扩展性,例如: 每一次数据库的访问都...

2020-09-09 00:16:14 53

原创 基于子类和接口的动态代理

动态代理我们常用的动态代理分类两类,接口代理,也就是JDK提供给我们的,它的特点就是字节码随意改动,随用随加载。还有一类就是子类代理,通过第三方CGLIB实现代理。1.接口代理 *创建代理对象的要求: * 被代理的类至少实现一个接口,没有则不能用。 * newProxyInstance方法的参数: * classloade:类加载器 它是加载代理对象的字节码文件,和被代理对象使用相同的类加载器,固定写法。 *

2020-09-08 23:46:53 86

原创 Spring总结篇三

1.Spring新注解@Configuration 指定当前类是一个配置类@ComponentScan 用于通过注解需要扫描的包,可以替代xml文件中的:<context:component-scan base-package="cn"></context:component-scan>

2020-09-06 23:01:06 43

原创 Spring总结篇(二)

1.注解开发 最开的配置,我们通过xml配置,但是有点繁琐,例如:<bean id="user" class="cn.domain.User"></bean>现在我们通过注解,可以大大方便我们的开发:Component:作用把当前类对象存入spring容器中,属性value用于指定bean的id,当我们不写时,默认事当前类名的首字母改小...

2020-05-09 16:14:44 94

原创 Spring 总结篇(1)

一、Spring获取ioc核心容器 三种加载配置文件的方式:ClassPathXmlApplicationContext加载类路径下的配置文件。 FileSystemXmlApplicationContext加载磁盘下任意路径的配置文件(必须有访问权限) AnnotationConfigApplicationContext用于读取注解 注意:1)Applicat...

2020-05-05 23:19:10 112

原创 Servlet执行原理

Servler执行原理 通俗的理解: 1.用户发送在浏览器发送请求到服务器,服务器会对URL进行解析,获取访问到servlet的资源路径。 2.查找到web.xml文件,是否有对应的<url-pattern>标签体内容。如果有,则会找到<servlet-class>全类名,然后tomcat会对字节码文件加载到内存,并创建对象。(具体...

2019-11-19 20:05:34 104

原创 tornado两种启动方式

 第一种方法:import tornado.ioloop #I/O 时间循环import tornado.web #web服务class Mainhandler(tornado.web.RequestHandler): def get(self): self.write("hello world!")#建立路由表app = tornado.web.A...

2018-10-16 20:28:23 3019

原创 装饰器!!

装饰器的功能:1.简单的说,就是方便你在不改变原函数的情况下,对函数(开放封闭)进行修改和调试。2.走心啊!!来点实际对东西:#测试1def fun1(): print("hello world!!")#测试2def fun2(): matrix = [[0 for i in range(4)] for j in range(3)] print(matrix)de...

2018-06-26 16:05:35 118

空空如也

空空如也

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

TA关注的人

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