自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 【SQL Server】入门教程-基础篇(三)

这一篇博客,是Sql Server函数学习的笔记。

2024-04-30 00:45:51 402

原创 【SQL Server】入门教程-基础篇(二)

本章要讲的就是Sql Server的高级语言,还有后续。

2024-04-29 07:14:23 551

原创 计算机网络之传输层TCP\UDP协议

UDP只在IP数据报服务之上增加了很少功能,即UDP的主要特点:UDP是,减少开销和发送数据之前的时延UDP使用最大努力交付,即,可靠性由UDP上层即应用层保证UDP是的,适合一次性传输少量数据的网络应用因此应用程序需要选择大小合适的报文,报文太长则网络层需要分片以满足链路层MTU的要求,这样就会降低网络层的效率4.UDP无拥塞控制,适合(比如IP电话、视频会议)5.UDP首部开销小,只有8B,TCP20B。

2024-04-28 08:23:36 315

原创 【SQL Server】入门教程-基础篇(一)

SQL Server数据库是Microsoft开发设计的一个关系数据库智能管理系统(RDBMS),现在是全世界主流数据库之一;SQL Server数据库具备方便使用、可伸缩性好、相关软件集成程度高等优势,能够从单一的笔记本上运行或以高倍云服务器集群为基础,或在这两者之间任何东西上运行。尽管说成“任何东西”,可是依然要考虑有关的软件和硬件配置。以上是Sql Server的一些基本命令,后续会持续深入。

2024-04-27 22:39:09 522

原创 计算机网络之传输层(传输层提供的服务及功能概述、端口、套接字--Socket、无连接UDP和面向连接TCP服务)

传输层的功能如下:1)传输层提供应用进程之间的逻辑通信(即端到端的通信)。与网络层的区别是,网络层提供的是主机之间的逻辑通信。从网络层来说,通信的双方是两台主机,IP 数据报的首部给出了这两台主机的IP地址。但“两台主机之间的通信”实际上是两台主机中的应用进程之间的通信,应用进程之间的通信又称端到端的逻辑通信。这里“逻辑通信”的意思是:传输层之间的通信好像是沿水平方向传送数据,但事实上这两个传输层之间并没有–条水平方向的物理连接。2)复用和分用。

2024-04-26 13:52:24 906

原创 InfiniGate自研网关实现思路二

解析 HTTP 网络请求的参数信息,包括;GET/POST,以及应对不同 Content-Type 类型的处理。HTTP 接口请求的参数需要解析成可以匹配到 RPC 接口的入参信息,所以通常为了方便控制一般只支持 RPC 接口单个对象入参,并且不允许同名不同参数的重载方法出现,这些会在 RPC 方法注册阶段进行报错提醒。

2024-04-21 19:21:11 705

原创 腾讯宣讲会现场笔试题

(操作系统)Unix的进程间通信,有哪几种方式。(至少写出5种)?(1)管道(Pipe):管道可用于具有亲缘关系进程间的通信,允许一个进程和另一个与它有共同祖先的进程之间进行通信。(2)命名管道(named pipe):命名管道克服了管道没有名字的限制,因此,除具有管道所具有的功能外,它还允许无亲缘关系进程间的通信。命名管道在文件系统中有对应的文件名。命名管道通过命令mkfifo或系统调用mkfifo来创建。

2024-04-17 23:25:22 922

原创 InfiniGate自研网关实现思路一

所有的学习都是举一反三,核心的设计万变不离其宗!具体实现:1.定义了一个继承了SimpleChannelInboundHandler的BaseHandler表明为入站处理器,里面定义了一个抽象方法session(也就是会话操作),接下来在handlers包中定义了一个自定义的handler继承BaseHandler,T泛型为FullHttpRequest,里面对session方法进行重写,模拟http请求的响应,最后完成一次会话。

2024-04-16 18:11:47 650

原创 Http协议详解

