自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

转载 Spring Cloud(十四):Ribbon实现客户端负载均衡及其实现原理介绍

年后到现在一直很忙,都没什么时间记录东西了,其实之前工作中积累了很多知识点,一直都堆在备忘录里,只是因为近几个月经历了一些事情,没有太多的经历来写了,但是一些重要的东西,我还是希望能坚持记录下来。正好最近公司用到了一些本篇文章的知识点,所以就抽空记录一下。本文代码github地址:https://github.com/shaweiwei/RibbonTest/tree/master...

2019-07-06 18:34:00 475

转载 SpringBoot之CommandLineRunner接口和ApplicationRunner接口

我们在开发中可能会有这样的情景。需要在容器启动的时候执行一些内容。比如读取配置文件,数据库连接之类的。SpringBoot给我们提供了两个接口来帮助我们实现这种需求。这两个接口分别为CommandLineRunner和ApplicationRunner。他们的执行时机为容器启动完成的时候。这两个接口中有一个run方法,我们只需要实现这个方法即可。这两个接口的不同之处在于:Applic...

2019-06-29 10:49:00 302

转载 Java并发之多线程下竞态条件概念的理解

一、简述竞态条件(Race Condition):计算的正确性取决于多个线程的交替执行时序时,就会发生竞态条件。二、常见竞态条件分析最常见的竞态条件为1.先检测后执行执行依赖于检测的结果,而检测结果依赖于多个线程的执行时序,而多个线程的执行时序通常情况下是不固定不可判断的,从而导致执行结果出现各种问题。对于main线程,如果文件a不存在,则创建文件a,但...

2019-06-28 13:07:00 199

转载 Java并发之原子操作类汇总

当程序更新一个变量时,如果是多线程同时更新这个变量,可能得到的结果与期望值不同。比如:有一个变量i,A线程执行i+1,B线程也执行i+1,经过两个线程的操作后,变量i的值可能不是期望的3,而是2。这是因为,可能在A线程和B线程执行的时候拿到的i的值都是1,这就是线程不安全的更新操作,通常我们会使用synchronized来解决这个问题,synchronized能保证多线程不会同时更新变量...

2019-06-28 13:07:00 313

转载 SQL中join连接查询时条件放在on后与where后的区别

