- 博客(26)
- 资源 (1)
- 收藏
- 关注
原创 计算机网络面试题
物理层主要定义物理设备标准,主要作用是传输Bit流,网卡工作这这层中,数模转换与模数转换 数据链路层,在传输bit流的过程中会产生错传、数据传输不完整的可能,因此数据链路层定义如何格式化数据,以及如何控制对物理介质的访问,本层将bit数据组成了帧,其中交换机在本层工作,对帧解码,并根据帧中的信息把消息发送到正确的接收方 网络层,·主要功能将网络地址翻译成对应的物理地址,路由器数据网络层,此层的数据称为数据包,此层的协议为IP协议,路由器属于本层 传输层,传输层解决了主机间的传输,并且解决了传输质量..
2021-08-30 18:23:16
482
原创 Sychronized锁升降级、偏向锁、轻量级锁
Sychronized简介 首先synchronized 代码块是由一对儿 monitorenter/monitorexit 指令实现的,Monitor 对象是同步的基本实现 在Java6中,Monitor的实现完全是依靠操作系统的互斥锁,因为需要进行用户态到内核态的切换,所以同步操作是一个无差别的重量级操作。 近年来的JDK中,JVM对此进行了改进,提供了三种不同的Monitor实现,也就是通常所说的三种不同的锁:偏斜锁(偏向锁 Biased Locking)、轻量级锁和重量级锁,大大改进了性能。 首先来
2021-08-01 00:15:50
730
原创 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
320
原创 语法分析分析器的实现
语法分析分析器的实现** 抽象语法树的继承关系 ASTNode:抽象语法树base、Factor:因子*—*所谓因子就是操作符两边可以计算的东西,变量或者数字都行、Expr:表达式 stmt:语句、Block:语句块、IfStmt:if语句、AssignStmt:赋值语句、DeclareStmt:声明语句、ForStmt:for循环语句、FunctionDeclareStmt:声明函数语句 最简语法分析 语法分析器(parser):根据语法规则,将符合(词法单元,lexeme,token),
2021-05-30 18:03:41
4854
原创 TCP的三次握手与四次挥手
网络基础知识 OSI七层协议 物理层主要定义物理设备标准,主要作用是传输Bit流,网卡工作这这层中 数据链路层,在传输bit流的过程中会产生错传、数据传输不完整的可能,因此数据链路层定义如何格式化数据,以及如何控制对物理介质的访问,本层将bit数据组成了帧,其中交换机在本层工作,对帧解码,并根据帧中的信息把消息发送到正确的接收方 网络层,主要功能将网络地址翻译成对应的物理地址,路由器数据网络层,此层的数据称为数据包,此层的协议为IP协议 传输层,传输层解决了主机间的传输,并且解决了传输质量,协议有
2021-05-27 21:05:33
178
原创 实现简易版Spring的IOC容器
一、了解IOC 依赖一个类似工厂的IOC容器 将对象的创建、依赖关系的管理以及生命周期交由IOC容器管理 降低系统在实现上的复杂性和耦合度,易于扩展,满足开闭原则 依赖注入DI,上层控制下层 依赖注入的方式 Setter Interface Constructor Annotation IOC容器优势 避免在各处使用new来创建类,并且可以做到统一维护 创建实例的时候不需要了解其中的细节 反射+工厂模式的合体,满足开闭原则 二、IOC容器的实现 需要实现的点: 提取标记对象 指
2021-05-11 18:13:29
363
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
244
原创 算法二叉树相关题目(三)
题目一 实现二叉树的先序、中序、后序遍历,包括递归方式和非递归方式 递归方式实现 //先序遍历 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
172
原创 编译原理学习--词法分析器实现(java)
编译原理学习 一、词法分析器 词法分析过程 将字符流转成符号流。输入:源代码(字符流) 输出:符号流 词法分析过程类似于我们中学语文学习的[词性标注],每个符号是一个元组,应该至少包括一个字符串和一个词性描述。 符号(词法单元) 词法分析器的结果是一个个的符号,英文Token,也叫词法单元 数学上符号是一个元组,例如整数123我们可以表示为(123,Integer) 符号类型 Keyword(关键字) Variable(变量) Operator(操作符) Bracket(括号) Strin
2021-04-02 20:07:13
4294
原创 Synchronized详解
Synchronized关键字作用,官方解释 通俗来说:能够保证在同一时刻最多只有一个现场执行该段代码,以达到保证并发安全的效果。 Synchronized关键字两种用法 对象锁 包括方法锁(默认锁对象为this当前实例对象)和同步代码块锁(自己指定锁对象) 类锁 指synchronized修饰静态的方法或指定锁为Class对象 对象锁代码实践 代码块形式:手动指定锁对象 public class DisappearRequest2 implements Runnable{ static Di
2021-03-24 15:43:34
238
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
144
原创 算法数组相关题目(一)
题目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
316
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
5467
原创 网站加载性能优化
网站优化主要来说就是加缓存来用空间换时间,方案有以下三种 本地缓存 将数据库缓存在应用服务器上,性能最好 常用缓存工具:Ehcache、Guava、Caffeine等。 分布式缓存 将数据缓存在NoSQL数据库上,跨服务器 常用缓存工具:MemCache、Redis等 多级缓存 一级缓存(本地缓存)>二级缓存(分布式缓存)>DB 避免缓存雪崩(缓存失效,大量请求直达DB),提高系统的可用性。 本地缓存配置 #caffeine caffeine.posts.max-si
2021-03-13 23:44:34
6942
原创 Redis高级类型(统计全站访问量,日活跃用户)
HyperLogLog(超级日志)(统计访客) 采用一种基数算法,用于完成独立总数的统计 占据空间小,无论统计多少个数据,只占12K的内存空间 不精确的统计算法,标准误差为0.81% Bitmap(位图) 不是一种独立的数据结构,实际上就是字符串 支持按位存取数据,可以将其看成是byte数组 适合存储大量的连续的数据的布尔值 两种数据结构都适合用来统计网站运营数据,节约内存。 HyperLogLog 测试使用HyperLogLog来统计200000次访问去重 /** *..
2021-03-12 11:37:01
9009
原创 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
8826
原创 Kafka学习与实战
1,阻塞队列 BlockingQueue(Java核心API的接口) 解决线程通信的问题 阻塞方法:put(存数据)、take(拿数据)。 生产者消费者模式 生产者:产生数据的线程。 消费者:使用数据的线程。 实现类 ArrayBlockingQueue LinkedlockingQueue PriorityBlockingQueue、SynchronousQueue、DelayQueue等。 2.kafka kafka是一个分布式的流媒体平台 应用:消息系统、日志收集、用户行为追踪、
2021-03-12 10:05:08
9501
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
10032
原创 java基础-抽象类和接口-swing界面编程-事件处理机制
添加摘要 **本周学习了抽象类和接口、swing界面编程和事件处理机制,故而写一遍总结,作为对之前学习的知识的梳理和复习。** 抽象类: 抽象类是一个通过抽取N个类之间的共性而组成的一个类,它只能作为其他类的父类,不能直接实例化使用。编写一个计算多边形面积和周长的类,首先可以创建一个抽象的父类(它拥有基本的属性和方法) public abstract cla...
2021-03-09 14:50:56
8106
原创 Kafka入门(windows环境)
1. kafka简介 Kafka 一个分布式发布消息队列系统,可以处理大量数据,并使消息从一个端点传送到另一个端点,适合离线和在线的消息消费,,数据保留在磁盘上(其他很多队列是基于内存模型的) 2. kafka下载地址 可以选择官方下载地址(不过比较慢):官方下载地址 清华镜像地址:清华镜像地址 3. zookeeper启动 因为kafka启动需要zookeeper的支持,所以先启动zookeeper,我们选择启动Kafka文件自带的zookeeper。 在解压完成后的目录下按住shift加上鼠标右键选择
2020-11-19 17:52:23
8430
原创 JAVA注解的使用
JDK中预定义的一些注解 @Oerride:检测被该注解标注的方法是否是继承父类(接口)的 @Deprecated:标记一个已经过时的方法 @SuppressWarnings:压制警告 自定义注解 格式: 元注解 public @interface 注解名称{} 本质: 注解本质上就是一个接口该接口默认继承Annotation接口 属性: 接口中的抽象方法 要求: 属性的返回值类型 基本数据类型 String 枚举
2020-08-13 17:47:19
8085
原创 复习正则表达式
正则表达式是对字符串(包括普通字符(例如,a 到 z 之间的字母)和特殊字符(称为“元字符”))操作的一种逻辑公式,就是用事先定义好的一些特定字符、及这些特定字符的组合,组成一个“规则字符串”,这个“规则字符串”用来表达对字符串的一种过滤逻辑。正则表达式是一种文本模式,该模式描述在搜索文本时要匹配的一个或多个字符串。 正则表达式语法 任何一个字符都可以是正则表达式的字符 [abc] 表示一个字符,a或者b或者c (b|d|rt) 表示一组字符 b或者的或者rt [a-z] 表示任意一个小写字母
2020-08-10 16:50:12
8200
原创 复习JAVA高级部分
复习JAVA高级部分 线程池的创建及使用 Executors类提供了4种不同的线程池: newCachedThreadPool:用来创建一个可以无限扩大的线程池,适用于负载较轻的场景,执行短期异步任务。 newFixedThreadPool:创建一个固定大小的线程池,因为采用无界的阻塞队列,所以实际线程数量永远不会变化,适用于负载较重的场景,对当前线程数量进行限制。 newScheduledThreadPool:单线程的线程池,保证执行顺序。 newSingleThreadExecutor:定时线程池,
2020-08-07 21:49:28
8358
原创 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
1851
原创 用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
8272
原创 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
7554
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