javassist _gk0d-编程思维

前言 动态编程这个概念是相对于静态编程而言的,两者的区别简而言之,在静态编程中,类型检查是在编译时完成的,而动态编程中类型检查是在运行时完成的。所谓动态编程就是绕过编译过程在运行时进行操作的技术 在反射,动态代理中都能感受到动态编程的影子 Javassist是一个开源的分析、编辑和创建Java字节码的类库,Java 字节码存储在称为类文件的二进制文件中。每个类文件包含一个 Java 类或接口。

servlet_gk0d-编程思维

前言 在Java开发中,部署jsp网站的时候通常都是将文件打包成war包,然后再进行上传,上传后会自动进行解压,那么我们来看看war包的结构 WebContent (站点根目录) |---META-INF (META-INF文件夹) | |---MANIFEST.MF (MANIFEST.MF配置清单文件) |---WEB-INF (WEB-

反射_gk0d-编程思维

1.简介 Java反射就是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意方法和属性;并且能改变它的属性。由此反射被称为框架的灵魂, 最终操作的是字节码文件(可以读和修改字节码文件),java反射机制的相关类在java.lang.reflect.*包下 2.反射工作原理 当我们编写完一个Java项目之后,每个java文件都会被编译成一个.cla

java语言的优点_城北有个混子-编程思维

  首先, Java语言是一种纯粹的面向对象的编程语言。这样就决定了Java语言更能直接客观地反映现实生活中的对象,因此Java语言更适合大型的复杂系统开发。  其次, Java语言是一种平台无关的语言。 Java语言是一种解释型语言,它的执行需要解释器的参与,因此Java语言实现了跨平台机制,也就是说同一套代码源程序,只要具备特定平台的解释器,就可以在该平台上运行。正是由于Java语言的平台无

浅谈 java多线程_城北有个混子-编程思维

线程与进程 什么是进程?   当一个程序进入内存中运行起来它就变为一个进程。因此,进程就是一个处于运行状态的程序。同时进程具有独立功能,进程是操作系统进行资源分配和调度的独立单位。 什么是线程?   线程是进程的组成部分。通常情况下,一个进程可拥有多个线程,而一个线程只能拥有一个父进程。   线程可以拥有自己的堆栈、自己的程序计数器及自己的局部变量,但是线程不能拥有系统资源,它与其父进程的其他线

浅谈 java线程状态转换及控制_城北有个混子-编程思维

线程的状态(系统层面)   一个线程被创建后就进入了线程的生命周期。在线程的生命周期中,共包括新建(New)、就绪(Runnable)、运行(Running)、阻塞(Blocked)和死亡(Dead)这五种状态。当线程启动以后,CPU需要在多个线程之间切换,所以线程也会随之在运行、阻塞、就绪这几种状态之间切换。   线程的状态转换如图:   当使用new关键字创建一个线程对象后,该线程就处于新

浅谈 java集合_城北有个混子-编程思维

Java 集合   集合是对象的容器,定义了多个对象进行操作的常用方法,可实现数组的功能。   Java集合类库所处位置:java.util.*。   与现代的数据结构类库的常见做法一样,Java集合类库也将接口与实现分离开。 集合和数组的区别:   1.数组长度固定,集合长度不固定。   2.数组可以存储基本类型和引用类型,集合只能存储引用类型。 Java 集合框架中的接口体系 Java集

java中“==”和 equals的区别_城北有个混子-编程思维

“==”的作用:   判断两个变量栈内存中存储的值是否相等,如果相等返回true,如果不相等返回false。 有两种形式的比较需要用到比较运算符“==”,一是两个基本数据类型之间的比较,二是两个引用数据类型之间的比较。 1.两个基本数据类型之间的比较:   Java中八大基本数据类型:byte,short,int,long,double,folat,boolean,char,其中占一个字节的是b

java 中的 lambda 表达式_城北有个混子-编程思维

Lambda表达式   Lambda 表达式是 JDK1.8 的一个新特性,又称特殊的匿名内部类,可以取代大部分的匿名内部类,语法更简洁,可以写出更优雅的 Java 代码,可以极大地优化代码结构。   Lambda 表达式不会生成单独的内部类文件,但匿名内部类会。   Lambda表达式特性   ★ Lambda 表达式没有显示的方法名。   ★ Lambda 表达式很像一个函数,具有参数列表

java 中的 反射机制_城北有个混子-编程思维

概念明确 什么是类的对象?   类的对象就是:基于某个类 new 出来的对象,也称为实例对象。这个很容易理解,就不过多阐述了。 什么是类对象?   类对象就是:类加载的产物,封装了一个类的所有信息(类名、父类、接口、属性、方法、构造方法)。   包含类信息的.class文件被JVM加载到内存后,一个个的类就变成了一个个的 java.long.Class 对象,每个类有且只有一个java.lon

浅谈 arraylist 及其扩容机制_城北有个混子-编程思维

浅谈ArrayList   ArrayList类又称动态数组,同时实现了Collection和List接口,其内部数据结构由数组实现,因此可对容器内元素实现快速随机访问。但因为ArrayList中插入或删除一个元素需要移动其他元素,所以不适合在插入和删除操作频繁的场景下使用。   ArrayList的容量可以随着元素的增加而自动增加,因此不用担心ArrayList容量不足的问题。   Array

代理模式——jdk动态代理与cglib原理及对比分析_雪山上的蒲公英-编程思维

1.前言 首先回顾下代理模式(Proxy Pattern)的定义:代理模式指为其他对象提供一种代理,以控制这个对象的访问,属于结构型设计模式。其适用于在某些情况下,一个对象不适合或者不能直接引用另一个对象,而代理对象可以在客户端于目标对象之间起到中介的作用。 代理模式主要分为静态代理和动态代理两种方式,静态代理需要手动创建代理类,代理的目标对象是固定的;动态代理使用反射机制,代理的目标对象是

位运算详解_石铁大cv工程师-编程思维

位运算是什么? 计算机计算数据都是在内存中计算的,而内存中数据是以二进制形式进行存储的,位运算就是操作二进制数据的。 2.位运算概览 符号描述运算规则 & 与 两个位都为1时,结果才为1 | 或 两个位都为0时,结果才为0 ^ 异或 两个位相同为0,相异为1 ~ 取反 0变1,1变0 << 左移 各二进位全部左移若干位,高位丢弃,低位补0 >

理解递归与循环_云中不归-编程思维

一、递归与循环的对比 递归会带来大量的函数调用。这是不好的 在计算环节特别大的前提下,递归就是不好的,因为递归是先调用,再计算。 在大量计算的前提下可能会造成栈溢出(StackOverFlow) 如下图:      循环是先计算再调用,计算完后会调用的方法会从栈中抹去,最后将结果输出 能不用递归就不用递归 小计算可以考虑用递归,大计算就不考虑了 二、递归讲解 1、概念

重学java泛型_cuzzz-编程思维

系列文章目录和关于我 一丶从字节码层面看范型擦除 public class Type1<T> { private T t; } 使用jclasslib插件查看其字节码: 可以看到 t属性的类型是List<Obeject>可以知道Java泛型确实通过类型擦除来实现,所以字节码中没有类型信息。 二丶泛型信息存储于常量池 public class Type2 {

java lambda 表达式_acelin_h-编程思维

Lambda 表达式,也可称为闭包,它是推动 Java 8 发布的最重要新特性。 Lambda 允许把函数作为一个方法的参数(函数作为参数传递进方法中)。 使用 Lambda 表达式可以使代码变的更加简洁紧凑。 语法 lambda 表达式的语法格式如下: (parameters) -> expression 或 (parameters) ->{ statements; } 简

java8实现分组求和_acelin_h-编程思维

由于的美国的制裁,加速了国内很多公司产品构成去美化进程,而在软件行业的数据库层面,越来越多的公司进行去Oracle化。本人所在公司有自研内存数据库,聚合函数的支持初期没那么完善,有时一部分逻辑要从数据库转化到java实现,今天举一个java实现分组求和来代替数据库聚合函数sum()+group by的栗子 分组求和 举一个生产过程的引用例子,代码如下: /** * @Descripti