自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 OpenAI chatGPT火爆出圈,世界悄悄发生着变化

这几天 chatGPT刷爆了朋友圈,它是一个智能聊天引擎,本来人工智能聊天机器人也不算什么新鲜东西,但是由于它的表现过于出众,拉开同类产品一大截,因此引发了破圈效应,引起了很多人的注意。

2022-12-09 19:51:42 10707 5

原创 C语言实现简单的HashTble

头文件中的原始定义#ifndef _HelpSep_H#define MinTableSize 1typedef char *ElementType;struct ListNode;typedef struct ListNode *Position;struct Hashtbl;typedef struct HashTbl *HashTable;HashTable initializeTable(int TableSize);Position Find(ElementType.

2020-12-07 08:07:26 434

原创 《C缺陷与陷阱》阅读笔记

《C缺陷与陷阱》第一章 词法“陷阱”1.编译器会将程序分解为一个一个符号的部分,这个步骤称为**“词法分析器”**。2.= 不同于 ==,在下面的代码中,容易进入死循环了:while (c = '' || c == '\t' || c =='\n') { c = getc(f);}​ 像这种错误,有的编译器会提示程序员,但是有的不会。这样就很容易埋下坑了。3.&和| 不等于 &&和||4.整型常量:如果一个整型常量的第一

2020-10-07 13:30:23 274

原创 Java设计模式:命令模式学习与分析

1.要点命令模式将请求封装成对象,这可以让你使用不同的请求,队列,或者日志请求来参数化其他对象。命令模式也支持撤销操作。命令模式将发出请求的对象和执行请求的对象解耦。在被解耦的两者之间是通过命令对象进行沟通的。命令对象封装了接收者和一个(组)动作。调用者通过调用命令对象的execute()发出请求,这会使得接收者的动作被调用。调用者可以接受命令当做参数,甚至在运行时动态地进行。命令可以支持撤销,做法是实现一个undo()方法来回到execute()被执行前的状态。宏命令是命令的一种简单的延伸

2020-05-29 21:09:45 172

原创 Java设计模式:工厂模式学习与分析

