Java编程
文章平均质量分 86
玉羽凌风
这个作者很懒,什么都没留下…
展开
-
RESTful API 设计最佳实践
原文:RESTful API Design. Best Practices in a Nutshell.作者:Philipp Hauer项目资源的URL应该如何设计?用名词复数还是用名词单数?一个资源需要多少个URL?用哪种HTTP方法来创建一个新的资源?可选参数应该放在哪里?那些不涉及资源操作的URL呢?实现分页和版本控制的最好方法是什么?因为有太多的疑问,设计RESTful API变得很棘手。在这篇文章中,我们来看一下RESTful API设计,并给出一个最佳实践方案。每个资源使用两个U..转载 2020-09-09 01:02:12 · 290 阅读 · 0 评论 -
谷歌的代码管理
谷歌和 Facebook 都只有一个代码仓库,全公司的代码都放在这个库里。我一直很困惑,为什么要这样做,不同语言的项目放在一个库有什么好处?最新一期的《ACM通信》(59卷第7期)有一篇论文《为什么 Google 要把几十亿行代码放在一个库?》,作者是谷歌基础设施小组的工程师,可以看作官方对这个问题的详细解答。我读后感到收获很大,下面就是摘录。一、概况谷歌最早使用 CVS 进行代码管理,1999年改为 Perforce。那时是一台 Perforce 主机,加上各种缓存机。当时,全公.转载 2020-08-24 00:34:21 · 298 阅读 · 0 评论 -
版本分支管理标准 - Trunk Based Development 主干开发模型
之前分享过《版本分支管理标准 - Git Flow》,不过在实际使用过程中, 因为其有一定的复杂度,使用起来较为繁琐,所以一些人员较少的团队并不会使用这个方案。在这基础上,一些新的分支管理标准被提出。这里转发一下这个标准:《Trunk Based Development 主干开发模型》。Preface在之前的博文中我们介绍了 Git Flow 分支模型,正如文中所说,Git Flow 偏向于控制管理,使用了较多的分支,流程颇为复杂。大量的团队在实践过程中也遇到了颇多问题,其中大部分来自长期存在的转载 2020-08-24 00:08:37 · 1503 阅读 · 0 评论 -
java maven copyright
Try switching to thecom.mycila:license-maven-plugin. Their documentation is very easy to follow.Create a template in a fileFor example, put inlicense-header.txt:Copyright (C) ${license.years} ${license.owner} <${license.email}>============..原创 2020-08-23 22:57:57 · 372 阅读 · 0 评论 -
slf4j+logback&logback.xml
1.maven依赖<dependencies><!--https://mvnrepository.com/artifact/org.slf4j/slf4j-api --> <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-api</artifactId> <version>1.7.原创 2020-08-22 23:23:26 · 158 阅读 · 0 评论 -
maven checkstyle findbugs pom.xml
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4....原创 2020-08-22 22:42:49 · 303 阅读 · 0 评论 -
SLF4j 和 common-logging
Apache Common-Logging是广泛使用的Java日志门面库。我以前一直都使用它和log4j编写日志。Apache Common-Logging通过动态查找的机制,在程序运行时自动找出真正使用的日志库。Apache Common-Logging一直都运作得很好。直到最近,我写OSGI插件时,它不能工作了。原因是Apache Common-Logging使用了ClassLoader寻找和载入底层的日志库。而OSGI中,不同的插件使用自己的ClassLoader。一个线程的Class...转载 2020-08-22 16:40:30 · 1071 阅读 · 0 评论 -
JVisualVM简介与内存泄漏实战分析
一、JVisualVM能做什么 VisualVM 是Netbeans的profile子项目,已在JDK6.0 update 7 中自带(java启动时不需要特定参数,监控工具在bin/jvisualvm.exe),能够监控线程,内存情况,查看方法的CPU时间和内存中的对 象,已被GC的对象,反向查看分配的堆栈(如100个String对象分别由哪几个对象分配出来的)。在J...转载 2019-12-10 22:34:40 · 559 阅读 · 0 评论 -
JVM内存设置多大合适?Xmx和Xmn如何设置?
问题:新上线一个java服务,或者是RPC或者是WEB站点, 内存的设置该怎么设置呢?设置成多大比较合适,既不浪费内存,又不影响性能呢?分析:依据的原则是根据Java Performance里面的推荐公式来进行设置。具体来讲:Java整个堆大小设置,Xmx 和 Xms设置为老年代存活对象的3-4倍,即FullGC之后的老年代内存占用的3-4倍永久代 PermSize和MaxPe...转载 2019-02-25 21:27:27 · 981 阅读 · 0 评论 -
aws dynamodb query with or condition
ItemCollection<QueryOutcome> items = null; QuerySpec querySpec = new QuerySpec(); ValueMap valueMap = new ValueMap(); valueMap.withString(":autoIdVal", autoID); ...原创 2018-09-30 12:06:00 · 966 阅读 · 0 评论 -
NGINX如何反向代理Tomcat并且实现Session保持
简介LNMT=Linux+Nginx+MySQL+Tomcat;Tomcat 服务器是一个免费的开放源代码的Web 应用服务器,属于轻量级应用服务器;在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试JSP 程序的首选; 架构需求Tomcat实现JSP动态请求解析的基本架构说明:由后端Tomcat负责解析动态jsp请求,但为了提高响应性能,在同一主机...转载 2018-10-06 17:05:39 · 1369 阅读 · 0 评论 -
负载均衡(Load Balance)的简单而又透彻的理解
负载均衡(Load Balance)是分布式系统架构设计中必须考虑的因素之一。它通常是指,将请求/数据【均匀】分摊到多个操作单元上执行,负载均衡的关键在于【均匀】。这里的均匀,可不是我们想象的10 ÷ 2 = 5 ,这就算均匀啦。不是的。常见互联网分布式架构如上,分为客户端层、反向代理nginx层、站点层、服务层、数据层。 常见的负载均衡方案常见互联网分布式架构如上,分为客...转载 2018-10-06 12:55:37 · 5383 阅读 · 0 评论 -
spark 读写scv文件遇到换行问题
val data = spark.read..option("header", "true").option("inferSchema", "true").option("multiLine", true).option("delimiter", ",").format("csv").load("hdfs://hadoop-m原创 2018-10-04 10:44:02 · 3199 阅读 · 6 评论 -
服务重定向
301 Moved Permanently:URI uri = ...return Response.status(Status.MOVED_PERMANENTLY).location(uri).build();303 See Other (aka POST/redirect/GET):URI uri = ...return Response.seeOther(uri).build();...转载 2018-08-22 22:53:02 · 1346 阅读 · 0 评论 -
SpringBoot 实现前后端分离的跨域访问(CORS)
一、基本介绍简单来说,CORS是一种访问机制,英文全称是Cross-Origin Resource Sharing,即我们常说的跨域资源共享,通过在服务器端设置响应头,把发起跨域的原始域名添加到Access-Control-Allow-Origin 即可。1. CORS工作原理CORS实现跨域访问并不是一蹴而就的,需要借助浏览器的支持,从原理题图我们可以清楚看到,简单的请求(通常指GE...转载 2019-05-30 21:59:12 · 1221 阅读 · 0 评论 -
如何正确对用户密码进行加密?
本文介绍了对密码哈希加密的基础知识,以及什么是正确的加密方式。还介绍了常见的密码破解方法,给出了如何避免密码被破解的思路。相信读者阅读本文后,就会对密码的加密有一个正确的认识,并对密码正确进行加密措施。作为一名Web开发人员,我们经常需要与用户的帐号系统打交道,而这其中最大的挑战就是如何保护用户的密码。经常会看到用户账户数据库频繁被黑,所以我们必须采取一些措施来保护用户密码,以免导致不必要的数据泄...转载 2018-05-27 21:46:16 · 50939 阅读 · 11 评论 -
实现异步API的两个常用方法
整个 Netty 的 API 都是异步的,异步处理不是一个新的机制,这个机制出来已经有一些时间了。对网络应用来说,IO 一般是性能的瓶颈,使用异步 IO 可以较大程度上转载 2019-03-10 21:44:16 · 5412 阅读 · 0 评论 -
mybatis学习
用注解来简化xml配置的时候,@Param注解的作用是给参数命名,参数命名后就能根据名字得到参数值,正确的将参数传入sql语句中我们先来看Mapper接口中的@Select方法? 1 2 3 4 5 6 7 packageMapper; publicinterfaceMapper { @S...转载 2019-03-23 20:33:11 · 92 阅读 · 0 评论 -
API接口TOKEN设计
首先需要知道API是什么?API(Application Programming Interface)即应用程序接口。你可以认为 API 是一个软件组件或是一个 Web 服务与外界进行的交互的接口。而我们在这里要谈论的,是作为一家公司如何跟外界进行交互。从另一个角度来说,API 是一套协议,规定了我们与外界的沟通方式:如何发送请求和接收响应。API的特点: 1、因为...转载 2019-03-24 16:53:17 · 873 阅读 · 0 评论 -
SpringBoot简单打包部署(附工程)
前言本文主要介绍SpringBoot的一些打包事项和项目部署以及在其中遇到一些问题的解决方案。SpringBoot打包在SpringBoot打包这块,我们就用之前的一个web项目来进行打包。首先需要明确的是,该项目打包的形态是可执行的jar包,还是在tomcat下运行的war包。虽然本项目是用maven构建的,用maven打包也更加方便,但是这里也说明普通非maven打包的项目如何...转载 2019-03-28 21:31:57 · 176 阅读 · 0 评论 -
jdk8 GC之详解CMS收集过程和日志分析
话题引入让我们先简单的看下整个堆年轻代和年老代的垃圾收集器组合(以下配合java8完美支持,其他版本可能稍有不同),其中标红线的则是我们今天要着重讲的内容:ParNew and CMS"Concurrent Mark and Sweep" 是CMS的全称,官方给予的名称是:“Mostly Concurrent Mark and Sweep Garbage Collector”;...转载 2019-06-09 21:55:41 · 2139 阅读 · 0 评论 -
JVM 垃圾回收机制
1. GC的概念Garbage Collection 垃圾收集Java中,GC的对象是堆空间和永久区(如果对Java内存区域不太了解,请查看Java内存区域)2. GC算法2.1引用计数法老牌垃圾回收算法通过引用计算来回收垃圾使用者:COM ActionScript3 Python引用计数器的实现很简单,对于一个对象A,只要有任何一个对象引用了A,则A的引用计...转载 2019-06-10 18:17:28 · 152 阅读 · 0 评论 -
JVM GC参数以及GC算法的应用
1.串行收集器串行收集器是最古老,最稳定以及效率高的收集器可能会产生较长的停顿,只使用一个线程去回收-XX:+UseSerialGC新生代、老年代使用串行回收 新生代复制算法 老年代标记-压缩串行收集器的日志输出:0.844: [GC 0.844: [DefNew: 17472K->2176K(19648K), 0.0188339 secs] 17472...转载 2019-06-10 18:34:26 · 210 阅读 · 0 评论 -
使用CMS垃圾收集器产生的问题和解决方案
promotion failed concurrent mode failure第一个问题promotion failed是在进行Minor GC时,Survivor Space放不下,对象只能放入老年代,而此时老年代也放不下造成的,多数是由于老年带有足够的空闲空间,但是由于碎片较多,这时如果新生代要转移到老年带的对象比较大,所以,必须尽可能提早触发老年代的CMS回收来避免这个问题(promo...转载 2019-06-10 18:35:05 · 722 阅读 · 0 评论 -
正则取出所有符合条件的值
原始字符串值:{"dataClass":"x","dataStringRepresentation":"y","id":"z"}{"dataClass":"xx","dataStringRepresentation":"yy","id":"zz"}{"dataClass":"xxx","dataStringRepresentation":"yyy","id":"zzz"}需求是取出所有的dat...原创 2019-08-19 09:50:44 · 3625 阅读 · 0 评论 -
jquery each报 Uncaught TypeError: Cannot use 'in' operator to search for错误
在写前端的时候用jquery来遍历后台传来的json数组时候遇到这个错误:Uncaught TypeError: Cannot use 'in' operator to search for。后来查到原因是因为:一部分浏览器后端传过来的是json对象,但是我们前端是需要Javascript的对象,所以需要做个转换JSON.parse() or jQuery $.parseJSONRev原创 2015-08-13 15:44:58 · 32230 阅读 · 5 评论 -
对称加密----AES和DES加密、解密
目前主流的加密方式有:(对称加密)AES、DES (非对称加密)RSA、DSA调用AES/DES加密算法包最精要的就是下面两句话:Cipher cipher = Cipher.getInstance("DES/CBC/PKCS5Padding");cipher.init(Cipher.ENCRYPT_MODE, key, zeroIv);CBC是工作模式,DES一共有电子密码本模式(...转载 2018-05-25 17:58:37 · 10270 阅读 · 0 评论 -
根据IP转成对应的城市信息API(免费)
1.首推高德地图api:http://restapi.amap.com/v3/ip?ip=114.247.50.2&output=xml&key=使用说明:http://lbs.amap.com/api/webservice/guide/api/ipconfig2.百度地图API:http://api.map.baidu.com/location/ip?ip=xx.xx.x原创 2017-12-05 15:16:35 · 5451 阅读 · 0 评论 -
带过期功能的map
1.自己定义package com.aiggo.common.util; import java.util.Collection; import java.util.HashMap; import java.util.Iterator; import java.util.Map; import java.util.Set; /** * * @Des转载 2017-11-08 11:12:12 · 7933 阅读 · 0 评论 -
关于hadoop与jstl冲突问题java.lang.AbstractMethodError: javax.servlet.jsp.PageContext.getELContext()Ljavax/e
在做web后台的时候有用到hive,当然,肯定也得需要hadoop的jar包,但是加入hadoopjar包的时候遇到个问题,很让我头疼,那就是任何网页都打不开了,浏览任何页面一打开就报错:javax.servlet.ServletException: java.lang.AbstractMethodError: javax.servlet.jsp.PageContext.getELContex原创 2015-09-14 17:23:13 · 3647 阅读 · 0 评论 -
Spring配置文件xsi:schemaLocation无法解析导致启动失败的解决方案
今天部署一个jar包的时候遇到一个问题:Exception in thread “main” org.springframework.beans.factory.xml.XmlBeanDefinitionStoreException: Line 10 in XML document from class path resource [app-config.xml] is invalid; ne原创 2015-09-09 13:59:48 · 15189 阅读 · 0 评论 -
Java JDBC方式连接HIVE2
一般连接hive的方式有CLI(登录到服务器或者本地切换到hive环境),Client(SQUIREEL SQL客户端),Web UI(hive --service hwi )等Java 操作JDBC同普通JDBC数据库一样,首先需要启动Hive 服务打开bin/hive --service hiveserver -p 10000public List getDocIds(String r原创 2015-09-09 13:33:06 · 21846 阅读 · 0 评论 -
将HTML里标签里的img src属性的相对地址替换成对应的绝对地址
主要利用了Jsoup,/** * 将文本中的相对地址转换成对应的绝对地址 * @param content * @param baseUrl * @return */ private static String processImgSrc(String content,String baseUrl){ Document原创 2015-08-29 00:23:43 · 7158 阅读 · 0 评论 -
删除HTML里的a href标签
第一种方式是用正则 String aHrefRegex = "]*?\\shref=['\"]?(.*?)['\"].*?>"; String content = " \n" + " \n" + " 文章\n" + "原创 2015-08-29 00:46:03 · 4762 阅读 · 0 评论 -
Intellij ideal 新建web项目的web资源目录不能自动映射问题
在用intelij ideal新建web项目时候,有时为了方便直接拷贝或者修改另外一个web项目,有时候会遇到一个问题,那就是在dispatch-servlet.xml配置文件中,无法自动适配到资源目录,细心的人会发现此时的web资源目录跟正常的不同,正常的web目录应该如下图样式这里的webroot为我们的web资源目录,文件夹上面有个Internet标志的,如果你的项目配置不正常的原创 2015-08-11 15:30:38 · 6080 阅读 · 0 评论 -
Mysql插入中文变为全问号???的问题 解决方法
当通过程序或者mysql客户端插入数据的时候出现中文变成??这种类似的乱码时,多半是由于数据库编码的问题1.如果是Java程序,则在url连接的地方加上?useUnicode=true&characterEncoding=utf-8试试2.如果通过客户端或者命令行插入也依然报错,则修改mysql安装配置文件my.ini[mysql]default-character-set=utf原创 2015-07-28 16:27:02 · 19297 阅读 · 1 评论 -
groov org.codehaus.groovy.control.MultipleCompilationErrorsException: startup failed
在linux上配置groovy环境时,出现了两个问题,一个是在执行groovy xx.groovy时无法找到不同包下的其他类,可能的问题出在执行目录上,如我的项目名demo,则我执行成功的方式是在demo下的src文件夹里执行groovy com/xx/xx.groovy;还有个问题就是unable to resolve class,即导入的外部包无法正常被导入。因为我的外部包放在项目demo的l原创 2013-04-02 23:17:06 · 24009 阅读 · 0 评论 -
tomcat7.0无法启动 catalina.LifecycleException
刚接触web开发,启动TOMCAT7.0无法默认直接启动,会出现catalina.LifecycleException ,及 java.lang.NoSuchMethodError: javax.servlet.ServletContext.getSessionCookieConfig()错误信息,后来终于找到解决办法,原来是servlet3.0的包的错误,tomcat7在运行的时候,使用的不是自原创 2011-11-07 15:40:07 · 1515 阅读 · 0 评论 -
Grails 中iframe 页面无法正常显示
这几天初学Grails,突然遇到一个问题,搞了很久也没有结果,问题大致是这样的,我在页面中添加了一个iframe,但是郁闷的是无论怎么样,就是不显示,通过firedbug也能看到有结果,后来无意中觉得新的iframe页面title没写东西,就随便加了几个字,奇迹就这样出现了,问题解决了...虽然google也没找到什么原因,但是问题确实解决了...有知道的大虾请指出...原创 2011-11-21 10:28:35 · 1119 阅读 · 0 评论 -
java logger知识
J2SDK1.4的Java日志框架,其实总结起来主要是下面几点: 命名空间:空间外层包含内层的设置 Handler:可以将日志信息放入内容,定向到文件,或控制台等 Lever:规定日志的级别,低级别的日志可以被忽略 Formatter:负责将日志进行格式化,这样出来的东西比较好看一点 引言 作为一名Java 程序员,最熟悉的、使用最多的调用恐怕莫转载 2011-10-31 00:04:20 · 1307 阅读 · 0 评论