自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(58)
  • 收藏
  • 关注

原创 CV程序员的生产力:大模型应用初试

AI大模型出现的时候,出现了一种声音,说程序员会被AI取代。当刚开始接触AI大模型生成代码的时候,同样也带来了不小的震惊。尤其是当我把写的PlantUML流程代码给ChatGPT,它居然可以识别出来并生成相应的代码时,我就知道大模型会改变编程方式。然后随着不断的使用,也暴露出大模型在代码生成领域的不足。对于编程,编写代码可能是用时最少的一步。后续的代码迭代和维护则占据的时间更多,因此就对程序员提出了更高的要求,代码不仅可以运行,也要具可读性,可维护性,可复用性。而这些能力却是AI大模型现阶段无法具备的。

2024-07-24 23:28:22 751

原创 Java系列-valitile

在程序运行时,为了提高执行性能,编译器和处理器会对指令进行重排序,JMM 为了保证在不同的编译器和 CPU 上有相同的结果,通过插入特定类型的内存屏障来禁止特定类型的编译器重排序和处理器重排序。比如A,B两个线程同时的去修改long类型x的值,可能x的高32位是A设置的,低32位是B设置的,导致结果不是程序想要的。单例模式的一种实现方式,但很多人会忽略 volatile 关键字,因为没有该关键字,程序也可以很好的运行,只不过代码的稳定性总不是 100%,说不定在未来的某个时刻,隐藏的 bug 就出来了。

2024-07-09 23:56:48 864 1

原创 思考:Java内存模型和硬件内存模型

前一阵在看volatile的原理,看到内存屏障和缓存一致性,发现再往底层挖就挖到了硬件和Java内存模型。这一块是自己似懂非懂的知识区,我一般称之为知识混沌区。因此整理这一篇文章。什么是内存模型(Memory Model)呢?它是系统和程序员之间的规范,它规定了存储器访问的行为,并影响到了性能。并且,Memory Model有多层,处理器规定、编译器规定、高级语。

2024-07-09 23:46:21 857

原创 Elasticsearch 第四期:搜索和过滤

本文先介绍了相关性的知识,然后从全文搜 索,词项搜索,复合搜索三方面来介绍了ES搜索的常见场景和操作。最后介绍了与搜索对应的过滤操作。本文的内容意在梳理ES搜索操作,并未细究背后的原理,如相关性算法等。后续如果有需要会补充。当然,在实际应用中,要综合考虑具体场景来选择相应的搜索方式。参考文档Elasticsearch 7.x文档检索的三大策略:全文搜索、词项搜索与复合搜索-百度开发者中心。

2024-06-30 19:46:49 1027

原创 为什么要学习这么多“没用”的知识

最近也在看一些东西,很多很杂,底层的知识,高级的架构,正确且废话的方法论。和同学聊天,也在自嘲现在看的这些八股文,源代码,除了面试那几天用一下,可能一辈子都不会用到。乡村教师知道对于身前十八位小学都不一定能读完的孩子,他们不会学到初中课本上的牛顿三定律,这一生也可能不会明白牛顿三定律讲的是什么,更不会用的这些“基石”一样的真理。可是在生命的最后一刻,还是在忍着疼痛逼着孩子死记硬背这些“没用”的东西。希望有天抬头仰望星空时,眼中的世界就变得不一样,愚昧的迷雾被拨开,满天星辰流转,宇宙的磅礴于星空中闪耀。

2024-06-17 21:56:40 215

原创 《亿级流量网站架构核心技术》-高可用-限流详解

限流的目的是通过对并发访问/请求进行限速或者一个时间窗口内的请求进行限速来保护系统,一旦达到限制速率则可以拒绝服务,如定向到错误页面。也可以进行排队/等待,降级。

2024-06-12 21:34:11 752

原创 Elasticsearch 第三期:倒排索引,分析,映射

这一篇文字记录ES搜索的过程。采用倒序的方式,从上到下分别介绍了三方面的内容倒排索引:ES支持全文搜索的数据支持分析和分析器:倒排索引是怎么产生的映射:根据映射后的索引类型来判断分析和搜索策略

2024-06-11 23:31:23 602

原创 Elasticsearch 第二期:基础的基础概念

