自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(44)
  • 收藏
  • 关注

原创 Hybrid App开发模式

而HTML5的出现让Web App露出曙光。->首先是不能跨平台,针对目前最常用的IOS和安卓平台,需要用不同的技术来开发:IOS一般使用的是Object-c,而安卓平台使用的一般是Java-Native,这样就导致了开发一款App需要两队人马去做,随之而来的问题也会很多,比如:开发成本高,开发周期长,有的功能IOS有但是安卓没有(手Q就是这样的)等。->能够对手机的内部软件或者硬件进行直接的操作,例如:可以调取用户的通讯论、读取用户的短信(当然需要用户同意),可以调取用户的摄像头,调取手机的重力感应等。

2023-03-21 16:59:18 8305

原创 Java int类型数值比较总结

Java数据比较问题

2023-03-07 19:54:21 5673

原创 Java开发中PO\DO\DAO\VO\DTO\BO的使用场景

项目过程中对象类使用的规范

2023-03-07 13:33:12 207

原创 Pinpoint与Zipkin对比

从短期目标来看,Pinpoint 确实具有压倒性的优势:无需对项目代码进行任何改动就可以部署探针、追踪数据细粒化到方法调用级别、功能强大的用户界面以及几乎比较全面的 Java 框架支持。但是长远来看,学习 Pinpoint 的开发接口,以及未来为不同的框架实现接口的成本都还是个未知数。相反,掌握 Zipkin 就相对容易,而且 Zipkin 的社区更加强大,更有可能在未来开发出更多的接口。在最坏的情况下,我们也可以自己通过 AOP 的方式添加适合于我们自己的监控代码,而并不需要引入太多的新技术和新概念。而.

2022-03-31 16:07:54 460

原创 全局变量、静态变量、局部变量线程安全问题

1、静态变量静态变量即静态成员变量。只要有修改变量值的操作,无论是在单例或者非单例都是线程不安全的;而如果线程只是读取变量的值,而不会改变变量的值,这种情况下则是线程是安全的。产生线程安全问题的原因:静态变量即类变量,只初始化一次,位于方法区,为所有对象共享,共享一份内存,一旦静态变量被修改,其他对象均对修改可见,故线程非安全。静态变量多线程操作示例:根据上图代码可知,当线程1执行了number = 1; number = 2; 后,线程2获得执行权,number = 1;然后当线程1获得执行权执

2021-11-12 18:09:24 6190 3

原创 maven snapshot和release版本的区别

Snapshot版本代表不稳定、尚处于开发中的版本 Release版本则代表稳定的版本(1)如果deploy到远程服务器 如果是 release 只能deploy一次,以后部署的话,就会报错冲突,因此很稳定(2)但是如果是snapshot的话,你可以deploy多次,每一次都会冲掉原来的版本,因此不稳定什么情况下该用SNAPSHOT?协同开发时,如果A依赖构件B,由于B会更新,B应该使用SNAPSHOT来标识自己。这种做法的必要性可以反证如下:a.如果B不用SNAPSHOT,而是每次更新后都

2021-08-23 18:21:55 811

原创 线程池和数据库连接池理解

当客户端请求的数据量比较大的时候,使用线程池可以节约大量的系统资源,使得更多的CPU时间和内存可以高效地利用起来。而数据库连接池的使用则将大大提高程序运行效率,同时,我们可以通过其自身的管理机制来监视数据库连接的数量、使用情况等。本文我们主要就介绍一下线程池和数据库连接池的原理,接下来我们一起来了解一下这一部分内容。线程池的原理:其实线程池的原理很简单,类似于操作系统中的缓冲区的概念,它的流程如下:先启动若干数量的线程,并让这些线程都处于睡眠状态,当客户端有一个新请求时,就会唤醒线程池中的某一个睡眠线程

2021-08-18 16:02:47 953

原创 架构之云原生

云原生技术帮助公司和机构在公有云、私有云和混合云等新型动态环境中,构建和运行可弹性扩展的应用。云原生的代表技术包括容器、服务网格、微服务、不可变基础设施和声明式API。这些技术能够构建容错性好、易于管理和便于观察的松耦合系统。结合可靠的自动化手段,云原生技术可以使开发者轻松地对系统进行频繁并可预测的重大变更。目前业界公认的云原生主要包括以下四个层面的内容:帮助理解:...

2021-08-17 09:48:35 94

原创 架构之DevOps和CI/CD

