- 博客(88)
- 收藏
- 关注
原创 Prometheus 监控 Kubernetes 集群
Prometheus介绍首先看到Prometheus官方架构图:exporter和pushgatway数据通过exporter和pushgatway收集存储起来,再由Prometheus服务进行拉取操作。这样的设计把数据压力分摊到了各个收集节点,不会导致收集节点过多而Prometheus承受不住数据冲击而宕机。对于收集的方式通过exporter或pushgatway暴露http/https端口地址进行采集,也就是除了官方提供的exporter之外,我们可以很好的进行定制exporter,只需满足P
2021-02-24 21:18:28
809
原创 LeetCode Top Interview Questions(101 - 145)
前言每天刷一刷,5050发。LeetCode Top Interview Questions(101 - 145)101 Basic Calculator II实现 + - * /计算Example 1:Input: "3+2*2"Output: 7Example 2:Input: " 3/2 "Output: 1Example 3:Input: " 3+5 / 2...
2020-03-22 21:33:29
483
原创 LeetCode Top Interview Questions(50 - 100)
前言每天刷一刷,5050发。LeetCode Top 200(50 - 100)51 Binary Tree Level Order Traversal二叉树的层序遍历For example:Given binary tree [3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7return[ [3...
2020-03-13 21:37:36
2998
原创 在处理字符串时,charAt和toCharArray的选择。
没有通用的最佳性能方式。charAt进行边界检查(但是可以进行优化),而toCharArray则使用了临时空间。当VM无法消除边界时,使用toCharArray可能会更快。有关更多信息,请参见这里PPT 的74-78页。在上面的文档中给出了测试和解释。Q: Should I copy out the char[] array or not? 我是否应该复制char[]数组?A: If...
2020-03-13 17:00:55
538
原创 又一个把性能发挥到极致到例子
Word Search II给定2D木板和词典中的单词列表,请在木板中查找所有单词。每个单词必须由顺序相邻的单元格的字母构成,其中“相邻”单元格是水平或垂直相邻的单元格。同一字母单元在一个单词中最多只能使用一次。Example:Input: board = [ ['o','a','a','n'], ['e','t','a','e'], ['i','h','k','r'],...
2020-03-13 15:44:31
358
原创 01背包问题解法及优化
01背包问题给定一个容量为C的背包,重量为weight,价值为value的石头,求背包能容纳的最大价值。例weight = [1, 2, 3]value = [6, 10 ,12]C = 5输出:22背包中放入一个重量为3的石头和一个重量为2的石头value = 10 + 12 = 22.递归 public int findRes(int[] weight, int[] v...
2020-03-09 21:42:20
825
原创 LeetCode Top Interview Questions(0 - 50)
前言每天刷一刷,5050发。LeetCode Top 200(0 - 50)1 Tow Sum找出数组中和为target的两个数的下标。你可以确保有且仅有一个解。Example:Given nums = [2, 7, 11, 15], target = 9,Because nums[0] + nums[1] = 2 + 7 = 9,return [0, 1].Two Su...
2020-03-09 10:50:32
438
原创 剑指67题解
剑指offer需要md私信1 二维数组中的查找 二维数组中的查找在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。思路:从右上角开始往左下角塞选public class select2DArry { public boolean Fi...
2020-03-03 14:28:05
4241
转载 (转)SPI机制
前言在查看Spring装配Servlet时候有用到的SPI机制查看原文章JAVA 拾遗 – 关于 SPI 机制JDK提供的SPI(Service Provider Interface)机制,可能很多人不太熟悉,因为这个机制是针对厂商或者插件的,也可以在一些框架的扩展中看到。其核心类 java.util.ServiceLoader可以在 jdk1.8 的文档中看到详细的介绍。虽然不太常见,但并...
2020-02-21 20:31:20
260
原创 SpringMVC内容协商-扩展参数解析-2
SpringMVC内容协商-扩展参数解析-2前在上一篇SpringMVC内容协商-扩展参数解析中利用SpringBoot提供的钩子,实现了请求入参和返参的数据解析,但是可以看到我们依赖的是RequestResponseBodyMethodProcessor,这就要求我们在方法体上和参数上添加@ResponseBody和@RequestBody标签,但是如果我们不依赖这两个标签要如何实现呢?过...
2020-02-06 18:12:28
220
原创 SpringMVC内容协商-扩展参数解析
问题在使用SpringMVC时,调用接口传送数据时,大多情况使用的是json格式传输数据,这也是这个框架里面默认选项,但是如果我们要自己定义传输格式,并且写自己的解析接口,定义自己的媒体类型作为扩展,需要怎么做?过程在SpringMVC传输数据的阶段,我们请求在DispatchServlet中处理时,当我们找到了对应的方法HandlerMapping之后,执行方法前会对参数进行解析,当然对应...
2020-02-05 20:35:45
274
原创 Redus Cluster
前言我们知道Redis官方给出Redis的QPS能达到10W/s,这是一个非常快的速度,但是如果这样的数据还无法满足我们的需求,比如100W/s。其次,我们业务需要很大的内存存储用户数据,这样我们Redis在单机模式也是无法满足的。我们需要如何解决?在单机器无法满足需求的时候,我们就会想到多机器来管理,Reids为我们提供了Cluster去能让我们能管理我们的机器,也就是集群管理。Clus...
2019-10-27 16:31:46
205
原创 Redis Sentinel
前言前面学完里主从复制,虽然主从复制确保里数据的安全,且我们可以实现读写分离,从节点只读,主节点负责写,这样可以分摊主节点的压力。但是又一个问题,如果主节点出现了问题就需要我们手动故障转移,需要写很多脚本去帮助我们实现。另一个存在的问题是我们主从复制时只能一主多从,所以写数据,和存储数据就会有很大的局限。主从复制 —— 手动处理故障这里我们模拟一下故障场景,假设现在有一主两从,master,...
2019-10-21 00:39:47
189
原创 Redis的主从复制
Redis的主从复制主从复制的作用我们在刚开时使用Redis时都是单机测试的,但是生产环境中却不是这样子的,如果我们生产环境中单机部署了,就会遇到下面问题。1 机器故障:如果机器故障了,我们Redis是不是直接就挂了,数据将会丢失。2 容量瓶颈:如果Redis容量满了的话,Redis也是相当于挂了。这时Redis给我们提供了一种主从复制的机制,我们可以部署多个Redis,这多个Red...
2019-10-17 23:39:54
179
原创 Redis的持久化机制RDB和AOF
前言开启redis之旅Redis的持久化Redis是直接操作内存的,如果需要保存数据,需要把内存的数据持久化到硬盘上,否则一旦宕机则会丢失数据。而Redis提供了两种持久化的机制,也就是下面要说的RDB和AOF。首先我们先看看持久化操作主流的方法快照形式(MySQL Dump、Redis RDB)我们取某一时刻数据的状态进行保存。日志形式(MySQL Binlog、Hbase H...
2019-10-16 23:45:19
197
原创 Java并发编程的艺术读书笔记(第十章)
第十章-Executor框架《阿里巴巴Java开发手册》中强制线程池不允许使用 Executors 去创建,而是通过 ThreadPoolExecutor 的方式,这样的处理方式让写的同学更加明确线程池的运行规则,规避资源耗尽的风险。由上节我们知道,如果由Executor框架直接创建的线程池FixedThreadPool 和 SingleThreadExecutor : 允许请求的队列长度...
2019-10-13 00:40:45
213
1
原创 Java并发编程的艺术读书笔记(第九章)
第九章-Java中的线程池Java中的线程池降低资源消耗通过重复利用以创建的线程降低线程创建和销毁造成的损耗提高响应速度当任务到达时,任务可以不要等到 ***线程创建***就能进行提高线程的可管理性可以统一调优、分配、监控工作原理==>任务到达线程池if(线程数量 <= corePoolSize){ 创建线程执行任务} else if(任务...
2019-10-11 22:08:15
126
原创 Java并发编程的艺术读书笔记(第八章)
第八章-Java中的并发工具类CountDownLatch想象一个场景,我们开启了多线程去处理一些任务,之后我们要在主线程中汇总,我们需要怎么做呢。一、使用Joinpublic class CountDownLatchDemo { public static void main(String[] args) { Thread[] threads = new Thr...
2019-10-09 22:53:16
122
原创 Java并发编程的艺术读书笔记(第七章)
第六章-Java中的13个原子操作类原子更新基本类型类AtomicBoolean 原子更新布尔类型AtomicInteger 原子更新整型AtomicLong 原子更新长整型上述3类提供方法基本一致,以AtomicInteger为例int addAndGet(int delta)以原子方式与 delta 相加boolean compareAndSet(int expec...
2019-10-09 22:22:45
171
原创 Java并发编程的艺术读书笔记(第六章)
第六章-Java并发容器和框架ConcurrentHashMap的实现原理与使用ConcurrentHashMap源码分析(1.8)上面是源码博客,这里记录一些重点。ConcurrentHashMap跟HashMap,HashTable的对比效率 HashMap > ConcurrentHashMap > HashTable, 在此之上 HashMap不能确保多线程环境下的安...
2019-10-09 21:48:30
185
原创 mac使用brew命令安装mysql
使用brew查看mysql版本brew search mysql输出这里安装5.7brew install mysql@5.7配置启动服务这时候还没配置密码等一些东西,在所有配置之前先启动mysql服务,在我们安装完之后有提示。根据提示运行(这里是brew默认安装mysql的路径,在上图安装完之后有提示,可以直接拷贝提示命令)/usr/local/opt/mysql@5.7...
2019-09-02 21:18:22
666
原创 Java并发编程的艺术读书笔记(第四章)
第四章Java并发编程基础前言:之前写了前三章的笔记,虽然写笔记让我的阅读慢下来可以更仔细的反复阅读某些部分,但是现在重看笔记,却觉得没有营养,一是书上内容居多,自己的想法不多,二是内容杂乱没有整体思路。反观书本,对我来说直观的感受是,这不是一本适合基础的人看的书,但有些内容对于了解的又过于基础,这点体现在与作者想要透彻的写原理,但是又由于篇幅限制有些地方却草草略过,这对于我这种程度阅读者来说明...
2019-08-25 22:37:33
139
原创 Java并发编程的艺术读书笔记(第五章)
第五章-Java中的锁前言:最近有点懒。第五章是比较难的一章了,在前面的铺垫之下开始讲实现方式了。Java中锁的实现方法,当然抛开由JVM自带的synchronized关键字,本章节主要还是讲一些由API实现的锁,这样一来,Java多线程就有许多可玩性了。5.1 Lock接口特点它提供了与synchronized关键字类似的同步功能,只是在使用时需要显式地获取和释放锁。虽然它缺少了(通...
2019-08-25 22:32:17
149
原创 Java并发编程的艺术读书笔记(第三章)
第三章-Java内存模型2.1 Java内存模型的基础并发编程模型的两个关键问题1、线程间如何通信在共享内存并发模型,线程之间共享程序的公共状态,通过写-读内存中的公共状态进行隐式通信。在消息传递并发模型,线程之间没有公共状态,线程之间必须通过发送消息来显式进行通信。2、线程间如何同步 (同步是指程序中用于控制不同线程间操作发生相对顺序的机制。)在共享内存并发模型,同步...
2019-08-06 13:38:17
203
原创 Java并发编程的艺术读书笔记(第二章)
第二章-Java并发机制的底层实现原理2.1 volatile的应用volatile的定义与实现原理Java编程语言允许线程访问共享变量,为了确保共享变量能被准确和一致地更新,线程应该确保通过排他锁单独获得这个变量。Java语言提供了volatile,在某些情况下比锁要更加方便。如果一个字段被声明成volatile,Java线程内存模型确保所有线程看到这个变量的值是一致的。...
2019-07-25 23:26:13
161
原创 Java并发编程的艺术读书笔记(第一章)
第一章并发编程的目的是为了让程序运行得更快,但并不是启动更多的线程就能让程序最大限度的并发执行。由于我们的目的是为了提升程序性能,所以程序运行的细节都需要把握清楚。1.1上下文切换CPU通过时间片分配算法来循环执行任务,当前任务执行一个时间片后会切换到下一个任务。但是,在切换前会保存上一个任务的状态,以便下次切换回这个任务时,可以再加载这个任务的状态。所以任务从保存到再加载的过程就是一次...
2019-07-22 21:50:57
135
原创 (翻译)What is the difference between @Inject and @Autowired in Spring Framework?
https://stackoverflow.com/questions/7142622/what-is-the-difference-between-inject-and-autowired-in-spring-framework-which问题Spring 框架中的@Inject和@Autowired有什么区别?它们的使用场景?描述我正在浏览一些关于SpringSource的博客,在一个...
2019-07-16 19:29:48
112
原创 (翻译)Removing whitespace from strings in Java
https://stackoverflow.com/questions/5455794/removing-whitespace-from-strings-in-java问题删除Java字符串中的空格描述我有一个像这样的字符串:mysz = "name=john age=13 year=2001";我想删除字符串中的空格。我试过trim()但这只删除了整个字符串之前和之后的空格。我也尝试...
2019-07-16 11:49:18
160
原创 (翻译)How to get the current date/time in Java
https://stackoverflow.com/questions/5175728/how-to-get-the-current-date-time-in-java在Java中获取当前日期/时间描述在Java中获取当前日期/时间的最佳方法是什么?回答这取决于您想要的日期/时间形式:如果您希望将日期/时间作为单个数值,则使用System.currentTimeMillis()能获得...
2019-07-16 11:04:11
179
原创 (翻译)diff between canonical name, simple name and class name
https://stackoverflow.com/questions/15202997/what-is-the-difference-between-canonical-name-simple-name-and-class-name-in-javJava 类中规范名称(canonical name)、简单名称(simple name)、类名称(class name)的区别问题描述在Java...
2019-07-10 16:13:34
172
原创 (翻译)How is the default Java heap size determined?
https://stackoverflow.com/questions/4667483/how-is-the-default-java-heap-size-determined【问题】如何确定默认的Java堆大小?【描述】如果我从Java命令行中省略-Xmx选项,则将使用默认值。根据Java documentation“默认值是在运行时根据系统配置选择的”哪些系统配置设置会影响默认...
2019-07-02 19:10:48
192
原创 (翻译)What are the -Xms and -Xmx parameters
https://stackoverflow.com/questions/14763079/what-are-the-xms-and-xmx-parameters-when-starting-jvm【问题】启动JVM时-Xms和-Xmx参数是什么?【描述】这个问题已经存在 How is the default Java heap size determined? 9个回答请解释在Jav...
2019-07-02 19:09:42
295
原创 (翻译)Converting array to list in Java
https://stackoverflow.com/questions/2607289/converting-array-to-list-in-java【问题】在Java中,将数组转换为列表【描述】在Java中,如何将数组转换为列表?我使用了Arrays.asList(),但是行为(和签名)以某种方式从Java SE 1.4.2(现在归档中的文档)变为8,我在网上找到的大多数代码段使用1....
2019-07-02 19:08:44
128
原创 (翻译)Difference between StringBuilder and StringBuffer
【标题】StringBuilder 和 StringBuffer 的区别【问题】在使用其中一个的时候,是否存在性能问题?【回答1】StringBuffer是同步的,StringBuilder则不是。【回答2】StringBuilder运行效率会比StringBuffer快,因为它不是同步的。这里有一个简单的基准测试。public class Main { public s...
2019-06-18 14:07:30
169
原创 (翻译)Is null check needed before calling instanceof?
https://stackoverflow.com/questions/2950319/is-null-check-needed-before-calling-instanceof【问题】在调用instanceof之前是否要检查它为null【描述】如果调用null instanceof SomeClass是返回 false 还是返回NullPointerException【回答1】不,...
2019-06-18 14:05:31
462
原创 (翻译)How to split a string in Java
https://stackoverflow.com/questions/3481828/how-to-split-a-string-in-java【问题】在Java中如何拆分字符串【描述】我有一个字符串"004-034556",现在想把它拆分成两个字符串。string1="004";string2="034556";这意味着第一个字符串将包含-之前的字符,第二个字符串将包含-之后的...
2019-06-18 10:40:39
132
原创 读:Java并发编程实战 遇到的问题及解决(一)
在实例封闭的例子中,我们先来看看代码如果对于Collections.unmodifiableMap() 不熟悉的话,最后会给出解析class MutablePoint{ public int x,y; public MutablePoint(){ x=0; y=0; } public MutablePoint(Mutable...
2019-05-05 18:53:05
318
原创 LeetCode204 Count Primes 详解!
关于求n以内的素数有很多种方法,如果要列出素数来的话我们尝试着把根号n以内的数除一遍就可以了,但是对于筛选法比如我们去掉2的倍数,3的倍数…等等也是极为巧妙的。LeetCode204这道题目所要的是不大于n的素数个数,这里看完讨论区的大神代码——我们计算个数的时候使用筛选法并且可以不用遍历整个数组,使我受益匪浅,但是美中不足的是所给代码并没有注释,刚开始看的时候也是极其懵逼,后面耐心的理解并添加...
2019-05-04 00:31:22
207
原创 LeetCode371. Sum of Two Integers 两个整数相加,不使用+ -法
先贴上代码,代码是别人的,为了帮助理解,这里给出解释,如果有什么错误希望纠正和海涵。class Solution { public int getSum(int a, int b) { if(b == 0)return a; int carry = (a & b) << 1; int sum = a ^ b; ...
2019-05-03 21:17:25
155
原创 SpringBoot部署web项目过程中遇到的问题
直接从网页下载包 :https://start.spring.io/下载完成之后,在IDEA上导入 导入完成之后目录backCtrl代码package com.hwk.springtest.controller;import org.springframework.web.bind.annotation.RequestMapping;import org.springfra...
2019-04-23 15:48:04
291
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人