简栈文化

Java技术人的成长之路~


  • 首页

  • 关于

  • 标签

  • 分类

  • 归档

你是如何玩Git分支模型的呢?

发表于 2020-11-12 | 更新于: 2020-11-12 | 分类于 Git
分支管理总览(一张流程图给大家先镇镇惊) 它主要体现了Git对我们源代码版本的管理。 (转载者加)一般情况: master和develop并行。 master上始终是最稳定的代码,develop是正在开发的代码。 feature则是某个开发为了自己的功能拉的分支。不一般情况: develop正在开发,如果你上线突然被拒绝了,这时候就要从master上开一个热分支,或者release分支也行,改好之后在分别合并到其他分支。但,本人感觉release通常意味着终止。别在从release上拉分支了。 为何是Git?​ 对于Git与其他集中式代码管理工具相比的优缺点的全面讨论,请参见这里。这样的争论总是喋喋不休。作为一个开发者,与现今的其他开发工具相比较,我更喜欢Git。Git真得改变了开发者对于合并和分支的思考。我曾经使用经典的CVS/Subversion,然而每次的合并/分支和其他行为总让人担惊受怕(“小心合并里的冲突,简直要命!”)。但是对于Git来说,这些行为非常简单和搞笑,它们被认为是日常工作中的核心部分。例如,在很多CVS/Subversion书里,分支与 ...
阅读全文 »

RedisTemplate和StringRedisTemplate的区别

发表于 2020-11-10 | 更新于: 2020-11-10 | 分类于 Redis
一.简介简单的说,RedisTemplate和StringRedisTemplate的关系如下: 1.StringRedisTemplate是RedisTemplate的子类。 2.StringRedisTemplate的各个序列化策略都是StringRedisSerializer,而RedisTemplate用的是JdkSerializationRedisSerializer。 二.RedisTemplate和StringRedisTemplate的代码结构从RedisTemplate类说起。 在RedisTemplate类中,定义了这样四个变量: 12345678@Nullableprivate RedisSerializer keySerializer = null;@Nullableprivate RedisSerializer valueSerializer = null;@Nullableprivate RedisSerializer hashKeySerializer = null;@Nullableprivate RedisSerializer hashValueS ...
阅读全文 »

新版IDEA 2020.1碰到的一个小坑

发表于 2020-11-07 | 更新于: 2020-11-07 | 分类于 工具
使用新版idea创建了一个springboot项目,运行build时发生如下报错。 123456Error:(3, 32) java: 程序包org.springframework.boot不存在Error:(4, 46) java: 程序包org.springframework.boot.autoconfigure不存在Error:(5, 40) java: 程序包org.springframework.boot.builder不存在Error:(6, 52) java: 程序包org.springframework.boot.web.servlet.support不存在Error:(9, 34) java: 找不到符号符号: 类 SpringBootServletInitializer 诡异的是,使用mvn打包却是正常的,能生成正确的jar并且能通过命令行启动 后来通过查阅资料得知新版IDEA需要在Setting里将 delegate IDE build/run actions to Maven勾选上即可。 其它在解决这个问题的过程中,还了解到使用spring-boot-ma ...
阅读全文 »

注解@Autowired是如何实现的

