自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

攻城狮不是猫

随便记录,分享

  • 博客(255)
  • 资源 (8)
  • 收藏
  • 关注

原创 Java 开发面试题精选:Mysql 一篇全搞定

在高级Java开发工程师的面试中,MySQL作为常见的数据库技术,其掌握程度往往是评估候选人综合能力的重要组成部分。在这篇文章中,我精选了一些最可能被问到的与MySQL相关的面试题目,这些题目可以全面考察候选人的理论知识、实战经验和问题解决能力,不管你是准备求职的小伙伴,还是一名面试官,相信都能从这篇文章获取一些经验。

2024-06-11 11:54:36 1034

原创 Java 开发面试题精选:Kafka 一篇全搞定

在Java开发工程师面试中,特别是涉及到Apache Kafka的部分,面试官可能会从基础知识、架构理解、实际应用、故障排查和性能优化等多个维度来考察您的能力。

2024-06-11 11:53:10 573

原创 Java 开发面试题精选:分布式锁相关一篇全搞定

例如,两个进程试图通过通信来协调它们的行为,每个进程都基于对方的行为来决定自己的下一步操作,结果可能因为同步策略不当,双方都在不停改变状态以适应对方,但实际上没有一方能够完成自己的任务。实现方式:此场景下,使用Redis作为分布式锁服务是较为常见的做法,因为它能提供快速的锁获取与释放操作,并且支持设置锁的自动过期功能,以防锁因为某些原因未被正确释放而造成死锁。解决方案:使用分布式锁,在更新配置时锁定配置项,确保所有服务实例在配置更新完成并解锁前看到的是旧配置,更新后看到的是新配置,从而维护配置的一致性。

2024-06-07 10:00:44 532

原创 Java 开发面试题精选:分布式事务一篇全搞定

总的来说,Seata 的工作原理是通过 TM 和 TC 来协调事务的执行和提交,通过 RM 来管理事务涉及的资源。总的来说,ACID 特性的本质是通过原子性、一致性、隔离性和持久性来确保事务处理的可靠性和完整性,从而保证数据的一致性和系统的稳定性,这些特性是关系型数据库管理系统(RDBMS)中事务处理的基础。需要注意的是ACID描述是单机事务场景下的事务特性,如果是在分布式场景,那么就超出了单机事务的处理范畴,需要引入分布式事务的处理机制来解决这个问题,事实上单机事务也是分布式事务的基础。

2024-06-07 09:59:38 872

原创 7. 链路日志打印实现设计

在前面的文章中,我们已经实现了一个Starter包,能够在使用作为客户端请求工具时,记录调用链路信息。在本文,将实现Jaeger框架下的链路日志打印,也就是提供一个来将Span的信息打印出来。相关版本依赖如下。0.33.04.1.01.8.1Springboot2.7.6github本文回顾了链路日志的打印格式,并定义了其对应的实体对象,最后实现了打印链路日志的Reporter。Starter包工程目录结构如下所示。

2024-05-10 13:56:30 1117

原创 6. 分布式链路追踪RestTemplate拦截器实现设计

本文将对4. 分布式链路追踪客户端工具包Starter设计一文中的的拦截器进行一个增强设计,以使得使用调用下游时,可以得到3. 分布式链路追踪的链路日志设计一文中所定义的链路日志的字段内容。相关版本依赖如下。0.33.04.1.01.8.1Springboot2.7.6github本文对的分布式链路追踪拦截器的实现进行了说明,并分析了如何提供装饰器进行功能扩展与增强。

2024-05-10 13:53:57 1123

原创 5. 分布式链路追踪TracingFilter改造增强设计

在4. 分布式链路追踪客户端工具包Starter设计一文中,我们实现了基础的Starter包,里面提供了我们自己定义的Servlet过滤器和拦截器,其中Servlet过滤器叫做,仅提供了提取,创建Span和开启Span的基础功能,所以本文将围绕如何增强Servlet过滤器展开讨论。相关版本依赖如下。0.33.04.1.01.8.1Springboot2.7.6github本文在4. 分布式链路追踪客户端工具包Starter设计的基础上,使用替换了我们自己实现的,并且基于和装饰器进行了扩展增强。

2024-05-09 14:59:23 455

原创 4. 分布式链路追踪客户端工具包Starter设计

