自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 线上问题排查

4、因为线上大多数的问题都来源于系统的变更,可能我们只是变更了很少的代码,但只要有一丝的逻辑没留意到,就真的很可能会导致出现问题,回滚很可能是最快能恢复线上正常运行的办法。6、如果不是系统告的警,是业务侧反馈出了问题,那这时候需要业务侧明确是哪个具体的功能/接口出了问题,有没有保留请求入参,有没有返回错误的信息,有何现象。可能是逻辑本身的问题,可能是请求入参导致慢查询,可能是中间件的网络抖动,可能是突发或者异常请求的问题。10、要是还定位不出来,看能不能复现,能复现都好说,肯定是能解决的。

2022-12-01 09:20:21 269 1

原创 MySQL并发事务处理

第二种,不加任何锁,通过一定机制生成一个数据请求时间点的一致性数据快照,并用这个快照来提供一定级别()语句级或事务级()的一致性读取,从用户角度看,好像是数据库提供了多个版本,因此这种技术焦作。更新丢失通常是应该完全避免的,但防止更新丢失,不能单靠数据库事务控制器来解决,需要应用程序对要更新的数据加必要的锁来解决,因此,防止更新丢失应该是应用的责任。脏读 ,不可重复读,幻读,都是一致性问题,必须由数据库提供一定事务隔离机制,第一种,数据读取前,对其加锁,防止其他事务对数据进行修改。

2022-10-25 09:05:20 426

原创 聊聊volatile作用,原理

编译后,对比有volatile关键字和没有volatile关键字时所生成的汇编代码,发现有volatile关键字修饰时,会多出一个lock addl $0x0,(%esp),即多出一个lock前缀指令,lock指令相当于一个内存屏障。线程的工作内存保存了被该线程使用的变量的主内存副本,线程对变量的所有操作都必须在工作内存中进行,而不能直接操作主内存。内存屏障保证前面的指令先执行,所以这就保证了禁止了指令重排啦,同时内存屏障保证缓存写入内存和其他处理器缓存失效,这也就保证了可见性。

2022-08-23 08:49:36 236

原创 Webpack(一)

webpack 是一个静态资源打包工具会以一个或多个文件作为打包的入口,将整个项目所有文件编译组合成一个好多个文件输出出去。输出的文件就是编译好的文件,就可以在浏览器端运行了。

2022-08-22 10:32:31 287

原创 垃圾回收器与内存分配策略

想要了解GC首先要思考GC需要完成的三件事情1.哪些内存需要要回收2.什么时候回收3.如何回收?

2022-08-18 15:23:26 239

原创 对象创建(一)

即把一块确定大小的内存从java堆中划分出来,假设java中内存是绝对规整的,所有用过的内存放在一边,没有使用的内存放另一边,中间放指针作为分界点指示器,分配内存时仅仅把指针像空闲空间一冻与对象大小相同的距离,这种分配方式称为**(指针碰撞)Bump the Pointer**(GC回收的),如果java堆内存并不是规整的,已使用的内存和未使用的内存相互交错。...

2022-08-18 14:24:17 205

原创 Mysql_索引(一)

为什么使用索引存储引擎用于快速查找数据记录的一种数据结构,MYSQL进行数据查找时,先通过查询条件是否命中某条索引,符合则通过索引查找相关数据,不符合则需要全表扫描,目的是为了减少磁盘I/O次数,加快查询效率概述索引的本质是数据结构,可以简单理解为排好序查找数据结构,满足特定的查找算法,索引实在存储引擎中实现的,因此没中存储引擎不一定相同,也不一定支持所有索引类型,存储引擎可以定义每个表的最大索引书和最大索引长度,最少16个索引,总索引长度至少256字节,优点降低数据库的I/O成本创建唯一索引确

2022-04-07 10:45:33 859

原创 Mysql(二)存储引擎

