Java
文章平均质量分 75
赵侠客
一个独立思考的开发者
展开
-
Java中使用for而不是forEach遍历List的10大理由
本文介绍了在实际开发中更推荐使用for循环而不是Stream.foreach()来遍历List的十大理由,并给出了具体的代码和测试结果原创 2024-09-23 07:05:01 · 840 阅读 · 0 评论 -
像JSON一样使用ProtoBuf,空间还能缩小60%,性能提升100%
本文介了JProtobuf工具的使用,并从6个指标对比了像JSON数据,可以得出Protobuf在大部分情况下空间上会比JSON要小很多,大部门性能都比JSON要好很多。原创 2024-09-18 07:05:16 · 1151 阅读 · 0 评论 -
FastJson、Jackson、Gson、Hutool,JSON解析哪家强?JMH基准测试来排行
以本文针对市面上主流的5种JSON解析工具使用JAVA基准测试从小JSON、中JSON、大JSON的序列化和返序列化共6项指标进行测试,最后给出排名,希望最后的排名能给您在做JSON工具选型时有一定的帮助原创 2024-09-09 07:20:51 · 1262 阅读 · 0 评论 -
一个BUG搞懂ThreadLocal、InheritableThreadLocal、TransmittableThreadLocal
本文从排查一个线程的BUG总结了ThreadLocal的基本用法主注意事项并引出了InheritableThreadLocal和TransmittableThreadLocal原创 2024-08-20 22:21:13 · 894 阅读 · 0 评论 -
如何让你的图片服务也有类似OSS的图片处理功能
本文主要介绍了常用图片处理软件`ImageMagick`的使用,并通过命令和`JAVA`代码演示图片信息的获取、缩放、打水印、裁剪功能,在最后通过`OpenResty+Lua`实现类似`OSS`的自动图片缩放功能。原创 2023-08-13 16:44:26 · 1448 阅读 · 0 评论 -
一个Demo搞定前后端大文件分片上传、断点续传、秒传
本文从前端和后端两个方面介绍了大文件的分片上传、断点继续、秒传设计思路和实现代码,所有代码都是亲测可以直接用的。原创 2023-08-12 19:24:51 · 360 阅读 · 0 评论 -
《EalsticSearch从入门到实战》-CRUD+JAVA常用操作
本文主要介绍elaticsearch索引和数据的增、删、改、查基本操作,其它包括API和JAVA的操作,大部分操作都介绍的单数据操作和批量操作。同时还介绍的索引创建过程中和更新数据过程中的注意事项原创 2023-07-30 18:43:48 · 236 阅读 · 0 评论 -
EalsticSearch添加字段后重建索引方法
alsticSearch作为全文搜索引擎被大家广泛应用于项目中,大部项目原始数据一般都存在关系型数据库中,如Mysql。然后通过同步或者异步方式将需要搜索的数据同步至EalsticSearch,常用方法有:代码中先写入Mysql,然后再写入EalsticSearch,异步的一般使用Canal+MQ的方式异步抽取数据写入ES。由于ES中的索引字段是不可变的,不像Mysql需要添加字段时可以随时添加,而ES索引一旦创建好了就不能再添加字段,动态添加的数据也无法创建索引,本文介绍一种简单的方式,使用ES别名+重建原创 2023-07-24 18:14:29 · 529 阅读 · 0 评论 -
elasticsearch在统计存储用量方面的应用
本文主要通过介绍使用elasticsearch计算存储来学习一下elasticsearch分组查询的使用以及使用JAVA代码调用elasticsearch分组查询原创 2023-07-21 20:33:48 · 677 阅读 · 3 评论 -
JAVA常用的异步处理方法总结
在java项目开发过程中经常会遇到比较耗时的任务,通常是将这些任务做成异步操作,在java中实现异步操作有很多方法,本文主要总结一些常用的处理方法。为了简化,我们就拿一个实际的案例,再用每种方法去实现,对比看看这些方法有什么优缺点。原创 2023-04-30 11:24:01 · 3767 阅读 · 0 评论 -
使用Jackson对JSON数组中存放不同对象反序列化
最近项目中遇到一个JSON反序列化问题,看似很简单,但是又不常见,本来以为很容易解决,结果找了很多方法才解决了,基本过程大概是这样的。原创 2022-09-26 11:32:04 · 687 阅读 · 0 评论 -
JAVA中生成菜单树结构常用方法总结
项目开发中经常会遇到树形结构,如多级菜单、多级文件夹结构、多级分类结构、多级组织结构,这些结构都有个共同特点,就是一般存在数据库中是通过id和parentId保存父子级关系的,返回给前端需要合成一颗树,本文针对这类数据结构,总结出常用合成树的三种方法。......原创 2022-08-01 18:45:28 · 3117 阅读 · 0 评论 -
SpringBoot项目@Async默认线程池导致OOM问题?
最近看到一篇文章说SpringBoot项目中@Async默认线程池会导致OOM,因为我的项目中也用到@Async注解,所以赶紧看了一下,在网上搜索@Async导致OOM案例还是很多的,于是我就研究了一下。原创 2022-07-28 12:08:53 · 2760 阅读 · 0 评论 -
记录一次@Cacheable导致死锁问题排查过程
最近同事一个项目在测试环境出来了一个奇怪的问题,说项目一登录就卡死,接口一直没响应,也不报错,正式环境也没有这个问题,感觉很奇怪,他找了很长时间找不出问题,让我帮忙排查一下是什么原因,排查了一上午的时间终于找到原因了,代码逻辑其实很简单,大致逻辑如下模拟代码原创 2022-01-29 14:17:17 · 2888 阅读 · 0 评论 -
记录一将内存中大量JceSecurity实例导致OOM问题排查
记录一将内存中大量JceSecurity实例导致OOM问题排查原创 2022-01-29 10:31:04 · 1778 阅读 · 0 评论 -
JAVA使用阿里云Serverless 函数计算将OSS文件打包成Zip批量下载
批量下载OSS文件的几种方法单个文件依次下载阿里云OSS中批量下载文件使用的就是这种单个文件依次下载的方法,下载时会弹出提示,体验不是很好,也无法下载文件夹保持文件目录结构将OSS文件下载到自己服务器中,然后自己生成一个Zip文件,完成批量下载这种方法的缺点 下载比较慢、如果文件过多会消耗服务器CPU资源和带宽使用阿里云函数计算打包OSS文件下载阿里云函数计算官方Demo中有一个python的例子,可惜python用的不多,所以使用Java实现一个类似的功能使用JAVA 打原创 2021-08-20 14:49:36 · 2739 阅读 · 7 评论 -
聊聊Arrays.asList()踩过的那些坑
问题重现日常开发中为了方便快捷的初始化一个List,经常会用到Arrays.asList()这个方法,不过有一次却出现了一个很奇怪的问题,测试代码如下: @Test public void test() { List<Integer> ids=Arrays.asList(1,2); ids.add(3); }运行结果java.lang.UnsupportedOperationException at java.util.Abstr原创 2021-05-25 11:47:49 · 1041 阅读 · 0 评论 -
使用策略模式+工厂模式干掉代码中过多的if-else
过多if-else项目背景如果一开始就知道现在的业务需要,大部分人都不会在代码里添加过多的if-else判断的,烂代码基本都是刚开始写代码时并没有太多的需求,随着期需求不断的修改增加,开发时间也较的紧张,代码往往都是怎么快速怎么写。当然多写一个if-else比使用各种设计模式肯定来的更快速了,这也就导致项目代码慢慢变得臃肿,难以维护的主要原因。在有空闲时间的情况下就可以给以前的代码做一次手术了。先看本次未优化前的代码: @Override public MMediaInfo copyTo原创 2021-05-17 15:13:50 · 284 阅读 · 0 评论 -
使用java jedis封装Redis Stream操作案例
使用java jedis封装Redis Stream操作案例前言操作接口代码操作实现类代码测试代码总结前言Redis在5.0后增加了Stream功能,在日常的项目中Redis用到的比较多,但是Stream这个功能用的却是比较少,今天学习了一下Stream的基本使用功能,可以方便在接下来项目中遇到合适的场景使用。操作接口代码public interface IStreamServer { /** * 添加消息 * @param key * @param st原创 2021-01-14 16:57:23 · 2253 阅读 · 3 评论 -
IntelliJ IDEA 更新到2020 Cannot load a JDK class: com.sun.jdi.Field Please ensure you run the IDE on
IntelliJ IDEA 更新到2020 后打开闪退报错Cannot load a JDK class: com.sun.jdi.Field Please ensure you run the IDE on JDK rather than JRE.解决方法 新建环境变量:IDEA_JDK_64 值为IDEA JDK 安装 HOME目录,我的默认为: IDEA_JDK_6...原创 2020-04-15 17:37:17 · 5854 阅读 · 3 评论 -
java8 lambda Stream 将分组后的对象所有字段相加得到一个对象
数据结构 现有多个对象,存储每个租户的视频/音频/图片大小,对象结构如下public class TBucketSize { private Long tenantId; private Long imgSize; private Long audioSize; private Long videoSize;} 租户数据如下: ...原创 2020-04-03 17:19:09 · 5578 阅读 · 2 评论 -
Windows 无法启动Redis服务器(位于本地课计算机上)错误1053:服务没有及时响应启动或控制请求
文章来源:http://ksfmaster.com/article/4写在前面一直使用linux版Redis,临时下载了windows版本Redis 配置密码后在windows服务中重启Redis时报“Windows 无法启动Redis服务器(位于本地课计算机上)错误1053:服务没有及时响应启动或控制请求”错误,排查了一下原因,记录一下查看错误日志打开系统日志 控制面板--...原创 2019-12-20 09:46:51 · 6606 阅读 · 4 评论 -
Java连接db2数据库(常用数据库连接五)
1.安装好db2数据库,并建立表如下:2.eclipse或myeclipse中建立工程并导入java连接db2所需要的jar包db2java.jar 下载地址:http://download.csdn.net/detail/whzhaochao/64149813.建立iConn接口,代码如下:package com.zhaochao.dba;import java.sq原创 2013-10-18 17:09:28 · 10565 阅读 · 0 评论 -
分布式Web应用----基于Socket+动态代理实现简单RPC 生产者消费者模型
写在前面前面一文主要简单介绍了JAVA动态代理基本原理,这也是实现RPC的基本知识,这里我们运用Socket简单实现一个远程过程调用,方便大家理解RPC的基本原理,希望对大家有所帮助。新建People接口类与Man实现类接口类public interface People { public String sayHello(String name);}实现类public class Man原创 2016-03-15 21:08:29 · 1834 阅读 · 1 评论 -
分布式Web应用----Java动态代理技术实现原理分析
原文链接:http://www.zhaochao.net/index.php/2016/03/11/20/写在前面 在企业开发中,最基本的开发架构可能就算是MVC框架,如 Struts+Spring+Hibernate 或者 SpringMVC+Spring+Mybatis ,这些框架也可能是JAVA学习者第一次接触到的,运用这些框架基本上可以满足小型项目的开发,但是当项目变的复杂,业务增长迅猛时原创 2016-03-11 22:00:54 · 1180 阅读 · 0 评论 -
计算两组标签/关键词 相似度算法
写作背景标签在互联网行业有大量的应用,给博客打标签,给商品打标签,给新闻打标签。通常每篇文章会打上多个标签,好的标签系统给后期的数据分析可以带来巨大的利处。最近想做一个基于内容的新闻简单推荐系统,其中的一个推荐权重就是两篇新闻标签的相似度,由于没什么数据挖掘和机器学习经验,自己一直在摸索,感觉自己还没有入门,先记录下来,慢慢学习。应用案例比较现在有两篇文章 文章1:广州车展实拍东风悦达起亚K2两原创 2016-02-05 11:03:40 · 16302 阅读 · 5 评论 -
Jersey+jetty 搭建高并RestFull 接口服务
原文链接 http://www.zhaochao.net/index.php/2015/12/07/5/选择Jersey+jetty原因之前做的项目大部分是PC的项目,没有做的完全的前后端分离,后端使用的是MCV框架 像SpringMVC、Sturts2。最近开发移动webapp项目,因为对SpringMVC框架比较熟悉所以就选择了用SpringMVC框架为前端提供接口,后来发现了一些新的RestF原创 2015-11-30 10:06:09 · 11599 阅读 · 7 评论 -
基于内容的简单相关新闻推荐系统方案
写作背景最近接手一个新闻项目,项目比较小,属于官网的一个支站,官网新闻条目有700多万条,我负责的支站新闻条目11万条,我想拿这个小支站用来练练手,做一个小的基于内容的新闻推荐,当用户看某片新闻时,旁边显示和这条新闻相关的新闻列表。总体思路站点比较小,简单点能实现要求就好,主要步骤如下所示 建立标签库,为每篇文章加要标签 标签库的建立主要有三种方案 1. 数据库新闻表中添加一个tag字段,原创 2016-02-05 17:18:30 · 6702 阅读 · 12 评论 -
分布式Web应用----Linux环境下zookeeper集群环境的安装与配置
写在前面zookeeper是分布式应用中运用的比较广泛,了解zookeeper的原理对理解分布架构的应用具有很大的帮助,学会安装zookeeper则是学习zookeeper的前提,自己刚刚学习zookeeper,记录一下安装过程,增加自己印象,方便其它人学习。下载zookeeperzookeeper官网下载地址 :http://mirrors.hust.edu.cn/apache/zookeeper原创 2016-03-27 20:06:57 · 1518 阅读 · 1 评论 -
分布式Web应用----zookeeper基本工作原理
写在前面前面一篇文章简单介绍了zookeeper的安装,当安装好了zookeeper后,我们可以通过zookeeper自带的客户端连接到zookeeper上,并对其进行操作,在对它进行操作前我们先要了解一些基本的知识。zookeeper工作原理 上图为zookeeper的节点结构,其中/为zookeeper的根节点,每个节点可以拥有自己的子节点,子节点又可以有子节点,每个节点拥有一个值,zooke原创 2016-04-02 17:34:27 · 2042 阅读 · 0 评论 -
使用轻量级JAVA 爬虫Gecco工具抓取新闻DEMO
写在前面最近看到Gecoo爬虫工具,感觉比较简单好像,所有写个DEMO测试一下,抓取网站 http://zj.zjol.com.cn/home.html,主要抓取新闻的标题和发布时间做为抓取测试对象。Gecoo GitHub地址 https://github.com/xtuhcy/gecco Gecoo 作者博客 http://my.oschina.net/u/2336761/blog?fr原创 2016-04-08 14:15:16 · 5623 阅读 · 1 评论 -
ice-dubbo-thrift-grpc性能测试对比
本测试只是个人为了对rpc进行技术选型,测试可能不够严谨,对某些rpc的参数可能也不是最优,如果你知道更优的参数配置或者改进意见等,欢迎反馈给我magicdoom@gmail.com。另外代码有些地方只是为了测试方便,不作为平时编程的范例。所有测试源码和运行均一起提供在附件里。测试源码工程可用idea打开,其中dubbo,grpc需要maven支持。运行只需要运行对应bat脚本。如果想测试更多场景,可以直接改脚本的并发数和调用次数。转载 2016-05-14 16:11:06 · 24653 阅读 · 1 评论 -
grpc java helloworld 简单demo实现
写在前面最近google发布了grpc1.0,之前一直关注过grpc,数据交互使用了protocol buffer,相比之前使用的hession和json序列化方式性能应该提升不少,所有先搞一个grpc的hello world跑一下,项目使用maven搭建,并使用idea开发。使用idea创建maven项目,添加pom配置添加grpc1.0 maven依赖 <dependency>原创 2016-09-03 10:47:36 · 26023 阅读 · 22 评论 -
使用Maven自动打包配置文件生成开发环境,测试环境,生产环境
写在前面项目中往往有开发环境、测试环境、生产环境,这几个环境有些配置文件可能是不一样的,三个环境切换时以前基本是靠手动注释文件来打成不同的包。如果不同的配置文件过多,粗心打包后,就会导致配置文件出错,从而使项目部署出问题。例如Mysql配置文件在项目中有可能会使用如下情况,通过手动注释切换配置文件。#本地数据库#url:jdbc:mysql://***#username:dev#passwor原创 2017-07-24 11:15:05 · 8721 阅读 · 0 评论 -
《阿里巴巴Java开发手册》插件安装及使用
Idea安装IDEA版的插件已发布到IDEA官方仓库中(最低支持版本14.1.7,JDK1.7+),只需打开 Settings >> Plugins >> Browse repositories 输入 Alibaba 搜索一下便可以看到对应插件了,点击安装等待安装完成。至于如何使用请大家到官方Github仓库中进行查看。IDEA会自动检测插件新版,并提示出来,所以大家不用担心插件的更新问题。ecli原创 2017-10-16 10:42:03 · 884 阅读 · 0 评论 -
Hessian配置用户名和密码
原文链接 http://www.zhaochao.net/index.php/2016/01/26/12/配置原因随着业务的发展项目会变的越来越多,项目需要进行模块化与服务化,服务化中常用的方法就是使用RPC技术,Hessian就是常用的一种RPC技术。之前用过Hessian,没有考虑太多,只是用用,最近想了想Hessina没有安全验证,将URL发部到网上后,只要别人知道你的URL,再知道你的方法,原创 2016-01-26 10:59:29 · 2824 阅读 · 0 评论 -
你应该知道的RPC原理
原文链接 https://yq.aliyun.com/articles/3229?utm_source=tuicool&utm_medium=referral摘要 在学校期间大家都写过不少程序,比如写个hello world服务类,然后本地调用下,如下所示。这些程序的特点是服务消费方和服务提供方是本地调用关系。 而一旦踏入公司尤其是大型互联网公司就会发现,公司的系统转载 2016-01-26 08:56:38 · 831 阅读 · 0 评论 -
maven+springMVC+mybatis+easyUI管理用户增删改查
项目分为两个工程domain和manager,工程结构如下图所示,其中domain是Maven java工程主要完成对数据库的操作,manager是Maven Web工程,完成web访问,原创 2014-09-18 20:17:22 · 4582 阅读 · 1 评论 -
Google开发的QRcode二维码生成和解码及最大容量
1.源码package com.test;import java.awt.image.BufferedImage;import java.io.File;import java.io.IOException;import java.io.UnsupportedEncodingException;import java.nio.ByteBuffer;import java.nio.C原创 2014-05-20 11:44:47 · 10206 阅读 · 0 评论 -
JavaDES加密解密算法
JavaDES加密解密算法import java.nio.ByteBuffer;import java.security.SecureRandom;import javax.crypto.Cipher;import javax.crypto.SecretKey;import javax.crypto.SecretKeyFactory;import javax.crypto.spec原创 2014-05-25 16:19:18 · 1451 阅读 · 0 评论