- 博客(74)
- 收藏
- 关注
原创 高版本Springboot配置nacos config的问题
但是在springboot高版本是取消了扫描bootrap.properties的,所以如果是高版本的springboot使用官方的步骤是会出错的。而官方也标明了这一个问题。那么这里就有一个问题,在config启动的时候会先扫描bootrap.properties文件,来获取相对应的配置参数。所以如果是高版本的springboot为了方便,需要导入扫描的依赖。首先,nacos config在官方的文档使用方式是。
2022-11-16 16:48:50 573 1
原创 springboot微服务学习(一)MyBatis-plus梳理
mybatis-plus我用的版本,之前用3.3.1不行,换了3.3.2才可以,我怀疑是跟springboot或者springcloud的版本有关联性,所以大家也可以检查一下。在启动函数中要添加MapperScan注解,这里其实是扫描Mapper,但现在最方便的方法是Dao直接继承BaseMapper,所以只需要扫描Dao就可以了。spring开发的基本四层结构,当然还有很多拓展的数据类型,这里就先不列出来了,这里就当笔记记录一下。首先,开始学习的时候整体架构如下。首先,配置文件要写好,
2022-11-07 17:57:01 426
原创 设计模式(五)设计原则part2
SOLID五种原则中前面我们学习了SOLI,那么就还剩下一种,D,也就是DIP,我们叫做依赖反转原则 Dependency Inverion Principle。看到这个名字是否很熟悉,因为我们的框架中经常提到的是,控制反转,依赖注入,而依赖反转是设计原则中的一种。所以我们结合控制反转和依赖注入来学习依赖反转。
2022-10-20 16:57:44 520
原创 设计模式(四)设计原则part1
设计模式的基础就是几种设计原则,其中就包含SOLID,KISS,YANGNI,DRY,LOD。这些原则可以说是框架和代码设计的经验,在代码开始写之前对这几种设计原则进行思考设计,能让我们的代码变的更加优美。所以虽然这些都是理论层面的东西,深入学习并思考也非常重要。这里我们通过理论和实例对SOLI四种设计原则进行学习,D依赖反转后面单独进行学习。
2022-10-20 16:14:25 450
原创 设计模式(三)面向对象:贫血和充血模型下的MVC
这里我们就根据MVC的架构分别尝试贫血模型和充血模型的代码开发,首先,框架我们主要分为Controller,Entity,Service,Repository四层,贫血和充血模型的主要区别在Entity和Service层。但我们需要知道的是,如果在复杂的场景下,要保证框架的封装性和可拓展性,不一定要盲目的使用MVC定义的模型,可以借鉴充血模型进行思考,是否有必要进行调整。在我们日常的开发工作总,MVC是必不可少的开发架构,MVC架构总共分为展示层,逻辑层,数据层。
2022-10-19 15:51:44 1246 1
原创 设计模式(二)面向对象的四大特性
面向对象的四种特性是优化代码的最基本的方法,也是我们需要掌握的最基本的技能。四种特性分别为封装,抽象,继承,多态。这个部分其实很多时候初级的开发人员都掌握了,所以知识大概的过一遍,加强一点印象。
2022-10-17 17:57:38 598
原创 【cs186】Project3 Join and Query Optimization part2
在part1中我们知道了join两张表的基本操作和方法,但是我们日常的使用中,经常一个sql语句要join多张表,那么如果join是多个的时候应该怎么做呢,Naive Way左深树最简单的办法就是将所有的table都放在一颗左深树中,进行依次join这里的左深树是,前面的两个tables的join结果作为下一个table的左兄弟,然后进行下一次join。join方法我们都知道,对于左右两张表,我们要为左表进行一个哈希表的映射,放入内存。那么对于左深树而言,我们得到⋈1后,对⋈1进行哈希表的映射,
2022-05-06 18:26:07 430
原创 【cs186】Project3 Join and Query Optimization part1
前言pro3的东西就比较偏底层了,毕竟join和query是我们平时用的比较多的sql语句,平时只会写sql,但不知道他在底层到底是怎么实现的,所以pro3就让我们在框架的基础上去实现这些方法。代码框架和pro2还是一样的Joinjoin方法就是把左边的表和右边的表满足条件的行join在一张新表中(条件可以是某一列取值相同)Simple Nested Loop Join (SNLJ)这是join实现的最基础的方法,也是效率最低的方法,实际的数据库中不太会使用这种方法,但在这个项目中,老师给我们简
2022-05-05 15:20:52 1150
原创 【推荐系统】向量召回算法 HNSW
在推荐和搜索场景下,召回recall是一个关键的步骤,这个步骤通常需要在海量的目标中,召回部分与用户特征相近的item,所以有一个快速,并且准去的算法是非常有必要的,HNSW(Hierarchical Navigable Small World)就是其中一种方法,当然HNSW也不止用于此。对于召回的场景下,每个需要进行召回的item已经用户的特征都是多维的,在多个特征维度的空间中,找到与用户特征最相近的topK。所以召回的问题其实可以抽象化为在多维空间中,找到与某个点邻近的topK个点。HNSW(H.
2022-03-08 16:58:19 2596 1
原创 Makefile以及CMakelists的编辑
1.概念在linux中不像windows和mac有图形界面,怎么快速的用命令行运行大型项目成为一个问题,并且像c/c++需要自己添加include文件的位置 ,当文件数目变多的时候,怎么运行项目就成一个一个问题。Makefile就是为了解决这个问题,我们可以把各种依赖和shell语句放在makefile文件中,然后make执行这个文件就可以将程序按照makefile的流程跑起来了。支持中大型项目的运行支持只编译修改过的代码部分,节省大量时间2. Makefile的格式targets : p
2022-02-23 16:03:45 1587
原创 Java和C++的跨平台区别
问题场景:C++的moduo库只能在linux环境下运行,在windows和mac中是不可以配置的为什么Java的所有库是所有系统统一的,也就是可以跨平台呢?而C++的编程有时候却要考虑是否是系统允许的。最简单的说法就是,这些只能在linux环境下运行的库比如moduo,他是涉及到调用系统级别的函数接口的。那这就很简单了,类似moduo这样的库只能在linux上运行的话,那么他肯定是在库中调用了linux系统特有的接口,这个接口在其他系统是没有的,所以这个库是只能用于linux的。那么在java中是
2022-02-21 18:43:05 1079
原创 推荐系统(一)召回阶段
(目前理解不深,待补充完整)前言推荐系统的三个阶段分为召回粗排精排粗排精排阶段又可统称为排序阶段。召回是推荐系统的第一个阶段,当然前面还有user embedding阶段也就是提取用户和商品或者视频的特征传入召回阶段。召回是根据用户和视频的特征从海量的视频库中找回一小部分客户可能感兴趣视频,然后交给后面的环节。我们可以想象到这个环节特点是处理的量级大,速度需要快,所以策略和模型,都不能太复杂。下面是四种常见的召回方法:基于内容的召回协同过滤基于FM的模型召回基于神经网络的方
2022-02-18 15:27:24 763
原创 C++学习笔记(一)
学习背景,大一的时候学过c++,但是后面基本没用过了,一直写得是c++,最近在实习用的是c++,所以需要重新开始学。最简单的helloworld#include <iostream>using namespace std;int main(){ cout << "Hello, world!" << endl; return 0;}C++简介C++ 和Java一样完全支持面向对象的程序设计,包括面向对象开发的四大特性:封装,抽象,继承,.
2022-02-15 17:39:11 474
原创 【Mysql & Redis】相关命令
启动Mysqlsystemctl start mysqld.service查看Mysql状态systemctl status mysqld.service查看初始密码grep "password" /var/log/mysqld.logTO BE CONTINUE…
2021-12-06 17:23:07 749
原创 后端面试面经收集
字节后端1,2,3面字节日常一面,偏基础字节日常二面,场景题偏多—先在小公司好好实习,把go-kit框架搞熟练,等实习完好好看看八股和算法题, 先收集着—TO BE CONTINUE…
2021-11-21 15:55:31 342
原创 Java中的引用
我们都知道,Java中是没有指针的,所以Java中的引用就相对而言,比C++有指针并且分工明确,要稍微复杂一些。Pre-值类型和对象类型(引用类型)的地址空间图片首先,值类型在图1中很明显,他的值直接是放在他所在的地址中的,而对象类型所对应的内存是存放一个地址,而这个地址是指向在堆中的内存地址。其次就是他们其实都是存在栈中的,对象实例存放在堆中。1、函数传参首先,对于函数传参的引用,函数传参分为基础类型 int,string等: 函数内的操作不会改变传入参数的本身对象:会改变传入对象的
2021-11-21 15:28:54 815
原创 学习Golang,Java,C++区别
Golang处在Java和C++中间,他有着比Java更快地性能,也有比C++更方便的开发方式,但Golang在很多方面还是跟Java有些雷同,我们来看看三者中间的差别和相似之处,然后着重看看Golang和Java的异同。三者的不同1.平台问题本来主要写Java的,最近准备一个量化比赛,要接触C++,发现原来写代码也有平台的问题。在C++比较有受欢迎的事linux编程,这个问题就导致如果我们在windows的环境上写关于linux编程的代码,比如最简单的在进行网络编程的时候在linux环境上的包是
2021-11-19 15:41:41 3406 2
原创 函数重载和函数重写
重载:在同一个类中,可以有多个重名的函数参数个数或者参数类型不一样,比如add函数我们可以输入两个数字作为一个函数,输入三个数字作为重载的两一个方法返回值无关,只有返回值不同不算方法重载,当然重载函数返回值可以一样也可以不一样重写:在子类中,同名的函数可以将父类的函数进行重写,但不存在同一个类中...
2021-11-19 15:30:33 440
原创 【C++】网络编程 并行计算omp.h mac
网络编程建立链接实例将c++文件编译成可执行文件gcc -o exeFileName main.cpp./exeFileNameexeFileName可以自己取名,main.cpp要编译的文件并行计算 omp并行计算的关键包是#include <omp.h>这个需要自己去配置,如果碰到这个包找不到的就是mac系统调用了默认的编译包,这个时候需要手动设置一下进入clion后按command+,(逗号) 进入设置页面, 选择toolchains如果按照路径没有找到,说明gcc还
2021-11-18 15:38:19 2104
原创 【Golang】运行main函数
go里面不像Java有一个psvm加上src设置为源文件就能运行主函数go里面的运行函数需要找到main包下面的main函数这里很多人会教创建一个main包,然后将main.go放进去就可以运行了,其实更简单的是直接将main.go的package换成main就可以了,即便他不在main包下面,但是如果我们将package换成了main他也会自动认为是放在main下面的主函数。这样的话,我们创建一个go项目只要一个文件就可以运行了。...
2021-11-12 11:04:57 3643
原创 【Golang】go-swagger和go-kit的配套使用
如果配合go-kit使用的话,一般在Transport层的所有函数按下面格式注释 // swagger:operation POST /user/addUser user addUser // --- // summary: 新增用户信息 // description: 用于系统用户的新增 // parameters: // - name: username // in: body // description: 用户名 // type: string // requir
2021-11-11 17:31:26 485
原创 【面试题】常见 单例模式java实现 以及 Static关键字
Java设计模式中有许多种,但是属单例模式的实现较为简单,所以在面试的时候面试官也经常让面试者手写单例模式,并且日常的开发工作,学会单例模式也是必须的,所以这篇文章好好记录一下单例模式的实现。概念单例模式需要确保某一个类只有一个实例,并且提供一个全局访问点其实我们桌面上的微信只能打开一个账号,就有点类似单例模式的设计Static关键字在实现单例模式之前,了解static关键字是非常必要的,因为这个关键字是单例模式中特别重要的组成部分static修饰的变量,方法以及代码块,在加载类的时候就会被加载
2021-11-06 16:25:08 168
原创 【HTTP】http方法及其幂等性 前后端交互必备
在前后端分离的最为常见的软件开发过程中,http的RESTFUL API成为了其中最为重要的桥梁,所以学习HTTP的一些方法也是后端开发的必备知识点。HTTP方法就像后端取出数据然后提供API给前端,让前端根据这个API地址去取所需的数据,并且不同的数据根据不同的方法去取。幂等性幂等是从数学引入的术语,表示某个元素经过多少次特定的运算之后结果仍然不变。所以假设双十一网站访问量突然增加,不少人点支付按钮会点两三下,那么,怎么保证这两下触发的事件只发生一次呢,这里就被定义为幂等性,意思为同样的操作不管执
2021-11-05 15:34:53 378
原创 【Golang】微服务实现工具 -- go-kit 易懂
go-kit是一个分布式的开发工具集,在大型的组织(业务)中可以用来构建微服务,其解决了分布式系统中大多数常见问题,因此,使用者可以将精力集中在业务逻辑上首先我们要明白,go-kit不是一个框架,他只是一个工具集,他里面有用来帮助我们实现微服务的一些工具包,所以他并不想SpringBoot那样能帮我们直接把框架搭好,我们只要在项目框架上直接写我们的代码就好了。但是他跟SpringBoot又有相似的地方,比如MVC和go-kit的三层架构。微服务要了解go-kit我们首先要知道什么事微服务,毕竟g.
2021-11-03 19:45:23 3339
原创 Go常用工具,组件简单了解
viperViper是适用于Go应用程序(包括Twelve-Factor App)的完整配置解决方案。它被设计用于在应用程序中工作,并且可以处理所有类型的配置需求和格式。它支持以下特性:设置默认值从JSON、TOML、YAML、HCL、envfile和Java properties格式的配置文件读取配置信息实时监控和重新读取配置文件(可选)从环境变量中读取从远程配置系统(etcd或Consul)读取并监控配置变化从命令行参数读取配置从buffer读取配置显式配置值import "gi
2021-11-02 18:58:47 308
转载 Mac终端主题 item2美化
这里有一篇文章写得非常清楚,可以看看https://segmentfault.com/a/1190000014992947
2021-11-01 13:51:07 996
原创 Nginx,Kafka,Zookeeper的实操端口问题
在网络中,每个数据传输的端口是一个非常重要的点,有的组件会有端口冲突的问题,所以弄清楚每个组件的相关端口非常重要Nginx对于Nginx的简单使用,我们可以看nginx/conf/nginx.conf文件里的配置## 配置大概格式http{ ... server{ listen 80; ## default ... } ...}或者我们可以用ps -ef | grep nginx ## 查看nginx运行状态netstat -anp | grep 'pid' ## 查看.
2021-10-31 13:46:31 3406
原创 【Golang】入门 数据类型 以及 并发
1.go语言申明一个变量:最简单的方法// var + 变量名 + typevar goVari type自动赋于类型的懒人方法// goVari 自动会定义成int类型goVari := 2var goVari intgoVari =2// goVari 自动定义成string类型goVari := "str"我们也可以一次性申明多个变量var goVari1, goVari2, goVari2 int goVari1, goVari2, goVari2 =
2021-10-26 16:22:32 195
原创 本机和服务器或者虚拟机之前的文互传命令
root表示本机的用户名,根据不同的用户名可以改1.从本机传输到服务器scp local_file_path root@Server_Ip_Address:server_file_path2.从服务器接收文件到本地scp root@Server_Ip_Address:server_file_path local_file_path ...
2021-10-25 16:54:36 108
原创 Redis和Java中Hashmap
最近在做SparkStreaming实时处理日志的小项目,里面有一步是用SparkStreaming从Kafka消费得到消息,然后通过redis存储,并且实现去重操作。第一次做项目的我就有疑问了,如果拿到数据要存着然后进行操作的话,如果我把数据都存在HashMap里面不行吗,反正都是键值对,何必要再连接一下Redis呢?(这里HashMap只是泛指Java的自身数据结构)查了一下之后,了解了为什么这里得用Redis。首先,Redis和HashMap都是基于内存操作的,所以在速度上不会有很大区别,Has
2021-10-25 14:08:18 1794
原创 【数据结构】树状数组 包含最简单的lowbit理解
树状数组,顾名思义,树的形状的数组,最终的数据结构还是一个数组作用树状数组的作用主要是用于对区间的查询,比如区间和,区间更新。那么有人可能会问,求区间为什么不用前缀和,那不是更简单吗?求和在求和的时候前缀和跟树状数组是一样的甚至比树状数组更方便更新但是如果我们要更新这个数组呢,对于前缀和是不是平均复杂度是O(N)?树状数组在这个时候,可以做到O(logN),这一点树状数组有很大优势所以我们最主要的就是,树状数组是怎么让一个数组可以做到求区间和跟更新都做到O(logN)复杂度的。基本思想
2021-10-15 17:13:32 432
原创 最容易理解的lowbit解析
lowbit(x)得到的是:从低位到高位数,第一个数字1的位置得到的二进制数比如8=1000,lowbit(8) = 8 2=10 , lowbit(2) = 2, 5 = 110 lowbit(6) = 2既然这一步是树状数组中最常用的一步,那么树状数组的性能就跟这一步息息相关,所以lowbit的实现非常简单lowbit(x) = x & (-x)所以说,大道至简啊,看上去非常简单的一个函数表达式,但是能完美解决我们的问题。其实这个方法是用到了计算机底层计算用到的是补码的机制。原
2021-10-15 17:12:36 613
原创 【Kafka】详解 以及Zookeeper
Kafka1.kafka是什么kafka的定义:Apache旗下的一款分布式流媒体框架,用于实时构建流处理应用,他的一个核心功能是作为企业级的消息引擎被广泛使用。关键字,实时,流处理,消息引擎2.kafka的特点高吞吐量可以满足每秒百万级别的消息生产和消费持久性有一套完善的消息存储机制,确保数据高效安全且持久化分布式Kafka的数据都会复制在几台不同的服务器上,某台故障失效时,生产者和消费者会使用其他的Kafka这篇文章主要从Kafka的这三个特性进行论述,主要是实现持久性和分布式
2021-10-14 17:11:28 1720 1
原创 负载均衡的类别
负载均衡在现在分布式系统中的作用越来越重要,怎么合理的将大量的请求尽量平均的分布给多个接收服务器成为了大家关注的问题。负载均衡从网络结构来看,其实就是根据我们最熟悉的计算机网络的七层模型来分的。计算机网络的七层模型物理层,数据链路层,网络层,传输层,会话层,表示层,应用层那么根据计算机网络的七层模型,负载均衡分为链路层,网络层,协议层,应用层四种负载均衡,也就是大家口中的,二层负载均衡,三层负载均衡,四层负载均衡,七层负载均衡,因为最常用的是四层负载均衡和七层负载均衡,我们详细写一下这两种。二
2021-10-14 14:45:41 183
原创 伯克利(Berkeley cs61b)git使用
21年秋季帮伯克利的留学生做cs61b的大作业pro1,写一个英恩尼格码(Enigma)密码机,在git上花费了很多时间,记录一下本地ssh连接berkeley代码仓库的过程(感叹一下国外cs的大作业强度,能从国外cs顺利毕业,真的能学到很多东西)1.查看个人仓库首先是学校会为我们维护一个代码仓库21秋季叫cs61b-taa,任何每个人在实验室的机器上会有一个个人本地仓库,一般叫cs61b-xxx,我们可以通过ssh查看我们在这个仓库的代码(所有代码中的***和xxx代表你的三位用户名)ssh cs
2021-10-01 17:13:56 1390
原创 【JAVA】Lambda表达式 内部类 匿名类 函数编程
官方文档链接https://docs.oracle.com/javase/tutorial/java/javaOO/lambdaexpressions.html
2021-09-21 15:29:00 296
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人