
日记
文章平均质量分 92
王小c
交流群:954614622
weixin:wangc_20171010
qq:947790973
个人网站 dev.wangc.site
展开
-
Day131 面试记录(3)
安博教育 微服务之间接口的调用怎么实现,从代码层面具体怎么写 springcloud你都用过那些组件 浏览器发一个请求到网关,网关是通过什么转发到微服务 线程安全的集合 concurrenthashmap和hashmap的区别 jdk1.8在集合方面的处理都增加了什么方法? List和set的区别 如何实现多线程 callable的返回值是拿什么方法接收的 Thread和Runable的区别 String、StringBuffer 和 StringBuilder .原创 2020-07-30 11:09:10 · 252 阅读 · 0 评论 -
Day131 面试记录(2)
多线程的应用场景线程的生命周期线程间的通讯机制进程和线程hashmapconcurrenthashmap常用的锁有哪些数据量特别大hashmap存储不了java的内存模型git的垃圾回收机制arraylist和linklistarraylist扩容机制spring用到那些设计模式aop怎么实现动态代理的为什么要用springcloud熔断机制的实现原理各层协议抓包工具的实现原理存储过程聚合函数用过索引吗?那些字段需要建立索引联合索引听到过吗项目中的并发常见介绍原创 2020-07-19 23:58:29 · 161 阅读 · 0 评论 -
Day131 面试记录(1)
人力面试问题离职的原因?是统招本科吗,学信网可查吗?可以接受外包/驻地/外派吗?上家公司的工资,福利,年终奖等期望薪资?什么时候入职?大学绩点排名?技术面试题目项目中并发的体现:优惠权展示: 如果优惠券列表缓存存在,从缓存中查询,缓存不存在从DB中查询并插入到缓存,在这里用到了分布式锁来解决并发问题。因为某个时间点缓存不存在请求量有很大的时候,会出现缓存并发的问题,多个线程会重复查询数据库,有重复查询缓存,出现两组优惠券,所以用分布式锁解决并发问题,拿到锁并且判断尚未缓存..原创 2020-07-08 12:45:23 · 225 阅读 · 0 评论 -
Day130 SpringCloud
SpringCloud微服务基础原创 2020-07-02 14:37:51 · 162 阅读 · 0 评论 -
Day129 消息中间件
消息中间件基础知识消息队列 MQ:为什么:当数据进行更新时,数据库,索引库,静态页面都需要进行修改,如果直接让服务器端修改这些代码,违背了微服务的独立原则;即使通过接口进行修改也会导致代码的耦合,所以产生了消息队列的机制,如果数据发生修改,服务器端只需要向消息队列发送消息,就可以做其他工作了(异步),而索引库和静态页面的接口时刻监听消息队列,如果监听到服务端的消息便进行数据的更新。是什么:消息队列是典型的:生产者、消费者模型。生产者不断向消息队列中生产消息,消费者不断的从队列中获取消息。因为消息原创 2020-06-30 11:59:44 · 190 阅读 · 0 评论 -
Day128 全面理解Redis
Redis基础知识NoSQL 数据库的产生就是为了解决高并发、高可扩展、高可用、大数据存储问题而产生的数据库解决方案,就是NoSql 数据库。Redis数据库:与传统数据库不同的是redis 的数据是存在内存中的,所以存写速度非常快,因此redis 被广泛应用于缓存方面。另外,redis 也经常用来做分布式锁。*常见问题集群1、常见问题 1、缓存穿透 1、概念 2、产生原因 3、解决方案 2、缓存击穿 1、概念原创 2020-06-29 19:22:39 · 311 阅读 · 0 评论 -
Day127 Redis基础
Redis基础NOSQL数据库是什么:NoSQL(NoSQL = Not Only SQL),意即“不仅仅是SQL”,是一项全新的数据库理念,泛指非关系型的数据库。以下为主流的NOSQL产品:为什么:随着互联网 web2.0 网站的兴起,传统的关系数据库在应付web2.0网站,特别是超大规模和高并发的 SNS 类型的 web2.0 纯动态网站已经显得力不从心,暴露了很多难以克服的问题,而非关系型的数据库则由于其本身的特点得到了非常迅速的发展。NoSQL数据库的产生就是为了解决大规模数据集合多重数据种原创 2020-06-29 09:39:07 · 138 阅读 · 0 评论 -
Day126 JVM
JVMJVM(Java Virtual Machine ):Java虚拟机,简称JVM,是运行所有Java程序的假想计算机,是Java程序的运行环境,是Java 最具吸引力的特性之一。Java语言的跨平台特性是由JVM实现的。类加载机制Java程序运行机制:先在IDE上编写源代码(.java)之后编译器会将源代码编译成字节码文件 (.class)然后类加载器再把字节码加载到内存中,将其放在运行时数据区的方法区内由执行引擎将字节码翻译成底层系统指令,再交由CPU去执行这里面重点关注原创 2020-06-27 10:20:59 · 132 阅读 · 0 评论 -
Day125 MySQL索引
MySQL索引索引概述索引:MySQL官方对索引的定义为:索引(index)是帮助MySQL高效获取数据的数据结构(有序)。在数据之外,数据库系统还维护者满足特定查找算法的数据结构,这些数据结构以某种方式引用(指向)数据, 这样就可以在这些数据结构上实现高级查找算法,这种数据结构就是索引。优点:提高数据检索的效率,降低数据库的IO成本;通过索引列对数据进行排序,降低数据排序的成本,降低CPU的消耗。缺点:实际上索引也是一张表,该表中保存了主键与索引字段,并指向实体类的记录,原创 2020-06-25 11:20:19 · 196 阅读 · 0 评论 -
Day124 MySQL优化
MySQL优化在应用的的开发过程中,由于初期数据量小,开发人员写 SQL 语句时更重视功能上的实现,但是当应用系统正式上线后,随着生产数据量的急剧增长,很多 SQL 语句开始逐渐显露出性能问题,对生产的影响也越来越大,此时这些有问题的 SQL 语句就成为整个系统性能的瓶颈,因此我们必须要对它们进行优化。SQL优化优化SQL的步骤:当面对一个有 SQL 性能问题的数据库时,我们应该从何处入手来进行系统的分析,使得能够尽快定位问题 SQL 并尽快解决问题?查看SQL执行频率:作为SQL优化的借原创 2020-06-24 10:50:56 · 167 阅读 · 0 评论 -
Day123 MySQL事务
MySQL高级数据库优化:* SQL优化,存储引擎选择,表结构优化,索引优化,分库分表,数据库分库分表一般数据量多大才需要?数据类型选择存储引擎和大多数数据库不同,MySQL有一个存储引擎的概念,针对不同的存储需求可以选择最优的存储引擎。存储引擎就是存储数据,建立索引,更新查询数据等等技术的实现方式。存储引擎是基于表的,所以存储引擎也可以被称为表类型。InnoDB:MySQL5.5之后默认引擎。支持事务的支持,提供了行级锁和外键的约束;数据一致性,完整性应用场景:需要事务支持的业原创 2020-06-23 23:06:06 · 301 阅读 · 0 评论 -
Day122 Linux常用命令
查看日志因为在生产环境会遇到很多问题,那么最快的定位方式莫过于去看日志,我们都知道服务器每天会产生大量的日志,那么如何快速的定位也就是最关键的。CentOS中的日志服务系统rsyslogLinux系统常见的日志文件路径1:/var/log/messages:记录 Linux 内核消息及各种应用程序的公共日志信息路径2:/var/log/cron:记录 crond 计划任务产生的事件信息路径3:/var/log/dmesg:记录 Linux 操作系统在引导过程中的各种事件信息路径4:/var/l原创 2020-06-21 23:38:27 · 135 阅读 · 0 评论 -
Day121 深入理解Spring与SpringBoot
SpringSpring是一个 轻量级 的 控制反转(IoC) 和 面向切面(AOP) 的容器框架,意在解决Java企业应用开发的复杂性。IOCIOC意在降低程序的耦合度,将对象创建和对象之间调用关系交给IOC容器管理,参与开发的每一成员只要实现自己的类就可以了,不需要依赖其他类。原理IOC容器就是一个管理对象的工厂IOC原理:工厂模式 + xml解析 + 反射为什么:为了尽可能的降低程序的耦合度new方法:原始方法用new来创建调用对象耦合度太高,一旦调用的对象路径方法发生原创 2020-06-19 11:48:27 · 429 阅读 · 0 评论 -
Day120 计算机网络
计算机网络重点了解网络分层模型(OSI、TCP/IP和五层模型)和常用的协议(HTTP/HTTPS 和 TCP/IP)分层模型概述:OSI模型七层,概念清楚,理论也比较完整,但其既复杂又不实用;TCP/IP模型四层,应用非常广泛,计算机网络的课程一般会把两者折中为五层架构,这样既简洁又能将概念阐述清楚。数据传输流程:应用进程数据线传送到应用层,加上应用层首部,成为应用层PDU在传送到运输层,加上运输层首部,成为运输层报文在传送到网络层,加上网络层首部,成为IP数据报在传送到数据链路层,加上链原创 2020-06-18 19:48:27 · 339 阅读 · 0 评论 -
Day119 并发编程之线程池
核心参数线程池的工作流程线程池的底层实现BlockingQueue的使用调优策略拒绝策略线程池组件线程池种类原创 2020-06-15 22:13:39 · 137 阅读 · 0 评论 -
Day118 并发编程进阶
JUCjava.util.concurrentjava.util.concurrent.atomicjava.util.concurrent.locks原创 2020-06-15 16:07:43 · 162 阅读 · 0 评论 -
Day117 并发编程基础
并发编程基础概述基本概念:程序:程序由指令和数据组成,但这些指令要运行,数据要读写,就必须将指令加载至 CPU,数据加载至内存。进程:进程就是用来加载指令、管理内存、管理 IO 的。当一个程序被运行,从磁盘加载这个程序的代码至内存,这时就开启了一个进程。比如在Windows系统中,一个运行的xx.exe就是一个进程。线程: 一个进程之内可以分为一到多个线程,一个线程就是一个指令流,将指令流中的一条条指令以一定的顺序交给 CPU 执行,Java 中,线程作为最小调度单位,进程作为资源分配的最小单原创 2020-06-13 10:24:21 · 209 阅读 · 0 评论 -
Day116 并发编程之Lock体系
Lock体系对比同步方法和同步块,Lock 接口提供了更具扩展性的锁操作。基本概念悲观锁:总是假设最坏的情况,每次去拿数据的时候都认为别人会修改,所以每次在拿数据的时候都会上锁,这样别人想拿这个数据就会阻塞直到它拿到锁。应用场景:Java 里面的synchronized 关键字的实现也是悲观锁。再比如传统的关系型数据库里边就用到了很多这种锁机制,比如行锁,表锁等,读锁,写锁等,都是在做操作之前先上锁。乐观锁:顾名思义,就是很乐观,每次去拿数据的时候都认为别人不会修改,所以不会上锁,原创 2020-06-12 17:43:40 · 188 阅读 · 0 评论 -
Day115 并发关键字之synchronized与volatile
synchronized起因:在并发编程中存在线程安全问题,主要原因有多线程共同操作共享数据,我们可以使用同步机制(synchronized)来解决该问题,使得同一时刻,只有一个线程可以操作改数据。synchronized:通过使用synchronized关键字可以保证在同一时刻,只有一个线程可以执行某个方法或某个代码块,同时synchronized可以保证一个线程的变化可见(可见性),即可以代替volatile。用法使用方法:Java中每一个对象都可以作为锁,这是synchronized实现同原创 2020-06-11 15:12:12 · 229 阅读 · 0 评论 -
Day114 Java容器底层原理
ArrayList的扩容机制ArrayList的扩容机制还是相对容易理解的,就是在第一个添加元素时,创建一个长度为10的数组,之后随着元素的增加,以1.5倍原数组的长度创建一个新数组HashSet实现原理HashSet实际上为(key,null)类型的HashMap,而我们知道,HashSet的key是不能重复的,所以HashSet的值自然也是没有重复的.因为HashMap的key可以为null,所以HashSet的值可以为null.、sort方法的底层排序实现原理https://www.jia原创 2020-06-10 08:56:31 · 185 阅读 · 0 评论 -
Day113 ConcurrentHashMap底层原理
ConcurrentHashMap前言:现在很多会涉及到高并发的应用场景,最常用的双列集合HashMap是线程不安全的,HashTable虽然线程安全但却效率太低,所以就在HashMap的基础上有了并发安全的ConcurrentHashMap。为什么HashMap线程不安全:多线程put操作,导致元素丢失。多线程put操作后,get操作导致死循环。为什么HashTable线程安全:因为它的remove,put,get都做成了同步方法。HashTable安全机制的缺点:只有一把锁,效率原创 2020-06-09 13:28:03 · 369 阅读 · 0 评论 -
Day111 Java基础知识点 序列化+拷贝
序列化概述程序运行的过程中,所有变量都是在内存中操作的,当程序一旦执行完毕,结束退出后,变量占有的内存就被操作系统回收了。 因此我们需要将某些数据持久化存储到磁盘中,下次运行的时候从磁盘中读取相关数据。我们将变量从内存中变成可以存储或传输的过程称之为序列化。什么情况下需要序列化:a)当你想把的内存中的对象状态保存到一个文件中或者数据库中时候;b)当你想用套接字在网络上传送对象的时候;c)当你想通过RMI传输对象的时候;package pac.IOstream;import原创 2020-06-06 22:19:35 · 148 阅读 · 0 评论 -
排序算法竟能如此美丽?排序算法可视化大全!
文章目录首荐:VisuAlgo各算法对比最炫酷的比较聪明的最古老的开源的Javascript程序我的方法(伪):折线可视化开源Python脚本舞蹈可视化内存状态可视化首荐:VisuAlgo可视化网站首先推荐VisuAlgo,上面的可视化比较全了,做的也很漂亮。排序算法用条形图表示数值,数据可以自定义,允许用户查看正在进行的所有操作。链接:https://visualgo.net/sorting各算法对比这个网页综合比较各种常见的排序算法在不同情况下的排序效率。链接:https://ww原创 2020-06-05 21:52:16 · 2798 阅读 · 0 评论 -
Day110 Hibername
相同点: 都是java中orm框架、屏蔽jdbc api的底层访问细节,使用我们不用与jdbc api打交道,就可以完成对数据库的持久化操作。jdbc api编程流程固定,还将sql语句与java代码混杂在了一起,经常需要拼凑sql语句,细节很繁琐。 ibatis的好处:屏蔽jdbc api的底层访问细节;将sql语句与java代码进行分离;提供了将结果集自动封装称为实体对象和对象的集合的功能.queryForList返回对象集合,用queryForObject返回单个对象;提供了自动将实体...原创 2020-06-02 21:31:56 · 168 阅读 · 0 评论 -
Day109 MyBatis
JDBC编程分析Mybatis快速入门自定义Mybatis基于代理Dao实现CRUDMybatis参数Mybatis结果封装传统Dao层开发SqlMapConfig.xmlMybatis的连接池与事务Mybatis动态SQL语句Mybatis多表查询Mybatis延迟加载Mybatis缓存Mybatis注解开发...原创 2020-06-02 21:30:01 · 117 阅读 · 0 评论 -
Day108 树形结构查找算法
二叉搜索树(二叉排序树):元素有大小顺序的二叉树,左子树小,右子树大平衡二叉树:二叉排序树的改进B树:与二叉树查找相似,区别在于根据多路分支确定,m阶B树每个节点至多有m棵子树(即至多有m-1个关键字)B+树:叶子节点才是排序信息红黑树:红黑树本身就是一颗二叉查找树,将节点插入后,该树仍然是一颗二叉查找树。也就意味着,树的键值仍然是有序的。 特点:速度特别快,趋近平衡树,查找叶子元素最少和最多次数不多于二倍 ...原创 2020-06-02 20:02:30 · 656 阅读 · 0 评论 -
Day107 散列结构查找算法
哈希算法:也称为哈希查找算法,使用了哈希表作为存储结构,对比其他数据结构的查找算法,哈希查找是根据关键字计算关键字在表中的地址,而其他查找关键字和地址之间是没有关系的。理想情况下查找时间复杂度为O(1),因为与散列表中的元素个数n无关,即使会因为冲突处理有些多找几次,那也与n无关。 散列函数:(关键字——>对应地址)的函数常用方法有:直接定址法,除留余数法等 冲突处理:多个关键字通过散列函数得到相同地址,称作冲突。任何设计出的散列函数都不可避免会产生冲突,因此必须考虑冲突发生后如何处理。即为产生冲原创 2020-06-02 19:53:59 · 311 阅读 · 0 评论 -
Day106 SSM整合
环境搭建创建数据库和表结构create database ssm;create table account(id int primary key auto_increment,name varchar(100),money double(7,2),);创建Maven web工程,部署到tomcat,加入以下pom依赖,并且加入java和resource目录 <properties> <project.build.sourceEncoding>U原创 2020-05-31 19:03:33 · 281 阅读 · 0 评论 -
Day105 项目实战7 商品查询
原创 2020-05-28 13:12:04 · 231 阅读 · 0 评论 -
Day104 项目实战6 规格参数
商品规格数据结构乐优商城是一个全品类的电商网站,因此商品的种类繁多,每一件商品,其属性又有差别。为了更准确描述商品及细分差别,抽象出两个概念:SPU和SKU,了解一下:SPU:Standard Product Unit (标准产品单位) ,这是一组具有共同属性的商品集。SPU是一个抽象的商品集概念,为了方便后台的管理。 SKU:Stock Keeping Unit(库存量单位),SPU商品集因具体特性不同而细分的每个商品。SKU才是具体要销售的商品,每一个SKU的价格、库存可能会不一样,用户购买的原创 2020-05-27 18:17:46 · 134 阅读 · 0 评论 -
Day103 Linux
Linux概述Unix:Unix是一个强大的多用户、多任务操作系统。于1969年在AT&T的贝尔实验室开发。UNIX的商标权由国际开放标准组织(The Open Group)所拥有。UNIX操作系统是商业版,需要收费,价格比Microsoft Windows正版要贵一些。 Linux:Linux是基于Unix的Linux是一种自由和开放源码的操作系统,存在着许多不同的Linux版本,但它们都使用了Linux内核。Linux可安装在各种计算机硬件设备中,比如手机、平板电脑、路由器、台式计算机。诞原创 2020-05-26 18:19:05 · 145 阅读 · 0 评论 -
Day102 FastDFS
文件上传的缺陷先思考一下,现在上传的功能,有没有什么问题?上传本身没有任何问题,问题出在保存文件的方式,我们是保存在服务器机器,就会有下面的问题: 单机器存储,存储能力有限 无法进行水平扩展,因为多台机器的文件无法共享,会出现访问不到的情况 数据没有备份,有单点故障风险 并发能力差 这个时候,最好使用分布式文件存储来代替本地文件存储。...原创 2020-05-25 11:13:47 · 150 阅读 · 0 评论 -
Day101 项目实战5 图片上传
2.2.编写上传功能文件上传功能,也是自定义组件完成的,参照自定义组件用法指南:在页面中的使用:2.2.1.controller编写controller需要知道4个内容:结合用法指南 请求方式:上传肯定是POST 请求路径:/upload/image 请求参数:文件,参数名是file,SpringMVC会封装为一个接口:MultipartFile 返回结果:上传成功后得到的文件的url路径,也就是返回String 代码如下:@C...原创 2020-05-24 22:09:57 · 278 阅读 · 0 评论 -
Java基础语法
文章目录Java—基础语法1. Java概述2. 基本概念JVM,JRE与JDK3. 数据类型基本类型类型转换运算符数组3. 语法结构选择语句循环语句4. 程序结构方法方法重载数组与方法Java—基础语法1. Java概述Java是一门面向对象编程语言,不仅吸收了C++语言的各种优点,还摒弃了C++里难以理解的多继承、指针等概念,因此Java语言具有功能强大和简单易用两个特征。应用领域:Java语言主要应用在互联网程序的开发领域。常见的互联网程序比如天猫、京东、物流系统、网银系统等,以及服务器后原创 2020-05-23 11:44:25 · 453 阅读 · 0 评论 -
Day100 Java总结
Java基础基础:Java基础语法,Java面向对象 中级:容器,异常,IO流,线程,反射,拷贝,常用API,注解,网络编程 高级:设计模式,多线程高级,JVM优化,JDK新特性 其他:IDEA,EclipseJavaWeb前端:HTML,CSS,JavaScript,BootStrap,JQuery,Vue,webpack 服务:Servlet(Request,Response),三层架构,Ajax,Tomcat,Cookie,Session,Filter,Listener,JSP 数原创 2020-05-22 23:52:22 · 182 阅读 · 0 评论 -
Day99 注解
注解概念:说明程序的。给计算机看的 注释:用文字描述程序的。给程序员看的 定义:注解(Annotation),也叫元数据。一种代码级别的说明。它是JDK1.5及以后版本引入的一个特性,与类、接口、枚举是在同一个层次。它可以声明在包、类、字段、方法、局部变量、方法参数等的前面,用来对这些元素进行说明,注释。 概念描述: JDK1.5之后的新特性 说明程序的 使用注解:@注解名称 作用分类: ①编写文档:通过代码里标识的注解生成文档【生成文档doc文档】 ②代码分析...原创 2020-05-21 19:03:45 · 292 阅读 · 0 评论 -
Day98 项目实战4 品牌新增
请求处理过程前端加载过程: 输入地址,先经过hosts文件进行解析:http://manage.leyou.com/#/item/brand——>http://127.0.0.1:80/#/item/brand 通过ip找到服务器地址(本机),进入80端口,被nginx监听捕获,转到http://127.0.0.1:9001(在Nginx中已设置) 再被webpack 监听捕获,到leyou-manage-web项目,根据#后面的路由路径/item/brand,找到页面,逐次响应回去给.原创 2020-05-19 22:58:00 · 168 阅读 · 0 评论 -
Day97 MySQL高级 数据库优化
关系数据库是用二维表来保存数据的。数据库的三范式是什么?概念:设计数据库时,需要遵循的一些规范。要遵循后边的范式要求,必须先遵循前边的所有范式要求要遵循后边的范式要求,必须先遵循前边种范式呈递次规范,越高的范式数据库冗余越小。目前关系数据库有六种范式。 第一范式:强调的是列的原子性,即数据库表的每一列都是不可分割的原子数据项。 第二范式:要求实体的属性完全依赖于主关键字。所谓完全依赖是指不能存在仅依赖主关键字一部分的属性。 第三范式:任何非主属性不依赖于其它非主属性。不符合第一范式符原创 2020-05-18 15:27:22 · 155 阅读 · 0 评论 -
Day96 项目实战3 品牌查询
思路一样,先通过前端看请求路径和参数,然后开发后台提供数据接口通过数据库表建立实体类 参照前端页面的控制台编写controller 编写Service 建立通用Mapper接口简化开发 测试原创 2020-05-17 16:43:34 · 160 阅读 · 0 评论 -
计算机网络 总结
第一章 概述(5分)计算机网络的定义与类别定义:计算机网络是一些互相连接的、自治的计算机的集合。从网络的作用范围进行分类:广域网 WAN,局域网 LAN,城域网 MAN,个人区域网 PAN从网络的使用者进行分类:公用网,专用网计算机网络的性能指标速率:速率的单位是b/s,速率往往是指额定速率或标称速率。带宽:“带宽”是数字信道所能传送的“最高数据率”的同义语,单位是“比特每秒”,或 b/s (bit/s)。吞吐量:表示在单位时间内通过某个网络(或信道、接口)的数据量。吞吐量受网原创 2020-05-16 19:18:25 · 472 阅读 · 1 评论