自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 什么是前台、中台、和后台?

在传统的前台-后台架构中,各个项目相互独立,许多项目都在重复发明同样的功能,让项目本身变繁琐,也让开发效率变低。面向内部运营人员的管理系统、配置系统,如:电商配置后台的商品管理、订单管理、会员管理、财务管理等。也包括服务端各种实时响应用户请求的业务逻辑,如:商品查询、订单系统等。整合某种通用能力提供给前台,包括业务中台、技术中台、数据中台、算法中台。算法平台:为各个项目提供算法,如推荐算法、搜索算法等。如:支付、商品管理、营销、用户、搜索、交易中心等。如:搜索算法、推荐算法、语言识别等。

2023-10-17 09:09:29 411

原创 主键 超键 候选键 外键

3. **唯一键(Unique Key)**: 与主键类似,唯一键用于保证字段中的数据唯一。与主键不同的是,一个表可以有多个唯一键,并且唯一键的字段可以接受NULL值。4. **复合键(Composite Key)**: 当没有单一字段能作为主键时,可以使用两个或更多字段组合作为复合键来唯一标识记录。外键在一个表中是主键,在另一个表中用于引用该主键,从而建立两个表之间的关系。一个表只能有一个主键。在一个学生信息表中,(学号,姓名)可以作为一个超键,但通常只需要学号就能唯一标识一个学生。

2023-10-12 15:21:06 146

原创 微博系统崩溃分析

如果是 pull 方式,即用户主动请求服务器获取数据,那么在高流量事件(如鹿晗发布恋情)发生时,服务器可能会遭受大量的请求,从而导致崩溃。3. **减轻原始服务器负担**:由于许多请求被 CDN 处理,因此原始服务器的负载会减轻。3. **提高可用性**:即使数据库或其他数据源出现问题,缓存中的数据仍然可以提供服务。1. **减少延迟**:由于内容从离用户最近的服务器提供,因此网络延迟通常会减少。2. **减轻数据库负担**:通过减少数据库查询,缓存可以显著降低数据库的负载。### 缓存和CDN的关联。

2023-10-12 15:07:01 187

原创 MySQL主从服务器 主从灾备

从服务器有一个 I/O 线程,它连接到主服务器并复制 Binlog 中的事件,然后再由 SQL 线程应用这些事件,以实现数据的实时同步。在 MySQL 主从复制架构中,主服务器(Master)负责处理所有的写操作(INSERT、UPDATE、DELETE 等),而从服务器(Slave)用于复制主服务器上的数据。如果主服务器出现故障或宕机,其中一个从服务器可以迅速提升为新的主服务器,以最小化服务中断时间。从服务器可以用于负载均衡,将读操作的负担分散到多个从服务器上,从而提高系统的整体性能和可用性。

2023-10-12 15:01:50 154

原创 MySQL的数据如何恢复到任意时间点

如果你的 MySQL 服务器配置了二进制日志(也称为 binlog),你可以使用 `mysqlbinlog` 工具将日志事件应用到当前数据库状态,从而实现数据的点时间恢复(PITR,Point-In-Time Recovery)。1. **找到需要的 binlog 文件**:首先,你需要确定哪个 binlog 文件包含你需要恢复的时间点。1. **恢复到最近的全量备份**:使用 `mysqldump` 或其他备份工具将最近的全量备份恢复到数据库。- 在应用恢复操作之前,最好在测试环境中先进行验证。

2023-10-12 14:49:24 1474

原创 R²(决定系数)过度拟合(Overfitting)

R²是一个衡量模型解释数据变异性的指标,值越接近1,表示模型解释了更多的变异性,通常被认为是更好的模型。1. **训练数据表现好,测试数据表现差**:在训练数据上,过度拟合的模型会显示出非常高的准确度,但当应用到新的、未见过的数据时,性能通常会下降。3. **风险管理**:在金融中,一个R²值过高可能会给人一种误导,即认为模型几乎完美地捕捉了所有的风险,这可能会导致风险被低估。3. **泛化能力差**:过度拟合的模型对新数据的泛化能力差,因为它捕捉到了训练数据中的噪声而非真实的数据分布。

2023-10-06 09:15:52 789

原创 回归分析 总平方和(SST或TSS)、回归平方和(SSR或ESS)和误差平方和(SSE或RSS)

因此,当我们说SSE是“不可解释的”,我们意味着这部分的变异性不是由模型中的任何参数所解释的。因此,当我们说SSR是“可以解释的”,我们意味着这部分的变异性是由模型中的参数(如斜率和截距)明确说明的。因此,SSR是我们模型能够“捕获”并解释的因变量的变异性,而SSE则是模型未能解释的因变量的变异性。**重要结论**: 如果总体的变异性(SST)是一定的,那么误差(SSE)越低,回归就越好;1. **总平方和(SST或TSS)**: 这是观察到的因变量与其平均值之间的平方差的总和。

