自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(68)
  • 资源 (1)
  • 收藏
  • 关注

原创 java多线程实现生产者、消费者模式

简述生产者和消费者问题是线程模型中的经典问题:生产者和消费者在同一时间段内共用同一存储空间,生产者向缓存区里生产数据,而消费者从缓存区里取出数据什么是生产者? 生产者指的是负责生产数据的模块。什么是消费者? 消费者指的是负责消费数据的模块。什么是缓冲区? 消费者不能直接使用生产者的数据,它们之间有个缓冲区。生产者将生产好的数据放入缓冲区,消费者从缓冲区取要处理的数据。注:上面的的模块指的可能是:方法、对象、线程等。缓冲区是实现并发协助的核心,设置缓...

2021-01-08 10:32:44 1650 1

原创 设计模式之建造者模式

简述建造者模式(又称生成器模式)使用多个简单的对象一步一步构建成一个复杂的对象。这种设计模式属于创建型模式,它提供了一种创建对象的最佳方式。一个 Builder 类会一步一步构造最终的对象。该 Builder 类是独立于其他对象的。如在开发过程中需要创建一个复杂的对象(计算机对象),这个复杂对象由多个子部件按一定的步骤组合而成,计算机是由 CPU、主板、内存、硬盘、显卡、显示器、键盘等部件组装而成的,一般买电脑我们不会自己去组装计算机,而是将计算机的配置要求告诉销售,销售安排技术人员去组装计算机

2020-12-26 08:46:54 368

原创 设计模式之原型模式(java代码实现)

简述原型模式(Prototype Pattern)是用于创建重复的对象,同时又能保证性能。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。这种模式是实现了一个原型接口(在java中实现Cloneable),,该接口用于创建当前对象的克隆。当直接创建对象的代价比较大时,则采用这种模式。如,一个对象需要在一个高代价的数据库操作之后被创建。我们可以缓存该对象,在下一个请求时返回它的克隆,在需要的时候更新数据库,以此来减少数据库调用。还有在spring中的bean的scope中就有使用到原型模

2020-12-17 09:37:41 684

原创 设计模式之简单工厂模式

简述简单工厂模式属于创建类模式(主要关注怎样创建对象,特点是将对象的创建和使用分离),是工厂模式中的一种,而工厂模式又可以分为简单工厂模式、工厂方法模式、抽象工厂模式。简单工厂模式是由一个工厂对象决定创建出哪一种产品类的实例,简单工厂模式是工厂模式中最简单使用的一种模式。工厂模式的定义:定义一个创建产品对象的工厂接口,将产品对象的实际创建工作推迟到具体子工厂类当中。这满足创建型模式中所要求的“创建与使用相分离”的特点介绍我们把被创建的对象称为“产品”,把创建产品的对象称为“工厂”。如果要

2020-12-07 09:46:29 562

原创 Android开发-DataBinding基本使用

简述Jetpack是谷歌发布的一系列辅助android开发者的实用工具,以帮助开发者构建出色的 Android 应用。Jetpack 里面包含4个部分的组件:Architecture、Foundation、Behavior 、UI 。数据绑定库是一种支持库,借助该库,您可以使用声明性格式(而非程序化地)将布局中的界面组件绑定到应用中的数据源。作用:1.将布局组件与源数据绑定,使源数据变化的同时布局组件及时同步更新。2.减少Activity中View的定义(private View view)与初

2020-11-27 10:01:26 446

原创 Android开发-多线程的创建方式

