参考:Java核心技术卷2 高级特性 第二章 对象序列化是以特殊的文件格式存储对象数据的。当存储一个对象时,这个对象所属的类也必须存储。 某些数据域是不可以被序列化的,java有一种很简单的机制来防止这种域被序列化,就是将它们标记成是transient的。如果这些域属于不可序列化的类,也需要将它们标记成transient。 如果使用的是Java语言的enum接口,就不必担心序列化,它能够正常工作。 即使构造器是私有的,序列化机制也可以创建新的对象! 为了解决这个问题,必须定义称为readResolve的特殊序列化方法。 java.nio包使内存映射变得简单,需要做的: 首先,从文件中获得一个通道(channel),通道是用于磁盘文件的一种抽象,它使我们可以访问诸如内存映射、文件加锁机制以及文件间快速数据传递等操作系统特性 需要注意的几点: 在某些系统中,文件加锁仅仅是建议性的,如果一个应用未能得到锁,它仍旧可以向被另一个应用并发锁定的文件执行写操作 在某些系统中,不能再锁定一个文件的同事将其映射到内存中 文件锁是由整个Java
8月30号快手一面 大概70min 1.自我介绍 2.你的实习经历挺丰富的,介绍一个你最熟悉的项目吧balabala,讨论了很久项目问题 3.Mysql的索引有哪些? 10.Java中的锁有什么?synchronized与Lock的区别?公平锁和非公平底层怎么实现的?AQS原理详细介绍一下? 11.怎么实现一个线程安全的计数器?用AQS,balabala。。 详细谈谈G1的优点 15.算法题,对一个链表进行归并排序,链表可能有环 9月6号二面 1.大概60min老套路,自我介绍,你对快手的了解,和抖音的区别,聊项目 2.项目中用到dubbo?
上期由于架不住来自于程序员内心的灵魂的拷问,于是我们潜心修炼,与 Java 应用监控利器 JMX 正式打了个照面。 遗漏疑问2:咱们既没有定义获取内存的方法,也没有定义获取线程等方法定义,但是 JConsole 等管理页面上展示的数据从哪儿来的呢? 好了,怀揣着疑问,正式开始我们今天的分享。 1. 2. 说一千道一万,终究还是没有解决咱们的疑问:当我们看框架源码时会发现诸多 XxMXBean 的定义,那到底 MXBean 是啥呢?MBean 与 MXBean 啥区别呢? java/lang/management/package-summary.html ? 说句掏心窝的话,我为什么要分享这个技术点?
这次介绍的主要内容是和J2SE相关的部分,经过这么多年的Java开发,以及结合平时面试Java开发者的一些经验, J2SE方面主要就是要掌握以下的一些内容。 1. 我在面试有超过3年Java经验的开发者的时候,JVM几乎就是一个必问的问题了。当然JVM不是唯一决定技术能力好坏的面试问题,但是可以佐证Java开发能力的高低。 :Java各个大版本更新提供的新特性(需要简单了解) 2. 在这里需要掌握的知识有: 1.Javac编译Java文件为class文件 2. 以上也只是简单介绍了Java基本知识点和技术点的一些看法和介绍, 这些内容都源自于动力节点Java学院的老师这些年来使用Java的一些总结, 希望给刚刚接触Java, 或者打算从Java开发的人一些经验
参考:Java核心技术卷2 高级特性 第八章 三种用于处理代码的技术: 脚本API使得调用诸如JavaScript和Groovy这样的脚本语言代码 可以使用编译器API在应用程序内部编译Java代码 注解处理器可以在包含注解的Java源代码和类文件上进行操作。 注解不会改变程序的编译方式,Java编译器对于包含注解和不包含注解的代码会生成相同的虚拟机指令。 (2)测试、日志、事务语义等代码的自动生成。 在Java中,注解是当做一个修饰符来使用的,被置于被注解项之前,中间没有分号。 语言模型API,可以使用语言模型API来分析源码级的注解,与呈现类和方法的虚拟机表示形式的反射API不同,语言模型API让我们可以根据Java语言的规则去分析Java程序。
1、原理:基于javaAgent和Java字节码注入技术的java探针工具技术原理 ? 2、原理分析 动态代理功能实现说明,我们利用javaAgent和ASM字节码技术开发java探针工具,实现原理如下: jdk1.5以后引入了javaAgent技术,javaAgent是运行方法之前的拦截器 2、支持抓取特定的代码配置,方便对配置的特定方法进行抓取,过滤出关系的代码执行耗时情况。 3、支持APP层入口方法过滤,配置入口运行前的方法进行监控,相当于监控特有的方法耗时,进行方法专题分析。 ; import java.security.ProtectionDomain; import java.util.ArrayList; import java.util.HashMap; import ) { add("com.shanhy.demo.TimeTest.sayHello"); add("com.shanhy.demo.TimeTest.sayHello2"
参考:Java核心技术卷2 高级特性 第十二章 建议只有在必需的时候才使用本地代码,特别是在以下三种情况下,也许可以使用本地代码: 你的应用需要访问的系统特性和设备是通过Java平台无法实现的 已经有大量的测试过和调试过的用另一种语言编写的代码 ,并且知道如何将其导出到所有的目标平台上 通过基准测试,发现所编写的Java代码比用其他语言编写的等价代码慢很多 Java有一个用于和本地C代码进行互操作的API,称为Java本地接口(JNI)。 将一个本地方法连接到Java程序中: (1)在Java类中声明一个本地方法 (2)运行javah以获得包含该方法的C声明的头文件 (3)用C实现该本地方法 (4)将代码置于共享类库中 (5)在Java程序中加载该类库
参考:《Java核心技术卷2 高级特性 》第三章 XML是一种非常有用的描述结构化信息的技术。 XML格式能够表示层次结构,这比属性文件的平面结构更加灵活。 解析XML文档,Java提供了两种XML解析器: 文档对象模型(Document Object Model,DOM)解析器这样的属性解析器,将读入的XML文档转换为树结构 XML简单API(Simple 使用XPath来定位信息 使用XPath执行下列操作比普通的DOM方式要简单的多: (1)获得文档节点 (2)枚举它的子元素 (3)定位某个元素 (4)定位其子节点中名字为xx的节点 (5)定位其子节点中的 text节点 (6)获取其数据 Java类库提供的流机制解析器,老而弥坚的SAX解析器和添加到Java SE6中的更现代化的StAX解析器。
参考:Java核心技术卷2 高级特性 第九章 Java技术提供了三种确保安全的机制: 语言设计特性(对数组的边界进行检查,无不受检查的类型转换,无指针算法等)。 (2)如果指定类拥有类型为另一个类的域,或者是拥有超类,那么这些类文件也会被加载(加载某各类所依赖的所有类的过程称为类的解析)。 在Oracle的Java语言实现中,扩展类加载器和系统类加载器都是用Java来实现的。它们都是URLClassLoader类的实例。 这项技术在加载来自多处的代码时很有用。 编写自己的用于特殊目的的类加载器,这使得我们可以在向虚拟机传递字节码之前执行定制的检查。 默认情况下,有两个位置可以安装策略文件: Java平台主目录的java.policy文件 用户主目录的 .java.policy文件 数字摘要 消息摘要 消息摘要是数据块的数字指纹,例如,所谓的SHA1
参考:Java核心技术卷2 高级特性 第一章 Java SE 8的流库 流提供了一种让我们可以在比集合更高的概念级别上指定计算的数据视图。 // java.util.stream.Collectors 8 // 产生一个将元素收集到列表或集中的收集器。 static <T> Collector<T,?
"13" ["title"] => string(4) "thinkphp的缓存技术" ["content"] => string(8) "thinkphp的缓存技术" => string(4) "缓存" ["thumb"] => string(0) "" ["description"] => string(7) "thinkphp的缓存技术 第二次访问 array(10) { [0] => array(12) { ["id"] => string(1) "1" ["catid"] => string(2) "13" ["title"] => string(4) "thinkphp的缓存技术" ["content"] => string(8) "thinkphp的缓存技术" => string(4) "缓存" ["thumb"] => string(0) "" ["description"] => string(7) "thinkphp的缓存技术
utf-8"); get请求方式乱码解决: 方式一:每个数据都要单独的进行转换 String uname=req.getParameter("uname"); String uname2= 解决: session技术 使用: 创建session对象 HttpSession session =req.getSession(); 存储数据到session中 session.setAttribute 2、 校验session是否失效,存储数据到session对象中或者获取session中的数据或者删除session中的数据 特点: session解决了同一个用户不同请求的数据共享问题。 使用: 创建ServletContext对象 ServletContext sc1 = this.getServletContext(); ServletContext sc2 2、通过ServletConfig对象配置局部属性(专属每个servlet) ? ?
我回想起学习Java时的学习路线,直接操作数据库是其中一项重要内容,无论使用哪种编程语言,与数据库的交互都是不可避免的。然而,直接操作MySQL数据库似乎缺乏趣味性,毕竟每天都在写SQL语句。 突然我想到了我之前写过的一系列私人知识库文章,于是我想到了向量数据库,毕竟这是当前非常热门的技术之一。如果AI离开了向量数据库,就好像失去了灵魂一样。 总的来说,相比Java,Python的SDK使用起来更加舒适。如果你曾经使用过Java SDK与平台接口对接,就会发现Python SDK上手更快。jaba
The JVM/JRE uses Java bytecode as its instruction set and each JVM needs to be compiled on and be runnable The JRE/JVM needs to be compiled for the specific hardware it runs on, though the Java bytecode definitions As you point out, the Java bytecode can be seen as a kind of abstraction layer between the Java source #2 // Field java/lang/System.out:Ljava/io/PrintStream; 3: ldc //从当前方法返回float 文章参考: Java_bytecode_instruction_listings: https://en.wikipedia.org/wiki/Java_bytecode_instruction_listings
参考:Java核心技术 卷I 基础知识 Unicode和char类型 码点是指与一个编码表中的某个字符对应的代码值。在Unicode标准中,码点采用十六进制书写,并加上前缀U+。 Java中,char类型描述了UTF-16编码中的一个代码单元。 运算符优先级 ? ? 码点与代码单元 Java字符串由char值序列组成。 大数值 如果基本的整数和浮点数精度不能够满足需求,那么可以使用java.math包中的两个很有用的类:BigInteger和BigDecimal,这两个类可以处理包含任意长度数字序列的数值。
代码的深度调用,模块层面上的依赖关系网,业务场景逻辑,非功能性需求等问题是需要相应的文档来完整地呈现的
burp collaborator client hashmap的put函数 调用hash方法 调用hashCode方法 java反射 Student student = new Student extends Shape { void draw() { System.out.println("Triangle.draw()"); } } jdk和jre的区别 jdk:java 开放工具包 java development kit 提供java的开放环境 和 运行环境 jre :java 运行环境 java runtime environment 提供java运行所需的环境 jdk包括了jre ,如果只运行java程序 安装jre即可 ,如果要编写 java程序 需要安装 jdk java访问修饰符 default 默认访问修饰符 在同一包内 可见 private
本周我们的Java漫谈从一个段子说起。话说有一个老程序退休了,在家闲着没事便开始学习写毛笔字,焚香,研墨,铺纸。站在薄如蝉翼白似雪的宣纸面前,提笔闭目。 “Hello World”示范程序最早出现于1972年,由贝尔实验室成员布莱恩·柯林汉撰写的内部技术文件《"A Tutorial Introduction to the Language B" 》之中。 绕了一圈,我们再把话题转回来,在Java中,Hello World又是什么样子的呢? 这就是一个Java里面Hello World的一句常用到的输出语句,之所以说它常用,是在程序刚开始跑通的时候会使用它来输出提示,也会在程序报错的时候用它的变形模式来输出错误信息。 稍微多看这句话2-3遍,会发现这句话会有几个特征。 首先,hello world只是这条显示语句的一个部分,它被双引号引用了。
注意: 可以把一个较小的整数值(在int类型的表数范围以内)直接赋给一个long类型的变量,这并不是因为Java会把这个较小的整数值当成long类型来处理,Java依然把这个整数值当成int类型来处理, 需要说明的是,Java的var与JavaScript的var截然不同,JavaScript本质上是弱类型语言,因此JavaScript使用var定义的变量并没有明确的类型;但Java是强类型语言,因此Java Java引入var属于“向潮流投降”—由于Java本质上是强类型语言,因此使用var定义局部变量只是形式的改变,这些变量依然有明确的类型。 当程序第一次使用某个字符串直接量时,Java会使用常量池(constant pool)来缓存该字符串直接量,如果程序后面的部分需要用到该字符串直接量时,Java会直接使用常量池中的字符串直接量。 int a=5; int b=4; int c=a++---b*++a/b-->>2%a--;,c的值是多少? 太恐怖了,这种东西。我要是出题人就不出这种题
; import java.io.IOException; import java.net.URL; import java.net.URLConnection; import java.util.regex.Matcher i)Java)(? =8|11|17)"; Pattern pattern = Pattern.compile(regex); Matcher matcher = pattern.matcher("Java8,java,jaVa4 "); while (matcher.find()) { System.out.println(matcher.group());//==>Java,jaVa } //? 格式化 SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy年MM月dd日"); String str2 = sdf2.format(date1); System.out.println