数据库在通过连接两张或多张表来返回记录时,都会生成一张中间的临时表,然后再将这张临时表返回给用户。 在使用left jion时,on和where条件的区别如下:1、 on条件是在生成临时表时使用的条件,它不管on中的条件是否为真,都会返回左边表中的记录。2、where条件是在临时表生成好后,再对临时表进行过滤的条件。这时已经没有left join的含义(必须返回左边...

2019-06-21 20:05:00 479

转载 SpringMVC与Struts2区别与比较总结

一、框架机制1、Struts2采用Filter(StrutsPrepareAndExecuteFilter)实现,SpringMVC(DispatcherServlet)则采用Servlet实现。2、Filter在容器启动之后即初始化;服务停止以后坠毁,晚于Servlet。Servlet在是在调用时初始化,先于Filter调用,服务停止后销毁。二、拦截机制1、Struts2...

2019-04-15 10:21:00 61

转载 Java里进制转换(二进制、八进制、十进制、十六进制)

// 十进制转其它进制(二进制,八进制,十六进制)int k = 17;System.out.println(Integer.toBinaryString(k));// 转二进制System.out.println(Integer.toOctalString(k));// 转八进制System.out.println(Integer.toHexString(k));/...

2019-04-04 16:55:00 149

转载 win下查找端口占用进程并定位到具体程序

很多时候,我们会在服务器上运行多个java程序,但是在任务管理器里看到的都是一样的图标,想要找到我们想要的那个进程咋办呢?列出所有端口进程C:\Users\desp>netstat -ano活动连接协议 本地地址 外部地址 状态 PIDTCP 0.0.0.0:135 0.0.0.0:0 LISTENING 464TCP 127.0.0.1:8...

2019-04-03 14:44:00 175

转载 SpringBoot里使用RMI进行远程方法调用

一、Java RMI定义Java RMI:Java远程方法调用,即Java RMI(Java Remote Method Invocation)是Java编程语言里,一种用于实现远程过程调用的应用程序编程接口。它使客户机上运行的程序可以调用远程服务器上的对象。远程方法调用特性使Java编程人员能够在网络环境中分布操作。RMI全部的宗旨就是尽可能简化远程接口对象的使用。二、Java...

2019-03-31 14:58:00 837

转载 关于java多线程中异常捕获的理解

在java多线程程序中,所有线程都不允许抛出未捕获的checked exception(比如sleep时的InterruptedException),也就是说各个线程需要自己把自己的checked exception处理掉。这句话怎么理解,最简单的看下图,也就是不能在Runnable的run方法上抛出异常,必须在里面捕获。这一点是通过java.lang.Runnable.ru...

2019-01-28 22:49:00 113

转载 Java中的不可变类理解

一、Java中的不可变类不可变类(Immutable Objects):当类的实例一经创建,其内容便不可改变,即无法修改其成员变量。可变类(Mutable Objects):类的实例创建后,可以修改其内容。Java 中八个基本类型的包装类和 String 类都属于不可变类,而其他的大多数类都属于可变类。二、与引用不可变的区别需要特别注意的是,不可变类的不可变是指该类的...

2019-01-26 20:24:00 187

转载 Java并发之线程转储

一、java线程转储java的线程转储可以被定义为JVM中在某一个给定的时刻运行的所有线程的快照。一个线程转储可能包含一个单独的线程或者多个线程。在多线程环境中,比如J2EE应用服务器,将会有许多线程和线程组。每一个线程都有它自己的调用堆栈,在一个给定时刻,表现为一个独立功能。线程转储将会提供JVM中所有线程的堆栈信息,对于特定的线程也会给出更多信息。二、java虚拟机进程和ja...

2019-01-24 22:47:00 107

转载 java集合框架综述

一、集合框架图简化图:说明:对于以上的框架图有如下几点说明1.所有集合类都位于java.util包下。Java的集合类主要由两个接口派生而出:Collection和Map,Collection和Map是Java集合框架的根接口,这两个接口又包含了一些子接口或实现类。2. 集合接口:6个接口(短虚线表示),表示不同集合类型,是集合框架的基础。3. 抽象类:5个抽象类(长...

2019-01-22 21:48:00 70

转载 Java中的Cloneable接口理解

Cloneable接口是一个标记接口,也就是没有任何内容,定义如下:这里分析一下这个接口的用法,clone方法是在Object种定义的,而且是protected型的,只有实现了这个接口,才可以在该类的实例上调用clone方法,否则会抛出CloneNotSupportException。Object中默认的实现是一个浅拷贝,也就是表面拷贝,如果需要实现深层次拷贝的话,必须对类中可变域生...

2019-01-21 21:08:00 178

转载 Shell脚本编程(三):shell参数传递

我们可以在执行 Shell 脚本时,向脚本传递参数,脚本内获取参数的格式为:$n。n代表一个数字,1 为执行脚本的第一个参数,2 为执行脚本的第二个参数,以此类推……实例以下实例我们向脚本传递三个参数,并分别输出,其中$0为执行的文件名:#!/bin/bash# author:hongecho "current file name is $0"echo ...

2019-01-14 22:39:00 176

转载 Java代码里利用Fiddler抓包调试设置

Fiddler启动时已经将自己注册为系统的默认代理服务器,应用程序在访问网络时会去获取系统的默认代理,如果需要捕获java访问网络时的数据,只需要在启动java程序时设置代理服务器为Fiddler即可-DproxySet=true -DproxyHost=127.0.0.1 -DproxyPort=8888-D 是java中设置系统变量的方式下面的帖子很清...

2019-01-14 20:51:00 204

转载 Shell脚本编程(二):shell变量

定义变量定义变量时,变量名不加美元符号($,PHP语言中变量需要),如:your_name="runoob.com"注意,变量名和等号之间不能有空格,这可能和你熟悉的所有编程语言都不一样。同时,变量名的命名须遵循如下规则:命名只能使用英文字母,数字和下划线,首个字符不能以数字开头。中间不能有空格,可以使用下划线(_)。不能使用标点符号。不能使用ba...

2019-01-12 20:53:00 166

转载 Shell脚本编程(一):初识shell script

Shell简介Shell是一个命令解释器,它是一个用 C 语言编写的程序,它是用户使用 Linux 的桥梁。Shell 是指一种应用程序,这个应用程序提供了一个界面,用户通过这个界面访问操作系统内核的服务。Shell在操作系统的最外层,负载直接与用户对话,把用户的输入解释给操作系统,并处理各种各样的操作系统的输出结果,输出到屏幕并返回给用户。这种对话方式可以是交互的方式(从键盘输入命...

2019-01-11 22:11:00 212

转载 JAVA使用SCANNER接收中文并输出时出现乱码

Java中使用Scanner接收输入的中文并输出时会出现乱码现象,怎么解决此问题呢?1、方法一在声明Scanner时添加对应的编码格式就可以了,如下所示:Scanner sc = new Scanner(System.in, "UTF-8");2、方法二Run ASConfigurations --> common -->将Console Enco...

2019-01-10 20:10:00 724

转载 RandomAccessFile类理解

一、简述这个是JDK上的截图,我们可以看到它的父类是Object,没有继承字节流、字符流家族中任何一个类。并且它实现了DataInput、DataOutput这两个接口,也就意味着这个类既可以读也可以写。RandomAccessFile是Java输入/输出流体系中功能最丰富的文件内容访问类,既可以读取文件内容,也可以向文件输出数据。与普通的输入/输出流不同的是,Random...

2019-01-08 23:04:00 429

转载 Vue(九):样式绑定v-bind示例

Vue.js classclass 与 style 是 HTML 元素的属性,用于设置元素的样式,我们可以用 v-bind 来设置样式属性。Vue.js v-bind 在处理 class 和 style 时, 专门增强了它。表达式的结果类型除了字符串之外,还可以是对象或数组。各种写法代码示例<style> .active { w...

2019-01-06 20:01:00 178

转载 Vue(八):监听属性watch

Vue.js 可以通过 watch 来响应数据的变化。以下实例模拟购物车里商品数量增加,对应价格也增加 <!--模拟购物车商品数量增加,价格也随之增加--> <div id = "app"> <h3>Search Goods</h3> ...

2019-01-06 19:13:00 93

转载 Spring与线程安全

Spring作为一个IOC/DI容器,帮助我们管理了许许多多的“bean”。但其实,Spring并没有保证这些对象的线程安全,需要由开发者自己编写解决线程安全问题的代码。Spring对每个bean提供了一个scope属性来表示该bean的作用域。它是bean的生命周期。例如,一个scope为singleton的bean,在第一次被注入时,会创建为一个单例对象,该对象会一直被复用到应用...

2019-01-06 10:53:00 68

转载 Java多线程并发最佳实践

使用本地变量尽量使用本地变量,而不是创建一个类或实例的变量。使用不可变类String、Integer等。不可变类可以降低代码中需要的同步数量。最小化锁的作用域范围:S=1/(1-a+a/n)a:并行计算部分所占比例n:并行处理结点个数S:加速比当1-a等于0时,没有串行只有并行,最大加速比 S=n当a=0时,只有串行没有并行,最小加速比 S = 1...

2019-01-06 10:50:00 74

转载 HttpURLConnection与HttpClient比较和使用示例

1. GET请求与POST请求HTTP协议是现在Internet上使用得最多、最重要的协议了,越来越多的Java应用程序需要直接通过HTTP协议来访问网络资源。在介绍HttpURLConnection前,我们还是再来说一下URL请求最常用的两种方式:GET请求与POST请求。GET请求的数据会附在URL之后(就是把数据放置在HTTP协议头中),以?分割URL和传输数据,参数之...

2019-01-01 12:03:00 97

转载 关于java代码提交HTTP POST请求中文乱码的解决方法

首先说明下这些只是根据我工作常用经验的总结,可能不一定完全对,也不一定全面,但却是最通用的。JAVA里HTTP提交方式httpurlconnection:jdk里自带的httpclient:apache开源项目resttemplate:spring提供,本质就是封装了httpclientPOST中文乱码解决使用URLEncoder.encode和URL...

2019-01-01 11:55:00 589

转载 Vue(七):computed计算属性

简介计算属性关键词: computed。计算属性在处理一些复杂逻辑时是很有用的。实例1可以看下以下反转字符串的例子:<div id="app"> {{ message.split('').reverse().join(' | ')}}</div><script>new Vue({ el: '#app'...

2018-12-30 22:55:00 222

转载 Vue(六):条件与循环

1.条件(v-if)控制切换一个元素是否显示<div id="app-3"> <p v-if="seen">现在你看到我了</p></div><script>var app3 = new Vue({ el: '#app-3', data: { seen: true }...

2018-12-30 11:42:00 109

转载 Vue(五):Vue模板语法

1.{{...}}(双大括号)文本插值<div id="app"> <p>{{ message }}</p></div>2.v-html指令用于输出 html 代码<div id="app"> <div v-html="message"></div&gt...

2018-12-28 20:07:00 139

转载 JS中parseint和number的区别

两者定义的区别parseInt将字符串(String)类型转为整数类型。Number() 函数把对象(Object)的值转换为数字。parseInt得到的结果是整数或者NaN,而Number得到的是数字(整数,小数等)或者NaN;parseInt()语法parseInt(string, radix)参数   描述string必需。要被解析的字符串...

2018-12-27 20:35:00 341

转载 Nginx(七):keepalived实现Nginx负载均衡服务器的双机高可用

前言之前咱们通过Nginx(六):Nginx HTTP负载均衡和反向代理的配置与优化和Nginx+tomcat组合实现高并发场景的动静分离和负载均衡方案这两篇文章了解了Nginx对高并发应用服务器tomcat的负载均衡优化,所有的请求都会先经过Nginx,Nginx就像是一座城池的城门,它的坚固耐用程度显然就变得极为重要。为了防止一台Nginx服务器崩溃带来无法预估的灾难...

2018-12-26 22:13:00 147

转载 Keepalived介绍以及在Linux系统下的安装与配置

一、简介Keepalived是一个免费开源的,用C编写的类似于layer3, 4 & 7交换机制软件,具备我们平时说的第3层、第4层和第7层交换机的功能。主要提供loadbalancing(负载均衡)和high-availability(高可用)功能,负载均衡实现需要依赖Linux的虚拟服务内核模块(ipvs),而高可用是通过VRRP协议实现多台机器之间的故障转移服务。...

2018-12-26 21:53:00 141

转载 Nginx(六):Nginx HTTP负载均衡和反向代理的配置与优化

一、什么是负载均衡和反向代理随着网站访问量的快速增长,单台服务器已经无法承担大量用户的并发访问,必须釆用多台服务器协同工作,以提高计算机系统的处理能力和计算强度,满足当前业务量的需求。而如何在完成同样功能的多个网络设备之间实现合理的业务量分配,使之不会出现一台设备过忙、而其他 的设备却没有充分使用的情况。要解决这一问题,可以釆用负载均衡的方法。 .二、负载均衡负载均衡是由多台...

2018-12-24 21:46:00 132

转载 Nginx+tomcat组合实现高并发场景的动静分离和负载均衡方案

简介Java服务大多是跑在tomcat里,但是众所周知tomcat的并发性能没有优势(tomcat8及以上的版本可能有所改善),所以为了更好的适应高并发的应用场景,我们可以使用tomcat+nginx实现动静分离,在处理静态请求的时候,就直接给Nginx处理,动态请求就转给tomcat处理。简单一句话就是,nginx负责静态请求,以及高并发下的负载均衡调度动态请求给tomcat处...

2018-12-24 20:55:00 311

转载 Nginx(五):浏览器本地缓存设置

浏览器缓存(BrowserCaching)浏览器缓存是为了加速浏览,浏览器在用户磁盘上,对最近请求过的文档进行存储。当访问者再次请求这个页面时,浏览器就可以从本地磁盘显示文档,这样,就可以加速页面的阅览,缓存的方式节约了网络的资源,提高了网络的效率。实现浏览器缓存步骤浏览器缓存可以通过expires指令输出Header头来实现,expires指令的语法如下语法:expir...

2018-12-24 20:49:00 460

转载 Nginx(四):压缩功能详解

gzip (GNU-ZIP) 是一种压缩技术。经过 gzip 压缩后页面大小可以变为原来的 30%甚至更小。 这样,用户浏览页面的时候速度会快得多。 gzip 的压缩页面需要浏览器和服务器双方都支持,实 际上就是服务器端压缩,传到浏览器后浏览器解压并解析。浏览器那里不需要我们担心,因为 IE、 Firefox 、Opera 、Chrome 等绝大多数浏览器都支持解析 gzip 过的页面...

2018-12-23 21:09:00 195

转载 Linux定时任务Crontab命令详解

Linux 系统定时任务则是由 cron (crond) 这个系统服务来控制的。Linux 系统上面原本就有非常多的计划性工作,因此这个系统服务是默认启动的。另外, 由于使用者自己也可以设置计划任务,所以, Linux 系统也提供了使用者控制计划任务的命令 :crontab 命令。一、crond简介crond 是linux下用来周期性的执行某种任务或等待处理某些事件的一个守护进程...

2018-12-22 14:18:00 70

转载 Axure chrome 扩展显示已损坏的解决方法

下载地址链接:https://pan.baidu.com/s/11K3t_mvgJg51siO_jNRejg提取码:goz1如果链接失效,请留言或站内信提醒我更新疑问之前用的好好的Axure chrome 扩展如今却并不能使用,一直说扩展已损坏,额,上网下了几个.crx文件都没有用……解决方法  将下载的 .crx 文件的后缀改成.rar结尾的,然后解...

2018-12-20 21:36:00 116

转载 MySql(十九):基础——自定义存储过程和函数

MYSQL中创建存储过程和函数分别使用CREATE PROCEDURE和CREATE FUNCTION使用CALL语句来调用存储过程,存储过程也可以调用其他存储过程函数可以从语句外调用,能返回标量值创建存储过程语法CREATE PROCEDURE sp_name ([ proc_parameter ]) [ characteristics..] routine...

2018-12-20 21:15:00 183

转载 解决NavicatPremium导入CSV文件中文乱码的问题

在做数据对接导入的时候对方提供的数据是CSV格式的文件一开始用Excel打开时发现格式就不对,后来发现只要用Excel打开,就会破坏里面的格式然后想先用NaviCat导入CSV再转成Excel格式为文件以后再对数据调整后导入表中发现导入以后都是乱码查资料发现必须要使用10008(MAC-Simplified Chinese GB 2312)这个编码格式才可以转载...

2018-12-19 20:10:00 3144

空空如也

空空如也

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

TA关注的人

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