两种基本创建方式继承Thread类,覆写run方法。通过实现Runnable接口,或继承自Thread类,覆写run方法。1.public class MainActivity extends AppCompatActivity { ActivityMainBinding activityMainBinding;protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInst

2020-11-17 16:27:43 681

原创 Spring Cloud Ribbon负载均衡服务调用

概述Spring Cloud Ribbon是基于Netflix Ribbon实现的一套客户端负载均衡工具。Ribbon客户端组件提供了一系列完善的配置项,如连接超时,重试等。简单地说,就是在配置文件中列出Load Balancer后面所有的机器,Ribbon会自动帮我们基于某种规则(如轮询,随机连接等)去连接这些机器,我们很容易使用Ribbon实现自定义的负载均衡算法。Ribbon官网:https://github.com/Netflix/ribbon(维护模式)负载均衡的表现就是,将用户的请求

2020-11-08 08:32:08 180

原创 Java使用雪花算法实现生成全局唯一id

简介雪花的基本形状是六角形,但是大自然中却几乎找不出两朵完全相同的雪花我们生成ID的方式有多种,比如说UUID,比如说自动增长...使用场景随着业务的增长与用户数量的增长,单个服务越来越多,数据库也分得越来越细,有些一个业务分成好几个库,这时候自增主键或者序列之类的主键id生成方式已经不再满足需求,分布式系统中需要的是一个全局唯一的id生成规则 雪花算法的结构如下(每部分用-分开):0 - 0000000000 0000000000 0000000000 0000000000 0

2020-10-28 09:21:04 15271 5

原创 Java UDP通信

TCP/IP协议的传输层除了一个TCP协议外,还有一个UDP协议。UDP协议是用户数据报协议的简称,它作用也是网络数据的传输。如何选择TCP协议和UDP协议, UDP协议虽然有时不太可靠,但如果可以接受掉包的情况,UDP协议有更大的优势。在Java中使用UDP协议发送数据的几个步骤使用DatagramSocket类创建一个套接字,然后使用DatagramPcket类创建要发送的数据包,之后使用DatagramSocket类中send()方法发送数据包。如果是接收UDP数据包的话,先使用Datagra

2020-10-18 20:30:02 345

原创 Spring Cloud-Consul服务注册与发现

Consul简介Consul官网:https://www.consul.io/introConsul是一套开源的分布式服务发现和配置管理系统,有HashiCorp公司使用Go语言开发,提供了微服务系统中服务治理、配置中心、控制总线等功能。每个功能可以单独使用,也可以一起使用以构建全方位的服务网格,Consul提供了一套完整的服务网格解决方案。优点:基于raft协议,简洁;支持健康检查,同时支持HTTP和DNS协议,支持跨数据中心的WAN集群,提供了图形化界面;支持跨平台,支持Linux、Mac、

2020-10-08 08:50:21 244

原创 安装使用Docker

什么是DockerDocker 是一个开源的应用容器引擎,基于Go 语言并遵从 Apache2.0 协议开源。Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。容器是使用沙箱机制,相互之间没有任何接口,更重要的是容器性能开销极低。优点:快速部署 响应式部署和扩展 隔离性好 成本低官网:https://www.docker.com/Github Docker 源码:https://gi..

2020-09-28 15:26:54 127

原创 JQ一键分享到QQ空间、QQ好友、微博等

记录最近做项目遇到一个需求:网页添加一键分享到QQ好友、微信的功能实现此功能可以使用Share.js插件来实现。该插件的开源包下载地址如下https://github.com/overtrue/share.js/下载后可将src文件夹复制到项目下,引入share.min.css 与 social-share.min.js两个文件。js相关配置 var $config = { url : '',// 网址,默认使用 window.location.href

2020-09-18 08:05:20 839

原创 SpringCloud-Consul服务注册与发现

Consul简介Consul 是一个支持多数据中心分布式高可用的服务发现和配置共享的服务软件,由 HashiCorp 公司用 Go 语言开发, 基于 Mozilla Public License 2.0 的协议进行开源. Consul 支持健康检查,并允许 HTTP 和 DNS 协议调用 API 存储键值对. 命令行超级好用的虚拟机管理软件 vgrant 也是 HashiCorp 公司开发的产品. 一致性协议采用 Raft 算法,用来保证服务的高可用. 使用 GOSSIP 协议管理成员和广播消息, 并且

2020-09-08 15:11:12 164

原创 SpringCould-Zookeeper服务注册与发现

概念服务注册中心:服务注册中心是服务实现服务化管理的核心组件, 主要用来存储服务信息。类似于目录服务的作用,比如提供者 url 串、路由信息等。是 SOA 架构中基础之一。服务注册中心的作用: 服务的注册、服务的发现常见的注册中心:Zookeeper、Eureka、consul、还有阿里的Nacos服务注册中心解决的痛点:服务与服务之间依赖关系管理难的问题。因为Eureka 2.0已经停更了,如果非要使用Eureka的话,那需要自己维护,这对于追求效率的那是不可接受的,或者就换其他方案。

2020-09-04 10:50:25 348 1

原创 nginx安装以及实现高可用负载均衡

概念Nginx("engine x")是一款是由俄罗斯的程序设计师Igor Sysoev所开发高性能的 Web和 反向代理服务器,也是一个 IMAP/POP3/SMTP 代理服务器。在高连接并发的情况下,Nginx是Apache服务器不错的替代品。正向代理正向代理 是一个位于客户端和原始服务器(origin server)之间的服务器,为了从原始服务器取得内容,客户端向代理发送一个请求并指定目标(原始服务器),然后代理向原始服务器转交请求并将获得的内容返回给客户端。客户端必须要进行一些特

2020-08-28 16:40:19 201

原创 Centos6安装RabbitMQ

RabbitMQ概念RabbitMQ是流行的开源消息队列系统,是AMQP(Advanced Message Queuing Protocol高级消息队列协议)的标准实现,用erlang语言开发。RabbitMQ据说具有良好的性能和时效性,同时还能够非常好的支持集群和负载部署,非常适合在较大规模的分布式系统中使用。RabbitMQ的安装注:使用Package Cloud安装时,要注意根据自己的系统版本号来安装对应的erlanghttps://packagecloud.io/rabbitmq/e

2020-08-09 19:40:57 536

原创 Python 对象

Python类对象的创建以及使用Python中,使用class语句只能创建一个类,不能创建类的对象,创建类的对象需要实例化。对类的实例化格式如下:类名(参数...)在创建类时,如没有创建_init_()构造方法或_init_()构造方法只有一个self参数时,则实例化类对象时可以不传入参数。创建一个名为book的类,并对其实例化代码示例class book:# 定义...

2019-10-24 11:02:27 624

原创 Java使用Stock传输视频

在网络编程使用套接字时,有时需要使用Socket传输视频、音频文件。如一个客户端将视频文件发送到服务端。创建一个服务端窗体类,该类继承JFream类,关键代码如下下面是服务端窗体类的构造方法,主要作用是创建窗体界面,获取选择文件信息,其中当点击发送按钮后,定义数据输入流对象后,创建输入流对象,分别将文件名、文件大小写入输出流,定义一个字节数组,将文件读取到字节数组中。public Se...

2019-09-19 11:34:10 2695 2

原创 Java非对称加密

非对称加密算法(RSA)是第一个既可以用于加密数据也可以应用数字签名的算法。RAS算法相对于DES和AES等对称加密算法在速度上要慢很多。使用RSA加密数据时需要使用密钥对,也就是一个公钥,一个私钥。如A、B双方发送数据,A生成密钥对,将公钥发送给B,A将数据用私钥加密后发送给B,而B用A提供的公钥对数据进行解密。如果是B向A发送数据,B用公钥加密数据并发送给A,A使用私钥对数据进行解密。例:...

2019-08-16 17:38:22 3216

原创 Java对称加密

BASE64加解密BASE64是一种比较基本、简单的加密算法,其实BASE64主要作用不是用于加密,BASE64是把与原始的数据转换成另一种编码格式,这样方便在网络上传输。所以严格来说,BASE64并不是安全的加密解密算法,但通过BASE64编码过后原来的数据也会改变成非原来的数据的字符。例 /*该方法创建BASE64Encoder对象后调用encodeBuffer()方法对数据...

2019-08-16 17:37:08 2404 1

原创 Java使用Socket传输文件、对象

网络应用主要分为客户端和服务端,在Java中Socket类是处理客户端通信的类,通过这类可以连接到指定IP或域名的服务器,从而实现客户端与服务端互相发送接收数据。使用Socket传输文件在使用套接字进行编码时,有时需要通过Socket传输文件。下面例子实现Socket多线程从客户端向服务端传输文件。Server关键代码:public class Server extends Ser...

2019-08-07 22:38:18 3026 2

原创 Java获取内网所有IP地址以及创建套接字

获取内网的所有IP地址在进行网络编程时,有时候需要对局域网内的所有主机进行遍历,获得内网的所有IP地址首先创建一个继承JFrame类的窗体类GetIpFrame类构造方法,在窗体类放置内容面板,再在面板上添加两个按钮,在设置滚动面板时添加一个文本域控件,用于显示获取到IPpublic GetIpFrame() { super(); addWind...

2019-08-07 22:30:17 823 1

原创 Java泛型应用

泛型是Java SE 5.0版的重要特性,使用泛型编程可以提高代码的重用性。泛型在Java中有比较重要的地位,在面向对象编程以及其他各种设计模式中有非常广泛的应用。什么是泛型:泛型即是“参数化类型”,也就是将类型由原来具体的类型参数化,类似于方法中的变量参数,此时类型也定义为参数形式。使用通配符增加泛型利用泛型类型参数<T>可以将类、方法或接口限制为T类型,但这种方式有个明...

2019-07-25 21:02:00 135 1

原创 Swing程序实现网络资源下载

在Java网络编程中,资源下载是必不可少的一部分,如何使用代码从网络上下载你需要的网络资源。在Java中可以使用HttpURLConnection类来实现。网络资源单线程下载创建窗体关键代码:创建一个类,继承JFrame(窗体类),在该类的构造方法设置窗体内容(如窗体大小、将控件添加到容器中以及设置控件的位置等等),其中使用addActionListener监听按钮以进行相对应的响应。但点...

2019-07-25 21:01:04 394 1

原创 Java利用Socket实现互相通信

网络编程中,两个程序通过一个双向的通信连接实现数据的交换,这连接的一端称为一个socket。socket通信原理:OSI七层模型、TCP/IP五层模型OSI模型:应用层、表示层、会话层、传输层、网络层、数据链接层、物理层TCP/IP五层模型:应用层(相当于OSI表示层、会话层)、传输层、网络层、数据链接层、物理层在这七个层级中,socket属于传输层,基于TCP/IP协议下的soc...

2019-07-25 20:59:26 3463

原创 Java生成PDF文件

PDF作为日常常见的文件格式之一,有时候经常需要使用到。在Java中生成PDF的方式一般有:itext-PdStamper pdfStamper(根据模板生成PDF),itext-Document document(使用代码编写)等。使用IText生成PDF:IText是一个能够快速生成PDF文件的Java类库,IText的Java类对于那些要生成包括文本,表格,图形的只读文档是很好用的。...

2019-07-17 20:43:49 14464 8

原创 Java线程总结(二)

线程池优化多线程编程在Java中的对象是使用new来进行创建的,如果对象的创建量少还好,当创建大量生命周期短的对象时,使用new这种方式效率是比较低下的。使用池技术可以解决这种问题。如数据库连接使用数据库连接池可以大大提高效率,而线程也有线程池。下面例子中可以看出使用线程池和不使用线程池的效率差别,一种使用普通方式创建5000个生命周期短的线程,另一种是通过线程池技术来创建。@Test...

2019-07-17 20:40:47 93

原创 Java Swing程序解析Internet网页中的内容

有时候需要对获取某个网页上的内容,例获取某一个网页上的所有超链接、form表单填写的内容以及提交的连接。这样就需要对网页的内容进行解析,解析后可以使用正则表达式获取自己想要的内容。(在java中也可使用jsoup来对网页内容进行解析)下面主要通过URLConnection类的getInputStream()方法获取到输入地址的网页内容资源的输出流,从输出流读取信息,从而解析网页内容。创建S...

2019-07-17 20:34:54 432

原创 Java验证码图片生成工具类

验证码是为了区分进行操作的是否是人,一般常见于登录、注册等。使用验证码可以防止有人恶意注册等操作。使用java编写一个生成验证码图片生成工具类。主要使用java的绘图类来实现。验证码图片生成工具类代码实例化一些需要用到的值//验证码宽度private int width=70;//验证码高度private int height=35;//实例化一个Random对象,...

2019-07-08 08:46:30 481 1

原创 JavaWeb实现生成二维码

在Java中,二维码的生成实现方式有很多种,可以使用QRCode.jar来实现,也可以使用ZXing开发。ORCode.jar下载:链接: https://pan.baidu.com/s/1XFK5xU5jVJUmSz4EU2v6NA 提取码: ein8 使用zxing需要使用到的jar包:链接: https://pan.baidu.com/s/14FEiFXBl3f9YPbu4E...

2019-07-07 16:09:52 5789

原创 Java使用FreeMarker模板引擎动态生成html页面

因一个功能需要动态生成HTML文件,所以接触了下FreeMarker模板引擎。一般可以使用该模板引擎来生成月报,日报,单据报表等等。我们都知道预先生成静态HTML文件,当访问时可以提高效率的。Freemarker简单介绍Freemarker是一款模板引擎,基于模板用来生成文本(任何来自HTML格式的文本用来生成源代码)的通用工具。FreeMarker实际上是被设计生成HTML页面的,尤其是...

2019-07-07 16:05:33 14451

原创 Java动态代理学习

Java动态代理机制:不需要开发人员手动编写代理类,只需要简单地指定一组接口以及委托类对象,即可动态获取代理类。而代理类会将所有的方法调用分派到委托对象上进行反射执行。动态代理的作用最终是学习AOP(面向切面编程),与装饰者模式相似,但比装饰者模式更加灵活。 动态代理相关的类java.lang.reflect.Proxy:java动态代理主类,该类提供了一组静态方法来为一组接口动态生成代理...

2019-06-27 16:56:33 116

原创 JavaWeb之BaseServlet

在JavaWeb中,使用最基础的Servlet用法实现一个功能操作是比较繁琐的,如实现两个功能就要创建两个Servlet,当业务操作过多时,这样会造成Servlet过于冗余,而web.xml配置文件代码也过于臃肿。过多地去创建Servlet明显是不可取的,这时可以在请求路径加一个方法参数,然后再在Servlet中进行判断,使用if语句判断方法参数从而调用哪个方法。如下图这做法虽...

2019-06-27 09:48:08 397

原创 JavaWeb文件压缩

ZIP压缩文件是一种非常常见的文件压缩形式,压缩后的文件可以节省存储空间,在java的内置类中提供了相关类,实现的方式也比较为简单。使用java.util.zip包中的ZipOutputStream与ZipInputStream类来实现文件的压缩/解压缩。如果要从ZIP压缩管理文件内读取某个文件,要首先找到对应文件的目录进入点,才能读取这个文件的内容。ZipOutputStream对象,可以文...

2019-06-26 21:29:31 598

原创 JavaWeb中实现类似Google Suggest自动完成

Google Suggest(谷歌搜索)就是在搜索框输入一个或多个文字时,会自动列出与该输入文字相关的部分常用搜索词汇。这在Web应用中经常能看到,比如百度搜索、搜狗搜索等,在JavaWeb中可以使用ajax技术来完成这一类似的功能。这里是基于JSP+Servlet+JDBC实现。JSP关键代码html代码:就是一个文本框,使用oninput事件,这个事件是HTML5标准事件,(如果使用的...

2019-06-17 19:53:01 246

原创 JDBCUtils工具类处理多线程并发访问问题

在项目框架中,如需要在MVC设计模式基础上进一步地将业务进行分离,,Dao层只能是对数据库进行操作,不能涉及任何的业务上的处理,所以事务不应该出现在Dao层中,只能在Service层进行业务处理,但是事务的结束和开始都需要Connection对象,而Connection对象又只能出现在Dao层,为了线程安全,这里在JDBCUtils工具类要对事务进行处理。使用ThreadLocal对象,根据业务逻...

2019-06-17 16:51:21 1073

原创 Java使用c3p0连接数据库

c3p0是一个开源的JDBC连接池,实现了数据源和JNDI绑定,支持JDBC3规范和JDBC2的标准扩展,使用它的开源项目有Spring、Hibernate等。c3p0和dbcp的区别:dbcp没有自动回收空闲连接功能,c3p0有该功能。为什么使用连接池:在一般项目中操作数据库,每一次的操作都是建立一个连接,操作完成后才稀放连接,而JDBC不会保持连接的持续,超过一定的时间会稀放该连接。而...

2019-06-17 16:27:28 5965

原创 Java使用POI导出Excel

不管是Web开发还是桌面开发,对办公软件的操作是常有的需求,如对微软Excel电子表格的操作,经常需要对一些数据导出到Excel文件,或将一个Excel文件的数据读取到数据库。在java操作Excel可以使用POI组件或JXL组件。POI全称PoorObfuscation Implementation ,是Apache组件的一个开源项目,可以对微软的Office一系列办公软件进行读写操作。......

2019-06-09 13:05:46 50240 20

原创 Java批量操作文件小结

近来实现的某些功能需要对文件进行批量操作,为方便以后查找阅读,作以下总结。如需要对文件进行批量重命名、删除文件夹中的所有文件等。例:删除指定文件夹中的所有文件:(批量删除文件是文件操作经常用到的)先创建一个文件批量管理工具类,关键代码如下 //删除文件夹及其中内容 public void deleteDictionary(File fileIn) {...

2019-06-09 12:43:15 2753

原创 JavaWeb 使用ajax上传文件并显示进度条等上传信息

文件上传在Web程序中是常用的功能,一般上传图片或者文件大小比较少的文件客户端不需要显示上传进度或文件上传的信息,如果是上传的文件比较大的时候,可以在客户端展示文件上传进度以及根据业务的需求显示文件上传的各种信息。在JavaWeb中使用ajax技术实现带有进度条的文件上传,实现的方法有多种,大概逻辑分为:当客户端上传文件发送请求后,服务器将上传的文件写入某路径中,在此上传的过程中,将文件上传的...

2019-06-04 21:27:01 4322 1

前端树形及用法等,新手可看看。希望对初学者有帮助

各种树形结构,可编辑,删除,新增,等等,详细的可以看看,希望可以帮助有需要的朋友

2018-09-14

空空如也

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

TA关注的人

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