2023-10-06 08:56:21 3917

原创 多线程 多进程 Python和C++中区别

Python中的`threading`模块与C++中的多线程确实存在差异。在C++中,使用线程通常能够实现真正的并行执行,充分利用多核处理器。然而,在CPython(Python的默认实现)中,由于全局解释器锁(GIL)的存在,`threading`模块不能实现真正的并行。### GIL的限制:全局解释器锁,或GIL,是一个防止多个原生线程并发执行Python字节码的锁。即在任何时刻,只有一个线程可以执行Python字节码。

2023-10-04 11:13:59 311

原创 RESTful API(Representational State Transfer,表述性状态传递)

3. **资源是可寻址的(Resource-Based)**: 在RESTful API中,资源(如数据库记录)用其URI(统一资源标识符)来表示。4. **可扩展和灵活**: 由于RESTful API是基于HTTP的,你可以使用任何能发送HTTP请求的语言来与之交互。3. **易于理解**: 在RESTful API中,你操作的对象(称为“资源”)和操作本身都是非常直观和易于理解的。5. **性能好、可缓存**: 因为是无状态的,服务器不需要保存客户端信息,这通常会导致更好的性能和可缓存的操作。

2023-09-28 14:24:39 54

原创 指数 基准指数 基金

2. **交易所交易基金(ETFs)**: 这些是一种特殊类型的指数基金,可以像普通股票一样在交易所上买卖。1. **指数基金(Index Funds)**: 这是一种被动管理的投资基金,旨在复制一个特定基准指数的表现。4. **购买所有成分股**: 理论上,你也可以直接购买一个指数的所有成分股,按照它们在指数中的权重进行分配。1. **期货和期权**: 对于更复杂的基金,也可能会使用与目标指数相关的期货或期权来实现目标。1. **购买所有成分股**: 基金会购买目标指数中所有的成分股。

2023-09-26 16:51:32 47

原创 布林带 Python

函数接受一个数据帧(DataFrame)`DF`和一个整数`n`作为输入,其中`DF`应该包含调整后的收盘价("Adj Close")列。4. **计算布林带宽度(Bollinger Band Width)**:这是上带和下带之间的差异,计算公式为:`df["UB"] - df["LB"]`。然而,在金融分析和信号处理等应用中,人们有时候会使用`n`而不是`n-1`作为分母来计算标准差。1. **数据量大**:在金融时间序列数据中,数据点通常非常多,因此使用`n`或`n-1`的差异可能不大。

2023-09-25 13:47:33 302

原创 EWMA 指数加权移动平均

**更多历史信息**:不同于SMA只关心特定窗口内的平均,EWMA 在衰减的同时也考虑了所有之前的数据。1. **趋势分析**:EWMA 能更快地反应数据的变化趋势,因此经常用于技术分析中以识别股票或其他金融资产的价格趋势。- **自适应调整**:在不断接收新数据的情况下,EWMA 可以实时地更新平均值,而不需要重新计算整个数据集或移动窗口。- **快速反应新信息**:EWMA 赋予最近的数据更高的权重,因此它能更快地反应市场的新变化。5. **预测**:在某些情况下,EWMA 可用于时间序列预测。

2023-09-24 22:43:18 450 1

原创 网络爬虫 反网络爬虫

首先,确保你的系统已经安装了 Python。5. **动态加载**:使用 JavaScript 动态加载页面内容,这样只有能够解析 JavaScript 的爬虫才能获取完整内容。2. **User-Agent 检测**:检查访问者的 User-Agent 字符串,如果发现是已知的爬虫,则拒绝访问。11. **高级数据分析和机器学习算法**:采用复杂的数据分析方法,包括机器学习算法,以识别和阻止爬虫。4. **解析内容**:解析网页内容,通常是 HTML、XML 或 JSON 格式,以提取有用的信息。

2023-09-24 18:21:52 885 1

原创 代理 Host IP 转发 绕过代理

当你访问一个网站(例如,`www.example.com`)时,你的操作系统和网络设备会储存(缓存)这个域名与其对应的 IP 地址的映射关系,以便于下次访问相同的网站时能更快地加载页面。- **对外界来说**:当你使用代理服务器访问互联网时,目标网站看到的通常是代理服务器的IP地址,而不是你自己的公网IP地址。所以从这个角度来看,你的IP地址“变了”。2. **访问限制**: 通过将特定域名映射到 `127.0.0.1`(本地回环地址),你可以阻止对这些域名的访问,这在家长控制或公司政策中可能是有用的。

2023-09-24 13:06:18 723 1

原创 栈帧 内存

