- 博客(33)
- 收藏
- 关注
原创 分布式数据一致性协议之NWR协议
NWR协议是一种用在分布式数据库中的机制,用来确保数据在多台机器上存储时的一致性和可靠性。简单来说,就是保证数据在分布式系统中能够被正确读取和写入的一套规则。NWR协议是用来管理和控制数据在分布式数据库中的一致性的。它通过设置写和读的节点数,保证每次操作都能返回最新的正确数据。选择合适的W和R值可以在性能和数据一致性之间找到平衡。
2024-08-01 16:21:26
507
原创 场景下看看Base理论
BASE理论作为CAP定理的一种权衡策略,通过在一致性上做出让步,来确保系统的高可用性和分区容忍性。通过基本可用、软状态和最终一致性,BASE理论提供了一种应对大型分布式系统中一致性挑战的方法。在实际项目中,如电商网站、分布式缓存系统和社交媒体平台,BASE理论被广泛应用,以保证系统在高负载和故障情况下的稳定运行。
2024-08-01 11:20:17
1102
原创 Java发展过程中,JVM的演进
在Java 6 和 Java 7 中,JVM的垃圾回收器得到了显著改进。Java 6 引入了并发标记清除(Concurrent Mark-Sweep, CMS)垃圾回收器,提升了垃圾回收的效率。Java 7 引入了Garbage First(G1)垃圾回收器,它能够更好地处理大堆内存,减少垃圾回收对应用程序的停顿时间。GraalVM提供了比传统JIT编译器更好的优化,并支持提前编译(AOT, Ahead-Of-Time),使得Java应用可以编译成本地代码,提高启动速度和整体性能。
2024-07-11 17:28:10
652
原创 在 CentOS 上安装 Docker Engine
Docker 是啥之类的就不必多说了,直接上安装步骤。官网安装教程地址:https://docs.docker.com/engine/install/centos/
2024-07-01 17:20:37
607
原创 简单聊聊JSX
JSX 是 JavaScript XML 的缩写,是 React 中用来描述用户界面的语法(其实可以看作是JavaScript的扩展语法)。
2024-06-24 15:35:54
1036
原创 分布式ID生成方案之雪花算法
当我首次接触到这个算法时,便被其富有诗意的名字所吸引。雪花,亦称未央花,"未央"意味着永恒与无限,象征着希望与未来,代表着光明与前行的道路。言归正传,自然界中存在一种现象:据说不存在两片完全相同的雪花,每一片在形成时都会展现出其独特的形态与纹路。雪花算法这个名字,象征该算法能生成一个全局唯一且不重复的标识符。在分布式系统中,数据一般都被分散存储在不同的节点上,由于数据被分散存储在不同的节点上,为了确保每个数据项的唯一性,就需要这样一套机制来生成不会重复的ID。这个不会重复的ID就是分布式ID。全局唯一性。
2024-06-20 11:09:42
1041
原创 HttpClient Overview(翻译)
超文本传输协议 (HTTP) 可能是当今互联网上使用的最重要协议。Web 服务、支持网络的设备和网络计算的增长不断扩大 HTTP 协议的作用,使其不再局限于用户驱动的 Web 浏览器,同时增加了需要 HTTP 支持的应用程序数量。HttpClient的设计既支持扩展,又为基础HTTP协议提供了强大的支持,因此它对任何构建HTTP感知客户端应用程序(如网络浏览器、网络服务客户端或利用或扩展HTTP协议进行分布式通信的系统)的人来说可能都是有用的。
2024-06-05 14:43:30
1030
原创 大白话聊聊MySQL查询之五子句(知识简单但重要)
在日常开发中,查询数据占很大的比重,在使用 MySQL 数据库进行查询时,我们经常需要通过各种条件和规则来筛选和排序数据。要实现这些功能,就不得不使用以下这些子句:WHERE、ORDER BY、GROUP BY、HAVING 和 LIMIT。那,接下来,我就用简单易懂的语言详细介绍这些子句的作用和用法。
2024-05-24 15:58:54
667
原创 MySQL 数据类型详解及在 Java 中的使用场景
在数据库设计和 Java 开发中,选择合适的数据类型和对应的 Java 类型是至关重要的。本文将详细介绍 MySQL 的各种数据类型,并结合 Java 的使用场景及注意事项。
2024-05-17 11:38:45
1035
原创 简单聊聊分布式和集群
分布式和集群,我们都听的比较多,分布式系统和集群的概念对于刚进入职场的小伙伴可能不是很清楚,这篇文章我们就一起看看两者到底是什么,有什么区别。分布式系统(Distributed System)是由多个相互独立的计算节点组成的系统,这些节点通过网络相互通信与协作,以实现共同的目标。分布式系统的设计思想是将计算任务分散到不同的节点上,每个节点负责特定的子任务,从而提高系统的整体性能、可靠性和可扩展性。
2024-05-15 16:16:52
967
4
原创 大白话理解IoC和DI
IoC( Inversion of Control ) 它是一个技术思想,不是一个技术实现。它描述的是 Java开发领域对象的创建,管理问题,我们看了上面的图就知道在传统开发中,存在依赖时,往往都会new一个依赖的对象,那么在IoC 思想下,就不用去new 对象了。而是由IoC容器去帮我们实例化对象并且管理它。为什么叫控制反转呢?1.控制了什么?控制了对象创建、管理的权力2.反转了什么?将控制权交给了外部(IoC容器)
2024-04-30 16:47:48
799
1
原创 Java开发为什么选择ORM框架而不用JDBC呢(通常来说)?
在使用Java开发中,大概率会与数据库交互,在很早时候,我们使用JDBC(Java Database Connectivity)来执行SQL语句和访问数据库。后来,随着ORM(Object-Relational Mapping)框架的出现,我们就没有直接使用JDBC了,而是用封装了JDBC的ORM框架,并提供了更高级别的抽象,以简化数据库操作。那两者有什么区别,以及为什么在企业开发中基本都使用ORM框架而不是直接使用JDBC呢?接下我我们一起看看。维基百科是这样说的。
2024-04-19 13:01:48
773
1
原创 记录一条不难但包括了常见操作的SQL查询
这条SQL 还是比较简单,不过涉及了一些常见的SQL操作和技巧,包括联接(JOIN)、条件筛选(WHERE)、聚合函数(COUNT)、条件判断(CASE WHEN)、子查询等。
2024-04-18 11:11:34
166
原创 记录一次StackOverflowError解决思路
我们看一下维基百科是怎么解释的呢?(在软件中,如果调用堆栈指针超出堆栈界限,就会发生堆栈溢出。调用堆栈可能包含有限数量的地址空间,通常在程序开始时确定。调用堆栈的大小取决于许多因素,包括编程语言、机器体系结构、多线程和可用内存量。当程序尝试使用比调用堆栈上的可用空间更多的空间时(即,当它尝试访问超出调用堆栈边界的内存时,这本质上是缓冲区溢出),则称堆栈溢出,通常会导致程序崩溃。简单了解一下之后,看看我遇到的问题。
2024-04-01 16:14:01
348
原创 ThreadLocal:解析简单易懂的多线程局部变量
在实际工作中,若用到多线程,就会遇到共享变量的问题,也就是在不同的线程间共享变量的值,这个时候就会用到同步机制。比如关键字或锁对象。这些机制确保了在任何时候只有一个线程能够访问共享资源,防止了并发访问时可能出现的冲突。然而,ThreadLocal类提供了一种不同的方法来处理线程安全问题。ThreadLocal允许我们创建仅对创建它们的线程可见的变量。这意味着每个线程都有自己的变量副本,不会与其他线程发生冲突。下面我们一起从它的定义、使用场景、优缺点、注意事项、原理分析等方面了解ThreadLocal。
2024-03-28 15:54:19
899
原创 在Windows系统下安装Node Version Manager (nvm)
Windows系统下安装Node Version Manager (nvm)
2024-03-21 11:48:03
527
原创 真实场景运用Springboot +策略模式
在真实开发中,我们经常需要处理不同类型的对象,但是对他们的操作是相同或者类似的,在这种场景下,策略模式就派上用场啦,我之前也看过不少文章,但是看的云里雾里,看完还是不知道怎么用,那么,在这篇文章中,我也不写理论的东西,直接上代码,和大家一起交流,一起学习。通过使用策略模式,我们成功地将不同类型的浏览量递增操作进行了解耦,使得系统更加灵活和可维护。每个具体业务类都可以独立地进行扩展和修改,而不会影响到其他部分的代码。以上就是一个简单的Spring Boot + 策略模式的实战示例。
2024-01-29 17:15:46
764
原创 Open Swagger & Java 规范
从SpringFox迁移到SpringDoc,从Swagger3开始,SpringFox更新进度缓慢,SpringDoc相较于SpringFox具有更明显的优势,相较 SpringFox来说,SpringDoc的支撑时间更长,无疑是更好的选择。开发人员参照本规范文档进行配置前,请引入以下依赖,目前最新版本为1.5.12,后续会根据版本更新进行改动。依赖引入配置文件和配置类依赖引入完毕后,需进行相关配置,配置分为配置文件和配置类两种,下面将分别进行说明配置项是否必需作用配置值这里只列举一些常用配置,
2023-05-31 17:31:15
3106
原创 踩坑之Java接收Microsoft Date
这两种格式在.NET平台中常用,用于表示日期和时间的序列化和反序列化。在Java中,可以使用自定义的日期反序列化器(如提供的DateDeserializer类)来解析这种格式的时间字符串,并将其转换为Java的Date对象或其他适当的类型。这两种时间格式都是Microsoft JSON日期格式(Microsoft JSON Date format)的变种,也被称为.NET JSON日期格式(.NET JSON Date format)。这种格式只包含日期的毫秒数,没有时区偏移量。先看一下时间格式:如下。
2023-05-30 16:33:19
676
原创 刚开始工作时总结的一些经验
前言:软件开发工程师、程序员、码农。其实说的就是我们。但是,我更喜欢软件开发工程师,而不是码农。说到这个就会提到工程师文化,工程师是有创新冲动的,是自我驱动的、是讲团队合作的、是热衷技术的…是乐于分享的、等等等太多了。 码农虽然是自嘲、但是,我个人是不喜欢的,因为 不想做代码生成器。哈哈哈,更喜欢软件开发工程师这个称谓。对于刚入行的我们,需要注意哪些问题呢?很久以前,就想写这样一篇文章,但是笔力有限、精力有限。拖到今天才开始动笔。就以下面这些方面简单说一下。沟通交流是开发者最重要的,你不仅要能听懂别人说的,
2022-11-18 16:14:25
199
原创 深入理解数组:从概念到实践
我们在了解/学习一个新技能之前,都会先了解这个技能的概念。搞清楚是用来干嘛的,能解决什么问题、这样的话,方便后面正确的打开。正所谓磨刀不误砍柴工嘛。
2022-09-21 00:36:42
387
1
原创 一文看懂ArrayList的自动扩容
看以上源码,我们每次往ArrayList中塞入数据的时候,都会判断一下,当前数据的元素是否塞满了,如果塞满的话,此时就会扩容这个数据,让后将老数组的元素拷贝到新的数组中去。从上面我们知道,若我们使用的是默认数组的大小,也就是10,如果我们已经往数组里面插入了10个元素了,那么现在数组的size=10 ,capacity=10,:对于数组,我们都知道,当你往数组的中间插入元素的时候,会让新插入元素位置的后面的元素全部往后挪动一位。数组扩容的时候,old数组的大小+old数组的大小>>1 就得到新的数组大小。
2022-06-10 18:22:30
1873
原创 C#集合篇之--列表List<T>
列表.NET Framework 为动态列表提供了泛型类List<T> 这个类实现了 Llist、ICollection、IEnumerable、IList<T> 、ICollection<T>和IEnumerable<T> 接口。1、创建列表调用默认的构造函数就可以创建列表对象:var int intList=new List<int>(); 这是一个int 类型的List 泛型类。使用默认的构造函数创建一个空列表。当我们将元素添加到列表
2021-06-28 18:19:41
5618
2
原创 一个nodejs环境变量引起的问题
今天在vs code npm run dev Vue 项目的时候,被 'node' is not recognized as an internal or external command, operable program or batch file 这个问题折腾了很久,查了google 发现出现这个问题是因为环境变量出了问题,但是我查看了我的环境变量,发现path 里面我是配了 C:\Program Files\nodejs 这个的,所以,我觉得我的环境变量是没有问题的。 但是,这........
2021-05-22 18:05:33
10036
9
原创 javaScript实现文本复制功能
最近遇到了需要复制字符串到粘贴板便于用户操作的需求,发现大部分文章都写的不是那么简洁和满意。我现在将自己的方法放到下面<div id="copypw" class="hotelea hoteldc"> <input id="copypassword" type="hidden" value="husu" /> <a href="javascript:void (0)" onclick="copyPassword()">复制</a><
2021-01-29 16:05:45
379
原创 C#实现发送QQ邮件并添加附件
之前在公司遇到一个需求需要发送邮件并需要添加附件,我当时用了QQ的SMTP实现了发送邮件的功能。现在记录一下。并做了简单的封装。有不对的地方,请大家多多包涵,一起交流学习一、准备工作,要使用SMTP发送邮件,首先需要去QQ的邮箱配置。步骤如下1、打开QQ邮箱2、点击设置3、点击账户4、开启下图这两个服务,并拿到授权码,之后发送邮件的地方需要。代码如下,已做了简单的封装下面的邮件信息,我没有直接写在发送代码中,而是写在了配置文件web.config中,这样的好处是:在以后的维护中,需要修
2020-12-01 12:52:20
1496
6
原创 HTTP的几种请求方法及其用途
1、Get方法发送一个请求来取得服务器上的某一资源2、Post方法向URL指定的资源提交数据或附加新的数据3、Put方法跟Post方法很像,也是向服务器提交数据,但是,Put指向了资源在服务器上的位置,而Post没有4、Head方法只请求页面的首部5、Delete方法删除服务器上的某资源6、Options方法它用于获取当前URL所支持的方法。如果请求成功,会有一个Allow的头包含类似“Get,Post”这样的信息7、Trace方法Trace方法被用于激发一个远程的,应用层的请求消
2020-11-08 12:34:10
2533
原创 递归算法的经典面试题
1、注意:由于线程栈有固定的大小,如果进行递归的层次太深,有可能会出现溢出常见面试题:有一组数1、1、2、3、5、8、13、21、34…,要求用递归算法算出这组数的第30个数字是多少?```csharppublic int GitNumber(int i){if(i<=0) //判断数值是否小于0return 0; //返回数值0else
2020-05-18 23:25:24
1542
1
原创 什么是 Razor?
当服务器读取页面时,它首先执行Razor代码,然后将生成的HTML页面发送到浏览器。服务器上执行的代码能够完成一些在浏览器上无法实现的任务,例如访问数据库。服务器代码可以生成动态的HTML内容,这些内容与静态HTML内容在浏览器上的呈现方式相同。Razor使用C#语法规则,并在服务器上执行代码,生成最终的HTML页面发送到浏览器。这样可以创建动态的Web内容,并且能够执行复杂的任务,比如访问数据库。Razor是基于ASP.NET的,它继承了ASP.NET的功能,但提供了更简单易用的语法。
2020-02-19 14:32:29
5723
2
原创 C#常用字符串的属性和方法
一:System.String 提供了很多处理字符串的方法。如下常见的成员。1、Length :这个属性返回当前字符串的从长度。2、Compare():这个方法比较两个字符串.3、Contains():这个方法用于判定当前字符串是否包括一个指定的子字符串。4、Equals():这个方法测试两个字符串对象是否有同样的字符数据。5、Format():这个静态方法使用其他基本类型(如数值数据和...
2019-12-25 15:40:21
792
1
原创 C#流程控制(详细)
概念:程序流程就是C#代码的执行顺序,流程控制的两种方法分别是分支和循环。分支是根据计算的结果有条件地执行代码,例如,“只有A<10,才执行这行代码”。 循环重复执行相同的语句(重复执行一定的次数,或者在满足测试条件后停止执行)。一:分支:是控制下一步要执行哪行代码的过程。要跳转到的代码行由某个条件语句来控制。这个条件语句使用布尔逻辑,对测试值和一个或多个可能的值进行比较。在C#中,分...
2019-08-26 13:50:33
2588
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人