学习笔记

《Java多线程面试题》系列-创建线程的三种方法及其区别

1. 创建线程的三种方法及其区别 1.1 继承Thread类 首先,定义Thread类的子类并重写run()方法: package com.zwwhnly.springbootaction.javabase.thread; public class MyFirstThread extends Thread { @Override public void run() { for (int i = 0; i < 5; i++) { System.out.printf("[MyFirstThread]输出:%d,当前线程名称:%s\n", ...

java架构之路(MQ专题)kafka集群配置和简单使用

  前面我们说了RabbitMQ和RocketMQ的安装和简单的使用,这次我们说一下Kafka的安装配置,后面我会用几个真实案例来说一下MQ的真实使用场景。天冷了,不愿意伸手,最近没怎么写博客了,还请见谅。...

Prometheus监控有所思:多标签埋点及Mbean

 使用 grafana+prometheus+jmx 作为普通的监控手段,是比较有用的。我之前的文章介绍了相应的实现办法。https://www.cnblogs.com/yougewe/p/11140129.html   但是,按照之前的实现,我们更多的只能是监控 单值型的数据,如请求量,tps 等等,对于复杂组合型的指标却不容易监控。   这种情况一般带有一定的业务属性,比如想监控mq中的每个topic的消费情况,每类产品的实时订单情况等等。当然,对于看过完整的 prometheus 的监控数据的同学来说,会觉得很正常,因为你会看到如下的数据: ...

Unity - Cinemachine实现相机抖动

普通相机抖动脚本较易实现,但在使用cinemachine相机下,其Transform组件不可被代码修改,那么Cinemachine的相机抖动如何实现呢?本文结合实际项目,对实现相机抖动的三大步骤进行系统讲解: 项目地址:Hero - SouthBegonia 配置流程 项目背景:一款2D像素动作游戏,我们操控着Player(必须带有Collider组件),游戏相机为Cinemachine 2DCamera(关于其配置方法此处不做赘述,推荐文章在末尾参考处) 1. 在相机上添加监听脚本 在我们使用的虚拟相机 CM vcam1 上添加组件:AddComponent->CinemachineImpulse Listener ...

花了几个小时总结了一些容易出错的 Java 知识点!

本文已经收录自 JavaGuide (61k+Star!【Java学习+面试指南】 一份涵盖大部分Java程序员所需要掌握的核心知识。欢迎 Star!欢迎骚扰!) 原文地址:https://javaguide.cn/2019/08/20/java/java%E5%9F%BA%E7%A1%80/Java%E7%96%91%E9%9A%BE%E7%82%B9/ 1. 基础 1.1. 正确使用 equals 方法 Object的equals方法容易抛空指针异常,应使用常量或确定有值的对象来调用 equals。 ...

千万数据量数据表分表实践

据表中有 2016年,2017 年,2018 年,2019 年数据 只查询最近半年的数据 后台增加历史数据查询功能 尽量减少代码改动 积分日志表 tb_user_points_log 虚拟充值表 tb_order_recharge 虚拟充值执行表 tb_order_recharge_do 注意: 先备份数据,在备份的数据表的基础上进行分表,不直接操作原始表! image-20191115145313258 将源数据表备份一份,依次将对应年份的数据归档,每成功归档一次,就将备份数据表中对应数据删除(目的减少查询数据量),最后根据备份表最小 ID,删除源数据表 小于 ID 的所有数据。 ...

并发编程-深入浅出AQS

AQS是并发编程中非常重要的概念,它是juc包下的许多并发工具类,如CountdownLatch,CyclicBarrier,Semaphore 和锁, 如ReentrantLock, ReaderWriterLock的实现基础,提供了一个基于int状态码和队列来实现的并发框架。本文将对AQS框架的几个重要组成进行简要介绍,读完本文你将get到以下几个点: AQS进行并发控制的机制是什么 AQS独占和共享模式是如何实现的 同步队列和条件等待队列的区别,和数据出入队原则 一,AQS基本概念 ...

你不知道的JS系列【1】- 什么是作用域

 几乎所有的编程语言都能够储存变量,并且能在之后对这个变量值进行访问或修改,正是储存和访问变量的能力将状态带给了程序,那么,这些变量储存在哪里呢?程序需要时又是如何找到他们?这些问题说明需要一套设计良好的规则来储存变量,并且之后可以方便的找到这些变量,这套规则被称为作用域。 1、了解编译原理   尽管将JS归类为“动态”或“解释执行”脚本语言,但事实上它是一门编译语言。但是与传统编译语言不同的是,它不是提前编译的,编译结果也不能在分布式系统中进行移植。JS引擎进行编译的步骤与传统的语言非常相似,程序中一段源代码在执行之前会经历三个步骤,统称为“编译”。 ...

Head First设计模式——命令模式

前言:命令模式我们平常可能会经常使用,如果我们不了解命令模式的结构和定义那么在使用的时候也不会将它对号入座。 举个例子:在winform开发的时候我们常常要用同一个界面来进行文件的下载,但是并不是所有地方都用同一个下载逻辑处理文件,然后下载界面却可以是同一个界面。 为了以后复用下载界面(下载显示,进度条等)我们常常将下载执行操作定义成一个接口,在具体使用的时候实现接口,将具体执行对象设置到下载界面。当下载按钮被按下的时候,就调用设置的具体执行对象(接收者)来执行下载的处理。 那接下来我们就看下命令模式的具体细节和实现,再回头想想我们平时什么时候不经意就使用到了命令模式,这样以后交流使用专业的术语不仅能装还能用。 ...
青岛软件培训

可能你正在寻找一家靠谱的IT培训机构,学习一些专业的软件开发技术,找一份得体的工作。恰巧我们就是一家踏踏实实做教育的IT人才培养机构,我们咨询电话是 0532-85025005,如果你确实对IT感兴趣,我们不妨交流一下。

申请免费试听课程