4. **函数返回:** 当函数执行完毕并返回时,其对应的栈帧会被弹出(pop)调用栈,并且控制权会返回到调用该函数的代码处,即返回地址所指向的地方。4. **上一栈帧的基指针:** 也就是前一个函数的栈帧的起始地址,用于在函数返回时恢复前一个函数的执行环境。- 每个函数有自己的栈帧,因此函数内的局部变量和参数在函数外是不可见的,实现了变量的作用域隔离。3. **函数执行:** 在栈帧内,函数执行并可以访问其局部变量和参数。1. **函数调用:** 每次函数被调用时,都会创建一个新的栈帧。

2023-09-24 08:21:00 70 1

原创 堆、栈,局部变量,全局变量

**动态对象**:使用`new`、`malloc`等操作符或函数创建的对象通常存储在堆上,需要手动释放,否则会导致内存泄漏。固定大小和生命周期的对象存储在栈上,而动态对象存储在堆上的原因与这两种内存区域的管理和分配机制有关。- **全局变量**:在函数外部定义,可以在程序的任何地方访问,其生命周期与程序的运行时间相同。- **局部变量**:函数内定义的变量通常存储在栈上,当函数返回时,这些变量会被自动销毁。- **全局变量**和**静态变量**存储在数据段,它们的生命周期与程序的生命周期相同。

2023-09-23 19:52:23 91 1

原创 Python GIL和C++的区别

## 1. 什么是GIL?GIL(Global Interpreter Lock)是CPython(Python的标准实现)中的一个全局锁,它确保在任何给定时刻只有一个线程执行Python字节码。这意味着,尽管您可以在Python中使用多线程,但这些线程在执行Python代码时不会真正并行运行。而是在某个时刻,只有一个线程正在运行,其他线程则在等待GIL。### 2. 为什么Python有GIL?GIL的存在主要是为了简化CPython的实现和避免与多线程相关的复杂问题,尤其是内存管理和引用计数。

2023-09-23 19:48:53 135 1

原创 缓冲区(Buffer)

缓冲区可以减少实际进行的I/O操作的次数,通过将多个小的输出请求合并成一个大的请求,从而达到提高效率的目的。当缓冲区满时,或在某些情况下(如显式刷新缓冲区),缓冲区中的数据才会一次性写入到目标设备。在某些条件下,输出缓冲区的内容会被“刷新”,并被发送到实际的输出设备。当我们进行输入操作(如从文件或键盘读取)时,程序通常会一次性读取大量的数据到输入缓冲区中,以便后续从缓冲区中更快地访问这些数据。理解缓冲区有助于更高效地进行I/O操作,并可以通过合理地控制缓冲区的刷新,来防止可能出现的数据丢失或输出延迟问题。

2023-09-23 12:40:15 277 1

原创 Boost.python生成.pyd文件

pyd文件是Python的动态链接库(DLL)文件。这里主要描述的是.pyd文件和普通的.dll文件之间的差异,以及如何在Python中使用它们。

2023-09-23 12:26:06 159 1

原创 Boost.python—Python与C++混合编程 踩坑记录,希望有越来越多的人分享

环境:vs2022+cmake+python3.9.7如果安装了多个版本的python,要注意安装boost的时候默认安装的是系统环境变量中的python版本,也就是说boost.python也是有python版本的,要使用对应版本的python搭配对应版本的boost.python,否则会报错解决办法:CMakeLists.txt中或者这个问题可能与Python的全局解释器锁(GIL)有关。GIL是CPython解释器的一个机制,它阻止多个原生线程并行执行Python字节代码。

2023-09-23 10:30:46 238 1

转载 【无标题】转(CharacterController与Rigidbody)

