计算机
文章平均质量分 89
xuhss_com
这个作者很懒,什么都没留下…
展开
-
可落地的DDD(7)-战术设计上的一些误区
店铺服务觉得是11的关系,对外提供的服务有根据sellerId获取店铺信息,所以其他调用方就无意识的直接引用了卖家id,这样也可以拿到店铺。完整的用例集才能推导出正确的模型,所以当有变化时,首先调整用例集,再来修改领域模型。通常反复出现的主语和宾语中的名词就是模型对象,比如市场人员创建一个活动,活动就是一个模型对象。最近两年有些新的落地体验,回过头来发现,当初对这些概念的理解还是没有深入,这篇文章重新阐述下。在推导的过程中,我们是按照自底向上的方式推导的,最后我们呈现出来的结果是按照如下方式。...原创 2022-07-15 12:54:34 · 233 阅读 · 0 评论 -
阈值PSI代码
用FHE实现,效率是显而易见的!原创 2022-07-15 01:17:18 · 293 阅读 · 0 评论 -
Python进程管理神器——Supervisor
Supervisor 是一款 Python 开发的进程管理系统,允许用户监视和控制 Linux 上的进程,能将一个普通命令行进程变为后台守护进程,异常退出时能自动重启详细介绍查阅:Supervisor IntroductionSupervisor 支持 Linux 和 Mac,不支持 Windows本文系统为: 安装完成后,在Python 下面会有这样几个文件。注:由于python bin目录是加入了环境变量,所以可以直接执行这几个文件。若报错 -bash: /etc/supervisord.co原创 2022-07-14 12:46:06 · 511 阅读 · 1 评论 -
【一知半解】AQS
字面意思是,使用一个修饰的的,通过一个完成资源获取的排队工作,把每个参与资源竞争的线程封装成一个来实现锁的分配。AQS同步队列的基本结构当一个线程获取锁时,首先判断state状态值是否为0如果state==0,则通过CAS的方式修改为非0状态修改成功,则表明获取锁成功,执行业务代码修改失败,则把当前线程封装为一个Node节点,加入到队列中并挂起当前线程如果state!=0,则把当前线程封装为一个Node节点,加入到队列中并挂起当前线程AQS获取锁过程首先调用去修的状态值,成功就获取当前原创 2022-07-14 01:17:04 · 152 阅读 · 0 评论 -
Java开发学习(十一)----基于注解开发bean作用范围与生命周期管理
前面使用注解已经完成了bean的管理,接下来将通过配置实现的内容都换成对应的注解实现,包含两部分内容:和。首先准备环境:添加一个配置类添加BookDao、BookDaoImpl类创建运行类App最终创建好的项目结构如下:(1)先运行App类,在控制台打印两个一摸一样的地址,说明默认情况下bean是单例(2)要想将BookDaoImpl变成非单例,只需要在其类上添加注解再次执行App类,打印结果:(1)在BookDaoImpl中添加两个方法,和,方法名可以任意(2)如何对方法进行原创 2022-07-13 12:47:45 · 162 阅读 · 0 评论 -
聊聊 C++ 中几类特殊成员函数
在 C# 中要说默认给我们定义的特殊成员函数,莫过于 ,但在 C++ 中这样的特殊函数高达 6 种,有必要整合一下聊一聊。和 C# 一样,很多书中都说,如果用户没有定义 ,那么编译器会给我们定义一个,参考下面的例子:接下来观察下汇编代码,看下有没有调用 .对于 C# 学习者来说有点懵哈,定义了就相当于new了, 哈哈,这是因为 C++ 默认都是值类型哈,不过这里有必要澄清一下,并不一定所有情况都会调用 ,因为 C++ 的汇编生成由各自 编译器 来决定,如果 觉得没必要调用 那它就会把这一步省掉来加原创 2022-07-12 12:43:22 · 205 阅读 · 0 评论 -
一个月后,我们又从 MySQL 双主切换成了主 - 从!
这是悟空的第 157 篇原创文章官网:www.passjava.cn你好,我是悟空。一个月前,我们在测试环境部署了一套 MySQL 高可用架构,也就是 MySQL 双主 + Keepalived 的模式。详情看这篇:实战 MySQL 高可用架构在这一个月遇到了很多坑:造成上面问题的主要原因就是因为两个节点都支持写入 + 双主可以随时切换。解决这种问题的方案有 改进自增主键的步长(影响未评估),使用 GTID 方案(未验证)。即使这样,双主同步的风险还是有,而且不同步后,如何处理是个大难题。那么回到我们最初的原创 2022-07-12 01:16:41 · 144 阅读 · 0 评论 -
JUC源码学习笔记1——AQS和ReentrantLock
一丶Lock锁是用来控制多个线程访问共享资源的方式,一般来说,一个锁可以防止多个线程同时访问共享资源(这种锁称为独占锁,排他锁)但是有些锁可以允许多个线程并发访问共享资源,比如读写锁3.使用Lock的经典范式获取锁的过程不要写在try中,避免获取锁失败最后finally释放其他线程持有的锁使用一个int成员变量state表示同步状态,内置的FIFO队列来完成资源的获取和线程的排队工作,支持独占也支持共享的获取同步状态。三个变量被volatile修饰,保证其线程可见性等待状态是一个枚举,具备下列可选的值原创 2022-07-11 01:16:56 · 224 阅读 · 0 评论 -
dolphinscheduler简单任务定义及复杂的跨节点传参
转载请注明出处 https://blog.csdn.net/funnyzpc/p/16395094.html是一款非常不错的调度工具,本文我就简称ds啦,可单机可集群可容器,可调度、、、,也可使用、、、等语言及工具,功能强大类型丰富,适合各类调度型任务,社区及项目也十分活跃,现在github中已有8.2k的star👍所以,本篇博文开始会逐步讲一些ds相关的东西,也期待各位同行能接触到此并能实际解决一些生产上的问题~😁(表结构)(表数据)因为个人使用的的数据库,如果您是或者其他数据的用户,请自行更..原创 2022-07-09 12:47:03 · 1685 阅读 · 0 评论 -
Python迷宫生成器
作为一项古老的智力游戏,千百年来迷宫都散发着迷人的魅力。但是,手工设计迷宫费时又耗(脑)力,于是,我们有必要制作一个程序:迷宫生成器……好吧,我编不下去了。但是,从上面的文字中,我们可以看出,我们此次的主题是:用Python实现一个迷宫生成器。首先展示一下效果图:我们先分析一下所需的库:既然是生成器,每次生成的迷宫一模一样显然是说不过去的。因此,我们不可避免地要使用随机数(Random库)。迷宫一定是要绘制的,所以需要有一个GUI库或绘图库,这里我使用Pygame(Tkinter或Turtle其实都可以做到原创 2022-07-09 01:16:04 · 461 阅读 · 0 评论 -
【cartographer_ros】五: 发布和订阅陀螺仪Imu信息
上一节介绍了里程计Odometry传感数据的订阅和发布。本节会介绍陀螺仪Imu数据的发布和订阅。陀螺仪在cartographer中主要用于前端位置预估和后端优化。目录1:sensor_msgs/Imu消息类型2:发布Imu消息3:订阅Imu消息在终端查看消息数据结构:Odometry消息类型数据结构如下:其中linear_acceleration表示线加速度,angular_velocity表示角速度,orientation表示姿态,使用四元数表示。covariance表示对应协方差,体现各个数据的误差原创 2022-07-08 12:48:33 · 1055 阅读 · 0 评论 -
写了个 Markdown 命令行小工具,希望能提高园友们发文的效率!
笔者使用 Typora 来编写 Markdown 格式的博文,图片采用的是本地相对路径存储(太懒了不想折腾图床)。时间久了发现有两个明显的痛点:虽然社区中有类似的工具,但是多少感觉用着不顺手,索性自己造了个小工具。支持多 Markdown 文件,多层次文件嵌套!不会覆盖原始 Markdown 文件。下载地址及使用文档移步 github/marker,如果有帮助到你,不妨点个 Star 鼓励我一下,感谢~使用有任何问题欢迎提 issue。https://github.com/stulzq/dotnet-cnb原创 2022-07-08 01:17:54 · 259 阅读 · 0 评论 -
CSS基本知识点——带你走进CSS的新世界
我们在学习HTML之后,前端三件套第二件便是CSS,但CSS内容较多,我们分几部分讲解:(如果没有学习HTML,请参考之前文章:HTML知识点概括——一篇文章带你完全掌握HTML>)如果说HTML为网页提供内容,那么CSS就是为内容进行装饰,为网页进行布局CSS可以控制整体框架,控制文本字体,大小等诸多事宜CSS基本语法只有一条:元素显示模式首先我稍微解释一下元素显示模式:HTML的元素类型模式:我们先讲解一下块元素:我们再来讲解一下行内元素:最后我们介绍一下行内块元素:这些属性并非都是绑定的,我们可以原创 2022-07-07 12:50:52 · 358 阅读 · 0 评论 -
Linux 批量杀死进程(详细版本)
当程序中有使用到多进程且进程数较多的情况,如下图,且需要通过控制台杀死所有的 GSM_run.py 的进程时,利用 kill 命令一个一个的去结束进程是及其耗时且繁琐的,这时就需要我们的kill多进程的命令工作了。命令:1er-hljs命令说明 :1、管道符 “|” 用来隔开两个命令,管道符左边命令的输出会作为管道符右边命令的输入。2、“ps -ef” 是 查看所有进程其中 ps -aux 也是查看所有进程 不过两者右以下区别:(1)是System V展示风格,而是BSD风格 Unix操作系统在原创 2022-07-06 06:30:54 · 2237 阅读 · 0 评论 -
使用纯 CSS 实现超酷炫的粘性气泡效果
最近,在 CodePen 上看到这样一个非常有意思的效果:[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-h9gfqLEW-1656996688611)(https://p9-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/dfdaaa08049e4df49e047e973c5106ad~tplv-k3u1fbpfcp-watermark.image?)]这个效果的核心难点在于气泡的一种特殊融合效果。其源代码在:CodePen Demo – Goe原创 2022-07-05 12:52:32 · 636 阅读 · 0 评论 -
# Vue3 toRef 和 toRefs 函数
上一篇博文介绍了 vue3 里面的 ref 函数和 reactive 函数,实现响应式数据,今天主要来说一下 toRef 函数和 toRefs 函数的基本使用。通过上一篇博客,我们知道,ref 函数可以创建一个响应式的数据,那 toRef 函数同样也是创建一个响应式的数据,那么他们之间的区别是什么呢?首先一点,ref 函数他的本质其实是去拷贝一份数据,脱离了与源数据的交互。什么意思呢?就是 ref 函数可以将对象里面的属性值变成响应式的数据,修改响应式数据,是不会影响到源数据,但是视图层上的数据会被更新。但原创 2022-07-05 07:32:37 · 2976 阅读 · 1 评论 -
.NET程序配置文件操作(ini,cfg,config)
在程序开发过程中,我们一般会用到配置文件来设定一些参数。常见的配置文件格式为 ini, xml, config等。.ini文件,通常为初始化文件,是用来存储程序配置信息的文本文件。.NET 框架本身不支持 INI 文件,可以利用 Windows API方法使用平台调用服务来写入和读取文件。一般会封装一个类来调用该API方法。CFGSharpConfig 是 .NET 的CFG/INI 配置文件操作组件,以文本或二进制格式读取,修改和保存配置文件和流。Config在 App.config/web.原创 2022-06-30 01:15:46 · 359 阅读 · 0 评论 -
arcgis创建postgre企业级数据库
什么是企业级地理数据库?企业级地理数据库(ArcSD Enterprise,sde)是和 arcGIS 套件集成程度最高的地理数据库;创建时需要用到安装 arcGIS Server 时的 【 证书】。他是 arcGIS 在第三方数据库的基础上采用了自定义的存储结构而搭建起来的数据库,所以,你虽然可以在 postgreSQL 的 pgAdmin III 中看到 sde 的存储信息,但是无法通过 arcGIS Desktop 之外的软件解析这些数据。由于侧重点不同,企业级数据库(sde) 的稳定性虽然得到了增强原创 2022-06-29 12:42:36 · 1248 阅读 · 0 评论 -
ThreadLocal的简单理解
目录* 一、背景最近有人问我是如何做到在每个线程中的值都是隔离的,此处写篇文章来简单记录下。比如:用户登录成功后,需要将保存起来,以方便在系统中的任何地方都可以使用到,那么此时就可以使用来实现。例如:中的类。ThreadLocal的实例推荐使用来修饰。:这个是线程类,在这个类中存在一个变量,具体的类型是。2、看下set方法是如何实现的通过上方的代码,我们可知: 当我们向ThreadLocal中设置一个值,会经过如下几个步骤:五、ThreadLocalMap中的hash冲突是如何处理的1、原创 2022-06-28 12:44:25 · 105 阅读 · 0 评论 -
深入解析kubernetes controller-runtime
controller-runtime 是 Kubernetes 社区提供可供快速搭建一套 实现了controller 功能的工具,无需自行实现Controller的功能了;在 与 也是使用 。本文将对 的工作原理以及在不同场景下的使用方式进行简要的总结和介绍。 主要组成是需要用户创建的 和 以及 自己启动的 和 。图:controller-runtime structure图:controller-runtime flowchart由图可知,Controller会向 Informer原创 2022-06-28 01:18:06 · 495 阅读 · 0 评论 -
【系统设计】邻近服务
在本文中,我们将设计一个邻近服务,用来发现用户附近的地方,比如餐馆,酒店,商场等。从一个小明去面试的故事开始。面试官:你好,我想考察一下你的设计能力,如果让你设计一个邻近服务,用来搜索用户附近的商家,你会怎么做?小明:好的,用户可以指定搜索半径吗?如果搜索范围内没有足够的商家,系统是否支持扩大搜索范围?面试官:对,用户可以根据需要修改,大概有以下几个选项,0.5km,1km,2km,5km,10km,20km。小明:嗯,还有其他的系统要求吗?面试官:另外还需要考虑的是,系统的低延迟,高可用,和可扩展性,以及原创 2022-06-27 12:44:35 · 206 阅读 · 0 评论 -
【Nginx】Windows平台下配置Nginx服务实现负载均衡
前言:废话不多说了,直接上步骤。系统环境:win10测试用的开发环境和服务类型:VS2022 + DotNet 6 + WebApi1、本地先创建一个webapi项目,用于测试使用。2、新建一个API控制器,里面只提供一个Post请求类型的测试方法。如果不晓得怎么创建webapi项目,可以围观我的其他博客文章来了解,博客地址:【包括gRPC\minimalApi\传统Webapi】https://blog.csdn.net/weskynet/p/15677719.html3、下载Nginx,下载地址:htt原创 2022-06-27 01:16:09 · 561 阅读 · 0 评论 -
剖析虚幻渲染体系(16)- 图形驱动的秘密
目录* 16.1 本篇概述+ 16.1.1 本篇内容+ 16.1.2 设备驱动概述+ 16.1.3 图形驱动概述迄今为止,博主在博客中阐述的内容包含图形API、GPU、游戏引擎、Shader、渲染技术、性能优化等等技术范畴内容,但似乎还未涉及图形驱动的内幕。本篇将站在应用层开发者的视角,去阐述图形驱动的相关技术内幕(如果是驱动开发者,则博主不认为是目标读者),主要包含但不限于以下内容:要给“驱动”一词下一个准确的定义是一个挑战。从最基本的意义上讲,驱动程序是一个软件组件,它允许操作系统和设备相互通信。原创 2022-06-26 12:45:57 · 2049 阅读 · 0 评论 -
(数据科学学习手札139)geopandas 0.11版本重要新特性一览
大家好我是费老师,就在几天前,发布了其正式版本,距离其上一个版本()发布已过去大半年,在这一次的新版本更新中又为我们带来了哪些重要的新特性呢,今天的文章中我就来带大家一探究竟😋。[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Jd22dZLw-1656132767543)(https://img2022.cnblogs.com/blog/1344061/202206/1344061-20220625093327776-1309769198.svg)]你可以在旧版本的基础上进行.原创 2022-06-25 12:53:51 · 433 阅读 · 0 评论 -
使用 Abp.Zero 搭建第三方登录模块(一):原理篇
第三方登录是基于用户在第三方平台上(如微信,QQ, 百度)已有的账号来快速完成系统的登录、注册-登录等功能。以微信的鉴权为例:假如你的网站有一个扫码登录的功能,会弹出一个由微信提供的二维码页面,你需要用手机上的微信扫码,操作一下,就可以完成登录。如这个链接:微信登录 (qq.com)[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-4xnHEuVG-1656045813148)(https://img2022.cnblogs.com/blog/644861/202206/644原创 2022-06-24 12:44:37 · 315 阅读 · 0 评论 -
技术管理进阶——你了解成长的全貌吗?
周末被早早聊拉过去做了一次关于成长的分享,这里将PPT分享出来跟大家交流。关注公众号,回复成长获取PDF首先,今天的话题是关于成长的,那么对于个人来说,到底什么是成长呢?最简单的描述就是,之前我不能做一件事,现在我能做了;之前我做不好的事情,现在能做更好了,这个就是成长。在工作场景下,把事情做好是对应我们常说的执行力,所以成长,其实是说执行力方面的成长,如何将事情执行的更好嘛。执行力三要素是能力、信息、意愿:我们不愿意做一件事,有几个原因,第一是我们完全不理解,不理解自然没有做的必要;第二个原因是我们理解原创 2022-06-23 12:44:51 · 269 阅读 · 0 评论 -
轻松上手Fluentd,结合 Rainbond 插件市场,日志收集更快捷
以往有篇文章介绍 EFK(Kibana + ElasticSearch + Filebeat)的插件日志收集。Filebeat 插件用于转发和集中日志数据,并将它们转发到 Elasticsearch 或 Logstash 以进行索引,但 Filebeat 作为 Elastic 的一员,只能在 Elastic 整个体系中使用。Fluentd是一个开源的,分布式日志采集系统,可以从不同的服务,数据源采集日志,对日志进行过滤加工,分发给多种存储和处理系统。支持各种插件,数据缓存机制,且本身所需的资源很少,内置可靠原创 2022-06-23 01:17:24 · 334 阅读 · 0 评论 -
有意思的鼠标指针交互探究
今天,来实现这样一个有意思的交互效果:将原本的鼠标指针样式,修改成自己想要的效果,并且添加上一些特殊的交互效果。首先,第一个问题,我们可以看到,上图中,鼠标指针的样式被修改成了一个圆点:正常而言应该是这样:当然,这里比较简单,在 CSS 中,我们可以通过 样式,对鼠标指针形状进行修改。cursor CSS 属性设置鼠标指针的类型,在鼠标指针悬停在元素上时显示相应样式。这个大家应该都清楚,通常而言,在不同场景下,选择不同鼠标指针样式,也是一种提升用户体验的手段。当然,在本交互中,我们并非要将 curso原创 2022-06-21 12:49:44 · 290 阅读 · 0 评论 -
ruoyi接口权限校验
此文章属于ruoyi项目实战系列ruoyi系统在前端主要通过权限字符包含与否来动态显示目录和按钮。为了防止通过http请求绕过权限限制,后端接口也需要进行相关权限设计。由于对原理还不够深入了解,所以此处只粗浅讲解在ruoyi项目是如何应用的。在请求调用接口前,被注解的接口需要首先通过验证。通过注解参数返回值和来判断是否有权限。Ruoyi并没有使用原生的Spel表达式,而是使用了自定义的类,通过其中自定义方法 来进行权限判断。注解使用举例:接口权限校验流程粗略用两个例子来讲解前端请求如何经过后端接口权原创 2022-06-21 01:17:28 · 2111 阅读 · 1 评论 -
Java 将HTML转为XML
本文介绍如何通过Java后端程序代码来展示如何将html转为XML。此功能通过采用Word API- Free Spire.Doc for Java 提供的Document.saveToFile()方法来实现;该方法支持的目标文档格式多达 30余种。另外,该API也提供了多种方法,如Document.saveToEpub()、Document.saveToFile()、Document.saveToImages()、Document.saveToSVG()、**Document.saveToTxt()***原创 2022-06-20 12:48:09 · 955 阅读 · 0 评论 -
C++对象间通信组件,让C++对象“无障碍交流”
这是很久之前的一个项目了,最近刚好有些时间,就来总结一下吧!推荐初步熟悉项目后阅读本文: https://gitee.com/smalldyy/easy-msg-cpp这要从我从事Qt开发的那些日子说起了,项目说大不大,说小也不小,人倒是一茬又一茬,需求也换了又换,后来的事情大家都懂了,项目变成了一坨浓Shit,且不说其中的设计、构架、以及需求问题,单说说我对这个项目的直观感受,在我看来,整个程序仿佛一颗大树,从某点作为根然后一直向上延伸,在没有足够时间重构的情况下,它的层级越来越深,这时候问题来了,如果原创 2022-06-20 01:15:44 · 542 阅读 · 1 评论 -
认识弹性盒子flex
1、定义弹性布局(父级上定义)如果说内核为webkit 的必须前面加上 2、设置了弹性布局之后,子元素的css中的float, clear, vertical-align 这些属性将失效。3、可以将flex弹性布局看成一个大盒子,也就是一个大容器,只要将它定义为 即它里面所有的子元素均自动成为容器的成员,专业术语称之为 项目4、默认情况下,项目都是在容器里面水平排列的,即按照主轴排列,且是顺时针方向的。需(1,2,3)也就是x轴方向。(默认情况都是 )css样式:示例:第一个第二个第三个5、原创 2022-06-19 12:48:30 · 76 阅读 · 0 评论 -
表达式的动态解析和计算,Flee用起来真香
在很多项目中经常会出现需要动态解析表达式和计算的场景,比如一些自动审核规则,或者是一些变量的值通过维护的公式在运行过程中动态算出;由于场景需求,都需要比较灵活的配置对应的表达式,然后希望在需要的时候能根据维护的表达式计算出对应的值;刚好这块和同事聊天的时候说到Flee,感觉挺好用,赶紧来和小伙伴们来分享一波。Flee是一个用于. net框架的表达式解析器和求值器,可以在运行时计算字符串表达式的值(如:sqrt(a^2 + b^2),其中a、b是变量)。它的解析和计算速度是比较快和高效的。Flee 支持Net原创 2022-06-19 01:14:39 · 393 阅读 · 0 评论 -
冒泡排序的简单理解
冒泡排序是一种交换排序,基本思想是在要排序的一组数中,对当前还未排好序的范围内的全部数,自上而下对相邻的两个数依次进行比较和调整,让较大的数往下沉,较小的往上冒。即每当两个相邻的数比较后发现它们的顺序与排序要求相反时,就将它们互换。冒泡排序详细的执行步骤如下:冒泡排序是一个原地排序算法,过程只涉及相邻数据的交换操作,只需要常量级的临时空间,它的空间复杂度是 O(1)。为了保证冒泡排序算法的稳定性,当有相邻的两个元素大小相等时可以不做交换,相同大小的数据在排序前后不会改变顺序,所以冒泡排序是稳定的排序算法。使原创 2022-06-18 12:48:21 · 210 阅读 · 0 评论 -
【RocketMQ】MQ消息发送
首先来看一个RcoketMQ发送消息的例子:RocketMQ是通过进行消息发送的,它实现了接口,接口中定义了消息发送的方法,方法主要分为三大类:接下来以将以同步消息发送为例来分析消息发送的流程。里面有一个类型的成员变量,从默认的无参构造函数中可以看出在构造函数中对进行了实例化,在方法中就是调用的方法进行消息发送的:中消息的发送在方法中实现,处理逻辑如下:获取路由信息DefaultMQProducerImpl中有一个路由信息表,记录了主题对应的路由信息,其中KEY为topic, value为对应的路原创 2022-06-18 01:17:28 · 780 阅读 · 0 评论 -
【C#/VB.NET】 将PDF转为SVG/Image, SVG/Image转PDF
SVG是一种图形文件格式,它的英文全称为Scalable Vector Graphics,意思为可缩放的矢量图形。它在放大或者改变尺寸的情况下其图形质量不会有所损失,且与 JPG 和 GIF 图像比起来,尺寸更小,且可压缩性更强。本文将介绍如何实现将PDF文档与SVG/Image相互转换的方法。经过综合对比之后,最后筛选出这一方法。此方法操作起来比较方便且代码量较少。下面是我整理的详细步骤及C#/VB.NET代码供大家参考。**类库引入及代码思路:**本次功能测试中,使用到的是 Free Spire.原创 2022-06-16 12:52:40 · 748 阅读 · 0 评论 -
算法的复杂度分析
复杂度分析法是对已知的代码进行效率分析的方法,与之相对的是使用实际数据运行代码的事后统计法。复杂度分析法和事后统计法各有优劣,与复杂度分析法进行比较,事后统计法会有以下局限性:相比事后统计法,复杂度分析法更能表示一个算法在各个维度的综合性能。复杂度分为时间复杂度和空间复杂度,但是它们并不能准确地表示算法的执行时间和存储空间。时间复杂度表示的是执行时间与数据规模之间的增长关系;空间复杂度表示的是存储空间与数据规模之间的增长关系。常用的复杂度表示法就是大 O 复杂度表示法,时间复杂度和空间复杂度都能运用这个概念原创 2022-06-15 01:16:59 · 250 阅读 · 0 评论 -
6000字|22张图 带你彻底弄懂Zookeeper分布式锁
前面我们剖析了Redisson的源码,主要分析了Redisson实现Redis分布式锁的15问,理清了Redisson是如何实现的分布式锁和一些其它的特性。这篇文章就来接着剖析Zookeeper分布式锁的实现框架Curator的源码,看看Curator是如何实现Zookeeper分布式锁的,以及它提供的哪些其它的特性。Curator框架是封装对于zk操作的api,其中就包括了对分布式锁的实现,当然Curator框架也包括其它的功能,分布式锁只是Curator的一部分功能。本文的目录跟Redisson文章的目原创 2022-06-14 01:17:18 · 97 阅读 · 0 评论 -
go-zero微服务实战系列(三、API定义和表结构设计)
前两篇文章分别介绍了本系列文章的背景以及根据业务职能对商城系统做了服务的拆分,其中每个服务又可分为如下三类:如果没看过前两篇文章可通过如下传送门查看go-zero 微服务实战系列(一、开篇)go-zero微服务实战系列(二、服务拆分)前两篇文章比较偏理论,以至于文章发出去后有些同学觉得写得比较水,非常理解大家迫切想要写代码的心情,我也进行了深刻的反思哈哈哈。所以从本篇开始就要进入万众期待的代码环节了。但是,所谓磨刀不误砍柴工,在真正的生产开发过程中,我们一般都会花大量的时间在需求的理解和协议的设计上,如果需原创 2022-06-13 12:49:04 · 1667 阅读 · 0 评论 -
python创建分类器小结
简介:分类是指利用数据的特性将其分成若干类型的过程。监督学习分类器就是用带标记的训练数据建立一个模型,然后对未知数据进行分类。一、简单分类器首先,用numpy创建一些基本的数据,我们创建了8个点;查看代码给这8个点的数据赋予默认的分类标签查看代码我们将这些数据画出来看看查看代码如果我们要对数据加以区分,怎么做呢?让我们增加一条直线,我们用数学公式y=x画出一条直线,构成我们的简单分类器;查看代码二、逻辑回归分类器逻辑回归虽然名字叫回归,但是其实是一种分类方法,常用于二分类。逻辑回归利用Sigmoid原创 2022-06-13 01:17:10 · 2254 阅读 · 1 评论