自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(130)
  • 资源 (1)
  • 收藏
  • 关注

原创 搭建kafka测试环境

使用 Docker Compose 的优点之一就是它管理了网络和服务之间的依赖关系,使得整个过程更加简洁和自动化。创建一个Docker Compose 文件,名称为 docker-compose-kafka-dev.yml。在这个命令中,KAFKA_HEAP_OPTS 环境变量用于限制 Kafka 使用的 JVM 堆内存大小。消费者控制台输出: Received message: hello。KAFKA_CONTAINER_NAME 可使用。终端返回: Message sent: hello。

2024-02-05 10:35:16 975

原创 Bug地狱 #2 构建监控平台查看系统运行与SQL执行情况

通过新搭建的promutheus,结合已有的ELk和Zipkin。并且切换为druid连接池提供有意义的慢sql日志信息。结合arthas进行代码排查。

2024-02-05 10:15:19 996

原创 Bug地狱 #1 突然宕机,企业级应用到底怎么了

目前就职的企业经营是一家服务小微门店Saas企业,以进销存管理和客户营销为主体提供订阅服务。项目正式上线可以说是从13年,基础架构是Web和后端使用C# .net,数据库使用SQL Server。这时公司业务正好遇到中国Saas的顶峰,业务不断增长,但是系统宕机的问题一直出现,甚至周末节假日在户外也要oncall,拿出电脑解决问题。

2024-02-05 10:14:01 976

原创 Mybatis PageHelper 异常 attempted to return null from a method with a primitive return type (long)问题分析

某天工程师群里发了个分页的问题,当时我手头没有急的工作,就帮忙看了下。一开始看到分页的字段使用的比较特殊,经过调整统一后,发现接口在第二页直接返回了错误:attempted to return null from a method with a primitive return type (long)。

2024-02-05 10:11:33 452

原创 MongoDB 字段中数据类型不一致序列化异常排查与处理

经过配置,如果类型是数组,则会触发进行解析。该字段正常的数据可以直接映射。后续会将C#的流量转发到Java接口,然后将C#接口下线。

2024-02-05 10:10:36 788

原创 Go与Java泛型原理简介

本人从毕业后从事Java开发工作,大概从2021年下半年开始体验和学习Go语言前几个月Go 1.18实现了泛型,好奇具体实现之余,发现Java的泛型原理自己也不明白,前段时间查阅了一下,还是想记录下来,就有了这篇博客泛型函数被修改成只接受指针作为参数的方式。然后,这些值被分配到堆上,这些值的指针被传递给泛型函数。这样做是因为指针看起来总是一样的,不管它指向的是什么类型。如果这些值是对象,该函数只有一个指向对象的指针,不知道它们的方法在哪里。因此,它需要一个可以查询方法的内存地址的表格:Virtual M

2022-06-27 19:41:58 586 1

转载 nodejs安装与环境变量配置及权限配置

环境配置https://www.cnblogs.com/coder-lzh/p/9232192.htmlEPERM: operation not permitted, mkdir '\nodejs\node_cache_c npm没权限问题https://blog.csdn.net/weixin_41217541/article/details/104105600

2021-11-29 14:27:34 353

原创 出现身份验证错误 要求的函数不受支持

windows 远程连接出现身份验证错误 要求的函数不受支持修改本地组策略编辑器https://jingyan.baidu.com/article/ad310e80896baa5949f49e9a.html出现本地组策略编辑器找不到的情况,使用下面的教程可能是因为系统是家庭版http://www.xitongcheng.com/jiaocheng/win10_article_62313.html问题解决...

2021-10-19 12:09:45 167

原创 设计模式之禅-桥梁模式