发表于 2020-11-07 | 更新于: 2020-11-07 | 分类于 Redis
前言使用spring开发时,进行配置主要有两种方式,一是xml的方式,二是java config的方式。spring技术自身也在不断的发展和改变,从当前springboot的火热程度来看,java config的应用是越来越广泛了,在使用java config的过程当中,我们不可避免的会有各种各样的注解打交道,其中,我们使用最多的注解应该就是@Autowired注解了。这个注解的功能就是为我们注入一个定义好的bean。那么,这个注解除了我们常用的属性注入方式之外还有哪些使用方式呢?它在代码层面又是怎么实现的呢?这是本篇文章着重想讨论的问题。 @Autowired注解用法在分析这个注解的实现原理之前,我们不妨先来回顾一下@Autowired注解的用法。 将@Autowired注解应用于构造函数,如以下示例所示 1234567891011public class MovieRecommender { private final CustomerPreferenceDao customerPreferenceDao; @Autowired public Mov ...
阅读全文 »

Redis保存一个用户信息是用String还是Hash?

发表于 2020-08-14 | 更新于: 2020-08-24 | 分类于 Redis
方式一如果用普通的key/value结构来存储,主要有以下2种存储方式: 第一种方式将用户ID作为查找key,把其他信息封装成一个对象以序列化的方式存储, 如: 1234set u001 "李三,18,20010101" 127.0.0.1:6379> get u001"\xe6\x9d\x8e\xe4\xb8\x89,18,20010101" 这种方式的缺点是,增加了序列化/反序列化的开销,并且在需要修改其中一项信息时,需要把整个对象取回,并且修改操作需要对并发进行保护,引入CAS等复杂问题。 方式二第二种方法是这个用户信息对象有多少成员就存成多少个key-value对儿,用用户ID+对应属性的名称作为唯一标识来取得对应属性的值, 如: 12345678mset user:001:name "李三" user:001:age 18 user:001:birthday "20010101"127.0.0.1:6379> get user:001:name"\xe6\x9d\x8e\xe4\xb8\x89"127.0.0.1:6379> get user:001 ...
阅读全文 »

了解Eureka工作原理

发表于 2020-08-03 | 更新于: 2020-08-04 | 分类于 注册中心
Eureka 工作原理Eureka 作为 Spring Cloud 体系中最核心、默认的注册中心组件,研究它的运行机制,有助于我们在工作中更好地使用它。 Eureka 核心概念回到上节的服务注册调用示意图,服务提供者和服务的消费者,本质上也是 Eureka Client 角色。整体上可以分为两个主体:Eureka Server 和 Eureka Client。 Eureka Server:注册中心服务端 注册中心服务端主要对外提供了三个功能: 服务注册服务提供者启动时,会通过 Eureka Client 向 Eureka Server 注册信息,Eureka Server 会存储该服务的信息,Eureka Server 内部有二层缓存机制来维护整个注册表 提供注册表服务消费者在调用服务时,如果 Eureka Client 没有缓存注册表的话,会从 Eureka Server 获取最新的注册表 同步状态Eureka Client 通过注册、心跳机制和 Eureka Server 同步当前客户端的状态。 Eureka Client:注册中心客户端Eureka Client 是一个 Java ...
阅读全文 »

什么能力很重要,但大多数人却没有?

发表于 2020-07-30 | 更新于: 2020-08-02 | 分类于 随感
深度阅读的能力我敢保证,看完这个回答之前,就有很多人会划走。 这绝逼不是因为我这个回答写的太无趣,或者他们不同意我的某些观点,而是因为——他们看什么东西都是这样。 他们根本不能沉浸式的阅读什么东西,一般超过几百字的内容就很少看了,除非是小黄文和超能力爽文。他们做的最多的是浮皮潦草的刷刷抖音、看看段子,稍微有点复杂的电影都看不下去,更何况那些晦涩枯燥的工具书了。 我不能说知乎用户就比抖音用户牛逼,但是经过我这些年的学习和生活,我发现能够全神贯注的阅读长篇文字,本身就是很强的一种能力,它能够轻而易举的影响到我们的学习效果和工作效果,它关乎到我们的注意力、记忆力、逻辑思维能力和理解能力。 你信也好,你不信也罢,越看书就会越聪明,一直看爽文、肥皂剧、抖音就会变得不善思考。 自我认知能力不要觉得这个能力很菜,真没几个人有。 不服你可以冷静下来想想,你真的了解你自己么?你真的知道你自己在这个社会中处于怎样的一个阶层和水平么?如果你觉得你都了解,那我再问你一句,你的这些认知,都来源于哪里? 其实你对自己的评价往往都来源于他人对你的反馈,所以人其实是很容易被环境和他人的评价所左右的,不要觉得你不可能进 ...
阅读全文 »

3种web会话管理的方式

发表于 2020-06-07 | 更新于: 2020-08-02 | 分类于 Java
http 是无状态的,一次请求结束,连接断开,下次服务器再收到请求,它就不知道这个请求是哪个用户发过来的。当然它知道是哪个客户端地址发过来的,但是对于我们的应用来说,我们是靠用户来管理,而不是靠客户端。所以对我们的应用而言,它是需要有状态管理的,以便服务端能够准确的知道 http 请求是哪个用户发起的,从而判断他是否有权限继续这个请求。这个过程就是常说的会话管理。它也可以简单理解为一个用户从登录到退出应用的一段期间。本文总结了 3 种常见的实现 web 应用会话管理的方式: 1)基于 server 端 session 的管理方式 2)cookie-base 的管理方式 3)token-base 的管理方式 这些内容可以帮助加深对 web 中用户登录机制的理解,对实际项目开发也有参考价值,欢迎阅读与指正。 1. 基于 server 端 session 的管理在早期 web 应用中,通常使用服务端 session 来管理用户的会话。快速了解服务端 session: 1) 服务端 session 是用户第一次访问应用时,服务器就会创建的对象,代表用户的一次会话过程,可以用来存放数据。服务器为 ...
阅读全文 »

Spring Bean解决循环依赖为什么是三级缓存?

发表于 2020-06-06 | 更新于: 2020-08-02 | 分类于 Spring
前言循环依赖:就是N个类循环(嵌套)引用。 通俗的讲就是N个Bean互相引用对方,最终形成闭环。用一副经典的图示可以表示成这样(A、B、C都代表对象,虚线代表引用关系): 注意:其实可以N=1,也就是极限情况的循环依赖:自己依赖自己 另需注意:这里指的循环引用不是方法之间的循环调用,而是对象的相互依赖关系。(方法之间循环调用若有出口也是能够正常work的) 可以设想一下这个场景:如果在日常开发中我们用new对象的方式,若构造函数之间发生这种循环依赖的话,程序会在运行时一直循环调用最终导致内存溢出,示例代码如下: 12345678910111213141516171819public class Main { public static void main(String[] args) throws Exception { System.out.println(new A()); }}class A { public A() { new B(); }& ...
阅读全文 »

Java4种引用类型到底如何用?

发表于 2020-06-05 | 更新于: 2020-08-02 | 分类于 Java
在 JDK.1.2 之后,Java 对引用的概念进行了扩充,将引用分为了: 强引用(Strong Reference) 软引用(Soft Reference) 弱引用(Weak Reference) 虚引用(Phantom Reference)4 种,这 4 种引用的强度依次减弱。不同的引用在垃圾回收中体现也是不一样~ M我们先创建一个M对象,后面为了方便的感受GC的情况。 123456789101112131415161718package com.cyblogs.java.learning.C001_ReferenceType;/** * Created with java-learning-demo * * @description: * @author: chenyuan * @date: 2020/6/16 * @time: 9:30 PM */public class M { @Override public void finalize() { System.out.println("finalize"); } ...
阅读全文 »
上一页1234…15下一页
Vernon

Vernon

149 日志
66 分类
87 标签
RSS
GitHub E-Mail
© 2021 Vernon
由 Hexo 强力驱动
|
主题 — NexT.Gemini v6.0.4