- 博客(53)
- 收藏
- 关注
原创 ThreadLocal源码解析(执行流程图)
ThreadLocal 源码解析与说明 这里先用图表示一下ThreadLocal在thread中的主要数据结构 Public T get() 方法执行流程 public T get() { Thread t = Thread.currentThread(); ThreadLocalMap map = getMap(t); if (map != null) { ThreadLocalMap.Entry e = map.getEnt
2020-12-18 00:33:13
437
原创 高性能MySQL-笔记总结(3)-查询性能优化
第六章 查询性能优化 6.2 慢查询基础:优化数据访问 确认应用程序是否在检索大量超过需要得数据。可能访问了过多得列或者行 确认MySQL服务器层是否在分析大量超过需要得数据行 6.2.1 是否向数据库请求了不需要的数据 注意: 总是取出全部的列 审视每一个select * ,是否真的需要每一列,当然有时候浪费一些系统资源可以简化开发。 重复查询相同的数据 类似用户头像的url,这样的数据可以存放在缓存种,避免在MySQL种重复查询。 6.2.2 MySQL是否在扫描额外的记录 衡量查询的开销:
2020-11-29 16:30:44
385
原创 应用集成——数据库集成与简单实现IoC容器
应用集成——数据库集成与简单实现IoC容器 项目地址:郝凯VioletEverGarden/ioc应用集成 问题描述: 设分别存在两个数据库,每个数据库都有一个学生表,表名与其中的属性名都不相同。我们需要编写一个系统,在不使用市面上框架的情况下,对两个数据库进行集成,取两个数据库中的数据集合起来呈现给用户。 目前项目实现功能: 不限制数据库数量,只要添加一些数据源信息即可对数据库进行整合。实现可拓展。 可以手动编写属性的xml映射,也可以调用test方法自动获取数据创建xml映射。便于用户使用 单例容
2020-11-21 12:28:54
472
原创 深入浅出Java多线程 笔记分享(1)
进程与线程: 进程就是应用程序在内存中分配的空间,也就是正在运行的程序,各个进程之间互不干扰。同时进程保存着程序每一个时刻运行的状态。进程是操作系统进行资源分配的基本单位,而线程是操作系统进行调度的基本单位。 1. 线程的创建与启动: 继承Thread类,并重写 run 方法: public class Demo { public static class MyThread extends Thread { @Override public void run() { System.ou
2020-11-02 09:12:02
207
原创 高性能MySQL-笔记总结(2)-创建高性能索引
第五章 创建高性能索引 5.1 索引基础 5.1.1 索引的类型 在MySQL中索引是在存储引擎层而不是在服务层实现的。不同存储引擎的索引工作方式也不一样。 B-Tree 索引 InnoDB使用的B+Tree。 B~Tree数据结构: B-tree又叫平衡多路查找树。一棵m阶的B-tree (m叉树)的特性如下: 树中每个结点至多有m个孩子; 除根结点和叶子结点外,其它每个结点至少有有ceil(m / 2)个孩子; 若根结点不是叶子结点,则至少有2个孩子 所有叶子结点都出现在同一层,叶子结点不
2020-10-27 11:35:59
122
原创 高性能MySQL-笔记总结(1)-Schema与数据型优化
第四章 Schema与数据型优化 4.1选择优化的数据类型 更小的通常更好 更小的数据类型通常更快,占用更少的资源。 简单就好 简单数据类型和的操作通常需要更少的CPU周期。推荐使用后MYSQL内建的类型来存储时间和日期而不是字符串 尽量避免null 通常情况下最好指定列为NOT NULL。 如果查询中包含可为null的列对MySQL来说更难优化,会使索引、索引统计和值比较都更复杂。同时将可为null的列修改为not null 带来的性能提升比较小,该问题没有必要首先解决。 4.1.1 整数类型 整数计
2020-10-27 10:24:58
217
原创 216. 组合总和 III
class Solution { public List<List<Integer>> combinationSum3(int k, int n) { List<List<Integer>> lists = new ArrayList<>(); LinkedList<Integer> path = new LinkedList<>(); if(k<=0 || n&
2020-09-11 16:24:03
89
原创 54. 螺旋矩阵
旋转矩阵系列按行列计算 class Solution { public List<Integer> spiralOrder(int[][] matrix) { List<Integer> order = new ArrayList<Integer>(); if (matrix == null || matrix.length == 0 || matrix[0].length == 0) { return or
2020-08-05 16:43:13
134
原创 59. 螺旋矩阵 II
考虑螺旋圈数与n的关系即可 class Solution { public int[][] generateMatrix(int n) { int[][] result = new int[n][n]; //一共有n-1圈 //第i圈右 N+2-2i 下 N+1-2i 左N+1-2i 上N-2i; if(n==1 ){ result[0][0]=1; return result;
2020-08-05 16:27:36
120
原创 337. 打家劫舍 III
第一种方法,暴力动态规划,内存消耗大,重复子问题多 class Solution { public int rob(TreeNode root) { int a = selected(root); int b = notSelected(root); return a>b?a:b; } public int selected(TreeNode root){ if(root == null)
2020-08-05 15:44:19
100
原创 16. 最接近的三数之和
思路和15题一样的 class Solution { public int threeSumClosest(int[] nums, int target) { Arrays.sort(nums); int n = nums.length; int best = 10000000; for(int i = 0 ; i < n ; i++){ if(i>0 && nums[i]==num
2020-08-02 12:29:27
114
原创 15. 三数之和
双指针思想:三层循环,假设第一个数已知,再根据a+b+c=0的规则,得出b与c的关系,确定双指针之间的关系,将三重循环降为二重循环. public List<List<Integer>> threeSum(int[] nums) { int n = nums.length; Arrays.sort(nums); List<List<Integer>> ans = new ArrayList<List<
2020-08-02 12:01:04
105
原创 114. 二叉树展开为链表
非前序遍历的方法 class Solution { public void flatten(TreeNode root) { connect(root); } public TreeNode connect(TreeNode root){ if(root.left==null){ if(root.right==null) return root; else ret
2020-08-02 09:34:08
105
原创 8. 字符串转换整数 (atoi)
给出了两种方法,一种是正常遍历,还有一种为正则表达式匹配。 import java.util.regex.Matcher; import java.util.regex.Pattern; import java.math.BigInteger; class Solution { public int myAtoi(String str) { String pattern = “^\s*([±]?\d+)”; Pattern r = Pattern.compile(pattern); Matcher
2020-07-24 11:11:05
99
原创 LeetCode 78. 子集
整体思路就是穷举法,假设初始nums中有n个元素,n位二进制数每位可以赋值1或者0 ,全部结果为2^n。 为了保证2进制数的位数一致,从2n 到 2n+1 算,再截取到第一位。 public List<List<Integer>> subsets(int[] nums) { List<List<Integer>> result = new ArrayList(); int n = nums.length; for
2020-07-24 10:09:37
90
原创 LeetCode 62. 不同路径
两种解法: 有动态规划和排列组合 排列组合速度快,消耗内存多 以下为排列组合解法 class Solution { public int uniquePaths(int m, int n) { int a = (m>n?n:m)-1; int b = m+n-2; long c = 1; long d = 1; while( a > 0 ) { c = c * a;
2020-07-23 23:11:40
100
原创 64. 最小路径和
动态规划 class Solution { public int minPathSum(int[][] grid) { int i = 0; int j = 0; int a[][] = new int[grid.length][grid[0].length]; a[0][0] = grid[0][0]; for( i = 1 ; i < grid[0].length ; i++ ){ a[
2020-07-23 22:42:19
97
原创 20. 有效的括号
import java.util.Stack; class Solution { public boolean isValid(String s) { int i = 0; int length = s.length(); if(length==1){ return false; } if(length==0){ return true; }
2020-07-23 22:40:50
118
原创 29两数相除
class Solution { public int divide(int dividend, int divisor) { if (dividend == 0) { return 0; } if (dividend == Integer.MIN_VALUE && divisor ...
2020-02-15 11:32:36
220
原创 823 带因子的二叉树
class Solution { private final int mod=1000000007; public int numFactoredBinaryTrees(int[] A) { long res=0; Map<Integer,Long> map=new HashMap(); Arrays.sort(A); ...
2020-02-15 11:27:35
169
原创 129根节点到叶子节点数字之和
简单的递归可实现 class Solution { static int sum; public int sumNumbers(TreeNode root) { sum = 0; childSum(0, root); return sum; } publ...
2020-02-14 10:15:24
132
原创 881救生艇
实际上是一个排序问题,采用官方的方法改编的桶排序 class Solution { public int numRescueBoats(int[] people, int limit) { int max = -1; for (int p: people) max = Math.max(max,...
2020-02-12 23:03:56
123
原创 386字典序排数
这里有个细节,题目要求的是每一位数都要按字典排序,否则会出现错误结果[1,10,11,12,13,14,15,16,17,18,19,100,2,20,21,22,23,24,25,26,27,28,29,3,30,31,32,33,34,35,36,37,38,39,4,40,41,42,43,44,45,46,47,48,49,5,50,51,52,53,54,55,56,57,58,59,6...
2020-02-12 22:57:43
121
原创 287寻找重复数
要求O(1)空间 小于O(n^2)时间 class Solution { public int findDuplicate(int[] nums) { int fast = 0, slow = 0; while(true) { fast = nums[nums[fast]]; ...
2020-02-11 23:02:54
80
原创 529 扫雷游戏
该题可以采用深度优先搜索或者广度优先搜索,深度优先搜索更适合。· class Solution { int[] dx = {-1, -1, 0, 1, 1, 1, 0, -1}; // 相邻位置 int[] dy = {0, 1, 1, 1, 0, -1, -1, -1}; public char[][] updateBoard(char[][] board, int[] clic...
2020-02-11 22:37:45
163
原创 1314矩阵区域和
采取前缀矩阵和的算法,当前位置(i,j)的矩阵和等于位置(i-1,j)与(i,j-1)的矩阵和减去位置(i-1,j-1)的矩阵和最后再加上位置为(i+1,j+1)的元素的值 class Solution { /** * 前缀和矩阵 */ private int[][] preSum; public int[][] matrixBlockSum(in...
2020-02-11 21:35:26
227
原创 1302层数最深叶子节点的和
这个算法并不优秀,仅仅是一个思路 class Solution { public int deepestLeavesSum(TreeNode root) { if (root == null) return 0; int num = 0; Queue<TreeNode> queue = new Lin...
2020-02-10 21:15:52
171
原创 526 优美的排列
思路就是回溯法,与全排列等同//DFS搜索,每前进一步,必须满足两个条件之一,分情况往下走(全排列问题) class Solution { int count=0; public int countArrangement(int N) { int[] visited=new int[N+1]; countArrangement(1,N,visited); ...
2020-02-10 20:59:09
178
原创 1008先序遍历构建二叉树
本体意在对二叉树的构建的巩固,了解先序遍历,和二叉搜索树的概念即可解题 /** * Definition for a binary tree node. * public class TreeNode { * * int val; * * TreeNode left; * * TreeNode right; * * TreeNode(int x) { va...
2020-02-10 20:48:50
130
原创 535 TinyURL的加密与解密
对URL的加密与解密,主要在加密与解密结果的一致性,我们可以想到异或运算符进行加密,特别的,根据key的值,对异或加密的解惑进行更改。 public class Codec { private static int key=35; // Encodes a URL to a shortened URL. public String encode(String long...
2020-02-10 19:50:26
170
原创 数据库概论复习第二章
2.1 关系数据结构及形式化定义 关系 在关系模型中,现实世界的实体以及实体间的各种联系均用单一的结构类型,即关系来表示。 域 笛卡儿积 关系(P40) 关系模式 关系的描述称为关系模式 ,形式化表现为R(U,D,DOM,F) R 关系名,U 属性来自的域,DOM 属性向域的映像集合,F 属性间数据依赖关系集合。 2.2关系操作 基本的关系操作 增删改查 查询又分为 选择、投影、连接、除、并、...
2020-01-02 21:21:18
284
1
原创 数据库概论复习第一章
1.1 数据库四个基本概念 描述事物的符号称为数据 数据的含义称为数据的语义,数据与其语义是不可分的 记录是计算机中表示和储存数据的一种格式或一种方法 数据库 DataBase 数据库是长期储存在计算机内,有组织的、可共享的大量数据集合。数据库中的数据按一定的数据模型组织、描述和储存,具有较小的冗余度、较高的数据独立性和易扩展性,并可为各种用户共享。 数据库管理系统 DBMS 数据库...
2020-01-02 21:20:54
371
原创 java第八章 常用类库与工具(习题)
Java常用类库有哪些?其基本功能有哪些? 1、语言包java.lang 提供Java语言最基础的类 2、实用包,包括日期类、集合类。 3、抽象窗口工具包 java.awt 4、Applet包 5、文本包Format 6、输入/输出流包 7、网络功能包 Java中有哪些Date类,他们的区别是什么? Date DateFormat DateFormat.Field DateFormatProv...
2019-12-26 19:28:14
311
原创 1161 最大层内元素之和
其中 最小 的那个。 示例: 输入:[1,7,0,7,-8,null,null] 输出:2 解释: 第 1 层各元素之和为 1, 第 2 层各元素之和为 7 + 0 = 7, 第 3 层各元素之和为 7 + -8 = -1, 所以我们返回第 2 层的层号,它的层内元素之和最大。 来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/...
2019-12-09 12:55:17
226
原创 数据库结业项目作业(LOL数据库系统)
项目所用到的有Spring Boot , mysql,jdbc,myBatis,workbench,swagger-ui,druid 因为刚开始学习spring boot不久,对springmvc的机制还不太了解,借用swagger-ui的界面,本身只实现后端的数据处理。 关于自学myBatis,建议看狂神的教学视频 https://blog.kuangstudy.com/# 讲解内容通俗易懂 首...
2019-12-08 16:34:07
961
原创 简单的聊天室系统
聊天室系统需求 1、多客户模式下,客户与客户的单独通信,且信息通过服务器。 2、端到端的通信,实现并行通讯,一端的发送不受另一端的影响。 3、端到端的文件传输 4、图形界面 知识点需求 1、Java网络通信 2、多线程 3、IO文件操作 4、JFrame ...
2019-12-06 10:33:59
1008
1
原创 Spring的constructor-arg 与property注入
简单来说,constructor-arg 是用在bean装配(wiring)的,通过构造函数来装配bean #直接注入demo对象 <constructor-arg ref="person"/> #直接注入值 <constructor-arg name="name" value="John"/> <constructor-arg name="school" valu...
2019-11-25 21:28:51
323
原创 java实现简单功能与c++的区别(银行个人管理系统)
1描述类 在写类时,c++习惯只在class内定义函数名,将方法的内容在class外以class::的方式标注写出,而Java只能将所有的内容写在class内; c++内将所有的成员按private public protect 分块写,而Java中每一个成员前缀都有权限限制词,对于其成员的描写顺序没有要求; 关于main函数,c++的main函数单独的写在类的外面,而Java所有的代码都需要写在...
2019-10-16 21:23:27
172
原创 学习使用jdk官方api文档
首先是api文档的地址,通常用浏览器打开这个网址进行api查询 https://docs.oracle.com/javase/8/docs/api/ 下面简述一些常用类的常用方法 System System是在lang包里的一个类,该类提供了标准的输入输出,以及error的输出,用于声明正确的环境变量,还可以复制列表的部分。 该类的Field有三个: Fields Modifier and ...
2019-09-07 10:12:02
1023
原创 自入计科以来学习编成语言的体会
学习变成语言已经一年多了,从最开始的一问三不知,到现在疯狂买书学习的状态,我发现我真的喜欢这个专业,我也认为必须要有足够的热情才能把编成学好。最开始其他基础相关课程还没学完,就同时开始学习C、C++,感觉学习的压力非常的大,老师上课的速度非常快。很多时候都要提前预习,要课后复习,查阅资料。学习JAVA以前,我认为编程难在指针和算法上。零基础开头非常的艰难,一个全新的世界放在面前,但里面的一切都不清...
2019-09-07 09:22:36
167
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人