超文本传输协议(英文:HyperText Transfer Protocol,缩写:HTTP)是一种用于分布式、协作式和超媒体信息系统的应用层协议。HTTP是万维网的的基础。Http协议属于应用层,及用户访问的第一层就是http。

2024-04-16 18:05:09 1164

原创 Netty源码分析一启动流程剖析

1.initAndRegister()对channel进行初始化、注册,返回regFuture(promise对象)1.1 initmain(主线程中完成)创建NioServerSocketChannel (相当于Nio中的ServerSocketChannel serverSocketChannel = ServerSocketChannel.open();mian往NioServerSocketChannel添加初始化器handlermain。

2024-04-06 12:33:03 1214

原创 Netty优化

我们在Serializer接口进行优化,在Json序列化时,为Gson对象注册一个自定义的序列化适配器。

2024-04-05 21:53:30 731

原创 Netty进阶

魔数,用来在第一时间判定是否是无效数据包版本号,可以支持协议的升级序列化算法,消息正文到底采用哪种序列化反序列化方式,可以由此扩展,例如:json、protobuf、hessian、jdk指令类型,是登录、注册、单聊、群聊... 跟业务相关请求序号,为了双工通信,提供异步能力正文长度消息正文。

2024-04-03 06:50:06 584

原创 Netty入门

同时也会执行一些。

2024-04-02 20:39:02 1199

原创 NIO基础知识

在学习Netty之前先要学习一下NIO相关的知识,因为Netty是基于NIO搭建的一套网络编程框架。

2024-04-02 16:17:24 1300

原创 Zookeeper学习二集群搭建

Leader选举:Serverid:服务器ID比如有三台服务器,编号分别是1,2,3。编号越大在选择算法中的权重越大。Zxid:数据ID服务器中存放的最大数据ID.值越大说明数据 越新,在选举算法中数据越新权重越大。在Leader选举的过程中,如果某台ZooKeeper 获得了超过半数的选票, 则此ZooKeeper就可以成为Leader了。

2024-04-02 14:32:35 1341

原创 Zookeeper学习一

建立连接有两种方式,一种是调用工厂对象的newClient()方法,另一种就是调用工厂对象的builder(),通过的方法就连接信息传入工厂中。注意此方法需要加上@Before注解,表示其他测试方法执行前需要先执行加了的方法。因为每次进行crud操作时都需要与ZooKeeper Server建立连接。建立了连接,操作完毕后同时需要释放连接,在对应方法上面加一个,表示每次进行测试最后都要执行该方法。

2024-04-02 09:08:47 1380

原创 密码加密——加盐后再进行md5加密

首先明文肯定是不可取的,在数据库中明文存储密码风险实在是太大了。MD5(Message Digest Algorithm 5)是一种常用的,用于将任意长度的数据进行不可逆的加密处理。MD5 可以将输入的任意长度的数据转换为一个128位(16字节)的哈希值,通常表示为32个十六进制数字。尽管 MD5 具有上述特点,但由于其安全性较低,已被证明容易受到)和的影响,因此在一些安全要求较高的场景中,已经不推荐单独使用 MD5 来加密密码等敏感信息。解释一下和。

2024-04-01 07:07:09 1121

原创 计算机网络数据链路层知识总结

结点:主机、路由器链路﹔网络中两个结点之间的物理通道,链路的传输介质主要有双绞线、光纤和微波。分为有线链路、无线链路。数据链路︰网络中两个结点之间的逻辑通道,把实现控制数据传输协议的硬件和软件加到链路上就构成数据链路帧:链路层的协议数据单元,封装网络层数据报。数据链路层在物理层提供服务的基础上向网络层提供服务,其最基本的服务是将源自网络层来的数据可靠地传输到相邻节点的目标机网络层。

2024-03-29 18:30:29 1438

原创 分布式搜索引擎elasticsearch专栏三

