- 博客(103)
- 收藏
- 关注
原创 Java 读写锁 ReentrantReadWriteLock 源码分析,还没搞懂JVM
Sync() {// 初始化 readHolds 这个 ThreadLocal 属性readHolds = new ThreadLocalHoldCounter();// 为了保证 readHolds 的内存可见性setState(getState()); // ensures visibility of readHolds}…}state 的高 16 位代表读锁的获取次数,包括重入次数,获取到读锁一次加 1,释放掉读锁一次减 1state 的低 16 位代表写锁的获取次数,因为写
2021-11-13 13:39:32
271
原创 JAVA 获取当天、昨天、当月、上个月 的开始和结束日期时间,springboot常见面试题
return map;}/**获取上个月月开始时间和结束时间@return*/public static Map getLastMonthTime() throws Exception {Long startTime = getLastMonthStartTime();Long endTime = getLastMonthEndTime();DateTimeFormatter ftf = DateTimeFormatter.ofPattern(“yyyy-MM-dd HH:m
2021-11-13 13:37:49
1043
原创 Java 网络编程,java电子书pdf百度云
套接字使用TCP提供了两台计算机之间的通信机制。 客户端程序创建一个套接字,并尝试连接服务器的套接字。当连接建立时,服务器会创建一个 Socket 对象。客户端和服务器现在可以通过对 Socket 对象的写入和读取来进行进行通信。java.net.Socket 类代表一个套接字,并且 java.net.ServerSocket 类为服务器程序提供了一种来监听客户端,并与他们建立连接的机制。以下步骤在两台计算机之间使用套接字建立TCP连接时会出现:服务器实例化一个 ServerSocket 对象,
2021-11-13 13:35:41
276
原创 Java 生态圈中的嵌入式数据库,哪家强?,java编程思想和核心技术
Connection conn = DriverManager.getConnection(JDBC_URL, USER, PASSWORD);Statement statement = conn.createStatement();//删除表statement.execute(“DROP TABLE USER_INF”);//创建表statement.execute(“CREATE TABLE USER_INF(id VARCHAR(50) PRIMARY KEY, name VARCHAR(5
2021-11-13 13:34:16
536
原创 Java 对象的克隆Clone和必须了解的浅拷贝与深拷贝,java面试刷题网站
为什么要写这篇文章?因为我最近无意间看到了一些项目的代码,不管是曾经编码的人还是新接手的人, 在想完全克隆复制一个已经存在的对象,做为后续的使用,竟然都是采取了重写new一个,然后一个个属性字段值get出来再set回去,这种代码段让我不禁陷入了沉思。简单描述下场景:已经存在一个对象 sheep,里面已经有了一些字段属性值;因为业务处理需要,想整一个跟这个sheep 对象一模一样的 sheep2 出来;然后在不管是使用sheep 或者 sheep2 的时候,都互不干扰。正文====
2021-11-13 13:32:01
205
原创 MyBatis框架(二)MyBatis高级,java集合框架面试题
sql += " and a = " + a;}if(b != null){sql += " and b = " + b;}…问题:1)Java代码中出现大量if,可读性和维护性比较差2)拼接字符串容易出现错误1.2 动态SQL简介MyBatis的一个重要特性就是动态SQL,能通过条件动态生成SQL语句动态SQL包含几种标签:sqlifwheresettrimforeach1.2.1 sql标签可以通过sql标签提高sql代码的复用性定
2021-11-12 10:13:53
1154
原创 Mybatis框架技术总结(一),4个改变你编程技能的小技巧
属性id:就是对应的namespace中的方法名parameterType:传入SQL语句的参数类型resultType:指定结果映射的对象类型。SQL 获取参数: #{属性名}示例SELECT * FROM student WHERE id = #{id}1.2、新增功能<insert>:新增功能标签。属性id:就是对应的namespace中的方法名parameterType:传入SQL语句的参数类型resultType:指定结果映射的.
2021-11-12 10:11:42
1123
原创 MyBatis08:ResultMap 的结果集映射,面试官问的那些Java原理你都懂吗
1 ResultMap 的结果集映射1.1 ResultMap 的使用1.2 多对一的处理1.2.1 需求1.2.2 建表1.2.3 建立实体类1.2.4 编写对应的 Mapper 接口1.2.5 编写对应的 Mapper.xml 文件1.2.6 在 MyBatis 配置文件中绑定对应的 Mapper 接口1.2.7 利用 ResultMap 实现需求1.2.8 编写测试类测试1.3 一对多的处理1.3.1 需求1..
2021-11-12 10:07:10
125
原创 MyBatis-Plus入门之ActiveRecord模式,java多线程实战指南设计模式篇pdf
主键类型IdType 枚举类,主键定义如下:0.none 没有主键1.auto 自动增长(mysql, sql server)2.input 手工输入3.id_worker: 实体类用 Long id , 表的列用 bigint ,int 类型大小不够4.id_worker_str 实体类使用 String id, 表的列使用 varchar 505.uuid 实体类使用 String id, 列使用 varchar 50id_worker: Twitter 雪
2021-11-12 10:05:27
1333
原创 MyBatis(四):参数处理器,log4j使用教程
DefaultParameterHandler这个是唯一的ParameterHandler实现类,所以参数处理都是交给他去做的,处理参数的方法为setParameter,下面是源码@Overridepublic void setParameters(PreparedStatement ps) {ErrorContext.instance().activity(“setting parameters”).object(mappedStatement.getParameterMap().getId())
2021-11-12 10:03:19
415
原创 MD5算法底层原理,阿里出品
F(X, Y, Z) =(X&Y) | ((~X) & Z)G(X, Y, Z) =(X&Z) | (Y & (~Z))H(X, Y, Z) =XYZI(X, Y, Z)=Y^(X|(~Z))在主循环下面64次子循环中,F、G、H、I 交替使用,第一个16次使用F,第二个16次使用G,第三个16次使用H,第四个16次使用I。2.红色“田”字很简单,红色的田字代表相加的意思。3.MiMi是第一步处理后的原文。在第一步中,处理后原文的长度是512的整数倍。把原文的
2021-11-12 10:01:54
371
原创 java中接口和抽象类的区别,java编程思想第四版百度云
1. 概念======1.1 抽象类在了解抽象类之前,先来了解一下抽象方法。抽象方法是一种特殊的方法:它只有声明,而没有具体的实现。抽象方法的声明格式为:abstract void fun();抽象方法必须用abstract关键字进行修饰。如果一个类含有抽象方法,则称这个类为抽象类,抽象类必须在类前用abstract关键字修饰。因为抽象类中含有无具体实现的方法,所以不能用抽象类创建对象。下面要注意一个问题:在《JAVA编程思想》一书中,将抽象类定义为“包含抽象方法的类”,但是后面发现如果一个类
2021-11-11 22:29:15
225
原创 java中常用单词系列(一),nginx面试题汇总
| component | 组件 | command | 命令 || cube | 立方,三次方 | character | 字符 || cancel | 取消 | case | 情况 || choice | 选择 | click | 单击 || compile | 编译 | clone | 克隆 |4.D=====================================================================| draw | 绘图 | demo | 示例 |
2021-11-11 22:27:38
255
原创 JavaCPP快速入门(官方demo增强版),java开发面试常问到的问题最新
测试文件test.cpp,可见是验证MyFunc类的方法是否正常:#include#include"NativeLibrary.h"using namespace NativeLibrary;int main(){MyFunc myFunc;int value = myFunc.add(1, 2);std::cout << "add value " << value << std::endl;return 0;}执行以下命令,编译NativeLi.
2021-11-11 22:23:14
216
原创 Java8的这些集合骚操作,你掌握了嘛?,linux资料
default void forEach(Consumer<? super T> action) {Objects.requireNonNull(action);for (T t : this) {action.accept(t);}}下面这段代码遍历输出每个元素。public void testForEach(){List list = new ArrayList<>(Arrays.asList(1, 2, 3, 4, 5));list.forEach(Syste
2021-11-11 22:20:54
124
原创 Java 新特性之枚举,高级java工程师
实例化当前枚举类的多个对象,并用public static final来修饰枚举类对象。代码实现:public class SeasonTest {public static void main(String[] args) {Season spring = Season.SPRING;System.out.println(spring);}}//自定义枚举类class Season{//1.声明Season对象的属性:private final修饰//final修饰的属性必须进行.
2021-11-11 22:18:43
73
原创 Java 并发之 Executor 框架,java从入门到精通第五版电子书百度云
Executor 框架提供了两个灵活的 可配置 的线程池实现 ThreadPoolExecutor(ExecutorService) 和 ScheduledThreadPoolExecutor(ScheduledExecutorService)可以通过 Executors 的工厂方法来创建指定配置的线程池,同时通过一些其他实用的方法来使用它们另外,类 ForkJoinPool 也提供了一个 E..
2021-11-11 22:16:59
80
原创 Java 多线程 —— 生产者消费者问题,阿里hr和技术同时面
}public void setName(String name) {this.name = name;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}}假设这个Student学生类是货架,name姓名和age年龄是货架上面的商品。而flag标志则用来说明货架是否为空。消费者线程获取学生的姓名和年龄等同于消费者获取商品。生产者给学生对象赋新的姓名和年龄的值,等同于生产者生产商
2021-11-11 22:14:52
249
原创 Java 基本数据类型与包装类之间的转换,mysql数据库开发面试
3.5.2 String → 包装类1 Java 的数据类型===============================================================================Java 的数据类型可以分为两大类,即基本数据类型和引用数据类型。该思维导图的资源我也发上来了,【传送门】。其中关于 float 的精度和取值范围可以参考这篇博客,【传送门】。2 Java 的包装类======================================.
2021-11-11 22:13:27
130
原创 Java BIO NIO AIO,java面试sql题和答案
nioServerHandle = new NIOServerHandle(NIO_PORT);new Thread(nioServerHandle, “Server”).start();}}NIO服务器处理请求类package com.ruider.customerNIO;import java.net.InetSocketAddress;import java.nio.ByteBuffer;import java.nio.channels.SelectionKey;import jav
2021-11-11 22:11:13
87
原创 Java程序员:世界有三个伟大的发明「火、轮子,Java面试相关文章及Github学习资料
4.2.1 存储方式==========================================================================物理上把 topic 分成一个或多个 patition(对应 server.properties 中的 num.partitions=3 配 置),每个 patition 物理上对应一个文件夹(该文件夹存储该 patition 的所有消息和索引文 件),如下:[root@hadoop102 logs]$ lldrwxrwxr
2021-11-10 13:17:39
1845
原创 Java消息推送协议对比,java字符串相加原理
使用XMPP协议(Openfire + Spark + Smack) 简介:基于XML协议的通讯协议,前身是Jabber,目前已由IETF国际标准化组织完成了标准化工作。 优点:协议成熟、强大、可扩展性强、目前主要应用于许多聊天系统中,且已有开源的Java版的开发实例androidpn。 缺点:协议较复杂、冗余(基于XML)、费流量、费电,部署硬件成本高。xmpp技术介绍服务端组件Openfire是开源的、基于可拓展通讯和表示协议(XMPP)、采用Java编程语言开发的实时协作服务器。 Openfire安.
2021-11-10 13:13:49
78
原创 Java架构师面试问些什么?微服务之springcloud面试题(共22题,含详细解答
9、Eureka和ZooKeeper都可以提供服务注册与发现的功能,请说说两个的区别。 1) Eureka取CAP中的AP,注重可用性。Zookepper取CAP理论中的CP强调高的一致性。 ZooKeeper在选举期间注册服务瘫痪,虽然服务最终会恢复,但是选举期间不可用的 Eureka各个节点是平等关系,只要有一台Eureka就可以保证服务可用,而查询到的数据并不是最新的自我保护机制会导致 Eureka不再从注册列表移除因长时间没收到心跳而应该过期的服务 Eureka仍然能够接受新服务的注册和查询请求,但
2021-11-10 13:11:38
306
原创 Java架构师全路线总结+高频面试题(2021年最新版),快手三面面试真题
=======并发编程进阶(并发工具类实战+CAS+显示锁解析+线程池内部机制+性能优化)JVM深度剖析(理解运行时数据区+堆外内存解读+JDK+内存泄漏问题排查+Arthas+GC算法和垃圾回收器+类加载机制等)MySQL深度进阶深入Tomcat底层(线程模型+性能调优)3-5年资深:=======数据库(调优+事务+锁+集群+主从+缓存等)Linux(命令+生产环境+日志等)中间件&分布式(dubbo+MQ/kafka、Elasti
2021-11-10 13:09:18
1527
原创 Java岗大厂面试百日冲刺 - 日积月累,每日三题【Day24】
坐标:深圳作者:晓海wiley车票面试题1:说说什么分布式事务?解释一下什么是CAP?追问1:怎么理解强一致性、弱一致性和最终一致性?面试题2:了解BASE理论么?追问1:基于BASE理论,举几个实际的例子作者:`北海`面试题3:实现分布式事务一致性(Consistency)的方法有哪些?追问1:说一下二阶段提交(2PC)的原理吧每日小结本栏目Java开发岗高频面试题主要出自以下各技术栈:Java基础知识、集合容器、并发编程、JVM.
2021-11-10 13:05:23
161
原创 Java安全之反序列化回显与内存码,java程序设计项目化教程课后题答案
所以获取request的处理请求是Connector—>AbstractProtocol$ConnectoinHandler—>global—>RequestInfo—>Request—>Response而在Tomcat启动过程红会将Connector放入Service中。而现在获取完成的流程是StandardService—>Connector—>AbstractProtocol$ConnectoinHandler—>RequestGroupInf
2021-11-10 13:03:15
431
原创 Java多线程基础知识总结,2021金九银十面试季
V表示要更新的变量E表示预期值N表示新值如果V值等于E值,则将V的值设为N。若V值和E值不同,则说明已经有其他线程做了更新,则当前线程什么都不做。通俗的理解就是CAS操作需要我们提供一个期望值,当期望值与当前线程的变量值相同时,说明还没线程修改该值,当前线程可以进行修改,也就是执行CAS操作,但如果期望值与当前线程不符,则说明该值已被其他线程修改,此时不执行更新操作,但可以选择重新读取该变量再尝试再次修改该变量,也可以放弃操作,原理图如下:3、代码实例以AtomicInteger..
2021-11-10 13:01:50
166
原创 Java基础13 面向对象~static关键字和单例模式,java面试网络问题
类名.方法名(参数)注意:静态方法中可以直接调用当前类的其它静态属性和方法静态方法中不能直接调用当前类的非静态方法属性和方法非静态方法中可以直接调用当前类的静态和非静态的属性和方法静态方法中不能出现this和super关键字Java中的各种工具类都大量使用静态方法,如:Arrays、Math等静态代码块语法:static{代码块}作用:对静态的成员进行初始化特点:静态代码块只执行一次在类加载到内存后执行,是类中所有代码最先执行在第一次使用类
2021-11-10 12:59:36
79
原创 Java数组的拷贝 优化冒泡排序 二分查找,一文了解OOM及解决方案
//数组的拷贝(Arrays.copyOf())public class Test10 {public static void main(String[] args) {int[]array={1,2,3,4,5,6,7};int[] ret= Arrays.copyOf(array,array.length);System.out.println(Arrays.toString(array));System.out.println(Arrays.toString(ret));}}3.S
2021-11-09 11:54:09
126
原创 java教程——注解,linux内核编程进阶篇pdf
selfAnnotation annotation = pClass.getAnnotation(selfAnnotation.class);System.out.println(annotation.type());}}}@selfAnnotation(type = 2)class【一线大厂Java面试题解析+后端开发学习笔记+最新架构讲解视频+实战项目源码讲义】浏览器打开:qq.cn.hn/FTf 免费领取persson{private int num;public int g
2021-11-09 11:52:31
76
原创 Java持久层和控制器的封装,javassm框架教程
<?xml version="1.0" encoding="UTF-8"?><project xmlns=“http://maven.apache.org/POM/4.0.0” xmlns:xsi=“http://www.w3.org/2001/XMLSchema-instance”xsi:schemaLocation=“http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd”>
2021-11-09 11:50:19
140
原创 Java应用日志如何与Jaeger的trace关联,万字解析
再来看一段日志的代码,先调用MDC.put方法将一个键值对写入当前线程的诊断上下文map(diagnostic context map),键名和上面的模板中配置的**%X{user-id}**一模一样:@GetMapping("/test")public void test() {MDC.put(“user-id”, “user-” + System.currentTimeMillis());log.info(“this is test request”);}现在把代码运行起来,打印日志看.
2021-11-09 11:48:08
432
原创 Java并发(一),linux内核开发工程师面试
Volatile关键字Volatile关键字有两个作用线程可见防止指令重排序线程可见性线程会将操作的变量都做一份复制,保存到本地内存中去,然后根据这份复制去进行操作的多线程出现的问题在于各个线程之间不清楚操作的变量是否发生修改,因为都是根据据本地内存的副本去进行的,所以会发生,而volatie关键字实现了线程之间对变量的通信,让线程之间可以看到指定变量的情况防止指令重排序Java程序在new一个实例的时候(注意不是类加载的过程),步骤如下在堆中划分内存给对象属性加上默
2021-11-09 11:45:47
428
原创 java并发编程之源码分析ThreadPoolExecutor线程池实现原理
A {@code ThreadPoolExecutor} will automatically adjust thepool size (see {@link #getPoolSize})according to the bounds set bycorePoolSize (see {@link #getCorePoolSize}) andmaximumPoolSize (see {@link #getMaximumPoolSize}).When a new task i..
2021-11-09 11:43:36
114
原创 Java工程师的职业规划,java迭代器实现原理
如果刚毕业,就多花几年积累经验,不可能靠一门绝技吃遍天下,不要指望java 赚钱多还是c++ or .NET 赚钱多。太早。 积累经验为主。积累设计,架构,测试,交流,管理,情商等多方面的经验。然后再根据以后n年的积累做出决定。理想的情况是一专,多能。必须有一样精通的,但是要知道,所谓的高手决不是只会一项,到了他们的级别,什么都一样,看的是学习能力和推理能力。所以,先静下心来积累经验。三1、希望你能从中有所收获。**2、一定要确定自己的发展方向,并为此目的制定可行的计划。**不要说什么,“我
2021-11-09 11:41:52
219
原创 Java岗大厂面试百日冲刺 - 日积月累,每日三题【Day1,springboot书籍百度云
为了应对经常性操作字符串的场景,Java才提供了其他两个操作字符串的类 —— StringBuffer、StringBuilder。他们俩均属于字符串变量,是可改变的对象【一线大厂Java面试题解析+后端开发学习笔记+最新架构讲解视频+实战项目源码讲义】浏览器打开:qq.cn.hn/FTf 免费领取,每当我们用它们对字符串做操作时,实际上是在一个对象上操作的,这样就不会像String一样创建一些而外的对象进行操作了,速度自然就相对快了。我们一般在StringBuffer、StringBuild
2021-11-09 11:39:45
73
原创 java实现excel导入导出(jxl),java反射机制的原理和用途
loginTwo.setUsername(“小明”);loginTwo.setPassword(“123”);loginTwo.setRememberMe(false);List list = new ArrayList<>();list.add(loginOne);list.add(loginTwo);//文件保存在指定位置JxlUtil.exportExcel(pathName, title, list);//获取文件流返回给客户端DownloadFileUtil.down
2021-11-09 11:38:19
421
原创 Java基础:Object类,springboot视频开发
2.registerNatives方法private static native void registerNatives();static {registerNatives();}复制代码该方法中的静态代码块就是一个类在初始化过程中必定会执行的内容,所以在类加载的时候会执行该方法,通过该方法来注册绑定本地方法。通过以下OpenJDK中的Thread.c的部分代码···static JNINativeMethod methods[] = {{“start0”, “
2021-11-09 11:36:05
134
原创 Java垃圾回收机制小结以及优化建议,linux教程pdf百度云
之前已经了解到Java堆被主要分成三个部分,而垃圾回收主要是在Young(年轻代)和Tenured(老年代)工作。 而 年轻代 又包括 Eden(伊利园)和两个Survivor(幸存者)。 下面我们就来看看这些空间是如何进行交互的:1、首先,所有新生成的对象都是放在年轻代的Eden分区的,初始状态下两个Survivor分区都是空的。年轻代的目标就是尽可能快速的收集掉那些生命周期短的对象。2、当Eden区满的的时候,小垃圾收集就会被触发。3、当Eden分区进行清理的时候,会把引用对象移动到第一个S.
2021-11-08 11:48:46
114
原创 Java四种引用类型,linux编程技术详解
在 JDK1.2 之前,Java中的定【一线大厂Java面试题解析+后端开发学习笔记+最新架构讲解视频+实战项目源码讲义】浏览器打开:qq.cn.hn/FTf 免费领取义很传统:如果 reference 类型的数据中存储的数值代表的是另外一块内存的起始地址,就称为这块内存代表着一个引用。Java 中的垃圾回收机制在判断是否回收某个对象的时候,都需要依据“引用”这个概念。在不同垃圾回收算法中,对引用的判断方式有所不同:引用计数法:为每个对象添加一个引用计数器,每当有一个引用指向它时,计数器
2021-11-08 11:47:09
68
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人