自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 编程珠玑3-8

以编码0为例子,0对应7 x 4的二维数组的坐标是:(6, 1), (6, 2)。以此类推,获取剩下编码对应的坐标,即可将数字转换为二维数组的坐标。输出为一个5个字节的数组,当且仅当数字j中的第i段点亮时,字节j中的位i置1。现在,我们拥有一个7 x 4的二维数组,如果我们要绘制8,如上图所示,8对应的七段编码为。简单翻译一下题目的意思,编写一个程序,实现给定一个数字,包含5位,在终端输出图像。Display是显示屏类,用于集中维护5个7段显示,并打印数字。举个例子,向程序输入82367,在终端显示。

2024-09-10 18:19:28 874 1

原创 编程珠玑3-6

6.编写一个“格式信函发生器”,使之可以通过数据库中的每条记录来生成定制的文档(这常常称为“邮件归并”特性)。设计简短的模板和输入文件来测试程序的正确性。信函格式发生器,就是将参数和模板分离,用不同的参数和模板组合后得到不同内容的一种程序。该程序读取模板,然后将参数填入模板内,即可得到新的需要输出的文件。书本后面并未直接给出答案,而是告诉读者另一本书上有实现代码,并且该代码只有9行。想要生成新的文件,改变参数即可,无需更改模板。,接下来需要将冒号分隔的参数填入模板对应的位置即可。信函格式发生器,好处就是。

2024-09-10 15:42:49 681

原创 编程珠玑之第三章习题3-4

如果使用我编写的时间模块计算得到的答案和python自带的时间模块得到的答案相同,那么说明我编写的代码没有问题。4.编写处理如下日期的函数:给定两个日期,计算两者之间的天数;Calendar用于处理日期与日期之间关系,并对日期做出更为复杂的处理。我们从年份的角度入手,上图可以划分为三块:d1所在年份,中间年份,d2所在年份。弄清楚这一点后,创建数组时,添加额外的元素,直到月初第一天排序到正确的下标,表示正确的星期几即可。计算天数的时候,需要将闰年因素考虑进去,也就是对最终计算结果增加。

2024-09-09 19:05:10 896

原创 编程珠玑之第三章习题3-3

最近在看《编程珠玑》,分享一些课后习题的代码。本章分享的是3-3。这题在书本的课后目录中并未写明相关参考代码,现有网络上的代码又比较复杂,于是分享一下我个人的思路。

2024-09-09 15:54:46 234

原创 MySQL的group by与count(), *字段使用问题

理论上,group by [col1, col2…]只能和select [col1, col2…]配合,也就是如果存在group by,那么select的字段必须出现在group by中但是MySQL做出了拓展,允许非聚合字段和聚合字段同时出现并且允许这种形式的SQL出现。

2024-06-10 09:42:54 1081

原创 软件设计师笔记2

cpu控制器,专门产生指令操作,送到计算机各个部位执行处理,在主存与外设之间建立数据同路,直接进行数据交换,无需CPU参与CRC,采用模2运算构建校验位流水线流水线周期和执行时间的计算流水线周期,指的是流水线执行过程中最长的一段。(例如取址5s, 分析3s,执行2s. 那么周期就是5s)执行时间(理论公式),流水线构建时间 + (n - 1) * 流水线周期。其中,流水线构建时间指的是第一条指令完全执行完所需要的时间,n是指令条数执行时间(实践公式)(K + n - 1) x 流水线周期,其中k。

2024-05-26 15:46:33 1054

原创 软件设计师笔记1

确定的有限自动机(DFA),确定的有限自动机是五元组S∑fs0ZS∑fs0​ZS是一个有限集,其每个元素称为一个状态。∑是一个有穷字母表,其每个元素称为一个输入字符。f是 SxΣ→S 上的单值部分映像。f(A,a)=Ω 表示当前状态为 A输入为a时,将转换到下一状态 Ω,称 Ω为A的一个后继状态。s0∈Ss_0\in Ss0​∈S,是唯一的一个开始状态。Z是非空终止状态集合,Z⊆SZ⊆S。