本文将从零搭建分布式链路追踪客户端工具包的Starter,并将在后续文章中逐步丰富支持的场景。这里首先将搭建一个最基础的Starter,能提供的功能和1. 看完这篇文章我奶奶都懂Opentracing了一文中的示例demo类似。相关版本依赖如下。0.33.04.1.01.8.1Springboot2.7.6github在本文,首先实现了一个基础的Starter包,为分布式链路追踪提供了Servlet过滤器和拦截器,其次实现了一个demo,后续分布式链路追踪Starter的功能,将用该demo。

2024-05-09 14:58:21 554

原创 3. 分布式链路追踪的链路日志设计

分布式链路追踪的客户端实现中,我们会通过各种手段和规则得到一个又一个的Span,得到这些Span后,需要在分布式链路追踪的服务端这边汇总这些Span并拼接出一条请求链路,那么这里就存在一个问题,客户端得到的Span如何给到服务端,通常是会在每个Span调用finish()方法时将Span发送给服务端,这里的发送有多种形式,例如把Span主动的push到Kafka的Topic,还例如把Span当作一条日志打印出来再由Filebeat采集,我们的本系列文章中,就选择将Span以链路日志。

2024-05-08 10:53:24 849

原创 2. 外婆都称赞的基于Jaeger的Span模型改造

我们的目标是基于Jaeger来实现分布式链路追踪的Java客户端工具包,实际就是一个Springboot的Starter,在1. 看完这篇文章我奶奶都懂Opentracing了一文中我们详细的学习了一下的相关概念以及阅读了相关的源码,同时特别重要的是我们还知道了为我们造了很多轮子,这些轮子大部分时候都是可以直接用的,我们只需要指定具体的实现框架例如Jaeger和提供相应的扩展点例如Span装饰器,我们就能够造出来我们自己的轮子。那么毫无疑问的,我们的分布式链路追踪的Java客户端工具包,会按照规范并使用。

2024-05-08 10:50:19 1096

原创 看完这篇文章我奶奶都懂Opentracing了 (三)

三. 扩展点分析通过前面的分析我们了解到,对分布式链路追踪中的各种概念进行了统一的定义,某种程度上,已经成为分布式链路追踪的规范。在语言中,定义了诸如和等概念对应的接口,不同的分布式链路实现方需要结合具体的实现方案来提供相应实现,例如本文选择的,其提供的实现了接口,实现了接口等。现在接口定义已经有了,具体的实现也有了,该怎么用起来呢。在本文的示例中,具体的使用案例就是我们提供的拦截器,以及过滤器,那么问题就来了,为什么我知道可以这么用,是因为我比较聪明吗,那必然不是,当然是。

2024-05-07 20:41:55 728

原创 看完这篇文章我奶奶都懂Opentracing了 (二)

二. 概念分析。

2024-05-07 20:41:18 938

原创 看完这篇文章我奶奶都懂Opentracing了(一)

如果要基于开发分布式链路追踪Java客户端工具包,首先肯定需要了解中的各种概念,包括但不限于Span和Scope等,其实这些概念在的官方文档中是有比较详尽的说明的,英文不好也能靠着机器翻译读得通,但是读得通不代表读得懂,从来没有接触过分布式链路追踪的人就算把官方文档通读完,整体的概念还是显得比较抽象,所以本文作为入门,旨在让从来没接触过分布式链路追踪的人也能理解中的各种概念,为后续阅读相关源码和自行实现分布式链路追踪客户端工具包打好基础。本文会从一个简单的例子入手,结合相关场景和源码实现,阐述中的。

2024-05-07 20:40:23 1381

原创 搞懂TomcatJdbc之连接池初始化

TomcatJdbc数据库连接池最初是设计来用于替代,但现在TomcatJdbc数据库连接池更多是与Druid和HikariCP数据库连接池进行比较,尽管扩展性不及Druid,性能不及HikariCP,但TomcatJdbc数据库连接池依旧有较为广泛的使用,这主要得益于其简单的配置和简洁的代码实现。本文将对TomcatJdbc数据库连接池的初始化源码进行分析,Tomcat版本为9.0.82。通过init()方法,我们可以总结如下几点。连接池的默认配置在中。TomcatJdbc。

2024-04-30 16:15:46 613

原创 搞懂TomcatJdbc之连接归还