CI/CD开发工作流程分为以下几个阶段:编码 -> 构建 -> 集成 -> 测试 -> 交付 -> 部署 正如你在上图中看到,「持续集成(Continuous Integration)」、「持续交付(Continuous Delivery)」和「持续部署(Continuous Deployment)」有着不同的软件自动化交付周期。持续集成CI(Continuous Integration)持续集成(Continuous Integration)简称CI,持续集成

2021-08-16 14:35:13 463

原创 高可用之虚拟IP和IP漂移

1.虚拟IP在 TCP/IP 的架构下,所有想上网的电脑,不论是用何种方式连上网路,都必须要有一个唯一的 IP-address。事实上IP地址是主机硬件地址的一种抽象,简单的说,MAC地址是物理地址,IP地址是逻辑地址。虚拟IP,就是一个未分配给真实主机的IP,也就是说对外提供服务器的主机除了有一个真实IP外还有一个虚IP,使用这两个IP中的任意一个都可以连接到这台主机。虚拟IP一般用作达到HA(High Availability)的目的,比如让所有项目中数据库链接一项配置的都是这个虚IP,当主服务器

2021-08-13 15:18:48 2015

原创 架构之分库分表

**垂直分表:**可以把一个宽表的字段按访问频次、是否是大字段的原则拆分为多个表,这样既能使业务清晰,还能提升部分性能。拆分后,尽量从业务角度避免联查,否则性能方面将得不偿失。**垂直分库:**可以把多个表按业务耦合松紧归类,分别存放在不同的库,这些库可以分布在不同服务器,从而使访问压力被多服务器负载,大大提升性能,同时能提高整体架构的业务清晰度,不同的业务库可根据自身情况定制优化方案。但是它需要解决跨库带来的所有复杂问题。**水平分库:**可以把一个表的数据(按数据行)分到多个不同的库,每个库只有这个

2021-08-13 13:55:28 122

原创 架构之分布式与集群的区别

分布式是指通过网络连接的多个组件,通过交换信息协作而形成的系统。而集群,是指同一种组件的多个实例,形成的逻辑上的整体。两个概念并不完全冲突,分布式系统也可以是一个集群,例子就是前面说的zookeeper等,它的特征是服务之间会互相通信协作。是分布式系统不是集群的情况,就是多个不同组件构成的系统;是集群不是分布式系统的情况,比如多个经过负载均衡的HTTP服务器,它们之间不会互相通信,如果不带上负载均衡的部分的话,一般不叫做分布式系统。举个栗子小饭店原来只有一个厨师,切菜洗菜备料炒菜全干。后来客人多了,厨

2021-08-12 15:57:09 151

原创 云计算之云计算架构图

2021-08-12 14:55:50 1984

原创 云计算之云计算和虚拟化的区别

云计算概念:云计算是一种按使用量付费的模式,这种模式提供可用的、便捷的、按需的网络访问, 进入可配置的计算资源共享池(资源包括网络,服务器,存储,应用软件,服务),这些资源能够被快速提供,只需投入很少的管理工作,或与服务供应商进行很少的交互。云计算特点:超大规模、虚拟化、高可靠性、通用性、高可扩展性、按需服务、极其廉价。虚拟化概念:虚拟化是通过软件手段对计算机硬件资源镜像整合管理和再分配的一种技术,常用的手段有基于虚拟机的虚拟化和基于容器的虚拟化。虚拟化场景分类:操作系统虚拟化应用程序虚拟化

2021-08-12 14:46:27 877

原创 ORA-01653

–1、查看表空间USERS使用情况SELECT T.TABLESPACE_NAME,D.FILE_NAME,D.AUTOEXTENSIBLE,D.BYTES,D.MAXBYTES,D.STATUSFROM DBA_TABLESPACES T,DBA_DATA_FILES DWHERE T.TABLESPACE_NAME =D.TABLESPACE_NAMEand T.TABLESPACE_NAME=‘USERS’ORDER BY TABLESPACE_NAME,FILE_NAME;–2、修改表空

2021-08-11 19:37:26 204

原创 云计算之多租户理解

真正意义上的SaaS一定是多租户的,但是多租户根据隔离程度的不同又分为不同模式。多租户根据隔离程度和共享程度分为三种模型,其实就是在共享程度与隔离程度的权衡选择。共享程度越高,租户成本自然越低,技术实现难度越高,运维难度越大。隔离程度越高,租户成本自然越高,技术实现难度越低,运维难度越低。三种多租户模式第一个示例使用每租户的独立应用程序和其自己的数据库。第二个示例使用多租户应用,并且每个租户都具有一个数据库。第三个示例使用多租户应用,并且具有分片式多租户数据库。三种模型,从左向右,资源共享程

