3 航海到IT的转变,梦想一直在路上

尚未进行身份认证

我要认证

我本身是一海员,每天大海为伴,过着与互联网不搭边的生活,创业者,创业梦,一直尝试新鲜事物的我,冒然走向了互联网事业,摇身变为IT的一员,追梦人,追梦路,一直在路上.....

等级
TA的排名 1w+

获取某个类的子类(项目实战(要不就用SpringCotext+反射))

在我们写工厂类的时候,可能会根据不同的类型(type)生成不同的对象。但在工厂类初始化的时候,我们需要将某个类型的所有类全部初始化才能达到我们的目的。举个例子,我们定义了很多动物(Animal),我们需要一个AnimalFactory根据动物类型(type)去构建不同的动物实例。如下代码所示:我们先构建一个动物基础类型,包含两个方法:getType:获取动物类型train:训练动物public interface IAnimal { /** * 获取动物种类...

2020-06-27 15:24:19

消息队列

一、为什么要使用MQ消息中间件?一个用消息队列的人,不知道为啥用,有点尴尬。没有复习这点,很容易被问蒙,然后就开始胡扯了。回答:这个问题,咱只答三个最主要的应用场景,不可否认还有其他的,但是只答三个主要的,即以下六个字:解耦、异步、削峰1、解耦传统模式:传统模式的缺点:系统间耦合性太强,如上图所示,系统A在代码中直接调用系统B和系统C的代码,如果将来D系统接入,系统A还需要修改代码,过于麻烦!中间件模式:中间件模式的的优点:将消息写入消息队列,需要..

2020-06-22 15:28:06

HashMap 怎样解决hash冲突?

HashMap冲突解决方法比较考验一个开发者解决问题的能力。下文给出HashMap冲突的解决方法以及原理分析,无论是在面试问答或者实际使用中,应该都会有所帮助。在Java编程语言中,最基本的结构就是两种,一种是数组,一种是模拟指针(引用),所有的数据结构都可以用这两个基本结构构造,HashMap也一样。当程序试图将多个 key-value 放入 HashMap 中时,以如下代码片段为例:HashMap<String,Object>m=newHashMap<String,O

2020-06-18 11:09:00

Spring事务失效的几大原因

但是我觉得还是总结得不够全,今天我再总结一下,再延着这位粉丝的总结再补充完善一下,不用说,我肯定也不见得总结全,但希望可以帮忙有需要的人。1、数据库引擎不支持事务这里以 MySQL 为例,其 MyISAM 引擎是不支持事务操作的,InnoDB 才是支持事务的引擎,一般要支持事务都会使用 InnoDB。根据 MySQL 的官方文档:https://dev.mysql.com/doc/refman/5.5/en/storage-engine-setting.html从 MySQL 5.5

2020-06-15 14:29:38

List如何一边遍历,一边删除

这是最近面试时被问到的1道面试题,本篇博客对此问题进行总结分享。1. 新手常犯的错误可能很多新手(包括当年的我,哈哈)第一时间想到的写法是下面这样的:publicstaticvoidmain(String[]args){List<String>platformList=newArrayList<>();platformList.add("博客园");platformList.add("CSDN");platfor...

2020-06-15 11:08:06

java基础 ---String类(小物种,大能量)

1. 看看源码大家都知道, String 被声明为 final,因此它不可被继承。(Integer 等包装类也不能被继承)。我们先来看看 String 的源码。在 Java 8 中,String 内部使用 char 数组存储数据。public final class String implements java.io.Serializable, Comparable<String>, CharSequence { /** The value is used for

2020-06-15 10:46:02

编写代码常用的工具类

比如我们在拿到一个 List 集合之后,要对这个集合进行判空操作,以前我一直是这样写的:List<String> list = getList();if (list != null && list.size() > 0) { //do something}虽然这样也没什么问题,但是,我懒啊,每次敲这么多代码,也挺累啊。有同学说,那你包装成一个方法不就行了,每次调用个方法就 OK 啦。这不,同学,你就在造轮子了,已经有人帮你写好了这样类似的一系列方法了。

2020-06-11 11:23:39

代码优化(真的很重要,编程的重点在于思维,但我认为更重要的是细节,这些细节体现了一个程序员的功底)

代码优化 ,一个很重要的课题。可能有些人觉得没用,一些细小的地方有什么好修改的,改与不改对于代码的运行效率有什么影响呢?这个问题我是这么考虑的,就像大海里面的鲸鱼一样,它吃一条小虾米有用吗?没用,但是,吃的小虾米一多之后,鲸鱼就被喂饱了。代码优化也是一样,如果项目着眼于尽快无BUG上线,那么此时可以抓大放小,代码的细节可以不精打细磨;但是如果有足够的时间开发、维护代码,这时候就必须考虑每个可以优化的细节了,一个一个细小的优化点累积起来,对于代码的运行效率绝对是有提升的。代码优化的目标是:减小代码

2020-06-10 10:40:15

设计模式之-策略模式(应用很广)

策略模式解决的核心:代码的重构以及优化:if-else设计原则:开闭原则设计核心:策略的上下文,用于动态的获取具体的某个策略对象设计的相关类:策略的抽象类,策略的具体实现类,策略上下文类以及动态的获取策略对象类动态获取对象:反射(也可以结合Spring的上下文管理)核心问题:根据策略标识(就是if-else中的相关条件)获取策略对象,然后根据策略上下文执行具体的相关策略下面...

2020-04-30 14:46:10

ApplicationContext的实际项目操作--动态获取抽象类的各个子类即实现类(设计模式之-模板)

package com.github.dadiyang.bestpractice.SpringUtil;import org.springframework.beans.BeansException;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.contex...

2020-04-16 22:18:06

Spring事务的理解(个人认为非常好容易理解)

事务传播行为什么叫事务传播行为?听起来挺高端的,其实很简单。即然是传播,那么至少有两个东西,才可以发生传播。单体不存在传播这个行为。事务传播行为(propagation behavior)指的就是当一个事务方法被另一个事务方法调用时,这个事务方法应该如何进行。例如:methodA事务方法调用methodB事务方法时,methodB是继续在调用者methodA的事务中运行呢,还是为自...

2020-02-18 22:15:32

java & 和 |运算(看HashMap源码时)

首先得明白10进制的数和2进制的数转换关系遵循“8421”原则1=12=103=114=1005=1016=1107=1118=10009=1001…128=1000 0000129=1000 0001& 是所有的2进制位数“与”出的最终结果,“与”的规则是两者都为1时才得1,否则就得0举个例子7 & 6=?7的2进制是:1 1 1...

2020-02-18 10:06:46

redis主存,哨兵,集群的应用(生产环境可用)

启动* redis的数据类型:* 本质上是key-value的数据结构.而这个value分为:* String :单值和多值* hash :* set* zset* list* 核心: 具有业务标示的key.过期策略指的是key的过期,key过期,key对应的值就会失效(如分布式锁中,超时时间指的是key的失效时间* 而非value的失效时间)* 设计key:设计成为 具...

2020-02-14 16:23:37

分布式架构-zookeeper --实际应用(注册中心,分布式job,分布式锁,)

数据结构: 核心:以节点的形式存储数据,根节点 >> 临时节点(临时序号节点)zookeeper作为dubbo的注册中心的时候,相关的服务的节点结构必须注意一点:临时节点下不能存在其他的节点;服务的节点是临时节点/dubbo/com.tuling.zk.dubbo.UserService/consumers/consumer://192.168.174.1/...

2020-02-07 15:02:36

分布式架构zookeeper-集群

从下面三个方面解释:1.集群部署2.选举机制3.数据提交机制特点:主存自动切换一般是3台服务器,3个节点,半数运行机制,生产环境上应该部署到不同的物理机上,如果是测试环境可以部署到同一个物理机上,只要port不同就可以,首先解决集群启动时遇到的一个问题: 详见这个博客:https://www.jianshu.com/p/505f53f0a3202.部署:...

2020-02-06 22:14:02

分布式框架-zookeeper的安装(linux版本)-一

一 、下载zookeeperwget http://mirror.bit.edu.cn/apache/zookeeper/zookeeper-3.5.5/apache-zookeeper-3.5.5-bin.tar.gz二、解压zookeepertar -zxvf apache-zookeeper-3.5.5-bin.tar.gz三、拷贝zoo_samle.cfg为zoo.cfgcp...

2020-02-06 14:43:02

布隆过滤器

package com.redis.set;import java.util.BitSet;/** * 布隆过滤器: * 是由足够长的bit数组和k个hash函数构成的 * 本身是存在误判率的,但是误判率不能超过0.1%; * 通过概率算出来的,求导以及最值的公式; * * 应用:解决的问题: * */public class BloomFilter { pri...

2020-02-04 00:41:01

算法-查找bitMap

package com.redis.hash;/** * 计算机当中最小的单位是:Bit位 * 1Byte = 8bit * int = 4byte= 4*8bit * flote = 4Byte * Long = 8Byte * Char = 2Byte * * Int a = 1;在计算机当中怎么个存储的? * 0000 0000 0000 0000 0000 0000...

2020-02-02 22:14:25

红黑树解决了什么问题

/** * 平衡二叉树:就是为了防止二叉搜索树变为线性数据结构,而出现的数据结构 * 而AVL树-绝对平衡树.左右子树的高度差不能超过1 * 红黑树:特性: * 1.每个结点不是红色就是黑色 * 2.根节点:一定是黑色的 * 3.不可能有两个红色的节点连在一起,每个叶子节点都是黑色的空节点(NIl),并且不存储数据 * 4.每个节点,从该结点到达其可到达的叶子节点的所有路径,都包含...

2020-02-01 22:58:25

树论-二叉搜索树

package com.redis.redandblack;/** * 特点: * 1.如果它的左子树不为空,则左子树上的节点值小于根节点 * 2.如果它的右子树不为空,则右子树上的节点值大于等于根节点 * 3.子树同样遵循以上两点 * 只要一棵树是二叉查找树,那么中序遍历一定是有序的 * 二叉查找算法? * 归并排序:每一次分一半,最终分的是logn */public ...

2020-02-01 22:25:10

查看更多

勋章 我的勋章
  • 持之以恒
    持之以恒
    授予每个自然月内发布4篇或4篇以上原创或翻译IT博文的用户。不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!
  • 1024勋章
    1024勋章
    #1024程序员节#活动勋章,当日发布原创博客即可获得
  • 勤写标兵Lv4
    勤写标兵Lv4
    授予每个自然周发布9篇以上(包括9篇)原创IT博文的用户。本勋章将于次周周三上午根据用户上周的博文发布情况由系统自动颁发。