正所谓有借有还,当业务线程从TomcatJdbc数据库连接池获取到连接并使用完毕后,随即就应该将借出的连接归还回去。本文将结合源码,分析TomcatJdbc数据库连接池的连接的归还实现。Tomcat版本为9.0.82。所谓借出连接,其实就是从TomcatJdbc的idle队列中获取一个连接,这个借出的连接在被业务线程使用的同时,也会同时被放在busy队列中。那么归还连接,其实就是把连接从busy队列移除然后再放回idle队列,我们也可以通过配置为true来让连接被归还到idle。

2024-04-30 16:14:16 1032

原创 搞懂TomcatJdbc之连接获取

当我们使用类似于MyBatis等ORM框架来执行一条SQL时,其中一步就是会从数据库连接池里获取一个连接,了解从数据库连接池获取连接的过程,对于排查SQL耗时问题具有很大的帮助。本文将针对TomcatJdbc数据库连接池获取连接的源码进行学习,Tomcat版本为9.0.82。TomcatJdbc接口访问超时引发的思考搞懂TomcatJdbc之连接池初始化TomcatJdbc获取连接的整个流程图示意如下。链接:https://juejin.cn/post/7309158089374335027。

2024-04-30 16:09:19 262

原创 搞懂TomcatJdbc之连接校验

TomcatJdbc数据库连接池中的连接,会在被使用的各个阶段进行校验,以确保连接是一个有效可用的连接。本文将结合TomcatJdbc连接校验相关配置和源码,对连接校验的原理进行学习,Tomcat版本为9.0.82。TomcatJdbc接口访问超时引发的思考搞懂TomcatJdbc之连接池初始化搞懂TomcatJdbc之连接获取TomcatJdbc有着较为完善且灵活的连接校验机制,在获取连接归还连接创建连接和连接空闲时都提供了配置来决定是否进行校验。对于获取连接校验,开启条件是配置为true。

2024-04-30 16:08:10 927

原创 SpringBoot统一结果返回,统一异常处理,大牛都这么玩

当实现统一结果返回时,需要创建一个通用的响应对象,定义成功和失败的返回情况,并确保在接口中使用这个通用返回对象。@Setter@Getter/*** 接口响应状态码*//*** 接口响应信息*//*** 接口响应的数据*/统一结果返回的关键之一是规定一套通用的状态码。这有助于客户端更容易地理解和处理 API 的响应,同时也为开发者提供了一致的标准。200 OK:表示成功处理请求。:表示成功创建资源。:表示成功处理请求,但没有返回任何内容。:客户端请求错误。:未授权访问。

2024-04-30 14:45:46 2585

原创 十年经验竟不懂Springboot日志

日志,是开发中熟悉又陌生的伙伴,熟悉是因为我们经常会在各种场合打印日志,陌生是因为大部分时候我们都不太关心日志是怎么打印出来的,因为打印一条日志,在我们看来是一件太平常不过的事情了,特别是在宇宙第一框架Springboot的加持下,日志打印是怎么工作的就更没人关注了。但是了解日志框架怎么工作,以及学会Springboot怎么和Log4j2或Logback等日志框架集成,对我们扩展日志功能以及优雅打印日志大有好处,甚至在有些场景,还能通过调整日志的打印策略来提升我们的系统吞吐量。所以本文将以。

2024-04-30 14:43:05 592

原创 一个 url 就把人家网站克隆了?

今天瞧见了一个开源库,,根据它的描述,这个简单的应用程序可以将屏幕截图转换为代码(HTML/Tailwind CSS、React、Bootstrap 或 Vue)。它使用 GPT-4 Vision 生成代码,并使用 DALL-E 3 生成外观相似的图像。更加逆天的是,现在是你只要输入一个 URL,他就给你把人家网站克隆了。

2024-04-29 16:17:19 392

原创 Java 线程同步组件 CountDownLatch 与 CyclicBarrier 原理分析

在分析完(以下简称 AQS)和的原理后,本文将分析 java.util.concurrent 包下的两个线程同步组件和。这两个同步组件比较常用,也经常被放在一起对比。通过分析这两个同步组件,可使我们对 Java 线程间协同有更深入的了解。同时通过分析其原理,也可使我们做到知其然,并知其所以然。这里首先来介绍一下 CountDownLatch 的用途,CountDownLatch 允许一个或一组线程等待其他线程完成后再恢复运行。线程可通过调用await方法进入等待状态,在其他线程调用countDown。

2024-04-24 15:17:21 598 1

原创 Java CAS 原理分析

