
java
文章平均质量分 94
powerfuler
这个作者很懒,什么都没留下…
展开
-
线程池实现原理
创建线程有哪几种方式一、继承Thread类创建线程类 (1)定义Thread类的子类,并重写该类的run方法,该run方法的方法体就代表了线程要完成的任务。因此把run()方法称为执行体。 (2)创建Thread子类的实例,即创建了线程对象。 (3)调用线程对象的start()方法来启动该线程。 二、通过Runnable接口创建线程类 (1)定义runnable接口的实现类,并重写该接口的run()方法,该run()方法的方法体同样是该线程的线程执行体。 ..转载 2021-12-05 13:08:56 · 436 阅读 · 0 评论 -
网络IO的通信原理及Reactor模型
网络IO的通信原理首先,对于TCP通信来说,每个TCP Socket的内核中都有一个发送缓冲区和一个接收缓冲区,接收缓冲区把数据缓存到内核,若应用进程一直没有调用Socket的read方法进行读取,那么该数据会一直被缓存在接收缓冲区内。不管进程是否读取Socket,对端发来的数据都会经过内核接收并缓存到Socket的内核接收缓冲区。read所要做的工作,就是把内核接收缓冲区中的数据复制到应用层用户的Buffffer里。进程调用Socket的send发送数据的时候,一般情况下是将数据从应用层用户的原创 2021-11-16 09:55:48 · 1277 阅读 · 0 评论 -
java核心知识点总结篇-JAVA 基础篇
5.1.1. JAVA 异常分类及处理5.1.1.1. 概念如果某个方法不能按照正常的途径完成任务,就可以通过另一种路径退出方法。在这种情况下会抛出一个封装了错误信息的对象。此时,这个方法会立刻退出同时不返回任何值。另外,调用这个方法的其他代码也无法继续执行,异常处理机制会将代码执行交给异常处理器。5.1.1.2. 异常分类Throwable 是 Java 语言中所有错误或异常的超类。下一层分为 Error 和 ExceptionError\1. Error 类是指.原创 2021-11-06 14:19:07 · 440 阅读 · 0 评论 -
Spring+Quartz框架实现定时任务(集群,分布式)
Spring+Quartz框架实现定时任务(集群,分布式)1、定时任务的必要性:定时任务在应用中的重要性不言而喻,大多是应用,特别是金融应用更是离不开定时任务,能用定时任务来处理异常订单,完成跑批,定时活动(双11)等。在初期应用的访问量并不是那么大,一台服务器完全满足使用,但是随着用户量、业务量的逐日增加,应用中会有很多定时任务需要执行,一台服务器已经不能满足使用,原创 2017-09-02 10:19:14 · 14363 阅读 · 3 评论 -
二维码生成以及扫一扫解析二维码原理
二维码生成以及扫一扫解析二维码原理1、生成URL,确定要通过二维码传达的信息,也就是通过扫一扫可以获得地址和数据信息1、// 得到随机数,用随机数得到签名,签名验证身份String ranString = RandomStringUtils.randomAlphanumeric(10);2、其他参数信息,在二维码中存储的信息非常有限,所有在微信,支付宝的二维原创 2017-09-01 23:46:57 · 21692 阅读 · 2 评论 -
Connection closed prematurely
Connection closed prematurely原因:提交参数,http请求链接过长导致网关报错。生产环境出现的问题,在请求一个提交接口报的错,点进去看是netty报的错。各种官网搜索,都没找到合适解决方案,明明设置最大的请求连接长度为10M,但是4Mnetty就报错,是spring网关缺陷。相关网关缺陷,参考:https://github.com/spring-cloud/spring-cloud-gateway/issues/473https://github.com/reacto原创 2020-10-13 10:56:51 · 9110 阅读 · 0 评论 -
Java8新特性(lambda表达式):List分组、List转Map、String转List、mapKey转list、循环map、过滤Filter、List转String
利用java8新特性,可以用简洁高效的代码来实现一些数据处理List分组、List转Map、String转List、mapKey转list、循环map、过滤Filter、List转String1、分组List里面的对象元素,以某个属性来分组,将属性相同的放在一起://List 以名称分组 Map<String, List<User>>public static void testGroupBy1(List<User> users) { Ma...原创 2020-08-31 18:13:34 · 23266 阅读 · 0 评论 -
Flyway环境搭建
文章目录1. 基础环境搭建2. flyway环境搭建1. 基础环境搭建点击获取下载flyway的包(以6.4.2为例)windows: flyway-commandline-6.4.2-windows-x64.ziplinux: flyway-commandline-6.4.2-linux-x64.tar.gz解压包,所得的目录为flyway的安装目录把flyway/6.4.2/patch目录里的lib目录拷贝到解压目录里进行覆盖,删除掉安装目录下的lib/community/flywa原创 2020-07-02 15:06:22 · 2079 阅读 · 0 评论 -
javax.mail.AuthenticationFailedException: 535 Login Fail. Please enter your authorization code to l
解决使用邮箱登陆出现的异常问题:javax.mail.AuthenticationFailedException: 535 Login Fail. Please enter your authorization code to l因为在其他地方的登陆需要的是加密的授权码,不使用明码登陆。打开连接报错里面的:http://service.mail.qq.com/cgi-bin/help?subtype=1&&id=28&&no=1001256链接登陆自己的.原创 2020-06-03 15:49:07 · 10713 阅读 · 3 评论 -
Missing artifact org.csource:fastdfs-client-java:jar:1.27-SNAPSHOT
解决Maven无法下载fastdfs-client-java依赖,Dependency 'org.csource:fastdfs-client-java:1.27-SNAPSHOT' not found.因为fastdfs-client-java-1.27-SNAPSHOT.jar这个依赖包在maven中央仓库是没有的,需要自己编译源码成jar本地安装到maven 的本地仓库,安装完以后就能正常引用了(注意:本地必须安装了Maven,并配置好Maven环境变量)<dependenc...原创 2020-05-29 17:56:15 · 3443 阅读 · 1 评论 -
工具类-数字金额转成大写
数值金额转成大写 /** * 数字金额大写转换,思想先写个完整的然后将如零拾替换成零 要用到正则表达式 */ public static String digitUppercase(double n) { String fraction[] = { "角", "分" }; String digit[] = { "零", "壹", "贰", "叁", "肆", "伍", "陆", "柒", "捌", "玖" }; String unit[][] = { { "元", "万", "亿原创 2020-05-28 15:34:34 · 348 阅读 · 0 评论 -
工具类-把对象转为字符串导出为json文件
把对象转为字符串导出为json文件根据前段传值获取数据对象,转成String,然后就可以在浏览器上面导出json或者TXT文件,备导入数据使用。public class OpExportFileUtil { private static final Logger LOGGER = LoggerFactory.getLogger(OpExportFileUtil.class); private HttpServletResponse response; private H原创 2020-05-28 15:27:47 · 562 阅读 · 0 评论 -
工具类-根据id生成id随机码
根据id生成id随机码使用场景:需要把id信息暴露出来,但是id又过长,而且不安全,MD5摘要又太长,需要根据id生成短的标识,就用了随机码。1、随机码位数CODE_LEN为最小长度,如果id很长,随机码的位数也会增加2、如果id小于CODE_LEN位,则不同id可能会生成一样的随机码,在短的id后面补0,保证原始id长度大于CODE_LEN长度3、支持id转随机码,随机码转id的操作4、用于生成固定随机码id最小长度要大于CODE_LEN,不足补05、代码来源网络,经修改测试后的修复代码原创 2020-05-28 15:17:51 · 1257 阅读 · 0 评论 -
工具类-4种方式解锁获取两个日期之间的间隔天数
工具类-4种方式解锁获取两个日期之间的间隔天数java8的那种方式,没有测试,应该也是可以的。public class TestDifferentDays { public static void main(String[] args) { int differentDays1 = differentDays2(strToDateLong("2020-1-1"), strToDateLong("2019-12-25")); System.out.print原创 2020-05-28 15:02:56 · 1652 阅读 · 0 评论 -
Kafka基础介绍
Kafka基础介绍1、什么是 KafkaKafka 是由 Linkedin 公司开发的,它是一个分布式的,支持多分区、多副本,基于 Zookeeper 的分布式消息流平台,它同时也是一款开源的基于发布订阅模式的消息引擎系统。框架:上面是一张kafka关于消息队列的软件架构图。1. 消息从上到下依次通过Producer、Broker、Consumer三个角色传递。2. 三个角色...原创 2020-03-12 20:52:01 · 302 阅读 · 0 评论 -
虚拟机基础常用操作命令(2)——软件安装、环境搭建
虚拟机软件安装、环境搭建1、 wget: 未找到命令[root@localhost ~]# yum -y install wget安装完毕即可。上面的方法使用的前提是你的linux 系统是已经连接外网,可以ping一下百度主页,如果通,就是连接外网了,不是的话,就要先去打开网络链接(这个百度一下就很多),打开网络链接后,重启linux系统这样才真的可以上外网,因为wget是通过...原创 2020-03-12 20:26:58 · 2227 阅读 · 0 评论 -
Python实现word转pdf
Python实现word转pdf在做word转未pdf的功能过程中找了很多java的实现(POI),对于普通的文档还是支持的还可以,但是对于文档里面涉及图片、表格、水印等就会出现很多样式上的问题,字体重复,水印丢失,表格位置错乱等。1、poi用到的转pdf的相关代码如下: public static byte[] docx2pdf(byte[] docxBytes) throws X...原创 2019-11-29 18:48:48 · 15027 阅读 · 10 评论 -
IDEA git SSH配置
Git安装完之后,需要做最后一步配置,如果你没有做这项配置,是没有git公钥和私钥的,而上传代码到远程仓库的时候需要秘钥进行验证是否本人上传的,想要创建可以使用下面的方法:打开git bash,分别执行以下两句命令:git config --global user.name “用户名”git config --global user.email “邮箱”SSH配置1、打开git...转载 2019-11-20 20:21:43 · 5028 阅读 · 0 评论 -
Transaction rolled back because it has been marked as rollback-only异常原因及处理
Transaction rolled back because it has been marked as rollback-only异常原因及处理报错异常信息:org.springframework.transaction.UnexpectedRollbackException: Transaction rolled back because it has been marked as...原创 2019-10-12 14:53:30 · 2163 阅读 · 0 评论 -
java组件:获取查询月份的第一天和最后一天,默认取当前月份
java组件:获取查询月份的第一天和最后一天,默认取当前月份 public DateSegment GetStartTimeEndTimeOfMonth(String dateStr) { DateSegment dateSegment = new DateSegment(); // 设置查询月第一天 Calendar firstCa = Calendar.getInstance...原创 2019-07-01 21:23:48 · 779 阅读 · 0 评论 -
Java并发之CountDownLatch
Java并发之CountDownLatch目录Java并发之CountDownLatch1、什么是CountDownLatch2、CountDownLatch如何工作的3、方法说明4、实例:一个线程等待其他线程运算结果,其他线程不需要阻塞等待6、源码分析:7、CountDownLatch内部实现:7.1 await内部实现流程:7.2 countDown内部...原创 2019-08-04 10:32:03 · 398 阅读 · 0 评论 -
Java并发之CyclicBarrier
Java并发之CyclicBarrier目录Java并发之CyclicBarrier1、CyclicBarrier 是什么:2、CyclicBarrier类方法:2.1. CyclicBarrier(int parties)2.2. CyclicBarrier(int parties, Runnable barrierAction)2.3.getParties()2...原创 2019-08-04 11:09:14 · 411 阅读 · 0 评论 -
Java并发之Future、FutureTask和Callable
Java并发之Future、FutureTask和Callable参考资料:http://www.threadworld.cn/archives/39.htmlhttp://www.cnblogs.com/dolphin0520/p/3949310.htmlhttps://blog.youkuaiyun.com/zmx729618/article/details/51596414创建线程的...原创 2019-08-04 12:53:03 · 364 阅读 · 0 评论 -
模拟实现任务分配(模板模式)
在实际应用中有这样一个场景:有m台服务器,有n个任务,需要把这n个任务按一定策略分配给m台服务器来执行,请按以下要求实现该场景:1、使用List列表代表服务器(列表中每个元素为一个IP地址);2、使用List列表代表任务(列表中每个元素为任务ID);3、分配的过程就是把IP地址与任务ID映射上的过程;4、策略要支持多个,如按IP地址随机、按任务数量平分等,策略需要支持可扩展(扩展时不用修改...原创 2018-08-14 12:47:59 · 1919 阅读 · 3 评论 -
BigDecimal类型的运算
BigDecimal类型的运算BigDecimal bignum1 = new BigDecimal("10"); BigDecimal bignum2 = new BigDecimal("5"); BigDecimal bignum3 = null; //加法 bignum3 = bignum1.add(bignum2); Syst原创 2017-03-29 22:42:00 · 3432 阅读 · 0 评论 -
java组件:开始时间的N个周期结束时间的实现
java组件:开始时间的N个周期结束时间的实现根据按月、按季、按年等,计算开始时间对应的结束时间。比如1月1号开始,周期是按月,那结束时间是什么时候?比如1月31号开始,周期是按月,那结束时间是什么时候?如果结束时间所在的月是2月、闰年2月、月数天数有31天,时间又如何变化?实现:已知开始时间和周期,需要得到一个结束时间: private String getPeri...原创 2019-07-01 21:11:06 · 1440 阅读 · 0 评论 -
Java组件:获取两个时间之间的间隔天数
/** * @Desc 获取两个时间之间的间隔天数 * @param startTimeStr * @param endTimeStr * @return */ protected String getBetweenDays(String startTimeStr, String endTimeStr) { int betweenDays = 0; Date st...原创 2019-07-01 20:00:33 · 4225 阅读 · 0 评论 -
判断字母汉字数字的字符长度
如何得到包含汉字数字的字符长度,一个汉字是两个字符长度,下面是java实现以及js实现。java实现:/*** @param s 需要判断字符串的长度,中文2个字符,数字字符1个字符;* @return 字符长度*/public static int getlength(String s){if(s==null){return 0;}char[] c原创 2017-05-21 08:53:00 · 3627 阅读 · 0 评论 -
如何接收不固定参数个数的参数传值问题
解决接收不固定参数个数的参数传值问题当一个方法被多个地方调用,然而调用的时候为该方法传入的参数的个数是不固定的的时候怎么办呐?那么我们可以把方法设置为不固定接受参数个数的形式。如下测试类:public static void test(String t1,String t2,Map ...maps) {//这里传入的参数的个数为大于等于2个,当maps为空,传入参数原创 2017-04-03 12:07:28 · 3787 阅读 · 0 评论 -
图片验证码原理
图片验证码的原理1、流程逻辑(首先我们要知道图片验证码的逻辑)a) 生成图片验证码,当然生成验证码的具体实现可以放在另一工程中或者其他的服务器上(可以通过dubbo调用生成验证码服务);b) 用户输入界面上的图片验证码c) 进行服务端校验2. 校验设备id值是否正确(DeviceId)已经解密(生成需要传入唯一标示,大多数是选择以设备id和当前时间作为原创 2017-03-26 13:11:46 · 15272 阅读 · 0 评论 -
ibatis实现Iterate的使用
ibatis实现Iterate的使用1、用法 :#serialList[]#其中 property="" /*可选,从传入的参数集合中使用属性名去获取值,这个必须是一个List类型, 否则会出现OutofRangeException,通常是参数使用java.util.Map时才使用, 如果传入的参数本身是一个java.util.List, 不原创 2017-03-29 23:12:01 · 4708 阅读 · 0 评论 -
Oracle数据库字段翻译
Oracle数据库字段翻译1、createrole类型为number 如果都不满足则可以设置默认值 类似else,(if-then-else)decode(t.createrole,0,'状态0',1,'状态1',2,'状态2',3,'状态3',4,'状态4') ascreate_role2、quetype 类型为VA原创 2017-03-29 22:50:54 · 5074 阅读 · 0 评论 -
java反射机制
java反射机制1、 java反射机制JAVA 反射机制就是在运行状态中,对于任意一个类,都可以知道这个类的所有的属性和方法;对于任意一个对象,都可以调用它的任意一个方法;这种动态获取的信息以及动态调用对象的方法的功能称为Java的反射机制。2、 获取Class对象的三种方式:1. 通过Object类获取Class cs1 = new String(“”)原创 2017-04-07 23:19:49 · 269 阅读 · 0 评论 -
mybatis与ibatis调用存储过程的方式
调用存储过程的两种方式:{ call 空间.包名.存储过程名(?,?,?,?,?,?,?)}{call 包名.存储过程名(#{i_bail_order_id,mode=IN,jdbcType=VARCHAR},#{i_operation_platform,mode=IN,jdbcType=VARCHAR},原创 2017-03-21 21:48:10 · 852 阅读 · 0 评论 -
Java代码中利用httpClient发送post、get请求
版权声明:本文为博主原创文章,未经博主允许不得转载。怎样在Java代码中利用httpClient发送post、get请求1、get请求发出http请求:HttpClientUtils.getValidataImage(请求的URL+请求参数,response)创建执行请求的httpClient:CloseableHttpClient httpCl原创 2017-03-21 21:29:57 · 1141 阅读 · 0 评论 -
解决httpClient中的乱码问题
把请求参数设置到builder里有多种方式:1、易存在乱码问题Set keySet = params.keySet(); for(String key : keySet) { String value = params.get(key);builder.addTextBody(key, value);//filename1为请求后台的普通参数;属性}2、 设置co原创 2017-03-21 21:36:21 · 1047 阅读 · 0 评论 -
<![CDATA[ ]]>
是什么意思?全名:character data在标记CDATA下,所有的标记、实体引用都被忽略,而被XML处理程序一视同仁地当做字符数据看待CDATA的形式如下:CDATA的文本内容中不能出现字符串“]]>”,另外,CDATA不能嵌套。在XML文档中的所有文本都会被解析器解析,只有在CDATA部件之内的文本会被解析器忽略。比如文本内容中使用“原创 2017-03-27 23:24:18 · 2323 阅读 · 0 评论 -
sun.misc.BASE64Encoder问题
sun.misc.BASE64Encoder问题1、在MyEclipse中编写Java代码时,用到了BASE64Decoder,import sun.misc.BASE64Decoder;可是Eclipse提示:Access restriction: The type BASE64Decoder is not accessible due to restriction on req原创 2017-09-23 15:07:07 · 7675 阅读 · 0 评论 -
Mybits+Oracle+List集合(封装Map)批量存储
Mybits+Oracle+List集合(封装Map)批量存储1、处理数据(返回的数据是文本,无JSON及加密封装),要存储的是文本数据,有回车切分的一行行数据(读大文本数据存储亦如此)订单号,类型,原始,折扣金金额,优惠金额,币种,交易时间,......8671592 ,1,1,0,1 ,0,CNY,2017-096935632 ,1,1,0,1 ,0,CNY原创 2017-09-08 23:30:14 · 1211 阅读 · 0 评论 -
JAVA8新特性之Stream
为什么需要 StreamStream 作为 Java 8 的一大亮点,它与 java.io 包里的 InputStream 和 OutputStream 是完全不同的概念。它也不同于 StAX 对 XML 解析的 Stream,也不是 Amazon Kinesis 对大数据实时处理的 Stream。Java 8 中的 Stream 是对集合(Collection)对象功能的增强,它专注于对集合对...原创 2019-03-16 12:57:34 · 207 阅读 · 0 评论