- 博客(1045)
- 资源 (203)
- 收藏
- 关注
转载 程序员的职业生涯,一个年薪50万程序员的自述
目前在二线城市-郑州一家30人的软件公司担任研发总监岗位,将近13年的程序员生涯,分享一些经验,更多的可能是教训吧,希望对题主有些帮助。首先分享一下我的程序员职业生涯发展经历,还是以工作年限和收入为主线来描述吧,比较直观,钱 一定是大家比较关注的点。下图中纵坐标为我的年薪收入,横坐标为工作年限,2010年毕业,至今13年了。首先我是一个很普通的人,农村出身,父母没什么文化,更没什么背景。从一个山里的高中,费了九牛二虎之力考上了一个二本大学。当年我们那届高中毕业生,整个学校考上二本以上的人只有4个。
2024-01-13 09:15:30 63
转载 牢记这16个SpringBoot 扩展接口,写出更加漂亮的代码
一般情况下,Spring通过反射机制利用bean的class属性指定支线类去实例化bean,在某些情况下,实例化Bean过程比较复杂,如果按照传统的方式,则需要在bean中提供大量的配置信息。应该是很多人非常熟悉的一个类了,就是spring上下文管理器,可以手动的获取任何在spring上下文注册的bean,我们经常扩展这个接口来缓存spring上下文,包装成静态方法。之后,当有循环依赖的场景,当bean实例化好之后,为了防止有循环依赖,会提前暴露回调方法,用于bean实例化的后置处理。
2023-10-08 20:36:48 31
转载 Docker 入门终极指南,详细版!别再说不会用 Docker 了!
容器化技术必将是云时代不可或缺的技能之一,而Docker只是沧海一粟。随之而来的还有集群容器管理K8sIstio等技术。打开Docker的大门,不断抽丝剥茧,逐层深入,你将感受到容器化的无穷魅力。来源:jartto.wang/2020/07/04/learn-docker。
2023-08-06 08:08:21 87
转载 谁再问我docker,我就把这篇甩给他
而Docker容器则是通过隔离(namesapce)的方式,将文件系统、进程、设备、网络等资源进行隔离,再对权限、CPU资源等进行控制(cgroup),最终让容器之间互不影响,容器无法影响宿主机。容器将不会虚拟出自己的网卡,配置自己的IP等,而是使用宿主机的IP和端口.此时容器不再拥有隔离的、独立的网络栈。通过镜像启动一个容器,一个镜像是一个可执行的包,其中包括运行应用程序所需要的所有内容包含代码,运行时间,库、环境变量、和配置文件。数据卷容器是一个普通的容器,专门提供数据卷给其他容器挂载使用。
2023-02-26 16:37:42 145
转载 Impala的介绍、使用和原理架构
impala是cloudera提供的一款高效率的sql查询工具,提供实时的查询效果,官方测试性能比hive快10到100倍,其sql查询比sparkSQL还要更加快速,号称是当前大数据领域最快的查询sql工具,impala是参照谷歌的新三篇论文(Caffeine–网络搜索引擎、Pregel–分布式图计算、Dremel–交互式分析工具)当中的Dremel实现而来,其中旧三篇论文分别是(BigTable,GFS,MapReduce)分别对应我们即将学的HBase和已经学过的HDFS以及MapReduce。
2024-03-18 21:50:24 7
转载 4 种策略让 MySQL 和 Redis 数据保持一致
Read Through 和 WriteThrough 的流程类似,只是在客户端查询数据A时,如果缓存中数据A失效了(过期或被驱逐淘汰),则缓存会同步去数据库中查询数据A,并缓存起来,再返回给客户端。可见,最后缓存中的数据A和数据库中的数据 A 是一致的,理论上可能会出现一小段时间数据不一致,不过这种概率也比较低,大部分的业务也不会有太大的问题。可见,最后缓存中的数据 A 跟数据库中的数据 A 是不一致的,缓存中的数据A是旧的脏数据。客户端1 更新缓存中数据 A,缓存同步更新数据库中数据 A,再返回结果。
2024-03-18 21:46:55 3
转载 【分布式存储】聊一下分布式存储中分片机制
在服务端领域,主要特点是支撑7*24小时不间断的服务,而最终对各种行为会生产对应的数据,比如用户登陆/注册,发起订单交易、支付、身份验证,短信验证等情况都需要存储起来,其中包括各种各样的数据,而采用格式的存储中间件进行保存数据,可以有效的进行数据查询和存储,比如MySQL支持关系型数据的存储,Redis支持NoSQL,ES支持快速查询等。在各种存储中间件中,也会出现节点的下线和上线,所以为保证数据可以均匀的落在每个节点上,在发生节点删除和增加的时候,不会出现大规模数据访问和迁移的情况。
2024-03-17 16:46:49 5
转载 mybatis与hibernate的区别
数据量:有以下情况最好选用Mybatis如果有超过千万级别的表;如果有单次业务大批量数据提交的需求(百万条及以上的),这个尤其不建议用Hibernate;如果有单次业务大批量读取需求(百万条及以上的)(注,hibernate多表查询比较费劲,用不好很容易造成性能问题);表关联复杂度如果主要业务表的关联表超过20个(大概值),不建议使用hibernate人员如果开发成员多数不是多年使用hibernate的情况,建议使用mybatis数据库对于项目的重要程度。
2024-03-17 15:40:37 7
转载 聚集索引和非聚集索引的区别
但您结合“部首目录”和“检字表”而查到的字的排序并不是真正的正文的排序方法,比如您查“张”字,我们可以看到在查部首之后的检字表中“张”的页码是672页,检字表中“张”的上面是“驰”字,但页码却是63页,“张”的下面是“弩”字,页面是390页。分析:如果认为是的朋友,可能是受系统默认设置的影响,一般我们指定一个表的主键,如果这个表之前没有聚集索引,同时建立主键时候没有强制指定使用非聚集索引,SQL会默认在此字段上创建一个聚集索引,而主键都是唯一的,所以理所当然的认为创建聚集索引的字段也需要唯一。
2024-03-17 10:05:10 13
转载 Flink CDC 详解 Flink CDC介绍
什么是 CDC?CDC 是 Change Data Capture(变更数据获取)的简称。核心思想是,监测并捕获数据库的变动(包括数据或数据表的插入、更新以及删除等),将这些变更按发生的顺序完整记录下来,写入到消息中间件中以供其他服务进行订阅及消费。CDC 的种类基于查询的 CDC基于 Binlog 的 CDC开源产品执行模式BatchStreaming是否可以捕获所有数据变化否是延迟性高延迟低延迟是否增加数据库压力是否关于 Flink-CDC。
2024-03-03 15:35:09 43
转载 常见的几种数据同步方案
感兴趣的可以深究,这里只想说明:对大数据量处理,包括数据提取,数据加载,增量数据同步,可以借助这些工具,ETL工具提供了一些可视化的组件+配置具体的链接类型。但是因为引入新的组件,在多数据源的情况下,不可避免的带来系统的复杂性。这种就是常见的SQL脚本,常用于数据割接,错误数据修改,包括配置数据,业务字段,运维手工调整异常数据等。如上,比如:例子中的触发器是在tb_order表中插入新数据时触发的,将新数据同步到tb_order_his表中(读者可以根据需要调整触发器的触发时机和逻辑)
2024-03-03 15:13:41 39
转载 优秀开源软件的类,都是怎么命名的?
日常编码中,代码的命名是个大的学问。能快速的看懂开源软件的代码结构和意图,也是一项必备的能力。那它们有什么规律呢?Java项目的代码结构,能够体现它的设计理念。Java采用长命名的方式来规范类的命名,能够自己表达它的主要意图。配合高级的IDE,可以减少编码人员的记忆负担,靠模糊的匹配就能找到自己所需要的资源。为了让大家更好的理解命名的套路,我借鉴了最流行的Java接开源软件(spring系列,netty,libgdx,guava,logback等等),总结了10类常见的类命名。
2024-03-02 17:00:32 24
转载 面试必备:四种经典限流算法讲解
固定窗口限流算法()是一种最简单的限流算法,其原理是在固定时间窗口单位时间)内限制请求的数量。该算法将时间分成固定的窗口,并在每个窗口内限制请求的数量。具体来说,算法将请求按照时间顺序放入时间窗口中,并计算该时间窗口内的请求数量,如果请求数量超出了限制,则拒绝该请求。假设单位时间(固定时间窗口)是1秒,限流阀值为3。在单位时间1秒内,每来一个请求,计数器就加1,如果计数器累加的次数超过限流阀值3,后续的请求全部拒绝。等到1s结束后,计数器清0,重新开始计数。
2024-03-02 16:56:20 19
转载 Redis主从复制原理
Redis 同时支持主从复制和读写分离:一个 Redis 实例作为主节点Master,负责写操作。其它实例(可能有 1 或多个)作为从节点Slave,负责复制主节点的数据。
2024-02-25 09:00:33 49 1
转载 可靠消息最终一致性【本地消息表、RocketMQ 事务消息方案】
可靠消息最终一致性方案是指当事务发起方执行完成本地事务后并发出一条消息,事务参与方(消息消费者)一定能够接收消息并处理事务成功,此方案强调的是只要消息发给事务参与方最终事务要达到一致。此方案是利用消息中间件完成,如下图:事务发起方(消息生产方)将消息发给消息中间件,事务参与方从消息中间件接收消息,事务参与方(消息消费方)和消息中间件之间都是通过网络通信,由于网络通信的不确定性会导致分布式事务问题。因此可靠消息最终一致性方案要解决以下几个问题: 【1】
2024-02-23 22:12:03 31
转载 七种常见分布式事务详解(2PC、3PC、TCC、Saga、本地事务表、MQ事务消息、最大努力通知)
2PC,两阶段提交,将事务的提交过程分为资源准备和资源提交两个阶段,并且由事务协调者来协调所有事务参与者,如果准备阶段所有事务参与者都预留资源成功,则进行第二阶段的资源提交,否则事务协调者回滚资源。由事务协调者询问通知各个事务参与者,是否准备好了执行事务,具体流程图如下:协调者收到各个参与者的准备消息后,根据反馈情况通知各个参与者commit提交或者rollback回滚(1)事务提交:当第一阶段所有参与者都反馈同意时,协调者发起正式提交事务的请求,当所有参与者都回复同意时,则意味着完成事务,具体流程如下:所
2024-02-23 22:10:00 40
转载 SSO 单点登录和 OAuth2.0 的区别和理解
在本例实现SSO的过程中,受保护的资源就是用户的信息(包括,用户的基本信息,以及用户所具有的权限),而我们想要访问这这一资源就需要用户登录并授权,OAuth2服务端负责令牌的发放等操作,这令牌的生成我们采用JWT,也就是说JWT是用来承载用户的Access_Token的。SSO大家应该比较熟悉,它将登录认证和业务系统分离,使用独立的登录中心,实现了在登录中心登录后,所有相关的业务系统都能免登录访问资源。是一种思想,或者说是一种解决方案,是抽象的,我们要做的就是按照它的这种思想去实现它。
2024-02-18 07:58:23 26
转载 软考高级-系统分析师-案例分析-需求工程
又叫初始化研究阶段或计划阶段等。列出问题和机会协商项目的初步范围评价项目价值计划项目进度表和预算汇报项目计划功能需求,满足系统目标所需的输入、输出、过程和存储的数据的形式定义。非功能需求,性能、易学性、易用性、预算、开支和开支节省、时间表和最终期限、文档和培训需求、质量管理、安全和内部审核控制等。
2024-02-03 15:40:02 51
原创 初学python系列: pandas操作excel
媳妇工作中经常用到excel处理,想用python处理excel更高效,所以自学了python,觉得python比Java还是简单多了,没有变量类型声明,比Java也就多了元组,各种库很丰富。代码中引入pandas处理框架,读取2个excel的产品列内容,然后把内容放到一个列表里面,然后把列表赋值给一个新的excel,利用to_excel自动生成新的文档。为了演示方便,两个excel文件跟python脚本放到一起,两个excel内容都是产品、数量列,其中2.xlsx包含了1.xlsx中的内容。
2024-01-21 17:14:04 673
转载 还是搞不懂Anaconda是什么?读这一篇文章就够
概述Anaconda,中文大蟒蛇,是一个开源的Anaconda是专注于数据分析的Python发行版本,包含了conda、Python等190多个科学包及其依赖项。Anaconda就是可以便捷获取包且对包能够进行管理,包括了python和很多常见的软件库和一个包管理器conda。常见的科学计算类的库都包含在里面了,使得安装比常规python安装要容易,同时对环境可以统一管理的发行版本特点开源安装过程简单高性能使用Python和R语言免费的社区支持。
2024-01-14 08:41:26 79
转载 Spring Boot 整合 Camunda 实现工作流
Camunda是一个灵活的工作流和流程自动化框架。其核心是一个运行在Java虚拟机内部的原生BPMN 2.0流程引擎。它可以嵌入到任何Java应用程序和任何运行时容器中。官网网站: https://www.camunda.org/入门文档: https://docs.camunda.org/get-started/
2024-01-13 09:21:46 70
转载 springboot启动项目自动动态加载数据库的groovy脚本
保存在数据库中,页面支持动态增删改查,启动springboot项目时,从数据库中读取groovy配置表,然后编译脚本,项目中就可以直接调用使用脚本。开发环境:springboot+MybatisPlus。脚本实体类:Func.java。//用于计算的表达式。* 使用预编译函数进行计算。* 使用动态表达式计算。
2024-01-07 09:10:13 61
转载 规则引擎groovy
规则引擎选型重量级方案:Acitivities、drools,适合复杂业务场景的规则引擎。轻量级方案:groovy脚本。groovy特点:动态性单纯的java语言是不具有动态性的,groovy恰恰弥补了这一缺憾,有了groovy你可以在程序运行时任意修改代码逻辑,不需要重新发布。语法糖groovy在语法上兼具java 语言和脚本语言特点,大大简化了语法。优点:学习曲线平缓,有丰富的语法糖,对于Java开发者非常友好;技术成熟,功能强大,易于使用维护,性能稳定,被业界看好;和
2024-01-07 08:58:45 93
转载 SysML理论知识
长期以来系统工程师使用的建模语言、工具和技术种类很多,如行为图、IDEF0、N2图等,这些建模方法使用的符号和语义不同,彼此之间不能互操作和重用。系统工程正是由于缺乏一种强壮的标准的建模语言,从而限制系统工程师和其他学科之间关于系统需求和设计的有效通信,影响系统工程过程的质量和效率。
2023-12-31 17:13:23 57
转载 软考高级之系统架构师之数据流图和流程图
数据流图,DFD,用于表示业务信息系统中的数据流,它表达系统中的据传从输入到存储间所涉及的程序。采用图形方式来表达系统的逻辑功能、数据在系统内部的逻辑流向和逻辑变换过程,是结构化系统分析方法的主要表达工具及用于表示软件模型的一种图示方法。数据流图 = 数据流 + 图流程图 = 流程 + 图所谓流程,IS09000系列国际标准中将流程定义为一组将输入转化为输出的相互群或相互作用的活动。流程有六个要素构成,分别是流程的输入资源、流程中的若干活动、活动的相互作用、输出结果、顾客、最终流程创造的价值。
2023-12-31 17:09:31 87
转载 分布式基础之一致性协议、2PC和3PC
(1)相对于2PC,3PC能降低参与者阻塞范围,主要通过参与者引入超时机制(在2PC中,只有协调者拥有超时机制,即如果在一定时间内没有收到cohort的消息则默认失败)(3)2PC的准备阶段和提交阶段之间,插入预提交阶段,使3PC拥有CanCommit、PreCommit、DoCommit三个阶段。PreCommit是一个缓冲,保证了在最后提交阶段之前各参与节点的状态是一致的。在两阶段提交的执行过程中,所有的参与者操作的逻辑都是处于阻塞状态,各个参与者在等待其他参与者响应的过程中,将无法进行其他任何操作。
2023-12-31 16:40:03 28
转载 软件生命周期模型
当然,项目经理可以根据当前所处阶段以及上次迭代的结果,对本次迭代中的核心过程工作流进行裁剪,比方说在细化阶段第1次迭代中,需求和设计工作的工作量较大,分发工作基本没有;快速原型模型的第一步是快速建立一个能反映用户主要需求的原型系统,让用户评价或试用,直观的了解目标系统的概貌,开发人员根据用户意见快速修改原型系统,然后再次请用户评价或试用,直至用户确认原型系统能够满足要求为止,开发人员据此形成需求规格说明文档后再开展设计和编码工作。快速原型的用途是获知用户的真正需求,一旦需求确认后,原型就可以被抛弃。
2023-12-31 15:45:35 59
转载 UML建模都有那些图(架构师必刷)
关 联尾端的数字表示该关联另一边的一个实例可以对应的数字端的实例的格数,通过这种方式表达关联的多样性multiplicity。多样性的数字可以是一个 单独的数字或者是一个数字的范围。当对象存在时,角色用一条虚线表示,当对象的过程处于激活状态时,生命线是一个双道线。聚合用一个带菱形的连线,菱形指向具有整体性质的类。一个用例图是角色,用例,和它们之间的联系的集合。同一个等级的消息(也就是同一个调用中的消息)有同样的数字前缀,再根据他们出现的顺序增加一个后缀1,2等等。对象的状态是由对象当前的行动和条件决定的。
2023-12-31 15:26:32 16
转载 2023年11月架构设计师上午真题及答案
在(一些 some)层次系统中,除了一些精心挑选的输出函数外,内部的层接口只对相邻的层(可见show)。52.ABSD方法进行软件开发时,需要经历架构需求、架构设计、架构文档化、架构复审、架构实现和架构 (演化)46.嵌入式系统设计中要考虑的因素 (可升级、可配置、易于操作、接口规范、重量、功耗、成本、开发周期)57.变更管理顺序(提出变更申请、进行风险评估、进行变更批准、开展变更实施、变更验证、存档)1-2.Mccabe度量法 (错误的是 V(g)=m-n+1、最大范围<10)
2023-12-31 13:54:16 205
原创 带你真正认识Linux 系统结构
而另外一些文件系统格式来自非UNIX系统(例如Windows的FAT32、NTFS),可能没有inode或超级块这样的概念,但为了能mount到Linux系统,也只好在驱动程序中硬凑一下,在Linux下看FAT32和NTFS分区会发现权限位是错的,所有文件都是rwxrwxrwx,因为它们本来就没有inode和权限位的概念,这是硬凑出来的。如果同一个文件数据写入的 block 分散的太过厉害时,则我们的磁盘读取头将无法在磁盘转一圈就读到所有的数据, 因此磁盘就会多转好几圈才能完整的读取到这个文件的内容!
2023-12-31 13:52:58 933
转载 《SysML精粹》学习记录--第二章
对于模型元素类型及模型元素名称,需要了解SysML图概念的另一个关键方面:图所代表的模型元素会为图中所显示的其他元素定义命名空间,也就是模型层级关系中的容器元素。只要简单放置,图的头部显示的模型元素类型和模型元素名称就会指出图中的元素在模型中的位置。图能够代表的模型元素的类型取决于你所创建的图的种类。其中图的类型以SysML定义的缩写显示:bdd=模块定义图,ibd=内部模块图,uc=用例图,act =活动图,sd=序列图,stm=状态机图,par =参数图,req=需求图,pkg=包图。
2023-12-31 10:06:09 15
转载 《DAMA数据管理知识体系指南》备考笔记-第七章(数据安全)
8.加密1.哈希(Hash):将任意长度数据转换为固定长度数据表示2.对称加密:使用一个密钥来加解密数据3.非对称加密:发送方和接收方使用不同的密钥9.混淆或脱敏1.静态脱敏(Persistent Data Masking)1.不落地脱敏(In-flight Persistent Masking):不会留下中间文件或带有未脱敏数据的数据库2.落地脱敏(In-place Persistent Masking):从数据源中读取未脱敏数据,进行脱敏操作后直接覆盖原数据。落地脱敏假定当前位置不应该保持敏感数据,需要
2023-12-31 09:50:08 27
转载 既快又好还省,实时数仓新选择——Doris
导读本次分享内容是根据《Doris实时数仓实战》作者王春波在“Java核心技术大会2023”上的演讲整理而成,主要介绍了Doris在构建实时数据仓库应用上的具体落地方案。主要包括以下三方面内容:1. 实时数据仓库概述2. Doris核心功能解读3. Doris实时数仓设计分享嘉宾|王春波 大数据架构师、高级数仓工程师 《Doris实时数仓实战》作者编辑整理|赵静出品社区|机械工业出版社华章分社01实时数据仓库概述首先,我们从数据仓库说起。数据仓库的概念可以追
2023-12-31 08:56:01 71
转载 禹神梳理,2小时上手TS(TypeScript)
注意点: JS 中的这三个构造函数: Number 、 String 、 Boolean ,他们只⽤于包装对象,正常开发时,很少去使⽤他们,在TS 中也是同理。// 警告,不能将类型“[string, number, boolean]”分配给类型“[string, number]”1. object 的含义:任何【⾮原始值类型】,包括:对象、函数、数组等,限制的范围⽐较宽泛,⽤的少。demo(100,'200') //警告:类型“string”的参数不能赋给类型“number”的参数。
2023-12-30 09:28:51 39
转载 Spring Boot 实现 热插拔 AOP,非常实用!
现在有这么一个需求:就是我们日志的开与关是交给使用人员来控制的,而不是由我们开发人员固定写死的。大家都知道可以用aop来实现日志管理,但是如何动态的来实现日志管理呢?aop源码中的实现逻辑中有这么一个步骤,就是会依次扫描Advice的实现类,然后执行。我们要做的就是自定义一个advice的实现类然后,在用户想要开启日志的时候就把advice加到项目中来,关闭日志的时候就把advice剔除就行了。Java技术进阶网站:https://java-family.cnAdvice:“通知”,表示 Aspect 在特
2023-12-30 09:12:58 59
转载 Groovy的规则脚本引擎实例解读
1.Groovy适合在业务变化较多、较快的情况下进行一些可配置化的处理2.它容易上手:其本质上也是运行在jvm的java代码,我们在使用时需了解清楚它的类加载机制,对于内存存储的基础烂熟于心,并通过缓存解决一些潜在的问题同时提升性能3.适合规则数量相对较小的且不会频繁更新规则的规则引擎。
2023-12-24 11:07:40 133
转载 Groovy编写规则引擎学习
GroovyScriptEngine从您指定的位置(文件系统,URL,数据库,等等)加载Groovy脚本,并且随着脚本变化而重新加载它们。因此我们可以通过将spring的bean预设到GroovyShell运行环境中,在groovy动态脚本中直接调用spring容器中bean来调用其方法。(3)维护一个HashTable,用于存放~~<expression,Script>~~ 的映射关系,这样就可以重复利用已经实例化过的Script的实例。用来标识用于绑定到GroovyShell的类。
2023-12-24 10:58:33 62
vuepress 前后端在一起部署时,需要把前端生成文件放到 springboot识别的目录中
2023-10-05
spring-boot-route-master.zip
2021-08-25
技术案例课职场生涯回顾介绍.zip
2021-01-10
springcloud-demo.zip
2020-12-07
vue2+springbootPRE.zip
2020-11-05
token_demo.zip
2020-10-06
vue 源码分析1.zip
2020-08-29
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人