
java
文章平均质量分 58
J_小浩子
我把在学习过程中的bug发表在优快云上,才疏学浅,班门弄斧。
展开
-
java.security.NoSuchAlgorithmException: Cannot find any provider supporting AES/ECB/...
原因我也不清楚,百度很多说法,这里只说解决办法:jdk1.8、window环境1.在jre/lib/ext下放一个jar包: bcprov-jdk15on-1.66.jar2.在jre/lib/security下的java.security文件添加security.provider.10=org.bouncycastle.jce.provider.BouncyCastleProvider最后坑来了,如果安装jdk的同时,也安装了jre,就是下面这种:那么,上面的改动一定要放在下面的单独jre目录原创 2022-03-06 11:49:57 · 2829 阅读 · 1 评论 -
记录常用的代码工具(三)--Id生成策略
生成唯一id,用于日志、业务唯一标识。一:uuidpublic static String getMD5String(String str) { try { // 生成一个MD5加密计算摘要 MessageDigest md = MessageDigest.getInstance("MD5"); // 计算md5函数 md.update(str.getBytes()); // digest()最后确定返回md5 ha原创 2022-01-17 15:27:51 · 382 阅读 · 0 评论 -
记录常用的代码工具(二)--Poi工具类
这里用的是apache的poi,提供API给Java程序对MicrosoftOffice格式档案读和写的功能,其中使用最多的就是使用POI操作Excel文件依赖的jar包:<dependency> <groupId>org.apache.poi</groupId> <artifactId>poi</artifactId> <version>3.17</version></dependenc原创 2022-01-17 15:23:28 · 889 阅读 · 0 评论 -
记录常用的代码工具(一)--HttpClient
在企业环境中,httpclient基本是http最常用的工具,根据自己的开发经历,整合了一个通用的工具类包:<dependency> <groupId>commons-httpclient</groupId> <artifactId>commons-httpclient</artifactId> <version>3.1</version></dependency>工具类:单例模式支持多种请原创 2022-01-17 11:34:56 · 622 阅读 · 0 评论 -
开发者如何定义产品的对外协议
背景:近期遇到的一个问题,产品设计了好了一个方案,如何让开发者转化成技术上的协议,给到客户,能给予产品和技术评估。经过一段时间的探索,记录了一个方案。1.理解产品原型图,一定要非常的仔细2.将产品原型图的关系转化成数据库的关系3.将数据库关系转化成能支持的对外json格式第一步就不说了,先说说第二步,为什么要转化成数据库格式,因为产品的各个关系,最终的体现就是数据库关系,把产品划分到最小粒度,每个粒度表示一个数据库的字段,在通过组合成一张数据库网。为第三步做铺垫,产品能提供什么样的对外协议,可以由数原创 2021-03-02 20:17:04 · 231 阅读 · 0 评论 -
普通日志的记录
在很多情况下,相信查日志是一件很频繁的事情,那么怎么记录日志,会让查验问题的效率提高呢。其实也很简单,总结起来就是两个方面:全面精要日志的查询满足满足两个条件,大部分的问题可以通过简单快速的查询方式,少部分需要深入的问题可以直接使用代码打印的日志。对于大部分的日志查询,可以通过平台实现,比如,服务器在自己的机房,可以搭个elk,如果服务器在第三方,可用第三方的日志平台。这一块的日志,要全面,包含每个节点、模块。举个例子:一个完整的业务由好几个服务组成,那么日志就要把每个服务参与的方法,通过切面原创 2020-12-17 16:59:36 · 243 阅读 · 0 评论 -
高并发下的JSON处理方案
前提条件: JSON 的开源框架选择Jackson直接上货:ObjectMapperObjectMapper提供了读写JSON的功能支持pojo和流式构造是ObjectMapper是非常轻量级的操作,通常适合在每次调用时创建所有配置都是完全线程安全的在整个工程中涉及到json的处理通用方法:public class JsonParser { // 线程安全的,可以采用全局共享 private static volatile ObjectMapper objectMappe原创 2020-10-12 17:27:45 · 1273 阅读 · 0 评论 -
内部http接口调用推荐用Feign
什么是Feign,摘自官方文档的介绍:Feign是一个声明式web服务客户机。它使编写web服务客户机变得更容易。使用Feign创建一个界面并注释它。它支持可插入注释,包括伪注释和JAX-RS注释。Feign还支持可插拔的编码器和解码器。Spring Cloud增加了对Spring MVC注释和使用Spring Web中默认使用的httpmessageconverter的支持。Spring Cloud集成了Ribbon和Eureka,以及Spring Cloud load均衡器,在使用Feign时提供负载原创 2020-09-02 16:37:41 · 581 阅读 · 0 评论 -
Mybatis in查询传入字符串参数最好的解决方法
今天遇到一个问题,要在mybatis的语句中把string传入in,如果用#{} ,则会被解析成一个参数,比如:#(‘aa,bb,cc’),网上有一个解决方法,使用KaTeX parse error: Expected 'EOF', got '#' at position 6: {},不过#̲传入参数可以预防sql注入攻击…不行,所以不推荐该方法。我自己想了一个笨方法,如果能确定in的选项个数不多,10个以内,可以采用逐个添加,比如:xxx xxx(... @Param("aa原创 2020-08-05 20:08:30 · 2092 阅读 · 1 评论 -
springboot 配置多数据源
原理很简单,是利用spring的ioc,可以这么理解,数据源也是一个bean,这个bean读取一套数据库连接信息,多数据源便是多创建几个这样的bean,只要名字不同即可。如下:spring: datasource: test1: driver-class-name: xxx jdbc-url: xxx username: xxx password: xxx test2: driver-class-name: xxx原创 2020-06-30 15:56:11 · 285 阅读 · 0 评论 -
springboot、springcloud、dubbo版本兼容
开发的时候版本不兼容挺折腾的,springboot、springcloud、dubbo这三者之间的兼容,以springboot为中间连接:springbootdubbo-spring1.x0.1.2.RELEASE2.0.0~2.0.90.2.1.RELEASE2.1.x0.2.1.RELEASEspringcloudspringbootAngel版本兼容Spring Boot 1.2.xBrixton版本兼容Spring Boot原创 2020-06-06 12:07:53 · 1517 阅读 · 0 评论 -
spring项目中单例模式的最简便实现
背景:引用客户端的类,这个类很庞大,创建耗费的资源也大,我希望能复用,创建一次就足够了,因此想到了单例模式,于是创建了一个工具类,在工具类里面写一个创建、调用上述类的方法,再保证创建方法只能被执行一次,赋值给调用的方法,这样就能实现在系统中只创建一次了,写着写着,发觉有点麻烦…忽然想到了spring有一个注解@Bean,用@Bean就可以,spring只会调用一次,然后spring会将这个bea...原创 2020-05-06 16:39:46 · 578 阅读 · 0 评论 -
java枚举类型的使用小窍门
我直接说使用背景,在涉及到跟第三方的交互中,网络状态、数据状态/类型等等都是半固定的,可以用常量,也可以用变量,还可以用枚举类型,个人感觉枚举是维护起来最轻松,也对系统影响最小的。比如以下的例子,用来定义对第三方资源的操作:public enum Operate { QUERY(xxx,xxx); DELETE(xxx,xxx, xxx); ...原创 2020-04-07 17:35:15 · 326 阅读 · 0 评论 -
Idea 通过配置 Vm options 参数选择配置文件
我先说一个场景:如果在idea开发中,设计到好几个环境,开发环境、内测环境、线上环境…这么多个环境对应的配置参数,像数据库连接参数、缓存参数…管理起来蛮麻烦的这里介绍一种方法,可以简单的切换配置文件,利用idea设置Vm options 参数,以一个Test类为例:public class Test { public static void main(String[] args) ...原创 2020-03-19 11:32:38 · 7645 阅读 · 1 评论 -
git拉取远程分支、开发完合并到主分支
1.从Git仓库中拉取一个分支到本地//初始化本地Git仓库git init //将本地仓库和远程仓库相关联git remote add origin 地址//获取远程的dev分支git fetch origin dev //在本地创建分支dev,并将远程分支develop的信息同步到本地分支devgit checkout -b dev origin/deve2.在dev...原创 2020-02-26 18:08:36 · 3103 阅读 · 0 评论 -
清理数据策略
1.为什么要清理数据?硬盘的空间不会无限大,数据库的数据也不可能一直增长,为了保证系统的运行,需要让数据量保持在一个区间内可控。2.清理什么样的数据?清理数据的策略主要有两个方面:一个是数据库的数据,一个是硬盘数据(缓存数据也算)3.如何清理?清理数据的方法有很多,如果系统已经上线了,那么数据清理是作为该系统的一部分的。最开始上线的时候,我们采用定期清理,只让系统保存最近一个月(或者一...原创 2020-01-22 17:56:30 · 1415 阅读 · 1 评论 -
记录一些kafka的常用命令
1.启动zookeeperbin/zkServer.sh start config/zookeeper.properties2.关闭zookeeperbin/zkServer.sh stop config/zookeeper.properties3.启动kafkabin/kafka-server-start.sh config/server.properties4.关闭kafka...原创 2020-01-02 15:46:22 · 169 阅读 · 0 评论 -
程序员之不可忽视技能-编写FPA文档
在我的理解中,一个项目从需求到立项到交付再到落地,编码过程其实只占用了30%的部分。其他的部分也许跟开发人员关系不大,但是后期在项目验收/交付时,设计到的文档中,有一个FPA文档,就需要开发人员协助。先解释下概念FPA:功能点估算法DET:动态控件FTR:数据子集其实说白了,FPA就是一个功能点列表,反映出整个项目的功能点数。功能点的划分子系统为一级功能子系统中的模块为二级功...原创 2019-12-18 16:47:39 · 1126 阅读 · 0 评论 -
fasfdfs 实际应用整合思路
如果需要用到fasfdfs,那相信对fasfdfs 有过基本的了解,原理和应用就不说了,说下核心的,怎么快速的将fasfdfs 整合到项目中来。首先第一步,求助大神,在github上搜索fasfdfs :跟java相关就有挺多的,第一第二的星星都比较多,我就选第一个了。下载下来,导进本地eclipse,看看人家的源码,对源码的结构有个大致的了解,就看看测试用例,怎么使用,其实像在githu...原创 2019-11-21 15:06:20 · 435 阅读 · 0 评论 -
java poi 将word转成html,ppt转成图片
Java 容易被忽视的poi包Poi提取技术是java中一大亮点。前几日在做项目时需要将ppt转化为图片,将word文档输出的功能。在百度搜了些资料,整理了一下,借用前辈们的经验整合了这两个小小的类 文章原出两处:http://vtrtbb.iteye.com/blog/601267 http://pengenjing.iteye.com/blog/190转载 2015-12-27 21:54:28 · 11107 阅读 · 5 评论 -
git将本地项目推送到远程
在团队开发做项目和版本控制时,免不了要使用git,如果已经在本地和oschina.net创建了仓库,那我们只需要按时将项目推送到远程即可,开始吧:1.初始化将自己的项目放入缓存区git initgit add ....(项目文件夹/文件)2.提交项目到本地的仓库git commit -m "(对该项目的说明)"3.创建一个远程分支:git remote add orig原创 2016-01-22 19:09:39 · 13170 阅读 · 0 评论 -
数据结构(一)
小编在寒假期间,在家里看了郝斌老师的数据结构,于是,根据韩斌老师的视频,小编整理了如下8偏数据结构。数据结构概念: 抛砖引玉:现实生活中存在的大量而复杂的问题,比如,一个班级,我们可以使用数组来实现。全国人口我们可以用链表来实现。铁路系统可以使用图结构来实现。公司的职员关系可以用树结构来实现。等等 那么我们解决问题的方法就是算法,而表示问题的数据类型和存储结构则为数原创 2016-02-21 21:33:13 · 1379 阅读 · 3 评论 -
数据结构(二)
数据结构-线性结构:数组、链表数组的原理,底层实现。在c语言中,有int arr[],java有String arr[],ArrayList。但他们在底层是如何实现的,比如ArrayList的add,remove函数的底层c代码,下面是完整的程序:#include #include #include struct Arr{ int * pBase;//储存的数组的首地址 int原创 2016-02-21 21:43:22 · 675 阅读 · 0 评论 -
linux上破解myeclipse2014
开门见山吧,自己在百度随便下个注册机。然后在linux终端输入:java -jar cracker.jar 后面就跟windows一样了为什么会如此简单呢?再windows下,通常是双击.bat文件,但是这是针对doc的,linux不管用。下面我们来看看cracker.jar的结构,再myeclipse建一个java工程,把cracker.jar导进去,看吧,都是熟悉的.class 文件原创 2016-04-28 22:55:23 · 3954 阅读 · 2 评论 -
fedora 一命令安装 maven
今晚要在电脑安装maven,查了几篇博客,都遇到一些小问题而没有成功。无聊之下,在终端输入sudo dnf install maven 居然可以!!!待自动安装完后,输入 mvn -v原创 2016-04-24 22:45:19 · 1668 阅读 · 0 评论 -
在linux(fedora23)上开发java
若长期使用windows,用久会感觉越来越卡。加上我的电脑配置是4G内存+集显,平常开个myeclipse+google+mysql/sql server就开始卡了。。。更不用说开oracle,idea。于是毅然决然的改用linux,以前在虚拟机玩过redhat,现在决定用用fedora23。用了差不多一个月了,感觉还是可以的,毕竟,java属于开源世界麻。也该让java回家了下面展示一些原创 2016-04-19 20:37:16 · 3387 阅读 · 2 评论 -
Thinking in Java 中闪耀的星星(二)
26.如果要实现某些方法,比如倒序顺序,建议用匿名内部类 看代码:第一个方法是倒序,第二个是打乱顺序public class MultiIterableClass extends IterableClass{ public Iterable<String> reversed(){ return new Iterable<String>(){ publ原创 2016-09-11 09:49:59 · 1104 阅读 · 0 评论 -
Thinking in Java 中闪耀的星星(三)
41.容器集合的选择 List容器无非分为两大种,基于数组和基于链表:数组有索引,所以查找快,链表插入删除不需要移动全部元素,插入删除快。 ArrayList/Vector查找快,LinkedList插入删除元素快。而Queue什么都快,但是队列先入先出,没有其他集合灵活。 Set也是大体分为两种,基于红黑树的Tree和基于hash算法的Hash(Set的元素是不能重复的,List可以重复)。原创 2016-09-11 10:02:01 · 909 阅读 · 0 评论 -
Thinking in Java 中闪耀的星星(四)
51.对象序列化的具体应用 这也是书里的一个例子,挺有意思的。结合模板方法模式模拟CAD将用户作业的信息保存在文件中:import java.io.*;import java.util.*;abstract class Shape implements Serializable{ public static final int RED=1,BLUE=2,GREEN=3; pri原创 2016-09-11 10:08:46 · 1029 阅读 · 0 评论 -
Thinking in Java 中闪耀的星星(五)
61.死锁及死锁解决方法 死锁是并发编程中可能不小心遇到的陷阱,简而言之就是“千军万马过独木桥,挤在一起,谁也别想过”。给定一个场景,5个哲学家围成一个圆吃饭,只有5根筷子,每一根都放在两个哲学家中间,这样每个哲学家的左右均各有一根筷子,每个哲学家吃饭的时候都是先拿左边的筷子,再拿右边的筷子,吃饭的时候,哲学家可能会思考,思考时不会拿筷子吃饭。所以情况可能是这样的:开饭!有一些哲学家在思考,不吃饭原创 2016-09-11 10:14:20 · 995 阅读 · 0 评论 -
Thinking in Java 中闪耀的星星(一)
《Thinking in java》做为进阶是一个不错的选择,下面是我对书的一些理解: 1.什么是面向对象编程? 1.)我们所处的世界是由对象构成的,java的设计的本质也是基于世界的!在理解什么是面向对象要先清楚“自顶而下”的设计思想,就是把大的方面细分为小的方面,直到原子性,比如,早上洗漱,细分为洗脸,刷牙,刷牙细分为挤牙膏,牙刷刷动牙齿… 2.)为什么是面向对象?举个例子:人类的上层是灵原创 2016-09-11 09:44:56 · 1514 阅读 · 0 评论 -
书法与编程
很久之前就想写该文章了,文章没有缜密的构思,随心而写。 编程——严谨自然的艺术 如果把我们所处的世界切割成不同的平行切面,那么有一个是面向过程的C世界,也有一个是面向对象的世界,拿Java来说,继承、多态、封装、抽象及其基本语法足以反映出世界的本质——物质性。生物的界、门、纲、目、科、属、种对应继承,而继承关系中的父类基本技能可以被不同的子类主体使用,世界的每原创 2016-08-26 10:28:24 · 2006 阅读 · 0 评论 -
EffectiveJava(Item: 1 to 12)
In the last five weeks. I was reading the “Effective Java”, which is a truly excellent book and I make some notes about it. I have been learning Java for nearly two years. However, I seldom think abou原创 2016-11-06 21:21:43 · 804 阅读 · 1 评论 -
Effective Java(Item: 13 to 22)
Three:Class and Interfaces Item 13: Minimize the accessibility of classes and members The rule is simple: make each class or member as inaccessible as possible. This concept, knows as information原创 2016-11-06 21:29:31 · 875 阅读 · 0 评论 -
Effective Java(Item: 23 to 37)
Four: Generics Item 23: Don’t use raw types in new code 1).If you use raw types, you lose all the safety and expressiveness benefits of generics; 2).You will lose type safety if you use a raw type l原创 2016-11-06 21:36:46 · 1883 阅读 · 0 评论 -
Effective Java(Item: 38 to 56)
Six:Methods Item 38: Check parameters for validity Most methods and constructors have some restrictions on what values may be passed into their parameters. And constructors represent a special cas原创 2016-11-06 21:48:34 · 1314 阅读 · 0 评论 -
Effective Java(Item: 57 to 78)
Eight: Exceptions Item 57: Use exceptions only for exceptional conditions Exceptions are, as their name implies, to be used only for exceptional conditions; they should never be used for ordinary原创 2016-11-06 21:59:41 · 1217 阅读 · 0 评论 -
《深入理解Java虚拟机》--Understanding the Jvm(上)
《深入理解Java虚拟机》–Understanding the Jvm(上)前言:跟”Thinking in Java”不同的是,《深入理解Java虚拟机》是一本修炼内功心法的书。因为虚拟机对开发者来说,几乎是屏蔽的,可能了解虚拟机内部运转对敲代码不会有直接的效果,但是对读程序,理解程序如何执行的认识会更深一步。”Thinking in Java”从代码层面上分析代码的设计和高效用法,既有现学现用的原创 2016-10-07 12:30:29 · 1869 阅读 · 0 评论 -
《深入理解Java虚拟机》--Understanding the Jvm(下)
21.虚拟机字节码执行引擎 执行引擎是Java虚拟机最核心的组成部分之一。所有的Java虚拟机的执行引擎都是一致的:输入的是字节码文件,处理过程是字节码解析的等效过程,输出的是执行结果。解析字节码过程的重点是虚拟机的方法调用和字节码执行。22.运行时栈帧结构 栈帧是用于支持虚拟机进行方法调用和方法执行的数据结构,它是虚拟机运行时数据区中的虚拟机栈的栈元素。在下图的栈帧概念结构中,活动的线程只有位原创 2016-10-07 12:51:34 · 2016 阅读 · 0 评论 -
《Thinking In Java》 VS 《Effective Java》 VS 《深入理解Java虚拟机》
今天刚考完试,在5天以前的前4个月时间里,我很庆幸自己选了一个看书的学习途径。从上个学期的暑假到现学期的11周里面,读了《Thinking In Java》、《深入理解Java虚拟机》和《Effective Java》,感悟颇多。首先先说明一下,我以前是看视频学习的,就做过两三个学校的网站,都已经上线在使用。没做过什么特别高大上的东西,所以我是处在新手的角度去读书的,我也知道自己的理解很浅,不原创 2016-11-16 22:34:04 · 23383 阅读 · 17 评论