2024-05-26 15:40:04 428

原创 编写Scala工具函数,将leetcode多维数组的String表现形式转换为Array

笔者最近在学习Scala,通过Scala刷leetcode算法来掌握语法。但leetcode对Scala极不友好,且测试样例所需时间非常多。因此需要使用idea进行辅助。但idea并没有封装输入,因此数组的输入封装就成了哥大问题比如[1, 2, 3],若要能让Scala识别,需要改写为Array(1, 2, 3)。如果数组数量增多,维数提高,刷题效率就会收到影响,因此编写本文,提供一个工具函数解决转换问题。

2024-05-13 14:25:24 190

原创 分页、分段、虚拟存储

将一个进程的地址空间划分成若干个大小相等的区域,称为页。相应地,将主存空间划分成与页相同大小的若干个物理块,称为块或页框。在为进程分配主存时,将进程中若干页分别装入多个不相邻接的块中。

2024-05-03 14:10:10 879 3

原创 TCP相关问题总结

假设TCP是两次握手,则可能会发生以下情况客户端发起TCP握手,向服务器发送SYN,但该数据因网络波动滞留此时触发超时重传,重新简历TCP连接当新建立的连接断开后,之前在网络中滞留的SYN连接请求传递到服务端,服务端误以为客户端需要建立TCP连接,因此会发送SYN+ACK请求,并进入连接建立状态,但客户端并不需要建立连接,不会发送数据,因此会造成服务端资源的浪费三次握手可以防止客户端无效连接信息再次到达服务器,导致重新连接之所以需要四次挥手,因为半关闭tcp通道允许双方互相发送数据,数据是双向流动的。

2024-04-23 22:47:07 1344

原创 记录shell编程中$1,$@等符号的含义

笔者最近老是遇到shell中的$相关的题目,于是打算写篇文章记录一下。考虑到并没有特别多需要解释的内容,所以并不会进行介绍,上图上表上代码,让机器说话,machine always right。

2024-04-17 19:33:03 278 2

原创 【前后端的那些事】SpringBoot 基于内存的ip访问频率限制切面(RateLimiter)

限流就是在用户访问次数庞大时,对系统资源的一种保护手段。高峰期,用户可能对某个接口的访问频率急剧升高,后端接口通常需要进行DB操作,接口访问频率升高,DB的IO次数就显著增高,从而极大的影响整个系统的性能。如果不对用户访问频率进行限制,高频的访问容易打跨整个服务。

2024-04-16 21:15:04 1505 4

原创 【Datawhale LLM学习笔记】一、什么是大型语言模型(LLM)

Datawhale LLM学习笔记

2024-04-15 17:09:41 1289

原创 画图理解JVM相关内容

而且,instanceKlass拥有class对象的指针,实例可以通过instanceKlass找到class对象,只是需要两次指针跳跃,所以上图绘制方式其实也并无太大问题。此外,在移动过程中,需要。在控制台上通过指令,查看不到最全面的信息,通过Tools->inspector创建可视化窗口,可以查看最全面的信息,具体如下。当需要进行内存清除时,操作异常容易,因为两个区间在同一时刻只有一个区间存在使用的对象,因此只需要。标记-复制算法,将内存划分为等大的两个空间,一个空间用于存放对象,另一个空间用于预留。

2024-04-05 15:38:01 1290

原创 学生价,leetcode会员购买分析

这么看,数据就一目了然了。该选择何种价格,完全取决于个人需要leetcode会员时间,由上述图可知,如果你需要。最近想要购买leetcode会员,但不知道买啥好,打算用python可视化数据进行一个简单的分析。,那么curve 3才适合你,(因为curve 3比curve 1贵30,但长了半年)不得不说,python真好用啊我靠,以后有时间得狠狠学一波python。,curve 2适合你。

2024-03-30 10:43:21 692 2

