自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(241)
  • 资源 (3)
  • 收藏
  • 关注

原创 Java操作hdfs,总是报ClosedChannelException

会报 java.nio.channels.ClosedChannelException: null at org.apache.hadoop.hdfs.ExceptionLastSeen.throwException4Close。logger.info(“文件名称: {} 耗时: {}”, dst, end - start);logger.error("文件:{}, 上传错误!// 关闭FileSystem对象。// 创建Hadoop配置对象。// 上传文件到HDFS。

2024-04-03 16:56:54 293

原创 [设计模式]责任链模式实现 申请聚餐费用流程

然后,它创建了一个聚餐费用申请,并将其提交给项目经理进行审批。也就是说,当某人提出聚餐费用申请的请求后,该请求会经由项目经理、部门经理、总经理之中的某一位领导来进行相应的处理,但是提出申请的人并不知道最终会由谁来处理他的请求,一般申请人是把自己的申请提交给项目经理,或许最后是由总经理来处理他的请求。申请聚餐费用的大致流程一般是:由申请人先填写申请单,然后交给领导审批,如果申请批准下来,领导会通知申请人审批通过,然后申请人去财务领取费用,如果没有批准下来,领导会通知申请人审批未通过,此事也就此作罢。

2024-03-05 16:35:59 387

原创 【设计】设计一个web版的数据库管理平台后端精要

springboot设计开发一个系统,在这个系统的数据库表中存放着2000个数据库实例,有MySQL、Oracle、sql server3种数据库类型,用户可以在页面上选择不同的实例,连接这些实例上的数据库,来执行业务sql。

2024-02-29 18:34:22 551

原创 [git]2个分支合并,引起的代码部分丢失!!!

2个分支合并,引起的代码部分丢失。

2024-01-29 18:33:10 541 1

原创 [设计模式]某一个流程中,经理可以指定其他人员代替经理审批流程

在这个场景中,我们可以定义一个抽象的审批流程接口,例如 ApprovalProcess,其中包括审批的方法。Manager 类中可以定义一个包含代理对象的成员变量,例如 ProxyApprovalProcess。在需要指定他人代替审批的情况下,经理可以调用 ProxyApprovalProcess 的相关方法,将审批委托给其他人员进行处理。可以使用代理模式来实现经理可以指定其他人员代替审批流程的功能。代理模式允许通过一个代理对象来控制对原始对象的访问,从而在不改变原始对象的情况下,增加额外的逻辑处理。

2023-12-27 15:25:22 431

原创 Linux命令之find

以下命令为,清理 /data/logs文件夹下,30天前的log文件。

2023-11-10 09:06:43 150

原创 MySQL之慢查询

1.where条件单表查,锁定最小返回记录表。这句话的意思是把查询语句的where都应用到表中返回的记录数最小的表开始查起,单表每个字段分别查询,看哪个字段的区分度最高。2.explain查看执行计划,是否与1预期一致(从锁定记录较少的表开始查询)3.order by limit 形式的sql语句让排序的表优先查。0.先运行看看是否真的很慢,注意设置SQL_NO_CACHE。6.观察结果,不符合预期继续从0分析。5.加索引时参照建索引的几大原则。4.了解业务方使用场景。

2023-10-30 23:28:11 104

原创 玩碎Java之CompletableFuture的例子

如上代码块所示,doGet方法第三行通过supplyAsync向threadPool1请求线程,并且内部子任务又向threadPool1请求线程。threadPool1大小为10,当同一时刻有10个请求到达,则threadPool1被打满,子任务请求线程时进入阻塞队列排队,但是父任务的完成又依赖于子任务,这时由于子任务得不到线程,父任务无法完成。主线程执行cf1.join()进入阻塞状态,并且永远无法恢复。为了修复该问题,需要将父任务与子任务做线程池隔离,两个任务请求不同的线程池,避免循环依赖导致的阻塞。

2023-09-30 22:31:21 217

原创 又是双节同庆的日子

今年又是中秋和国庆在一起的节日,所以可以回家过中秋,终于团聚了,在月圆之夜。放假,可以好好休息一下。

2023-09-30 21:47:44 46

原创 玩碎Java之Java8 list的stream操作

【代码】玩碎Java之Java8 list的stream操作。

2023-08-31 18:26:14 120

原创 数据库知识

利用以上2句,来看update语句的影响行数,结果中的ROWS的值,就是影响行数,但是这个值有可能不准,所以只能大体作为判断依据。

2023-07-31 23:26:26 52

原创 玩碎Java之多线程的几个坑

大家想想以上2段代码的输出都是什么呢?

2023-06-30 15:44:44 75

原创 一个命令搞定Linux大文件下载

对于大日志文件,我们可能只需要今天的内容,今天之前的内容不需要查看,所以我们可以对日志文件进行分割,只下载我们需要的片段即可。例如: split -b 50K -d messages.9.gz messages.9.gz.将messages.9.gz 分割成50K大小包,压缩包前缀是: messages.9.gz.以上2个问题,都可以通过Linux一个命令来帮忙 - split。通常,我们可能不知道这个文件有多少行,还可以用以下文件大小分割。让我们先来看看split的帮助文档。很有助于问题的排查速度!

2023-05-24 21:31:08 1730

原创 springbean 并发安全

Spring的bean默认都是单例的,某些情况下,单例是并发不安全的,以Controller举例,问题根源在于,我们可能会在Controller中定义成员变量,如此一来,多个请求来临,进入的都是同一个单例的Controller对象,并对此成员变量的值进行修改操作,因此会互相影响,无法达到并发安全(不同于线程隔离的概念,后面会解释到)的效果。同时可以发现web服务器默认的请求线程池大小为10,这10个核心线程可以被之后不同的Http请求复用,所以这也是为什么相同线程名的结果不会重复的原因。

2023-04-30 22:23:19 807

原创 ShardingJDBC非常规玩法

db0db1业务中,有这样的表分布,库算法:Math.abs(sell_id.hashCode()%2)表算法:Math.abs(sell_id.hashCode()%4)分片算法是hash,插入以下值:库 - 表:值也就是说,取00 - 0000 : 1001和01 - 0003: 2313这2条记录,按说应该能正常得到结果,但事实是,会报错。

2023-03-30 22:46:37 226

原创 好玩Java之自定义类加载器

可以通过以下方式,进行自定义类加载器的使用。这样会破坏双亲委派,优先自己加载。

2023-02-27 20:43:13 151

原创 初玩Netty之Demo

2023从一个Netty例子开始。例子,从最最最简单的开始。

2023-01-31 23:34:37 172

原创 玩碎Java之零拷贝

零拷贝的“零”是指用户态和内核态间copy数据的次数为零,即Zero CPU Copy。零拷贝可以提高数据传输效率,但对于需要在用户传输过程中对数据进行加工的场景(如加密)就不适合使用零拷贝。传统拷贝与零拷贝的区别,见下图。

2022-12-31 21:53:17 349

原创 多数据中心多活相关知识

Cell:业务可封闭收敛最小执行分片;业务对请求空间按一定维度(比如会员、门店等)划分分片。LDC:逻辑数据中心,是由多个业务可封闭 cell 组成的集合单元,拥有独立的基础中间件系统(包括 RPC, MQ, DNS 等),以及出口网络等。PDC:物理数据中心,指物理上独立的一栋建筑,一般每栋有好几层, 存放一系列机柜和上千和上万服务器, 构成一个 PDC。AZ(Available Zone):可用区,具有独立的故障隔离空间,拥有独立网络设施或电力设备,由相邻的单个或多个 PDC 组成。

2022-11-30 22:55:20 754

原创 百倍性能提升SQL优化纪实

在一次数据统计中,有以下5张表,数据10441条。数据123879条。数据46148条。数据12296条。数据5546条。在DBeaver中执行以上语句,默认查询200行,用了23.472s。时间不可接受!从上图看,left join system_info csi on cdi.du_package = csi.system_uid时,没有用上索引。明明system_uid是唯一索引啊,为什么没用上呢?仔细查看left join时用到的2列,deploy_unit表中的。

2022-10-31 18:05:14 630

原创 初探Raft算法

在分布式计算中,不同的计算机通过通讯交换信息达成共识按照一套协作策略行动。有时候,系统中的成员计算机可能出错而发送错误的信息,用于传递信息的通讯网络也可能导致信息损坏,使得网络中不同的成员关于全体协作的策略得出不同结论,从而破坏系统一致性,这就是拜占庭将军问题。当选出一位领导人后,我们需要将系统的所有更改复制到所有节点。拜占庭将军问题被认为是容错性问题中最难的问题类型之一。节点A和B都将回滚其未提交的条目并匹配新领导者的日志。由于我们的分区,我们现在有了两位领导者。现在,我们的日志在整个集群中是一致的。

2022-09-29 17:32:18 404

原创 Scalable IO in Java 学习笔记

" Scalable network services" Event-driven processing" Reactor patternBasic versionMultithreaded versionsOther variants" Walkthrough of java.nio nonblocking IO APIs

2022-08-31 22:27:28 193

原创 玩碎Java之ReentrantLock中的lock/lockInterruptibly方法

ReentrantLock中的lock与lockInterruptibly

2022-07-31 17:47:07 251

原创 玩碎Java之ThreadLocal的原理

ThreadLocal,我们依然从一个例子看起。debug模式下,我们看下thread里ThreadLocalMap里的情况,如下图。①因为存在强引用,所以对应的referent不为null。②没有强引用,垃圾回收后,referent为null。③ThreadLocal仅在test1()方法中有效,所以垃圾回收后,referent为null。set(T value)设置线程本地变量的内容。get()获取线程本地变量的value值initialValue()设置 ThreadLoca

2022-06-26 17:55:16 291

原创 Java静态分派与动态分派

Java静态分派与动态分派

2022-05-27 09:22:14 258

原创 玩碎Java之ThreadPoolExecutor的整体实现及线程回收

线程池中线程的销毁依赖JVM自动的回收,移除线程池对该线程的引用,使其可以被JVM正常地回收。

2022-04-29 09:00:00 1279

翻译 爱玩MySQL之InnoDB Locking

文章目录总结表级锁生活中的间隙锁MySQL中的间隙锁Shared and Exclusive LocksIntention LocksRecord LocksGap LocksNext-Key LocksInsert Intention LocksAUTO-INC LocksPredicate Locks for Spatial IndexesPhantom RowsREPEATABLE READConsistent readslocking reads原文:14.7.1 InnoDB Locking总

2022-03-30 18:30:00 205

原创 玩碎JAVA之volatile与Memory Barriers

大师们的原文,确实比其他文章讲的透彻的很多!JSR-133原文JSR-133 FAQThe JSR-133 Cookbook for Compiler Writersvolatile修饰的字段,适用于一个线程写,多个线程读的情况,不适用于多个线程写的情况,不然也会有安全性的问题。volatile有2层语义:可见性;禁止指令重排;What does volatile do?Volatile fields are special fields which are used for co

2022-02-08 20:00:00 577

原创 爱玩MySQL之当前读和快照读的实验

什么是 MySQL InnoDB 下的当前读和快照读?一致性非锁定读(快照读),普通的SELECT,通过多版本并发控制(MVCC)实现。一致性锁定读(当前读),SELECT … FOR UPDATE/SELECT … LOCK IN SHARE MODE/INSERT/UPDATE/DELETE,通过锁实现。实验一session1session2查看事务隔离级别select @@session.tx_isolation; select @@session.tx_isol

2022-01-05 16:21:13 93

原创 2021,这一年

倒,倒,倒这一年听闻了太多知名公司倒闭,关店的消息。年初,面了一家规模不小的知名公司,没去,后来它倒了。后来,来了现在的公司,也是见证了它跳楼式的下跌。裁,裁,裁这一年各大厂裁员消息更是漫天飞。我自己也是还没过试用期的时候,差点被踩。好不容易熬到今天,也是朝不保夕。毒,毒,毒这一年大环境不好也就算了,病毒时常还来凑热闹,让我们的生活雪上加霜,不能出去玩不说,连正常的回老家探亲过年,都受很大影响。卷,卷,卷这一年越来越卷,看你还能卷成啥样跌,跌,跌这一年海内外,浅绿/深绿

2021-12-31 11:00:18 142

原创 好玩Spring之SpringBoot自定义starter

之前我们讲过Java SPI的使用,现在我们来看看Spring中SPI的应用。SpringBoot自定义一个最简单的starter的实例如下新建一个springboot项目,目录如下:定义一个Service,处理业务。public class DemoService { private String key; private String value; public DemoService(String key, String value) {

2021-12-09 13:50:59 351

原创 Scalable IO in Java

原文地址:http://gee.cs.oswego.edu/dl/cpjslides/nio.pdf大神之作原文,值得好好拜读。

2021-11-24 11:00:26 485

原创 玩碎Java之JAVA SPI

JDK SPI最近了解到Dubbo / SpringBoot / Nacos / JDBC都使用到了SPI机制,各位大咖都用了,必须好好看一看。SPI(Service Provider Interface)是JDK内置的一种提供服务发现的机制。在java中根据一个子类获取其父类或接口信息非常方便,但是根据一个接口获取该接口的所有实现类却没那么容易。SPI便是解决接口获取实现类的很好的解决方案,我们定义一个接口,第三方服务提供者可以实现我们的接口,并根据SPI约定在 META-INF/service

2021-11-03 21:00:38 126

原创 好玩Spring之非spring环境获取Spring容器中的bean

现在,我们有个需求,如何在一个普通的pojo中,调用spring bean的方法,比如以下例子。通过BeanFactoryPostProcessor获取bean,进而实现在普通类中调用bean的方法。

2021-10-11 18:38:26 127

原创 好玩Spring之InitializingBean/DisposableBean与@PostConstruct/@PreDestroy

初始化我们在对bean进行一些自定义初始化时,可以使用@PostConstruct实现InitializingBean接口的afterPropertiesSet()方法@Bean(initMethod = “initMethod”)在xml文件中,设置全局default-init-method=“init”public class TestInit implements InitializingBean { private String name; public Test

2021-09-14 21:54:40 176

原创 好玩Spring之获取ApplicationContext的几种方式

// 方式一:通过 AnnotationConfigApplicationContext / FileSystemXmlApplicationContext / ClassPathXmlApplicationContextAnnotationConfigApplicationContext annotationConfigApplicationContext = new AnnotationConfigApplicationContext(Config.class);MyClass my

2021-08-18 22:54:08 493

原创 好玩Spring之三级缓存及循环依赖的处理

Spring的三级缓存,伴随着bean的生命周期。常见缓存在DefaultSingletonBeanRegistry类中,有很多的cache。public class DefaultSingletonBeanRegistry extends SimpleAliasRegistry implements SingletonBeanRegistry { // 一级缓存 /** Cache of singleton objects: bean name to bean instance. */ pr

2021-07-21 10:43:35 170

原创 好玩Spring之获取Advisor

获取Advisor@Override public List<Advisor> getAdvisors(MetadataAwareAspectInstanceFactory aspectInstanceFactory) { // 切面类 是一个带有Aspect注解的类 Class<?> aspectClass = aspectInstanceFactory.getAspectMetadata().getAspectClass(); // 切面类名字 String

2021-05-27 14:06:43 261

原创 好玩Spring之AOP是如何运行的

上篇文章,我们解读了@EnableAspectJAutoProxy的运行,本篇文章我们来看下,@Before @Pointcut等注解,是如何工作的。例子@Configuration@EnableAspectJAutoProxy@ComponentScanpublic class AppConfig {}@Aspect@Componentpublic class LogAspects { @Pointcut("within(tzb.aop..*)") public void poin

2021-04-25 20:42:38 127

原创 好玩Spring之@EnableAspectJAutoProxy解读

文章目录前言例子源码解读AnnotationAwareAspectJAutoProxyCreatorinvokeBeanFactoryPostProcessors(beanFactory)registerBeanPostProcessors(beanFactory)前言在Spring中,如果不在配置类中添加@EnableAspectJAutoProxy,那么所有切面注解是不生效的(springboot因为有自动配置,所以不需要开发人员手工配置@EnableAspectJAutoProxy)例子@Co

2021-03-31 20:02:55 29540 2

程序员编程艺术第一 二十七章集锦与总结(教你如何编程) by July 定稿版 pdf

程序员编程艺术第一 二十七章集锦与总结(教你如何编程) by July 定稿版 pdf

2014-02-20

ssh secure shell 绿色

SSH(Secure Shell)是一种通用的、功能强大的、基于软件的网络安全解决方案。计算机每次向网络发送数据时,SSH都会自动对其进行加密。数据到达目的地时,SSH自动对加密数据进行解密。整个过程都是透明的,使用OpenSSH工具将会增进你的系统安全性。   谈到网络安全访问,相信大家首先想到的就是安全Shell,也就是Secure Shell,通常简写为SSH。 这是因为SSH安装容易、使用简单,而且比较常见,一般的Unix系统、Linux系统、FreeBSD系统都附带有支持SSH的应用程序包。 用 SshClient.exe 可以链接到 Linux

2012-03-14

jsp java 日历安排

Java jsp 实现日历安排,添加、删除、修改日程

2009-10-28

空空如也

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

TA关注的人

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