默认的拼音分词器会将每个汉字单独分为拼音,而我们希望的是每个词条形成一组拼音,需要对拼音分词器做个性化定制,形成自定义分词器。elasticsearch中分词器(analyzer)的组成包含三部分:character filters:在tokenizer之前对文本进行处理。例如删除字符、替换字符tokenizer:将文本按照一定的规则切割成词条(term)。例如keyword,就是不分词;还有ik_smarttokenizer filter:将tokenizer输出的词条做进一步处理。

2024-03-19 22:12:49 799

原创 分布式搜索引擎elasticsearch专栏二

match和multi_match的区别是什么?match:根据一个字段查询multi_match:根据多个字段查询,参与查询字段越多,查询性能越差精确查询常见的有哪些?term查询:根据词条精确匹配,一般搜索keyword类型、数值类型、布尔类型、日期类型字段range查询:根据数值范围查询,可以是数值、日期的范围查询的DSL是一个大的JSON对象,包含下列属性:query:查询条件from和size:分页条件sort:排序条件highlight:高亮条件。

2024-03-19 08:02:28 1118

原创 分布式搜索引擎elasticsearch专栏一

什么是elasticsearch?一个开源的分布式搜索引擎,可以用来实现搜索、日志统计、分析、系统监控等功能什么是elastic stack(ELK)?是以elasticsearch为核心的技术栈,包括beats、Logstash、kibana、elasticsearch什么是Lucene?是Apache的开源搜索引擎类库,提供了搜索引擎的核心API索引库操作有哪些?创建索引库:PUT /索引库名查询索引库:GET /索引库名删除索引库:DELETE /索引库名。

2024-03-18 19:13:39 842

原创 浏览器缓存:Cookie、LocalStorage、SessionStorage的对比分析

先分别介绍一下这三种浏览器缓存。

2024-03-17 09:30:07 1033

原创 SpringBoot中的配置文件优先级、bootstrap和application的区别

SpringBoot项目当中支持的三类配置文件:在SpringBoot项目当中,我们要想配置一个属性,可以通过这三种方式当中的任意一种来配置都可以,那么如果项目中同时存在这三种配置文件,且都配置了同一个属性,如:Tomcat端口号,到底哪一份配置文件生效呢?server:port: 8082server:port: 8082我们启动SpringBoot程序,测试下三个配置文件中哪个Tomcat端口号生效:properties、yaml、yml三种配置文件同时存在。

2024-03-14 21:21:39 932

原创 java多线程:Callable配合FutureTask实现创建异步任务并且获取其返回值

Future表示一个异步计算的结果。它提供了一种访问异步操作的结果的方式,以便在主线程中获取异步计算的结果。cancel(boolean): 取消任务。传入的参数为表示若任务开始执行了,是否要尝试中断该线程。参数true为进行尝试中断,false为不进行中断。isCanceled(): 获取该任务是否被中断了isDone(): 该任务是否已经完成get(): 获取该任务的返回值,若任务还未完成则会阻塞。get(Long, TimeUnit): 获取任务的返回值,若任务还未完成则会阻塞。

2024-03-11 09:22:54 993

原创 如何优雅地避免空指针异常(NullPointerException)

如果你在使用数据库来保存你的域名对象,如Customers,Orders 等,你需要在数据库本身定义是否为空的约束。因为数据库会从很多代码中获取数据,数据库中有是否为空的检查可以确保你的数据健全。在数据空中维护null约束同样可以帮助你减少Java代码中的空指针检查。当从数据库中加载一个对象是你会明确,哪些字段是可以为null的,而哪些不能,这可以使你代码中不必要的!= null检查最少化。

2024-03-09 08:39:59 1084

原创 详解java中的Lambda表达式

以往,使用单一抽象方法的接口被用作函数类型。它们的实例表示函数(functions)或行动(actions)。自从 JDK 1.1 于 1997 年发布以来,创建函数对象的主要手段就是匿名类。匿名类,通俗地讲,就是没有类名,直接通过new关键字创建这个类的实例。下面是匿名类的一个例子:java.util包中的Comparator接口匿名类适用于需要函数对象的经典面向对象设计模式,特别是策略模式,上面的匿名类是排序字符串的具体策略。然而,匿名类确实过于冗长。