存储引擎的概念简而言之就是指表得类型,以前叫作 表处理器 ,功能就是接受上层传下来得指令,然后对表中得数据进行提取或写入操作.引擎介绍innoDB引擎: 具备外键支持功能得事务存储引擎Mysql 从3.23.32a开始包含innoDB存储引擎,5.5之后默认采用innoDB它被设计用来处理大量短期(short-lived)事务,可以确保事物的完整提交(commit)he回滚(rollback)除非有非常特别得原因,否则优先考虑innoDB数据文件结构:表明.frm 存储表结构(8.0以后合并

2022-04-07 10:14:20 120

原创 MySql_优化(一)

ORDER BYSELECT*FROMtablenameORDER BY columnname [DESC|ASC| n(根据第n列排序)]LIMIT 100000;查看排序所用到内存show variables like 'sort_buffer_size'排序所用到的内存大概250k的大小修改内存大小set sort_buffer_size = 265*1024*1024;当查询语句中有大量排序且没有索引可以利用时,调大sort_buffer_sizeshow stat

2022-04-07 09:16:49 730

原创 Linux_进程管理

概述在linux ,每个执行的程序(代码)都成为一个进程,每个进程都分配一个id每个进程都会对应一个父进程,父进程可以复制多个子进程,每个进程可能有两种存在方式,前台和后台,前台是用户屏幕上可以操作的,后台是指无法看到的一般的系统的服务都是以后台进程的方式存在,而且都会常驻在系统中,直到关机结束显示系统执行的进程ps 用来查看目前系统正在执行的进程-a: 显示当前终端所有进程信息-u: 以用户的格式显示进程信息-x:显示后台进程运行的参数例: ps -aux | more终止进程kil

2022-03-30 13:52:40 112

原创 Linux_磁盘查询指令

查询系统整体磁盘使用情况基本语法df -h查询系统整体磁盘使用情况du -h查看指定目录磁盘占用情况,默认为当前目录-s:指定目录占用大小汇总-h:带计量单位-a:含文件-max-depth=1 子目录深度-c 列出明细的同时增加汇总值...

2022-03-30 12:10:28 347

原创 Linux 分区_磁盘分区

分区方式:1)mbr 分区:最多支持四个主分区系统只能安装在主分区扩展分区要占一个和主分区mbr最大值支持2tb,但拥有最好的兼容性2)gpt支持无限多个主分区,window下最多128个最多18eb (eb=1024pb,pb=1024tb)windows7 64位以后支持gtplinux分区原理:Linux只有一个根目录,独立且唯一的文件结构,每个分区都是用俩组成整个文件系统的一部分采用载入的处理方法,整个文件系统包含了一整天文件和目录,将一个分区和一个目录联系起来,这是要载入

2022-03-30 11:09:50 143

原创 Linux_任务调度基本说明

crond 进行 定时任务的设置概述任务调度:指系统在某个时间执行的特定的命令或程序分类:1,系统工作,2个别用户工作:mysql备份语法:crontab选项-e 编辑crontab 定时任务-l 查询定时任务-r 删除定时任务设置任务调度文件: /etc/crantab设置个人任务调度:执行crontab -e命令接着输入任务到调度文件如: */1 * * * * * ls -l /etc/> /tmp/to.txt每小时的每分钟执行ls -l /etc/>/t

2022-03-30 10:40:27 1699

原创 操作系统_硬件的组成

1.总线贯穿整个系统的是一组电子管道,称作总线,它携带信息字节并负责在各个部件间传递,通常总线被设计成传送定长的字节快,也就是字(word).字中的字节数(即字长)是一个基本的系统参数,各个系统都不尽相同,现在大多数机器字长要么是4字节(32位),要么是8字节(64位).I/O系统与外部世界联系的通道,:作为输入的键盘鼠标,输出的显示器,存储数据的磁盘驱动器,每个设备都通过一个控制器或适配器与I/O总线相连,控制器与适配器之间的区别主要在于它们的封装方式,控制器是I/O设备本身或者系统的主印制电路板上

2022-03-30 08:32:00 167

原创 设计模式_原型模式(二)

传统方式的优缺点优点同所有设计模式一样,直观,简单易操作.在创建新的对象是,总是需要重新获取原始对象的属性(设计模式_原型模式(一)),如果创建对象比较复杂时,效率低总是需要重新初始化对象,而不是动态地获得对象运行时的状态,不够灵活改进思路:java中Object 是所有类的基类,实现了clone()接口,但需要clone 的java类必须实现cloneable接口=>原型模式;原型模式概述1)原型实例指定创建对象的种类,并且通过拷贝这些原型,创建新的对象属于创建型设计模式,

2022-03-29 09:14:24 123

原创 数据结构_树_查找指定节点

