自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 jvm性能调优--对象的创建

1,类加载检查 当虚拟机遇到一个new指令时,首先会检查常量池中是否有这个类的符号引用,并检查符号引用代表的类是否被加载、解析、初始化过,如果没有就先要加载、解析、初始化类2,分配内存 1>类加载检查通过后,虚拟机就会为这个对象分配内存,分配内存的方式主要有两种指针碰撞、空闲列表,至于使用哪一种又java堆是否规整决定; 指针碰撞:这种方式适合堆规整的时候,将用过的内存整合到一边,没有的内存整合到一边,中间用分界指针,只要指针向着没用过的内存移动对象...

2022-03-23 11:27:55 123

原创 JVM性能调优(一)运行时内存

1,运行时内存图2,具体区域介绍 线程私有区域:程序计数器、虚拟机栈、本地方法栈 线程共享区域:元空间、堆、直接内存 1>程序计数器:是一块很小的空间,主要用来当前多线程代码执行的位置,和下一条要执行的指令 2>虚拟机栈:在线程运行时,在执行每一个方法的时候,都会打包成一个栈帧放入Java虚拟机栈中。每一个栈帧存储了局部变量表、操作数栈、动态连接,方法出口等信息。局部变量表存储了编译器可知的各种数据类型(bo...

2022-03-22 16:59:02 1191

原创 java高级编程知识点合集--多线程(三)

(一)并发工具 1,fork-join框架;fork-join采用分而治之的思想,即规模为N的问题,N<阈值,直接解决,N>阈值,将N分解为K个小规模子问题,子问题互相对立,与原问题形式相同,将子问题的解合并得到原问题的解。实现了工作密取即当一个线程完成任务后会分担没有完成任务的线程的任务。当两个线程共同完成一个任务时,两个线程拿任务一个从头拿,一个从未拿 所以不会有竞争。 使用:通过实现RecursiveTask、RecursiveAtion、ForkJoinT...

2022-03-22 10:39:34 548

原创 java高级编程知识点合集---多线程(二)

(一)CAS(compare and swap)比较交换 1,CAS是基于冲突检测的乐观锁,CAS包括三个运算符内存地址V、期望的值A、一个新值B。基本思路:如果地址V上的值和期望的值A相等,就给地址V赋给新值B,如果不是,不做任何操作。例如:内存地址V=5,C线程拿到V后做加1运算,突然D线程把V改成了6,C线程CAS操作修改V时发现期望值A=5,V=6不相等又循环重新拿V做加1操作,直至V=A修改成功不然循环(死循环,自旋)里不断的进行CAS操作 2,CAS存在的问题...

2022-03-21 15:39:00 417

原创 java高级编程知识点合集--多线程(一)

1,核心数和并行线程数的关系:核心数:线程数=1:1;使用了超线程技术后1:22,CPU时间片轮转机制:多个线程分时间片段执行,会导致上下文切换3,并发的优缺点,注意事项 优点:充分的利用CPU资源,加快响应时间,程序规模话,异步化 缺点:线程共享资源,容易导致死锁; 上下文切换消耗时间; 启用线程太多,容易卡死4,并发编程的三要素,怎么确保多线程安全运行 确保原子性,...

2022-03-16 11:17:12 75

原创 java高级编程知识点合集--集合<Map>(三)

(1)hashMap的实现原理 hashMap是基于hash算法实现的,使用”拉链法“解决冲突,jdk1.8后当链表的长度大于8的时候后使用红黑树保存数据,以提高检索的效率(2)hashMap为什么不直接使用hashcode作为table的下标呢 hashcode的值太大了,hashMap有自己的hash()方法,可以使得数据更均匀!(3)hashMap长度都是2的幂次方(4)hashMap与hashTable的区别 1,hashTable是线程安全的,...

2022-03-10 17:43:30 134

原创 java高级编程知识点合集--集合<collecction>(二)

一,list接口(1)迭代器iterator是什么 迭代器iterator提供遍历collection的接口(2)iterator怎么使用、特点 1,使用:List<String> list = new ArrayList<>();Iterator<String> it = list.iterator();while(it.hasNext()){ String s = it.next();} 2,只...

2022-03-10 16:37:22 162

原创 java高级编程知识点合集 -- 集合(一)

(1)集合与数组的区别 1,集合的长度可以自动扩增,而数组不可以 2,数据可以储存基本数据类型,但是集合不可以 3,数组存储的数据类型都是一样的,但是集合可以基于多态存储多种数据类型(2)使用集合的有点 1,自动扩增 2,提供了数据结构和算法的实现,操作便捷,快速 3,降低维护成本(3)常用的集合 1,map接口和collection是所有集合的父类接口 2,collecti...

2022-03-09 17:09:22 289

原创 算法之排序 选择排序(一)简单选择排序

简单选择排序简单选择排序寻找无序序列中最小值(最大值)的索引,再插入到有序序列的相应位置实现:/** * 简单选择排序 * @author 陈鑫 * */public class SimpleSelectionSort { public static int[] sort(int [] arr) { for(int i=0; i<arr.length; i++) { int a = i; //找寻当前未排序序列中的最小值 for(int j=i

2020-06-09 21:00:47 217

原创 算法之排序 交换排序(二)快速排序

快速排序快速排序是由冒泡排序改进而得,从无序序列中挑选一个记录作为中心记录,将所有的数值与中心记录进行比较大的放在中心值右边,小的放入中心值左边,然后再对中心值左右子序列进行相同操作实现:/** * 快速排序 * @author 陈鑫 * */public class QuickSort { public static int sort(int [] arr,int low,int hight) { int key = arr[low];//保存中心值 while(lo

2020-06-09 20:53:44 152

原创 算法之排序 交换排序(一)冒泡排序

冒泡排序通过两两相邻记录关键字的比较,如果逆序就交换位置,使得最大的记录左移实现:/** * 冒泡排序 * @author 陈鑫 * */public class BubbleSort { public static int[] sort(int [] arr) { for(int i=0; i<arr.length; i++) { for(int j=i-1; j >= 0; j--) { if(arr[j] > arr[j+1])

2020-06-09 20:46:28 138

原创 算法之排序 插入排序(三)希尔排序

希尔排序希尔排序是采用分组插入的方法,先将整个待排序的序列分割成几组,从而减少直接插入排序的数据量,对每组分别进行直接插入排序。实现:/** * 希尔排序 * @author 陈鑫 * */public class HillSort { public static int[] sort(int [] arr) { int dk = arr.length/2;//增量 int a = 0; while(dk > 0) { for(int i=dk; i&l

2020-06-09 20:41:15 101

原创 算法之排序 插入排序(二)折半插入排序

折半插入排序直接插入排序采用顺序查找当前记录在已排好的序列中的插入位置,而折半插入排序采用“折半查找”查找插入位置算法步骤:1,设待排序的记录存放在数组r[1....n]中,r[1]是一个有序序列2,循环n-1次,每次使用顺序查找法,查找r[i](i=2....n)在已排序好的序列r[1....n-1]中插入位置,然后将r[i]插入到表长为i-1的有序列表r[1,.....i-1],直到将r[n]插入到表长为n-1的有序列序列r[1,.....,n-1],最后得到一个表长为n的有序列表实

2020-06-09 20:35:09 438

原创 算法之排序 插入排序(一)直接插入排序

直接插入排序直接插入排序是一种最简单的排序方法,其基本操作是将一条记录插入到已排序好的有序列表中,从而得到一个新的、记录数量增1的有序列表算法步骤1,设待排序的记录存放在数组r[1....n]中,r[1]是一个有序序列2,循环n-1次,每次使用顺序查找法,查找r[i](i=2....n)在已排序好的序列r[1....n-1]中插入位置,然后将r[i]插入到表长为i-1的有序列表r[1,.....i-1],直到将r[n]插入到表长为n-1的有序列序列r[1,.....,n-1],最后得到一个表

2020-06-09 20:28:22 1464

原创 javascript 之 数组常用函数

1,push() 可接受任意类型的参数,将它们逐个添加到数组的末尾,并返回数组的长度2,pop() 从数组的末尾移除最后一项,减少数组的length值,返回移除的项3,shift() 移除数组中的第一个项并且返回该项,同时将数组的长度减一4,unshift() 在数组的前端添加任意个项,并返回新数组的长度5,reverse() 反转数组项的顺序6,排序: sort() var arr = [11,5,23,7,4,1,9,1]; console.log(...

2020-05-30 17:00:00 161

原创 javascript 之 字符串常用函数

let s = "hello world";1,获取字符串长度:,s.length2,截取字符串:s.substr(3,4):从下标为3的位置开始,截取4个字符,包括下标为3的位置的字符3,截取字符串:s.substring(6,8):从下标为6的位置开始截取,截取到下标为8的位置,但是不包括下标为8的字符[6,8)4,去除空格:s.trim():去掉字符串俩边的空格,但是这个方法有可能浏览器不支持5,字符串转换为大写:s.toUpperCase()6,字符串转换为小写:s.toL.

2020-05-30 16:43:01 354

原创 React (二) 组件

组件声明1,函数组件//组件名称必须首字母大写 function MyCom(){ return <h1>hello world</h1>; } let msg = 'hello'; //父组件 ReactDOM.render(<MyCom />,document.getElementById('root'))2,类组件可以通过ES6中的类来创建组件,该类继承React.Component,并且拥有一个render()函数,

2020-05-30 16:12:22 145

原创 React (一) 创建React项目

使用脚手架1,安装node.js:进入官网https://nodejs.org/en/下载安装2,全局安装脚手架 $ cnpm install -g create-react-app3,使用脚手架创建工程 $ create-react-app my-app4, 启动工程 $ cd my-app/ $ npm start使用CDN在浏览器中使用 Babel 来编译 JSX 效率是比较低的。如果在html中直接使用react需要导入react、react-dom、babel&..

2020-05-30 13:53:13 181

原创 数据结构之图 最短路径算法

最短路径:计算从Vi到Vj的权总和最小的路径/** * 贪婪算法实现 * @author 陈鑫 * 有权无负值图最短路径算法 */public class ShortestPath { static class Vertex{ public List<Vertex> adj;//邻接顶点集合 public Boolean known;//是否遍历过,防止有圈图 public Integer dist;//距离 public Vertex path;//路径

2020-05-29 17:32:00 386

原创 数据结构之图 拓扑排序

拓扑排序拓扑排序是对有向无圈图的顶点的一种排序,是得如果存在一条从Vi到Vj的路劲,那么在排序中Vj就出现在Vi的后面。例如课程的学习顺序。

2020-05-29 17:28:22 425

原创 算法之回溯算法-24点问题

24点问题:收取四张牌加起来等于24点的可能有哪些?/** * * @author 陈鑫 * 回溯解决24点问题 * */public class TwentyFourPoints { public static void scratchCard(ArrayList<Integer> cardList,ArrayList<Integer> handList) { int length = handList.size();//手牌数量 Integer

2020-05-29 17:13:55 1516

原创 SpringCloud之配置中心 (六)

配置中心随着微服务的数量越来越多,许多的配置信息分散在项目中,这样修改配置就相当不方便。于是引入了配置中心,将配置信息提取出来保存到仓库中,然后通过配置中心提取配置信息。在 spring cloud config 中,分两个角色,一是 config server,二是 config client。 配置信息可以存放在远程仓库(GIT 或者 SVN)或者本地文件中,然后由配置中心 (config server)统一的去读取,最后每一个微服务项目(config client)通过配置中心 (config s

2020-05-29 16:57:53 192

原创 SpringCloud之路由网关zuul和过滤器(五)

路由网关zuul在微服务架构中,后端服务调用接口不会直接暴露给服务调用方,通常会通过一个 API 网关根据请求的 url,将其路由到相应的服务。当添加 API 网关后,在第三方调用端和服务提供方之间就创建了一面墙,这面墙直接与调用方通信进行权限控制,后将请 求均衡分发给后台服务端。Zuul 是微服务架构的不可或缺的一部分,它给微服务系统提供了 API 网关(API Gateway),同时还提供动态路由,监控,弹性,安全等的边缘服务。Zuul 是 Netflix 出品的一个基于 JVM 路由和服务端的负.

2020-05-24 15:40:30 170

原创 SpringCould之熔断器(四)

熔断器’雪崩效应‘在微服务架构中通常会有多个服务之间进行相互调用,基础服务的故 障可能会导致级联故障,进而造成整个系统不可用的情况,这种现象被称为服务“雪崩效 应”。服务雪崩效应是一种因“服务提供者”的不可用导致“服务消费者”的不可用,并将 不可用逐渐放大的过程。 为解决“雪崩效应”微服务架构提供了一种了断路器模型即熔断器,当请求时间过长,“服务提供者”故障时快速返回响应的机制。熔断器加在“服务消费方”一,Ribbon+RestTemplate+Hystrix 1,创建springBoot...

2020-05-24 15:17:00 262

原创 springCloud之软件架构(一)

当前有许多的软件架构设计,每一种软件架构都有自己的特点和引用场景,使用哪种软件架构来解决项目的需求需要根据实际情况来判断单体软件架构 单体软件架构在小项目中比较常见。主要由一个数据库,一个前端项目,一个后台项目就可以跑起来,例如开发简单的博物馆管理系统,创建一个web前后台项目,加数据库,在加一个tomcat即可运行。这种软件框架使用于项目快速上线、垂直度较高,访问压力较小 的业务。在这种模式下对技术要求低。方便各层次人员接手,下面是单体架构图: ...

2020-05-24 14:47:10 384

原创 springCould 之服务注册和调用(三)

准备项目准备注册中心,服务提供方,服务消费方三个项目。用户访问服务消费方,服务消费方通过注册中心发现服务提供方,服务提供方提供相关服务。一,注册中心 如上节所述二,服务提供方 服务提供方作为一个真正的Eureka客户端,主要功能是提供业务服务。 1,创建springBoot项目引入spring-cloud-starter-eureka依赖 pom文件: <dependencies> <dependency>...

2020-05-24 14:38:54 170

原创 springCloud之 注册中心Eureka(二)

注册中心(Eureka)提供服务的注册和发现功能。每一个微服务都要到注册中心将自己的信息进行注册,才能被已经注册的其他微服务发现和访问。注册中心由Eureka服务端和Eureka客户端组成服务端主要提供注册和发现功能,客户端主要是每一个微服务注册中心搭建 一,创建一个springboot项目,引入springcloud pom文件注册中心依赖如下: 1,指定springcloud 版本 <properties> &l...

2020-05-24 10:56:03 88

原创 web项目:解决后台获取前端传的参数乱码问题,和后台发送数据乱码问题

获取的中文参数乱码: 一,get方式传参,中文乱码 修改tomcat中的配置server.xml 【Servers项目中去找server.xml文件,然后修改】 在修改端口的标签Connector中添加属性URIEncoding="XXX"(一般情况下,要么GBK,要么UTF-8)...

2019-05-08 10:56:45 2659 2

原创 web开发之前后台分离(一)后台搭建

以idea编程工具为例,而且数据库中表已建好,数据库使用mysql步骤一: 使用spring--boot搭建maven项目框架,集成springMVC,Mybatis,Mysql。配置application.properties文件spring.datasource.driverClassName=com.mysql.jdbc.Driverspring.data...

2019-04-23 12:15:04 672

空空如也

空空如也

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

TA关注的人

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