CAS 全称是 compare and swap,是一种用于在多线程环境下实现同步功能的机制。CAS 操作包含三个操作数 -- 内存位置、预期数值和新值。CAS 的实现逻辑是将内存位置处的数值与预期数值想比较,若相等,则将内存位置处的值替换为新值。若不相等,则不做任何操作。在 Java 中,Java 并没有直接实现 CAS,CAS 相关的实现是通过 C++ 内联汇编的形式实现的。Java 代码需通过 JNI 才能调用。关于实现上的细节,我将会在第3章进行分析。前面说了 CAS 操作的流程,并不是很难。

2024-04-24 15:16:41 762

原创 TreeMap 源码分析

TreeMap最早出现在JDK 1.2中,是 Java 集合框架中比较重要一个的实现。TreeMap 底层基于红黑树实现,可保证在log(n)时间复杂度内完成 containsKey、get、put 和 remove 操作,效率很高。另一方面,由于 TreeMap 基于红黑树实现,这为 TreeMap 保持键的有序性打下了基础。总的来说,TreeMap 的核心是红黑树,其很多方法也是对红黑树增删查基础操作的一个包装。所以只要弄懂了红黑树,TreeMap 就没什么秘密了。本文可以看做是本人”红黑树详细分析。

2024-04-19 11:08:17 682

原创 MyBatis 源码分析 - 插件机制

一般情况下,开源框架都会提供插件或其他形式的拓展点,供开发者自行拓展。这样的好处是显而易见的,一是增加了框架的灵活性。二是开发者可以结合实际需求,对框架进行拓展,使其能够更好的工作。以 MyBatis 为例,我们可基于 MyBatis 插件机制实现分页、分表,监控等功能。由于插件和业务无关,业务也无法感知插件的存在。因此可以无感植入插件,在无形中增强功能。开发 MyBatis 插件需要对 MyBatis 比较深了解才行,一般来说最好能够掌握 MyBatis 的源码,门槛相对较高。

2024-04-19 11:02:41 848

原创 MyBatis 源码分析 - 缓存原理

在 MyBatis 中,Cache 是缓存接口,定义了一些基本的缓存操作,所有缓存类都应该实现该接口。MyBatis 内部提供了丰富的缓存实现类,比如具有基本缓存功能的 PerpetualCache,具有 LRU 策略的缓存 LruCache,以及可保证线程安全的缓存 SynchronizedCache 和具备阻塞功能的缓存 BlockingCache 等。除此之外,还有很多缓存实现类,这里就不一一列举了。需要特别说明的是,MyBatis 在实现缓存模块的过程中,使用了装饰模式。

2024-04-18 10:20:18 920

原创 MyBatis 源码分析 - 内置数据源

PooledDataSource 需要借助两个辅助类帮其完成功能,这两个辅助类分别是 PoolState 和 PooledConnection。PoolState 用于记录连接池运行时的状态,比如连接获取次数,无效连接数量等。同时 PoolState 内部定义了两个 PooledConnection 集合,用于存储空闲连接和活跃连接。PooledConnection 内部定义了一个 Connection 类型的变量,用于指向真实的数据库连接。

2024-04-18 10:19:29 506

原创 MyBatis 源码分析 - SQL 的执行过程

在前面的文章中,我分析了配置文件和映射文件的解析过程。经过前面复杂的解析过程后,现在,MyBatis 已经进入了就绪状态,等待使用者发号施令。本篇文章我将分析MyBatis 执行 SQL 的过程,该过程比较复杂,涉及的技术点很多。为 mapper 接口生成实现类根据配置信息生成 SQL,并将运行时参数设置到 SQL 中一二级缓存的实现插件机制数据库连接的获取与管理查询结果的处理,以及延迟加载等如果大家能掌握上面的技术点,那么对 MyBatis 的原理将会有很深入的理解。

2024-04-17 17:33:03 1401

原创 MyBatis 源码分析 - 映射文件解析过程

在上一篇文章中,我详细分析了 MyBatis 配置文件的解析过程。由于上一篇文章的篇幅比较大,加之映射文件解析过程也比较复杂的原因。所以我将映射文件解析过程的分析内容从上一篇文章中抽取出来,独立成文,于是就有了本篇文章。在本篇文章中,我将分析映射文件中出现的一些及节点,比如 ,,, 等。除了分析常规的 XML 解析过程外,我还会向大家介绍 Mapper 接口的绑定过程等。

