7 头都秃了

尚未进行身份认证

暂无相关简介

等级
TA的排名 21w+

常用的锁优化思路

一.减少锁的时间不需要同步执行的代码,能不放在同步快里面执行就不要放在同步快内,可以让锁尽快释放;二.减少锁的粒度它的思想是将物理上的一个锁,拆成逻辑上的多个锁,增加并行度,从而降低锁竞争。它的思想也是用空间来换时间;java中很多数据结构都是采用这种方法提高并发操作的效率:1.ConcurrentHashMapjava中的ConcurrentHas...

2020-02-18 22:11:11

Mysql高性能pdf阅读内容整理

1.innodb解决死锁:死锁检测,死锁超时,将持有最少行级锁的事务回滚2.数据库死锁产生的原因:1.数据冲突,2存储引擎的实现方式导致的?3.数据类型: 整型尽量使用小的int类型;建议不要null ; 财务数据精度可以*1000存为bigInt型;因为decimalmysql处理效率低; 定长字符串使用char比如md5加密,短的字符串,...

2020-02-17 21:37:18

常用的图算法关系整理

2020-02-16 20:01:10

上家公司的结算系统架构图梳理

马上要离开这家公司,给自己参与的一个结算项目梳理下流程:项目简介:为加盟店,商城订单,供应商和公司进行各种交易费用,税费,抽成而服务的结算平台:主要包括结算,对账,支付,往来等功能架构图如下:...

2020-02-16 19:58:02

Leetcode 120. 三角形最小路径和朴素法和动态规划实现

题目:给定一个三角形,找出自顶向下的最小路径和。每一步只能移动到下一行中相邻的结点上。例如,给定三角形:[ [2], [3,4], [6,5,7], [4,1,8,3]]自顶向下的最小路径和为 11(即,2 + 3 + 5 + 1 = 11)。直接上代码:import java.util.ArrayList;import jav...

2020-01-21 10:53:26

leetcode72题编辑距离-动态规划

题目给定两个单词 word1 和 word2,计算出将 word1 转换成 word2 所使用的最少操作数 。你可以对一个单词进行如下三种操作: 插入一个字符 删除一个字符 替换一个字符示例 1:输入: word1 = "horse", word2 = "ros"输出: 3解释:horse -> rorse (将 'h' 替换为 'r')ro...

2020-01-16 14:58:43

leetcode200题岛屿的数目-染色法和并查集实现java代码

题目:给定一个由 '1'(陆地)和 '0'(水)组成的的二维网格,计算岛屿的数量。一个岛被水包围,并且它是通过水平方向或垂直方向上相邻的陆地连接而成的。你可以假设网格的四个边均被水包围。示例 1:输入:11110110101100000000输出: 1示例 2:输入:11000110000010000011输出: 3直接上代码:染色法实现:...

2020-01-14 14:53:54

leetcode300题最长上升子序列(动态规划和非规划实现)