1. 为什么需要工厂模式1.初始化对象经常造成耦合问题,因为当使用“new”时,用的是实现,而不是接口。(设计原则:针对接口编程,不针对实现编程)2.工厂处理创建对象的环节。public abstract class PizzaStore { public Pizza orderPizza(String type) { Pizza pizza; //creatPizza()方法从工厂对象移回PizzaStore pizza = creatPizza(type); pi

2020-05-21 10:02:47 205

原创 Java设计模式:装饰者模式学习与分析

1 设计原则封装变化多用组合,少用继承针对接口编程,不针对实现编程为交互对象之间的松耦合设计而努力对扩展开发,对修改关闭2 装饰者模式动态地将责任附加到对象上。想要扩展功能,装饰者提供有别于继承的另一种选择。装饰者和被装饰对象有相同的超类型可以用一个或多个装饰者包装一个对象用装饰过的对象替代原来的对象装饰者可以在所委托被装饰者的行为之前/后,加上自己的行为对象可以在任何时候被装饰,所以可以在运行时动态地、不限量地用喜欢的装饰者来装饰对象装饰者模式比继承更具

2020-05-16 15:46:25 185

原创 Java设计模式:观察者模式学习与分析

1 前言设计模式让你和其他开发人员之间有共享的词汇,一旦懂得这些词汇,和其他开发人员沟通就很容易。设计模式也可以把你的思考架构的层次提高到模式层面,而不是仅停留在琐碎的对象上。2 观察者模式观察者模式定义了对象之间一对多的依赖,这样一来,当一个对象改变状态时,它的所有依赖者都会收到通知并自动更新。3 实现4 代码(Java)4.1 定义Observer接口public interface Observer { //所有的观察者都必须实现update()方法,以实现观察者接口。 /

2020-05-15 13:52:15 202

原创 求职软件开发工程师,我需要准备什么?一些资源分享

0.前言1.简历1.1 模板。1.2 怎么写2.需要掌握的知识2.1 数据结构2.2 算法2.3 笔试准备2.4 其他知识3.面试0.前言1.少去知乎、脉脉等平台问这个岗位前景如何。去回答的大都是干得不开心的,这是“幸存者效应”。当然不排除少数客观的回答,但是根据我的经验,看多了容易焦虑、彷徨,造成“看一个否定一个”。2.很多大厂都会在牛客网的讨论区招人,七月底就可以去关注了。3.关于内推码,现在已经很普遍了,不要把它当做走了“绿色通道”。1.简历1.1 模板。1.自己花了

2020-05-15 11:08:36 759

原创 设计模式学习:策略模式分析

1.举例分析问题:要想实现一套模拟鸭子的游戏,鸭子种类很多,有绿头鸭、红头鸭、橡皮鸭和诱饵鸭。鸭子动作很多,动作包括叫法和飞行,且不同种类鸭子叫法不同,飞行行为不同。难点:鸭子种类和鸭子动作都会随着业务的改变而发生扩展或减少。怎么办?2.定义:策略模式策略模式:定义了算法族,分别封装起来,让它们之间可以互相替换,此模式让算法的变化独立于使用算法的客户。3.设计原则3.1 找出应用中可能需要变化之处,把它们独立出来,不要和那些不需要变化的代码混在一起。解释:1.如果每次新的需求一来,都会

2020-05-12 16:12:03 344

原创 寻找大数组中位数问题(一)

前言之前在面试的时候,面试官非常喜欢问:你好,请问在一个很大的数组中怎样快速地找出它的中位数?当时很迷惑,为什么面试官总喜欢找中位数?后来了解到快速排序算法的思想后,发现如果大概知道待排序数组中位数的大小(或者提前找出中位数),将在数量级上提高快速排序算法的效率,这个后面有空再讲。如果你想先把数组排序,在找出中间那一个,那就。。。。大家看到算法一定立刻想到时间复杂度和空间复杂度,这是基本的思维方式。我这里提供两个方法,方法一提供代码,可以现场给面试官手撕代码(这就直接发offer了);方法二提

2020-05-10 12:09:56 2734

原创 经典算法之(常见)排序算法的比较

1.前言排序算法算是算法中的重中之重,也是面试和工作中的最常用的算法之一。现在我们就来结合例子,一个个分析各大算法的特点。选择一个算法,其实主要是根据待排序的数据特征来选的,一般是在时间复杂度、空间复杂度和算法稳定性之间做取舍。1.1 冒泡排序1.1.2 改进后的冒泡排序1.2 快速排序1.2.2快速排序算法的改进1.3 插入排序1.4 希尔排序1.5 选择排序1.6 堆排序1.7 归并排序4 举例对比各个算法的效率2.各个算法比较算法时间复杂度空间复杂度稳定性

2020-05-09 16:11:21 352 2

原创 C语言strtok()函数详解

函数原型char *strtok(char *str, char const *sep);第一次调用strtok函数时,这个函数将忽略间距分隔符并返回指向在str字符串找到的第一个符号的指针,丢掉分隔符sep,添加NULL字符结尾(可以理解为用NULL替换了sep).通过调用一系列的strtok函数,更多的符号将从str字符串中分离出来.每次调用strtok函数时,都将通过在找到的符号后插...

2020-05-01 17:58:29 8352 1

原创 C语言strspn()函数详解

函数的原型为size_t strspn(char const *str, char const *grouo);前言今天在看书的时候看到strspn()这个函数,对其中的中文描述没有看懂。确实,中文容易出现歧义,再加上自己的理解能力不好,真的没看懂。《C与指针》书上关于strspn()的中文描述:strspn返回str起始部分group中任意字符的字符数。(看了几遍没看懂!!!)st...

2020-05-01 16:12:18 9940 7

原创 C语言register的用法和浅析

在C语言中,register算是不太难的一个关键字。用register声明的变量是寄存器变量,是存放在CPU的寄存器里的。而我们平时声明的变量是存放在内存中的。虽说内存的速度已经很快了,不过跟寄存器比起来还是差得远。寄存器变量和普通变量比起来速度上的差异很大,毕竟CPU的速度远远大于内存的速度。寄存器有这么两个特点,一个是运算速度快,一个是不能取地址。学过C的都应该知道每一个变量...

2020-04-27 21:51:10 17207

原创 C语言malloc初始化问题

前言博主在刷Leetcode的时候经常头疼的是数组初始化问题。尤其是最近,经常会遇到数组访问溢出的问题。大意就是说访问数组下标越界了,简直头疼得不得了。今天就结合例子来总结一下:## 1374. 生成每种字符都是奇数个的字符串假如我们这样的话:(注意看malloc那一行代码)char * generateTheString(int n){ //if(n == 0) re...

2020-04-27 17:52:25 5177 3

原创 数组相关知识学习总结(及malloc与memset初始化问题)(C语言)

数组前言:由于疫情的影响,放假放了三个多月,也开开心心玩了三个多月,也算是入职前的一次大的嗨皮吧。从今天起,开始慢慢更新啦,不为别的,只求记录学习经历与交朋友。下面是《C和指针》第八章的内容总结,加上一些自己的思考。举例ps: 可能看这个图片比较麻烦,举个小小例子来说吧,数组初始化。这道题是Leetcode上一道简单的字符串题目。char * freqAlphabets(char ...

2020-04-27 15:45:51 553

原创 Linux中ls文件与目录查看的参数

前言在Linux中,当执行ls命令时,默认显示的是:非隐藏文件的文件名、以文件名进行排序以及文件名代表的颜色显示。ls的参数1. -a : 全部的文件,连同隐藏文件(开头为 . 的文件)一起列出来;2. -A : 全部的文件,连同隐藏文件,但不包括 . 与 . . 这两个目录;3. -d : 仅列出目录本身,而不是列出目录内的文件数据(常用);4. -f : 直接列出结果,...

2019-10-31 16:35:21 492

原创 Linux中文件与目录的权限分别

前言:笔者在学习Linux时,对文件和目录这两个概念一直比较迷惑,经过学习,结合权限设置,现在来记录一下自己的理解。1.文件与目录的理解假设文件是一堆文件盒,而目录则是一堆抽屉。你可以在文件上面改/写数据;可以将文件放置在不同的目录里。目录的最大目的就是拿出/放入文件。2.文件与目录的权限2.1 文件文件是实际含有数据的地方,包括一般文本,数据库文本,二进制可执行文件等。r:...

2019-10-29 13:44:39 306

原创 Linux文件系统结构

1.Linux文件目录结构在Linux的根目录下执行ls命令,就会出现如下文件:因此,我们就知道Linux初始包括如下文件系统:2.各个文件的常用功能2.1 /bin/bin放置的是在单人维护模式下还能够被操作的指令。在/bin底下的指令可以被root与一般帐号所使用,主要有:cat,chmod(修改权限),chown, date, mv, mkdir, cp, bash等等常用的...

2019-10-25 21:14:20 157

原创 排序算法之希尔排序

希尔排序基于插入排序的快速排序算法。对于每个h,用插入排序将h个子数组独立地排序。只需要在插入排序的代码中将移动的距离由1改为h即可。package sort;import java.util.Scanner;public class Shell { public static void sort(Comparable[] a) { // 这里就是各类排序算法的主代码块,如...

2019-09-30 10:55:37 148

原创 排序算法之插入排序

插入排序将每一个数据插入到之前已经有序的数组中,在具体操作中需要将一部分元素向右移动一位。对一个很大的且其中的元素已经有序的数组进行排序,插入排序会比随机顺序的数组快很多。package sort;public class Insertion { public static void sort(Comparable[] a) { // 这里就是各类排序算法的主代码块,如冒泡排序...

2019-09-30 10:27:36 82

原创 排序算法之选择排序

选择排序package sort;public class Selection { public static void sort(Comparable[] a) { // 按照升序排列 int N = a.length; // 数组长度 for (int i = 0; i < N; i++) { // 将a[i]和它后面最小的元素进行交换 int min =...

2019-09-30 09:50:55 87

原创 排序算法之Comparable接口

前言:在创建自己的数据类型时,实现Comparable接口就能保证用例代码可以将其排序,其中的compareTo()方法来实现比较。下面是一个实现Comparable接口的Date例子:public class Date implements Comparable<Date> { private final int day; private final int mont...

2019-09-29 11:32:34 235

原创 算法篇之排序

前言:“排序算法类模板”约定:将排序代码放在类sort()方法中,该类还将包含辅助函数less()和exch()。1.排序类算法模板:package sort;public class Sort_mb { public static void sort(Comparable[] a) { // 这里就是各类排序算法的主代码块,如冒泡排序、插入排序、快速排序等 } pr...

2019-09-29 10:54:50 83

原创 分布式缓存(一)缓存是如何使用的?缓存如果使用不当会造成什么后果?

前言:本文章来着中华石杉老师视频,老师真滴棒!缓存是如何使用的?缓存如果使用不当会造成什么后果?1.为啥在项目里要用缓存呢?用缓存,主要是俩用途,高性能和高并发1)高性能假设这么个场景,你有个操作,一个请求过来,吭哧吭哧你各种乱七八糟操作mysql,半天查出来一个结果,耗时600ms。但是这个结果可能接下来几个小时都不会变了,或者变了也可以不用立即反馈给用户。那么此时咋办?缓存啊,折...

2019-09-01 14:39:30 145

原创 分布式搜索引擎入门(四)es在数据量很大的情况下(数十亿级别)如何提高查询效率?

前言:本文章来着中华石杉老师视频,老师真滴棒!es在数据量很大的情况下(数十亿级别)如何提高查询效率?背景: es说白了其实性能并没有你想象中那么好的。很多时候数据量大了,特别是有几亿条数据的时候,可能你会懵逼的发现,跑个搜索怎么一下5秒-10秒,坑爹了。第一次搜索的时候,是5~10秒,后面反而就快了,可能就几百毫秒。说实话,es性能优化是没有什么银弹的,啥意思呢?就是不要期待着随手调一个参...

2019-08-30 11:00:24 812

原创 分布式搜索引擎入门(三)es写入数据的工作原理是什么啊?es查询数据的工作原理是什么啊?

前言:本文章来着中华石杉老师视频,老师真滴棒!背景:用es无非就是写入数据,搜索数据。你要是不明白你发起一个写入和搜索请求的时候,es在干什么,那你真的就是。。。。对es基本就是个黑盒,你还能干啥?你唯一能干的就是用es的api读写数据了。。。要是出点什么问题,你啥都不知道,那还能指望你什么呢?是不是。。(1)es写数据过程1)客户端选择一个node发送请求过去,这个node就是coo...

2019-08-29 10:28:55 308

原创 分布式搜索引擎入门(二)es的分布式架构原理能说一下么(es是如何实现分布式的啊)?

前言:本文章来着中华石杉老师视频,老师真滴棒!es的分布式架构原理能说一下么(es是如何实现分布式的啊)?现在分布式搜索基本已经成为大部分互联网行业的java系统的标配,其中尤为流行的就是es(elasticsearch),前几年es没火的时候,大家一般用solr。但是这两年基本大部分企业和项目都开始转向es了。es的分布式架构设计能介绍一下么?1.elasticsearch设计的理念就是...

2019-08-28 21:25:01 237

原创 分布式搜索引擎入门(一)

Lucene介绍与入门使用我们生活中的数据总体分为两种:结构化数据和非结构化数据。(1)结构化数据:指具有固定格式或有限长度的数据,如数据库,元数据等。(2)非结构化数据:指不定长或无固定格式的数据,如邮件,word文档等磁盘上的文件。1.结构化数据查询方法:数据库中的搜索很容易实现,通常都是使用sql语句进行查询,而且能很快的得到查询结果。为什么数据库搜索很容易?因为数据库中...

2019-08-21 11:04:58 206

原创 总结一下MQ面试问题?

(1)你们为什么使用消息队列啊?面试官问你这个问题,期望的一个回答是说,你们公司有个什么业务场景,这个业务场景有个什么技术挑战,如果不用MQ可能会很麻烦,但是你现在用了MQ之后带给了你很多的好处先说一下消息队列的常见使用场景吧,其实场景有很多,但是比较核心的有3个:解耦、异步、削峰解耦:现场画个图来说明一下,A系统发送个数据到BCD三个系统,接口调用发送,那如果E系统也要这个数据呢?那如...

2019-08-21 09:28:31 163

原创 如果写一个消息队列,该如何进行架构设计?(七)

前言:本文章来着中华石杉老师视频,老师真滴棒!如果写一个消息队列,该如何进行架构设计?首先这个mq得支持可伸缩性吧,就是需要的时候快速扩容,就可以增加吞吐量和容量,那怎么搞?设计个分布式的系统呗,参照一下kafka的设计理念,broker -> topic -> partition,每个partition放一个机器,就存一部分数据。如果现在资源不够了,简单啊,给topic增加pa...

2019-08-21 09:28:19 110

原创 如何保证消息队列的高可用?(三)

前言:本文档参考中华石杉老师视频,老师真滴棒!MQ的高可用性怎么保证?(1)RabbitMQ的高可用性RabbitMQ是比较有代表性的,因为是基于主从做高可用性的。rabbitmq有三种模式:单机模式,普通集群模式,镜像集群模式。单机模式就是demo级别的,一般就是你本地启动了玩玩儿的,没人生产用单机模式普通集群模式意思就是在多台机器上启动多个rabbitmq实例,每个机器...

2019-08-21 09:28:12 97

原创 kafka、activemq、rabbitmq、rocketmq都有什么优点和缺点啊?(二)

前言:本博客整理来自于中华石杉老师的视频,老师真心棒!1.单机吞吐量ActiveMQ:万级,吞吐量比RocketMQ和Kafka要低一个数量级。RabbitMQ:万级,吞吐量比RocketMQ和Kafka要低一个数量级。RocketMQ:10万级,RocketMQ也是可以支撑高吞吐的一种MQ。Kafka:10万级,这是Kafka最大的优点,就是吞吐量高;一般配合大数据类的系统来进行实时...

2019-08-21 09:28:06 545

原创 消息队列一附录

1、面试题为什么使用消息队列啊?消息队列有什么优点和缺点啊?kafka、activemq、rabbitmq、rocketmq都有什么区别以及适合哪些场景?2、面试官心理分析其实面试官主要是想看看:(1)第一,你知道不知道你们系统里为什么要用消息队列这个东西?我之前面试就见过大量的候选人,说自己项目里用了redis、mq,但是其实他并不知道自己为什么要用这个东西。其实说白了,就是为了用而用...

2019-08-21 09:27:58 78

原创 消息队列(一)

1.为什么要使用消息队列1.异步(减少响应所需要的时间);2.降低耦合性3.削峰;1.1通过异步处理提高系统性能在不使用消息队列服务器的时候,用户的请求数据直接写入数据库,在高并发的情况下数据库压力剧增,使得响应速度变慢。但是在使用消息队列之后,用户的请求数据发送给消息队列之后立即返回,再由消息队列的消费者进程从消息队列中获取数据,异步写入数据库。由于消息队列服务器处理速度快于数...

2019-08-21 09:27:45 224

原创 如何解决消息队列的延时以及过期失效问题?消息队列满了以后该怎么处理?有几百万消息持续积压几小时,说说怎么解决?(七)

前言:本文章来着中华石杉老师视频,老师真滴棒!问题1. 如何解决消息队列的延时以及过期失效问题?2. 消息队列满了以后该怎么处理?3. 有几百万消息持续积压几小时,说说怎么解决?背景:可能你的消费端出了问题,不消费了,或者消费的极其极其慢。接着就坑爹了,可能你的消息队列集群的磁盘都快写满了,都没人消费,这个时候怎么办?或者是整个这就积压了几个小时,你这个时候怎么办?或者是你积压的时间太...

2019-08-20 21:05:19 1014

原创 如何保证消息的顺序性?(六)

前言:本文章来着中华石杉老师视频,老师真滴棒!如何保证消息的顺序性?背景:在mysql里增删改一条数据,对应出来了增删改3条binlog,接着这三条binlog发送到MQ里面,到消费出来依次执行,起码得保证人家是按照顺序来的吧?不然本来是:增加、修改、删除;你楞是换了顺序给执行成删除、修改、增加,不全错了么。RabbitMQ(1)rabbitmq:一个queue,多个consumer,这不...

2019-08-20 20:35:50 1158

原创 如何保证消息的可靠性传输(如何处理消息丢失的问题)?(五)

前言:本文档参考中华石杉老师视频,老师真滴棒!如何保证消息的可靠性传输(如何处理消息丢失的问题)?用mq有个基本原则,就是数据不能多一条,也不能少一条,不能多,就是刚才说的重复消费和幂等性问题。不能少,就是说这数据别搞丢了。这个丢数据,mq一般分为两种,要么是mq自己弄丢了,要么是我们消费的时候弄丢了。(1)Rabbitmq1)生产者弄丢了数据生产者将数据发送到rabbitmq的时候...

2019-08-19 14:38:03 164

原创 如何保证消息不被重复消费(如何保证消息消费时的幂等性)?(四)

关键:本文档参考中华石杉老师视频,老师真滴棒!1.前言比如Rabbitmq、Rocketmq、Kafka,都有可能会出现重复消费的问题,正常。因为这问题通常不是mq自己保证的,是给你保证的。然后我们挑kafka来举个例。kafka实际上有个offset的概念,就是每个消息写进去,都有一个offset,代表他的序号,然后consumer消费了数据之后,每隔一段时间,会把自己消费过的消息的...

2019-08-19 13:30:40 163

原创 按中序遍历重新排列树

给定一个树,按中序遍历重新排列树,使树中最左边的结点现在是树的根,并且每个结点没有左子结点,只有一个右子结点。示例 :输入:[5,3,6,2,4,null,8,1,null,null,null,7,9] 5 / \ 3 6 / \ \ 2 4 8 / / \ 1 7 9输出:[1,null...

2019-08-13 14:29:37 296

空空如也

空空如也

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

TA关注的人

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