要求1)请编写谦虚查找,中序查找和后续查找的方法2)并分别使用三种查找方式, 查找 no =5 的节点3) 并分析各种查找方式, 分别比较了多少次4)思路 :4.1 前序查找,判断当前节点的no是否等于要查找的如果相等返回节点如果不等,则判断当前节点的左子节点是否为空,如果不为空则递归前序查找,如果左递归谦虚查找找到节点则返回public Node preOrderSearch(int no){ //比较当前节点是不是 if( this. no == no ) { retu

2022-03-29 09:03:04 604

原创 数据结构_树_基础部分

二叉树为什么需要树这种数据结构1)数组存储方式的分析优点: 通过下标方式访问元素,速度快,对于有序数组,可以使用二分查找提高检索速度;缺点:如果药检所具体某个值,或者插入值(按一定顺序)会整体移动,效率低2)链式存储方式优点:在一定程度上对数组村创世有优化(比如: 插入一个数值节点,只需要将插入节点,连接到表中即可,删除效率高)缺点:检索式效率低3)树存储方式提高存储,读取的效率,比如利用二叉排序树(Binary sort Tree),既可以保证数据的检索速度,又可以保证数据的插入,删除,

2022-03-29 08:32:13 562

原创 算法_查找算法_插值查找算法

原理插值查找算法类似于二分查找,不同的是插值查找每次从自适应mid处开始查找.将折半查找中的求mid 索引的公式, low 表示做索引left,high表示右边索引right ,key是需要查找的参数mid = (low + high ) /2 =low +1/2(high - low )改成mid = low + key- a[low]/a[high]-a[low] (high-low)int mid =low + (high -low )* (key -arr[low]) / (arr[h

2022-03-28 10:45:09 131

原创 算法_查找算法_二分查找

线性查找有一个数列:{1,8,10,89,1000,1234},判断数列中是否包含此名称public static int seqSearch(int[] arr, int value) {// 线性查找是逐一比对,发现有相同值,就返回下标for (int i = 0; i < arr.length; i++) {if(arr[i] == value) {return i;}}return -1;}二分查找思路分析:1,确定该数组的中间下标:mid=(left+right)

2022-03-28 10:31:53 330

原创 Linux_权限

概述-rw -r --r–.1 tom police 6 3月 18:19:24 ok.txt文件类型1)- 普通文件2)d: 目录文件3)l: 软连接 ln4)c: 字符设备5)b:块文件 硬盘rw:表示所有者权限r–(1):代表文件所在组用户拥有的权限 r代表读r–(2):表示文件其他组用户拥有的权限1:如果是文件代表硬链接,如果是目录代表子目录数tom:用户police:组6:文件大小 ,如果是目录4096日期:文件最后的修改时间rwx权限详解作用到文件1)[r]代

2022-03-23 15:14:15 877

原创 Linux_组管理

linux 中的每个用户必须属于一个组,不能独立于组外,在Linux中每个文件有1.所有者2.所在组3.其他组的概念文件/目录的所有者一般为文件的创建者.查看文件所有者1)指令 : ls -ahl2)创建一个组groupadd police向组内添加一个用户useradd -g police tom设置密码passwd tom查看路径pwd创建文件touch filename.text查看所有者ls -ahl修改文件所有者chown 用户名 文件名文件或目录所在

2022-03-23 14:12:37 1355

原创 Linux_实用指令

linux实操__实用指令**1.linux运行级别**0:关机1:单用户2:多用户(无网络服务)3:多用户(有网络)4:保留5:图形界面6:重启系统运行级别配置文件:/etc/inittab2.切换到指定运行级别init [0123456]面试题找回root密码思路:进入到单用户模式开机页面按ENTER (Centos7以上按E 然后ctrl+x进入单用户模式,)按e进行编辑,光标移到第二行(编辑内核) 按e 输入1 再次将输入ENTER进入单用户模式,输入b.pass

2022-03-23 13:44:03 1039

原创 _原型对象

//创建一个democonst d =new Demo()Demo.prototype//显示原型属性d._proto_//隐式原型属性//都指向了原型对象//通过显示原型属性操作原型对象,追加一个x属性,值未99Demo.prototype.x=9 //实例的原型对象,永远指向自己缔造者的原型对象//一个重要的内置关系,VueComponent.protoype._proto_===//Vue.prototype//目的:让组件实例对象可以访问到Vue原型上的属性方法...

2022-03-21 14:35:49 59

