自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

hjr的博客

记录从进入程序员这一行积累的各种知识,随笔向,非教学科普

  • 博客(182)
  • 资源 (3)
  • 收藏
  • 关注

原创 hjr-如何完成一次严谨的需求开发流程

第一阶段研发和产品对需求的时候,主要关注什么主要关注的: 价值必须要做的: 排期在开发任何需求前是必须写设计文档的设计文档中什么是干货: 图因为没人愿意读一堆文字其中最重要的有几点然后评审最重要的是关于git:首先:至少需要4个分支。dev,test,uat,masterdev:开发的分支,始终保持和master一致,这个分支的作用就是防止很多人一起王master分支合并,冲突,把master搞混乱test::测试的分支,每个人的改动都可以提交上去测试自己的功能uat:预发布的分支,保证提交的都是tes

2023-10-20 11:14:46 106

原创 hjr-如何做双十一 618 活动的备战工作

我觉得分为四步,梳理、监控、增强、演练。

2023-10-16 14:37:12 111

原创 hjr-谈一下自动驾驶汽车网络和数据安全

建立完善的安全策略和规范:制定网络安全和数据安全的管理制度,对数据的流通、使用、存储、备份等方面进行详细规定,加强内部管理和监控,避免人为因素的失误和操作失误导致的安全事件。安全设备的投入和运营:安装有效的安全设备,如防火墙、入侵检测系统、安全监控系统等,可以及时发现和拦截入侵、攻击和恶意软件等安全事件,保障网络和数据的安全。安全意识教育和培训:加强员工安全意识的培训,提高员工的安全知识和技能,建立安全审计机制,及时排查存在的安全隐患,并做好对数据安全的应急响应计划。证书异常,未授权应用,程序崩溃等。

2023-04-17 16:35:20 512

原创 hjr- 几种不同的数据一致性算法

Eureka是一种基于REST的分布式服务治理组件,它使用的是基于心跳检测的方式来检测服务是否可用,同时使用CAP定理中的AP模型来保证可用性和分区容错性。Kafka使用ZooKeeper来管理节点信息和选举Leader,通过Leader副本来进行数据的写入和读取,同时保证每个Partition的数据副本都存储在不同的节点上,以提高可用性和容错性。Redis是一种内存数据存储的缓存服务,使用的是基于主从同步的方式,通过主节点向从节点发送更新信息,从而保证节点之间的数据一致性。

2023-04-13 16:42:39 140

原创 hjr-JAVA 完整的说一下垃圾回收

2、多线程共享变量,在主内存里存储的同时,每个线程维护各自的虚拟内存保存该变量副本,优先操作虚拟内存的变量副本,再异步更新主内存,才是JVM内存模型把。当JVM判断堆内存空间不足的时候,会使用垃圾回收器,使用判断算法判断哪些对象可以被回收,再使用垃圾回收算法进行具体的回收操作。1、JVM分为堆内存和桟内存,堆中存放程序员创建的对象,桟存放执行的方法信息,局部变量和参数等。AB相等的内存,A用来使用,B用来把A的所有活跃对象转移并存储,然后清空A。复制,标记清除,标记整理,是用来具体做回收的算法。

2023-04-13 16:41:09 345

原创 hjr-高并发系统如何保障高可用

监控和告警:建立全方位的监控和告警系统,能够及时有效地发现并解决系统问题,快速响应故障,从而保障系统的高可用。这里简单介绍一下基本所有选举都是少数服从多数的算法,目的是为了在主节点出现故障时,重新选择出主节点。负载均衡:通过负载均衡技术,将请求分发到不同的服务器上处理,以达到负载均衡和高可用的目的。防止单点故障:通过冗余备份、集群等技术,防止单点故障的发生,以确保系统的高可用性。强一致性:所有节点的数据在任何时候都是相同的。分布式指的是不同的节点负责不同的功能。集群指的是相同的功能复制到不同的节点。

2023-04-10 17:09:28 294

原创 hjr-索引的本质

