自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(42)
  • 问答 (4)
  • 收藏
  • 关注

原创 设计模式七大原则-接口隔离原则InterfaceSegregation

类A通过接口Interface1依赖类B,类C通过接口Interface1依赖类D,如果接口Interface1对于类A和类c来说不是最小接口,那么类B和类D必须去实现他们不需要的方法(造成浪费)。在项目中常见的业务类直接依赖另外一个业务类的时候往往也是违背接口隔离原则的,在实际项目中,出于开发速度、维护成本等原因,通常不会过于细化接口。按隔离原则应当这样处理:将接口Interface1拆分为独立的几个接口,类A和类C分别与他们需要的接口建立依赖关系。也就是采用接口隔离原则。

2024-06-10 22:24:16 513

原创 设计模式七大原则-单一职责原则SingleResponsibility

七大原则是在设计“设计模式”的时候需要用到的原则,它们的存在是为了保证设计模式达到以下几种目的:1.代码重用性2.可读性3.可拓展性4.可靠性(增加新的功能后,对原来的功能没有影响)5.使程序呈现高内聚、低耦合的特性。

2024-06-10 21:22:38 558

原创 BTC协议的设计【区块链学习笔记3】

比特币的共识机制是靠算力(hash rate)来投票的:hash rate--->决定了投票的权重--->sybil attack是依靠创建账户,但是创建账户并不会影响 hash rate,不会影响每秒算出nonce的数量。puzzle friendly性质保证了求解nonce值的过程没有捷径。hash rate越高,获得记账权,得到奖励的概率越高。

2024-04-28 02:12:59 915 3

原创 比特币中的数据结构【区块链学习笔记2】

重要概念:哈希指针 hash pointers普通的指针是存结构体的地址,哈希指针除了保存地址之外,还要保存这个结构体的哈希值。比特币中的两个数据结构:区块链、Merkle tree都用到了hash pointers。

2024-04-26 15:06:07 1364 3

原创 比特币中用到的密码学功能【区块链学习笔记1】