原创 vueComponets构造函数

组件的本质—构造函数(VueComponent),不是程序员定义的,是Vue.extend生成的,vue解析时会帮我们创建组件的实例对象特别注意:每次调用vue.extend.返回的都是一个全新的VueComponent关于this指向:组件配置中:data函数,methods中的函数,watch中的函数,computed中的函数{ vuecomponent实例对象}new Vue配置中:data函数,methods中的函数watch中的函数,computed中的函数,this是[vue实例]

2022-03-21 13:42:17 865

原创 Vue_组件_非单文件组件

组件定义包含界面局部功能代码和资源的集合组件创建1.非单文件组件:一个文件中包含n个组件:2.单文件组件:一个文件中只包含一个组件,//创建组件const name=Vue.extend({})//注册组件components:{ name}//全局注册组件Vue.component('name', name)注意点:1.关于组件名:一个单词组成:第一种写法:school第二种写法:School多单词组成第一种写法:kebab-case第二种写法:CamelCase

2022-03-21 13:32:02 298

原创 vue_生命周期_销毁流程

完全销毁一个实例。清理它与其它实例的连接,解绑它的全部指令及事件监听器。 (自定义事件)触发 beforeDestroy 和 destroyed 的钩子。beforeDestory: vm中所有的:data,methods,指令等等,都处于可用状态,马上要执行销毁过程,一般在此阶段,关闭定时器,取消订阅消息,解绑自定义事件...

2022-03-21 12:02:54 786

原创 Vue_生命周期_更新流程

beforeUpdate: 数据是新的,但页面是旧的:数据与页面未同步Virtual DOM re-render and patch 根据新数据,生成新的虚拟DOM,随后与旧的虚拟DOM进行比较,最终完成页面更新,即:完成了Model->view的更新update: 数据是新的,页面也是新的,页面和数据保持同步...

2022-03-21 11:43:35 241

原创 Vue_生命周期_挂载流程

初始化:生命周期,事件,但数据代理还未开始beforeCreate:无法通过vm访问的data中呃数据,methods中得方法初始化:数据监测,数据代理**created:**可以通过vm访问的data中呃数据,methods中得方法Vue开始解析模板,生成虚拟DOM(内存中),页面还不能显示解析好的内容beformount: 页面呈现的是未经Vue编译的DOM结构,所有对DOM的操作,最终都不奏效将内存中的虚拟 DOM转为 真是DOM插入页面mounted: 页面中呈现的是经过Vue编译的D

2022-03-21 11:28:33 744

原创 Vue_监视属性Watch

watch:{ isHot:{ immediate:true,//初始化时让handler调用 //handler当isHot改变时调用 handler(newValue,oldValue){ } }}1.当监视的属性变化时,回调函数自动调用,进行相关操作2.监视的属性必须存在3.监视的两种写法3.1new Vue3.2this.$watch...

2022-03-21 10:23:55 676

原创 Vue_计算属性

compute: { fullName:{ get() { return ""+"" }, set() { } } }计算属性1.定义:要用的属性不存在,通过已有的属性计算出来2.原理,底层借助了,Object.defineProperty提供的getter和setter3.get函数什么时候执行3.1初次读取时执行一次3.2依赖的数据发生改变时4.优势:具有缓存机制(复用),效率高,调试方便5.备注5.1计算属性最终会出现在vm上,直接读取使用即可5.2

2022-03-21 10:05:14 194

原创 递归_八皇后问题(回溯法)

public class Queen8 { //定义一个max表示共有多少个皇后 int max=8; //定义一个数组array,保存皇后放置的位置 int[] arr=new int[max]; static int count=0; static int judgeCount=0; //放置第n个皇后 //check是每一次递归进入到check中都有for,因此会有回溯 public void check(int n){

2022-03-21 09:07:46 68

原创 算法与数据结构_递归

递归需要遵守的重要原则1)执行一个方法时,就创建一个新的受保护的独立空间(栈空间)2)方法的局部变量时独立的,不会相互影响,比如n变量3)如果方法中使用的是引用类型变量(比如数组),就会共享该引用类型得数据4)递归必须向退出递归的条件逼近(边界),否则就是无限递归,出现StackOverflowError,5)当一个方法执行完毕,或者遇到return,就会返回,遵守谁调用就将结果返回给谁,方法执行完毕或返回时,该方法执行完毕public class Demo2 { //阶乘 p

2022-03-21 09:06:24 211

原创 设计模式_原型模式(一)

需求:有一只羊叫:sheep,姓名为:tom 年龄为:1,颜色为:white请编写程序和tom属性完全相同的十只羊public void main(String[] args){ Sheep sheep= new Sheep("tom",1,"白色"); Sheep sheep2= new Sheep(sheep.getName(),sheep.getAge(),sheep.getColor()); .......}优缺点1)优点时比较好理解,简单那易操作2)在创建新的对