一本书籍可能包含书名,尺寸,作者等等字段属性,一本书类比一张数据表的一条记录。当我们去一个图书馆,可以根据数据目录里的,找到对应的书籍一般书籍目录是按照书籍名字,首字母A-Z排序的这里就是书籍这个数据的索引字段,按照首字母A-Z排序,就是这个使用的。所以索引本质是什么在某个数据表中,选取一个特征字段,然后按照特定的数据结构描述这个字段,然后先检索这个索引字段,然后根据索引找到对应的数据记录,这是数据库检索表的记录的重要手段。

2023-03-24 18:26:17 270

原创 hjr-深入说一下事务

事务本质是指一组操作,或者全都成功,或者全都失败一般我们尽可能让全部成功,所以需要重试,但是如果一直失败我们也需要进行相应处理,因此使用超时检测,当超时后触发回滚所以事务的三要素是:检测执行,重试 和 回滚。

2023-03-24 17:16:26 421

原创 hjr-详细说一下Redis集群

一般我们用Redis做缓存,热点数据击穿:访问到了过期的Key穿透:访问一个不存在的key雪崩:大量击穿。

2023-03-21 18:44:19 475

原创 hjr-如何做技术选型

当我们对一个软件系统做架构设计的时候,避不开的问题就是做技术选型,那我们需要考量哪些因素呢一般来说我们的一个软件系统主要会包含1、开发语言,这个直接决定了后续很多框架的基调,应该结合团队技术栈首先确定2、中间件,一般做 数据存储 流转 缓存等工作3、各种框架三个主要的组成部分。

2023-03-17 15:44:19 326

原创 hjr-微服务(八):如何做限流

我们要把A池子的水转到B池子,如何控制水平稳的从A池子进入B池子就是限流。

2023-03-16 18:02:16 216

原创 hjr-微服务(七):如何保障数据一致性和高可用的平衡

可用性(Availability):利用分布式事务,每次写操作或者全部成功或者全部失败,用户访问服务器上面的数据,响应时间在可以接受的范围内,如果想要快速返回数据就不能在数据同步上花费太多时间。分区容错性(Partition tolerance):分区指,分布式系统节点通信故障了,两个故障的节点就是两个分区,把数据同步复制到多个分区。一致性(Consistency):多个数据副本的数据保持一致,如果花费很多时间在数据同步上,会导致查询无法立刻返回最新数据,因为没同步完成呢。分布式事务:事务消息表。

2023-03-16 17:47:10 393

原创 hjr-WEB开发的学习路线

1、前端先学习HTML+CSS+JavaScript做基础页面2、然后进阶学习 VUE+ElementUI做项目这样就可以做一个web系统的页面了。

2023-02-07 17:18:16 270

原创 hjr-微服务(六):如何保障服务稳定性

服务稳定是一个特别大的话题,一般我们用SLA描述服务的质量SLA一般有99.9 ,99.99,就是我们常说的三个9,四个9有两个纬度衡量。

2023-02-03 17:04:53 619

原创 hjr-微服务(五):微服务的常见问题

在我们知道如何搭建一个最简单的微服务系统后,我们还需要解决几个关键的问题。

2023-02-03 15:40:39 284

原创 hjr-大数据 关于分库分表

一般对于大数据有两种优化方式第一使用大数据数据库第二非大数据数据库的分库分表,单表数据限制1kw以内。

2022-07-29 17:50:53 357

原创 hjr-如何在百度做好架构师

总结一下在在百度做架构师的心得。

2022-07-28 16:59:30 538

原创 hjr-JAVA 大数据关于日志数据的设计

如果我们操作json数据,因为JsonObject比Map有各种功能方法的支持,用JsonObject更好。那么问题就来了,这个json解析是用Map好还是用javabean好还是用JsonObject好呢。其中map和JsonObject都支持根据字符串取值,javabean可以反射动态取值。建议对性能没要求那么极致的情况使用javabean,因为代码清晰好维护。我们在数据湖中可能有各种各样的日志,结构名称都不一样。可以用一个拍平的json作为统一的日志结构。...