transform.Translate(Vector3.up * Time.deltaTime, Space.World);transform.Translate()函数中,前一个变量是物体的移动速度,这里的速度是一个矢量,既包含大小写包含方向,后一个变量是相对坐标系,这里的相对坐标系有两个值,一个是世界坐标,一个是自身坐标,如果第一个坐标不填写的话,默认为自身坐标系。这里我们将坐标体系修改为自身坐标系看一下效果:transform.Translate(Vector3.up *

2022-04-04 21:53:46 499

原创 IT行业求职简历

1. 项目介绍过长先给大家看下某份简历中的项目经历部分:正在上传…重新上传取消看到这个,不知道大家有什么感受?显然,项目介绍占整个项目经历的比重过多 !好家伙,讲了一大堆项目有什么功能,结果自己实际上负责的工作就一个小小的模块?!其他的工作既然都不是自己做的,说那么多干嘛呢?如果面试官问你其中某个功能是怎么实现的,说不出来不是很尴尬么?在简历中,面试官更关注的是 你在项目中负责什么、做了什么、怎么通过技术和设计能力去解决问题的 。至于项目本身的介绍,用一两句话直击核心就好,重点在于交

2022-04-04 21:52:27 212

原创 Unity小知识点

transform.Translate(Vector3.up * Time.deltaTime, Space.World);transform.Translate()函数中,前一个变量是物体的移动速度,这里的速度是一个矢量,既包含大小写包含方向,后一个变量是相对坐标系,这里的相对坐标系有两个值,一个是世界坐标,一个是自身坐标,如果第一个坐标不填写的话,默认为自身坐标系。这里我们将坐标体系修改为自身坐标系看一下效果:transform.Translate(Vector3.up * Time.del

2022-03-28 10:35:30 2275

原创 Unity中GetButton和GetKey易错点

Vector3 move = Vector3.zero; if (characterController.isGrounded) { move.x = Input.GetAxis("Horizontal") * Time.deltaTime * Speed; move.z = Input.GetAxis("Vertical") * Time.deltaTime * Speed; if ...

2022-03-23 15:51:47 4449

转载 Unity3d游戏公司面试常见问题全接触

当你热切地期盼着你的第一份游戏行业的工作时。游戏公司会从你的简历和求职信来看你的潜力,而后通过面试来了解你。那么你应该如何准备面试呢?在游戏行业,有一些面试问题常常出现,专业游戏培训列举了一些,并且加上一些提示,告诉你如何应对。为什么你想到这里来工作? 如果目前你还没有离职的话,这个问题还涉及到另外一个意思,“为什么你要离开你原来工作的地方。” 这是一个开放式的问题,它给你一个展示你对该公司了解程度的机会。当应聘者清楚地了解该公司是一家什么公司,有什么游戏是这家公司做的,那么所有的面试官都会觉得受

2022-03-22 10:18:35 1208

转载 Unity热更新机制

前言游戏上线后,难免会有一些测试阶段没发现的bug,bug这东西,可大可小。如果出现重大bug,而又没有热更技术,那么我们为了修复bug就只能强制玩家去商店下载新包,那造成的玩家流失是非常可怕的。而如果有热更,我们在发现问题的当天,只需要发布一个小补丁包,就能将问题修复了。目录热更新的原理 热更新的基本流程热更新的原理Unity游戏热更新包含两个方面,一个是资源的更新,一个是脚本的更新。Unity提供可以热更的方案就是AssetsBundle(后面简称AB)。资源、代码都可以打成

2022-03-14 10:57:49 10080

原创 C#中的委托和事件

委托本质上是一个类,而事件可以看做委托的一个方法首先说明下:(1)C#中事件:事件时属于类的成员,所以要放在类的内部。(2)委托属于一个定义,是和类、接口类似的,通常放在外部。(因为大多数委托都要被重用)委托定义在类里面还是类外面视情况而定,一般定义在与类定义平级部分,且用public修饰,便于外部调用。若定义在类的内部,则必须通过调用该类的成员才能取得其委托的引用,频繁调用的情况下不合适...

2022-03-13 20:38:56 439

原创 C#中结构和类区别

类:引用类型 结构:值类型 class和struct类:字段,属性,方法,构造函数属性和方法的区别:属性 get set,无()类中构造函数中既可给字段也可给属性赋值,构造函数可以重载结构中只能给字段赋值,并且是全部的,不能选择性(如有变化,不是vs版本问题,而是.net版本问题)结构在栈中存储,new函数调用结构struct的构造函数结构和类的构造函数:相同:默认都有一个无参构造函数不同:当写了一个构造函数,类中无参消失,结构中无参也存在如果单纯存储数据,用结构,存

2022-03-13 15:11:46 161

原创 C#补充知识点

序列化和反序列化序列化:对象转化成二进制 反序列化:二进制转化成对象用途传输类只能单继承,dang'en'xing

2022-03-13 13:34:44 305

转载 GitHub上传教程,图文并茂

手把手教你用git上传项目到GitHub(图文并茂,这一篇就够了),相信你一定能成功!! - 知乎GitHub是基于git实现的代码托管。git是目前最好用的版本控制系统了,非常受欢迎,比之svn更好。 GitHub可以免费使用,并且快速稳定。即使是付费帐户,每个月不超过10美刀的费用也非常便宜。 利用GitHub,你可以将…https://zhuanlan.zhihu.com/p/193140870...

2022-03-12 11:49:34 323

原创 C#抽象类

new一个方法/属性/变量,隐藏继承的父类中此方法/属性/变量,override则是重写父类中此方法1、抽象类中的抽象成员必须加abstract2、抽象成员必须在抽象类中3、抽象类不能被实例化4、子类若继承抽象类,必须重写所有抽象成员(除非子类也是抽象类)5、抽象成员访问修饰符不能是private6、抽象类中可包含实例成员,并且可不被子类实现7、抽象类是有构造函数的,虽然不可被实例化8、如果父类抽象方法中有参数,子类重写时必须有参;有返回值,必须有返回值如果父类中方法

2022-03-12 11:01:45 1482

空空如也

空空如也

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

TA关注的人

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