自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 leetcode 518. 零钱兑换 II

class Solution { public int change(int amount, int[] coins) { if (coins == null) { return 0; } int[]dp=new int[amount+1]; dp[0]=1; for(int coin:...

2019-09-16 00:12:35 106

原创 算法:大数相乘

public class Main { public static void main(String[] args) { String s1="9999999999999999999999999999999999999999999999999",s2="11111111"; System.out.println(solution(s1, s2)); }...

2019-09-15 21:38:26 146

原创 算法:大数相加

public class Main { public static void main(String[] args) { String s1="9999999999999999999999999999999999999999999999",s2="211111111111111111111111111111111111111111111111111111111111111111...

2019-09-15 20:21:51 118

原创 leetcode 64 最小路径和

public class Solution{ public int minPathSum(int[][] grid) { for(int i=grid.length-1;i>=0;i--) { for(int j=grid[0].length-1;j>=0;j--) { if(i==grid.length-1&a...

2019-09-14 15:00:23 91

原创 关于大型网站系统架构的一些总结

1. 你使用过哪些组件或者方法来提升网站性能,可用性以及并发量 提高硬件能力、增加系统服务器。(当服务器增加到某个程度的时候系统所能提供的并发访问量几乎不变,所以不能根本解决问题) 使用缓存(本地缓存:本地可以使用JDK自带的 Map、Guava Cache.分布式缓存:Redis、Memcache.本地缓存不适用于提高系统并发量,一般是用处用在程序中。比如Spring是如何实现...

2019-09-14 14:57:29 225

原创 Redis缓存解决方案

使用缓存业务流程大概:查询时,先查缓存——有,直接返回;无,查数据库返回。接下来说一下缓存在实际应用中可能出现的问题:1、缓存穿透1.1 什么是缓存穿透?缓存穿透:由于缓存是不命中时被动写入的,出于容错考虑,当查询一个一定不存在的数据时——存储层查不到数据不写入缓存——导致每次查询这个不存在的数据的请求都会直接到存储层查询,失去了缓存的意义。1.2 缓存穿透带来的问题如果黑...

2019-08-28 14:15:34 167

原创 分布式锁

在单机场景下,可以使用语言的内置锁来实现进程同步。但是在分布式场景下,需要同步的进程可能位于不同的节点上,那么就需要使用分布式锁。阻塞锁通常使用互斥量来实现:1.互斥量为 0 表示有其它进程在使用锁,此时处于锁定状态;2.互斥量为 1 表示未锁定状态。1 和 0 可以用一个整型值表示,也可以用某个数据是否存在表示。数据库的唯一索引获得锁时向表中插入一条记录,释放锁时删除这条记录。唯一...

2019-07-02 18:51:05 73

原创 消息队列--RabbitMQ

一、消息模型1.点对点消息生产者向消息队列中发送了一个消息之后,只能被一个消费者消费一次。2.发布/订阅消息生产者向频道发送一个消息之后,多个消费者可以从该频道订阅到这条消息并消费。发布与订阅模式和观察者模式有以下不同:观察者模式中,观察者和主题都知道对方的存在;而在发布与订阅模式中,生产者与消费者不知道对方的存在,它们之间通过频道进行通信。观察者模式是同步的,当事件触发时,主题会调用...

2019-06-27 15:26:07 364

原创 一致性hash算法

普通的hash算法在分布式应用中的不足:比如,在分布式的存储系统中,要将数据存储到具体的节点上,如果我们采用普通的hash算法进行路由,将数据映射到具体的节点上,如key%N,key是数据的key,N是机器节点数,如果有一个机器加入或退出这个集群,则所有的数据映射都无效了,如果是持久化存储则要做数据迁移,如果是分布式缓存,则其他缓存就失效了。接下来我们来了解,一致性hash算法是怎么解决这个问...

2019-06-27 14:45:57 79

原创 设计模式的六大原则

设计模式的六大原则总原则:开闭原则(Open Close Principle)开闭原则就是说对扩展开放,对修改关闭。在程序需要进行拓展的时候,不能去修改原有的代码,而是要扩展原有代码,实现一个热插拔的效果。所以一句话概括就是:为了使程序的扩展性好,易于维护和升级。想要达到这样的效果,我们需要使用接口和抽象类等,后面的具体设计中我们会提到这点。1、单一职责原则不要存在多于一个导致类变更的原因...

2019-06-25 13:38:15 72

原创 装饰器模式

interface Sourceable{public void method();}class Source implements Sourceable{@Overridepublic void method() {System.out.println(“被修饰对象”);}}class Decorator implements Sourceable{private Sourc...

2019-06-25 10:47:26 63

原创 浅谈Redis中的RDB和AOF

由于Redis的数据都存放在内存中,如果没有配置持久化,redis重启后数据就全丢失了,于是需要开启redis的持久化功能,将数据保存到磁盘上,当redis重启后,可以从磁盘中恢复数据。redis提供两种方式进行持久化,一种是RDB持久化(原理是将Reids在内存中的数据库记录定时dump到磁盘上的RDB持久化),另外一种是AOF持久化(原理是将Reids的操作日志以追加的方式写入文件)。1、...

2019-06-22 19:22:27 100

原创 Mysql几种存储引擎:innodb,myisam,memory

innoDB存储引擎(1) innodb存储引擎的mysql表提供了事务,回滚以及系统崩溃修复能力和多版本迸发控制的事务的安全。(2)innodb支持自增长列(auto_increment),自增长列的值不能为空,如果在使用的时候为空的话怎会进行自动存现有的值开始增值,如果有但是比现在的还大,则就保存这个值。(3)innodb存储引擎支持外键(foreign key) ,外键所在的表称...

2019-06-21 07:43:03 150

原创 数据库范式

第一范式(1NF)所谓第一范式(1NF)是指在关系模型中,对于添加的一个规范要求,所有的域都应该是原子性的,即数据库表的每一列都是不可分割的原子数据项,而不能是集合,数组,记录等非原子数据项。即实体中的某个属性有多个值时,必须拆分为不同的属性。在符合第一范式(1NF)表中的每个域值只能是实体的一个属性或一个属性的一部分。简而言之,第一范式就是无重复的域。说明:在任何一个关系数据库中,第一范式(...

2019-06-19 19:17:23 138

原创 机器码和字节码

什么是机器码机器码机器码(machine code),学名机器语言指令,有时也被称为原生码(Native Code),是电脑的CPU可直接解读的数据。通常意义上来理解的话,机器码就是计算机可以直接执行,并且执行速度最快的代码。用机器语言编写程序,编程人员要首先熟记所用计算机的全部指令代码和代码的涵义。手编程序时,程序员得自己处理每条指令和每一数据的存储分配和输入输出,还得记住编程过程中每步...

2019-06-19 14:40:26 137

原创 JVM Eden空间,From Survivor空间,To Survivor空间

java进程运行过程中创建的对象存放在堆中,堆被划分成两个不同的区域:新生代 ( Young )、老年代 ( Old )。新生代 ( Young ) 又被划分为三个区域:Eden、From Survivor、To Survivor。 默认的,新生代 ( Young ) 与老年代 ( Old ) 的比例的值为 1:2 ( 该值可以通过参数 –XX:NewRatio 来指定 ),即:新生代 ( Yo...

2019-06-19 10:02:21 2072

原创 CMS和G1收集器对比

首先要知道 Stop the world的含义:不管选择哪种GC算法,stop-the-world都是不可避免的。Stop-the-world意味着从应用中停下来并进入到GC执行过程中去。一旦Stop-the-world发生,除了GC所需的线程外,其他线程都将停止工作,中断了的线程直到GC任务结束才继续它们的任务。GC调优通常就是为了改善stop-the-world的时间CMS收集器是一种以获取...

2019-06-19 08:18:21 334

原创 剑指offer49字符串转换为整数

public class Test{public static long solution(String str)throws Exception {if(strnull||str.length()0)throw new Exception(“输入数据有误”);long num=0;boolean minus=false;int index=0;if(str.charAt(index)...

2019-06-17 06:05:27 70

原创 剑指offer42 反转句子中单词顺序

public class Test{public static String invert(String str) {if(strnull)return null;char[]arr=str.toCharArray();for(int i=0;i<(arr.length+1)/2;i++) {char tmp=arr[i];arr[i]=arr[arr.length-i-1];...

2019-06-16 21:27:41 125

原创 剑指offer38 数字在排序数组中出现的次数

public class Test{public static int getFirst(int[]arr,int k,int start,int end) {if(start>end)return -1;int mid=(start+end)/2;if(arr[mid]k) {if((mid>0&&arr[mid-1]!=k)||mid0) {return...

2019-06-16 15:45:39 72

原创 剑指offer35 第一个只出现一次的字符

import java.util.LinkedHashMap;public class Test{public static Character findChar(String str) {if(str==null)return null;char[]arr=str.toCharArray();LinkedHashMap<Character,Integer>hash=new ...

2019-06-16 14:49:29 61

原创 剑指offer35 丑数

import java.util.Arrays;public class Test{public static int[] findNum(int n) {if(n<0) {return null;}int[] uglyNum=new int[n];uglyNum[0]=1;int mul2=1;int mul3=1;int mul5=1;for(int i=1;i&l...

2019-06-16 14:27:01 64

原创 剑指offer31求数组中连续子数组的最大和

public class Test{public static Integer findSum(int[]arr) {if(arr==null||arr.length<=0)return null;int sum=0;int bigSum=Integer.MIN_VALUE;for(int i=0;i<arr.length;i++) {if(sum<=0) {sum...

2019-06-16 10:14:37 143

原创 剑指offer30 输出最小k个数

public class Test{public static void main(String[] args) {solution(new int[] {3,4,5,13,7,2,9,8,7},5);}public static void solution(int[]arr,int k) {if(arrnull||k<=0||k>arr.length) {return;...

2019-06-16 09:47:10 108

原创 剑指offer25 二叉树某一路径的和为设定的值

import java.util.Stack;public class Test{public static void find(Btree root,int sum) {if(rootnull)return;Stack path=new Stack<>();int currentSum=0;find(root,sum,path,currentSum);}public ...

2019-06-15 10:31:39 57

原创 剑指offer24 判断二叉树的后序遍历

import java.util.Arrays;public class Test{public static boolean judge(int[]arr) {if(arr==null||arr.length<=0) {return false;}int root = arr[arr.length-1];int i=0;for(;i<arr.length-1;i++)...

2019-06-15 10:05:02 70

原创 剑指offer20 顺时针打印矩阵

public class Test{public static void main(String[] args) {int[][] arr={{1, 2, 3, 4},{5, 6, 7, 8},{9,10,11,12},{13,14,15,16}};execute(arr);}public static void execute(int[][]arr) {if(arr==nu...

2019-06-14 13:14:28 67

原创 剑指offer18判断是不是二叉树的子树

public class Test{public staticboolean aHasB(Btree A,Btree B) {if(Bnull)return true; //顺序不能反if(Anull)return false;if(A.data!=B.data)return false;return aHasB(A.left, B.left)&&aHasB(A.rig...

2019-06-14 10:27:16 125

原创 剑指Offer 第15题 链表中倒数第K个数

import java.util.Scanner;public class Test{//尾插法建立链表public static ListNode createList(ListNode headNode) {ListNode p=headNode;if(p==null) {return null;}Scanner sc=new Scanner(System.in);Syste...

2019-06-14 08:33:42 57

原创 JAVA容器相关问题(一)

HashMap相关问题1、你用过HashMap吗?什么是HashMap?你为什么用到它?用过,HashMap是基于哈希表的Map接口的非同步实现,它允许null键和null值,且HashMap依托于它的数据结构的设计,存储效率特别高,这是我用它的原因2、你知道HashMap的工作原理吗?你知道HashMap的get()方法的工作原理吗?上面两个问题属于同一答案的问题HashMa...

2019-06-08 11:01:21 57

原创 单例模式

public class Test{private Test() {};private volatile static Test instance;public static Test getInstance() {if(instancenull) {synchronized(Test.class) {if(instancenull) {instance=new Test();}...

2019-06-07 07:02:36 65

原创 计算机网络分层结构

OSI体系结构:应用层,表示层,会话层,运输层,网络层,数据链路层,物理层TCP/IP体系结构:应用层,运输层(TCP或UDP),网际层(IP),网络接口层五层协议体系结构:应用层,运输层,网络层,数据链路层,物理层应用层:(网关)通过应用进程间的交互来完成特定网络应用。应用层交互的数据单元成为报文。HTTP,FTPDNS域名系统(把机器名字换成IP地址)SMTP(简单邮件...

2019-06-06 18:15:51 4203

原创 手写生产者消费者模式

手写了一种生产者消费者模式,调用了sychronized,wait,notifyall函数package proAndCsmModel01;import java.util.LinkedList;/*** 实现缓冲区**/public class Resource01 { //最大缓冲区 private final int M...

2019-06-06 15:28:16 420

原创 纯手码几种排序算法

快速排序import java.util.Arrays;public class Test{public static void main(String[] args)throws Exception {int[] nums = {9,8,7,4,5,6,3,2,1,0};quickSort(nums, 0, nums.length-1);System.out.println(Arra...

2019-06-06 15:23:36 76

空空如也

空空如也

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

TA关注的人

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