2024-03-03 09:51:22 994

原创 java基础知识面试题

守护线程是在程序运行时在后台提供一种支持性的线程。当所有用户线程结束时,守护线程会自动停止。换句话说,守护线程不会阻止程序的终止,即使它们还没有执行完任务。守护线程的生命周期与主线程或其他用户线程无关。当所有的非守护线程都结束时,JVM 将会退出并停止守护线程的执行。守护线程的优先级默认与普通线程一样。优先级较高的守护线程也不能够保证在其他线程之前执行。守护线程通常被用于执行一些后台任务,例如垃圾回收、日志记录、定时任务等。当只剩下守护线程时,JVM 会自动退出并且不会等待守护线程执行完毕。

2024-03-01 22:52:04 712

原创 计算机网络物理层知识点总结

本篇博客是基于谢希仁编写的《》和王道考研视频总结出来的知识点,本篇总结的主要知识点是第二章的物理层。

2024-03-01 16:57:30 1393

原创 计算机网络体系结构

计算机网络:是一个将分散的。具有独立功能的计算机系统,通过通信设备和线路连接起来,由功能完善的软件实现资源共享和信息传递的系统。简单点说,计算机网络是互联的,自治的计算机集合。

2024-02-28 22:18:56 1111

原创 LeetCode142. 环形链表 II刷题详解

今天力扣刷到了一个特别有意思的题目,于是就写了下面的题解来加深以下理解。这个可以分为两大步去写,首先要判断链表是否有环,然后如果有环就去找到环的入口,没有环返回null。

2024-02-27 20:47:24 1012

原创 Java四大引用详解:强引用、软引用、弱引用、虚引用

在JDK1.2以前的版本中,当一个对象不被任何变量引用,那么程序就无法再使用这个对象。也就是说,只有对象处于可触及状态,程序才能使用它。这就像在商店购买了某样物品后,如果有用就一直保留它,否则就把它扔到垃圾箱,由清洁工人收走。一般说来,如果物品已经被扔到垃圾箱,想再把它捡回来使用就不可能了。但有时候情况并不这么简单,可能会遇到可有可无的"鸡肋"物品。这种物品现在已经无用了,保留它会占空间,但是立刻扔掉它也不划算,因为也许将来还会派用场。

2024-02-27 07:00:41 808

原创 ThreadLocal从使用到实现原理与源码详解

ThreadLocal是多线程中对于解决的一个,它会为每个线程都分配一个从而解决了变量并发访问冲突的问题。ThreadLocal 同时实现了线程内的资源共享。案例:使用JDBC操作数据库时,会将每一个线程的Connection放入各自的ThreadLocal中,从而保证每个线程都在各自的 Connection 上进行数据库的操作,避免A线程关闭了B线程的连接。

2024-02-26 22:22:22 1218

原创 java面试常见技术场景篇

单点登录的英文名叫做:Single Sign On(简称SSO),只需要登录一次,就可以访问所有信任的应用系统在以前的时候,一般我们就单系统,所有的功能都在同一个系统上。单体系统的session共享登录:将用户信息保存在Session对象中如果在Session对象中能查到,说明已经登录如果在Session对象中查不到,说明没登录(或者已经退出了登录)注销(退出登录):从Session中删除用户的信息后来,我们为了合理利用资源和降低耦合性,于是把单系统拆分成多个子系统。

2024-02-23 09:21:04 949

原创 java面试设计模式篇

需求:设计一个咖啡店点餐系统。设计一个咖啡类(Coffee),并定义其两个子类(美式咖啡【AmericanCoffee】和拿铁咖啡【LatteCoffee】);再设计一个咖啡店类(CoffeeStore),咖啡店具有点咖啡的功能。具体类的设计如下:1.类图中的符号+:表示public-:表示private#:表示protected2.泛化关系(继承)用带空心三角箭头的实线来表示3.依赖关系使用带箭头的虚线来表示​​​​​//添加配料​。

