java
崔耀强
微服务架构设计
展开
-
java8 stream操作
Java8 stream操作原创 2022-09-09 15:14:56 · 978 阅读 · 2 评论 -
RPC、Webservice、RMI、JMS的区别
简介RPC(Remote Procedure Call Protocol)RPC使用C/S方式,采用http协议,发送请求到服务器,等待服务器返回结果。这个请求包括一个参数集和一个文本集,通常形成classname.methodname”形式。优点是跨语言跨平台,C端、S端有更大的独立性,缺点是不支持对象,无法在编译器检查错误,只能在运行期检查。Web ServiceWeb Service提转载 2016-06-24 15:42:19 · 791 阅读 · 0 评论 -
java.lang.OutOfMemoryError: unable to create new native thread
问题描述: 在启动了一个TCP服务端接受并处理客户端请求。客户端创建了一个定时器每隔一定时间启动2000个TCP客户端线程去连接服务端。程序运行了一段时间后服务端报一下错误:六月 08, 2016 1:36:58 下午 io.netty.util.internal.logging.Slf4JLogger warn警告: An exceptionCaught() event was fired,原创 2016-06-08 14:05:31 · 2488 阅读 · 0 评论 -
java jvm 参数 -Xms -Xmx -Xmn -Xss 调优总结
常见配置举例: 堆大小设置 JVM 中最大堆大小有三方面限制: 相关操作系统的数据模型(32-bt还是64-bit)限制; 系统的可用虚拟内存限制; 系统的可用物理内存限制. 32位系统下,一般限制在1.5G~2G;64为操作系统对内存无限制.我在Windows Server 2003 系统,3.5G物理内存,JDK5.0下测试,最大可设置为1478m.典型设置: Xmx35转载 2016-06-08 14:28:36 · 605 阅读 · 0 评论 -
UnsupportedClassVersionError: com/bh/test/EhcacheTest : Unsupported major.minor version 52.0
错误描述: 在eclipse中当把高版本的java project使用了低版本的来运行的时候报错Unsupported major.minor version 52.0。 解决方案: 在Properties–>JAVA Compiler-中的Compiler compliance level从1.8改成1.7,之后就可以运行了。原创 2016-06-13 14:48:53 · 961 阅读 · 0 评论 -
Java中数组的两种排序方法
介绍两种java数组排序的简单方法的使用:快速排序与冒泡排序。package com.bh.test;import java.util.Arrays;/**数组排序的两种方法 * @author cyq */public class ArraySort{ public ArraySort() { int[] a={5,4,2,4,9,1}; //quic原创 2016-05-04 15:23:25 · 831 阅读 · 0 评论 -
tcp socket客户端发送请求连接http服务
首先模拟一个http服务端,用于接收请求package bhpp.rsserver.test;import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.io.OutputStream;import java.net.InetSocketAddres原创 2016-07-07 13:30:55 · 4832 阅读 · 0 评论 -
java不同的编码格式下字符串所占用的字节数
单个英文字母: 字节数:1;编码:GB2312 字节数:1;编码:GBK 字节数:1;编码:GB18030 字节数:1;编码:ISO-8859-1 字节数:1;编码:UTF-8 字节数:4;编码:UTF-16 字节数:2;编码:UTF-16BE 字节数:2;编码:UTF-16LE单个中文汉字: 字节数:2;编码:GB2312 字节数:2;编码:GBK 字节数:2;编码:GB18原创 2016-07-28 15:58:27 · 1388 阅读 · 0 评论 -
java8日期API
package com.bh.test;import java.time.Instant;import java.time.LocalDate;import java.time.LocalDateTime;import java.time.LocalTime;import java.time.OffsetDateTime;import java.time.format.DateTimeFo原创 2016-06-22 16:15:17 · 799 阅读 · 0 评论 -
gson2.7官网下载
gson2.7官网下载地址:http://repo1.maven.org/maven2/com/google/code/gson/gson/2.7/或者http://download.csdn.net/detail/cuiyaoqiang/9570822原创 2016-07-08 14:11:13 · 10884 阅读 · 2 评论 -
Gson学习
package com.bh.test;import java.lang.reflect.Type;import java.util.ArrayList;import java.util.Date;import java.util.LinkedList;import java.util.List;import com.google.gson.Gson;import com.google.g原创 2016-07-08 16:34:00 · 519 阅读 · 0 评论 -
java RMI 开发步骤以及简单示例
RMI(Remote Method Invocation,远程方法调用)是用Java在JDK1.2中实现的,它大大增强了Java开发分布式应用的能力。Java作为一种风靡一时的网络开发语言,其巨大的威力就体现在它强大的开发分布式网络应用的能力上,而RMI就是开发百分之百纯Java的网络分布式应用系统的核心解决方案之一。其实它可以被看作是RPC的Java版本。但是传统RPC并不能很好地应用于分布式对象原创 2016-06-24 15:23:24 · 936 阅读 · 0 评论 -
MyEclipse10.x 安装 properties editor插件,properties文件显示中文
1、properties editor插件下载 2、解压出features、plugins文件 3、找到MyEclipse的安装目录(..\MyEclipse10.6\MyEclipse 10\dropins)下的dropins ,将那两个文件之间放在这个文件夹下面,重启MyEclipse10。 4、打开.properties文件得open with–>PropertiesEditor打开才行原创 2016-03-29 13:08:57 · 1360 阅读 · 0 评论 -
ByteBuffer 转换为String类型
ByteBuffer rBuffer = ByteBuffer.allocate(1024)Charset charset = Charset.forName("UTF-8");receiveText =charset.newDecoder().decode(rBuffer.asReadOnlyBuffer()).toString();原创 2016-05-09 14:59:35 · 3234 阅读 · 0 评论 -
java通过http协议与Freeswitch对接实现动态添加用户
FreeSwitch 支持将话单写入远程的 HTTP 服务器,在哪里你可以使用任何喜欢的编程语言处理话单以及写入任何可能的数据库。有三个模块可以实现他:mod_xml_cdr、mod_json_cdr 以及 mod_format_cdr。前两者分别产生 xml 和 json 格式的话单,最后一个模块则可配置产生 XML 或 JSON 格式的话单。 使用 mod_xml_cdr 为例:第一步: 在C原创 2016-05-04 15:55:22 · 8435 阅读 · 1 评论 -
java锁机制简介以及CAS操作
最近被问到CAS与synchronized区别,然后查找资料找到这篇文章,感觉不错在此分享。转载 2016-05-06 10:55:41 · 495 阅读 · 0 评论 -
用ant编译时出现“编码 UTF8 的不可映射字符“
问题描述: 用ant编译时出现“编码 UTF8 的不可映射字符“,这是因为编译的时候编码跟文件存储的编码方式不一样造成的。若build.xml中的编码格式为UTF-8,<?xml version="1.0" encoding="UTF-8"?>,那么ant用UTF-8编码方式编译源文件,如果源文件是用GBK编码的,那么就会出现“编码 UTF8 的不可映射字符“。解决方案: (方法1):<ta原创 2016-05-17 11:21:40 · 4102 阅读 · 0 评论 -
warning: 'includeantruntime' was not set, defaulting to build.sysclasspath=last; set to false for re
问题描述: 在Ant编译的时候报警告。 解决方案:<javac srcdir="${src}" destdir="${dest}">改为<javac srcdir="${src}" destdir="${dest}" includeantruntime="on"/>原创 2016-05-17 11:30:53 · 1367 阅读 · 0 评论 -
深入理解Java:SimpleDateFormat安全的时间格式化
想必大家对SimpleDateFormat并不陌生。SimpleDateFormat 是 Java 中一个非常常用的类,该类用来对日期字符串进行解析和格式化输出,但如果使用不小心会导致非常微妙和难以调试的问题,因为 DateFormat 和 SimpleDateFormat 类不都是线程安全的,在多线程环境下调用 format() 和 parse() 方法应该使用同步代码来避免问题转载 2016-05-17 14:46:47 · 454 阅读 · 0 评论 -
Java MD5加密算法
MD5即Message-Digest Algorithm 5(信息-摘要算法5),用于确保信息传输完整一致。是计算机广泛使用的杂凑算法之一(又译摘要算法、哈希算法),主流编程语言普遍已有MD5实现。将数据(如汉字)运算为另一固定长度值,是杂凑算法的基础原理,MD5的前身有MD2、MD3和MD4。 MD5算法具有以下特点: 1、压缩性:任意长度的数据,算出的MD5值长度都是固定的。原创 2016-05-17 15:01:08 · 548 阅读 · 0 评论 -
jxl导出excel文件
所需要的第三方jar包:jxl.jarpackage test;import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.io.OutputStream; import java.util.ArrayList; imp原创 2016-05-17 15:19:52 · 494 阅读 · 0 评论 -
使用poi将jtable数据导出到excel中
所需要的jar包下载 org.apache.poi.hssf 是Horrible SpreadSheet Format的缩写,通过HSSF,你可以用纯Java代码来读取、写入、修改Excel文件。HSSF 为读取操作提供了两类API:usermodel和eventusermodel,即“用户模型”和“事件-用户模型”。package com.bohua.util;import ja原创 2016-05-17 15:32:25 · 2468 阅读 · 1 评论 -
POI操作Excel常用方法总结
一、 POI简介 Apache POI是Apache软件基金会的开放源码函式库,POI提供API给Java程序对Microsoft Office格式档案读和写的功能。二、 HSSF概况 HSSF 是Horrible SpreadSheet Format的缩写,通过HSSF,你可以用纯Java代码来读取、写入、修改Excel文件。HSSF 为读取操作提供了两类API:us转载 2016-05-17 15:50:05 · 2350 阅读 · 0 评论 -
网络TCP建立连接为什么需要三次握手而结束要四次
举个打电话的例子: A : 你好我是A,你听得到我在说话吗 B : 听到了,我是B,你听到我在说话吗 A : 嗯,听到了 建立连接,开始聊天! 为什么TCP协议终止链接要四次?1、当主机A确认发送完数据且知道B已经接受完了,想要关闭发送数据口(当然确认信号还是可以发),就会发FIN给主机B。2、主机B收到A发送的FIN,表示收到了,就会发送ACK回转载 2016-05-18 08:42:17 · 386 阅读 · 0 评论 -
java8 long值转换成日期类型
java8中 long值转换成日期类型:DateTimeFormatter df= DateTimeFormatter.ofPattern("YYYY-MM-dd HH:mm:ss.SSS");df.format(LocalDateTime.ofInstant(Instant.ofEpochMilli(1471337924226L),ZoneId.of("Asia/Shanghai"))));原创 2016-08-16 17:51:04 · 15462 阅读 · 2 评论 -
Java 并发编程:volatile的使用及其原理
一、volatile的作用 在《Java并发编程:核心理论》一文中,我们已经提到过可见性、有序性及原子性问题,通常情况下我们可以通过Synchronized关键字来解决这些个问题,不过如果对Synchronized原理有了解的话,应该知道Synchronized是一个比较重量级的操作,对系统的性能有比较大的影响,所以,如果有其他解决方案,我们通常都避免使用Synchronized来解决问题。而v转载 2017-02-04 14:59:16 · 399 阅读 · 0 评论 -
hibernate与MyBatis的区别
查找别人所写文章,感觉下面的思路比较更深入化,写在这儿用以做记录。对于数据的操作,hibernate是面向对象的,而MyBatis是面向关系的面向对象致力于解决计算机逻辑问题,而关系模型致力于解决数据的高效存取问题。 我们不妨对比一下面向对象的概念原则和关系型数据库的不同之处: 面向对象考虑的是对象的整个生命周期包括在对象的创建、持久化、状态的改变和行为等,对象的持久化只...转载 2018-04-12 11:24:17 · 1355 阅读 · 0 评论 -
org.springframework.dao.InvalidDataAccessApiUsageException: No EntityManager with actual transaction
问题描述:org.springframework.dao.InvalidDataAccessApiUsageException: No EntityManager with actual transaction available for current thread - cannot reliably process 'remove' call; nested exception is ja...原创 2018-05-05 16:51:32 · 3617 阅读 · 0 评论 -
feignclient发送get请求,传递参数为对象。
feignclient发送get请求,传递参数为对象。此时不能使用在地址栏传递参数的方式,需要将参数放到请求体中。第一步:修改application.yml中配置feign发送请求使用apache httpclient 而不是默认的jdk UrlConnectionfeign.httpclient.enabled= true第二步:pom.xml中增加对apache h...原创 2018-07-26 10:27:43 · 24653 阅读 · 0 评论 -
spring中Constructor、@Autowired、@PostConstruct的顺序
其实从依赖注入的字面意思就可以知道,要将对象p注入到对象a,那么首先就必须得生成对象p与对象a,才能执行注入。所以,如果一个类A中有个成员变量p被@Autowired注解,那么@Autowired注入是发生在A的构造方法执行完之后的。如果想在生成对象时候完成某些初始化操作,而偏偏这些初始化操作又依赖于依赖注入,那么就无法在构造函数中实现。为此,可以使用@PostConstruct注解一...转载 2018-09-10 09:37:14 · 311 阅读 · 0 评论 -
FastJson解析内部类的实例时报错:No default constructor for entity
因为非静态内部类,是不能直接进行实例化,如:Model.Data data = new Model.Data()编译会出错,如果我们想实例化非静态内部类,则必须要有一个外部类的实例,如:Model model = new Model();Model.Data data = model.new Date();由于无法直接创建内部类的实例,所以fastJson解析数据时会报错无法创建实例...原创 2019-03-14 10:29:40 · 1862 阅读 · 0 评论 -
javamail imap 网易邮箱 NO Select Unsafe Login. Please contact kefu@188.com for help
问题描述: 第三方邮件客户端如心蓝邮件批量管理助手使用IMAP收网易邮件提示:`NO Select Unsafe Login. Please contact kefu@188.com for help`,同时网页登录邮箱查看会收到一封标题为“网易邮箱提醒:一次被阻止的收信行为”的邮件,大致意思就是告诉你第三方邮件客户端不安全,推荐使用网页出品的客户端。而其它邮件如新浪搜狐QQ邮箱则不会有该...原创 2019-03-23 08:46:34 · 14187 阅读 · 1 评论 -
Spring Data JPA 数据加密存储
数据安全永远是个大问题。用户数据存储到数据库中,如果不采取加密手段,那么只要有权限访问数据库的人,都能直接明了的看到用户所有的隐私数据,尤其在中小型公司中,对于数据库权限的管理基本上都是由开发人员直接进行维护管理,这样对于数据安全并不是一个好事,因此如果能将用户私密数据加密存储到数据库中,那么就能稍微提升一些数据安全性。本文讨论的是在Spring Data JPA 中使用 AES 加解密来存储...转载 2019-05-11 10:15:55 · 3251 阅读 · 2 评论 -
Spring Cloud Zuul 在版本Edgware.RELEASE断路超时配置无法生效问题
问题藐视:Spring Cloud Zuul 在版本Edgware.RELEASE断路超时配置无法生效问题。# 断路器超时时间hystrix: command: default: execution: isolation: thread: timeoutInMilliseconds: 30000...原创 2019-05-30 14:51:22 · 458 阅读 · 0 评论 -
String.format()方法 “%1$01d” "%1$tY-%1$tm-%1$td %1$tH:%1$tM:%1$tS"日期转换等记录
用于记录,方便以后使用的时候查看。 /** * %后的1指第一个参数,当前只有var一个可变参数,所以就是指var。 * $后的0表示,位数不够用0补齐,如果没有这个0(如%1$nd)就以空格补齐, * 0后面的n表示总长度,总长度可以可以是大于9例如(%1$010d),d表示将var按十进制转字符串,长度不够的话用0或空格补齐。 */ @Test public void...原创 2019-05-31 09:13:03 · 4296 阅读 · 0 评论 -
zuul.ignoredServices=*
Spring Cloud Zuul 与 Spring Cloud Eureka 可以实现无缝对接实现面向服务的路由。我们让路由的path映射到具体的服务上,而具体的url交由Eureka的服务发现机制去自动维护。zuul默认路由根据服务名全小写加路由API,如我们有BASEMICROSERVICE,通过zuul访问BASEMICROSERVICE服务API,http://IP:port/bas...原创 2019-08-31 08:50:57 · 4412 阅读 · 0 评论 -
Docker配置使用说明书(httpd、nginx、java程序)
1.Docker介绍 Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口。2.docker安装 1)更新yumyum update2)安装dockeryum install docker3)安装完成后...原创 2018-03-13 09:04:10 · 1673 阅读 · 0 评论 -
java 自动获取广播地址
NetworkInterface netInterface = NetworkInterface.getByInetAddress(InetAddress.getLocalHost()); String broadCastIp = null; if (!netInterface.isLoopback()&& netInterface.isUp()) {原创 2017-04-12 15:05:55 · 2210 阅读 · 1 评论 -
Java stack转List
因为stack实现了List接口,则可以将stack转换为List:List<RoadWay> o = new ArrayList<RoadWay>(stack);原创 2015-10-09 12:03:25 · 8121 阅读 · 0 评论 -
Java 8 Stream 如何还原为集合
由于 Java 对集合的函数式操作并非原生态的,必须对得到的 stream() 进行过滤等操作,之后还是一个 stream(),一般我们最后返回给调用者需还原为相应的集合。这无法与 Scala 的 for … yield 操作相比。例如下面在使用 Stream API 过滤获得所有大于 3 的数字之后,方法的返回值还应该还原为 List, 这个需求非常自然List<Integer> l转载 2016-10-25 09:04:21 · 6276 阅读 · 0 评论