2021-08-11 19:34:26 1845

原创 sql中where、having、group by、order by执行和书写顺序

书写和执行顺序:where、group by、having、order by当一个查询语句同时出现了where,group by,having,order by的时候,执行顺序和编写顺序是:1.执行where xx对全表数据做筛选,返回第1个结果集。2.针对第1个结果集使用group by分组,返回第2个结果集。3.针对第2个结集执行having xx进行筛选,返回第3个结果集。4.针对第3个结果集中的每1组数据执行select xx,有几组就执行几次,返回第4个结果集。5.针对第4个结果集排序

2021-08-10 13:48:21 1534

原创 FastDFS原理介绍

FastDFS架构:FastDFS服务端有三个角色:跟踪服务器(tracker server)、存储服务器(storage server)和客户端(client)。**tracker server:**跟踪服务器,主要做调度工作,起负载均衡的作用。在内存中记录集群中所有存储组和存储服务器的状态信息,是客户端和数据服务器交互的枢纽。相比GFS中的master更为精简,不记录文件索引信息,占用的内存量很少。**storage server:**存储服务器(又称:存储节点或数据服务器),文件和文件属性(me

2020-12-29 21:28:36 492

原创 HTTP:压缩传输、分块传输

1、本文重点什么是压缩传输?如何开启Tomcat、Weblogic的压缩传输功能什么是分块传输?2、压缩传输压缩目的:减小响应尺寸、节省带宽、提高速度2.1 HTTP协议如何发挥作用?客户端与服务端之间通过Accept-Encoding与Content-Encoding合作完成Accept-Encoding:请求头部;用于告知服务器,浏览器支持的压缩方式,供服务器选择;例:Accept-Encoding:gzip, deflate, brContent-Encoding:响应头部;

2020-12-24 14:57:26 1597

原创 Spring事务传播行为和隔离级别分析

本文将按照声明式事务的五个特性进行介绍:事务传播机制事务隔离机制只读事务超时回滚规则Spring事务传播机制事务的特性原子性(Atomicity):事务是一个原子操作,由一系列动作组成。事务的原子性确保动作要么全部完成,要么完全不起作用。一致性(Consistency):一旦事务完成(不管成功还是失败),系统必须确保它所建模的业务处于一致的状态,而不会是部分完成部分失败。在现实中的数据不应该被破坏。隔离性(Isolation):可能有许多事务会同时处理相同的数据,因此每个事务都应该与其他

2020-12-10 23:28:22 211

原创 intellij idea快速生成main方法、for循环、out输出

1、System.out.println()输入sout,按下enter键,生成System.out.println()方法.sout—>soutv=System.out.println("变量名 = " + 变量)soutp—>System.out.println("")2、public static void main(String [] args){}输入psvm,按下enter键,生成main方法.3、for(int i=0;i<;i++){}输入fori,按下ent

2020-12-09 09:32:42 523

原创 Quartz—有状态的job和无状态的job

如果使用了Quartz,当然在一个系统中绝不仅仅是一个job那么简单,如果同一个job同一时刻运行,可能会造成重复入库的情况。所以我们希望多线程时,能够控制同一时刻相同job只能有一个正在执行。 有时候job执行频率很小,然后在这么短的时间内该job还没结束,结果另一线程再次启用同一job下的方法,这样可能会造成重复的情况,希望在前一个此job结束后再进行下一次调用。 其实据说很简单,就是在detail的参数里加上一句话就行了,把这个job设置成有状态的job。记得有一个问题,

2020-12-08 23:09:31 642

原创 Quartz线程并行串行处理

Quartz定时任务默认都是并发执行的,不会等待上一次任务执行完毕,只要间隔时间到就会执行, 如果定时任执行太长,会长时间占用资源,导致其它任务堵塞。并行和串行含义Quartz定时任务的执行策略有并行(无状态)和串行(有状态)之分。在实际应用中需要实现Job 接口以定义自己的任务。实现 Job 接口的任务缺省为无状态的。Quartz 中还有另外一个接口 StatefulJob。实现 StatefulJob 接口的任务为有状态的。无状态任务一般指可以并发的任务,即多个任务同时运行,任务之间是独立的,不

2020-12-08 23:07:52 1623

原创 Quartz定时任务调度器堵塞原理和解决

Quartz 调度器以多线程的方式执行调度任务JobDetail,缺省线程池大小为10,也就是说若调度器中已有10个Job在工作(线程没有结束),那么即使有JobDetail到了被触发的时间,新的JobDetail不会被执行,也就是说阻塞的条件是,调度器中正在运行的JobDetail数量达到了设定值10。举一个具体的例子:a. 单一Job配置:JobA 触发时间为 每秒运行一次,每个Job执行时间为30秒运行:1、 10个JobA将连续启动2、 到第10个JobA启动后,线程池中所有线程被耗尽

2020-12-08 22:55:58 8143

原创 Tomcat屏蔽日志,切分catalina.out

1、切分catalina.out并归档root权限在/etc/logrotate.d下增加文件tomcat/app/logs/catalina.out{ copytruncate daily rotate 7 compress missingok size 5M}2、屏蔽tomact除catalina.out外的日志1catalina.org.apache.juli.Asyn

2020-11-13 20:01:12 379

原创 Tomcat和JDK版本的对应关系

第一个问题:使用Tomcat时如何对照使用哪个版本的jdk这个问题阿帕奇官网就给出了答案如下如果安装Tomcat7要安装JDK1.6及之后版本才能正常启动Tomcat(如果使用不匹配的jdk比如Tomcat7用jdk1.5执行startup.sh输出也提示启动成功,但其实进程没成功启动的,查看logs/catalina.out会看到报错:Exception in thread “main” java.lang.UnsupportedClassVersionError: Bad version num

2020-11-09 22:35:06 5795

原创 集合的特点和区别(List、Set、MaphashMap、hashTable、Arraylist、linkedList)

1、List,Set,Map存取元素各有什么特点?1.存放(1)List存放元素是有序,可重复(2)Set存放元素无序,不可重复(3)Map元素键值对形式存放,键无序不可重复,值可重复2.取出(1)List取出元素for循环,foreach循环,Iterator迭代器迭代(2)Set取出元素foreach循环,Iterator迭代器迭代(3)Map取出元素需转换为Set,然后进行Iterator迭代器迭代,或转换为Entry对象进行Iterator迭代器迭代2、HashMap、HashT.

2020-11-08 19:55:57 314

原创 正确理解RestFul 接口

一、RESTREST,即Representational State Transfer的缩写,翻译过来就是"表现层状态转化"。REST只是一种软件架构风格。注意了,它并不是一种具体的技术。而更像是一种约束与规范性的东西,它包含了很多原则与限制。而如果一个架构符合REST的原则,就可以称它为RESTful架构。1.1 资源在REST中最重要的一个概念就是资源。在面向对象的世界里,我们提倡万物皆对象,而在REST的世界里则是万物皆资源。所谓"资源",就是网络上的一个实体,或者说是网络上的一个具体信息。它可

2020-11-08 19:53:10 3366

原创 服务器DMZ理解

您的公司有一堆电脑,但可以归为两大类:客户机、服务器。所谓客户机就是主动发起连接请求的机器,所谓服务器就是被动响应提供某些服务的机器。服务器又可以分仅供企业内网使用和为外网提供服务两种。有句俗话,林子大了,什么鸟都有。所以,你为外网提供服务的服务器(如公司的对外宣传网站)很容易被狩猎的黑客所攻击。所以,如果把您的对外提供服务的服务器放到企业内网,一旦被攻陷入侵,黑客就可以利用这台机器(肉机)做跳版,利用局域网的漏洞与共享等来攻克其他机器。因为我们有必要建立一个特殊的区,叫什么好呢?随便起一个,就叫DM

2020-11-08 19:39:03 6094

原创 云计算之公有云、私有云、混合云、本地部署

无论是国企、民企还是外企,只要有数据,就要思考:到底将数据储存在哪里?1.私有云(Private Clouds)指为一个客户单独使用而构建的云,提供对数据的安全性和服务质量的最有效控制。私有云可部署在企业数据中心的防火墙内,也可以将它们部署在一个安全的主机托管场所,私有云的核心属性是专有资源。2.公有云(Public Clouds)指第三方提供商为用户提供的能够使用的云,公有云一般可通过 Internet 使用,可能是免费或成本低廉的,公有云的核心属性是共享资源服务。3.本地化部署(On-Prem

2020-11-08 19:37:08 3875

原创 区分 PaaS、IaaS 、SaaS

2020-11-08 19:35:49 128

原创 过滤器和拦截器的区别

一、拦截器和过滤器的区别1、拦截器(Interceptor)只对action请求起作用 即对外访问路径而过滤器(Filter)则可以对几乎所有的请求都能起作用 包括css js等资源文件2、拦截器(Interceptor)是在Servlet和Controller控制器之间执行而过滤器(Filter)是在请求进入Tomcat容器之后 但是在请求进入Servlet之前执行在请求结束返回时也是一样 是在Servlet处理完之后返回给前端之间执行二、拦截器和过滤器的代码实现1、拦截器首先需要一个拦

2020-11-08 19:33:47 21925 1

原创 CentOS系统中Redis-6.0.6安装

一:下载安装包访问https://redis.io/download 到官网进行下载。这里下载最新的6.0.6的版本.二.安装1.通过远程管理工具,将压缩包拷贝到Linux服务器中,我这里使用的是Xshell2.执行解压操作tar -zxf redis-6.0.6.tar.gz把redis拷贝到安装目录 这里因为我redis的安装目录在 /usr/locat/ 目录下,因此会有如下操作mv redis-6.0.6 /usr/local安装gcc依赖yum -y install

2020-11-08 19:24:18 344

原创 文件流-从url中获取资源文件下载到本地

public static void main(String[] args) { String url = "http地址"; byte[] btImg = getImageFromNetByUrl(url); if (null != btImg && btImg.length > 0) { String fileName = "文件名"; System.out.println("读取到:" + btImg.length ...

2020-11-08 18:24:02 897

原创 发版模式(蓝绿、灰度、滚动)简单原理

蓝绿部署所谓蓝绿部署,是指同时运行两个版本的应用,如上图所示,蓝绿部署的时候,并不停止掉老版本,而是直接部署一套新版本,等新版本运行起来后,再将流量切换到新版本上。但是蓝绿部署要求在升级过程中,同时运行两套程序,对硬件的要求就是日常所需的二倍,比如日常运行时,需要10台服务器支撑业务,那么使用蓝绿部署,你就需要购置二十台服务器。滚动发布滚动发布能够解决掉蓝绿部署时对硬件要求增倍的问题。所谓滚动升级,就是在升级过程中,并不一下子启动所有新版本,是先启动一台新版本,再停止一台老版本,然后再启动一台

2020-11-04 19:36:33 2500

原创 Linux防火墙管理

常用命令:开放端口:firewall-cmd --add-port=22122/tcp

2020-11-02 18:01:02 87

原创 Linux空间存储管理

lsblk -f 查询挂载情况df -h 查询分区fdisk -l 查看服务器分区

2020-11-02 18:00:35 282

原创 HTTP常见错误原因分析

造成HTTP-500错误,可能存在的原因之个人实践总结1、运行的用户数过多,对服务器造成的压力过大,服务器无法响应,则报HTTP500错误。减小用户数或者场景持续时间,问题得到解决。2、该做关联的地方没有去做关联,则报HTTP500错误。进行手工或者自动关联,问题得到解决。3、录制时请求的页面、图片等,在回放的时候服务器找不到,则报HTTP500错误,若该页面无关紧要,则可以在脚本中注释掉,问题将会得到解决。例如:有验证码的情况下,尽管测试时已经屏蔽了,但是录制的时候提交了请求,但回放的时候不

2020-11-02 17:54:39 877

原创 Java中异常处理的几种方法

Java中所有异常的父类是Throwable类,在Throwable类下有两大子类:一个是Error类,指系统错误异常,例如:VirtualMachineError 虚拟机错误,ThreadDeath线程死锁。一般如果是Error类的异常的话,就是程序的硬伤,就好比是工厂里断水断电,机器损坏了。另一个是Exception类,指编码、环境、用户操作输入等异常,这个是比较常见的异常类,Exception类下面又有两个子类,RuntimeException非检查异常和检查异常,非检查又称为运行时异常。.

2020-10-31 22:18:10 5394

原创 Spring实现如何在工具类中调用Service方法

1、首先在spring-mvc.xml中增加注解 <!-- 扫描util --><context:component-scan base-package="com.essbase.util.springToutil"> </context:component-scan>2、引入工具类SpringContextUtil.javapackage com.essbase.util.springToutil;import org.springframewor

2020-10-31 21:40:34 1438

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除