题目:给定一个无序的整数数组,找到其中最长上升子序列的长度。示例:输入: [10,9,2,5,3,7,101,18]输出: 4解释: 最长的上升子序列是 [2,3,7,101],它的长度是 4。说明: 可能会有多种最长上升子序列的组合,你只需要输出对应的长度即可。 你算法的时间复杂度应该为 O(n2) 。进阶: 你能将算法的时间复杂度降低到 O(n log...

2020-01-13 11:36:05

guava的eventBus和disruptor比较

EventBus:基于观察者模式实现的,本文基于同步模式来操作;这里只介绍下几个常用操作的代码实现:register:注册观察者实现:主要就是以把观察者观察的类key,同类观察者的set集合为value构成一个ConcurrenHashMap代码如下: private final ConcurrentMap<Class<?>, CopyOnWriteArray...

2020-01-09 16:22:07

0-1背包问题

package com.bysj.common.算法;/** * 动态规划解决: * dp状态转移方程二维数组: * i:表示第i个物品,c代表剩余的容量,dp[][]的值表示当前价值 * int[i][c] dp = * if(w[i]<c) * { * dp[i][c] = max(dp[i-1][c-w[i]]+v[i-1],dp[i-1][c]); * } ...

2020-01-08 11:39:48

redis分布式缓存使用的一些问题

分享下使用分布式缓存和本地缓存的一些设计和问题:1.什么样的数据,场景需要用到缓存?数据:访问频率高,修改频率低,比如我们系统的供应商信息,商品标签等等场景:高并发,时效性强,比如用户下单,批量结算等2.用什么数据结构保存缓存呢? 简单的数据类型直接String,如果是复杂对象hash3.如何发现哪些key是热点key?热点key肯定会有超高访问导致带宽不够的问...

2019-12-30 10:35:46

二叉树栈实现前中后序遍历(易理解的方法)

说明:首先你需要看懂用栈实现中序遍历的代码,理解其思想:从根节点开始入栈,找到他的左子树入栈.....一直到他的左子树为空了,左边到头了,取出当前根节点的值,从栈中取出当前根节点然后找他的右子树继续入栈,找左子树入栈.....,直到右边取完了这时候一个节点就遍历完了,然后继续从栈中取上一个节点继续其实考虑下为什么用栈呢?就是用他来回溯的要回溯到根节点,对于中序遍历:左中右,我按照右中左...

2019-12-29 16:00:15

leetcode 去除重复字母

题目:给定一个仅包含小写字母的字符串,去除字符串中重复的字母,使得每个字母只出现一次。需保证返回结果的字典序最小(要求不能打乱其他字符的相对位置)。示例 1:输入: "bcabc"输出: "abc"示例 2:输入: "cbacdcbc"输出: "acdb"分析:1.什么叫字典序:26个英文字母的顺序2.什么叫字符的相对位置,就是你只能删除重复的但是不能左右移动元...

2019-12-29 14:47:06

leetcode 数字范围按位与

题目:给定范围 [m, n],其中 0 <= m <= n <= 2147483647,返回此范围内所有数字的按位与(包含 m, n 两端点)。示例 1:输入: [5,7]输出: 4示例 2:输入: [0,1]输出: 0思路:分析题目:输入 5,7:结果=4 怎么计算的呢:5:1016:1107:111按位与:100 = ...

2019-12-28 17:48:12

leetcode 78题子集

题目:给定一组不含重复元素的整数数组 nums,返回该数组所有可能的子集(幂集)。说明:解集不能包含重复的子集。示例:输入: nums = [1,2,3]输出:[ [3], [1], [2], [1,2,3], [1,3], [2,3], [1,2], []]思路:和求组合求和一样,求数组的相关的题目可以把题目解析为一棵树,或者森林就好...

2019-12-28 15:20:17

leetcode215数组中的第K个最大元素-堆实现

题目来着leetcode:在未排序的数组中找到第 k 个最大的元素。请注意,你需要找的是数组排序后的第 k 个最大的元素,而不是第 k 个不同的元素。示例 1:输入: [3,2,1,5,6,4] 和 k = 2输出: 5示例 2:输入: [3,2,3,1,2,4,5,5,6] 和 k = 4输出: 4说明:你可以假设 k 总是有效的,且 1 ≤ k ≤ 数组的长度。...

2019-12-24 19:55:31

leetcode42-接雨水-栈实现

题目不说了,看上一篇,这一篇是用栈实现的public static int trap(int[] height) { int sum = 0; if (height.length == 0) { return 0; } Stack<Integer> stack = new Stack<&...

2019-12-23 21:42:05

leetCode 42接雨水-方法一动态编程

题目描述来自leetcode给定 n 个非负整数表示每个宽度为 1 的柱子的高度图,计算按此排列的柱子,下雨之后能接多少雨水。上面是由数组 [0,1,0,2,1,0,1,3,2,1,2,1] 表示的高度图,在这种情况下,可以接 6 个单位的雨水(蓝色部分表示雨水)。 感谢 Marcos 贡献此图。示例:输入: [0,1,0,2,1,0,1,3,2,1,2,1]输出: 6...

2019-12-23 20:33:36

leetCode39题组合总和算法

题目:给定一个无重复元素的数组 candidates 和一个目标数 target ,找出 candidates 中所有可以使数字和为 target 的组合。candidates 中的数字可以无限制重复被选取。说明: 所有数字(包括 target)都是正整数。 解集不能包含重复的组合。示例 1:输入: candidates = [2,3,5], target =...

2019-12-20 14:14:36

java实现二叉树插入,遍历,反转操作

直接贴代码了。代码中有解释,很简单。二叉树定义类(我这里直接用的中文定义,因为我本地的工程很多知识点,用中文名方便查找):package com.service.common.二叉树;public class 二叉树<T> {    public String Name;    public T Data;    public 二叉树<T> Left; ...

2019-02-13 15:46:44

查看更多

勋章 我的勋章
  • 持之以恒
    持之以恒
    授予每个自然月内发布4篇或4篇以上原创或翻译IT博文的用户。不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!
  • 勤写标兵Lv3
    勤写标兵Lv3
    授予每个自然周发布7篇到8篇原创IT博文的用户。本勋章将于次周周三上午根据用户上周的博文发布情况由系统自动颁发。