智慧·快乐·成长——科技造福于人。

智乐兔

企业级Java

  • 如何解决emoji符号存储到mysql数据库乱码的问题

    如何解决emoji符号存储到mysql数据库乱码的问题

     出现乱码问题的原因是MySql的utf-8编码只支持3个字节的数据,而移动端的emoji是四个字节的数据,如果直接往utf-8编码的数据库中插入表情,就会报上面的错误。 第一种解决办法是数据库的编码修改,修改为utf8的超集utf8mb4支持4个字节的字符。   utf8mb4编码兼容utf-8,是utf-8编码的超集,能存储4字节的表情字符。   1,将存储表情字符的数据库表改为utf8mb4,   2,utf8mb4支持的数据库版本最低为5.5.3+。   3,修改mysql配置文件my.cnf(windows为my.ini)。     [client]     port=3306    ...

    查看全文

  • 如何避开java的动态代理用反射机制优雅地解耦

    如何避开java的动态代理用反射机制优雅地解耦

    基于java反射机制实现的动态代理总是在调用代码里带着被代理类的小尾巴,比如:UserService proxy = (UserService) Proxy.newProxyInstance(classLoader, interfaces, logHandler); 这里的UserService就是被代理类的接口,既然要封装被代理类的内部实现,那么还要拿他们的接口类写到主调方代码里就不干不净了,主调方每次调用时都要考虑被代理方有没有变更,变更了还要改调用逻辑,着实鸡肋。下面的代码提供一种完全封装被代理类的演示方案,调用方在代码层面不需要使用被代理类的接口来接收返回,这就给调用方和被调用方实现 ...

    查看全文

  • 使用spring约定的java代码格式开发应用平台需要注意的点

    使用spring约定的java代码格式开发应用平台需要注意的点

    一、gradle组织下的项目目录如下: spring-boot –主项目名称 –.github –github目录 .gradle –执行gradle wrapper包装器后生成的gradle运行缓存 .idea –idea的配置 build –编译扫描配置 buildSrc –springboot使用gradle编译依赖的类和库,配置文件,项目编译结果 ci –持续部署相关配置 eclipse –恶心的eclipse相关配置 git –官网拉下来的,git相关配置吧 gra ...

    查看全文

  • springboot采用gradle后源码的编译针对Maven做了哪些兼容处理

    springboot采用gradle后源码的编译针对Maven做了哪些兼容处理

    springboot源码针对Maven做了一些默认处理,分别是对项目应用Maven发布能力、添加Maven仓库支持能力、默认创建Maven格式发布声明。 通过这些默认处理,如果触发了Jar打包任务,则对项目的java组件执行Maven发布操作,这些底层的操作是由gradle实现的,包括对Jar任务的定义,对java相关文件的定义。 默认支持三种类型:java类的jar包、web类的war包和Java平台级组件。gradle的世界观就是面向开发环境定义世界并驱动世界。这样下去,将出现具有”自省”能力的编译系统。 /** * A plugin applied to ...

    查看全文

  • springboot源码编译、发布和文档的处理方式

    springboot源码编译、发布和文档的处理方式

    springboot源码编译、发布和文档的处理方式是事先约定在程序里面的。springboot对其源码的处理默认执行了三次约定应用,他们分别是Java开发环境的约定、基于Maven的代码发布约定和基于ASCIIdoctor的文档生成约定。 对应的插件类源码如下: /** * Plugin to apply conventions to projects that are part of Spring Boot's build. * Conventions are applied in response to various plugins being applied. * ...

    查看全文

  • springboot编译任务里有关资源抽取的实现逻辑

    springboot编译任务里有关资源抽取的实现逻辑

    资源抽取是指对类似*.properties等属性配置资源文件的提取,springboot团队对springboot源码的资源提取机制做了专门的实现。 springboot编译任务对资源抽取的实现逻辑: public class ExtractResources extends DefaultTask { /** 定义一个占位符助手:前后缀分别为${、} */ private final PropertyPlaceholderHelper propertyPlaceholderHelper = new PropertyPlaceholderHelper("${", "}"); ...

    查看全文

  • springboot2.5编译时对java程序的约定处理

    springboot2.5编译时对java程序的约定处理

    package org.springframework.boot.build; class JavaConventions { void apply(Project project) {// 任务执行过程,对java基础插件展开一系列处理 project.getPlugins().withType(JavaBasePlugin.class, (java) -> { project.getPlugins().apply(TestFailuresPlugin.class); // 测试失败处理 configureSpringJavaFormat(projec ...

    查看全文

  • 分析springboot2.5启动gradle编译任务的启动器类

    分析springboot2.5启动gradle编译任务的启动器类

    这是springboot2.5启动gradle编译任务的启动器类: package org.springframework.boot.build.starters; import java.io.File; import java.io.FileReader; import java.io.FileWriter; import java.io.IOException; import java.io.PrintWriter; import java.util.Arrays; import java.util.HashMap; import java.util.Map; im ...

    查看全文

  • 一张图看懂springboot使用gradle兼容maven的构建实现

    一张图看懂springboot使用gradle兼容maven的构建实现

    这是springboot最新版对gradle的封装扩展,主要是兼容了Maven的构建。仔细看这张图,可以发现中心包是starters启动器包。通过启动器做了3件事: 1.部署操作 主要是针对maven格式做的兼容实现。这里面包括Maven仓库的定义和Maven插件的定义,还定义了bom和约束,然后定义了自动配置。 2.设置classpath 主要是确定所有类和资源存在的路径。 3.约定设置 首先是java类约定,包括可选包的设置、测试类和资源配置文件的提取。 其次是Maven格式的发布约定设置,保证输出Maven仓库兼容的构建。 最后是文档模块的约定设置,包括组件工厂和脚手架的设置。 另外, ...

    查看全文

  • java.lang.NoClassDefFoundError: com/sun/image/codec/jpeg/ImageFormatException异常解决

    java.lang.NoClassDefFoundError: com/sun/image/codec/jpeg/ImageFormatException异常解决

    原因是openjdk是有问题的,缺jar和类。 解决办法: 1、将标准JDK中的rt.jar加到项目的lib目录中。 这种方案可能存在兼容问题,直接的方法是按照正式版jdk,早期版本的jdk1.8,但是不建议商用。 2、替换jar,将jcaptcha-1.0.jar 替换成jcaptcha-all-1.0-RC6.jar。 修改配置文件: <bean id="captchaService" class="com.octo.captcha.service.multitype.GenericManageableCaptchaService"> <constructor- ...

    查看全文

  • centos8 安装jdk1.8需要注意的问题

    centos8 安装jdk1.8需要注意的问题

    1.不要安装openjdk,这玩意有毛病(缺jar,具体可以拿标准版比对),1.8jdk直接从oracle下载RPM安装包,下载路径:https://www.oracle.com/java/technologies/javase/javase-jdk8-downloads.html。 找到Linux x64版本下载 下载时需要登录oracle账户。 2.上传到centos 8 服务器上,开始安装前,卸载掉可能存在的java残余: 检查命令: rpm -qa | grep jdk rpm -qa | grep gcj rpm -qa | grep java 清除命令: rpm -qa | gr ...

    查看全文

  • gradle.properties配置参数解释

    gradle.properties配置参数解释

    #该资源文件放在主项目根目录,意味着主宰主项目的配置,如果在运行时加上相关配置参数,这里会被覆盖掉,配置的执行原则是就近原则 version=2.4.1-SNAPSHOT # 当设置为 true 时,Gradle 将重用来自任何以前生成的任务输出 org.gradle.caching=true # 当设置为 true 时,每个任务的单个输入属性哈希和生成缓存密钥将记录在控制台上,就是开启缓存的debug # org.gradle.caching.debug=true # 启用按需孵化配置,其中 Gradle 将尝试仅配置必要的项目。 #org.gradle.configureondemand= ...

    查看全文