- 博客(40)
- 收藏
- 关注
原创 第九章:年入100万的计划泡汤了
那时候,关系户就能开始着手谈判,准备签下合同,预计一旦这笔大单顺利拿下,我们公司就能年入100万,简直就是梦想成真!与此同时,S公司也早已准备好,宣传册都已经印了出来,所有的前期准备工作都可以说是步步到位,完全没有后顾之忧。说实话,那一刻我松了一口气,虽然和之前的100万计划相比差距巨大,但至少我们有了第一笔实际的收入,算是柳暗花明又一村了。所有的费用,基本都由S公司承担,前期我们没有进行资金投入。很快,我们就准备好了合同,项目的期限为2024年到2025年,签署合同后,这也成为了新公司的第一单业务。
2025-01-22 16:34:18
226
原创 第八章:公司注册,创业开始
按照他们的方案,每个司机每年收取100元的费用,而S公司和我们的公司按照五五分成的比例来分配收益。幸运的是,公司的注册过程非常顺利,所有流程顺利完成,接下来就是技术上的准备工作了:服务的搭建、域名注册、小程序注册等。由于之前已经做过类似的工作,这一次的搭建过程几乎毫无难度,尤其是服务器配置,我直接在阿里云复制了原来服务器的配置,基本没有修改什么,花了一周时间,整个项目就顺利上线了。大约过了一周,我收到了L的回复,说S公司对我们的模式非常感兴趣,愿意进一步接触。大家开始摩拳擦掌,准备迎接这一大单的到来。
2025-01-20 17:32:24
269
原创 自定义注解
自定义esRestHighLevelClient需要用到时加上注解,注解使用@import引入配置类,配置类定义了两个bean,一个bean构造RestHighLevelClient,配置连接信息。超时时间 url等定义在一个配置类中,通过配置中心获取具体配置。获取方式呕吐难过另一个bean实现beanpostprocessor,重写postProcessBeforeInitialization方法,从配置中心获取具体配置,赋值。ConfigService bean内部有一个zk的client 读取
2024-11-08 13:41:29
328
原创 Spring-1 初识BeanFactory与ApplicationContext
初识BeanFactory与ApplicationContext
2022-11-10 20:54:52
140
原创 mysql学习
实际数据在磁盘上是如何存储的一行数据在磁盘文件里存储的时候,实际上首先会包含自己的变长字段的长度列表,然后是NULL值列表,接着是数据头,然后接着才是真实数据比如有一行数据是“jack NULL m NULL xx_school”,那么他真实存储大致如下所示:0x09 0x04 00000101 0000000000000000000010000000000000011001 jack m xx_school刚开始先是他的变长字段的长度,用十六进制来存储,然后是NULL值列表,指出了谁是N...
2022-01-27 11:16:53
339
原创 消息中间件对比
Kafka首先Kafka的吞吐量几乎是行业里最优秀的,在常规的机器配置下,一台机器可以达到每秒十几万的QPS,相当的强悍。Kafka性能也很高,基本上发送消息给Kafka都是毫秒级的性能。可用性也很高,Kafka是可以支持集群部署的,其中部分机器宕机是可以继续运行的。但是Kafka比较为人诟病的一点,似乎是丢数据方面的问题,因为Kafka收到消息之后会写入一个磁盘缓冲区里,并没有直接落地到物理磁盘上去,所以要是机器本身故障了,可能会导致磁盘缓冲区里的数据丢失。而且Kafka另外一个比较大的缺点,就是
2021-07-22 14:52:16
154
原创 redis学习笔记-redis cluster
学习课程连接基于儒猿redis课程笔记的记录搭建redis clusterredis cluster,提供了多个master,数据可以分布式存储在多个master上; 每个master都带着slave,自动就做读写分离; 每个master如果故障,那么久会自动将slave切换成master,高可用redis cluster的基本功能,来测试一下1、实验多master写入 -> 海量数据的分布式存储你在redis cluster写入数据的时候,其实是你可以将请求发送到任意一个master上去
2021-07-20 13:05:25
613
原创 redis学习笔记-缓存雪崩
相对来说,考虑的比较完善的一套方案,分为事前,事中,事后三个层次去思考怎么来应对缓存雪崩的场景1、事前解决方案发生缓存雪崩之前,事情之前,怎么去避免redis彻底挂掉redis本身的高可用性,复制,主从架构,操作主节点,读写,数据同步到从节点,一旦主节点挂掉,从节点跟上双机房部署,一套redis cluster,部分机器在一个机房,另一部分机器在另外一个机房还有一种部署方式,两套redis cluster,两套redis cluster之间做一个数据的同步,redis集群是可以搭建成树状的结构的
2021-07-20 13:05:17
87
原创 redis学习笔记-数据分布算法
学习课程连接基于儒猿redis课程笔记的记录hash算法 -> 一致性hash算法(memcached) -> redis cluster,hash slot算法用不同的算法,就决定了在多个master节点的时候,数据如何分布到这些节点上去,解决这个问题1、redis cluster介绍redis cluster(1)自动将数据进行分片,每个master上放一部分数据(2)提供内置的高可用支持,部分master不可用时,还是可以继续工作的在redis cluster架构下,每个r
2021-07-20 13:04:59
233
原创 redis学习笔记-哨兵
学习课程连接基于儒猿redis课程笔记的记录基础知识1、哨兵的介绍sentinal,中文名是哨兵哨兵是redis集群架构中非常重要的一个组件,主要功能如下(1)集群监控,负责监控redis master和slave进程是否正常工作(2)消息通知,如果某个redis实例有故障,那么哨兵负责发送消息作为报警通知给管理员(3)故障转移,如果master node挂掉了,会自动转移到slave node上(4)配置中心,如果故障转移发生了,通知client客户端新的master地址哨兵本身也是分
2021-07-20 13:04:48
162
原创 redis学习笔记-主从,读写分离
学习课程连接基于儒猿redis课程笔记的记录redis replication以及master持久化对主从架构的安全意义1、redis replication的核心机制(1)redis采用异步方式复制数据到slave节点,不过redis 2.8开始,slave node会周期性地确认自己每次复制的数据量(2)一个master node是可以配置多个slave node的(3)slave node也可以连接其他的slave node(4)slave node做复制的时候,是不会block mas
2021-07-20 13:04:39
292
原创 redis学习笔记-持久化机制
学习课程连接基于儒猿redis课程笔记的记录持久化机制1、RDB和AOF两种持久化机制的介绍RDB持久化机制,对redis中的数据执行周期性的持久化AOF机制对每条写入命令作为日志,以append-only的模式写入一个日志文件中,在redis重启的时候,可以通过回放AOF日志中的写入指令来重新构建整个数据集如果我们想要redis仅仅作为纯内存的缓存来用,那么可以禁止RDB和AOF所有的持久化机制通过RDB或AOF,都可以将redis内存中的数据给持久化到磁盘上面来,然后可以将这些数据备份到别
2021-07-20 13:04:26
157
原创 《设计模式之美》笔记-23中设计模式总结
一、创建型设计模式创建型设计模式包括:单例模式、工厂模式、建造者模式、原型模式。它主要解决对象的创建问题,封装复杂的创建过程,解耦对象的创建代码和使用代码。1. 单例模式单例模式用来创建全局唯一的对象。一个类只允许创建一个对象(或者叫实例),那这个类就是一个单例类,这种设计模式就叫作单例模式。单例有几种经典的实现方式,它们分别是:饿汉式、懒汉式、双重检测、静态内部类、枚举。尽管单例是一个很常用的设计模式,在实际的开发中,我们也确实经常用到它,但是,有些人认为单例是一种反模式(anti-pattern).
2021-07-09 17:52:38
247
原创 《设计模式之美》笔记-设计原则
单一职责1.如何理解单一职责原则(SRP)?一个类只负责完成一个职责或者功能。不要设计大而全的类,要设计粒度小、功能单一的类。单一职责原则是为了实现代码高内聚、低耦合,提高代码的复用性、可读性、可维护性。2.如何判断类的职责是否足够单一?不同的应用场景、不同阶段的需求背景、不同的业务层面,对同一个类的职责是否单一,可能会有不同的判定结果。实际上,一些侧面的判断指标更具有指导意义和可执行性,比如,出现下面这些情况就有可能说明这类的设计不满足单一职责原则:类中的代码行数、函数或者属性过多;类依赖的
2021-07-07 17:34:20
90
原创 《设计模式之美》笔记-面向对象vs面向过程
1. 什么是面向过程编程?什么是面向过程编程语言?相较于面向对象编程以类为组织代码的基本单元,面向过程编程则是以过程(或方法)作为组织代码的基本单元。它最主要的特点就是数据和方法相分离。相较于面向对象编程语言,面向过程编程语言最大的特点就是不支持丰富的面向对象编程特性,比如继承、多态、封装。2. 面向对象编程相比面向过程编程有哪些优势?面向对象编程相比起面向过程编程的优势主要有三个。1、对于大规模复杂程序的开发,程序的处理流程并非单一的一条主线,而是错综复杂的网状结构。面向对象编程比起面向过程编程,更
2021-07-07 11:42:48
213
原创 《设计模式之美》笔记-封装、抽象、继承、多态
封装、抽象、继承、多态关于封装特性封装也叫作信息隐藏或者数据访问保护。类通过暴露有限的访问接口,授权外部仅能通过类提供的方式来访问内部信息或者数据。它需要编程语言提供权限访问控制语法来支持,例如 Java 中的 private、protected、public 关键字。封装特性存在的意义,一方面是保护数据不被随意修改,提高代码的可维护性;另一方面是仅暴露有限的必要接口,提高类的易用性。关于抽象特性封装主要讲如何隐藏信息、保护数据,那抽象就是讲如何隐藏方法的具体实现,让使用者只需要关心方法提供了哪
2021-07-07 11:06:30
124
原创 Error parsing file template: Unable to find resource ‘File Header.java‘
新建class文件报错第一步:查看class模板配置是否为空如果配置正确那就是第二种情况增加一行配置-Djdk.util.zip.ensureTrailingSlash=false最后重启,完美解决!
2021-07-06 16:04:26
2213
2
原创 hashMap中的位运算
hashMap中用了大量的位运算来优化,提高效率初始化容量最大容量计算哈希桶索引使用与操作来代替取余num % length优化为num & (length - 1)length 为 2 的 n 次幂时,转换为二进制,最高位为 1,其余位为 0;length-1 则所有位均为 1。1 和另一个数进行与操作时,结果为另一个数本身,另一个数的高位被截取,结果范围为 0 ~ length - 1,和取余操作结果相等。那么桶数为什么必须是 2 的次幂?如果不为2的次幂,某一位为0,而0和
2021-07-05 16:58:33
353
原创 Linux操作学习(持续更新)
vi vimvi 文本编辑器vim可以看做vi的增强版本vim的三种模式1、正常模式:vim打开一个文件则进入普通模式2、编辑模式:按下i 进入编辑模式3、命令行模式:在这个模式下,可输入各种命令命令:vim hello.java(编辑hello.java文件,没有的话新建hello.java文件)进入普通模式i 进入编辑模式,进行文件编辑esc 退出编辑模式 进入正常模式常用命令拷贝当前行:yy拷贝向下n行:nyy粘贴:p删除当前行:dd删除n行:ndd显示行数::se
2021-07-05 11:19:20
79
原创 spring容器启动流程+循环引用
新建Appconfig类(配置扫描路径)package com.example.service.springTest;import org.springframework.beans.factory.annotation.Configurable;import org.springframework.context.annotation.ComponentScan;/** * @author lgx * @date 2021/7/1 10:06 */@Configurable@Com
2021-07-02 15:37:57
139
原创 自定义starter
基于sptingboot的自动配置,自定义一个starter使用上一篇文章创建的项目service中增加web依赖 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency>原有的Te
2021-06-29 15:37:18
81
原创 IDEA创建多Module springboot项目
IDEA创建多Module springboot项目首先创建父项目删除src目录pom中添加<packaging>pom</packaging>一个空的父项目就创建完成了,然后创建两个子项目web和serviceweb项目创建对着父项目右键创建一个springboot项目,此项目为入口,有启动类名字可以自己取由于web项目依赖于父项目,讲web的pom中依赖修改为依赖父项目,父项目的跑pom中增加spring-boot-starter-par
2021-06-29 15:36:56
1223
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人