2022-03-18 11:25:52 187

原创 工厂模式_总结

1)意义将实力对象的代码提取出来,放到一个类中统一管理维护,达到和主项目的依赖关系的解耦,从而提高项目的扩展和维护性2)三种工厂模式(简单工厂,工厂方法,抽象工厂)3)设计模式的依赖抽象原则创建对象实例时,不要直接ner,而是把这个动作放到一个工厂方法中,并返回不要让类继承具体类,二十继承抽象类或是实现interface不要覆盖基类中已经实现的方法...

2022-03-18 10:59:37 153

原创 工厂模式_抽象工厂模式

概述1)抽象工厂模式:定义了一个接口(interface)用于创建相关或有依赖关系的对象簇,而无需指明具体的类2)抽象工厂模式可以将简单工厂模式和工厂方法模式进行整合3)从设计层面看,抽i昂工厂模式就是对简单工厂模式的改进4)将工厂抽象成两层,AbsFactory(抽象工厂)和具体实现的工厂子类,...

2022-03-18 10:51:50 43

原创 工厂方法模式

需求:客户在点皮萨时,可以点不同口味的披萨这时候再使用简单工厂模式,软件的维护性和扩展性就会打折扣使用工厂方法模式1)将披萨实例化功能抽象成抽象方法,在不同的口味点餐子类中具体实现2)定义一个创建对象的抽象方法,由子类决定要实例化的类,工厂方法模式将对象的实例化推迟到子类import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;public abstra

2022-03-18 10:20:37 164

原创 工厂模式_简单工厂模式

需求:制作披萨:披萨的种类很多披萨的制作有prepare , back ,cut ,box完成披萨店订购功能实现传统方式public class OrderPizza { // 构造器// public OrderPizza() {// Pizza pizza = null;// String orderType; // 订购披萨的类型// do {// orderType = getType();// if (orderType.equals("greek"))

2022-03-18 09:59:00 111

原创 栈的实际应用

概述1)栈的英文为(stack)2)栈是一个先入后出的有序列表3)栈是限制线性表中元素的插入和删除只能在线性表的同一端进行的一种特殊线性表,允许插入和删除的一端,为变化的一段,称为栈顶(TOP),另一端为固定的一段,称为栈底(BOTTOM)4)根据栈的定义可知,最先放入栈中元素在栈底,最后放入的元素在栈顶,而删除元素相反,最后放入的元素先删除,最先放入的元素后删除栈的应用场景1)子程序的调用:在跳往子程序前,会先将下个指令的地址存到堆栈中,直到子程序执行完后再将地址取出,以回到原来的程序中2)

2022-03-18 09:45:55 3065

原创 约瑟夫环(单向链表应用场景)

设编号为1,2,…n的n个人围坐一圈,约定编号为k(1<=K<=n)的人从1开始报数,树到m的人出列,他的下一位又从1开始报数,数到m的人再次出列,以此类推,直到所有人出列,package com.atguigu.linkedlist;public class Josepfu { public static void main(String[] args) { // 测试一把看看构建环形链表,和遍历是否ok CircleSingleLinkedList circleSingle

2022-03-17 14:27:26 63

原创 双向链表应用实例

双向链表的操作分析和实现单向链表,查找的方向只能是而一个方向,不能自我删除,需要辅助接点.双向链表可以镶嵌后查找,可以自我删除单链表删除节点时总是找到temp,temp是待删除节点的前一个结点分析双向链表添加修改删除1)遍历 和单链表一样,只是可以向前亦可以向后2)添加2.1 默认添加到最后一个节点temp.next=newHeroNodenewHeroNode.pre=temp3)修改 节点同单链表先找到节点,通过遍历temp.node=newHeroNode.node4)删除节

2022-03-17 13:51:19 2457

空空如也

空空如也

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

TA关注的人

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