2024-02-23 09:11:10 1211

原创 刷LeetCode541引起的java数组和字符串的转换问题

起因是今天在刷下面这个力扣题时的一个报错这个题目本身是比较简单的,所以就不讲具体思路了。问题出在最后方法的返回值处,要将字符数组转化为字符串,第一次写的时候也没思考直接就是return charArray.toString()然后就出现了以下报错:发现输出竟然是一坨看不懂的东西后面思考了一下,原因如下:toString()是顶级父类object中的方法,数组类中并没有对此方法重写(override),仅仅是重载(overload)为类的静态方法。

2024-02-20 10:29:34 677

原创 java面试JVM虚拟机篇

难易程度:☆☆☆出现频率:☆☆☆☆程序计数器:线程私有的,内部保存的字节码的行号。用于记录正在执行的字节码指令的地址。javap -verbose xx.class 打印堆栈大小,局部变量的数量和方法的参数。​ java虚拟机对于多线程是通过线程轮流切换并且分配线程执行时间。在任何的一个时间点上,一个处理器只会处理执行一个线程,如果当前被执行的这个线程它所分配的执行时间用完了【挂起】。处理器会切换到另外的一个线程上来进行执行。并且这个线程的执行时间用完了,接着处理器就会又来执行被挂起的这个线程。

2024-02-20 06:29:21 890

原创 java面试多线程篇

CAS的全称是: Compare And Swap(比较再交换),它体现的一种乐观锁的思想,在无锁情况下保证线程操作共享数据的原子性。在JUC( java.util.concurrent )包下实现的很多类都用到了CAS操作AbstractQueuedSynchronizer(AQS框架)AtomicXXX类例子:我们还是基于刚才学习过的JMM内存模型进行说明线程1与线程2都从主内存中获取变量int a = 100,同时放到各个线程的工作内存中。

2024-02-18 20:18:24 980

原创 java面试集合篇

时间复杂度分析:来评估代码的执行耗时的1.假如每行代码的执行耗时一样:1ms2.分析这段代码总执行多少行?3n+33.代码耗时总时间: T(n) = (3n + 3) * 1ms大O表示法:不具体表示代码真正的执行时间,而是表示代码执行时间随数据规模增长的变化趋势T(n)与代码的执行次数成正比(当n很大时,公式中的低阶,常量,系数三部分并不左右其增长趋势,因此可以忽略,我们只需要记录一个最大的量级就可以了以上代码的时间复杂度都为O(1)

2024-02-18 10:17:45 711

原创 消息中间件面试篇

如果有这样的需求的话,我们是可以解决的,把消息都存储同一个分区下就行了,有两种方式都可以进行设置,第一个是发送消息时指定分区号,第二个是发送消息时按照相同的业务设置相同的key,因为默认情况下分区也是通过key的hashcode值来选择分区的,hash值如果一样的话,分区肯定也是一样的。因为我们当时处理的支付(订单|业务唯一标识),它有一个业务的唯一标识,我们再处理消息时,先到数据库查询一下,这个数据是否存在,如果不存在,说明没有处理过,这个时候就可以正常处理这个消息了。

2024-02-13 20:22:12 1389

原创 java面试微服务篇

方法一:创建类实现IRule接口,可以指定负载均衡策略(全局)。方法二:在客户端的配置文件中,可以配置某一个服务调用的负载均衡策略(局部)

2024-02-13 07:45:33 1946

DDD架构思想专栏二《领域层的决策设计思想详解》

DDD领域设计规则树实战

2023-12-02

DDD架构思想专栏一《初识领域驱动设计DDD落地》

DDD架构思想专栏一《初识领域驱动设计DDD落地》

2023-12-02

空空如也

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

TA关注的人

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