2022-07-21 15:30:26 390

原创 hjr-微服务(四):接口级别的权限控制

实现步骤我们想要对每个接口做权限控制先给整个系统所有左侧菜单做一个动态配置功能,前端所有访问后端接口的操作按钮多做为一个子项目新增一条记录,设置一个全局唯一的key每个角色和菜单权限记录关联起来,建一个多对多的表后端每个接口和上文的全局唯一的key对应上加一个注解@PreAuthorize("hasAuthority('全局唯一的key')")在获取jwt token的时候 根据登录用户id,查找角色,根据角色查找对应菜单权限的全局唯一的key,把key的list添加到在文件

2021-12-31 14:26:19 1494

原创 hjr-JAVA 文件服务minio部署和使用

通常我们可以把上传的文件另存为到一个专门的目录,但是缺点是不好管理。我们可以用fastdfs 但是缺点是部署太麻烦因此我们使用 minio部署1安装wget https://dl.min.io/server/minio/release/linux-amd64/miniochmod 755 miniomv minio /usr/local/binmkdir minio_data #文件都存到这里export MINIO_ROOT_USER=用户名export MINIO_ROOT_PAS

2021-10-09 15:59:40 252

原创 hjr-微服务(三):关于日志

方案其实日志方案总结就两种,一种是在入口加拦截,优点是对代码没侵入,代码量少,缺点是整个系统的api需要按照一种规范去命名另一种是在每个接口上加自定义注解,注解里面拦截这里我选择在入口拦截对于微服务来说最好的入口就是网关拦截在网关拦截请求,并拦截返回值,可以获取请求成功还是失败...

2021-09-18 18:20:32 134

原创 hjr-微服务(二):关于认证和鉴权

认证每个服务之间RPC调用是否需要认证,如果需要,肯定不能每次调用都查数据库判断账号密码验证因此这里建议一个微服务专门作为认证服务,给所有访问认证服务的微服务发token,然后之后其他服务之间请求都带着token然后token可以直接用jwt技术,自身包含一些如用户名等非敏感信息这样我们只需要一个认证微服务,其余的每个服务都作为资源微服务,无论是前端请求后端,还是后端多个微服务间调用,都先请求认证微服务,获取jwt格式的token,之后每次请求都带着token即可实现我们直接使用 sprin

2021-09-14 17:40:33 476

原创 hjr-微服务(一):认识JAVA微服务

首先我希望能用三言两语,把微服务解释清楚,因此尽量避免废话,然后这里说的都是JAVA的概念原先一个大web后端系统是一个java进程,包含全部的功能缺点是改一句代码需要全部重新打包部署开发人员每个人都从git clone了全部的代码,看着就头疼因此我们把一个大系统拆分成多个java进程每个java进程负责一部分业务,比如一个负责用户相关的,一个负责订单相关的,分别两个人负责然后放到两个git上,两个开发人员各自维护自己的git即可,分别可以独立部署然后我们会发现,如

2021-09-10 18:55:47 146

原创 hjr-SAAS相关架构和关系和时序数据库

商业应用云开发隐藏了代码层面,简化了开发过程,该模式目前只能做一些简单的逻辑,无法做如特别复杂的sql报表,需要事务控制、安全场景要求高的或高并发处理,如高并发场景自己在数据库建立乐观锁等,不能控制数据层面的加锁、数据同步、缓存、数据库和代码事务等。仍有待深入研究。华为云提供了IaaS底层,,通过springboot开发的商业应用开发云提供了Apaas平台,同时使用基于springclould的...

2021-09-10 18:13:52 131

原创 hjr-linux:kafuka安装与使用

需要先安装zookeeper并启动然后安装kafuka先分别下载 apache-zookeeper-3.5.6-bin 和 kafka_2.12-2.3.1ZK先修改zk的配置打开 zookeeper-3.4.8\conf,把zoo_sample.cfg重命名成zoo.cfg 从文本编辑器里打开zoo.cfg修改dataDir和dataLogDir保存路径dataDir=D:\da...

