2 乱糟

中科软科技股份有限公司 - java工程师

我要认证

学到的都是自己的

等级
TA的排名 14w+

方法耗时自定义注解

在想要观察耗时的方法上添加注解@CostLogger即可@CostLoggerpublic ApiResult send(NoticeDTO noticeDTO) {此处省略代码…}效果:相应代码和jar包

2020-09-10 19:29:43

日常记录——MySQL—参数设置

back_log:MySQL暂时停止回答新请求之前的短时间内多少个请求可以被存在堆栈中,请求等待区。等待连接的数量超过back_log,将不被授予连接资源。wait_timeout:MySQL客户端的数据库连接闲置最大时间值,单位秒。max_connections:最大连接数。max_user_connections:同一个账号能够同时连接到mysql服务的最大连接数,0表示不限制。thread_concurrency:并发线程数,该参数到5.6版本就去掉。default-storage-engi

2020-08-16 17:36:46

日常记录——leetcode- 整数反转

题目:给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转。示例 1:输入: 123输出: 321示例 2:输入: -123输出: -321示例 3:输入: 120输出: 21注意:假设我们的环境只能存储得下 32 位的有符号整数,则其数值范围为 [−231, 231 − 1]。请根据这个假设,如果反转后整数溢出那么就返回 0。题解:public static int reverse(int x) { Long result = new Lon

2020-08-07 00:11:04

日常记录——leetcode- 字符串相加

题目:给定两个字符串形式的非负整数 num1 和num2 ,计算它们的和。提示:num1 和num2 的长度都小于 5100num1 和num2 都只包含数字 0-9num1 和num2 都不包含任何前导零你不能使用任何內建 BigInteger 库, 也不能直接将输入的字符串转换为整数形式题解:public String addStrings(String num1, String num2) { StringBuilder result = new StringBuild

2020-08-06 01:12:25

日常记录——MySQL—优化

1.使用索引可以增加查询效率,但维护索引也需要成本。2.组合索引,注意最左匹配原则。

2020-08-04 23:11:29

日常记录——leetcode- 爬楼梯

题目:假设你正在爬楼梯。需要 n 阶你才能到达楼顶。每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢?注意:给定 n 是一个正整数。示例 1:输入: 2输出: 2解释: 有两种方法可以爬到楼顶。1 阶 + 1 阶2 阶示例 2:输入: 3输出: 3解释: 有三种方法可以爬到楼顶。3. 1 阶 + 1 阶 + 1 阶4. 1 阶 + 2 阶5. 2 阶 + 1 阶题解://递归public int climbStairs(int n){

2020-08-03 23:23:36

日常记录——MySQL—数据类型

一、设置建议越小越好:在数据预估范围内,一般情况下选择可以正确存储数据的最小数据类型。越小的数据类型通常更快,占用磁盘,内存和CPU缓存更小。越简单越好:简单的数据类型的操作通常需要更少的CPU周期。例如:整型比字符操作代价要小得多,因为字符集和校对规则(排序规则)使字符比整型比较更加复杂。尽量避免NULL:NULL需要额外的空间并且索引统计和比较的时候更复杂。二、数据类型1.整数类型类型长度有符号范围无符号范围场景tinyint1(-128,127)(0,255

2020-08-03 01:03:34

日常记录——MySQL—锁

一、简介锁是计算机协调多个进程或纯线程并发访问某一资源的机制。永爱保证数据并发访问的一致性、有效性。模式:共享锁(读锁):其他事务可以读,但不能写。排他锁(写锁) :其他事务不能读取,也不能写。大体可分为两类:表级锁:开销小,加锁快;不会出现死锁;锁定粒度大,发生锁冲突的概率高,并发度低。行级锁:开销大,加锁慢;会出现死锁;锁定粒度小,发生锁冲突的概率低,并发度高。*默认情况下,表锁和行锁都是自动获得的, 不需要额外的命令,select前,会自动加读锁。insert 、update、dele

2020-08-02 00:25:55

日常记录——MySQL—执行计划

执行计划:sql语句的执行过程。查看示例:EXPLAIN select * from user;字段1.id:sql执行顺序,id相同由上到下,id不同,大的先执行。2.select_type:类型含义sqlSIMPLE简单的 select 查询,查询中不包含子查询或者 unionEXPLAIN select * from user;PRIMARY查询中包含子查询或者 union ,外层为PRIMARY类型EXPLAIN select * from use

2020-08-01 01:20:31

日常记录——MySQL—日志文件、事务

一、日志文件1.undo log:回滚日志,保证事物原子性,记录事务发生之前的一个版本,用于回滚,innodb事务可重复读和读取已提交的隔离级别就是通过mvcc+undo实现 。2.redo log:保证持久化日志,发生故障,保障已经提交的事物不丢失,而未提交的事物能回滚,达到事务一致性。redo log 写入时分为两个步骤,在事务 A 提交的时候执行到prepare阶段, binlog写入后 ,再执行到把 commit阶段,在合适时间将redolog的数据写入到磁盘中。redolog是多文件,重复写,

2020-07-31 01:44:21

日常记录——MySQL—InnoDB和MyISAM区别

1.数据结构:InnoDB是将索引和数据存放在一起的,MyISAM是将索引文件和数据文件分开存放。使用工具创建两个表,一个存储引擎为InnoDB的innodb表,一个存储引擎为MyISAM的myisam表观察data文件,可发现InnoDB存储引擎有两个文件.frm(表定义)和.ibd(数据+索引),MyISAM有三个文件.frm(表定义)和.MYD(数据)和.MYI(索引)。2.索引:同样索引结构都选择B+Tree,但InnoDB使用聚簇索引(叶子节点存数据或主键值),MyISAM是非聚簇索引(

2020-07-30 00:25:23

日常记录——MySQL—sql执行过程、索引结构、索引类型

一、sql执行过程二、索引结构索引存储在磁盘,磁盘每次读取页的整数倍(4k一页),数据量大会造成多次IO,所以尽量在创建索引的时候,在同样大小情况下,存储更多的索引。MySQL的索引结构为B+Tree:每个非叶子节点存储子节点磁盘指针和主键,存储更多的索引,降低IO次数,叶子节点存储磁盘指针和实际数据或者主键的值(InnoDB)或者数据的指针(MyISAM),并且叶子节点之间是链式环结构。即可满足随机查找和范围查找。为什么不使用其他结构:1.hash表:散列结构,范围查找效率低。2.二叉树

2020-07-29 00:31:38

日常记录——JVM—GC常用参数

一、GC常用参数1.-Xmn -Xms -Xmx -Xss : 年轻代 最小堆 最大堆 栈空间2.-XX:+UseTLAB : 使用TLAB(线程本地分配缓存区),默认打开3.-XX:TLABSize:设置TLAB大小4.-XX:+DisableExplictGC:System.gc()失效5.-XX:+PrintGC:打印GC信息6.-XX:+PrintGCDetails:打印GC详细信息7.-XX:+PrintGCTimeStamps:打印GC系统时间8.-XX:+PrintVMOpti

2020-07-28 01:20:52

日常记录——JVM—PS+PO的GC日志分析

一、代码public class GCtest { public static void main(String[] args) { List<byte[]> byteList = new ArrayList<>(); for (;;){ byte[] bytes = new byte[1024]; byteList.add(bytes); } }}二、配置-Xm

2020-07-27 00:56:16

日常记录——leetcode- 无重复字符的最长子串

题目:给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度。示例 1:输入: “abcabcbb”输出: 3解释: 因为无重复字符的最长子串是 “abc”,所以其长度为 3。示例 2:输入: “bbbbb”输出: 1解释: 因为无重复字符的最长子串是 “b”,所以其长度为 1。示例 3:输入: “pwwkew”输出: 3解释: 因为无重复字符的最长子串是 “wke”,所以其长度为 3。请注意,你的答案必须是 子串 的长度,“pwke” 是一个子序列,不是子串。解答代码

2020-07-26 01:36:15

日常记录——JVM—G1垃圾回收器

一、简介、G1垃圾回收器(Garbage First):是当今垃圾回收技术最前沿的成果之一,在17年作为JDK9默认的垃圾处理器。是一个可控的STW时间垃圾回收器,通过-XX:MaxGCPauseMillis 设置预期STW最大时间,G1会尽量达成目的,但不一定达成。二、原理G1垃圾回收器逻辑上存在年轻代、年老代之分,但实际在内存分配上将内存分成一小块一小块的Region,每个Region在某一时刻代表年老区(O),伊甸区(E),幸存区(S),大对象区(H,属于年老代,一个对象超过一半区域就放入H区)

2020-07-25 00:48:41

日常记录——JVM—垃圾回收器(除G1、ZGC)

一、Serial 收集器Serial:工作在年轻代的垃圾回收器,采用复制算法,单线程工作。GC线程工作时,用户线程停止工作,造成停顿STW(Stop The World),开启参数-XX:+UseSerialGC。二、Serial Old 收集器Serial Old :工作在年老代,采用标记整理算法,单线程工作。GC线程工作时,用户线程停止工作,造成停顿STW。三、ParNew收集器ParNew:Serial收集器的多线程版本,工作在年轻代,采用复制算法,多线程工作,在多核cpu提高GC效率,

2020-07-24 01:21:24

日常记录——JVM—垃圾定义、垃圾寻找、基本垃圾回收方法、堆内存逻辑分区

一、垃圾定义一个没有引用指向的对象,就是垃圾。可以理解为断了线的风筝。二、垃圾寻找1.引用计数法:有一个引用指向该对象,该对象头部的计数器加一,失效就减一,为0则代表垃圾。java不使用该方法,该方法存在循环引用问题,A指向B ,B 指向A 。则 A B 的计数器最小为1,不会回收。2.可达性分析法:通过一系列名为GC Roots的对象作为起始点,不在GC Roots的引用连路上的对象则为垃圾。GC Roots对象:线程栈变量(方法的局部变量),静态变量(class的静态变量),常量(calss的常

2020-07-23 00:57:21

日常记录——JVM—new Object()

一、对象创建过程1.loading:加载对应类class文件。2.linking:验证文件格式(verification)、为类的静态变量分配内存,并初始化为默认值(preparation)、将符号引用转成直接引用(resolution)。3.initializing:初始化过程为类的静态变量赋予正确的初始值.4.为对象分配内存。5.成员变量赋默认值。6.调用构造方法:成员变量赋默初始值,其他语句。二、对象结构1.对象头:Mark Word(标记字段)、Class Pointer(类型指针)

2020-07-22 00:39:33

日常记录——JVM—自定义类加载器

一、简介自定义类加载器实现方式为,继承ClassLoader类,重写其内部方法。简单介绍一下ClassLoader的与加载类相关的方法:1.getParent():返回该类加载器的父类加载器。2.loadClass(String name):加载名称为 name 的类,返回的结果是 java.lang.Class 类的实例。3.findClass(String name):查找名称为 name 的类,返回的结果是 java.lang.Class 类的实例。4.findLoadedClass(Str

2020-07-21 00:26:47

查看更多

勋章 我的勋章
  • 领英
    领英
    绑定领英第三方账户获取
  • 脉脉勋章
    脉脉勋章
    绑定脉脉第三方账户获得
  • 签到新秀
    签到新秀
    累计签到获取,不积跬步,无以至千里,继续坚持!
  • 阅读者勋章Lv1
    阅读者勋章Lv1
    授予在CSDN APP累计阅读博文达到3天的你,是你的坚持与努力,使你超越了昨天的自己。
  • 持之以恒
    持之以恒
    授予每个自然月内发布4篇或4篇以上原创或翻译IT博文的用户。不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!
  • 勤写标兵Lv3
    勤写标兵Lv3
    授予每个自然周发布7篇到8篇原创IT博文的用户。本勋章将于次周周三上午根据用户上周的博文发布情况由系统自动颁发。
  • 分享学徒
    分享学徒
    成功上传1个资源即可获取