Elasticsearch 是 面向文档 的,意味着它存储整个对象或 文档。Elasticsearch 不仅存储文档,而且 索引 每个文档的内容,使之可以被检索。上面提到了两个关键字--文档,索引。可以说这个两个词是ES的基石。这里只是简单介绍了ES最基础的两个概念:文档和索引。后续的搜索,排序,分布式等等都是基于这两个概念发展的。也会继续学习进行整理。

2024-06-11 23:25:38 1130

原创 Elasticsearch 第一期:ES的前世今生

虽然在之前的工作中,多多少少用过ES,有在开发用的,也有在运维过程中接触的。但没有系统看到ES的相关知识和发展。通过这次的学习和整理,明白ES不是凭空出现的,也不是独立发展的。

2024-05-15 23:04:19 1057 1

原创 SpringBoot项目创建时引入的starter依赖

前几天新建了一个空的Maven项目,当引入SpringBoot依赖的时候蒙了,之前新建项目时,都是无脑copy之前的pom文件,官方语言是保证各个项目的版本一致,内心os能copy干嘛要动脑。很少想过这几个start文件具体有什么区别,导致应该引入哪些文件。趁着这个机会,稍微整理一下。

2024-04-21 18:41:01 1204

原创 拥抱不确定性

不管你有多富有,不管你的工作有多体面,也无论你有多想要竭尽全力保全和留住你所拥有的,生活总归有风险。无论你拥有什么,总可能有一些机会被夺走。当你不遗余力想要阻止这一切发生的时候,你将会失去生活的快乐。

2024-04-21 14:41:02 198

原创 代理模型-静态代理And动态代理

通过代理模式 实现为其他对象提供一种代理以控制对这个对象的访问,从而为原对象附加多种用途。代理模式又分为动态代理和静态代理。而静态代理需要我们自己写代理类对象。动态代理不需要写代理类对象,通过程序自动生成。代理模式更多的是通过增加一个中间层作为代理层对访问代理对象做一下控制,真正操作还是代理对象进行操作。对于装饰器模式而已,而是在原对象增加新的功能静态代理某个对象提供一个代理,代理角色固定,以控制对这个对象的访问。

2024-02-23 10:55:44 1021

原创 Redis-多机数据库的实现

由一个或多个Sentinel 实例( instance)组成的Sentinel系统( system)可以监视任意多个主服务器,以及这些主服务器属下的所有从服务器,并在被监视的主服务器进入下线状态时,自动将下线主服务器属下的某个从服务器升级为新的主服务器,然后由新的主服务器代替已下线的主服务器继续处理命令请求。对于命令传播,主要操作为主服务器会将自己执行的写命令,也就是造成主从服务器不一致的那条命令,发送给从服务器执行,当从服务器执行了相同的写命令之后,主从服务器将再次回到一致状态。初次复制和断线后重复制。

2024-01-27 16:39:14 916

原创 Redis-单机数据库的实现

这是《Redis设计与实现》的第二部分-- 单机数据库的实现,对 Redis 实现单机寺久化、AOF持久化、事件等进行了介绍。

2024-01-27 16:31:25 845

原创 Redis-数据结构与对象

《Redis设计与实现》的第一部分内容--数据结构与对象。介绍了Redis中的各种对象及其数据结构并说明这些数据结构如何影响对象的功能和性能。

2024-01-27 16:17:24 880

原创 《Redis设计与实现》读书笔记

花了近两个月将《Redis设计与实现》的前三部分过了一遍。对于Redis有了一个基本的知识框架,终于在年前整理出来了,多多少少吧,算是结个尾。后续可能就是根据专题进行看了。第一部分“数据结构与对象”介绍了 Redis 中的各种对象及其数据结构并说明这些数据结构如何影响对象的功能和性俞。第三部分“多机数据数据库的方法进行了介绍,包括数据库、RDB三个多机功能进行了介绍。第二部分“单机数据库的实现”对 Redis 实现单机寺久化、AOF持久化、事件等。整理的时候目录基本和书上一致,分成了三部分。

2024-01-27 16:08:14 364

原创 《浪潮之巅》第五期--婴儿巨人 (Baby Giant)-Google

抄到这里已经近5000千字了,篇幅有限,就抄这么多吧。书中还有很多内容没有总结到,比如Google创始人的故事,Google上市的故事,Google和Facebook的故事。还是挺有意思的。