2021-09-10 18:10:28 129

原创 hjr-linux:部署阿波罗全局配置中心

先安装mysqlwget -i -c https://repo.mysql.com//mysql80-community-release-el7-3.noarch.rpmyum -y install mysql80-community-release-el7-3.noarch.rpmyum -y install mysql-community-server启动mysqlsystemc...

2021-09-10 18:08:53 85

原创 hjr-JAVA 我为什么使用了swagger

1、记得最开始和和前端数据对接是写了个word文档,对每个接口进行描述,描述字段,描述返回值2、后来有时候改成在线文档了,不用来回qq发送文件一版又一版了3、后来用了postman自动生成的描述文档,同时刻4、再后来使用的是 yapi,每次写一个接口都要在系统中维护一个,然后字段等修改还需要一直维护4、因此...

2021-09-10 17:57:26 110

原创 hjr-VUE 后端使用vue和element-ui总结

为什么用VUE作为一个后端开发,最近写了好几个月前端代码 vue + element,写一下总体感受,之后可能会对技术细节做单节的更新。总结一下使用感受:1、和jquery那种传统的方式比觉得最大的好处就是,不再关心dom标签,id等各种属性了,眼中全都是数据双向绑定,操作数据,页面标签就自动变化2、好多功能都封装成组件,调用时一个标签即可,组件话开发为什么用element-ui1、不需要关注css样式设置了,特别是表单,多数时候,还有布局基本思路从各种div改成设置相对绝对布局改成了2、各种

2021-04-02 15:30:07 434 1

原创 hjr-JAVA 压力测试

部分术语在压测中,有很多专业术语,现把与物联平台压测有关的常用的进行总结如下QPS 每秒处理请求数TPS 每秒处理事务数RPS 每秒发送请求数RT 相应时间并发数 = RPS * 响应时间RPS = 并发数/响应时间UV 访客数C Connection连接数Msg/s 每秒消息数量Bps 网络吞吐(字节/秒)一个英文一个字节 一个汉字两个字节压测工具介绍Jmeter 5.3常用参数解释(1)线程数线程数是很关键的一个参数,压测的时候是为了模拟真实情况很多客户端并发访问,因此

2020-12-11 18:51:26 747

原创 hjr-SpringBoot:spring security oauth2