2024-04-17 17:29:21 1305

原创 MyBatis 源码分析 - 配置文件解析过程

在上一篇文章中,我介绍了 MyBatis 的一些基础知识,用于为本文及后续的源码分析文章进行铺垫。经过前面的铺垫,我觉得是时候后分析一下 MyBatis 源码了。在本篇文章中,我将从 MyBatis 解析配置文件的过程着手进行分析。并会在分析的过程中,向大家介绍一些配置的使用方式和用途。MyBatis 的配置比较丰富,很难在一篇文章中把所有配置的解析过程分析完。所以关于配置文件的解析,这里会分两篇文章进行讲解。本篇文章将会分析诸如settings以及等标签的解析过程。

2024-04-15 10:09:32 1244 1

原创 MyBatis 源码分析系列文章导读

MyBatis 的前身是 iBatis,其是 Apache 软件基金会下的一个开源项目。2010年该项目从 Apache 基金会迁出,并改名为 MyBatis。同期,iBatis 停止维护。MyBatis 是一种半自动化的 Java 持久层框架(persistence framework),其通过注解或 XML 的方式将对象和 SQL 关联起来。

2024-04-15 10:06:39 1183

原创 简述Kafka的高可靠性

Kafka通过ACK应答机制保证了不同组件之间的通信效率,通过副本同步机制、数据截断和数据清理机制实现了对于数据的管理策略,保证整个系统运行效率。作为一款高性能又同时兼顾高可靠性的消息中间件来说,Kafka能吹的点实在太多。如果本篇文章对你有所帮助,点击一下右下角的大拇指,下一次我们来详细讲解Kafka是如何实现副本间数据传递的。作者:鼓楼丶链接:https://juejin.cn/post/7103335924079001636来源:稀土掘金著作权归作者所有。

2024-04-12 18:00:53 621

原创 Redis 与 MySQL 数据一致性问题

缓存中存有数据,缓存的数据值 = 数据库中的值;缓存中没有该数据,数据库中的值 = 最新值。缓存的数据值 ≠ 数据库中的值;缓存或者数据库存在旧的数据,导致线程读取到旧数据。❝为何会出现数据一致性问题呢?把 Redis 作为缓存的时候,当数据发生改变我们需要双写来保证缓存与数据库的数据一致。数据库跟缓存,毕竟是两套系统,如果要保证强一致性,势必要引入2PC或Paxos等分布式一致性协议,或者分布式锁等等,这个在实现上是有难度的,而且一定会对性能有影响。

2024-04-12 17:59:54 890

原创 Java 8 内存管理原理解析及内存故障排查实践

G1也是采用三色标记分段式进行回收的算法, 不过它是写屏障 + STAB快照实现,G1设定的目标是在延迟可控(低暂停)的情况下获得尽可能高的吞吐量,仍然可以通过并发的方式让Java 程序继续运行,G1垃圾收集器在很多方面弥补了CMS的不足,比如CMS使用的是mark-sweep标记清除算法,自然会产生内存碎片(CMS只能在Full GC时,STW 整理内存碎片),然而G1整体来看是基于标记整理算法实现的收集器,但是从局部来看也是基于复制算法实现的,高效的整理剩余内存,而不需要管理内存碎片它。

2024-04-11 19:21:50 1770

原创 Redis Pipelining 底层原理分析及实践

在数据量比较小的时候没有出现问题,直到有一条收到了Redis的内存和cpu利用率的告警消息,我们发现这么使用是有问题的,核心原因在于list的lrem操作的时间复杂度是O(N+M),其中N是list的长度, M是要移除的元素的个数,而我们这里还是一个一个移除的,当然会导致Redis数据积压和cpu每秒ops升高导致cpu利用率飚高。对于服务端来说,所需要的是能够处理一个客户端通过同一个TCP连接发来的多个命令,可以理解为,这里将多个命令切分,和处理单个命令一样,Redis就是这样处理的。

2024-04-11 19:15:33 1173

原创 DNS技术答疑解惑

DNS是域名系统(Domain Name System)的简称,本质上是一个域名和IP地址相互映射的一个分布式数据库。

2024-04-10 09:52:50 934

原创 有趣的时间轮

如果有一个需求,一个任务执行失败后需要重试,重试的次数和时间点是可配置的,那么需要怎么实现呢?一个不错的方法就是通过时间轮来实现。