【密码学相关内容,需要进行补充】 ,得到的哈希值即digest,用来检测这个message是否发生篡改,因为找不到一个H(m')=H(m),即没有办法篡改内容而又不被检测出来。(比如我的名字是柯意,全国有11个叫柯意的人,也就是hash碰撞是客观存在的。输入我的身份证号111222199608260000可以得到我的名字,但凡改掉身份证号中的其中一个数字,都得不到相同的名字,但是如果想改掉身份号又要得到同一个名字:柯意,就要在14亿人口的身份证号里进行尝试,概率是14亿分之11,微乎其微!

2024-04-26 14:39:40 873 1

原创 第二章 面向对象的基本概念-04737-C++程序设计【自考笔记】

1.类的基本概念类是具有相同的属性和操作的一组对象的集合,它为属于该类的全部对象提供了统一的抽象描述,其内部包括属性(数据变量)和操作(成员函数)两个主要部分。类是一种用户自己构造的数据类型;类要先声明后使用、是具有唯一标识符的实体;

2024-03-30 06:55:40 867

原创 第一章 C++语言简介-04737-C++程序设计【自考笔记】

不能直接用“>>”和“<<”进入输入/输出,必须对“>>”和“<<”进行。

2024-03-22 03:20:13 1017

原创 01 网络模型与协议【网络编程】

7层网络模型与TCP/UDP协议计算机间的网络现在计算机间的请求响应、分工协作都离不开网络网络硬件:电缆、光纤、交换机、路由器、卫星等信号数据载体:光、电、波为使不同国家不同的通信设备能够互相通信,以便在更大的范围内建立计算机网络,有必要建立一个国际范围的。

2024-03-21 16:44:21 732

原创 对IO流原理及、分类及IO模型的一个大概认识【Java基础题】

IO模型:IO模型决定了数据如何在应用程序和网络间传输。IO模型是系统底层的支持,不同语言和框架对这些模型的支持和实现方式可能会有所不同。虽然IO模型最初是针对网络IO操作来描述的,但它们的基本原则和方法同样适用于本地IO操作。BIO:BlockingIO,传统IO模型,同步阻塞IO--->可以大概对应的实现是java中java.io包应用程序执行IO操作时,如果数据未准备好,它将一直等待数据准备完毕。一旦数据准备好了,再将数据从内核空间拷贝到用户空间,此过程中应用程序是阻塞的。

2024-03-18 15:17:51 776

原创 谈谈在项目中用到的File类和处理文件的流【Java基础题】

这行代码通常用在`while`循环的条件部分,意味着“只要`readLine()`方法返回的不是`null`(即,只要没有到达文件末尾),就继续执行循环体内的操作”。= null`整个表达式的意思是,将`reader.readLine()`的返回值赋值给`line`,然后检查`line`是否不等于`null`。- `line = reader.readLine()`这部分将`readLine()`方法返回的字符串(可能是文件中的一行文本或者`null`)赋值给变量`line`。

2024-03-13 18:54:16 821

原创 简单聊一聊项目中用反射来做过啥【Java基础题】

反射允许(在运行时动态地)对封装类的字段、方法、构造函数的信息进行编程访问在我们的代码中,使用构造器直接生成对象、直接访问对象、对象的成员等方式,是清晰直观的。但在有些场景中,需要在运行时动态地操作这些成员,比如在运行时根据数据库中提供的类名或方法名,或者基于字符串变量,来动态实例化对象或调用方法时,直接访问的方式就不再适用了。反射机制恰好提供了解决这类需求的能力,其关键在于一个特殊的对象,我们称之为类对象--->。反射是Java编程中一个强大的工具,允许运行时的动态类型查询和操作。

2024-03-13 02:13:59 1338

原创 static存在的主要意义【Java基础题】

这是一个对Redis实例管理(针对的是)的实现类,对RedisManager接口定义的一系列Redis实例管理操作的方法进行了实现。这是重要的,因为如果每个实例有自己的锁,那么同步控制将会失效,因为不同实例之间的锁不会相互影响。B. 枚举类的匹配方法:不依赖于枚举类型的任何特定实例,而是需要访问枚举类中定义的所有可能的实例。初始化的(因为这些流程基本上固定的,也就不需要各种不同的实例,但是它又分为正常与不正常两种情况,一个枚举类是列举不完的),该方法构造了两个。类是一个用于定义和管理投诉流程的类。

2024-03-05 07:22:10 835

原创 结合项目理解super关键字的用法【Java基础题】

通过为创建和更新操作定义不同的DTO类,可以明确区分这两种操作的数据要求。虽然在很多情况下,创建和更新操作所需的数据字段可能大致相同,但也可能存在一些差异,例如在更新操作中可能需要一个明确的ID,而创建操作则不需要。通过使用继承,可以在保持代码整洁的同时,灵活地为不同的操作定义不同的数据要求。这样的设计允许开发者清晰地分离和管理不同操作(如创建和更新)所需的数据结构,同时通过继承机制来实现代码复用和功能扩展。

2024-03-04 04:50:57 799

原创 通过业务加强对访问修饰符 public,private,protected,以及不写(默认)时的区别的应用与理解【Java基础题】

私有成员对于同一包中的其他类是不可见的,更不用说其他包中的类了。最常见的,实体类是以public修饰的,但是其属性一般以private修饰的。因此在别的类中,我们需要使用这个某个类的私有属性时,不可以直接这个类的实例+点+属性,而是要调用对应的get与set方法(也就是为什么通常情况下get与set方法是public的)。

2024-03-04 02:23:19 949

原创 Math.round(11.5) 等于多少?Math.round(-11.5)等于多少?---业务中对数值精度的处理

在数值计算中,经常需要对结果进行舍入以达到特定的精度要求,`RoundingMode` 枚举类提供了一组常见的舍入模式,用于指示如何进行舍入操作。与基本数据类型(如 `double` 或 `float`)不同,`BigDecimal` 可以表示任意大或小的数,而不会丢失精度。`compareTo` 是 Java 中 `BigDecimal` 类的方法之一,用于比较两个 `BigDecimal` 对象的大小关系。6. `HALF_DOWN`:向最接近的整数舍入,如果距离两个最接近的整数相等,则向下舍入。

2024-03-01 10:21:46 829

原创 用最有效率的方法计算 2 乘以 8---位移运算的使用扩展

因此,对于任何正整数m,m乘以8(即m * 8)最快的运算方式是将m左移3位(即m << 3)。因此,3乘以8的最快运算方式也是将3左移3位,即3 << 3。(2)加密算法工具类中,结果往往要以十六进制字符串的形式来表示,能够提高数据的可读性、传输性和兼容性,使得加密结果更易于处理和使用。搜索了一下自己的项目里,业务中的处理直接用到了位移运算的好像没有看到,倒是在一些工具类中看到了位移运算的使用。答案:2 << 3(左移 3 位相当于乘以 2 的 3 次方,右移 3 位相当于除以 2 的 3 次方)

2024-03-01 02:07:32 788

原创 为了visa面签预约学习python爬虫-DAY4

感想:爬虫真的还是蛮麻烦的,首先对目标信息的有效定位就够麻烦了,还要为了应付各种反爬机制去集成各种第三方工具(验证码必不可少,有人说可以学神经网络OCR自己识别),也要集成一些换IP的工具,封IP也是常见操作了,代理IP的高效与否绝对影响着爬虫功能的效率。因为https/http协议的特性是无状态,服务器并不知道你的登录状态,但是用户不可能访问网站内每一个页面都需要登录,因此一些基本的信息如用户的登录信息等需要存储在cookie中。-透明:服务器知道该次请求使用了代理,也知道请求对应的真实ip。

2024-02-28 06:55:48 778

原创 为了visa面签预约学习python爬虫-DAY3

**XPath和XSLT支持**:`lxml`提供了对XPath查询的原生支持,使得用户可以使用XPath来进行复杂的查询和数据抓取,还支持XSLT的转换。- **用途**:同样适用于网页数据抓取和处理,特别是当处理需要高性能处理或复杂XML文档时,`lxml`的`etree`模块是一个更好的选择。- **简介**:`lxml`是一个非常高性能的Python库,用于处理XML和HTML文档,其`etree`模块尤其强大,基于C语言编写。

2024-02-22 04:34:53 823

原创 为了visa面签预约学习python爬虫-DAY2

2. **换行符问题**:如果`<table>`标签跨越了多行,而正则表达式没有使用`re.DOTALL`标志,`.`字符将不匹配换行符,导致正则表达式无法匹配跨行的标签。这个示例中,`\s+`和`\s*`用于匹配一个或多个、零个或多个空白字符,使得正则表达式能更灵活地匹配HTML中的`<table>`标签,即使属性之间的空格数量不一。3. **HTML内容不完整或有误**:如果HTML内容不完整或者有语法错误,正则表达式可能也会因为无法找到一个正确闭合的`<table>`标签而失败。

2024-02-18 04:51:14 872

原创 为了visa面签预约学习python爬虫-DAY1

当你的请求看起来不像是来自一个正常用户的浏览行为时(比如,自动化脚本、某些特定的HTTP头部、高频率的请求等),安全服务可能会阻止这些请求并显示上述的消息。- **使用Selenium**:对于复杂的、需要与JavaScript交互的网站,Selenium 能够模拟真实的浏览器环境,执行登录和预约的动作就像真正的用户一样。1. **状态管理**:Cookies是网站用来在用户的浏览器上存储信息的一种方式,它们允许网站保存和回忆关于用户的信息,比如登录状态、用户偏好设置、购物车内容等。

2024-02-17 03:11:51 2250

原创 leetcode笔记:26.删除排序数组中的重复项

官方解法和我第一次解法的区别:官方是用到两个指针,慢指针,快指针,而我的解法用到了双层的循环,所以时间复杂度是0(n的2次方)。我的思路是从数组第一个也就是nums[0]开始遍历,从前往后找,而官方题解的思想是从第二个开始,从后往前(同时指针往后移动)。我的解法是遇到重复的就进行覆盖的操作,而官方题解巧妙之处在于是,遇到不重复的再操作。此时,我们可以记录下当前子串的长度,并将左指针向右移动,直到遇到重复字符并删除该字符为止。暴力解法:如果可以使用额外的空间,就直接把不重复的元素复制到新的的数组里。

2023-06-03 22:27:17 98

原创 错误的分页写法及修改

上面的写法查询出来的总数永远=pageSize,与符合查询条件的总数不符,使用mybatis-plus框架的方法:mapper方法中需要传入一个分页的对象 Ipage ,mapper方法返回也是一个分页对象Page,就能自动实现分页(具体原因、底层逻辑待后续研究)。不使用自定义的sql,就可以直接用BaseMapper自带的selectPage方法就可以。

2023-05-31 14:06:21 123

原创 优化学习01-尽量不在循环里进行查询

背景:BI项目,查询导购的等级,前端访问调接口太慢了,排查了其他sql,发现是自己把查询放在循环里的原因。总结:尽量减少访问数据库的请求,一次性把数据全拿出来,把对数据的处理放到内存中,会快很多。

2023-04-21 19:00:50 124

原创 Spring之BeanFactory学习笔记

类图: The root interface for accessing a Spring bean container.BeanFactory:是获取IOC容器的根接口,提供了IoC容器所应该遵循的最基本的服务契约。IoC容器实际上代表一系列功能各异的容器产品,是容器的功能有大有小,有各自的特点,但要满足一些基本特性,BeanFactory就定义了那些最基本的特性,因此可以说Spring中所有的容器实现追根溯源都实现了BeanFactory。用户使用容器时,可以使用转义符&来得到FactoryBea

2023-03-12 18:53:15 102

原创 redis学习笔记01:String类型的实现SDS

看了《Redis设计与实现》第二章关于redis底层对于String类型的实现:SDS(Simple Dynamic String,简单动态字符串)的内容,在这里做一点简单的总结笔记。

2023-03-11 00:02:59 122

原创 java基础05:浅拷贝和深拷贝

关于深拷贝与浅拷贝的概念解释,以及如何实现深浅拷贝

2023-02-26 18:45:41 1328

原创 java基础03:final

因此使用final修饰局部变量时,即可以在定义时指定默认值(后面的代码不能对变量再赋值》,也可以不指定默认值,而在后面的代码中对final变量赋初值(仅一次)---〉使用前要赋值,也就是不能为空?,是为了解决外部类被回收后,变量也跟着消失了,此时内部类就拿不到变量了,但是如果拷贝一份,外部变量变化感知不到,就会出现差异,所以限制内部类只能使用final修饰的变量。声明 final 方法的主要目的是防止该方法的内容被修改),但是可以重载(在一个类中)是java的一个关键字,是最终的意思。

2023-02-20 14:34:48 74

原创 MYSQl:关于AUTO_INCREMENT

拷贝到新项目建表,新项目的id类型为int(11),新增数据则就报错:ERROR 1467 (HY000): Failed to read auto-increment value from storage engine。的,从1开始增长,当你把第一条记录删除时,再插入第二条数据时,主键值是2,不是1。注意到这里的AUTO_INCREMENT后面的数字巨长,不太懂是什么意思。然后尝试新增一条记录,果然新完了之后-->AUTO INCREMENT=2。auto_increment是用于。

2023-02-16 17:35:48 737

原创 Java基础02:重载与重写

中,子类重写父类的方法,方法名相同,参数列表也相同,返回值小于等于父类,抛出的异常范围小于等于父类、访问修饰符范围大于等于父类、如果父类方法访问修饰符为private,子类不可以重写。中,方法名相同,参数列表不一样,个数不同,顺序不同,与方法返回值和修饰符没有关系(也就是不可以不同?),发生在编译-->重载和方法返回值没有关系?

2023-02-16 17:01:33 75 1

原创 java基础01:==与equals

例如:String本身已经重写了equals方法:把字符串里的每一个字符取出来看是否相等,这个被复写的equals方法其实是比较两个字符串的内容。equals:object中默认也是采用==比较,通常会重写。不重写的话是没有太大的差别.==对比的是栈中的值,基本数据类型是变量值,引用类型是堆中内存对象的地址;基础类型是直接在栈中分配的,引用类型是引用了堆中的内存地址。java中两个重要的内存:栈、堆;

2023-02-10 00:16:06 73

原创 金额数据修改避免脏读:使用mybatis的updateWrapper.setSql

金额数据修改避免脏读:使用mybatis的updateWrapper.setSql

2022-10-15 17:53:17 1584

原创 查询源表的特定数据,将结果作为新表更新到目标表中

sql 查询 更新 curd

2022-08-27 10:54:48 503 2

原创 推广商品搜索 双表联查

sql 双表联查 推广商品查询

2022-08-15 16:15:51 85

原创 第一个 shell脚本

shell脚本的学习

2022-07-01 15:14:08 471

原创 功能实现:客服辖区管理

目录项目:业务逻辑:需求:具体实现:背景是一个电商+供应链管理,在已有的管理员模块上新增客服辖区管理功能。有权限的管理员账号可以给具有客服角色的管理员账号(admin,与已有的admin表相关联)分配辖区(或其他属性,待后期扩展,暂时只有辖区),客服只对该辖区的用户有权限进行查询、处理订单等操作。1.设置客服辖区2.查询客服辖区3.删除客服辖区(批量)主要是实现设置客服辖区这个需求,由于客服辖区一经设置少有改变,此处设计的逻辑比较简单:每次设置辖区时,就把该账号下原有已存在的辖区记录全部删除,再添加新的记录

2022-06-22 09:22:39 204

原创 Snowflake 实现的发号器

package com.enation.app.javashop.framework.sncreator;import com.enation.app.javashop.framework.context.instance.AppInstance;import org.springframework.stereotype.Service;/** * Snowflake 实现的发号器 * @version 1.0 * @since 7.1.0 * 2019-11-22 */@Serv.

2022-04-21 11:23:39 108

原创 将VUE项目部署到服务器 nginx代理配置

1.npm run bulid刚开始bulid出来的dist里面的界面打开是空白的原因是vue.config.js 没有相关的配置于是在网上找了配置文件抄了进去最重要是要配那个path!写的是部署的服务器的域名,后面再把相关的代码put上来。2.nginx配置由于我的服务器里不知道为啥有两个nginx压缩包,正确的应该是usr/local/niginx 里面的配置文件。要在里面配置listen 80然后代理到dist目录配置好要重启nginx问题:中级出现几..

2022-03-03 00:49:29 2905

原创 使用YAPI记录

1.先下载easyAPI插件2.设置 在setting里的 EasyApi里:YAPI:server:YAPI的地址,直接用的公司给部署好yapi域名tokens:在项目里设置- token设置里复制3.在写好接口的controller类上右键:Export Yapi,输入token即可注:controller上面的类注解会自动产生接口分类名称和注释,接口方法上面的方法注解会生成接口的名字登...

2022-03-01 17:40:06 519

原创 BUG: Cannot support database type “MySQL“

查询数据库时报的错:Cannot support database type "MySQL"检查了sql语句、数据类型等都没有问题,最后是前辈找出来问题的原因是我的idea版本是2019,运行配置里有一个短命令集设置(应该要查查这是啥),应该设置成:Jar Manifest就没问题了。...

2022-02-24 15:57:07 1804

原创 springboot整合jsp失败

想把昨天的ssm项目换成springboot项目,首先是用maven创建了一个新的项目,在pom.xml导入所有的依赖<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation=.

2021-10-20 23:26:47 344

空空如也

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

TA关注的人

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