区分认证使用的是 oauth2授权使用的是 spring securityJWT:普通的oauth2颁发的就是一串随机hash字符串,jwt就是一种特殊格式的token,包含头部Header,载荷Payload,签名Signature。模式需要配置如下三步:(1)配置资源服务器(2)配置认证服务器(3)配置spring securityoauth2分成了4种模式(1)授权码模式(authorization code)(2)简化模式(implicit)(3)密码模式(resource

2020-12-02 19:32:00 216 1

原创 hjr-JAVA 泛型

泛型就是 任意类型比如我们有一个需求,写一个类,这个类可以把传入的任何类型数据转化为字符串我们会写重载多个类型的方法class a { static String tos(Integer in){ return in.toString() } static String tos(Double in2){ return in2.toString() }}或者用泛型,定义一个T代替各种如Integer或Double等等其他类型class a<T> { privat

2020-11-05 09:40:44 111

原创 hjr-SQL-关于创建索引

什么时候创建索引mysql 报表查询几百万数据很慢把where 字段 group by 字段 或者max,count,sum 的字段可以创建索引提升速度索引类型一般索引常用有两种类型 先选择 unique 如果因为存在重复数据报错了 就换成normal联合索引举个例子select max(a),b from xxx group by b;此时只给b建索引还是很慢,因为虽然查询b快了,但是还要花时间遍历a然后排序,总体时间可能更慢了如果同时给a和b建立索引,还是很慢,因为a和b没有一起组成索

2020-09-29 17:11:01 116

原创 hjr-linux:centos7 redis搭建

yum install -y gccwget http://download.redis.io/releases/redis-5.0.3.tar.gztar -zxvf redis-5.0.3.tar.gzcd redis-5.0.3makemake install PREFIX=/home/rediscp /xx/redis-5.0.3/redis.conf /home/redis/bin/cd /home/redis/bin/vim redis.conf./redis-server r

2020-07-15 17:52:42 140

原创 hjr-SQL-mysql8 centos

服务无法启动删除/var/lib/mysql /后重启MySQL服务修改密码强度限制set global validate_password.policy=0;set global validate_password.length=1;修改密码vim /etc/my.cnf最下面新增skip-grant-tablesservice mysqld restartmysql进入mysql mysql -uroot -pupdate user set authentication

2020-07-13 17:17:50 137

原创 hjr-SQL-influxdb时序数据库

influxdb概念主键是时间戳,tag和filed,where后面的条件设置成tag,只为记录的设置为filed安装windows下载直接安装,开启后cmd窗口一直打开,关闭窗口数据库关闭linux 直接yum安装,安装后服务自动启动,直接输入influx进入数据库操作界面连接springboot ,yml写好配置 influx: url: http://xxx:xx database: xx user: xx password: xx按照网上写好b

2020-06-22 16:05:26 180

原创 hjr-Linux 常用的指令

Linuxls -l -h 显示文件列表同时显示内存rm fileName 删除文件mv fileName path/newFileName 移动文件到path 并重命名 newFileNamecp fileName path/newFileName 复制文件并重命名 newFileNameJavajps 查看当前java活跃进程pwdx pid 查看某个进程的执行文件路径jps ...

2020-01-06 20:24:39 232

原创 hjr-JAVA 几种常用数据类型的转化

java beanmapjsonjava bean -> json stringimport com.alibaba.fastjson.annotation.JSONField;import lombok.Getter;import lombok.Setter;import java.util.List;@Getter@Setterpublic class Alar...

2019-12-04 17:49:53 180

原创 hjr-linux:centos7 ftp搭建与连接

服务器下载 server-u 6.4汉化破解版 客户端下载 FileZilla Client最后服务器安装好FTP后需要给别人提供 ,ip + 端口 + 用户名 + 密码别人用上面的几个就可以在客户端连接到服务器,进行FTP文件传输了服务器安装并破解server-u开启软件,所有默认引导让填写的都点击取消右击域-&gt;新建域-&gt;名字随便填写,ip填写当前服务器ip,端口...

2019-11-05 15:36:24 330 1

原创 hjr-JAVA java.util.concurrent

CyclicBarrier可以用于多线程计算数据,最后合并计算结果的应用场景。比如现在需要计算10个人12个月内的工资详细,可以将线程分为10个,分别计算每个人的工资,最后,再用barrierAction将这些线程的计算结果进行整合,得出最后结果。1 某一个界面需要同时发多个请求,全部请求都成功后再一起刷新界面 异步任务 同步返回2 多个请求必须按照一定顺序执行 加锁3 控制线程...

2019-10-18 16:10:25 100

原创 hjr-JAVA git一些使用技巧

使用方式一般有两种使用方式使用命令行 使用ide自带的插件,区别就是一个用鼠标点击操作,一个用命令行键盘输入指令操作开发方式首先新建一个项目 ,然后创建master分支,创建dev分支,分别对应生产环境和测试环境。之后每个人开发一个新模块时,新建一个分支,当开发完后,提交代码push到自己的分支当每次提交后,想要修改已有提交代码,可以使用amend commit,在idea...

2019-10-18 10:42:37 131

各种格式的测试音视频-共24种格式

包含12中格式的测试音频,与12种格式的测试视频 可以测试web上传的转码功能,播放器支持格式等

2018-02-28

$page.pager{}分页

jquery.pager.js,真正的pager 启动:html---<div id="pege"></div> JS---$page.pager{} 可重复初始化,无多次触发错误,带css

2017-09-01

任意视频格式转WEB支持的mp4

一键任意视频格式转WEB支持的mp4,转换后的文件在当前文件夹,以转换后的xxx.mp4文件形式显示

2017-05-10

空空如也

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

TA关注的人

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