目录桥梁模式例子定义优点使用场景注意桥梁模式例子加入自己有两家公司,一家房地产公司只生产房子,一家山寨公司什么都可以生产。public abstract class Corp { private Product product; public Corp(Product product) { this.product = product; } public void makeMoney() { this.product.beProd

2021-04-08 18:10:07 120

原创 设计模式之禅-享元模式

享元模式例子报考系统。需要选择考试地点(选择框)、报考地点(选择框)、邮寄地址(输入框),还有其他信息。做一个很小的改动,增加了一个子类,实现带缓冲池的对象建立,同时在工厂类上增加 了一个容器对象HashMap,保存池中的所有对象。public class SignInfo { private String id; private String location; private String subject; private String postAddress;

2021-04-08 15:50:33 119

原创 设计模式之禅-解释器模式

解释器模式例子金融项目模型运算。计算加减,输入任意长度加减运算,计算结果。抽象类非常简单,仅一个方法interpreter负责对传递进来的参数和值进行解析和匹配,其中输入参数为HashMap类型,key值为模型中的参数,如a、b、c等,value为运算时取得的具体数字。public abstract class Expression { public abstract int interpreter(HashMap<String,Integer> var);}public

2021-04-07 14:27:08 81

原创 设计模式之禅-状态模式

状态模式例子电梯电梯有四种状态,开门、关门、运行、停止。看似实现很简单,但是电梯的这4个动作的执行都有前置条件,具体点说就是在特定状态下才能做特定事。电梯的四种特定状态敞门状态按了电梯上下按钮,电梯门开,这中间大概有10秒的时间,那就是敞门状态。在这个状态下电梯只能做的动作是关门动作。闭门状态电梯门关闭了,在这个状态下,可以进行的动作是:开门(我不想坐电梯了)、停止(忘记按路层号了)、运行。...

2021-04-06 16:04:17 172

原创 设计模式之禅-访问者模式

目录访问者模式例子定义优点缺点使用场景扩展统计功能多个访问者双分派最佳实践访问者模式例子员工信息,获取不同类型员工的信息。public interface IVisitor { void visit(CommonEmployee commonEmployee); void visit(Manager manager);}public class Visitor implements IVisitor { @Override public void visi

2021-03-08 18:07:16 159

原创 设计模式之禅-备忘录模式

目录备忘录模式例子定义应用使用场景注意事项扩展clone方式的备忘录多状态的备忘录模式多备份的备忘录封装得更好一点备忘录模式例子用月光宝盒追女生。备忘录public class Memento { private String state = ""; public Memento(String state) { this.state = state; } public String getState() { return sta

2021-02-25 11:32:40 146 1

原创 设计模式之禅-门面模式

目录门面模式例子定义优点缺点使用场景注意事项一个子系统可以有多个门面门面不参与子系统内的业务逻辑最佳实践门面模式例子写信寄信。只传递必要内容,具体执行顺序由邮局统一处理。通过在邮局内创建警察对邮件进行检查,完全隔离客户。public interface ILetterProcess { void writeContext(String context); void fillEnvelope(String address); void letterIntoEnvelope()

2021-02-24 15:03:03 95

原创 设计模式之禅-观察者模式

观察者模式例子韩非子和李斯。李斯监控韩非子,报信给秦王。public interface IHanFeiZi { void haveBreakfast(); void haveFun();}public interface Observable { void addObserver(Observer observer); void deleteObserver(Observer observer); void notifyObservers(String

2021-02-23 16:53:26 130

原创 设计模式之禅-组合模式

组合模式例子公司管理结构图。public class Corp { private String name = ""; private String position = ""; private int salary = 0; public Corp(String name, String position, int salary) { this.name = name; this.position = position;

2021-02-22 18:22:47 145

原创 设计模式之禅-迭代器模式

目录迭代器模式定义应用注意迭代器模式定义它提供一种方法访问一个容器对象中各个元素,而又不需暴露该对象的内部细节。Iterator抽象迭代器抽象迭代器负责定义访问和遍历元素的接口,而且基本上是有固定的3个方法:first()获得第一个元素,next()访问下一个元素,isDone()是否已经访问到底部(Java叫做hasNext()方法)。ConcreteIterator具体迭代器具体迭代器角色要实现迭代器接口,完成容器元素的遍历。Aggregate抽象容器容器角色负责提供创建具体迭代器

2021-02-22 10:42:11 80

原创 设计模式之禅-适配器模式

适配器模式例子项目对接第三方,数据格式不一致。本项目实体接口public interface IUserInfo { String getUserName(); String getMobileNumber(); String getHomeAddress(); String getOfficeTelNumber(); String getJobPosition(); String getHomeTelNumber();}实体实现publ

2021-02-20 17:59:31 100

原创 设计模式之禅-策略模式

目录策略模式例子定义优点缺点使用场景注意扩展策略模式例子诸葛亮锦囊妙计。public interface IStrategy { /** * 策略执行 */ void operate();}public class GivenGreenLight implements IStrategy{ @Override public void operate() { System.out.println("求吴国太开绿灯,放行!");

2021-02-19 14:04:30 104

原创 设计模式之禅-装饰模式

目录装饰模式例子定义优点缺点使用场景最佳实践装饰模式例子成绩单。想要家长给成绩单签字,但是自己考得不怎么样,就得先告诉点好听的。比如说自己的最高分,说自己成绩还是差,但排名提升了。通过不停的继承来增加装饰,嵌套层数会越来越多。在面向对象的设计中,如果超过两层继承,就应该想想是不是出设计问题了。成绩单抽象public abstract class SchoolReport { /** * 成绩情况 */ public abstract void repor

2021-02-18 15:04:36 86

原创 设计模式之禅-责任链模式

责任链模式例子中国古代对妇女制定了“三从四德”的道德规范,“三从”是指“未嫁从父、既嫁从夫、夫 死从子”。也就是说,一位女性在结婚之前要听从于父亲,结婚之后要听从于丈夫,如果丈夫死了还要听从于儿子。(我不喜欢这个例子,还好现代已经好多了)public interface IWomen { /** * 获得个人情况 * @return */ int getType(); /** * 获取个人请示 逛街 约会 看电影

2021-02-10 13:59:40 132

原创 设计模式之禅-命令模式

目录命令模式例子定义优点缺点使用场景扩展增加需求回滚完美的Command命令模式例子外包甲方项目。。刚开始,客户(也就是旅行社,甲方)很乐意和我们每个组探讨,比如和需求组讨论需求、和美工讨论页面、和代码组讨论实现,告诉他们修改、删除、增加各种内容等。这是一种比较 常见的甲乙方合作模式,甲方深入到乙方的项目开发中。public abstract class Group { /** * 甲乙双方分开办公,如果你要和某个组讨论,你首先要找到这个组 */ public

2021-02-09 18:13:44 168

原创 设计模式之禅-中介者模式

目录中介者模式例子定义优点缺点使用场景实际使用中介者模式例子定义Mediator 抽象中介者角色抽象中介者角色定义统一的接口,用于各同事角色之间的通信。Concrete Mediator 具体中介者角色具体中介者角色通过协调各同事角色实现协作行为,因此它必须依赖于各个同事角色。Colleague 同事角色每一个同事角色都知道中介者角色,而且与其他的同事角色通信的时候,一定要通过中介者角色协作。每个同事类的行为分为两种:一种是同事本身的行为,比如改变对象本身的状态,处理自己的行为等

2021-02-07 17:25:38 89

原创 设计模式之禅-原型模式

目录原型模式例子定义优点使用场景注意事项构造函数不会被执行深拷贝和浅拷贝浅拷贝深拷贝clone和final原型模式例子发送电子账单public class Mail implements Cloneable { /** * 收信人 */ private String receiver; /** * 邮件名称 */ private String subject; /** * 称谓 */ pri

2021-02-07 15:25:59 133

原创 设计模式之禅-代理模式

目录代理模式例子定义优点使用场景扩展普通代理强制代理代理的个性-增强动态代理代理模式例子public interface IGamePlayer { /** * 登录游戏 */ void login(String user, String password); /** * 杀怪,网络游戏的主要特色 */ void killBoss(); /** * 升级 */ void upgrade();

2021-02-05 15:57:08 113

原创 设计模式之禅-建造者模式

目录建造者模式例子定义优点使用场景注意事项建造者模式例子public abstract class CarModel { /**执行顺序*/ private ArrayList<String> sequence = new ArrayList<>(); /** 启动*/ protected abstract void start(); /**停车*/ protected abstract void stop(); /**鸣

2021-02-05 10:44:09 65

原创 设计模式之禅-模板方法模式

模板方法模式定义一个操作中的算法的框架,而将一些步骤延迟到子类中。使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。模板方法模式确实非常简单,仅仅使用了Java的继承机制,但它是一个应用非常广泛的模式。其中,AbstractClass叫做抽象模板,它的方法分为两类:基本方法。基本方法也叫做基本操作,是由子类实现的方法,并且在模板方法被调用。模板方法。可以有一个或几个,一般是一个具体方法,也就是一个框架,实现对基本方法的调度, 完成固定的逻辑。注意:为了防止恶意的操作,一般模板方

2021-02-04 17:59:09 82

原创 设计模式之禅-工厂模式

目录工厂方法模式优点使用场景工厂方法模式的扩展缩小为简单工厂模式升级为多个工厂类替代单例模式延迟初始化抽象工厂模式优点缺点使用场景注意事项工厂方法模式定义一个用于创建对象的 接口,让子类决定实例化哪一个类。工厂方法使一个类的实例化延迟到其子类。/** * 抽象产品类 * * @author gcl * @date 2020-08-13 0:06 */public abstract class Product { // 产品类的公共方法 public void method

2021-02-04 15:31:06 111

原创 设计模式之禅-单例模式

目录单例模式优点缺点使用场景注意使用饿汉式避免对象复制单例模式优点由于单例模式在内存中只有一个实例,减少了内存开支,特别是一个对象需要频繁地 创建、销毁时,而且创建或销毁时性能又无法优化,单例模式的优势就非常明显。由于单例模式只生成一个实例,所以减少了系统的性能开销,当一个对象的产生需要比较多的资源时,如读取配置、产生其他依赖对象时,则可以通过在应用启动时直接产生一个单例对象,然后用永久驻留内存的方式来解决(在Java EE中采用单例模式时需要注意JVM 垃圾回收机制)。单例模式可以避免对资源的

2021-02-03 18:53:45 89

原创 设计模式之禅-六大原则

目录六大原则单一职责原则里氏替换原则依赖倒置原则接口隔离原则迪米特法则开闭原则六大原则单一职责原则单一职责原则的定义是:应该有且仅有一个原因引起类的变更。单一职责原则提出了一个编写程序的标准,用“职责”或“变化原因”来衡量接口或 类设计得是否优良,但是“职责”和“变化原因”都是不可度量的,因项目而异,因环境而异。对于单一职责原则,我的建议是接口一定要做到单一职责,类的设计尽量做到只有一个 原因引起变化。里氏替换原则所有引用基类的地方必须能透明地使用其子类的对象。通俗的讲,只要父类能出现的地方子

2021-02-03 18:12:33 96

原创 Java的IO机制

BIO在IO时是阻塞状态,优点是代码简单、直观,缺点是IO的效率和可扩展性瓶颈。NIO发送请求后不阻塞NIO的核心NIO-ChannelsNIO-BuffersNIO-Selector允许单线程处理多个Channel,如果一个线程有多个连接,每个连接流量很低,此时用Selector就很方便,例如聊天服务器。Selector有一个public abstract SelectorProvider provider();方法,方法的实现是这样的 public static S

2020-09-09 00:25:07 107

原创 JUC梳理

JUC包的分类并发工具类CountDownLatchDemopublic class CountDownLatchDemo { public static void main(String[] args) throws InterruptedException { new CountDownLatchDemo().go(); } private void go() throws InterruptedException { CountD

2020-09-06 13:23:43 181

原创 Map之HashMap、ConcurrentHashMap

HashMapConcurrentHashMap

2020-09-06 12:04:18 93

原创 Java异常体系

Error和Exception的区别

2020-09-06 11:00:04 75

原创 Java线程池

java8的并行流也使用了work-stealing算法。为什么使用线程池降低资源消耗提高线程的可管理性

2020-09-04 00:05:39 59

原创 CAS(Compare and swap)

一种高效实现线程安全性的方法CAS思想public class CASCase { public volatile int value; public void add(){ value++; }}终端输入命令javac CASCase.java生成class文件,然后javap -verbose CASCase.class查看汇编代码public class com.gclhaha.javabasic.jvm.thread.CASCase min

2020-08-29 23:10:23 86

原创 JMM内存可见性

java内存模型JMM每个线程拥有自己的工作内存,不能直接操作主内存,每个线程都有自己的对共享变量的副本。线程间的传值必须通过主内存来完成。JMM的主内存JMM的工作内存JMM与Java内存区域划分是不同的概念层次主内存和工作内存的数据存储结构以及操作方式归纳JMM如何解决可见性问题指令重排序需要满足的条件为了提高性能,处理器和编译器常常对指令进行重排序,但是不能随意重排序。happens-before的八大原则volatile:JVM提供的轻量级同步机制volati

2020-08-29 21:48:49 128

原创 synchronized和ReentrantLock的区别

ReentrantLock(再入锁)ReentrantLock公平性设置public class ReentrantLockDemo implements Runnable { // 公平锁,true改为false就是非公平锁 private static ReentrantLock lock = new ReentrantLock(true); @Override public void run() { while (true) {

2020-08-27 23:10:27 883

原创 synchronized底层原理实现

实现synchronized的基础java对象头Monitor对象在内存中的布局hotspot虚拟机中,对象在内存中的布局分为三个区域对象头实例数据对齐填充这里只讲对象头对象头的结构Class Metadata Address是指向类元数据的指针,JVM通过这个指针来确定这个对象是哪个类的实例。Mark Word用于存储对象自身的运行时数据,是实现轻量级锁和偏向锁的关键。由于对象头的信息是与自身数据无关的额外存储成本,因此,考虑到JVM的空间效率Mark Word被设计为

2020-08-06 00:02:03 196

instantclient_12_1

instantclient_12_1,在使用客户端连接oracle数据库时需要引入该文件夹下的oci.dll

2019-08-28

空空如也

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

TA关注的人

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