2024-01-17 08:30:52 908

原创 《浪潮之巅》第四期-- 微软帝国的发展与危机

微软只用了短短的十几年就建成了一个IT帝国,而以前的AT&T和IBM则用了半个世纪才办成同样的事。不仅如此,微软还促成了整个个人电脑工业的生态链,并目作为龙头引导着计算机工业快速发展。同时,它又通过垄断扼杀了无数富有创新精神的公司。如果不是反垄断法的约束和雅虎及后来的Google在互联网领域对微软成功的阻击,我们很难想象有什么力量能阻止它的扩张。它的缔造者盖茨是我们迄今看到的在IT领域最有野心、最有执行力的统帅。微软的兴衰可以用两句话来概括。

2024-01-17 08:27:57 1068

原创 《浪潮之巅》第三期:巨人的诞生--微软和苹果

说起现代互联网公司,微软和苹果绝对是绕不开的两个巨人。一个是PC操作系统的霸主,一个是IT科技的精英。这一篇粗略整理了微软和苹果早期的一些事情,饭后谈资而已,不可细究。

2024-01-17 08:24:37 1109

原创 《浪潮之巅》第二期-IT产业三大发展规律

稍微了解一下IT行业定律,就能稍微看清IT行业的浑水了。反正我看不清呢。

2024-01-17 08:22:11 809

原创 《浪潮之巅》第一期 --伟大的时代,伟大的人,伟大的事业

浪潮之巅》,吴军博士出版的一本书,讲了20世纪以来全球各大企业的发展。是一本不错的知识普及图书。记录一下读书笔记。时代发展,岁月变迁,历史的车轮滚滚向前,有些巨人应运而生,有些巨人进入暮年,有些巨人化整为零,淹没在茫茫时光中。伟大的时代成就伟大的人,还是伟大的人造就伟大的时代,这一直是个争论的话题,无论怎样,总会有人站在那个时代的浪潮之巅,成就一番伟大的事业。

2024-01-17 08:19:36 396

原创 思考:唯一标识id如何确定

唯一标识,有的地方叫id,也有的地方叫编码。为了方便理解,以下统一称为id。无论在生活中,还是代码程序中都是随处可见的,对于一个人来说,手机号是唯一的,身份证号是唯一的,邮编是唯一的。交通方面,车牌号是唯一的,高铁的车次在一个程度上,也可以视为唯一的。当然火车或高铁上的车厢号,座位号也是一种标识。

2024-01-15 18:48:36 942

原创 《基于全生命周期的主数据管理》读书笔记整理

随着信息技术的发展和信息化的深入,数据逐步成为企业宝贵的战略性资产。主数据管理正是从企业杂乱的数据中捕捉那些具有高业务价值的、被企业内各个业务部门重复使用的关键数据进行管理,构建单一淮确、权威的数据来源,从而提高企业的整体数据质量,提升数括资产价值,推动业务创新,全面增强企业竞争力。

2024-01-09 18:22:02 986

原创 Redis锁-Redisson

Redisson作为java的Redis客户端之一,是Redis官网推荐的java语言实现分布式锁的项目。Redisson就是提供了一堆锁...也是目前大部分公司使用Redis分布式锁最常用的一种方式。

2023-12-25 22:59:43 899 1

原创 笨鸟学习Java反射

java“反射”应用,从获取class,属性,方法逐渐学习使用反射

2023-01-31 16:14:27 128

翻译 idea_mac 快捷键整理

快捷键 作用 英文名称 Ctrl + Shift + Space 智能代码补全 Smart code completion Double⇧ 全局搜索 Search everywhere ⌥↩ 展示相关方法,新建test等 Show intention actions and quick-fixes ⌘P 显示接口的参数信息 Parameter info ⌥↑ 扩大选择区域 Extend selection ⌥↓

2021-08-01 15:58:25 188

原创 微服务和VUE入门教程(26): 微服务之turbine

微服务和VUE(26): 微服务之turbine1. 前言只使用Hystrix Dashboard的话, 你只能看到单个应用内的服务信息, 这明显不够。我们需要一个工具能让我们汇总系统内多个服务的数据并显示到Hystrix Dashboard上, 这个工具就是Turbine。这样,我们在一个页面中就可以监管所有微服务的接口。2. 代码编写2.1 新建my-turbine新建过程和新建其他模块一模一样。2.2 引入依赖<?xml version="1.0" encoding="UT

