对象克隆
在java面向对象的编程当中,要复制引用类型的对象,就必须克隆这些对象。通过调用对所有引用类型和对象都是可用的clone方法,来实现克隆。如果是值类型的实例,那么“=”赋值运算符就可以将源对象的状态逐字节地复制到目标对象中。本文简单记录关于Java中对象拷贝的问题。
为什么要使用克隆?
克隆的对象可能包含一些已经修改过的属性,而 new 出来的对象的属性都还是初始化时候的值,所以**当需要一个新的对象来保存当前对象的“状态”**就靠克隆方法了。
如何实现对象克隆?
实现 Cloneable 接口并重写 Object 类中的 clone() 方法。
实现 Serializable 接口,通过对象的序列化和反序列化实现克隆,可以实现真正的深度克隆。
深拷贝和浅拷贝区别是什么?
**浅克隆:**当对象被复制时只复制它本身和其中包含的值类型的成员变量,而引用类型的成员对象并没有复制。
**深克隆:**除了对象本身被复制外,对象所包含的所有成员变量也将复制。
网络编程
网络编程从大的方面说就是对信息的发送到接收,中间传输为物理线路的作用。网络编程最主要的工作就是在发送端把信息通过规定好的协议进行组装包,在接收端按照规定好的协议把包进行解析,从而提取出对应的信息,达到通信的目的。中间最主要的就是数据包的组装,数据包的过滤,数据包的捕获,数据包的分析,当然最后再做一些处理,代码、开发工具、数据库、服务器架设和网页设计这5部分你都要接触。
原文链接:Java基础+进阶
概念计算机网络:计算机网络是指将地理位置不同的具有独立功能的多台计算机及其外部设备,通过通信线路连接起来,在网络操作系统,网络管理软件及网络通信协议的管理和协调下,实现资源共享和信息传递的计算机系统。
网络编程:指编写运行在多个设备(计算机)的程序,这些设备都通过网络连接起来。
网络编程三要素
IP地址:要想让网络中的计算机能够互相通信,必须为每台计算机指定一个标识号,通过这个标识号来指定要接收类据的计算机和识别发送的计算机,而IP地址就是这个标识号。也就是设备的标识
端口:网络的通信,本质上是两个应用程序的通信。每台计算机都有很多的应用程序,那么在网络通信时,如何区分这些应用程序呢?如 ...
Java Web
Java Web,是用Java技术来解决相关web互联网领域的技术栈。web包括:web服务端和web客户端两部分。Java在客户端的应用有Java Applet,不过使用得很少,Java在服务器端的应用非常的丰富,比如Servlet,JSP、第三方框架等等。Java技术对Web领域的发展注入了强大的动力。本文简单记录一些关于Java Web的相关问题。
JSP
JSP 和 servlet 有什么区别?
JSP 是 servlet 技术的扩展,本质上就是 servlet 的简易方式。servlet 和 JSP 最主要的不同点在于,servlet 的应用逻辑是在 Java 文件中,并且完全从表示层中的 html 里分离开来,而 JSP 的情况是 Java 和 html 可以组合成一个扩展名为 JSP 的文件。
JSP 侧重于视图,servlet 主要用于控制逻辑。
JSP 有哪些内置对象?作用分别是什么?
JSP 有 9 大内置对象:
**request:**封装客户端的请求,其中包含来自 get 或 post 请求的参数;
**response:**封装服务器对客户端的响应;
**p ...
业务相关问题
关于 java 中常见业务问题的一些处理,如微服务日志联调、大批量数据处理的一些记录
微服务日志怎么联通痛点
进程内的多条日志无法追踪。一个请求调用,假设会调用后端十几个方法,打印十几次日志,无法将这些日志串联起来。
跨服务的日志如何进行关联。每个微服务都会记录自己这个进程的日志,跨进程的日志如何进行关联?
跨线程的日志如何关联。主线程和子线程的日志如何关联?
第三方调用我们的服务,如何追踪?
本文针对第一个和第二个问题,稍作描述。
解决方案
使用 Skywalking traceId 进行链路追踪
使用 Elastic APM 的 traceId 进行链路追踪
MDC 方案:自己生成 traceId 并 put 到 MDC 里面。
MDC 方案:MDC(Mapped Diagnostic Context)用于存储运行上下文的特定线程的上下文数据。因此,若使用 log4j 进行日志记录,则每个线程都可拥有自己的MDC,该 MDC 对整个线程是全局的。属于该线程的任何代码都可以轻松访问线程的 MDC 中存在的值。
追踪一个请求的多条日志
在 logback 日志配置文件中的日志格 ...
JAVA 基础
Java是一门面向对象的编程语言,不仅吸收了C++语言的各种优点,还摒弃了C++里难以理解的多继承、指针等概念,因此Java语言具有功能强大和简单易用两个特征。Java语言作为静态面向对象编程语言的代表,极好地实现了面向对象理论,允许程序员以优雅的思维方式进行复杂的编程。Java具有简单性、面向对象、分布式、健壮性、安全性、平台独立与可移植性、多线程、动态性等特点。 Java可以编写桌面应用程序、Web应用程序、分布式系统和嵌入式系统应用程序等
常见问题== 和 equals 的区别
== 解读:
基本类型:比较的是值是否相同;                          引用类型:比较的是引用是否相同; 
若指向同一个引用,== 为 true,而 new String() 方法重新开辟了内存空间, == 结果为 false,而 equals 比较的是值,结果为 true
equals 解读:equals 本质上就是 ==,只不过 String 和 Integer 等重写了 equals 方法,把它变成了值比较
总结: == 对于基本类型来说是值比较,对于引用类型来说是比较的 ...
JDK
Java是一门面向对象的编程语言,不仅吸收了C++语言的各种优点,还摒弃了C++里难以理解的多继承、指针等概念,因此Java语言具有功能强大和简单易用两个特征。Java语言作为静态面向对象编程语言的代表,极好地实现了面向对象理论,允许程序员以优雅的思维方式进行复杂的编程。Java具有简单性、面向对象、分布式、健壮性、安全性、平台独立与可移植性、多线程、动态性等特点。 Java可以编写桌面应用程序、Web应用程序、分布式系统和嵌入式系统应用程序等
JDK安装下载下载jdk-17.0.12_windows-x64_bin.zip, 安装时可以选择安装地址,安装完成后配置JDK17的环境变量:
123新增系统变量:JAVA_HOME,值为D:\IDEA\Java\jdk-17(安装路径)新增系统变量:CLASSPATH,值为.;%JAVA_HOME%\lib;%JAVA_HOME%\lib\tools.jar,注意最前面的小黑点不能省.在系统变量Path下新增两条配置:%JAVA_HOME%\bin和%JAVA_HOME%\jre\bin
其他版本安装差不多,下载地址Java downlo ...
java开发环境搭建
java开发的基本环境搭建
参考文章:
Maven基础&MyBatis
全网最完整Java学习笔记(基础篇)
JDK安装下载下载jdk-17.0.12_windows-x64_bin.zip, 安装时可以选择安装地址,我的安装地址D:\IDEA\Java\jdk-17
安装完成后配置JDK17的环境变量:
123新增系统变量:JAVA_HOME,值为D:\IDEA\Java\jdk-17(安装路径)新增系统变量:CLASSPATH,值为.;%JAVA_HOME%\lib;%JAVA_HOME%\lib\tools.jar,注意最前面的小黑点不能省.在系统变量Path下新增两条配置:%JAVA_HOME%\bin和%JAVA_HOME%\jre\bin
其他版本安装差不多,下载地址Java downloads
Maven下载安装进入Apache|Maven|Download Apache Maven ,找到files,选择需要的版本下载。
Binary是可执行版本,已经编译好可以直接使用。
Source是源代码版本,需要自己编译成可执行软件才可使用。
选择已经编译好的w ...
Hexo个人博客搭建
Hexo 是一个简单、轻量、基于Node的静态博客框架,可以方便的生成静态网页托管于GitHub和Heroku。本文以 Hexo + GitHub Pages + Typora + PicGo 为例。
环境搭建
**1、下载node并安装。**安装好node,会默认一起安装好 npm 包管理器,可通过(Ctrl+R)打开 cmd 终端,使用以下命令查看安装版本
12node -v npm -version
**2、安装 git,配置个人信息。**官网下载,选择自己操作系统的版本,根据提示一直 next 就装好了。
12git config --global user.name "用户名"git config --global user.email "xxxxxx@qq.com"
**生成密钥。**一般是在 ~/.ssh 路径下,其中 id_rsa 存储私钥(不要共享私钥),id_rsa.pub 存储公钥。
1ssh-keygen -t rsa -C "xxxxxx@qq.com"
GitHub公钥配置步骤:登录 GitHub  ...




