java
文章平均质量分 82
lvyuanj
1.精通 Java 语言,熟悉SSH等常见开源框架,对 JVM 、多线程、网络IO、锁机制有深入理解及实践经验;熟悉开源服务框架(Netty /Spring/ MyBatis)等
2.熟悉MySQL数据库及原理,熟练使用SQL语句及优化,对数据库事务、锁、索引有深入理解;熟悉微服务(Spring Boot/ Spring Cloud等),熟悉各种消息中间件(RabbitMQ/RocketMQ/Kafka等),熟悉Zookeeper、Etcd等服务发现和配置共享的开源项目
展开
-
Mysql-错误处理: Found option without preceding group in config file
错误位置:另存为配置my.ini文件时,将“编码”改为:UTF-8。更正:重新另存为将编码改为“ANSI”后,初始化成功。原创 2024-07-16 08:36:56 · 399 阅读 · 0 评论 -
深入理解Feign之源码解析
Feign是受到Retrofit,JAXRS-2.0和WebSocket的影响,它是一个jav的到http客户端绑定的开源项目。Feign的主要目标是将Java Http 客户端变得简单。Feign的源码地址:https://github.com/OpenFeign/feign。原创 2024-06-06 15:22:29 · 476 阅读 · 0 评论 -
如何设计权限管理模块
二、方便扩展,当系统要对新的东西进行权限控制时,我只需要建立一个新的关联表“权限XX关联表”,并确定这类权限的权限类型字符串即可。但是通过上面我们也发现问题了,如果用户的数量非常大的时候,就需要给系统的每一个用户逐一授权(分配角色),这是件非常繁琐的事情,这时就可以增加一个用户组,每个用户组内有多个用户,除了给单个用户授权外,还可以给用户组授权,这样一来,通过一次授权,就可以同时给多个用户授予相同的权限,而这时用户的所有权限就是用户个人拥有的权限与该用户所在组所拥有的权限之和。16.角色与权限关联表。原创 2024-06-06 15:20:18 · 504 阅读 · 0 评论 -
SpringBoot启动流程分析之准备应用上下文refreshContext()(八)
所以在该方法内只设置了SerializationId,该id是在准备应用上下文时调用ContextIdApplicationContextInitializer时设置的id,在setSerializationId方法中,使用id做key,new了一个弱引用对象为value,添加到了serializableFactories中,DefaultListableBeanFactory为被弱引用对象;此方法可以被调用任意次数,但将用相应的实际属性源替换为StubPropertySource一次且仅一次。原创 2024-06-05 11:04:07 · 1396 阅读 · 0 评论 -
SpringBoot启动流程分析之准备应用上下文prepareContext()(七)
1、应用上下文后置处理2、调用ApplicationContextInitializer接口实现类对象的initialize方法3、发布ApplicationContextInitializedEvent事件4、打印启动日志5、注册两个单例bean(springApplicationArguments、springBootBanner)6、设置是否允许bean定义重写7、加载主类8、发布ApplicationPreparedEvent事件。原创 2024-06-04 09:16:53 · 992 阅读 · 0 评论 -
JSON数据提取
JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式,它使得人们很容易的进行阅读和编写。同时也方便了机器进行解析和生成。适用于进行数据交互的场景,比如网站前台与后台之间的数据交互。json.loads json字符串 转 Python数据类型json.dumps Python数据类型 转 json字符串json.load json文件 转 Python数据类型json.dump Python数据类型 转 json文件。原创 2024-06-03 15:34:00 · 859 阅读 · 0 评论 -
Mybatis数据加密解密
类注解,将注解放在实体类上/*** 需要加解密的类注解*/@Inherited字段注解,将注解放在实体字段上/*** 加密字段注解*/@Inherited有了这两个注解,我们可以在我们可以标记我们要处理的实体和实体中的字段。原创 2024-06-01 09:34:53 · 1022 阅读 · 0 评论 -
SpringBoot启动流程分析之创建应用上下文AnnotationConfigServletWebServerApplicationContext(六)
会创建Log对象;调用堆信息:初始化BeanFactoryPostProcessors 的List集合调用栈信息在构造方法中实例化一个ServletContextResourcePatternResolver,参数就是AnnotationConfigServletWebServerApplicationContext在构造方法中调用的方法是子类GenericWebApplicationContext重写后的方法。原创 2024-06-01 09:29:25 · 770 阅读 · 0 评论 -
SpringBoot启动流程分析之设置系统属性spring.beaninfo.ignore、自定义banner图(五)
参考目录在resources目录下新建一个banner.txt文件或者你也可以直接放一张图片到resources目录下,名字是banner.jpg(gif|png)。我的banner.txt内容如下。可以到这个网站去生成banner图:生成banner图。原创 2024-05-30 09:47:02 · 785 阅读 · 0 评论 -
JAVA实现人工智能,采用框架SpringAI
SpringAI是AI工程师的一个应用框架,它提供了一个友好的API和开发AI应用的抽象,旨在简化AI应用的开发工序,例如开发一款基于ChatGPT的对话应用程序。项目地址文档地址目前该项目已经集成了OpenAI、Azure OpenAI、HuggingFace、Ollama等API。不过,对于集成了OpenAI接口的项目,只要再搭配One-API项目,就可以调用目前主流的大语言模型了。在介绍如何使用Spring AI开发一个对话接口之前,我先介绍下ChatGPT应用的开发原理。原创 2024-05-30 09:22:46 · 1754 阅读 · 0 评论 -
eureka 加入密码认证 springboot-admin 加入密码认证
2. application.properties 配置如下 用户名和密码。1. pom.xml 加入依赖。原创 2024-05-23 09:21:47 · 276 阅读 · 0 评论 -
SpringBoot启动流程分析之ApplicationEnvironmentPreparedEvent事件发布(四)
org.springframework.boot.SpringApplication#run(java.lang.String…)构建环境1、创建ConfigurableEnvironment对象从UML类图看出:StandardServletEnvironment 继承StandardEnvironment 实现ConfigurableWebEnvironmentStandardEnvironment 继承AbstractEnvironment 中构造函数中customizePrope原创 2024-05-23 09:18:37 · 1159 阅读 · 0 评论 -
IDEA 快捷键
IntelliJ IDEA 常用快捷键。IDEA 默认Eclipse快捷键。原创 2024-05-18 09:14:13 · 163 阅读 · 0 评论 -
SpringBoot启动流程分析之命令行参数args的封装解析(三)
补充一下:命令行参数在cmd中添加如下,先在项目根目录执行mvn clean install ,然后到target目录或者在jar包前面加上target目录都行,执行图片中的命令运行, 图片是从我后面文章复制过来的,主要是说明命令行参数在cmd中怎么加。可以看到args参数在构造方法中在作为参数放到了DefaultApplicationArguments的静态内部类Source的构造方法中进一步封装,至于下面的全局变量args放的就是原始的args参数。可以通过getSourceArgs方法得到。原创 2024-05-18 09:12:38 · 596 阅读 · 0 评论 -
SpringBoot @AllArgsConstructor和final 代替 @Autowired
Springboot官方建议使用final来修饰成员变量,然后通过构造方法来进行注入原因:final修饰的成员变量是不能够被修改的,反射那就没办法了。原创 2024-05-16 11:36:34 · 458 阅读 · 0 评论 -
SpringBoot 服务熔断降级之-Hystrix
通过断路的方式,将后续请求直接拒绝,一段时间(默认5秒)之后允许部分请求通过,如果调用成功则回到断路器关闭状态,否则继续打开,拒绝请求的服务。用户的请求故障时,不会被阻塞,更不会无休止的等待或者看到系统崩溃,至少可以看到一个执行结果(例如返回友好的提示信息) 即:及时返回服务调用失败的结果,让线程不因为等待服务而阻塞。可以优先保证核心服务。用户的请求将不再直接访问服务,而是通过线程池中的空闲线程来访问服务,如果线程池已满,或者请求超时,则会进行降级处理。,默认fallback,可设置统一的降级服务逻辑。原创 2024-05-14 09:12:28 · 716 阅读 · 0 评论 -
Java中 VO、 PO、DO、DTO、 BO、 QO、DAO、POJO的概念
再者,回到设计层面上分析,从职责单一原则来看,服务层只负责业务,与具体的表现形式无关,因此,它返回的DTO,不应该出现。首先是概念上的区别,DTO是展示层和服务层之间的数据传输对象(可以认为是两者之间的协议),而DO是对现实世界各种业务角色的抽象,这就引出了两者在数据上的区别,例如UserInfo和User(对于DTO和DO的命名规则,请参见笔者前面的一篇博文),对于一个getUser方法来说,本质上它永远不应该返回用户的密码,因此UserInfo至少比User少一个password的数据。原创 2024-05-14 09:11:03 · 560 阅读 · 0 评论 -
Skywalking 8.x部署
首先因为,具体步骤跟以上差不多,修改完mysql持久化后,需要用代理跑一个jar包,那我们直接复制agent目录到另一台服务器的随便一个目录下,这里agent它默认是向本地发送监控请求,那我们就得修改一下,同时你可以指定自己的项目名。下一步懂得都懂,那肯定就需要mysql-connector-java-8.0.16写入mysql的;将下载后的包放入oap-libs外部包内。可以修改如下your_Application为你自己的项目名。找到config目录下的。打开agent目录下的。原创 2024-05-13 09:18:24 · 399 阅读 · 0 评论 -
【Spring源码分析】ResolvableType
这些包括原始类型,参数化的类型,数组类型,类型变量和原始类型(These include raw types, parameterized types, array types, type variables and primitive types).它并不是我们平常工作中经常使用的 int、String、List、Map等数据类型,而是从Java语言角度来说,对基本类型、引用类型向上的抽象;通配符表达式,或泛型表达式,它虽然是Type的一个子接口,但并不是Java类型中的一种,表示的仅仅是类似?原创 2024-05-10 09:34:03 · 1372 阅读 · 0 评论 -
SpringBoot启动流程分析之ApplicationStartingEvent事件的发布监听流程(二)
即在创建SpringApplicationRunListener接口实现类对象的时候调用的构造方法是指定了参数类型的,为types数组中的参数类型,然后还有SpringApplication和args,这两个想的到就是构造方法的参数了。SpringApplicationRunListeners类封装了SpringApplicationRunListener接口的所有方法,方法内循环SpringApplicationRunListener实例对象集合,去调用相关方法。限制日志输出,直到日志系统完全初始化。原创 2024-05-10 09:27:39 · 1189 阅读 · 0 评论 -
SpringBoot启动流程分析之创建SpringApplication对象(一)
这些对象的initialize方法会在后面的run方法中被调用。先是判断默认的classloader中是否存在org.springframework.web.reactive.DispatcherHandler、且不存在org.springframework.web.servlet.DispatcherServlet、org.glassfish.jersey.servlet.ServletContainer,如果为true返回WebApplicationType.REACTIVE;原创 2024-05-09 09:23:51 · 792 阅读 · 0 评论 -
JAVA 双亲委派之一
不论是AppClassLoader还是ExtClassLoader还是启动类加载器,其加载类的路径都是固定的,如果我们需要加载外部类或者资源,如某路径下或网络上,这样便需要自定义类加载器自定义类加载器,只需要继承ClassLoader类,复写findClass方法,在findClass方法中调用defineClass方法即可一个ClassLoader创建时如果没有指定parent,那么它的parent默认就是AppClassLoader。原创 2024-05-09 09:15:44 · 764 阅读 · 0 评论 -
Java Spring @Import和@Enable注解
本文先通过3个demo介绍了Import注解的3种使用场景,然后结合ConfigurationClassPostProcessor类的源码分析了Import注解的使用原理。接着通过@Import注解,揭开了@Enable系列注解的神秘面纱。并结合@EnableAsync注解的源码,举例说明了@Enable注解的原理。最后解释了使用@Import和@Enable系列注解的好处。原创 2024-05-09 09:11:47 · 753 阅读 · 0 评论 -
开发注意事项
开发注意事项1. 参数验证hibernate.validator1.导入包import org.hibernate.validator.constraints.NotBlank;import javax.validation.constraints.AssertFalse;import javax.validation.constraints.Pattern;2.demo@Ge...原创 2019-10-21 17:57:01 · 153 阅读 · 0 评论 -
Java 开发3层规范
Java 开发3层规范1、Dao层 public inteface EntityDao{ public int addEntity(T t); //有返回值,可以用来在service层控制调用是新增是否成功的标志 public int updateEntity(T t); //有返回值,可以用来在service层控制调用是更新是否成功的标志 }2、Servic原创 2016-09-29 15:55:03 · 874 阅读 · 0 评论 -
主线程等待子线程运行完之后再运行
import java.util.concurrent.CountDownLatch;/** * @filename : MyThread.java * @description : 描述(中文) * @author : lvyuanjun * @create : 2016年2月24日 下午2:04:30 * * Modification原创 2016-02-25 13:51:31 · 2409 阅读 · 0 评论 -
spring3 +commons-fileupload+uploadify 上传文件
问题描述:1.在Controller中原创 2014-06-13 15:17:49 · 1035 阅读 · 0 评论 -
导入自己的jar包到maven依赖库中
导入自己的jar包到maven依赖库中 mvn install:install-file -DgroupId=javax.jms -DartifactId=jms -Dversion=1.1 -Dfile=E:\jms-1.1.jar -Dpackaging=jarjavax.jmsjms1.1 mvn instal原创 2016-07-06 14:47:45 · 5502 阅读 · 2 评论 -
spring+activemq+maven集成
1、下载ActiveMQ的最新版本是5.10.0,但由于我们内网下载存在问题,所以目前通过内网只能下载到5.9.0,下载地址:http://activemq.apache.org/activemq-590-release.html2、安装如果是在windows系统中运行,可以直接解压apache-activemq-5.9.0-bin.zip,并运行bin目录下的activemq.b原创 2016-04-24 19:23:15 · 9226 阅读 · 0 评论 -
springMVC框架中多个配置文件使用PropertyPlaceholderConfigurer读取配置properties文件
总结:如果多模块的配置文件使用PropertyPlaceholderConfigurer读取配置properties文件,如果不配置ignoreUnresolvablePlaceholders属性,则不会生成第二PropertyPlaceholderConfigurer2对象对其properties文件;配置如下:第一个配置文件spring.xmlclasspath:dbc原创 2016-04-24 19:14:06 · 3257 阅读 · 0 评论 -
java annotation
java annotation注解配置原创 2015-05-25 12:37:55 · 427 阅读 · 0 评论 -
ajax jsp 无刷新上传文件
本文实现的文件上传也是无页面刷新的,可以说是一种"类似AJAX"方法开始之前先说两句无关的,其实在ajax出现之前,web应用也可以是无刷新的,那时大多通过IFrame来做到这一点。当然Ajax出现之后,人们一窝蜂地投奔Ajax 的阵营了,iFrame 就乏人问津了。但是用iFrame来实现无刷新上传文件确实一个很好的选择。ps:Ajax技术基本上可以说是由google公司带起来的,但少G原创 2015-05-18 12:01:33 · 939 阅读 · 0 评论 -
mysql记录集中记录序号,MySQL中实现rownum功能类似的语句
1.mysql记录集中记录序号,MySQL中实现rownum功能类似的语句:原创 2014-08-22 09:56:17 · 7865 阅读 · 0 评论 -
Javascript闭包(Closure)
只为成功找方法,不为失败找借口!JavaScript学习总结(十六)——Javascript闭包(Closure) 闭包(closure)是Javascript语言的一个难点,也是它的特色,很多高级应用都要依靠闭包实现。很早就接触过闭包这个概念了,但是一直糊里糊涂的,没有能够弄明白JavaScript的闭包到底是什么,有什么用,今天在网上看到了一篇讲JavaScript闭包的文章(原文链原创 2014-09-05 14:14:35 · 490 阅读 · 0 评论 -
多线程HttpClient调用
package com.partner.supper;import org.apache.commons.httpclient.HttpClient;import org.apache.commons.httpclient.MultiThreadedHttpConnectionManager;import org.apache.commons.httpclient.methods.原创 2014-07-24 13:50:40 · 936 阅读 · 0 评论 -
MD5加密和二次加密的方法
import java.security.MessageDigest;public class MD5andKL { // MD5加码。32位 public static String MD5(String inStr) { MessageDigest md5 = null; try { md5 = MessageDigest.getInstance("MD原创 2014-07-20 16:34:23 · 7102 阅读 · 0 评论 -
Spring3MVC+Hibernate+Junit4
1.需要准备jar包,spring-test.jar 和junit4.jar2.原创 2014-07-18 17:20:08 · 992 阅读 · 0 评论 -
java中字符串 MD5密码的加密与验证
java中字符串 MD5密码的加密与验证 MD5即Message-Digest Algorithm 5(信息-摘要算法 5),用于确保信息传输完整一致。是计算机广泛使用的杂凑算法之一(又译摘要算法、哈希算法),主流编程语言普遍已有MD5实现。 将数据(如汉字)运算为另一固定长度值是杂凑算法的基础原理,MD5的前身有MD2、MD3和MD4。 本实例介绍用MD5进行加密原创 2014-05-24 19:26:02 · 6564 阅读 · 0 评论 -
spring mvc的HandlerMapping的使用之--BeanNameUrlHandlerMapping
步骤:1.在eclipse中创建动态web项目:springMVC2.加入lib包[spring3.2的jar]: 在下载好的spring3.2中libs下面选择除spring-struts-3.2.2.RELEASE.jar所有的jar文件[不包括source和doc的jar].以及common-logging.jar3.从WEB-INF/web.xml文件入手,配置spring m原创 2014-05-17 14:38:39 · 624 阅读 · 0 评论 -
Java动态代理一------动态类Proxy的使用
1.定义一个接口:package com.lvyuanj.test; /** * 定义一个HelloWorld接口 * * @author lvyuanj * */ public interface HelloWorld { public void sayHelloWorld();}原创 2014-04-06 11:37:53 · 709 阅读 · 0 评论