原创 【算法】小强爱数学(迭代公式+数论取模)

的值.因为这个结果可能很大所以所有的运算都在模1e9+7下进行.本题实际上就是个数学问题,积累了递推公式雀氏很好做,否则就很操蛋。的值.但小强想请你在已知A和B的情况下,计算出。接下来T行, 每行输入三个整数A,B和n。第一行输入一个正整数T.表示有T组数据。行,每一行表示每组数据的结果.迭代计算,类似斐波那契。

2024-03-23 12:00:47 1120

原创 【算法】子集(LIS最长上升子序列)

因此在排序时,如果x相同,需要按照y降序排序。因为这样在对y进行筛选时,在x相同情况下,只能选择一个y最为最终序列。最终会只能选择3, 8 | 3,7。如果x相同,但是不按照y降序,则可能会选择3,7,8.导致重复选择相同的x,而无法保证x严格递增。dp和bs算法已经有非常多成熟的文章,感兴趣的读者可以自行了解上述两篇文章,本文只给出ac代码。如果我们选择1,2,3红框,无法实现递增序列,因为2,3无法形成双递增序列。(红框元素被绑定死,不能随意组合x,y中任意下标的元素)个物品,每个物品有两种属性。

2024-03-23 11:44:23 932

原创 排序算法记录(冒泡+快排+归并)

冒泡 + 快排 + 归并,这三种排序算法太过经典,但又很容易忘了。虽然一开始接触雀氏这些算法雀氏有些头大,但时间长了也还好。主要是回忆这些算法干了啥很耗时间。如果在笔试时要写一个o(nlogn)的排序算法,如果不能立刻写出 快排或者归并,未免有些太浪费时间了。故写这篇文章用于记录tip: 一下内容均实现升序排序。

2024-03-22 18:07:41 1280

原创 详解最左前缀法则+索引失效

最左前缀是在使用innodb存储引擎索引时,需要遵守的法则。在一个联合索引如,执行查询SQL时,如果查询条件包含索引的最左前缀,那么可以使用联合索引加速查询。对于上述例子,最左前缀包括idx(a)idx(a, b)

2024-03-16 17:55:29 1653 2

原创 MySQL锁整理

MySQL锁太多,内容太杂。写篇文章整理一下

2024-03-16 10:22:02 404 1

原创 详解MySQL的MVCC(ReadView部分解析C++源码)

一种数据库中用于处理并发读写事务的技术。它通过维护数据的不同版本来实现对同一数据项的并发访问,并且在保证事务隔离性的同时,允许读操作无需加锁就能获取一致性的数据视图。

2024-03-13 22:38:02 1473 3

原创 MySQL索引+常见问题详解

网络上的讲述MySQL索引的文章太多了,我打算换个角度来说。我们尝试着从设计者的角度思考,索引为什么这么设计。假如你是索引的设计者,你会如何设计索引。我们不妨以新华字典为例。如果我们要查询汉字爱是什么意思,我们有如下操作ai拼音索引页Aai页码。

2024-03-10 20:07:53 976

原创 万字详解,Java实现低配版线程池

线程池,通过创建了一定数量的线程并将其维护在一个池(即容器)中。当有新的任务提交时,线程池会从池子中分配一个空闲线程来执行任务,而不是每次都新建线程。执行完任务后,线程不会被销毁,而是返回到线程池中等待下一个任务。

2024-03-07 21:56:16 1005

原创 生产者消费者模型

在多线程环境下,一类线程专门生产数据,另一类线程专门消费数据,为了协调两类线程,引入独立的缓冲区作为数据的容器,这一整套数据模型成为生产消费模型。

2024-03-06 19:59:24 457

原创 前端同时传递文件数据+非文件数据,前后端解决方案

之前录制视频《文件上传组件》的时候有位观众提了个问题,如果我没有理解错的话,应该就是前后同时传递文件数据非文件数据,前后端数据该如何接收,这里我给出我自己的解决方案tip:下文在编写前端代码的时候,用到了这篇文章写的组件。

