- 博客(26)
- 资源 (1)
- 收藏
- 关注
原创 计算机网络面试题
物理层主要定义物理设备标准,主要作用是传输Bit流,网卡工作这这层中,数模转换与模数转换数据链路层,在传输bit流的过程中会产生错传、数据传输不完整的可能,因此数据链路层定义如何格式化数据,以及如何控制对物理介质的访问,本层将bit数据组成了帧,其中交换机在本层工作,对帧解码,并根据帧中的信息把消息发送到正确的接收方网络层,·主要功能将网络地址翻译成对应的物理地址,路由器数据网络层,此层的数据称为数据包,此层的协议为IP协议,路由器属于本层传输层,传输层解决了主机间的传输,并且解决了传输质量..
2021-08-30 18:23:16 317
原创 Sychronized锁升降级、偏向锁、轻量级锁
Sychronized简介首先synchronized 代码块是由一对儿 monitorenter/monitorexit 指令实现的,Monitor 对象是同步的基本实现在Java6中,Monitor的实现完全是依靠操作系统的互斥锁,因为需要进行用户态到内核态的切换,所以同步操作是一个无差别的重量级操作。近年来的JDK中,JVM对此进行了改进,提供了三种不同的Monitor实现,也就是通常所说的三种不同的锁:偏斜锁(偏向锁 Biased Locking)、轻量级锁和重量级锁,大大改进了性能。首先来
2021-08-01 00:15:50 625
原创 JAVA基础题-String、Stringbuilder、Stringbuffer的区别
1、对JAVA平台的理解Java 本身是一种面向对象的语言,最显著的特性有两个方面,一是所谓的“书写一次,到处运行”(Write once, run anywhere),能够非常容易地获得跨平台能力;另外就是垃圾收集(GC, Garbage Collection),Java 通过垃圾收集器(Garbage Collector)回收分配内存,大部分情况下,程序员不需要自己操心内存的分配和回收。我们日常会接触到 JRE(Java Runtime Environment)或者 JDK(Java Develop
2021-07-22 11:01:51 248
原创 语法分析分析器的实现
语法分析分析器的实现**抽象语法树的继承关系ASTNode:抽象语法树base、Factor:因子*—*所谓因子就是操作符两边可以计算的东西,变量或者数字都行、Expr:表达式stmt:语句、Block:语句块、IfStmt:if语句、AssignStmt:赋值语句、DeclareStmt:声明语句、ForStmt:for循环语句、FunctionDeclareStmt:声明函数语句最简语法分析语法分析器(parser):根据语法规则,将符合(词法单元,lexeme,token),
2021-05-30 18:03:41 4573
原创 TCP的三次握手与四次挥手
网络基础知识OSI七层协议物理层主要定义物理设备标准,主要作用是传输Bit流,网卡工作这这层中数据链路层,在传输bit流的过程中会产生错传、数据传输不完整的可能,因此数据链路层定义如何格式化数据,以及如何控制对物理介质的访问,本层将bit数据组成了帧,其中交换机在本层工作,对帧解码,并根据帧中的信息把消息发送到正确的接收方网络层,主要功能将网络地址翻译成对应的物理地址,路由器数据网络层,此层的数据称为数据包,此层的协议为IP协议传输层,传输层解决了主机间的传输,并且解决了传输质量,协议有
2021-05-27 21:05:33 103
原创 实现简易版Spring的IOC容器
一、了解IOC依赖一个类似工厂的IOC容器将对象的创建、依赖关系的管理以及生命周期交由IOC容器管理降低系统在实现上的复杂性和耦合度,易于扩展,满足开闭原则依赖注入DI,上层控制下层依赖注入的方式SetterInterfaceConstructorAnnotationIOC容器优势避免在各处使用new来创建类,并且可以做到统一维护创建实例的时候不需要了解其中的细节反射+工厂模式的合体,满足开闭原则二、IOC容器的实现需要实现的点:提取标记对象指
2021-05-11 18:13:29 259 2
原创 算法hash表、并查集、hash一致性
题目一认识hash函数与hash表*hash函数* (相同输入相同输出,不同输入均匀分布)如何用一个哈希函数做出1000个哈希函数来将一个hash函数返回结果的前八位与后八位拆分为两个hash函数然后通过h1+1h2做出第三个,h1+2h2做出第四个一次改变系数直到第一千个hash表经典结构假如放入A,7,将key值A通过hashcode计算出一个码,然后取模hash表长度,得到具体位置,这里假设为10,所以A,7挂载到10位置,如果此时再来一个C,5,取得的位置也是10,那么会先判断ke
2021-04-23 08:37:49 156
原创 算法二叉树相关题目(三)
题目一实现二叉树的先序、中序、后序遍历,包括递归方式和非递归方式递归方式实现 //先序遍历 public static void preOrderRecur(Node head){ if (head == null){ return; } System.out.println(head.value + " "); preOrderRecur(head.left); preOrderRec
2021-04-12 15:32:13 110
原创 编译原理学习--词法分析器实现(java)
编译原理学习一、词法分析器词法分析过程将字符流转成符号流。输入:源代码(字符流) 输出:符号流词法分析过程类似于我们中学语文学习的[词性标注],每个符号是一个元组,应该至少包括一个字符串和一个词性描述。符号(词法单元)词法分析器的结果是一个个的符号,英文Token,也叫词法单元数学上符号是一个元组,例如整数123我们可以表示为(123,Integer)符号类型Keyword(关键字)Variable(变量)Operator(操作符)Bracket(括号)Strin
2021-04-02 20:07:13 4035
原创 Synchronized详解
Synchronized关键字作用,官方解释通俗来说:能够保证在同一时刻最多只有一个现场执行该段代码,以达到保证并发安全的效果。Synchronized关键字两种用法对象锁包括方法锁(默认锁对象为this当前实例对象)和同步代码块锁(自己指定锁对象)类锁指synchronized修饰静态的方法或指定锁为Class对象对象锁代码实践代码块形式:手动指定锁对象public class DisappearRequest2 implements Runnable{ static Di
2021-03-24 15:43:34 164 1
原创 算法链表相关题目(二)
题目零判断一个链表是否为回文结构给定一个链表的头节点head,请判断该链表是否为回文结构。例如:1 -> 2 -> 1,返回true。1 -> 2 -> 2 -> 1,返回true。15 -> 6 ->15,返回true。1 ->2->3,返回false。进阶:如果链表长度为N,时间复杂度达到O(N),额外空间复杂度达到O(1)。解法1:使用栈 解法2:使用快慢指针如果是偶数个节点,走到中间两个的前一个,在进行两边比较,走到空指针停。
2021-03-21 15:13:40 80
原创 算法数组相关题目(一)
题目0:给定一个数组,求如果排序之后,相邻两数的最大差值,要求时间复杂度0(N),且要求不能用非基于比较的排序。(常考)思路:借用桶的概念,第一步,准备桶,如果数组中有n个数,我们就准备N+1个桶,遍历整个数组找到最小值和最大值,如果最小值和最大值相等,说明差值为0,如果不等,最小值放在0号桶,最大值放到N号桶,将最小值到最大值的范围里将桶分为N+1份 ,举例:数组有9个数,最大值99,最小值0,准备10个桶,所以分为09,1019,…7989,9099这10个范围,中间的数属于哪个范围就放哪个桶
2021-03-16 21:42:31 211 1
原创 Redis缓存穿透,缓存击穿,缓存雪崩
redis数据类型redis过期策略Redis会把设置了过期时间的key放入一个独立的字典里,在key过期时并不会立刻删除它。Redis会通过如下两种策略,来删除过期的Key:惰性删除客户端访问某个Key时,Redis会检查该Key是否过期,若过期则删除。定期扫描Redis默认每秒执行10次过期扫描(配置hz选项),扫描策略如下:从过期字典中随机选择20个key;删除20个key中已过期的key;如果过期的key的比例超过25%,则重复步骤1;redis淘汰策
2021-03-15 20:21:30 5411
原创 网站加载性能优化
网站优化主要来说就是加缓存来用空间换时间,方案有以下三种本地缓存将数据库缓存在应用服务器上,性能最好常用缓存工具:Ehcache、Guava、Caffeine等。分布式缓存将数据缓存在NoSQL数据库上,跨服务器常用缓存工具:MemCache、Redis等多级缓存一级缓存(本地缓存)>二级缓存(分布式缓存)>DB避免缓存雪崩(缓存失效,大量请求直达DB),提高系统的可用性。本地缓存配置#caffeinecaffeine.posts.max-si
2021-03-13 23:44:34 6865
原创 Redis高级类型(统计全站访问量,日活跃用户)
HyperLogLog(超级日志)(统计访客)采用一种基数算法,用于完成独立总数的统计占据空间小,无论统计多少个数据,只占12K的内存空间不精确的统计算法,标准误差为0.81%Bitmap(位图)不是一种独立的数据结构,实际上就是字符串支持按位存取数据,可以将其看成是byte数组适合存储大量的连续的数据的布尔值两种数据结构都适合用来统计网站运营数据,节约内存。HyperLogLog测试使用HyperLogLog来统计200000次访问去重/** *..
2021-03-12 11:37:01 8806
原创 ElasticSearch搜索引擎入门与实战
es简介分布式的、Restful风格的搜索引擎。支持对各种类型的数据的检索搜索速度快,可以提供实时的搜索服务便于水平扩展,每秒可以处理PB级海量数据基本术语索引、类型、文档、字段 —对应 数据库 表 行 列集群、节点、分片、副本在es6.x以后,类型 将被废弃 索引直接与关系型数据库的表对应项目使用的是springboot2.1.5,所以es需要使用6.4.3安装es中文分词插件SpringBoot整合Elasticsearch引入依赖spring-boot-st
2021-03-12 11:33:15 8720
原创 Kafka学习与实战
1,阻塞队列BlockingQueue(Java核心API的接口)解决线程通信的问题阻塞方法:put(存数据)、take(拿数据)。生产者消费者模式生产者:产生数据的线程。消费者:使用数据的线程。实现类ArrayBlockingQueueLinkedlockingQueuePriorityBlockingQueue、SynchronousQueue、DelayQueue等。2.kafkakafka是一个分布式的流媒体平台应用:消息系统、日志收集、用户行为追踪、
2021-03-12 10:05:08 9402 7
原创 kafka报错解决
今天启动kafka突然报Failed to start bean ‘org.springframework.kafka.config.internalKafkaListenerEndpointRegistry’; nested exception is org.apache.kafka.common.errors.TimeoutException: Timeout expired while fetching topic metadata错误排查之后并未发现代码问题,kafka启动也没有报错,尝试删除ka
2021-03-09 19:23:22 9555
原创 java基础-抽象类和接口-swing界面编程-事件处理机制
添加摘要 **本周学习了抽象类和接口、swing界面编程和事件处理机制,故而写一遍总结,作为对之前学习的知识的梳理和复习。**抽象类:抽象类是一个通过抽取N个类之间的共性而组成的一个类,它只能作为其他类的父类,不能直接实例化使用。编写一个计算多边形面积和周长的类,首先可以创建一个抽象的父类(它拥有基本的属性和方法)public abstract cla...
2021-03-09 14:50:56 7986
原创 Kafka入门(windows环境)
1. kafka简介Kafka 一个分布式发布消息队列系统,可以处理大量数据,并使消息从一个端点传送到另一个端点,适合离线和在线的消息消费,,数据保留在磁盘上(其他很多队列是基于内存模型的)2. kafka下载地址可以选择官方下载地址(不过比较慢):官方下载地址清华镜像地址:清华镜像地址3. zookeeper启动因为kafka启动需要zookeeper的支持,所以先启动zookeeper,我们选择启动Kafka文件自带的zookeeper。在解压完成后的目录下按住shift加上鼠标右键选择
2020-11-19 17:52:23 8328
原创 JAVA注解的使用
JDK中预定义的一些注解@Oerride:检测被该注解标注的方法是否是继承父类(接口)的@Deprecated:标记一个已经过时的方法@SuppressWarnings:压制警告自定义注解格式:元注解public @interface 注解名称{}本质: 注解本质上就是一个接口该接口默认继承Annotation接口属性: 接口中的抽象方法要求:属性的返回值类型 基本数据类型 String 枚举
2020-08-13 17:47:19 8028
原创 复习正则表达式
正则表达式是对字符串(包括普通字符(例如,a 到 z 之间的字母)和特殊字符(称为“元字符”))操作的一种逻辑公式,就是用事先定义好的一些特定字符、及这些特定字符的组合,组成一个“规则字符串”,这个“规则字符串”用来表达对字符串的一种过滤逻辑。正则表达式是一种文本模式,该模式描述在搜索文本时要匹配的一个或多个字符串。正则表达式语法任何一个字符都可以是正则表达式的字符[abc] 表示一个字符,a或者b或者c(b|d|rt) 表示一组字符 b或者的或者rt[a-z] 表示任意一个小写字母
2020-08-10 16:50:12 8115
原创 复习JAVA高级部分
复习JAVA高级部分线程池的创建及使用Executors类提供了4种不同的线程池:newCachedThreadPool:用来创建一个可以无限扩大的线程池,适用于负载较轻的场景,执行短期异步任务。newFixedThreadPool:创建一个固定大小的线程池,因为采用无界的阻塞队列,所以实际线程数量永远不会变化,适用于负载较重的场景,对当前线程数量进行限制。newScheduledThreadPool:单线程的线程池,保证执行顺序。newSingleThreadExecutor:定时线程池,
2020-08-07 21:49:28 8273
原创 mysql连接使用jdbcConfig.properties文件替代直接写入时发生错误。
mysql连接使用jdbcConfig.properties文件替代直接写入时发生错误。报错代码如下:org.apache.ibatis.exceptions.PersistenceException: ### Error querying database. Cause: java.sql.SQLNonTransientConnectionException: Cannot load c...
2020-02-19 21:25:34 1775
原创 用java打印空白金字塔
打印一个空白金字塔如图代码如下:public class jinzita { public static void main(String[] args) { Scanner sc = new Scanner(System.in); System.out.println("请输入需要打印的层数:"); int n=sc.nextInt(); int i,j,k;...
2019-05-06 13:20:25 8173
原创 JAVA环境变量配置
首先下载java的jdk点这里跳转,安装完成后进行系统环境的配置,右键单击计算机进入属性>高级系统设置>环境变量在环境变量里的系统变量新建变量“JAVA_HOME”,变量值为"C:\Program Files\Java\jdk1.8.0_162"(jdk的安装路径)新建系统变量"CLASSPATH",变量值为".;%JAVA_HOME%\lib;%JAVA_HOME%\lib...
2019-03-13 15:52:03 7498
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人