java
码者人生
在高并发、高可用、大数据架构、智能运维等技术和管理领域有14年工作经验,长期关注企业信息安全、企业信息化、互联网电商等业务发展方向
展开
-
Java技术-接口文档-Swagger2&Swagger3&接口文档UI整合
Swagger 说明Swagger是为了解决企业中接口(api)中定义统一标准规范的文档生成工具。方便各大后端小基友的懒问题,但是写注解也是妥妥的麻烦,但是如果版本迭代快或者人员的流动性大,会导致很多问题。所以很多企业中都会有统一的规范文档,来定义接口标准。原创 2023-06-21 13:01:57 · 2281 阅读 · 0 评论 -
java服务-常用技术-生僻函数、方法、技巧
此方法返回的数组包含此字符串的子字符串,每个子字符串都由另一个匹配给定表达式的子字符串终止,或者由此字符串末尾终止。如果表达式不匹配输入的任何部分,那么所得数组只具有一个元素,即此字符串。如果 n > 0,则模式将被最多应用 n - 1 次,数组的长度将不会大于 n,而且数组的最后一项将包含所有超出最后匹配的定界符的输入。如果 n = 0,那么模式将被应用尽可能多的次数,数组可以是任何长度,并且结尾空字符串将被丢弃。如果 n < 0,那么模式将被应用尽可能多的次数,而且数组可以是任何长度。原创 2023-05-17 10:25:28 · 422 阅读 · 0 评论 -
java服务-常用技术-在切面中应用统一日志记录器
在springboot springmvc springcloud 等程序中,我们经常会要记录一些日志信息,但是每次我们都需要每个action单独建立对应的异常捕捉机制,这里就非常麻烦;所以笔者这里专门制作了一套通用的拦截器和统一的日志记录器,用于在程序入口处卡点,记录用户请求的接口、包名、类名、方法名、入参、出参、请求完整耗时,用于日志记录;希望能帮助到入门的朋友们;日志拦截器的应用补充涉及到的代码...原创 2022-06-18 12:02:23 · 400 阅读 · 0 评论 -
java服务-高性能队列-Disruptor使用场景
Disruptor是一个优秀的并发框架,可以实现单个或多个生产者生产消息,单个或多个消费者消息,且消费者之间可以存在消费消息的依赖关系。网上其他博客往往仅针对框架的一部分使用示例进行了介绍,对于某些场景下介绍并不完全:如多生产者间复杂的依赖关系的使用编码。本文尽可能对Disruptor的所有使用场景进行总结,如有不全之处欢迎指出,请谅解。具体关于Disruptor的原理,参见:http://ifeve.com/disruptor/,本文不在赘述。在disruptor框架调用start方法之前,往往需要将消息原创 2022-06-17 14:02:57 · 4780 阅读 · 1 评论 -
java服务-springboot拦截器实现用户登录Token及权限校验
springboot拦截器主要目标:拦截请求,验证请求的用户对访问的资源是否有访问权限;需要排除一些不在权限控制范围内的url,如swagger的接口文档列表;需要排除的url,在配置文件中进行配置;双拦截器原创 2022-05-30 09:16:17 · 4503 阅读 · 0 评论 -
springcloud feign 结合 etcd V3.5 restful api 设置、修改key
如果etcd采用v3结构存储,则etcd只有v3.5以上的版本才支持restful 接口@FeignClient(name = "etcdApiService")public interface EtcdApi { @RequestMapping(value = "/v3/kv/put", method = RequestMethod.POST, consumes = "application/json") String notify(@RequestBody Etc...原创 2021-07-30 11:13:20 · 810 阅读 · 0 评论 -
Zookeeper-工作原理
Zookeeper的角色 » 领导者(leader),负责进行投票的发起和决议,更新系统状态 » 学习者(learner),包括跟随者(follower)和观察者(observer),follower用于接受客户端请求并想客户端返回结果,在选主过程中参与投票 » Observer可以接受客户端连接,将写请求转发给leader,但observer不参加投票过程,只同步leader的状态,observer的目的是为了扩展系统,提高读取速度 » 客户端(client),请求发起方原创 2021-07-22 15:47:32 · 148 阅读 · 0 评论 -
3次握手、4次握手
3次握手,针对的是客户端和服务端建立链接的过程。4次握手,针对的是客户端和服务端断开链接的过程。原创 2021-04-19 11:19:11 · 98 阅读 · 0 评论 -
对fastjson、jackson、gson用于反序列化的性能测试
近期要做json字符串的动态序列化,所以对业内常用json序列化包做一次性能测试,再连续测试很多次后得到的结果,对于嵌套类型的反序列化性能排名如下:fastjson > jackson > gson。直接上代码如下:pom中主要依赖测试坐标如下 <dependencies> <dependency> <groupId>com.alibaba</groupId> <原创 2021-03-01 20:17:53 · 374 阅读 · 0 评论 -
你的java程序有没有内存泄露,java进程在linux系统中rss计算方式是什么样的?
java进程在linux系统中rss计算方式如下:RSS = Heap size + MetaSpace + OffHeap size其中OffHeap由线程堆栈,直接缓冲区,映射文件(库和jar)和JVM代码itse组成内存使用过程jvm内存是在启动时会按默认值(如元空间:20m)初始化大小,在后续运行过程中根据需要实时跟os申请新的物理内存空间,具体释放是在jvm堆空闲/使用达到一定比例后才会通过madvice通知到os回收,等待os进行回收操作。内存计算举例如下:Xmx和-Xms参原创 2021-01-12 16:10:09 · 2398 阅读 · 1 评论 -
测试同学反馈,java 程序内存泄露,症状是RSS不断增加超过了jvm的xmx
RSS 是常驻内存集(Resident Set Size),表示该进程分配的内存大小。RSS 不包括进入交换分区的内存。RSS 包括共享库占用的内存(只要共享库在内存中)RSS 包括所有分配的栈内存和堆内存。VSZ 表示进程分配的虚拟内存。VSZ 包括进程可以访问的所有内存,包括进入交换分区的内容,以及共享库占用的内存。如果一个进程,程序的大小有 500K,链接的共享库大小有 2500K,堆栈内存共有 200K,其中 100K 进入了交换分区。进程实际加载...原创 2021-01-08 18:52:55 · 2255 阅读 · 0 评论 -
java代码ant、compress压缩文件,并保留文件的可执行权限
第一种,通过ant进行压缩,并授权0755import org.apache.tools.zip.ZipEntry;import org.apache.tools.zip.ZipOutputStream; public static void write(File path, File zipFile) throws IOException { ZipOutputStream zip = new ZipOutputStream(new FileOutputStream(zipFile))...原创 2020-11-11 14:50:31 · 749 阅读 · 2 评论 -
通过java代码更改文件权限
通过java代码更改文件权限。第一种如下,通过ant进行import org.apache.tools.zip.ZipEntry;import org.apache.tools.zip.ZipOutputStream; public static void write(File path, File zipFile) throws IOException { ZipOutputStream zip = new ZipOutputStream(new FileOutputStream(zip原创 2020-11-11 14:45:19 · 2758 阅读 · 0 评论 -
Twitter的分布式自增ID算法snowflake (Java版)以及注意事项
概述分布式系统中,有一些需要使用全局唯一ID的场景,这种时候为了防止ID冲突可以使用36位的UUID,但是UUID有一些缺点,首先他相对比较长,另外UUID一般是无序的。有些时候我们希望能使用一种简单一些的ID,并且希望ID能够按照时间有序生成。而twitter的snowflake解决了这种需求,最初Twitter把存储系统从MySQL迁移到Cassandra,因为Cassandra没有顺序ID生成机制,所以开发了这样一套全局唯一ID生成服务。结构snowflake的结构如下(.原创 2020-06-02 18:19:37 · 220 阅读 · 0 评论 -
Java服务-常用技术-maven-assembly-plugin打包springboot、打包目录结构及启动命令
maven打包插件<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-assembly-plugin</artifactId> <versio...原创 2020-04-02 17:55:45 · 3587 阅读 · 0 评论 -
springboot、springmvc拦截器,日志记录器,统一日志处理
每次搭建新项目都会用到拦截器,这次把以前用过的一个拦截器进行改造了一下,放blog做个记录package com.xxx.aop;import org.aspectj.lang.ProceedingJoinPoint;import org.aspectj.lang.Signature;import org.aspectj.lang.annotation.Around;impo...原创 2020-04-02 16:27:37 · 828 阅读 · 0 评论 -
Java服务-常用技术-logback指定某一包或者类下日志记录到不同文件中
<?xml version="1.0" encoding="UTF-8"?><configuration> <contextName>xxx-service</contextName> <property name="root.logger.level" value="INFO"/> <property...原创 2020-04-02 13:58:59 · 5441 阅读 · 0 评论 -
MyBatis Generator 只生成插入insert,没有修改,delete
今天发现generator生成mapper的时候只生成了insert的方法,其他的都没有生成出来,具体看看配置<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE generatorConfiguration PUBLIC "-//mybatis.org//DTD MyBatis Generator Conf...原创 2020-02-26 17:18:57 · 1025 阅读 · 0 评论 -
mybatis+spring maven下 整合 完整demo
mybatis+spring maven下 整合 完整demo原创 2014-07-17 17:49:43 · 1018 阅读 · 0 评论 -
mybatis mysql 中文乱码
mybatis 插入mysql中文乱码添加的作用是:指定字符的编码、解码格式。 例如:假设mysql数据库用的是GBK编码(也可能是其它,例如Ubuntu下就是latin1),而项目数据库用的是utf-8编码。这时候如果添加了useUnicode=true&characterEncoding=UTF-8 ,那么作用有如下两个方面:1. 存数据时:原创 2014-07-18 10:08:50 · 970 阅读 · 0 评论 -
Page directive must not have multiple occurrences of pageencoding
刚开始写servlet jsp,报了个异常原创 2014-06-18 13:01:01 · 3249 阅读 · 0 评论 -
Spring注解使用以及@Component、@Repository、@Service、@Controller区别
使用Spring2.5的新特性——Autowired可以实现快速的自动注入,而无需在xml文档里面添加bean的声明,大大减少了xml文档的维护。(偶喜欢这个功能,因为偶对xml不感冒)。 以下是一个例子:[java] view plaincopy先编写接口Man: public interface Man {转载 2014-07-11 11:36:47 · 907 阅读 · 0 评论 -
Spring4.2.0 MVC json问题(406 Not Acceptable) 真的很蛋疼,耗时半天
为了配合ECS 把原来房子BAE中的代码重新构建,发现发送JSON数据与EXTJS不配合,找了很久发现CSDN上有篇文章正好解决了,庆幸有互联网。 用的是第二中方法原帖:http://blog.csdn.net/woshiwanxin102213/article/details/37521303最近使用spring4.0的Mvc,json请求时,客转载 2015-12-22 16:39:49 · 628 阅读 · 0 评论 -
获取java web项目里面所有的properties文件并组装在一起,使用方便,配置简单
java properties获取java web项目里面所有的properties文件并组装在一起,使用方便,配置简单原创 2016-06-29 11:38:40 · 1197 阅读 · 0 评论 -
用myeclipse如何将java程序生成一个.exe可运行文件?
总得来说有两步,先打成jar包再打成exe。第一步打成jar:用myeclipse如何将java程序生成一个.exe可运行文件?方法一:用Eclipse自带的打包工具Ant打包,因为要自己编写xml脚本语言,还要增加一些外部的jar,所以不推荐。方法二:用Eclpise的Export功能,这种打包方法不能把项目中的外部的jar包打进来,所以不推荐。方法三:用Eclips原创 2013-10-09 19:06:10 · 5620 阅读 · 1 评论 -
No embedded stylesheet instruction for file
20:59:50,054 INFO [main] Main - javax.xml.transform.TransformerFactory=null20:59:50,057 INFO [main] Main - java.endorsed.dirs=c:\Users\luyifeng\AppData\Local\MyEclipse\Common\binary\com.sun.java原创 2014-06-10 20:57:31 · 8622 阅读 · 1 评论 -
eclipse & java 学习笔记(一)- 入门安装与尝鲜
第一步下载eclipse:eclipse-java-juno-SR2-win32-x86_64.zip 在网上百度的eclipse是绿色软件,解压后不用安装,可以直接运行但是不成功,如下图头疼老半天,不知道什么问题。。。经过咨询老同学,发现eclipse就是一个平台,如果要运行需要添加java运行库:jdk-7u2-windows原创 2013-06-24 16:44:04 · 708 阅读 · 0 评论 -
通过异常的方式返回错误提示信息对程序的性能有多大的影响?
我们看一个典型的使用异常返回错误信息的例子,如下图:整段代码读下来行云流水,表意也很准确,但是有什么影响?在谈影响前,我们先看下jvm对异常的处理流程,如下:【图是同事从网上找的哈,借用一下】【以下是异常处理原理】我们能看到每个方法被编译完后,会有一个对应的异常表(Exception table)异常表中每条记录都包含从from开始到to结束这段代码会报一个什么类型...原创 2019-06-01 14:49:54 · 438 阅读 · 0 评论 -
docker环境隔离问题-新配置的host在docker容器内没有生效的临时解决方案-通过Java代码在httpclient添加域名与ip的映射解决
docker环境隔离问题-新配置的host在docker容器内没有生效的临时解决方案-通过Java代码在httpclient添加域名与ip的映射解决昨天发现一个问题,docker容器启动后,在宿主机配置的host没有生效把镜像删除后重新创建都没有生效,无奈工期太紧先临时解决临时解决方案-1.通过Java代码在httpclient添加域名与ip的映射解决2.在容器启动的时候通过d...原创 2019-06-04 09:39:44 · 1329 阅读 · 0 评论 -
SaaS系统设计&研发细节复盘
近期我们要孵化一个SaaS项目,目前本行业内有一些可以对标的产品,但是这些产品大部分采用独立部署的方案,不太符合我们的战略。我们希望这个SaaS是一个云端产品,既可以云端共享,同时满足独立部署的需求;大致的需求如下;业务目标:传统行业下商家采购流程现在很多是走线下流程通过微信,现场带看等方式完成一系列的交易动作。我们现在搭建一套用于企业将线下业务线上化的系统,解决线下业务不能透明管理的...原创 2019-07-11 11:30:12 · 2509 阅读 · 0 评论 -
springboot通过自定义RequestMappingHandlerMapping和HandlerInterceptor实现多版本接口控制及兼容
springboot1.5.7直接看代码/** * @author ikong * @create 2019-07-30 11:34 **/@Configurationpublic class VersionConfiguration extends WebMvcRegistrationsAdapter { @Override public Reques...原创 2019-08-05 17:33:54 · 7643 阅读 · 0 评论 -
竞拍系统关键技术方案的设计细节
竞拍关键技术点最后一秒拉取活动是否延时 拍卖时当前最高价更新策略1.最后一秒拉取活动是否延时竞拍延时场景:如果在竞拍活动距离结束的最后x分钟内有人出价,活动的结束时间自动往后延长x分钟;这里技术点是怎么实现最后1秒的时候去检查活动延时具体的实现思路是页面在竞拍活动倒计时结束的最后一秒停止倒计时保持页面状态,同时去服务端拉取最新的活动结束时间如果发现活动延时则继续开启倒计时,...原创 2019-07-29 19:24:35 · 2741 阅读 · 3 评论 -
springboot + websocket=demo
前端代码<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>index</title> <script type="text/javascript"> var websocket =...原创 2019-09-06 14:38:12 · 235 阅读 · 0 评论 -
Exception in thread "main" org.hibernate.InvalidMappingException: Unable to read XML
2014-5-6 17:12:37 org.hibernate.annotations.common.Version INFO: HCANN000001: Hibernate Commons Annotations {4.0.1.Final}2014-5-6 17:12:37 org.hibernate.Version logVersionINFO: HHH000412: Hibern原创 2014-05-06 17:13:00 · 3634 阅读 · 0 评论