自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

q_all_is_well的博客

offer offer在哪里

  • 博客(146)
  • 收藏
  • 关注

原创 线程初步——Java内存模型

多线程既然要说线程池,那就不得不聊到多线程。Java并发场景中,因可见性,原子性,有序性等问题常常成为并发编程的Bug来源。本周想总结的是其中解决可见性和有序性导致问题基石——Java内存模型Java内存模型需要与JVM运行时数据区做区分。Java内存模型是一种规范,下面听我细细道来。Java内存模型Java内存模型是一个比较复杂的规范,可以从不同的视角来解读,本质上可以理解为:Java内存模型规范了JVM如何提供按需禁用缓存和编译优化的方法。具体来说,这些方法包括 volatile,synchro

2020-08-23 23:11:04 172

原创 并发编程学习——线程池前奏篇

入职之后看书比较少,痛定思痛后,准备重读Java经典书目。那就从Java8实战开始研读。在看到并行流时,决定抽出时间来,将多线程部分知识的各个点传成一条线来整理学习一番。此为第一篇。Java8并行流Java8提供了并行流的功能,通过parallel方法,将Stream转换为并行操作提交到线程池处理。比如如下代码通过线程池并行消费处理1到100:IntStream.rangeClosed(1, 100).parallel().forEach(i -> { System.ou

2020-08-19 10:17:04 245

原创 leetcode第196场周赛

第一题签到题,不多说。easy水平。主要想记录第二三道题,第四道题功力尚浅,刷一段时间题之后再说。第二题:所有蚂蚁掉下来前的最后一刻有一块木板,长度为 n 个 单位 。一些蚂蚁在木板上移动,每只蚂蚁都以 每秒一个单位 的速度移动。其中,一部分蚂蚁向 左 移动,其他蚂蚁向 右 移动。当两只向 不同 方向移动的蚂蚁在某个点相遇时,它们会同时改变移动方向并继续移动。假设更改方向不会花费任何额外时间。而当蚂蚁在某一时刻 t 到达木板的一端时,它立即从木板上掉下来。给你一个整数 n 和两个整数数组

2020-07-05 22:35:09 773

原创 MVC开发问题面试与学习

为什么还要使用MVC三层开发?大部分业务系统的开发都可以分为三层:Controller层,Service层,Repository层。对于这种分层方式,大部分人都比较认同,且已经成为了一种开发习惯。但自从学习了DDD之后,我对这种分层方式产生了一定的质疑,为此我探究了一下,可以作为一个面试题来提问或解答。具体原因总结如下:1.分层能起到代码复用的作用 同一个Repository可以会被多个Service调用,同一个service也会被多个controller调用。比如,UserSe...

2020-06-21 09:05:53 204

原创 python读取mat文件,并转化为txt文件

核心为scipy.io中的loadmat包。from scipy.io import loadmatimport numpy as npm = loadmat('E:\\biye\\Rochester38.mat')print(m.keys())具体的看一看,文件中的key有哪些。以我的文档为例dict_keys(['__header__', '__version__', '...

2020-02-18 17:07:53 5162 1

原创 网络图结构中节点度分布的散点图

import matplotlib.pyplot as plt #导入科学绘图包import networkx as nxG=nx.random_graphs.barabasi_albert_graph(1000,10)#生成n=1000,m=10的无标度的图print ("某个节点的度:",G.degree(0))#返回某个节点的度# print("所有节点的度:",G.degree(...

2020-02-18 17:00:08 7208

原创 lc276 Integer to Word

一道比较难coding的题目。首先了解一下十进制数对应的数字具体读法。一般是3位一逗号,代表着不同的数量级别,比如1234567读作One Million Two Hundred Thirty Four Thousand Five Hundred Sixty Seven.后三位是567,即five hundred sixty seven,这个三位数在最终的表示中也是这样的一个形式。2...

2019-07-31 09:39:40 194

原创 paypal 数字对生成树

一道特别考验语言功底的题目,首先它的输入与输出,对于我这种没有处理过复杂的输入,以及输出的渣渣来说,浪费了大量的时间,好在现在还稍微来得及,不怕不怕啦。紧接着,整个题目的要求也是比较复杂的,首先允许存在重复的数字对,也就是说,在输入的过程中,需要去重。若重复,则忽略。(具体实现过程中,使用一个edges的map表来去重的。)其次,顺序不唯一,同样的输入,打乱顺序后,会导致不同的输出...

2019-06-25 16:09:16 367

原创 paypal题目

约瑟夫环问题的变形, 主要是一个模拟的过程,考察点在于每次退出的人的序号是变化的。所以这一个问题较为简单。在面试或笔试过程中,属于一道签到题目,必须要求自己能够快速写出来。import java.util.Scanner;/** * Created by ql on 2019/6/24. */public class Algorithm { static boolean...

2019-06-24 23:02:18 251

原创 引用总结

强引用(FinalReference)强引用就是我们经常使用的引用,其写法如下StringBuffer buffer = new StringBuffer();上面创建了一个StringBuffer对象,并将这个对象的(强)引用存到变量buffer中。是的,就是这个小儿科的操作(请原谅我这样的说法)。强引用最重要的就是它能够让引用变得强(Strong),这就决定了它和垃圾回收器的交互。...

2019-06-18 20:02:21 161

原创 从1到n的所有数相关问题

在学习过程中,遇到了两道题目。卡了自己一段时间,通过查阅资料,已经AC。下面贴一下这两道题目。这道题是计算1~n的所有数字中,1出现的个数。这道题目是剑指offer中比较难的一道题目。首先考虑在计算过程中,有一定规律,但是在具体的coding过程中,总不能加各种if条件句判断吧。所以通过查资料学习了这样一种解决该问题的方法:例如,n=abcde。首先,将n切分开来存放到数组之中。之后进...

2019-06-11 16:18:04 559

原创 剑指offer 正则表达式匹配问题

请实现一个函数用来匹配包括'.'和'*'的正则表达式。模式中的字符'.'表示任意一个字符,而'*'表示它前面的字符可以出现任意次(包含0次)。 在本题中,匹配是指字符串的所有字符匹配整个模式。例如,字符串"aaa"与模式"a.a"和"ab*ac*a"匹配,但是与"aa.a"和"ab*a"均不匹配。这道题目感觉比较难。一遇到字符串问题就害怕。结合何老师的课本讲解,以及网上的其他资料进行了相应的学...

2019-06-05 23:24:12 390

原创 剑指offer 机器人行走范围问题

class Solution { private static int res=0; private static int threshold=0; public int movingCount(int thresholds, int rows, int cols) { threshold=thresholds; //BFS思路 ...

2019-06-04 20:52:36 175

原创 矩阵中的路径

class Solution { public boolean hasPath(char[][] matrix, String str) { for(int i=0;i<matrix.length;i++){ for(int j=0;j<matrix[i].length;j++){ if(dfs(matr...

2019-06-03 22:17:58 125

原创 获得字符串的最小字典序

写个博客,纪念这逝去的一晚上,要炸了。有一天,达达捡了一条价值连城的宝石项链,但是,一个严重的问题是,他并不知道项链的主人是谁!在得知此事后,很多人向达达发来了很多邮件,都说项链是自己的,要求他归还(显然其中最多只有一个人说了真话)。达达要求每个人都写了一段关于自己项链的描述: 项链上的宝石用数字0至9来标示。一个对于项链的表示就是从项链的某个宝石开始,顺指针绕一圈,沿途记下经过的...

2019-05-07 22:48:55 1264

原创 写给自己的单例模式手撕代码

import java.util.concurrent.atomic.AtomicReference;/** * Created by ql on 2019/5/7. * 手撕单例模式饿汉式,懒汉式,双重校验锁,枚举类型,静态内部类,cas模式 */public class Danli {//懒汉式,但是线程不安全 private static Danli instance ...

2019-05-07 16:50:33 255

原创 JVM方法区踩坑深挖

方法区这一部分需要仔细剖析一下。方法区常被称为永久代,本质上两者并不等价,仅仅是因为GC分代收集会扩展至方法区。方法区存放已被虚拟机加载的类信息,常量,静态变量,即时编译器编译后的代码等数据。需要注意的是,Java6时,String等字符串常量的信息是置于方法区中的,但到了Java7,已经移动到了堆区域。具体的可以通过String.intern()方法体现出来。类信息包括以下几种:1....

2019-05-07 11:40:05 245

原创 自定义类型是否可以作为Map的Key问题

虽说经常用map,但是我用它的时候,key都是用String或者Integer类型,今天偶然想到,可不可以用自己定义的对象作为map的key呢?talk is cheap give me codeclass Student{ private String name; private String sex; public String getName() { ...

2019-04-27 10:53:02 1166

原创 360笔试leetcode原题665

给定一个长度为n的整数数组,你的任务是判断在最多改变1个元素的情况下,该数组能否变成一个非递减数列。我们是这样定义一个非递减数列的:对于数组中所有的i(0<= i < n),满足array[i] <= array[i + 1]。该题目属于leetcode中easy的题目。首先,题目中要求令数组变成非递减数列,即array[i] <= a...

2019-04-16 20:36:12 453

原创 剪绳子问题and leetcode343

参考剑指offer上的剪绳子问题,其中动态规划的方法有一部分我不是很理解,这里引用一下别人的部分代码。public class Test { public static void main(String[] args) { int len = 10; System.out.println(maxLen(len)); } /** ...

2019-04-12 23:28:49 487 2

原创 tf.linalg.svd踩坑

np.linalg.svd具体形式。注意u,s,v的位置>>> import numpy as np>>> M = np.mat([[1,2,3,4],[5,6,7,8],[2,3,4,5]])>>> u, s, v = np.linalg.svd(M)>>> print(M.shape)(3, 4)&g...

2019-04-09 16:47:51 1687 2

原创 leetcode周赛128期真香

这一道题,其实还是蛮简单的。我直接用暴力的方式写的,先得到N的二进制原码表示,转化为反码之后,再使用我们简单的计算二进制真值的方法来计算即可。class Solution { public int bitwiseComplement(int N) { String result=getBit(N); return getInt(result); ...

2019-03-25 23:36:23 129

原创 20190324leetcode周赛

首先,原谅我这个菜狗子用的中文版。紧接着上题目。这是一道easy的题目。一开始,我还是很懵逼的。用两个指针,分别指向两端,向中间移动。对应的左边和与右边和相等时,查看中间部分的情况即可。很显然结果是没通过。所以当时就简单暴力了一下。哎,暴力出真知啊。class Solution { public boolean canThreePartsEqualSum(int[] A...

2019-03-25 00:04:13 385

原创 Integer填坑

在-128~127的Integer值并且以Integer x = value;的方式赋值的Integer值在进行==和equals比较时,都会返回true,因为Java里面对处在在-128~127之间的Integer值,用的是原生数据类型int,会在内存里供重用,也就是说这之间的Integer值进行==比较时只是进行int原生数据类型的数值比较,而超出-128~127的范围,进行==比较时是进...

2019-03-18 16:52:49 143

原创 lc50 pow(x,n)

问题可以采用递归的形式求解,但是边界处理为易错点,好吧,承认处理了挺久的。递归解法:class Solution { public double myPow(double x, int n) { if (n==0) { return 1.0; } if(n == Integer.MIN_VALUE){ ...

2019-03-06 19:54:46 146

转载 为什么HashMap链表长度超过8会转成树结构

HashMap在JDK1.8及以后的版本中引入了红黑树结构,若桶中链表元素个数大于等于8时,链表转换成树结构;若桶中链表元素个数小于等于6时,树结构还原成链表。因为红黑树的平均查找长度是log(n),长度为8的时候,平均查找长度为3,如果继续使用链表,平均查找长度为8/2=4,这才有转换为树的必要。链表长度如果是小于等于6,6/2=3,虽然速度也很快的,但是转化为树结构和生成树的时间并不会太短。...

2019-03-06 19:48:16 506

原创 leetcode236

236.Lowest Common Ancestor of a Binary Tree寻找二叉树中给定两个节点的公共祖先。很好的一道题目,有助于我们理解递归的操作,一般情况下,二叉树的问题基本都是使用递归来解决的。一开始并不明白真实的递归操作,但是自己画一个二叉树,然后仔细想一想具体的操作流畅就可以明白了,还是得多练习。public TreeNode lowestCommonAnc...

2019-03-04 20:22:52 334

原创 leetcode15 three sum

import java.util.*;class Solution { public List&lt;List&lt;Integer&gt;&gt; threeSum(int[] sum) { List&lt;List&lt;Integer&gt;&gt; result=new LinkedList&lt;&gt;(); if (sum==null||s...

2019-03-03 17:07:04 135

原创 滑动窗口最大值

题目:给定一个数组和滑动窗口的大小,找出所有滑动窗口里数值的最大值。例如,如果输入数组{2,3,4,2,6,2,5,1}及滑动窗口的大小3,那么一共存在6个滑动窗口,他们的最大值分别为{4,4,6,6,6,5}; 针对数组{2,3,4,2,6,2,5,1}的滑动窗口有以下6个:{[2,3,4],2,6,2,5,1}, {2,[3,4,2],6,2,5,1}, {2,3,[4,2,6],2,...

2019-02-28 21:26:07 82

原创 旋转数组的最小值

题目:把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。输入一个非减排序的数组的一个旋转,输出旋转数组的最小元素。例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转,该数组的最小值为1。NOTE:给出的所有元素都大于0,若数组大小为0,请返回0。其实一开始做这道题我是拒绝的,因为题目中直接一个求最小值的操作就可以通过的,所以,一直不想看具体怎么简化解答的。...

2019-02-27 20:22:18 209

原创 JUC组件扩展之FutureTask

1.概述FutureTask这个组件是JUC里边的但是它不是AQS的子类;创建线程有两种方式,一种是继承Thread,一种是实现Runnable接口,这两种方式有一个共同的缺陷就是执行完任务以后无法获取执行结果,从JDK1.5开始就提供了Future和Callable通过他们可以在任务执行完毕以后获取结果;2.Callable Future FutureTask使用方法① Callab...

2018-12-31 22:14:31 135

原创 JUC之AQS

1.AQS简介1.1概念:AbstractQueuedSynchronizer,它提供了一个FIFO队列,可以看做是一个可以用来实现锁以及其他需要同步功能的框架。这里简称该类为AQS。AQS的使用依靠继承来完成,子类通过继承自AQS并实现所需的方法来管理同步状态。例如ReentrantLock,CountDownLatch等.1.2底层结构。AQS底层使用的双向链表实现,如下图所示...

2018-12-31 16:55:04 223

原创 线程安全策略

1.不可变对象1.1.不可变对象需要满足的条件:① 对象创建后其状态就不能修改;② 对象所有域都是final类型的;③ 对象是正确创建的(在对象创建期间,this引用没有逸出);1.2. final关键字① final可以用来修改类 方法 变量;② final修饰的类不能被继承(我们平时使用的基础数据类型的类都是final的);③ final修饰方法不能被继承类修改...

2018-12-31 15:47:29 186 3

原创 安全发布对象

1.发布与逸出1.1概念发布对象 : 使一个对象能够被当前范围之外的代码所使用;对象逸出 : 一种错误的发布,当一个对象还没有构造完成时,就使他被其他线程所见;1.2代码演示/** * 发布对象 */@Slf4j@NotThreadSafepublic class UnsafePublish { private String[] states = {"a"...

2018-12-31 15:05:30 173

原创 线程安全性

1.定义当多个线程访问某个类时,不管运行时环境采用何种调度方式或者这些进程将如何交替执行,并且在主调代码中不需要任何额外的同步和协同,这个类都能够表现出正确的行为,那么就称这个类为线程安全的类; 2.线程安全的体现并发程序正确地执行,必须要保证原子性、可见性以及有序性。只要有一个没有被保证,就有可能会导致程序运行不正确。原子性:一个操作或多个操作要么全部执行完成且执行过程不被中...

2018-12-31 14:52:14 121

原创 并发的优势与风险

优势:速度:应用并发系统可以同时处理多个请求,等待的时间就会变短,响应就会更快,另一个方面,复杂的操作可以分为多个进程同时操作加快了处理速度;设计:假设一个应用程序需要从本地读取和处理两个文件,如果是都单线程的情况,我们就需要记录每个文件的读取和处理状态,如果使用并发处理,我们就可以启动两个线程,每个线程独立的处理一个文件的读取和操作。资源利用:线程会在处理的时候被阻塞,其他线程可...

2018-12-31 11:38:17 204

原创 Java内存模型简单讲解

       在实际讲解并发与高并发之前我们还需要先学习一下Java虚拟机是怎么解决这些问题的;为了屏蔽掉硬件以及各种操作系统的内存访问差异以实现让java程序在各个平台下都能达到一致的并发效果,Java虚拟机规范中定义了Java内存模型(Java Memory model,简称JMM).个人比较推荐《深入理解JVM》中的关于JMM的讲解。很详细了。书中的理论知识,准备面试足够了。1.JMM基...

2018-12-31 11:25:36 129

原创 并发编程入门

最近在学习慕课网的高并发课程。为面试做准备。这门课程个人感觉讲的不错。有理论,有实践。最好结合《Java并发编程实战》这本书来看。当时看书的时候各种云里雾里。后来看了这门课之后,好多东西感觉都懂了。所以说有一个能用实例把知识讲明白的老师很难得。在开始真正的讲解以前,我们实现一个简单的场景-实现一个计数功能 : CountExample//计数功能@Slf4jpublic class ...

2018-12-31 10:38:55 112

原创 2018博客总结前言

2018年最后一天,想总结一下这一年的博客内容。之前一直有写博客的习惯,,,你懂得,总有各种理由。。。好吧,其实我这下半年确立了研究方向,然后就是苦逼的科研生活。不过好在有有道云笔记这个工具。所以我还是把资料记录在了那上面。主要是方便。而且易于查看。今天,2018年最后一天。把自己整理的东西都放上来吧。丰富一下自己的博客。阿里春招提前批也开始了(慌得一批)2019年应该是忙碌的一年。以后只会越来越...

2018-12-31 10:21:55 118 3

转载 卸载wps后安装office图标异常的问题

我们在日常办公中,是否遇到过这样的情况,在使用过WPS关联相关文件类型后,卸载掉换成Microsoft Office,安装替换后发现原来的很多文档图标无法正常显示。百度一下,一大堆说法,但是没一个有用的。(心累啊)一种说法是,选择文件的开打方式,默认选择Microsoft Office,并且在Microsoft Office中关联文档的文件类型。这种方法是可以正常用Microsoft Offi...

2018-12-06 11:36:27 4505

空空如也

空空如也

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

TA关注的人

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