2024-02-29 18:49:11 632

原创 【Leetcode】150. 逆波兰表达式求值

今天做了一道leetcode,题目不算难,基本就是stack的入栈出栈,但我看了一圈别人的代码,感觉不够优雅,所以我想分享一下自己的写法,主要就是用Map和BiFunction优化4个if else。Function,第一个泛型表示函数入参,第二个泛型表示函数返回类型。Java中,函数是能以对象的形式表达。,这就是个自增的函数,我们可以将它赋值给。如果函数需要两个入参,可以使用。

2024-02-23 08:09:17 434

原创 【前后端的那些事】文件上传组件封装

fileUpload.vue组件封装

2024-02-22 13:58:12 1323

原创 【生产遇到的小问题】基本包装类是引用传递,但不能修引用指向的内容,只能改引用的指向

在平时学习过程中,我们很可能会忽略这些内容,但忽视这些内容往往会产生非常操蛋的bug,因此我打算把这些内容整理记录,说不定就是未来的某道面试题。在Java中,基本类型如int,传参的时候是以值的形式进行传递;基本类型的包装类如Integer,传递的是引用。在main中调用change函数,因为引用传递,change的b1同时指向堆中的Boolean.FALSE。main的a1和change的a1都指向同一个数据块,这和Java一致。这个时候有的同学可能会迷糊,我C,C++写的时候可没这么麻烦呀?

2024-02-20 11:48:33 395

原创 Collectors.toMap使用记录

我有一个enum枚举类,其中含有3个枚举常量。我现在需要将这三个枚举常量统一转化为Map结构的数据。key是enum的code,value就是enum本身。最近看到一行比较有趣的代码,他的功能就是将List转换为Map。我觉得挺有意思的,先前没遇到过,于是打算写篇文章记录一下。我们逐步介绍一下这行代码的功能。下方代码可以一行实现这个功能。

2024-02-19 14:08:04 428

原创 【前后端的那些事】2万字详解WebRTC + 入门demo代码解析

WebRTC是一项允许网页浏览器进行实时音视频通信的技术标准。旨在实现在浏览器之间直接进行点对点的音频、视频以及数据共享,无需安装任何插件或额外软件。ICE全称Interactive Connectivity Establishment ,是一种交互式连接框架,他允许两个设备进行p2p通讯。在进行p2p通讯过程中,存在诸多问题,就比如两个客户端(下文均以A,B为代称)他们如何发现对方,通讯信息是否会被防火墙拦截等等问题。为了解决p2p通讯过程中存在的阻碍,ICE采用了STUN或者TURN服务解决这些问题,而

2024-02-11 16:49:48 2301 2

原创 Failed to construct ‘RTCIceCandidate‘ sdpMid and sdpMLineIndex are both null

最近在搞webrtc,在编写函数处理远端传递来的candidate时报错了,具体信息如下。国内关于webrtc的资料很少,所以去国外社区转了一圈,回来记录一下报错的解决方案。为null了,看了看RTCIceCandidate的原码,基本就能判断出应该是对端传递candidate的时候没传递这两个值。这篇文章提供了上面这个项目的源码(前端+后端)但还未整理,后续我会发布有关webrtc入门demo的文章和各位分享。然后重启项目我们会发现报错消失了,并且也能显示出我们想要的效果,webrtc能够正常搭建。

2024-02-10 20:35:21 1037

原创 【前后端的那些事】webrtc入门demo(代码)

龙年到了,先祝福各位龙年快乐,事业有成!最近在搞webrtc,想到【前后端的那些事】好久都没有更新了,所以打算先把最近编写的小demo发出来。p2p webrtc的demo在编写的时需要编写人员以不同的客户端角度出发编写代码,因此对编码造成一定的障碍,详细的介绍文章不是特别好写,所以我打算先把demo代码先分享出来,后续再进一步整理效果/src/api/webrtc.tsvue界面/src/views/welecome/index.vue后端modelClient.javaMessage.jav

