java
文章平均质量分 92
黑尾土拨鼠
远处的是风景,近处的才是人生
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
Java多数据源的三种实现方式
在Java中实现多数据源的场景比较常见,尤其是在大型企业级应用中。通常,这种需求来源于业务系统的复杂性,例如需要访问多个不同的数据库或者实现读写分离。在Java中,特别是使用Spring框架时,实现多数据源有多种方法。原创 2024-08-27 11:06:46 · 3751 阅读 · 0 评论 -
hadoop实战(三) 使用HDFS操作文件
一、hadoop简介 HADOOP集群具体来说包含两个集群:HDFS集群和YARN集群,两者逻辑上分离,但物理上常在一起 HDFS集群:负责海量数据的存储,集群中的角色主要有 NameNode / DataNode YARN集群:负责海量数据运算时的资源调度,集群中的角色主要有 ResourceManager /NodeManager二、hdfs的工作机制(一)、概述 ...原创 2018-11-14 14:44:16 · 949 阅读 · 0 评论 -
hadoop实战(二)ubuntu18.04搭建hadoop集群
一、 安装JDK 官网下载jdk压缩包并解压, vim /etc/proflie 或者修改vi ~/.bashrc 加上如下:export JAVA_HOME=/home/hadoop/jdk1.8.0_161export HADOOP_HOME=/home/hadoop/hadoop-2.9.1export PATH=$PATH:$JAVA_HOME/bin:$HADOOP_H...原创 2018-11-05 09:59:46 · 1453 阅读 · 3 评论 -
常用工具类--路径工具类
获取图片路径public static String getPicturePath(String pathType, String pathCategory) { String strResult = ""; HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder .getReque...原创 2018-10-29 09:08:40 · 715 阅读 · 0 评论 -
常用工具类--HttpClient常用请求(Post/Get)
HttpClient请求获取数据 引入相应的包import org.apache.http.NameValuePair;import org.apache.http.client.entity.UrlEncodedFormEntity;import org.apache.http.client.methods.CloseableHttpResponse;import org.apache...原创 2018-10-17 10:37:42 · 1136 阅读 · 0 评论 -
常用工具类--freemarker生成文件
freemarker使用 引入包import freemarker.template.Configuration;import freemarker.template.Template;import freemarker.template.TemplateException;import org.springframework.web.servlet.view.freemarker.F...原创 2018-10-18 09:09:54 · 2164 阅读 · 0 评论 -
常用的Web服务架构
一、单DB架构 单DB架构一般就是nginx直接upstream请求到后端Tomcat,扩容时基本是增加新的Tomcat实例,然后通过Nginx负载均衡upstream过去,此时数据库还不是瓶颈,但是当访问量达到一定级别后数据库的压力就上来了,单个数据库可能扛不住,可以通过分表分库或者读写分离加缓存来解决。二、DB+Cache/数据库读写分离架构 此时通过使用数据库读写分离或者...原创 2018-09-26 22:08:30 · 9285 阅读 · 0 评论 -
java面试一道令人怀疑人生的java面试题
题目比较简单,写一个swap方法,交换两个Integer的值。方法一使用中间变量直接交换private static void swap(Integer num1,Integer num2){ Integer tmp = num1; num1 = num2; num2 = tmp; } 当然,如果仅仅按照以上方结果是不能...原创 2018-09-20 15:07:08 · 1058 阅读 · 0 评论 -
部分JVM常用配置指令
参数 描述 -XX:MaxPermSIze 永久代: 上限 -XX:+/-UseTLAB 虚拟机是否使用TLAB -XX:+HeapDumpOnOutOfMemoryError 虚拟机内存溢出异常时Dump当前内存堆转存快照 -Xms20m 堆最小值 -Xmx20m 堆最大值 -Xmn 用来设置堆内新生代的大小...原创 2018-08-20 14:11:40 · 269 阅读 · 0 评论 -
hadoop实战(五)MAPREDUCE操作
一、基础概念 Maapreduce是一个分布式运算程序的编程框架,是用户开发“基于hadoop的数据分析应用”的核心框架;Mapreduce核心功能是将用户编写的业务逻辑代码和自带默认组件整合成一个完整的分布式运算程序,并发运行在一个hadoop集群上;(一)、为什么使用MAPREDUCE 1、海量数据在单机上处理因为硬件资源限制,无法胜任 2、一旦将单机版程序扩展到集群来分...原创 2018-12-11 10:20:16 · 477 阅读 · 0 评论 -
Springboot AOP注解方式获取请求参数及返回值并发送至rabbitMQ
业务需求需要将http请求参数与返回值采集,考虑使用AOP形式,获取到请求值与返回值之后将数据封装为json字符串发送到rabbitMQ中,消费者消费数据后将处理后的数据保存至mongodb或其他数据库中,以下为设置代码构建:自定义注解@Target({ElementType.PARAMETER, ElementType.METHOD})@Retention(RetentionPoli...原创 2019-03-19 17:19:38 · 13266 阅读 · 1 评论 -
常用工具类--上传文件
文件上传 将文件上传至服务器,然后通过nginx访问 其中localPath是服务器上文件保存地址,serverIp是文件访问路径public static String upload(HttpServletRequest request, MultipartFile file, String localPath, String serverIp,Long fileNameCode)...原创 2019-06-26 09:07:43 · 1242 阅读 · 2 评论 -
SpringBoot +CXF 发布WebService服务
一、pom文件jar包引入 <!--cxf引入--> <dependency> <groupId>org.apache.cxf</groupId> <artifactId>cxf-spring-boot-starter-jaxws</artifactId> <version>3.2.4</ve...原创 2019-05-27 09:10:38 · 892 阅读 · 2 评论 -
SpringBoot +CXF 发布WebService服务后其他http请求不能使用
一、概述 因为项目需要,需要再原先项目中发布或者调用WebService服务,考虑到集成Springboot框架,于是采用CXF框架。 WebService注册服务如下:@Configurationpublic class CxfWebServiceConfig {// @Autowired// private Bus bus;// @Autowired...原创 2019-05-22 15:51:06 · 3116 阅读 · 2 评论 -
HBase配置及操作示例
原创 2019-04-21 20:45:32 · 414 阅读 · 0 评论 -
Log4j写入日志到Flume
一、log4j配置依赖包引入<dependency> <groupId>org.apache.flume.flume-ng-clients</groupId> <artifactId>flume-ng-log4jappender</artifactId> <version>1...原创 2019-04-12 16:08:57 · 721 阅读 · 1 评论 -
Springboot项目通过maven打jar包,但在其他项目中无法import
在springboot中打完jar包,jar包中包含工具类,自定义注解等,但是在其他项目中通过pom文件导入时,虽然能够导入成功,但是无法在代码中import相关的类。查阅相关资料得知,是打包插件的原因,springboot项目中自带的maven插件所打的jar不能引入,换成普通的maven插件即可 springboot中的maven插件如下<build> <p...原创 2019-03-22 10:57:29 · 2592 阅读 · 6 评论 -
SpringBoot集成kafka
生产者1、pom文件中引入相关的包&lt;dependency&gt; &lt;groupId&gt;org.springframework.boot&lt;/groupId&gt; &lt;artifactId&gt;spring-boot-starter-web&lt;/artifactId&gt; &lt;/dep原创 2019-03-18 09:38:13 · 466 阅读 · 0 评论 -
微信小程序生成二维码并通过fastdfs保存
最近在做一个匹配类的微信小程序,需要用到二维码分享功能,下面就分享一下开发步骤 一、获取appid和secret 获取微信小程序的appid和secret可以直接去微信公众平台上获取,在设置>>开发设置里面即可找到 二、获取openid 要获取当前登陆者的openid,需要先获取登录动态code,代码如下: wx.login({...原创 2018-08-20 10:22:03 · 2062 阅读 · 0 评论 -
springboot+thymeleaf实现分页
现在公司大多数都实现了前后端分离,前端使用Vue、React、AngularJS 等框架,不用完全依赖后端,但是如果对于比较小型的项目,没必要前后端分离,而Springboot与thymeleaf搭配是个不错的选择。 在实际应用中,我们经常会对一些展示数据的页面进行分页,java后端分页使用PageHelper是个非常不错的选择,下面将会描述如何使用PageHelper+thym...原创 2018-08-26 20:34:01 · 10115 阅读 · 1 评论 -
从零开始搭springcloud(七) SpringBootAdmin
一、简介 为了更好的管理各个服务,可以使用SpringBootAdmin与Eureka结合来管理 二、配置 POM文件配置如下: <dependency> <groupId>org.springframework.cloud</groupId> <artifact...原创 2018-05-20 17:30:16 · 1554 阅读 · 1 评论 -
从零开始搭springcloud(六) 链路追踪zipkin
一、简介 微服务架构属于一个分布式架构,它是按照业务划分服务单元,一个分布式系统往往有很多个服务单元。由于服务单元数量比较多,业务的复杂性,如果出现了错误和异常,很难去定位。所以微服务架构中,必须实现分布式链路追踪,去跟进请求访问路径,以及访问的顺序,这样一旦某个环节出现问题,就可以快速去定位。具体的描述可以去参考优快云上的博客。 二、zipkin-server搭建 ...原创 2018-05-20 17:05:31 · 1509 阅读 · 1 评论 -
从零开始搭springcloud(五) zuul网关实现
一、简介 在Springcloud中用zuul来实现网关功能,客户端的请求首先经过负载均衡Ngnix,再到达服务网关(zuul集群),然后再到具体的服务。Zuul的主要功能是路由转发和过滤器。路由功能是微服务的一部分,比如/api/server1转发到到server1服务。zuul默认和Ribbon结合实现了负载均衡的功能。 二、搭建 首先是POM文件 ...原创 2018-05-20 16:51:28 · 850 阅读 · 0 评论 -
从零开始搭springcloud(四) ribbon和feign实现负载均衡
一、简介 Springcloud有两种方式实现负载均衡调用服务,一种是ribbon+restTemplate,另一种是feign,首先是使用前者。 二、ribbon+restTemplate 首先配置pom: &lt;dependency&gt; &lt;groupId&gt;org.springframework.cloud&lt;/gr...原创 2018-05-20 15:20:32 · 292 阅读 · 0 评论 -
从零开始搭建SpringCloud(三)断路器Hystrix Turbine
一、序原创 2018-05-20 11:19:06 · 1098 阅读 · 0 评论 -
SpringBoot使用PageHelper进行分页
因为SpringBoot就是为了实现没有配置文件,因此之前手动在Mybatis中配置的PageHelper现在需要重新配置,而且配置方式与之前的SSM框架中还是有点点区别。原创 2017-11-17 17:04:51 · 15749 阅读 · 1 评论 -
java内存区域与内存溢出异常
最近在看java虚拟相关知识,把每天看到的一些内容做一个归纳总结。一、运行时数据区域分类1.程序计数器 程序计数器可以作为当前线程所执行的字节码的行号指示器,对于程序分支、循环、跳转、异常处理、线程恢复等基础功能都需要依赖这个计数器来完成. 通常,在一个确定的时刻,一个处理器都只会执行一条线程中的指令,因此,每条线程都要一个独立的程序计数器原创 2017-11-09 22:50:58 · 226 阅读 · 0 评论 -
Encache中的参数解释
Encache中的参数解释因为项目需要,要是用到Encache来昨为缓存使用,配置文件中的各类参数如下:<cache name="storeCache" maxElementsInMemory="10000" eternal="false" timeToIdleSeconds="0"原创 2017-11-09 10:32:47 · 895 阅读 · 0 评论 -
深入理解Java (一) Java对象的创建
(一)、对象的创建 虚拟机遇到一条new指令时,首先检查这个指令的参数是否有能在常量池中定位到一个类的符号引用,并检查这个符号引用代表的类是否已被加载、解析和初始化过,如果没有,那必须先执行相应得类加载过程 类加载检查通过后,接下来虚拟机将为新生对象分配内存,对象所需内存大小在类加载完成后便可以确定。两种方式:指针碰撞和空闲列表。使用Serial、ParNew等带Compact过程...原创 2018-05-23 09:48:52 · 1277 阅读 · 0 评论 -
深入理解Java (二) 垃圾回收与内存分配
(一)、对象存活判断1.引用 两种算法:引用计数算法–每当一个地方引用就加1,当引用失效,计数器就减1.计数器为0时就说不可能再被使用的。可达性分析算法–通过“GC Roots”的对象作为起始点,从这些节点开始向下搜索,所走过的路径成为引用链 在java中 可作为GC Roots的对象包括以下几种:虚拟机栈中引用的对象,方法区中类静态属性引用的对象,方法区中常量引用的对象,本地...原创 2018-05-23 10:20:58 · 220 阅读 · 0 评论 -
java面试(二)面试常见多线程相关问题
基础(一)多线程: Java中Runnable和Callable有什么不同? Runnable和Callable都代表那些要在不同的线程中执行的任务。Runnable从JDK1.0开始就有了,Callable是在JDK1.5增加的。它们的主要区别是Callable的 call() 方法可以返回值和抛出异常,而Runnable的run()方法没有这些功能。Callable可以...原创 2018-07-22 21:00:26 · 268 阅读 · 0 评论 -
java编译器优化和运行期优化
概述 最近在看jvm优化,总结一下学习的相关知识(一)javac编译器编译过程1、解析与填充符号表过程1)、词法、语法分析 词法分析将源代码的字符流转变为标记集合,单个字符是程序编写过程的最小元素,而标记则是编译过程的最小元素,javac中由com.sun.tools.javac.parser.Scanner类实现 语法分析是根据token序列构造抽...原创 2018-07-30 09:07:15 · 6915 阅读 · 2 评论 -
搭建solr搜索服务
一、单例版搭建(一)、solr实例安装 1、安装jdk、安装tomcat 2、解压solr压缩包 3、把目录下的/solr.war部署到tomcat下,即复制到webapps下。 4、启动tomcat,会自动解压war包。 5、需要把目录下example/lib/ext的所有的jar包添加到solr工程中。 cp * /usr/loc...原创 2018-07-02 18:15:41 · 453 阅读 · 0 评论 -
fastDFS+nginx搭建图片服务器
一、简介 FastDFS是用c语言编写的一款开源的分布式文件系统。FastDFS充分考虑了冗余备份、负载均衡、线性扩容等机制,并注重高可用、高性能等指标,使用FastDFS很容易搭建一套高性能的文件服务器集群提供文件上传、下载等服务。 二、搭建 需要搭建两个模块,一个Tracker、一个Storage服务。 1、搭建步骤 第一步:把fastDFS压缩文件...原创 2018-07-01 16:41:28 · 604 阅读 · 0 评论 -
java面试(一)Mysql优化
一、常用mysql知识(一)查询语句优化1.避免非操作符的使用,NOT、&lt;&gt;数据库系统不会使用索引。 2.避免对查询的列的操作,任何对列操作都可能导致全表扫描,包括数据库函数、技术表达式等。尽可能将操作移至等式右边 3.避免不必要的类型转换 4.增加查询的范围限制 5.合理使用IN和EXIST 6.尽量去掉&lt;&gt; 7.去掉WHERE字句中的IS NULL和...原创 2018-06-26 09:10:43 · 2430 阅读 · 0 评论 -
深入理解Java (四)类加载过程
类加载过程类的生命周期 类的生命周期包括7个部分:加载–验证–准备–解析–初始化–使用–卸载 其中验证–准备–解析 称为连接阶段,其他阶段是顺序发生的,而解析可以与这些阶段交叉进行,因为Java支持动态绑定(晚期绑定),需要运行时才能确定具体类型。 类的初始化触发 类的加载机制没有明确的触发条件,但有5种情况下必须对类进行初始化,那么 加载–验证–准备 就必...原创 2018-06-19 09:12:52 · 1265 阅读 · 0 评论 -
深入理解Java (三) 垃圾回收器
一、垃圾收集器1.Serial收集器 单线程收集器,他进行垃圾收集时,必须暂停其他所有的工作线程,知道它收集结束。简单高效,Serial收集器对于运行在Client模式下的虚拟机来说是一个很好的选择。 2.ParNew收集器 ParNeq收集器其实是Serial收集器的多线程版本,除了多线程收集之外,其他与Serial收集器相比没有太多创新之处,但它却是运行在Server...原创 2018-06-19 09:01:00 · 244 阅读 · 0 评论 -
springboot中Maven打包与依赖的jar分开
我们在用springboot开发时,时常会遇到这种问题,当我们对程序做了一个小改动时,如果要将改动后的程序发布到生产环境,则需要将整个程序重新打包,然后将打完的包发布到生产环境上,这样有个问题,如果依赖的jar包很多,就会导致所打的包很大,每次修改都需重新复制,这样就会导致效率很低,因此,为了提高效率,我们可以将依赖的jar包与程序分别放在不同地方,这样只需第一次将依赖的jar包与所打程序包...原创 2018-06-05 09:34:29 · 14075 阅读 · 7 评论 -
Spring Aware理解
通过spring的依赖注入,我们所有的bean对Spring容器的存在是没有意识的,也就是说我们可以将容器替换成其他容器。但有时在实际项目中,我们不可避免要使用到Spring容器本身的功能资源,这时Bean必须意识到Spring容器的存在,才能调用Spring所提供的资源,这就是Spring Aware。Spring提供如下Aware接口: BeanNameAwar原创 2017-06-05 10:36:48 · 822 阅读 · 1 评论
分享