- 博客(43)
- 收藏
- 关注
原创 【Kafka】Java kafka 入门示例
KafkaProducerDemopackage com.pcy.kafkastream;import org.apache.kafka.clients.producer.KafkaProducer;import org.apache.kafka.clients.producer.ProducerConfig;import org.apache.kafka.clients.producer.ProducerRecord;import org.apache.kafka.common.seriali
2021-04-08 20:29:57 362
原创 【gperftools】使用gperftools分析
文章目录使用gperftools分析配置环境Demo使用gperftools分析配置环境perftools:http://code.google.com/p/gperftools/downloads/listlibunwind:http://download.savannah.gnu.org/releases/libunwind/64位操作系统需要安装libunwind,官方推荐版本是libunwind-0.99-beta安装过程:./configuremakemake install
2020-09-13 17:40:32 562
原创 【计算机网络】常见定时器实现方式比较
文章目录常见定时器实现方式比较采用sleep函数采用timerfd + epoll采用链表采用时间轮采用时间堆总结常见定时器实现方式比较采用sleep函数sleep函数在实现时用了SIGALRM信号机制, 在多线程程序中处理信号是个相当麻烦的事情,应当尽量避免原因:如果要处理多个定时任务,就要不断触发SIGALRM信号,并在信号处理函数中执行到期任务在多线程环境下,产生的信号是传递给整个进程的,一般而言,所有线程都有机会收到这个信号,要做特殊的信号阻塞处理、考虑线程安全问题SIGALRM信号
2020-09-13 17:38:40 919
原创 【Protobuf】pb跨语言传输文件签名验证
文章目录pb跨语言传输文件签名验证结论pb2语法,pb2编译pb3语法,pb3编译pb2语法,pb3编译pb跨语言传输文件签名验证结论pb2语法,pb2编译C++、Java、Python二进制文件签名一致,同为Apb3语法,pb3编译C++、Java、Python、Go二进制文件签名一致,同为Bpb2语法,pb3编译C++、Java、Python二进制文件签名一致,为AGo二进制文件签名为B所有文件均可反序列化成功,正确获取数据Go操作C++Java
2020-08-26 18:48:44 639
原创 【Protobuf】pb协议中enum的坑
pb协议中enum的坑问题背景在客户端和服务端使用pb协议进行数据传输时,如果客户端对proto文件进行更新,而服务端没有及时更新,则会出现服务端进行正常反序列化获取到错误数据的情况,并且不会进行错误提示。测试内容定义一个proto文件,message里定义一个enum类型,验证以下内容假设enum里定义了A B C,生成pb协议文件,程序A使用这份pb文件,然后设置enum字段的值,然后序列化后成一份二进制流,把这个二进制流写到文件里把proto文件里的enum的定义改成A B,生成pb协议
2020-07-29 00:00:40 7400
原创 【Protobuf】pb中类型字段不匹配问题
文章目录pb中类型字段不匹配问题背景结论原始数据测试1测试2pb中类型字段不匹配问题背景客户端更新proto,新增message字段,探索新增字段的数据类型和标签对服务端反序列化数据的影响结论新增字段数据类型与服务端相同标签数据类型:不同:无法获取数据,但是不报错相同:能够获取到数据,但数据不是真正要获取的pb中序列化和反序列化数据时,对message字段只关注它的数据类型和标签,不关注定义的名称原始数据demo2_1.protosyntax = "proto2";mes
2020-07-28 23:53:09 1702 2
原创 【Protobuf】Protobuf入门
文章目录Protobuf入门简介序列化和反序列化XML、JSON和ProtoBufProtoBuf APIDemoProtobuf入门简介Protobuf全称是Google Protocol Buffer,是一种高效轻便的结构化数据存储方式,可用于(数据)通信协议、数据存储等。也可以理解为结构化数据的序列化方法,可简单类比为XML(这里主要是指在数据通信和数据存储这些应用场景中序列化方面的类比,但个人认为XML作为一种扩展标记语言和Protobuf还是有着本质区别的),其具有以下特点:语言无关
2020-07-24 21:53:56 337
原创 【数据结构】二叉树常用操作(Java实现)
文章目录二叉树二叉树的定义二叉树的实现二叉树的操作遍历先根遍历(Pre Order)中根遍历(In Order)后根遍历(Post Order)层次遍历(Level Traverse)常用操作创建清空判断是否为空求最大深度(高度)求最小深度求所有节点数求叶子节点个数求第k层节点数返回某节点的父亲节点查找节点判断两棵二叉树是否相等判断两棵二叉树是否镜像判断是否为完全二叉树翻转二叉树(镜像二叉树)判断是否是二叉查找树判断是否是平衡二叉树二叉树二叉树的定义二叉树(Binary Tree)二叉树(Binar
2020-06-27 09:13:44 882
原创 【数据结构】图的常用操作(Java实现)
文章目录图算法图的定义和常用术语图的实现邻接矩阵邻接表图的遍历深度优先搜索算法广度优先搜索算法最短路径Dijkstra算法图算法图的定义和常用术语图是一系列顶点(结点)和描述顶点之间的关系边(弧)组成。图是数据元素的集合,这些数据元素相互连接形成网络。其形式化定义为:G=(V,E)。其中,G表示图,V是顶点的集合,E是边或弧的集合。并且E可以表示为:E=(Vi,Vj),表示顶点Vi和Vj之间有边或弧相连。顶点集:图中具有相同特性的数据元素的集合;边(弧):边是一对顶点间的路径,通常带箭头的
2020-06-27 09:13:33 1152 1
原创 【数据结构】常见数据结构简述
文章目录基本数据结构数组链表跳表栈队列树平衡二叉树堆散列表图邻接矩阵邻接表逆邻接表十字链表基本数据结构常用的数据结构可根据数据访问的特点分为线性结构和非线性结构。线性结构包括常见的链表、栈、队列等,非线性结构包括树、图等。数组数组可以说是最基本最常见的数据结构。数组一般用来存储相同类型的数据,可通过数组名和下标进行数据的访问和更新。数组中元素的存储是按照先后顺序进行的,同时在内存中也是按照这个顺序进行连续存放。数组相邻元素之间的内存地址的间隔一般就是数组数据类型的大小。链表链表相较于数组
2020-06-26 11:57:21 1072 1
原创 【数据结构】排序算法(Java实现)
文章目录排序算法排序算法说明算法复杂度总结冒泡排序(Bubble Sort)选择排序(Selection Sort)插入排序(Insertion Sort)希尔排序(Shell Sort)归并排序(Merge Sort)快速排序(Quick Sort)堆排序(Heap Sort)排序算法排序算法说明排序的定义对一序列对象根据某个关键字进行排序。术语说明稳定 :如果a原本在b前面,并且a=b,则排序之后a仍然在b的前面;不稳定 :如果a原本在b的前面,而a=b,则排序之后a可能会出现在b的后面
2020-06-26 11:36:35 528
原创 【数据结构】查找算法(Java实现)
文章目录查找算法查找算法说明顺序查找(Sequence Search)二分查找(Binary Search)插值查找(Insert Search)查找算法查找算法说明查找定义:根据给定的某个值,在查找表中确定一个其关键字等于给定值的数据元素(或记录)。查找算法分类:静态查找和动态查找注:静态或者动态都是针对查找表而言的。动态表指查找表中有删除和插入操作的表。无序查找和有序查找无序查找:被查找数列有序无序均可有序查找:被查找数列必须为有序数列平均查找长度(Average Se
2020-06-26 11:35:14 506
原创 【Java】Lambda、函数式接口和Stream详解
文章目录Lambda、函数式接口和StreamLambda 表达式函数式接口Stream APIofemptyconcatmaxminfindFirstfindAnycountpeekforEachforEachOrderedlimitskipdistinctsortedfiltermapmapToIntmapToLongmapToDoubleflatMapflatMapToIntflatMapToLongflatMapToDoublecollectiontoArrayreduce并行 StreamLam
2020-06-26 11:33:01 883
原创 【Java】设计模式S.O.L.I.D
文章目录Java设计模式设计原则S.O.L.I.D1. 单一责任原则2. 开放封闭原则3. 里氏替换原则4. 接口分离原则5. 依赖倒置原则其他常见原则1. 迪米特法则2. 合成复用原则3. 共同封闭原则4. 稳定抽象原则5. 稳定依赖原则Java设计模式设计原则S.O.L.I.D简写全拼中文翻译SRPThe Single Responsibility Principle单一责任原则OCPThe Open Closed Principle开放封闭原则LSP
2020-06-26 11:32:54 400
原创 【Java】Java异常处理机制
文章目录Java异常Java异常简介Java异常架构ThrowableError(错误)Exception(异常)运行时异常编译时异常受检异常与非受检异常异常关键字异常处理机制声明异常抛出异常捕获异常Java异常常见面试题Error 和 Exception 区别?运行时异常和一般异常(受检异常)区别是什么?JVM 是如何处理异常的?throw 和 throws ?final、finally、finalize ?NoClassDefFoundError 和 ClassNotFoundException ?如果
2020-06-26 11:30:28 918
原创 【Java】面试必备,JVM就这些
文章目录Java虚拟机JVM 的主要组成部分运行时数据区域程序计数器虚拟机栈本地方法栈堆堆和栈的区别方法区运行时常量池直接内存垃圾收集内存泄漏垃圾回收机制判断一个对象是否可被回收1. 引用计数算法2. 可达性分析算法类的卸载finalize()函数引用类型1. 强引用2. 软引用3. 弱引用4. 虚引用垃圾收集算法标记 - 清除复制标记 - 整理分代收集垃圾收集器分代垃圾回收器的工作过程内存分配与回收策略Minor GC 和 Full GC内存分配策略1. 对象优先在 Eden 分配2. 大对象直接进入老年
2020-06-26 11:29:22 177
原创 【Java】最全Java多线程面试指北
文章目录Java多线程基础知识并发编程的优缺点并发编程三要素出现线程安全问题的原因怎么保证多线程的运行安全并行和并发多线程的优缺点线程和进程进程线程进程与线程的区别上下文切换守护线程和用户线程如何在 Windows 和 Linux 上查找哪个线程cpu利用率最高?创建线程的四种方式继承 Thread 类实现 Runnable 接口实现 Callable 接口使用 Executors 创建线程池Runnable 和 Callable 区别run()和 start()区别Callable 和 Future?Fu
2020-06-26 11:28:07 1487
原创 【Java】Java集合,掌握这些就够了
文章目录Java集合集合概述集合分类底层数据结构线程安全的集合类快速失败(fail-fast)和安全失败(fail-safe)集合和数组的区别使用集合框架的好处确保一个集合不能被修改comparable 和 comparatorCollection 和 CollectionsCollection接口迭代器 IteratorList遍历方式ArrayList 的优缺点数组和 List 的转换ArrayList 和 LinkedList 区别transientSetHashSet 的实现原理HashSet 如何
2020-06-26 11:25:47 258
原创 【Java】身为一名Java程序员必备的基础知识
文章目录Java基础数据类型基本类型包装类型缓存池字符串(String)概览String 的不可变性:String、StringBuffer 和 StringBuilderString Pool运算参数传递关键字finalstaticObject 中的方法概览equals()hashCode()toString()clone()三大特性封装继承多态继承访问权限抽象类与接口super重写与重载反射概述基本运用获得 Class 对象判断是否为某个类的实例创建实例获取类的成员变量(字段)获取方法获取构造器信息获取
2020-06-26 11:23:19 441
原创 【Elasticsearch】Aggregation聚合函数
文章目录Elasticsearch:Aggregation什么是Aggregation(聚合函数)桶(Buckets)指标(Metrics)结合起来示例简单查询复杂查询Elasticsearch:Aggregation参考文档:https://www.elastic.co/guide/en/elasticsearch/guide/current/aggregations.html什么是Aggregation(聚合函数)ES提供的聚合功能可以用来进行简单的数据分析,ES中的聚合上可以分为下面两类:
2020-06-26 11:15:32 979
原创 【ElasticSearch】高亮搜索
文章目录ElasticSearch:高亮搜索概述什么是highlight三种高亮类型Plain HighlighterFast Vector HighlighterPosting Highlighter示例自定义高亮标签ElasticSearch:高亮搜索概述什么是highlightHighlight就是我们所谓的高亮,即允许对一个或者对个字段在搜索结果中高亮显示。比如字体加粗或者字体呈现和其他文本普通颜色等。为了执行高亮显示,该字段必须有实际的内容,并且这个字段必须存储,即在mapping中st
2020-06-26 11:13:43 623
原创 【ElasticSearch】Kibana中DevTools的使用
文章目录ElasticSearch:Kibana中DevTools的使用DevTools节点操作查看健康状态查看节点索引创建index删除index查看所有index增删改查按ID新增数据按ID更新数据按ID查询数据直接新增数据更新部分字段增加字段按ID删除数据查询指定 Index 的 mapping批量操作批量创建批量更新、删除按条件更新按条件删除全文检索返回字段含义match查询term查询分页(from/size)排序(sort)脚本排序过滤字段返回脚本字段AND查询OR查询AND取反查布尔组合查询范
2020-06-26 11:12:23 5435
原创 【ElasticSearch】ElasticSearch + ik分词器 + Kibana入门
文章目录ElasticSearch + ik分词器 + KibanaElasticSearchDocker部署ElasticSearch镜像验证是否启动成功ik分词器ES内置的Analyzer分析器安装ik分词器验证分词插件是否安装成功自定义分词词典KibanaDocker部署kibana镜像验证是否启动成功ElasticSearch + ik分词器 + KibanaElasticSearchDocker部署ElasticSearch镜像docker run --name elasticsearch
2020-06-26 11:11:22 707
原创 【微机原理与接口技术】8253+8255实验
目录实验内容:1.8253定时实验,利用8253完成1秒的延时2.利用8253硬件延时控制跑马灯运行3.8255键盘显示实验实验内容:1.8253定时实验,利用8253完成1秒的延时。2.利用8253硬件延时控制跑马灯运行。3.8255键盘显示实验1.8253定时实验,利用8253完成1秒的延时CODE SEGMENT ASSUME CS:CODESTART: MOV AL,00...
2020-06-26 11:08:03 9918 2
原创 【微机原理与接口技术】 DAC0832+ADC0809实验
目录实验内容:1.利用0809完成1个通道的模拟量采集,并利用8255输出二进制码2.利用0832产生锯齿波输出,并在直流电机上观察结果实验内容:1.利用0809完成1个通道的模拟量采集,并利用8255输出二进制码。2.利用0832产生锯齿波输出,并在直流电机上观察结果。1.利用0809完成1个通道的模拟量采集,并利用8255输出二进制码CODE SEGMENT ASSUME...
2020-06-26 11:07:52 4999
原创 【计算机网络】计算机网络,这些必须掌握
目录计算机网络概述网络的网络互联网服务提供商ISP主机之间的通信方式电路交换与分组交换1. 电路交换2. 分组交换时延1. 排队时延2. 处理时延3. 传输时延4. 传播时延计算机网络体系结构1. 五层协议2. OSI3. TCP/IP4. 数据在各层之间的传递过程应用层域名系统DNSDNS的寻址过程文件传送协议FTP动态主机配置协议DHCP远程登录协议TELNET电子邮件协议1. SMTP2. POP33. IMAP常用端口Web 页面请求过程1. DHCP 配置主机信息2. ARP 解析 MAC 地址3
2020-06-26 11:07:34 2037
原创 【编译原理与技术】词法分析器(C++实现)
目录注:单词:实现功能:C++代码:运行结果:注:为了简化程序的编写,做了如下的限制:(1) 空白符仅仅是空格、回车符、制表符。(2) 代码是自由格式。(3) 注释不允许嵌套。单词:根据要求,可以自行添加其他保留字或者特殊符号实现功能:识别单词并给出其类型删除注释行删除空白符 (空格、回车符、制表符)在单词的前面加上行号发现并定位错误。C++代码:#...
2020-06-26 11:07:17 2406
原创 【编译原理与技术】递归下降语法分析器(C++实现)
目录内容:示例:具体实现:C++代码:运行结果:内容:实现以下语法的递归下降分析:示例:对于以下代码给出其递归下降语法分析过程:{ i=2; while(i<=100) { sum=sum+i; i=i+2; }}具体实现:首先对上下文无关文法进行检查,消除左递归和左公共因子,从逻辑上检测避免死循环和低效率处理。采用每个产生式的左边的文法符号对应一...
2020-06-26 11:06:50 15458 5
原创 【操作系统】Linux基础操作
文章目录Linux初探LinuxLinux简介Linux的分类文件系统文件类型目录结构基本命令目录切换命令目录的操作命令(增删改查)文件的操作命令(增删改查)压缩文件的操作命令权限命令用户管理用户组的管理其他常用命令Linux参考文档:Linux初探LinuxLinux简介类Unix系统: Linux是一种自由、开放源码的类似Unix的操作系统Linux内核: 严格来说,Linux这个词本身只表示Linux内核。Linux的分类Linux根据原生程度,分为两种:内核版本: Lin
2020-06-26 11:02:55 592
原创 【操作系统】计算机操作系统基础
文章目录操作系统概述一、基本特征1. 并发2. 共享3. 虚拟4. 异步二、基本功能1. 进程管理2. 内存管理3. 文件管理4. 设备管理三、系统调用四、大内核和微内核1. 大内核2. 微内核五、中断分类1. 外中断2. 异常3. 陷入进程管理一、进程与线程1. 进程2. 线程3. 进程与线程的区别4. 多进程和多线程的选择二、进程状态的切换进程调度算法1. 批处理系统2. 交互式系统3. 实时系统三、进程同步1. 临界区2. 同步与互斥3. 信号量4. 管程四、经典同步问题1. 生产者消费者问题2. 哲
2020-06-26 11:00:52 1853
原创 【数据库】SQL语句基础
文章目录SQL基础SQL简介什么是 SQLDBMS - 数据库管理系统(Database Management System)RDBMS- 关系数据库管理系统(Relational Database Management System)DML 和 DDL注意事项大小写问题SQL 语句后面的分号基础语法SELECTSELECT DISTINCTWHEREGROUP BYHAVINGORDER BYINSERT INTOUPDATEDELETECREATE DATABASECREATE TABLEALTER T
2020-06-26 10:58:03 187 1
原创 【数据库】Redis与缓存
文章目录Redis与缓存Redis简介什么是RedisRedis的优缺点为什么要用缓存为什么不用 map做缓存Redis为什么这么快数据类型Redis的应用场景计数器缓存会话缓存全页缓存(FPC)查找表消息队列(发布/订阅功能)分布式锁实现其它持久化持久化机制和优缺点RDBAOF比较如何选择合适的持久化方式扩容过期键的删除策略内存相关内存淘汰策略内存用完了会发生什么内存优化线程模型事务什么是事务Redis事务的概念Redis事务的三个阶段Redis事务相关命令事务管理(ACID)概述原子性(Atomicit
2020-06-26 10:56:13 510
原创 【数据库】MySQL必备知识
文章目录MySQL数据库基础数据库的优势三大范式MySQL的权限表数据类型存储引擎MyISAM与InnoDB区别InnoDB引擎的4大特性存储引擎选择视图索引简介基本原理优缺点索引覆盖索引类型索引的数据结构B树索引哈希索引索引设计的原则创建索引的原则创建索引的三种方式删除索引创建索引注意事项使用索引查询一定能提高查询的性能吗?**百万级别或以上的数据如何删除?**前缀索引最左前缀、最左匹配聚簇索引、非聚簇索引联合索引事务什么是数据库事务?事物的四大特性(ACID)并发一致性问题丢失修改读脏数据不可重复读幻影
2020-06-26 10:54:29 1285
原创 【数据库】数据库系统原理
文章目录数据库系统原理事务概念ACID特性1. 原子性(Atomicity)2. 一致性(Consistency)3. 隔离性(Isolation)4. 持久性(Durability)AUTOCOMMIT并发一致性问题丢失修改读脏数据不可重复读幻影读封锁封锁粒度封锁类型1. 读写锁2. 意向锁封锁协议三级封锁协议两段封锁协议MySQL 隐式与显示锁定隔离级别未提交读(READ UNCOMMITTED)提交读(READ COMMITTED)可重复读(REPEATABLE READ)可串行化(SERIALIZA
2020-06-26 10:52:48 608
原创 【计算机网络】RPC框架简介
文章目录RPC框架RPC简介什么是 RPC?RPC原理RPC 解决了什么问题?常见的 RPC 框架HTTP和RPC比较RPC框架参考文档:RPC框架RPC简介什么是 RPC?RPC(Remote Procedure Call)—远程过程调用,它是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议。比如两个不同的服务 A、B 部署在两台不同的机器上,那么服务 A 如果想要调用服务 B 中的某个方法该怎么办呢?使用 HTTP请求当然可以,但是可能会比较慢而且一些优化做的并不好。
2020-06-26 10:47:41 742
原创 【计算机网络】HTTP协议详解
文章目录HTTP协议基础概念URI请求和响应报文请求报文响应报文HTTP 方法GET和POST区别HTTP 状态码1XX 信息2XX 成功3XX 重定向4XX 客户端错误5XX 服务器错误HTTP 首部通用首部字段请求首部字段响应首部字段实体首部字段具体应用连接管理1. 短连接与长连接2. 流水线Session、Cookie和TokenCookieSessionCookie 与 Session 区别Cookie 与 Session 选择如果客户端禁止 Cookie则 Session 还能用吗?TokenSe
2020-06-26 10:45:30 793
原创 【计算机网络】计算机网络,最全总结
目录计算机网络概述网络的网络互联网服务提供商ISP主机之间的通信方式电路交换与分组交换1. 电路交换2. 分组交换时延1. 排队时延2. 处理时延3. 传输时延4. 传播时延计算机网络体系结构1. 五层协议2. OSI3. TCP/IP4. 数据在各层之间的传递过程应用层域名系统DNSDNS的寻址过程文件传送协议FTP动态主机配置协议DHCP远程登录协议TELNET电子邮件协议1. SMTP2. POP33. IMAP常用端口Web 页面请求过程1. DHCP 配置主机信息2. ARP 解析 MAC 地址3
2020-06-26 10:43:57 2270
转载 【编译原理与技术】LR1分析表的构造
以这个文法为例:A → A + BA → aB → b这个文法可以推导出 a,a + b,a + b + b 之类的字符串。不过,它也是左递归的(LL 分析中,A → A + B 会使得语法生成树向左下无限生长)。这使得这个语法不适用于 LL 文法分析,只能使用 LR 分析。要构造 LR 表,我们需要先添加一个额外的产生式:S → A现在就可以逐步构造 DFA 了。造表第一个状...
2019-10-18 14:57:24 10029
原创 【微机原理与接口技术】8255并行接口实验
目录实验内容:1.8255输入、输出2.利用8255设计跑马灯(软延时)实验内容:1.8255输入、输出实验2.利用8255设计跑马灯(软延时)1.8255输入、输出CODE SEGMENT ASSUME CS:CODESTART: MOV DX,283H ;控制字寄存器 MOV AL,82H;控制字寄存器端口 OUT DX,ALTEXT_IT: MOV DX,...
2019-09-22 22:22:58 6156 1
原创 【计算机网络】网络服务器配置设计
目录实验内容:实验要求:实验内容:1.在PC机上下载安装IIS,学习IIS的组成和功能,以及IIS的使用方法2.分别在本机进行WebServer、EmailServer、FTPServer的配置设计WebServer:FTPServer:EmailServer:3.通过另外一台接入互联网的PC机(或自己的手机)的通用客户程序(浏览器或DOS终端)访问自己设置的WebServer、EmailServ...
2019-09-22 19:26:19 5625
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人