工作日志
文章平均质量分 61
青城小叶
这个作者很懒,什么都没留下…
展开
-
数据库连接池
概述数据库连接池是负责分配、管理和释放数据库连接,它允许应用程序重复使用一个现有的数据库连接,而不是再重新建立一个。那么其中的运行机制又是怎样的呢?今天主要介绍一下数据库连接池原理和常用的连接池。01 为什么要使用连接池数据库连接是一种关键的有限的昂贵的资源,这一点在多用户的网页应用程序中体现得尤为突出。 一个数据库连接对象均对应一个物理数据库连接,每次操作都打开一个物理连接,使用完都关闭连接,这样造成系统的性能低下。数据库连接池的解决方案是在应用程序启动时建立足够的数据库连接,并讲这些连接组成一原创 2021-04-15 19:08:15 · 73 阅读 · 0 评论 -
图的基本使用
1、图的表现形式1.1、邻接矩阵1.2、邻接表1.3、图的作用1.4、代码实现package com.qingchengxiaoye.graph;import java.util.ArrayList;import java.util.Arrays;public class Graph { private ArrayList<String> vertexList;//存储顶点集合 private int[][] edges;//存储图对应的临界矩阵原创 2021-03-29 21:44:19 · 223 阅读 · 0 评论 -
树-从入学到入坟
1、树的概念1.1、树的常用术语1.2、二叉树2、树的遍历2.1、前中后序遍历代码实现public class BinnaryTree { public static void main(String[] args) { BinaryTree binaryTree = new BinaryTree(); HeroNode root = new HeroNode(1, "宋江"); HeroNode node2 = new Her原创 2021-03-27 13:15:30 · 83 阅读 · 0 评论 -
数组链表存储形式分析
1、数组2、链表3、树原创 2021-03-21 11:12:05 · 155 阅读 · 0 评论 -
哈希表
1.1、哈希表基本介绍1.2、思路分析1.3、代码实现package com.qingchengxiaoye.hashtab;import java.util.Scanner;public class HashTabDemo { public static void main(String[] args) { HashTab hashTab = new HashTab(7); String key = ""; Scanner sc原创 2021-03-21 10:37:00 · 41 阅读 · 0 评论 -
七种基本的排序算法
排序时间复杂度1、冒泡排序1.1、实现思路1.2、实现代码public class Demo1 { public static void main(String[] args) { int [] a=new int[80000]; for (int i = 0; i < 80000; i++) { a[i]= (int)(Math.random()*80000); } Date date = n原创 2021-03-20 21:41:45 · 84 阅读 · 0 评论 -
四种基本的查找算法
1、顺序(线性)查找1.1、实现思路1.2、实现代码public class Demo1 { public static void main(String[] args) { int [] arr={1,9,5,2,8,4,3}; int i = seqSearch(arr, 3); if (i==-1){ System.out.println("没有查找到要查找的值"); }else {原创 2021-03-20 21:39:56 · 223 阅读 · 0 评论 -
面试整理
1、static1.1、作用为特定类型或者对象分配单一的存储空间,而与创建对象的个数无关。实现某个方法与类而不是与对象关联。1.2、原理静态资源是在类初始化的时候加载出来的,而非静态方法是在类new的 时候加载出来的。静态资源,是实例间共享的,换言之,只要一处改变,那就全部都改变。调用可以直接类名.方法名,或者就是类名.属性名非静态可以调用静态,但是反过来就不行,因为静态是在类初始化的时候就初始化了1.3、静态块静态代码块里面的代码执行一次,且只在初始化原创 2021-03-18 21:01:44 · 103 阅读 · 1 评论 -
SpringCache
简介基本概念整合引入依赖````````<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-cache</artifactId> </dependency> <dependency> <g原创 2021-03-17 13:42:03 · 81 阅读 · 0 评论 -
分布式锁
锁-时序问题要保证原子操作必须在同一把锁里面,不然会出现不一致的问题本地锁模拟分布式锁分布式锁基本原理实现阶段一阶段二阶段三加锁要做成原子性,也就是加锁和设置过期时间要是原子性阶段四最终redisson现在的企业开发一般采用redisson实现分布式锁,分布式对象等功能功能框架引入依赖 <dependency> <groupId>org.redisson</groupId> ..原创 2021-03-16 21:24:43 · 68 阅读 · 0 评论 -
Docker使用笔记
基本设置开机自启动systemctl enable docker.service关闭开机自启动systemctl disable docker.service设置镜像加速器底层原理docker常用命令帮助命令镜像命令容器命令设置容器自启动docker update mysql --restart=always常用其他命令小结作业nginx端口暴露tomcatcp -r webapps.dist原创 2021-03-16 13:24:42 · 84 阅读 · 0 评论 -
2021-02-20工作日志
SpringSecurity这个安全框架的本质就是采用一条很长的过滤链,然后通过配置过滤链进行一系列的操作Web核心配置类继承WebSecurityConfigurerAdapter密码校验由于框架有密码校验,默认是没有校验工具的,所有有必要自定义一个校验工具,这个时候可以采用在配置类中使用@Bean加入到容器中,从而就有了密码校验当然如果不想采用密码校验可以直接return new nopasswordEncoder;账号设置内存配置直接采用inMemoryAuthenticat原创 2021-02-20 14:09:34 · 277 阅读 · 0 评论 -
2021-02-09工作日志
异常处理学会了使用redis,也知道了穿透 雪崩 击穿 这一些面试比较火热的问题,雪崩雪崩就是在一定时间内,大量的缓存失效,解决办法主要有三种数据预热就是先让需要的缓存先存起来,还有就是设置不同的过期时间限流降级限制流量,通过加锁或者队列限制数据库写缓存的数量 降级就是降低其他低流量 业务的级别 例如在双十一的时候 先关闭评论 退款这些服务,以保证重要的进行redis高可用多设置几台redis服务器,以保证redis的高可用,也即是异地多活击穿击穿就是非常热频的点一直被访问,例如原创 2021-02-10 11:51:56 · 115 阅读 · 0 评论