
java
Mr.madong
撒
展开
-
手撸一个动态Feign,实现一个“万能”接口调用
当调用sytem微服务的时候,传递一个feignclient的name为system进去,然后定义一个通用的方法,指定调用的url,传递的参数,就可以了呢?对于fegin调用,我们一般的用法:为每个微服务都创建对应的feignclient接口,然后为每个微服务的controller接口,一一编写对应的方法,去调用对应微服务的接口。,为调用该接口所传递的参数,这里加了@RequestBody,那对应的controller接口,接收参数也需要加上该注解。好了,具体的操作步骤,就是上面所说的了!原创 2023-02-13 16:18:33 · 4280 阅读 · 0 评论 -
定时任务@Scheduled(cron = “* * * * * *?“) 表达式详解
cron表达式格式:{秒数} {分钟} {小时} {日期} {月份} {星期} {年份(可为空)}cron表达式各占位符解释:{秒数}{分钟} ==> 允许值范围: 0~59 ,不允许为空值,若值不合法,调度器将抛出SchedulerException异常“*” 代表每隔1秒钟触发;“,” 代表在指定的秒数触发,比如”0,15,45”代表0秒、15秒和45秒时触发任务“-“代表在指定的范围内触发,比如”25-45”代表从25秒开始触发到45秒结束触发,每隔1秒触发1次“/”代表触发步进(原创 2021-12-29 14:29:46 · 2581 阅读 · 0 评论 -
微信分享功能问题-描述内容换行,导致js加载失败
jsContent内容存在换行符,导致js处理失败,解决办法,在后台接口中替换’/r/n’为空,并截取前30位weiXinJsSdk.setSharcontent(StringUtils.isNotEmpty(data.getProfiles()) ? data.getProfiles().replaceAll("\r\n", “”).substring(0, 30) : “”); //微信分享 StringBuilder sb = new StringBuilder("https:/原创 2021-12-10 14:30:30 · 1225 阅读 · 0 评论 -
es大量数据导入效率优化
项目需求中,简历信息涉及10张表,需要联查获取组装数据,实测,查询一条数据需要5s,大概算了一下总时间的话需要60个小时左右导入完成。优化方法:数据分段+多线程1、10万条数据为例,数据分成10份,每一份10000条;2、每一份数据起一个线程,10个线程,代码大致如下:public Result putAllJobUserInfo() throws ExecutionException, InterruptedException { long l = System.currentT原创 2021-10-20 18:20:40 · 1541 阅读 · 0 评论 -
自动生成mybatisplus的相关代码
导入对应的jar包,这就不用多说了package com.app.appapi.generatorcode;import com.baomidou.mybatisplus.core.toolkit.StringPool;import com.baomidou.mybatisplus.generator.AutoGenerator;import com.baomidou.mybatisplus.generator.InjectionConfig;import com.baomidou.mybati原创 2021-09-16 16:10:23 · 215 阅读 · 0 评论 -
Mybatis的SQL注入
Mybatis的SQL语句可以基于注解的方式写在类方法上面,更多的是以xml的方式写到xml文件。Mybatis中SQL语句需要我们自己手动编写或者用generator自动生成。编写xml文件时,MyBatis支持两种参数符号,一种是#,另一种是$。比如:<select id="queryAll" resultMap="resultMap"> SELECT * FROM NEWS WHERE ID = #{id}</select>#使用预编译,$使用拼接SQL。Myb原创 2021-07-13 11:55:11 · 5678 阅读 · 0 评论 -
后端处理方式:特殊格式时间转换(2020-11-27T02:58:41.000000Z)
注意:使用dealDateFormat方法处理(2020-11-27T02:58:41.000000Z)这类时间类型后会出现和实际时间相差8小时,所以需要在处理之前加8小时(使用hourAddNum3方法处理)// 使用dealDateFormat处理这种类型的时间后会缺8个小时,需要加8小时DateUtil.dealDateFormat(DateUtil.hourAddNum3("2020-11-27T02:58:41.000000Z",8))import java.text.DateForma原创 2021-03-01 18:02:11 · 850 阅读 · 6 评论 -
微信生成专属海报(专属二维码)
通过get请求获取专属海报 /** * 获取专属海报 * * @param mid 会议编号 * @param openId 邀请人唯一码 * @return */ @SneakyThrows @ApiOperation(value = "获取专属海报", notes = "获取专属海报") @RequestMapping(value = "/getOwnPoster") public ModelAn原创 2021-03-01 17:29:27 · 1106 阅读 · 0 评论 -
springboot 使用spring的线程池异步执行
springboot异步执行1.启动类在这里插入代码片@SpringBootApplicationpublic class ThreadStudyApplication { public static void main(String[] args) { SpringApplication springApplication = new SpringApplication(ThreadStudyApplication.class); springApplicat原创 2021-01-15 09:49:22 · 357 阅读 · 0 评论 -
读取*.properties文件的配置信息
FileName:配置文件的文件名(带后缀)key:想要读取配置文件中的关键字key(如下图红框中的key) public static String GetValues(String FileName, String key) throws IOException { Properties properties = new Properties(); // 使用InPutStream流读取properties文件 String path = RuntimeEnv.getInstance()原创 2020-12-15 15:27:40 · 413 阅读 · 1 评论 -
java两个项目之间通过webservice调用-源码仅供参考
项目1、本项目为struts2项目所以需要配置配置文件applicationcontex-cxf.xml配置<!-- 定义具体实现的 Bean ,这个 Bean 的定义与 Spring 普通的 Bean 定义是一样的 --> <bean id="webServiceInterface" class="com.git.easyloan.picc.fpdb.piccservice.impl.WebServiceInterfaceImpl" /> <jaxws:serv原创 2020-10-20 16:36:53 · 549 阅读 · 0 评论 -
lock和synchronized的区别
lock是一个接口,而synchronized是java的一个关键字,synchronized是内置的语言实现;(具体实现上的区别在《Java虚拟机》中有讲解底层的CAS不同,以前有读过现在又遗忘了。)synchronized在发生异常时候会自动释放占有的锁,因此不会出现死锁;而lock发生异常时候,不会主动释放占有的锁,必须手动unlock来释放锁,可能引起死锁的发生。(所以最好将同步代码块用try catch包起来,finally中写入unlock,避免死锁的发生。)lock等待锁过程中..原创 2020-09-04 15:49:26 · 633 阅读 · 0 评论 -
replaceFirst、replaceAll、replace区别
replace、replaceAll和replaceFirst是Java中常用的替换字符的方法,它们的方法定义是:replace(CharSequence target, CharSequence replacement) ,用replacement替换所有的target,两个参数都是字符串。replaceAll(String regex, String replacement) ,用replacement替换所有的regex匹配项,regex很明显是个正则表达式,replacement是字符串。re原创 2020-09-03 15:02:08 · 1430 阅读 · 0 评论 -
基本数据类型和包装数据类型的使用标准
【强制】所有pojo类属性必须使用包装数据类型;【强制】RPC方法的返回值和参数必须使用包装数据类型;【推荐】所有局部变量都推荐使用基础数据类型。这里建议我们使用包装类型,原因是什么呢?举一个扣费的例子,我们做一个扣费系统,扣费时需要从外部的定价系统中读取一个费率的值,我们预期该接口的返回值中会包含一个浮点型的费率字段。当我们取到这个值得时候就使用公式:金额*费率=费用 进行计算,计算结果进行划扣。如果由于计费系统异常,他可能会返回个默认值,如果这个字段是Double类型的话,该默认值为nul.转载 2020-09-03 14:30:56 · 533 阅读 · 0 评论 -
pojo类中的布尔类型的变量为什么不能加is
【强制】 POJO类中的布尔类型的变量,都不不要加is,否则部分框架解析会引起序列化错误。反例:定义为基本数据类型boolean isSuccess;的属性,他的方法也是isSuccess();RPC框架在反向解析的时候,会误认为对应的属性名称是“success”,而不是所定义的isSuccess,导致属性获取不到,进而抛出异常。那么,为什么会有这样的规定呢?我们看一下POJO中布尔类型变量不同的命名有什么区别吧。示例:class Model1 { private Boolean isS转载 2020-09-03 14:18:47 · 679 阅读 · 0 评论 -
自动拆装箱的那些事
哪些地方会自动拆装箱(比较有意思的是场景四)场景一、将基本数据类型放入集合类我们知道,Java 中的集合类只能接收对象类型,那么以下代码为什么会不报错呢?List<Integer> li = new ArrayList<>();for (int i = 1; i < 50; i ++){ li.add(i);}将上面代码进行反编译,可以得到以下代码:List<Integer> li = new ArrayList<>();for转载 2020-09-03 14:09:13 · 231 阅读 · 0 评论 -
springboot和springcloud及常用注解积累
@SpringBootApplication是springboot启动类,包括三个注解(@ComponentScan && @Configuration && @EnableAutoConfiguration),他们的作用分别是:@Configuration: 表示将该类作用springboot配置文件类@EnableAutoConfiguration:表示程序启动时,自动加载springboot默认的配置@ComponentScan:表示程序启动是,自动扫描当前包及子原创 2020-09-02 14:48:26 · 397 阅读 · 1 评论 -
记录一下很好用的java爬虫代码-很有意思,原理也很简单,一看就懂
**主要功能是:**爬取百度图片中的图片,一键下载功能就是这样,根据输入的关键字不同,自动下载不同的图片,当然,这些图片都是从百度图片中爬取出来的。思路随便输入一个关键字,百度图片就会展示出很多图片F12打开控制台,看源码,找到图片的地址,多看几个,会发现规律都一样。规律还是很容易简单的吧,写一个简单的正则表达式 https://.*?0.jpg 当然,可以写得更准确,但是这个已经够用,就不写那么精确了。剩下的就简单了,利用java中的URL这个类和IO流,把展示很多图片的那个页面给读出成一个翻译 2020-08-07 11:16:18 · 398 阅读 · 0 评论 -
List、Map、Set三个接口,存取元素时,各有什么特点
【Java面试题】List、Map、Set三个接口,存取元素时,各有什么特点?List与Set都是单列元素的集合,它们有一个功共同的父接口Collection。Set里面不允许有重复的元素,存元素:add方法有一个boolean的返回值,当集合中没有某个元素,此时add方法可成功加入该元素时,则返回true;当集合含有与某个元素equals相等的元素时,此时add方法无法加入该元素,返回结果...原创 2020-01-16 17:15:42 · 3881 阅读 · 0 评论 -
面试经常问的:mybatis的执行流程(比较简洁)
mybatis的执行流程在网找了好多,说的都很详细,但是太多不太简洁,看以下代码就懂了:实际流程大概就是注释的那几句话,面试的时候就这么说就行1、获取mybatis配置文件并读取配置2、获取sqlsessionfactory,并获取实现类(DefaultSqlSessionFactory)3、 通过调用会话工厂的实现类中(DefaultSqlSessionFactory)的openS...原创 2019-11-26 17:21:47 · 813 阅读 · 0 评论 -
java.net.UnknownHostException 未知的名称或服务
在服务器上部署jar包或者war包时遇见类似:“**java.net.UnknownHostException 未知的名称或服务”**这个的错误,百思不得其解,总以为是项目代码里面有哪个配置或者什么写错了,但是百度了一圈终于得知是服务器的主机地址没有绑定ip地址,也是醉了!!!!!!!!解决办法:获取主机名的命令:hostnamevi /etc/hosts添加一行:你的服务器ip地址 你...原创 2019-11-22 09:45:00 · 5053 阅读 · 0 评论 -
通俗易懂RESTful,如何设计RESTful风格API
REST – REpresentational State Transfer 直译:表现层状态转移。这个中文直译经常出现在很多文章中。尼玛,谁听得懂“表现层状态转移”,这是人话吗?那就逐个单词来理解REST名称REST – REpresentational State Transfer首先,之所以晦涩是因为前面主语被去掉了,全称是 Resource Representational Stat...原创 2019-11-18 10:30:34 · 343 阅读 · 0 评论 -
java-泛型
概述泛型在java中有很重要的地位,在面向对象编程及各种设计模式中有非常广泛的应用。什么是泛型?为什么要使用泛型?泛型,即“参数化类型”。一提到参数,最熟悉的就是定义方法时有形参,然后调用此方法时传递实参。那么参数化类型怎么理解呢?顾名思义,就是将类型由原来的具体的类型参数化,类似于方法中的变量参数,此时类型也定义成参数形式(可以称之为类型形参),然后在使用/调用时传入具体的类型(类型实参)...原创 2019-07-18 16:40:15 · 252 阅读 · 0 评论 -
理解并行和并发的区别?
学习多线程的时候会遇到一个名词:并发。这是属于操作系统中的词汇,需要了解并发和并行的区别,从网上搜集了几种说法帮助理解。并发是指一个处理器同时处理多个任务。并行是指多个处理器或者是多核的处理器同时处理多个不同的任务。并发是逻辑上的同时发生(simultaneous),而并行是物理上的同时发生。来个比喻:并发是一个人同时吃三个馒头,而并行是三个人同时吃三个馒头。并行(parallel):...原创 2019-07-18 15:19:14 · 395 阅读 · 0 评论 -
接口(interface)有什么优点,为什么要用接口
接口可以理解为:接口是一系列方法和特征的集合。(方法和特征是类的组成部分)接口只是一个框架而没有实现,因此在接口定义时不需要考虑接口中的方法如何实现。利用接口可达到实现多继承的目地。可以在不暴露对象的类的前提下,暴露对象的编程接口。不用强迫类关系在无关类中截获相似处(采用适配器就可以了)。声明想执行的一个或多个方法。那么为何要定义接口?以及接口有何意义呢?定义接口有利于代码的规范:对于一个...原创 2019-07-18 14:57:05 · 11851 阅读 · 2 评论 -
简单servlet和jdbc回顾
主要写的是doPost方法的类Servlet.javapackage com.sinsoft.service;import java.io.IOException;import java.io.Writer;import java.sql.Connection;import java.sql.DriverManager;import java.sql.PreparedStateme...原创 2019-05-06 17:33:04 · 361 阅读 · 0 评论 -
接口implements
implements是一个类实现一个接口用的关键字,它是用来实现接口中定义的抽象方法。 实现一个接口,必须实现接口中的所有方法。接口可以被多重implements,抽象类只能被单一extends接口只有定义,抽象类可以有定义和实现接口的字段定义默认为:public static final, 抽象类字段默认是”friendly”(本包可见)接口的定义:public interface Pe原创 2017-07-11 20:04:25 · 1553 阅读 · 0 评论 -
线程池如何保证所有子线程运行完再执行主线程
Java主线程等待所有子线程执行完毕在执行,其实在我们的工作中经常的用到,比如说主线程要返回一个响应用户的值,但这个值得赋值过程是由过个子线程来完成的(模拟一个实际开发的情景),所以主线程必须等待子线程执行完毕,再响应用户;否则,响应用户的是一个无意义的值。那么如何确保所有的子线程执行完毕了。一般的有如下方法:使用 ExecutorService线程池,等待所有任务执行完毕再执行主线程,awa...原创 2019-07-24 13:39:49 · 4682 阅读 · 0 评论 -
String,StringBuffer与StringBuilder的区别
执行效率问题(高 -->低):StringBuilder -----> StringBuffer -----> StringString最慢的原因:String为字符串常量,而StringBuilder和StringBuffer均为字符串变量,即String对象一旦创建之后该对象是不可更改的,但后两者的对象是变量,是可以更改的。一、Java String 类——Strin...原创 2019-07-30 15:08:05 · 268 阅读 · 0 评论 -
反射
一、反射什么是反射?反射是一种可以在编译时获得解析类的能力。简单来说,通过反射可以直接创建对象、获得对象的属性、获得对象的方法1、获得Class对象 // 反射的第一步:获取需要操作的对象的 Class // 方式一: Class pClass = new Task().getClass(); // 方式二: C...原创 2019-07-22 16:37:30 · 236 阅读 · 0 评论 -
WebService的相关概念
WebService到底是什么一言以蔽之:WebService是一种跨编程语言和跨操作系统平台的远程调用技术。所谓跨编程语言和跨操作平台,就是说服务端程序采用java编写,客户端程序则可以采用其他编程语言编写,反之亦然!跨操作系统平台则是指服务端程序和客户端程序可以在不同的操作系统上运行。所谓远程调用,就是一台计算机a上 的一个程序可以调用到另外一台计算机b上的一个对象的方法,譬如,银联提供...转载 2019-08-05 09:50:19 · 218 阅读 · 0 评论 -
一个页面上多个form表单的用json数据格式提交到后台
在项目开发中遇到多个表单需要提交到后台,而且其中包含一些table数据,所以最后经过查询资料总结出以下方法:(我用的前端框架是layui其他的思想应该是一样的)在看代码之前先说一下我的思路,因为代码写的也不是很详细,首先我们可以通过$("#countForm").serializeArray()得到序列化的form表单上的数据,但是这个数据不是标准后台可以接收的数据,所以需要通过我下面的那种手...原创 2019-08-21 15:49:02 · 1978 阅读 · 4 评论 -
if....else if...和if的区别
int a=1; if(a==1){System.out.println("1");} if(a==2){System.out.println("2");} if(a==3){System.out.println("3");} if(a==1){System.out.println("1");} else if(a==2){System.out.println("2");} ...原创 2019-05-08 10:01:10 · 454 阅读 · 0 评论 -
java基础知识简化
1、永远的“Hello World!”public class Hello{public static void main (String args[]){System.out.println("Hello World!");}}注意:public class 类的名称类的名称和文件名称保持一致,所有的类名称必须有自己的命名规范,每一个单词的开头原创 2017-06-27 20:35:36 · 421 阅读 · 1 评论 -
使用MyEclipse快速开发图形化界面
1、新建一个Java项目 2、新建一个类 **.java 3、如下图: 4、Design原创 2017-07-05 19:36:54 · 4359 阅读 · 6 评论 -
Java Swing设置主窗口位置居中方法
第一种方法int windowWidth = frame.getWidth(); //获得窗口宽int windowHeight = frame.getHeight(); //获得窗口高Toolkit kit = Toolkit.getDefaultToolkit(); //定义工具包Dimension screenSize = kit.getScreenSize(); //获取屏幕的尺寸原创 2017-07-05 19:26:09 · 991 阅读 · 0 评论 -
思考题2(人车关系)
车和人的关系:代码实现:class Member{ private int mid ; private String name ; private Car car ; private Member child ; public Member(int mid, String name){ this.mid = mid ; thi原创 2017-07-04 15:11:21 · 515 阅读 · 0 评论 -
思考题1(雇员、部门、领导)
关系一个部门有多个雇员;一个雇员有一个领导;一个雇员属于一个部门。代码实现:class Emp{ private int empno ; private String ename ; private String job ; private double sal ; private double comm ; private Emp mgr原创 2017-07-04 15:09:46 · 1443 阅读 · 0 评论 -
Java抽象类
抽象类在面向对象的概念中,所有的对象都是通过类来描绘的,但是反过来,并不是所有的类都是用来描绘对象的,如果一个类中没有包含足够的信息来描绘一个具体的对象,这样的类就是抽象类。 抽象类除了不能实例化对象之外,类的其它功能依然存在,成员变量、成员方法和构造方法的访问方式和普通类一样。 由于抽象类不能实例化对象,所以抽象类必须被继承,才能被使用。 父类包含了子类集合的常见的方法,但是由于父类本身是抽原创 2017-07-13 13:34:54 · 332 阅读 · 0 评论 -
代理设计模式
代理设计模式的概念: 是指给某一对象提供代理对象,并由代理对象控制具体对象的引用。 比如:下面的例子,王婆代理潘金莲接活,真正做的是潘金莲而不是王婆,王婆只负责前期的准备工作。在说明白点就是王婆是中间体,不负责加工处理,产生结果的是潘金莲。步骤1、//先定义一类女人interface KindWomen{ //定义这类女人能干什么 public void makeEyeWit原创 2017-07-13 12:54:13 · 433 阅读 · 0 评论