2024-04-10 09:52:24 908

原创 这些年背过的面试题——JVM篇

我使用 jmap 命令,导出了一份线上堆栈,然后使用 MAT 进行分析,通过对 GC Roots 的分析,发现了一个非常大的 HashMap 对象,这个原本是其他同事做缓存用的,但是做了一个无界缓存,没有设置超时时间或者 LRU 策略,在使用上又没有重写key类对象的hashcode和equals方法,对象无法取出也直接造成了堆内存占用一直上升,后来,将这个缓存改成 guava 的 Cache,并设置了弱引用,故障就消失了。第三,由于缓存的使用,有大量的弱引用,拿一次长达 10 秒的 GC 来说。

2024-04-09 17:07:05 1217

原创 Java对象头压缩---- 永久为Java应用“降本增效”

本文介绍了一下OpenJDK的最新技术,对象头压缩,来大幅优化Java对象的内存占用。前言Java丰富的生态和语言强大的内存管理技术(GC),使得Java应用的开发非常便捷,各类应用场景的适配都非常优秀,大大减少了从Idea到应用落地的难度。不过这一切也不是没有代价的,针对于Java应用内存占用比较高的问题一直拿出来和其他语言比较。虽然JVM已经自带了例如指针压缩(compressed oops)来节约内存开销,不过Java Object对象头本身占用的内存还是非常可观。

2024-04-09 17:06:49 947

原创 Java 8 内存管理原理解析及内存故障排查实践

G1也是采用三色标记分段式进行回收的算法, 不过它是写屏障 + STAB快照实现,G1设定的目标是在延迟可控(低暂停)的情况下获得尽可能高的吞吐量,仍然可以通过并发的方式让Java 程序继续运行,G1垃圾收集器在很多方面弥补了CMS的不足,比如CMS使用的是mark-sweep标记清除算法,自然会产生内存碎片(CMS只能在Full GC时,STW 整理内存碎片),然而G1整体来看是基于标记整理算法实现的收集器,但是从局部来看也是基于复制算法实现的,高效的整理剩余内存,而不需要管理内存碎片它。

2024-04-08 13:46:35 1163

原创 Jackson 工具类使用及配置指南

Json数据格式这两年发展的很快,其声称相对XML格式有很对好处:容易阅读;解析速度快;占用空间更少。不过,JSON 和 XML两者纠结谁优谁劣,这里不做讨论,可以参见知乎上为什么XML这么笨重的数据结构仍在广泛应用?最近在项目中,会有各种解析JSON文本的需求,使用第三方Jackson工具来解析时,又担心当增加会减少字段,会不会出现非预期的情况,因此,研究下jackson解析json数据格式的代码,很有需要。

2024-04-08 13:46:14 1607

java sigar获得服务器信息