2020-08-14 21:56:50 371

原创 微服务和VUE入门教程(25): 微服务之Hystrix-dashboard

微服务和VUE(25): 微服务之Hystrix-dashboard1. 前言当我们开发了很多微服务,编写了很多接口,使用过程中,我们需要有个工具来实时监控这个接口的使用情况,保存请求数量,发生错误数量等。这个时候我们就需要Hystrix-dashboard。2. 什么是Hystrix-dashboardHystrix-dashboard是一款针对Hystrix进行实时监控的工具,通过Hystrix Dashboard我们可以在直观地看到各Hystrix Command的请求响应时间, 请求成功率

2020-08-14 21:56:30 334

原创 微服务和VUE入门教程(24): 微服务之断路器

微服务和VUE(24): 微服务之断路器1. 前言微服务拥有完整的额熔断机制,比如限流,隔离,熔断等。具体详细信息还需要自己去查找资料研究一下。当我们的某个微服务中的某个接口出现错误后,这个微服务不会挂掉,而是以一种“优雅”的方式返回给用户回应。2. 断路器的作用首先,由于断路器允许开发人员处理服务故障,客户端可以以一种优雅的方式随时间动态地适应服务可用性的变化。其次,在微服务架构中共享状态的断路器提供了网络效果,可以显著提高故障响应能力。第三,断路器与智能路由和负载均衡相结合,可以自动用健康的

2020-08-14 21:56:12 392

原创 微服务和VUE入门教程(23): 微服务之间的调用

