🛠️ 开发工具与插件
未读Maven 添加 IntelliJ IDEA 项目文件在使用 Maven 构建 Java 项目时,若需生成与 IntelliJ IDEA 兼容的项目文件,可以通过以下命令进行: 1mvn idea:idea idea:idea 插件的目标执行了另外三个目标:project、module 和 workspace。 idea:project: 用于生成 IntelliJ IDEA 项目的配置文件(*.ipr)。 idea:module: 用于生成 IntelliJ IDEA 模块的配置文件(*.iml)。 idea:workspace: 用于生成工作区文件(*.iws),此目标在大多数情况下不会直接使用,因为默认会包含在 idea:idea 中。 删除指定依赖如果你想从本地仓库中删除特定版本的依赖,可以使用以下命令: 1mvn com.xxx:xxx-assist-maven-plugin:2.0.0-SNAPSHOT:delete-v5-dependence -Dversion=1.7.1 或者首先下载指定的依赖项,然后删除它: 123456mvn dependency: ...
🧩 开发框架与中间件
未读spring boot 之所以能够自动配置 bean,是通过基于条件来配置 Bean 的能力实现的。 常用的条件注解如下 1234567891011121. @ConditionalOnBean:当容器里存在指定的Bean的条件下2. @ConditionalOnClass:当前类路径下存在指定的类的条件下3. @ConditionalOnExpression:基于SpEL表达式作为判断条件4. @ConditionalOnJava:基于JVM版本作为判断条件5. @ConditionalOnJndi:在JNDI存在的条件下查找指定的位置6. @ConditionalOnMissingBean:当容器里没有指定的Bean的条件下7. @ConditionalOnMissingClass:当前类路径下没有指定的类的条件下8. @ConditionalOnNotWebApplication:当前项目不是web项目的条件下9. @ConditionalOnProperty:指定的属性是否有指定的值的条件下10. @ConditionalOnResource:类路径下是否有指定的值11 ...
🧱 后端开发与架构
未读一、SQL Mode 设置查看当前 SQL 模式为了查看 MySQL 当前使用的 SQL 模式,请执行以下查询: 1SELECT @@sql_mode; 修改 SQL 模式 会话级别设置若要在当前会话中临时修改 SQL 模式,可使用如下命令:1SET sql_mode = 'STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION'; 全局设置若要永久更改 SQL 模式,需要在 MySQL 的配置文件(如 my.cnf 或 my.ini)中添加以下内容:1sql-mode = "STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION" 二、修改数据库和表的字符编码修改整个数据库的 ...
🛠️ 开发工具与插件
未读Apache Maven 是一个项目管理和构建自动化工具,主要用于 Java 项目的构建、依赖管理和文档生成。它通过定义项目的配置文件 pom.xml(Project Object Model),使开发者能够以声明式的方式描述他们的项目,从而简化了构建过程。 Maven 最重要的特性之一是它的插件系统,提供了丰富的功能来满足开发中各种需求,如编译代码、运行测试、打包和部署应用等。此外,它还支持多种项目类型,包括 Java Web 应用、单元测试等,并且可以集成持续集成工具(例如 Jenkins)以实现自动化构建。 安装 MavenLinux 系统: 下载最新的 Maven 发行版: 1wget https://downloads.apache.org/maven/maven-3/3.3.3/binaries/apache-maven-3.3.3-bin.tar.gz 解压下载的文件: 12tar -xzf apache-maven-3.3.3-bin.tar.gzmv apache-maven-3.3.3 /opt/maven 设置环境变量(编辑 ~/.bashrc 或 / ...
🧱 后端开发与架构
未读原文链接作者: Jakob Jenkov译者: fangqiang08(fangqiang08@gmail.com) 利用 Try-Catch-Finally 管理资源(旧的代码风格)在 java7 以前, 程序中使用的资源需要被明确地关闭, 这个体验有点繁琐. 下面的方法读取文件, 然后用 System.out 打印: 1234567891011121314151617private static void printFile() throws IOException { InputStream input = null; try { input = <strong>new FileInputStream("file.txt")</strong>; int data = &l ...
🛠️ 开发工具与插件
未读说到 log4j, 基本人人都知道, 但是 logback, 估计用的人不多, 其实这两个都是 sl4j 的实现, 而且是一个作者写的. logback 比 log4j 更加好用, 而且效率更高. 如何配置 logback. 12345<dependency> <groupId>ch.qos.logback</groupId> <artifactId>logback-classic</artifactId> <version>1.1.3</version></dependency> 配置文件: logback.xml 123456789101112131415161718192021222324252627282930313233343536373839<?xml version="1.0" encoding="UTF-8" ?><configuration scan="true" sc ...
🛠️ 开发工具与插件
未读123456789101112131415161718192021222324### set log levels ###log4j.rootLogger = debug , stdout , D , E### 输出到控制台 ###log4j.appender.stdout = org.apache.log4j.ConsoleAppenderlog4j.appender.stdout.Target = System.outlog4j.appender.stdout.layout = org.apache.log4j.PatternLayoutlog4j.appender.stdout.layout.ConversionPattern = %d{ABSOLUTE} %5p %c{ 1 }:%L - %m%n### 输出到日志文件 ###log4j.appender.D = org.apache.log4j.DailyRollingFileAppenderlog4j.appender.D.File = logs/log.loglog4 ...
🧱 后端开发与架构
未读在 Java 中,我们可以使用 JDBC(Java Database Connectivity)来连接、查询和操作关系型数据库。以下是一个详细的指南,展示如何进行基本的数据库操作,包括连接到 MySQL 服务器、执行 SQL 语句以及预处理数据。 数据库操作的基本步骤:1. 导入必要的包1import java.sql.*; 2. 定义一个主类来初始化和测试数据库操作基本的数据库连接与查询:首先,我们定义一些基本的变量用于存储数据库的信息。 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253public class DataBasePractice { public static void main(String[] args) { Connection con = null; // MySQL驱动程序名 String driver = "com.mysql ...
🧱 后端开发与架构
未读Logging SystemLog4j 较早出现的比较成功的日志系统是 Log4j.Log4j 开创的日志系统模型(Logger/Appender/Level)行之有效, 并一直延用至今. JUL JDK1.4 是第一个自带日志系统的 JDK, 简称(JUL).JUL 并没有明显的优势来战胜 Log4j, 反而造成了标准的混乱 —— 采用不同日志系统的应用程序无法和谐共存. Logback是较新的日志系统.它是 Log4j 的作者吸取多年的经验教训以后重新做出的一套系统. 它的使用更方便, 功能更强, 而且性能也更高.Logback 不能单独使用, 必须配合日志框架 SLF4J 来使用. Logging FrameworkJCL (Jakarta Commons Logging) 这是目前最流行的一个日志框架, 由 Apache Jakarta 社区提供.Spring 框架、许多老应用都依赖于 JCL. SLF4J 这是一个最新的日志框架, 由 Log4j 的作者推出.SLF4J 提供了新的 API, 特别用来配合 Logback 的新功能. 但 SLF4J ...
sendRedirect()方法和 forward() 方法的区别sendRedirect() 方法原理 客户端发送请求, Servlet1 做出处理. Servlet1 调用 sendReadirect() 方法, 将客户端的请求重新定位到 Servlet2. 客户端浏览器访问 Servlet2. Servlet2 对客户端浏览器做出响应. forward() 方法原理 客户端发送请求, Servlet1 做出处理. Servlet1 调用 forward() 方法, 将请求转发给 Servlet2 来处理请求, 为客户端服务. Servlet2 对客户端浏览器做出响应. 区别 定位与转发 sendRedirect(): 重新定位到另外一个资源来处理请求, URL 会重新定位, 让客户端重新访问另外一个资源. forward(): 转发到另外一个资源来处理请求. URL 不会变化. 隐藏了处理对象的变化. 处理请求的资源的范围sendReadirect(): 可以跨 WEB 应用程序和服务器重新定位资源来处理请求.forward(): 只能在应用程序内部转发. en ...
🧱 后端开发与架构
未读代码优化, 一个很重要的课题. 可能有些人觉得没用, 一些细小的地方有什么好修改的, 改与不改对于代码的运行效率有什么影响呢?这个问题我是这么考虑的, 就像大海里面的鲸鱼一样, 它吃一条小虾米有用吗?没用, 但是, 吃的小虾米一多之后, 鲸鱼就被喂饱了.代码优化也是一样, 如果项目着眼于尽快无 BUG 上线, 那么此时可以抓大放小, 代码的细节可以不精打细磨.如果有足够的时间开发、维护代码, 这时候就必须考虑每个可以优化的细节了, 一个一个细小的优化点累积起来, 对于代码的运行效率绝对是有提升的. 代码优化的目标是 减小代码的体积 提高代码运行的效率 代码优化细节:1. 尽量指定类、方法的 final 修饰符带有 final 修饰符的类是不可派生的. 在 Java 核心 API 中, 有许多应用 final 的例子, 例如 java.lang.String, 整个类都是 final 的.为类指定 final 修饰符可以让类不可以被继承, 为方法指定 final 修饰符可以让方法不可以被重写. 如果指定了一个类为 final, 则该类所有的方法都是final 的.Java 编译 ...
🧱 后端开发与架构
未读持久代持久代中包含了虚拟机中所有可通过反射获取到的数据, 比如 Class 和 Method 对象. 不同的 Java 虚拟机之间可能会进行类共享, 因此持久代又分为只读区和读写区. JVM 用于描述应用程序中用到的类和方法的元数据也存储在持久代中. JVM 运行时会用到多少持久代的空间取决于应用程序用到了多少类. 除此之外, Java SE库中的类和方法也都存储在这里. 如果 JVM 发现有的类已经不再需要了, 它会去回收(卸载)这些类, 将它们的空间释放出来给其它类使用. Full GC 会进行持久代的回收. JVM 中类的元数据在 Java 堆中的存储区域. Java 类对应的 HotSpot 虚拟机中的内部表示也存储在这里. 类的层级信息, 字段, 名字. 方法的编译信息及字节码. 变量 常量池和符号解析 持久代的大小 它的上限是 MaxPermSize, 默认是 64M Java 堆中的连续区域 : 如果存储在非连续的堆空间中的话, 要定位出持久代到新对象的引用非常复杂并且耗时. 卡表(card table), 是一种记忆集(RememberedSet), 它用来 ...
🛠️ 开发工具与插件
未读为什么使用 Junit我们以前测试一个类的步骤: 新建一个 test 类 创建 main() 方法 在 main 类 new 一个我们要测试的类的实例 然后调用这个类的方法, 输出一个结果 当测试的类有多个方法时, 我们必须调用所有的方法, 为了不让上一次的方法调用对下一次的调用产生影响, 我们会在 new 一个实例出来, 或者将上一次的代码注释掉.则将造成整个测试代码的混乱.这个时候我们希望如果可以有多个 mian()方法, 每个 main() 方法内只调用一个需要测试的类的方法,这样显得调理清晰. 但是这是不可能的, 一个程序只能有一个入口 这个时候, Junit 站了出来, 它大声的说它可以做到. 怎么使用 Junit主要步骤: 新建一个 java 项目 在 src 下新建一个 util 包, 编写一个普通的类 12345678910111213141516171819202122232425262728/** * 对名称, 地址等字符串格式的内容进行格式检查 * 或者格式化的工具类 * @author CodeA */public class WordDeanU ...
🧩 开发框架与中间件
未读Hibernate 的理解 面向对象设计的软件内部运行过程可以理解成就是在不断创建各种新对象、建立对象之间的关系, 调用对象的方法来改变各个对象的状态和对象消亡的过程,不管程序运行的过程和操作怎么样, 本质上都是要得到一个结果, 程序上一个时刻和下一个时刻的运行结果的差异就表现在内存中的对象状态发生了变化. 为了在关机和内存空间不够的状况下, 保持程序的运行状态, 需要将内存中的对象状态保存到持久化设备和从持久化设备中恢复出对象的状态,通常都是保存到关系数据库来保存大量对象信息. 从 Java 程序的运行功能上来讲, 保存对象状态的功能相比系统运行的其他功能来说, 应该是一个很不起眼的附属功能,java 采用 jdbc 来实现这个功能, 这个不起眼的功能却要编写大量的代码, 而做的事情仅仅是保存对象和恢复对象, 并且那些大量的 jdbc 代码并没有什么技术含量,基本上是采用一套例行公事的标准代码模板来编写, 是一种苦活和重复性的工作. 通过数据库保存 java 程序运行时产生的对象和恢复对象, 其实就是实现了 java 对象与关系数据库记录的映射关系, 称为 ORM(即 Obj ...