內含: sigar-1.6.4.jar hyperic-sigar-1.6.4.zip sigar-x86-winnt.dll libsigar-x86-linux.so sigar-amd64-winnt.dll OSUtil.java public static void main(String[] args) { try { // System信息,从jvm获取 property(); System.out.println("----------------------------------"); // cpu信息 cpu(); System.out.println("----------------------------------"); // 内存信息 memory(); System.out.println("----------------------------------"); // 操作系统信息 os(); System.out.println("----------------------------------"); // 用户信息 who(); System.out.println("----------------------------------"); // 文件系统信息 file(); System.out.println("----------------------------------"); // 网络信息 net(); System.out.println("----------------------------------"); // 以太网信息 ethernet(); System.out.println("----------------------------------"); } catch (Exception e1) { e1.printStackTrace(); } }

2018-05-08

大型网站分布式技术架构书(集合)

大型网站技术架构:核心原理与案例分析+李智慧.pdf 大型分布式网站架构设计与实践.pdf 大型网站系统与JAVA中间件实践.pdf 分布式Java应用基础与实践.pdf 分布式系统常用技术及案例分析.pdf 亿级流量网站架构核心技术 跟开涛学搭建高可用高并发系统.pdf

2018-04-18

TCP-IP详解 卷一、二、三 非扫描

大家知道,TCP/IP已成为计算机网络的事实上的标准。在关于TCP/IP的论著中,最有影响的就是两部著作。一部是Douglas E. Comer的《用TCP/IP进行网际互连》,而另一部就是Stevens写的这3卷书。这两套巨著都很有名,各有其特点。无论是从事计算机网络的教师还是进行科研的技术人员,这两套书都应当是必读的。 《TCP/IP详解,卷1:协议》 《TCP/IP详解 卷2:实现》 《TCP-IP详解卷三TCP事务协议,HTTP,NNTP和UNIX域协议》

2018-04-17

Java核心技术卷I 卷II 原书中文第8版 非扫描

不能选择免费 不然我就选择免费了, 2积分 服务大众吧 其中卷一是非扫描, 卷二扫描的 找不到非扫描的抱歉啊

2018-04-17

Java TCPIP Socket编程 源码

协议相当于相互通信的程序间达成的一种约定,它规定了分组报文的结构、交换方式、包含的意义以及怎样对报文所包含的信息进行解析,TCP/IP协议族有IP协议、TCP协议和UDP协议。现在TCP/IP协议族中的主要socket类型为流套接字(使用TCP协议)和数据报套接字(使用UDP协议)。 TCP协议提供面向连接的服务,通过它建立的是可靠地连接。Java为TCP协议提供了两个类:Socket类和ServerSocket类。一个Socket实例代表了TCP连接的一个客户端,而一个ServerSocket实例代表了TCP连接的一个服务器端,一般在TCP Socket编程中,客户端有多个,而服务器端只有一个,客户端TCP向服务器端TCP发送连接请求,服务器端的ServerSocket实例则监听来自客户端的TCP连接请求,并为每个请求创建新的Socket实例,由于服务端在调用accept()等待客户端的连接请求时会阻塞,直到收到客户端发送的连接请求才会继续往下执行代码,因此要为每个Socket连接开启一个线程。服务器端要同时处理ServerSocket实例和Socket实例,而客户端只需要使用Socket实例。另外,每个Socket实例会关联一个InputStream和OutputStream对象,我们通过将字节写入套接字的OutputStream来发送数据,并通过从InputStream来接收数据。

2018-04-08

大话JAVA:从零基础到数据库、WEB开发.

大话Java:从零基础到数据库、Web开发以漫画的形式,由浅入深、循序渐进地介绍Java编程的常用技术和方法,内容涵盖了Java基本语法结构、面向对象特征、集合框架体系、异常处理、GUI编程、MySQL数据库、JDBC数据库编程、Servlet、JSPWeb开发等。 《大话Java:从零基础到数据库、Web开发》并不单单从基础知识的角度来讲解Java,而是从解决问题的角度来介绍Java语言。书中介绍的大量实用的开发案例,既能让读者巩固每章的知识,又可以让读者学以致用,激发编程自豪感,进而引发内心的编程激情。 大话Java:从零基础到数据库、Web开发为所有打算深入掌握Java编程的读者编写,适用于初中级程序开发者,没有接触过Java语言的入门者也可以轻松地阅读《大话Java:从零基础到数据库、Web开发》。

2018-04-04

《Java加密与解密的艺术》源码

本书是Java安全领域的百科全书,密码学领域的权威经典,5大社区一致鼎力推荐。 在如今这个信息化时代,数据是一切应用的核心和基础,有数据存在的地方就会有安全隐患,而密码学则是解决大多数安全问题的银弹。 若要构建安全坚固的Java企业级应用,不仅要深入了解每种算法的原理并将它们综合运用,而且还要悟透Java加密与解密技术的本质。全书包含3个部分,基础篇对Java企业级应用的安全知识、密码学核心知识、与Java加密相关的API和通过权限文件加强系统安全方面的知识进行了全面的介绍;实践篇不仅对电子邮件传输算法、消息摘要算法、对称加密算法、非对称加密算法、数字签名算法等现今流行的加密算法的原理进行了全面而深入的剖析,而且还结合翔实的范例说明了各种算法的具体应用场景。 Java开发者将通过本书掌握密码学和Java加密与解密技术的所有细节;系统架构师将通过本书领悟构建安全企业级应用的要义;其他领域的安全工作者也能通过本书一窥加密与解密技术的精髓。 《Java加密与解密的艺术》,它的应用遍及企业级应用的各个领域,安全是所有企业级应用中最突出、最重要的问题。然而这些问题从来都不是一种武器就能解决的。消息摘要算法用于数据校验、对称加密算法用于数据加密、非对称加密算法用于密钥交换、数字签名算法用于身份验证等。

2018-04-04

空空如也

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

TA关注的人

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