微服务和VUE(23): 微服务之间的调用1. 前言:开发微服务,免不了会有微服务之间的调用。在这里,我们使用的是openfeign 。因为微服务间的调用不需要通过zuul,因此就可以跳过token验证这一步,但是也没有了zuul的服务转发这个功能。为了模拟微服务间的调用,我们在my-user微服务中新建一个接口,让my-student微服务来调用这个接口。2. UserController.java 修改新建一个hello的接口,很简单,只有一个打印语句。@RequestMapping(val

2020-08-14 21:55:39 1956 1

原创 微服务和VUE入门教程(22): 页面长时间未操作自动退出登录

微服务和VUE(22): 页面长时间未操作自动退出登录1. 前言:当我们长时间未操作页面的时候,系统应自动退出,这也是一种自我保护机制吧。由于VUE是单页面应用,这个功能实现起来相对来说简单一点。2. 前端代码修改:思路: 在初始化页面的时候,会记录初始化的时间,在上加一个click方法,当你点击系统中任意页面中任何地方都会触发这个方法。如果已经超时,而且已登录,就会有提醒,并且跳转到登录页面。如不超时,则更新初始时间。<template> <div id="app" @

2020-08-14 21:55:14 1165

原创 微服务和VUE入门教程(21): springboot中定时器

微服务和VUE(21): springboot中定时器1. 前言一般情况下,我们如果需要某个表,比如错误日志表,当这个表中的数量超过一定的阈值,系统自动会给我们发送一个警报,提醒我们要做一些处理。我们需要利用定时器(Schedule)来完成来实现这个功能。2. 功能介绍当警报关闭的时候,我们通过点击“开启警报”来启动后端的警报监控。后端每10秒(定时器时间)来访问一下student表,若这个表中的数量超过了50(阈值),就会发邮件给2605121231@qq.com.当经过启动的时候,操作按

2020-08-14 21:54:51 394

原创 微服务和VUE入门教程(19): VUE组件化--子组件向父组件通信

微服务和VUE(19): VUE组件化 – 子组件向父组件通信1. 前言一个页面中是由不同的组件组成,比如弹出框,表格等。如果所有的代码放在一个文件中,那么这个文件含无疑问,会很有几百行的代码。对于编写,阅读,和维护,都不友好。因此,我们可以把一些代码封装成组件,直接在页面中引用。组件的使用,我们的头部导航栏和侧边栏就是一个组件。在这里,我们封装一个对话框的组件,并举例子组件向父组件通信。我们要将这个对话框的代码封装成一个组件2. 后端代码的编写2.1 xml<insert id="

2020-08-14 21:54:29 310

原创 微服务和VUE入门教程(20): 父组件向子组件通信

微服务和VUE(20): 父组件向子组件通信1. 新建组件:StuDetailComponent.vue<template> <div> <el-card shadow="always" > <el-row style="margin-left: 10%"> <el-col :span = "4"> <label><strong>学号<

2020-08-13 16:55:55 201

原创 微服务和VUE入门教程(18): 接口模块化

微服务和VUE(18): 接口模块化1. 前言随着开发的进展,我们用到的接口会越来越多,我们需要将各个接口统一起来,方便管理。于是我们需要将接口模块化。2. 前端修改在src目录下,新建api文件夹,新建http.js,新建api.js。2.1 编写http.js这个js文件,我们封装请求方法,拦截方法。这样就可以把main.js文件中的请求拦截器和响应拦截器删掉了。import axios from 'axios'//请求拦截器axios.interceptors.request.

2020-08-13 16:55:16 1028

原创 微服务和VUE入门教程(13): token验证-zuul拦截与验证

微服务和VUE(13): token验证-zuul拦截与验证1. 前言对于后端的一些接口,有时候,我们不希望没有登录的人员访问,或者说,不希望没经过授权的人员访问。因此,我们可以在zuul这里,加一个过滤器,来验证请求头里是否带有合格的token。如果带有合格的token,说明访问者是合法登录使用人员,如果没有token或者token不合格,则不让他访问接口。2.前端编写2.1 请求拦截器在main.js代码中加入下面代码。拦截向后端发送的http请求,在请求头里面,加入token(Authori

2020-08-13 16:54:51 1082

原创 微服务和VUE入门教程(17): VUE 响应拦截器

微服务和VUE(17): VUE 响应拦截器1. 前言我们以前编写了前端的请求拦截器,将token加进请求头里面。有请求拦截器,必有响应拦截器。拦截后端发送的响应。这里我们有这样的一个需求,若后端的微服务挂掉之后,我们需要拦截后端的错误,前端给出提醒。这样,响应拦截器就发挥了作用。2. 代码编写修改VUE的main.js文件//响应拦截器axios.interceptors.response.use(function (response) { return response;},func

2020-08-13 16:54:12 322

原创 微服务和VUE入门教程(16): zuul 熔断

微服务和VUE(16): zuul 熔断1. 前言在开发工程中,我们发现当一个微服务挂掉之后,如果我们访问此微服务的接口,zuul也会挂掉。因为zuul负责分配请求,当目标微服务挂掉之后,zuul便找不到目标微服务,因为我们需要设置一个熔断,即使寻找不到目标微服务,zuul也不会挂掉。比如我们停掉my-user微服务,然后访问其中的一个接口,zuul会出现以下错误。2. 代码编写2.1 新建ApiFallbackProvider.java2.2 编写ApiFallbackProvider.j

2020-08-13 16:53:58 386

原创 微服务和VUE入门教程(15): 课堂小知识

微服务和VUE(15): 课堂小知识1. @Comment注解我们在zull的token拦截部分用到了一个@Comment注解,这里展开说一下。spring2.5为我们引入了组件自动扫描机制,它可以在classPath路径底下寻找标注了@Component、@Service、@RestController、@Mapper注解的类,并把这些类纳入进spring容器中管理。它的作用和在xml文件中使用bean节点配置组件是一样的。@Service用于标注业务层组件、@RestController用于标

2020-08-13 16:53:42 232

原创 微服务和VUE入门教程(14): 热部署

微服务和VUE(14): 热部署1. 前言在开发的工程中,我们发现只要对后端代码的一点修改,如果要想让代码生效,我们就需要重启微服务,这样就显得很笨重。我们期望我们编译修改后的java文件之后,可以自动生效。这时,我们就需要-热部署。2. 什么是热部署热部署监听到如果有 Class 文件改动了,就会创建一个新的 ClaassLoader 进行加载该文件,经过一系列的过程,最终将结果呈现在我们眼前。3. 代码添加热部署有两种方式3.1 方式1: springloaded<dependen

2020-08-13 16:53:26 2527

空空如也

空空如也

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

TA关注的人

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