2024-02-10 20:33:04 1402

原创 JavaGUI之SWT框架【阶段练习】

SWT基础部分的内容以全部写完,现在让我们将以前学到的知识综合到一起,写一个小demo(无交互功能)

2024-02-04 11:52:11 1079 1

原创 妙用Java反射,让代码更加优雅

记录遇到的能够使用反射机制很好解决的问题场景

2024-02-02 15:38:27 378

原创 JavaGUI之SWT框架【GridLayout】

在GridLayout布局的影响下,面板容器会被划分为若干个网格,在进行布局时会按照从左到右,从上到下的顺序填充容器。由下图可以看出,一开始水平控件不够的情况加,第三个button长度是被压缩的。verticalAlignment控制组件在单元格中垂直方向上的布局,其参数和样式均和horizontalAlignment一致,故不在赘述。进行布局时,如果一行的所有列都填充完成后,则会换行填充。GridData是layout data的一种,专门用于控制GridLayout控制下,组件的布局。

2024-02-02 11:42:06 1328

原创 JavaGUI之SWT框架【RowLayout】

RowLayout是托管布局的一种,它的布局理念是将面板容器按照行来划分,优先填充行。当行填充满或无剩余空间时,填充下一行。RowLayout与FillLayout不同的是,FillLayout是以整个容器面板为单位进行填充,RowLayout则是将面板划分为若干行,以行为单位进行填充。除此之外,RowLayout填充时,会按照组件自动分配大小,而不是像FillLayout那样为所有组件设置同样的大小RowLayout。

2024-02-01 11:53:29 1064

原创 JavaGUI框架之SWT【布局FillLayout】

终于来到我最喜欢的部分——。可以说布局就是SWT的灵魂,甚至毫不夸张地说,布局时所有展示的界面都必须掌握的技术。布局如此重要,那么我们该怎么理解布局这个概念呢?我们以Button这个组件为例子,如果将他放在Shell上,那么他该?这些都是布局控制的内容。

2024-02-01 10:08:55 1044

原创 JavaGUI之SWT框架 【SashForm CBanner】

SashForm分割窗,能够将容器面板进行切割,分为两块。SashForm分割的方向有两种,一种是水平分割,另一种是垂直分割。其中int[]数组的元素个数等于绑定sashForm面板的元素的个数。如果想要在已经分割的窗口上继续分割,可以在窗口上继续绑定SashForm。请注意,在SashForm中,HORIZONTAL表示的是垂直划分。请注意,在SashForm中,VERTICAL表示的是水平划分。CBanner将容器划分为三个部分,左侧,右侧,底栏。SashForm的创建方式如下。

2024-01-31 14:32:15 535

原创 JavaGUI之SWT框架【面板容器类 选项卡TabFolder】

CTabFolder的功能要比TabFolder更加强大, 但创建方式几乎一样. 不同的是组件创建前都加了一个C创建效果当窗口大小过小时, 自动产生的效果.设置方式描述样式SWT.BOTTOM底部显示SWT.CLOSE关闭最小化 最小化SWT.BORDER边框tip: 最大化,最小化设置后,仅仅可见相应按钮. 如果不配置相应触发事件, 点击后不会有任何的效果被触发。

2024-01-31 10:28:02 1679

原创 JavaGUI之SWT框架【面板容器类 分组框Group】

我们为什么需要面板容器呢?试想一下,如果我们想shell中添加100个组件,那么对shell的管理将成为一个灾难,如果我们将100个组件。tip: Group绑定shell还是composite都行,shell本身也是Composite的子类。上,那么管理起来就容易得多了,而且排布得也会更加清晰。面板容器类的继承关系如下,下述有如下几个子类非常重要。Group是一类能够显示标题的面板容器,创建方式如下。

2024-01-30 16:25:16 467

空空如也

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

TA关注的人

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