学习
文章平均质量分 54
Logicr
记性差,记录下,查阅方便些,水平有限,若参阅请自行斟酌。
展开
-
Java 死锁分析
用两个线程,两个对象,线程a锁住obj1然后再去锁obj2,线程b锁住obj2然后去锁obj1。这时候线程a持有obj1的锁,线程b持有obj2的锁,当等待时间结束,就会互相等待锁,形成死锁。输出查看死锁执行输出输出分析:可以看到有一个deadlock,线程信息Thread-1锁住了0x000000076ae31540,等待0x000000076ae31530的锁,而线程Thread-0 锁住 ,等待0x000000076ae31540的锁,相互等待对方释...原创 2022-07-09 16:08:20 · 332 阅读 · 0 评论 -
shell for while 一行
for/while 一行原创 2022-06-25 15:48:35 · 513 阅读 · 0 评论 -
MySQL count(1) 和count(*)区别,那个快?
参考5.7官方文档,在InnoDB中:翻译:InnoDB 以相同的方式处理 SELECT COUNT(*) 和 SELECT COUNT(1) 操作,性能上没有差异。https://dev.mysql.com/doc/refman/5.7/en/aggregate-functions.html ↩︎原创 2022-06-21 14:55:15 · 201 阅读 · 0 评论 -
Java 程序优雅关闭
JVM支持在程序kill的时候根据kill 信号进行优雅关闭。首先我们需要在Runtime.getRuntime().addShutdownHook(thread);中注册要执行的内容。public class GracefulTest { public static void main(String[] args) throws InterruptedException { Runtime.getRuntime().addShutdownHook(new Thread(()-&原创 2021-04-23 15:46:13 · 300 阅读 · 0 评论 -
找出大于10k的文件并移动到指定文件夹下
用-exec 来执行command指令,{}表示查找的内容,注意在mac系统下;需要加\转义。例子:将当前目录下>10k的文件移动到 new目录下。find ./ -size +10k -exec mv {} new/ \;如何创建指定大小的空文件?例子:创建一个名为b.txt 的20k的空文件到当前目录。dd if=/dev/zero of=b.txt bs=20k count=1...原创 2021-03-21 17:27:22 · 1668 阅读 · 0 评论 -
Mac Linux 文件权限-rw-r--r--后面有个@
在mac里面查看文件时,无意中发现有的权限后面带了一个"@"。好奇心很强的我必须知道那是啥玩意。在这个帖子里"ls" on Mac and extended file attributes找到了答案,实际上人家标题就说明了,这是mac的拓展文件属性。这里就引申出来一个指令"xattr",man一下可以看到详细的描述。XATTR(1) BSD General Commands Manual XATTR(1)NAME xa原创 2021-01-20 18:37:24 · 3842 阅读 · 0 评论 -
Linux 打印文件某几行
有这样的面试题:Linux 打印文件第 10-20 行。在此之前,先造一点数据用于打印测试吧:i=1;while [ $i -le 100 ];do echo "$i 行,测试测试,over。" >> test.txt;let i++ ;done;这里简单写了个循环,造了100行数据,长这个样子然后来解决打印10-20行的问题,这里要使用的指令是sed1sed -n '10,20p' test.txt输出:-n 按行输出,单引号内的是执行区间10-20,p是打印指令。2拓原创 2021-01-19 17:55:45 · 2793 阅读 · 0 评论 -
MySql JSON数据类型使用
前言从 MySQL 5.7.8 开始,MySQL 支持由RFC 7159定义的本机JSON数据类型,该类型可有效访问 JSON(JavaScript 对象 表 示法)文档中的数据。与将 JSON 格式的字符串存储在字符串列中相比,JSON数据类型具有以下优点:自动验证存储在JSON列中的 JSON 文档。无效的文档会产生错误。优化的存储格式。存储在JSON列中的 JSON 文档将转换为内部格式,从而可以快速读取文档元素。当服务器稍后必须读取以该二进制格式存储的 JSON 值时,则无需从文本表示形式解原创 2021-01-13 15:47:39 · 1094 阅读 · 0 评论 -
Java8新的时间和日期API LocalDateTime等使用
前言在之前版本的时间处理上,存在各式各样的缺陷或不易于使用1。但是在实际的开发中,Date类、SimpleDateFormat类仍然在使用,既然官方都给出了新的替代品,为什么不学习使用呢?LocalDateTime等位于java.time包下,专门用于处理时间2:挑一些常用的来学习一下:获取当前时间:public static LocalDateTime now()从默认时区的系统时钟获取当前的日期时间。返回值:当前日期时间使用系统时钟和默认时区,不为空使用: LocalDate原创 2021-01-12 19:18:55 · 545 阅读 · 0 评论 -
SpringBoot Security 启动过程
启动流程图Tomcat中StandardWrapperValve类调ApplicationFilterFactory获取filterChainspringSecurityFilterChain等放到数组里获取FilterChain对象,传给DelegatingFilterProxy这个代理类处理获取DelegatingFilterProxy bean获取代理对象delegate,传入invokeDelegateFilterChainProxy extends GenericFilterBean 代理类开始工原创 2020-12-30 18:39:35 · 265 阅读 · 0 评论 -
apache源码中关于Java “goto“ label使用
在源码中无意看到了label的使用,注意label使用一种用法而不是关键字。在 package org.apache.catalina.core;的final class StandardWrapperValve extends ValveBase {}中看到这段代码。catalina是Tomcat的核心组件,提供T了omcat servlet规范的实际实现1 ...... label1177: { label1178: {原创 2020-12-29 17:56:28 · 241 阅读 · 0 评论 -
IDEA创建创建项目避坑
构建mvn模块1.本来想用maven的项目模板来着,整半天不是这下不来就是那编译不过。。。。2.用Spring Initializr吧在这里选好,会给我们创建一个带有security依赖的pom。不过这样创建的项目还需要添加maven支持,模块右键,Add Framework Support,选择maven,之后maven会根据pom自己去下包,漫长的等待。3.使用空模板使用quickstart模板在Generating project in Batch mode这里卡半天,跟第一种原创 2020-12-23 15:37:04 · 237 阅读 · 0 评论 -
SpringAOP基于XML、注解快速上手
前言AOP相关概念就不说了,复制粘贴没意思,本文主要是把概念转化为实际应用,让虚无的概念落地。工程结构首先,做一个基于Xml的,全程不使用注解(但是注解是真的方便)。写一个简单的接口,用于后面的AOP进行切片。接口IworkerAop打工人接口,专门提供打工方法。public interface IworkerAop { /** * 打工人要干活儿 */ void work(); void work(String ...args);//用来测试参数原创 2020-12-13 16:13:28 · 155 阅读 · 0 评论 -
使用iostat查看磁盘IO
iostat[参数][时间][次数]如[root@localhost data]# iostat -dm 1 10Linux 3.10.0-957.el7.x86_64 (localhost.localdomain) 12/05/2020 _x86_64_ (32 CPU)Device: tps MB_read/s MB_wrtn/s MB_read MB_wrtnsda 8.44 0.09原创 2020-12-05 15:48:55 · 857 阅读 · 0 评论 -
Spring 使用Xml注入bean全过程
`loadBeanDefinitions(beanFactory);`在`AbstractXmlApplicationContext`中,做了非常多的事情,重载了很多种,太长了就不全部截取了。在`XmlBeanDefinitionReader类`的`loadBeanDefinitions`方法调用`doLoadBeanDefinitions`方法其中做了两件事: 1. `Document doc = doLoadDocument(inputSource, resource);`通过`JAXP`解析原创 2020-11-29 15:29:07 · 4564 阅读 · 1 评论 -
Mybatis使用xml配置方式启动
前面做了零xml的mybatis配置启动,但是官方给出的意见是:…映射器类是 Java 类,它们包含 SQL 映射注解从而避免依赖 XML 文件。不过,由于 Java 注解的一些限制以及某些 MyBatis 映射的复杂性,要使用大多数高级映射(比如:嵌套联合映射),仍然需要使用 XML 配置.单击main,command+n,点击下面的resources在config层新建一个MybatisConfigXml类public class MybatisConfigXml { priva原创 2020-11-24 19:14:05 · 289 阅读 · 0 评论 -
Mybatis零xml使用以及避坑指南
结构:config层中MybatisConfig是一个单例,配置并生成sqlSessionFactory。public class MybatisConfig { private static SqlSessionFactory sqlSessionFactory; private MybatisConfig() { } static { /*数据源*/ DataSource dataSource = new PooledDat原创 2020-11-24 15:10:35 · 243 阅读 · 3 评论 -
SpringBoot:@Async注解实现方法异步调用
在springboot中,提供了@Async注解来实现异步调用在配置类或者启动类上加上@EnableAsync注解在需要异步的方法上添加@Async注解原创 2020-01-19 09:00:57 · 355 阅读 · 0 评论 -
数据库系统概论学习手记(一)
建立知识树 # 绪论 本书一到九章属于基础内容,十到十一属于高级课程 二到七章:介绍三种重要的数据库,分别是 网状数据库 DBTG系统、层次数据库 IMS和关系数据库系统。 关系数据库是学习重点,用四到七章来解释, 第四章:关系模型的基本概念 等 第五章:SQL 第六章:关系系统和查询优化 第七章:关系数据理论...原创 2018-03-06 22:14:26 · 1306 阅读 · 0 评论 -
数据库系统概论学习手记(二)
课前(等待操作) # insert into 后跟子查询的实践 即 insert into name select 列 from name1 where ---视图 # 视图是从一个或者几个基本表导出的表 视图的子查询通常不允许有order by和distinct短语 //mysql是允许的...原创 2018-03-06 22:17:28 · 366 阅读 · 0 评论 -
数据库系统概论学习手记(三)
设计篇第六章 数据库设计 # 数据库设计:是指对于一个给定的应用环境,构造最优的数据库模式,建立数据库及其应用系统,使之能有效的储存数据,满足各种用户的应用要求(信息要求和处理要求)。 在数据库领域内,常常把使用数据库的各类系统统称为数据库应用系统数据库设计的基本步骤 # *需求分析 *概念结构设计 *逻辑结构设计 ...原创 2018-03-08 22:31:10 · 440 阅读 · 0 评论 -
数据库系统概论学习手记(四)(完)
死锁和活锁 # *活锁 事物没有一个排序,某个事物一直等待//解决:采用先来先先服务策略 *死锁 都上锁,相互请求解锁 //解决: $预防: &一次封锁法 &顺序封锁法 $允许,诊断解锁 ...原创 2018-03-09 11:27:32 · 259 阅读 · 0 评论 -
MySQL学习笔记(一)
mysql 查看sql是否运行:netstat -anp>重定向到一个file grep “3306” file如何在新开端口查看自己mysql写的库文件# cd /var/lib/mysqlmysql -u root -p -h我的 :mysql -u root -proot查看已创建数据库show databases;...原创 2018-03-09 12:04:47 · 203 阅读 · 0 评论 -
MySQl学习笔记(二)
关于MySQL密码重置 /usr/bin/mysqld_safe --skip-grant-tables >/dev/null 2>&1 & /usr/bin/mysql -u root mysql >update user set password = Password('root') where User = 'root'; ...原创 2018-03-09 17:14:01 · 191 阅读 · 0 评论 -
MySQL学习笔记(三)
表的约束 在统计数值时会出现问题 不能为空因为 数+NULL=NULL 加not null default _数值_set和enum不能设置默认值。列描述:comment,没有实际含义,专门用来描述字段,会根据表创建语句保存,用来给程序员或DBA来进行了解。#desc无法查看注释信息但是可以通过show查看show create tab...原创 2018-03-09 18:25:58 · 185 阅读 · 0 评论 -
深度剖析函数的调用
C语言是面向过程的计数机语言,其本质就是函数的调用,从汇编的角度深层次剖析函数之间的调用关系,将对C语言的理解更上一层楼。先来看一段代码 #include<stdio.h> int myfun(int x, int y) { int z = x + y; ...原创 2018-03-10 19:53:51 · 455 阅读 · 0 评论 -
函数中用一个参数修改另一个参数的一种实现方式
关于函数中用一个参数修改另一个参数的一种实现方式,通过汇编可以从原理上理解分析这个问题。先看一段示例,这里讲的是如何通过x来修改y#pragma warning(disable:4996)#include<stdio.h>int myfun(int x, int y){ int z = x + y; return z;}int main(){ ...原创 2018-03-11 22:01:41 · 1177 阅读 · 0 评论 -
一个数组中只有两个数字是出现一次,其他所有数字都出现了两次
一个数组中只有两个数字是出现一次,其他所有数字都出现了两次。 找出这两个数字,编程实现。#pragma warning(disable:4996)# include <stdio.h>void find( int * src,int x){ int *mark = src; //元素位置 int *set = src; // 浮动指针 int out ...原创 2018-03-18 12:30:38 · 254 阅读 · 0 评论 -
1瓶汽水1元,2个空瓶可以换一瓶汽水
喝汽水,1瓶汽水1元,2个空瓶可以换一瓶汽水,给20元,可以多少汽水。编程实现。int iteration_water(int x) //迭代写法{ int set = x;//set 能喝到的汽水总数 while (1 < x) { if (x > 1 && 1 == x % 2)//当空瓶子为奇数时 {...原创 2018-03-18 13:10:25 · 3160 阅读 · 0 评论 -
《程序员的自我修养》读书笔记
第一章 谈谈职业生涯规划一.给年轻程序员的一点启示 # 1.正确认识自己 *通过努力,你会变成你希望的样子 2.比一般人更加努力 *当你一直坚持下去时,你也会变得和其他人一样优秀 3.建立自己的权威 *用实力来展现自己 4.理解最佳实践 去学习那些最佳实践 //一个岗位...原创 2018-03-12 22:43:44 · 2262 阅读 · 2 评论 -
模拟实现printf()函数
在构建printf()函数之前,需要简单分析printf(),在帮助文档中可以看到,printf()的格式为printf (char * format,...) 也就是说printf()是一个可变参数的函数 此外,还需要了解这些参数是如何在内存中存储的。从这个栈桢结构图中可以看到print()函数的参数的存放方式,print()中的参数在形成临时变量时是从右往左的,这也就可以解释为什么只原创 2018-03-19 10:40:16 · 508 阅读 · 0 评论 -
顺序表
头文件 order.h# ifndef __ORDER_H__# define __ORDER_H__typedef int DataType;#define MAX_SIZE 10 //++++++++++++++++++++++++++++++++++++++++++++++++++++++=//head# include <stdio.h>#...原创 2018-04-08 14:31:11 · 206 阅读 · 0 评论 -
我对指针的理解
指针就是地址,指针变量存放地址 指针的类型决定了指针向前或者向后走一步的大小 int a = 10; int *pi = &a; char * pc = &a; pi + 1;//地址加4(int) pc +...原创 2018-03-21 17:53:40 · 919 阅读 · 0 评论 -
Github应该这样入门
清楚我要学什么 之前有过打算学习一下Github,但是仅仅是创建好帐号之后就继续不下去了,一方面是没有编程方面的基础,头脑中没有指令的概念,还有就是没有一个合适的学习方法,只是在跟着教程敲git,但是不知道这些指令的用途,以及自己能用这些指令做什么。在最近的学习中,我逐渐形成了一个学习套路,就是在学习一个新知识之前,先了解一下这个知识体系的架构,形成一个知识脉络,然后清楚自己想在这方面学习哪方面的原创 2018-03-23 15:02:28 · 430 阅读 · 0 评论 -
JAVA实现双向链表
用java写链表简直爽歪歪 我中有你,你中有我package task4_14;interface Link {//接口,放各种链表操作的方法 void add (Object obj); boolean remove (int index); int indexOf(Object obj); boolean set(int index,Obje...原创 2018-04-16 21:09:47 · 203 阅读 · 0 评论 -
JAVA实现动态栈
在数据结构中,栈是一种极其实用的结构 所以,有必要将其掌握,栈的特点是“先入后出”,只能从一端进,一端出。 package stack;//包名interface Stack {//接口,一些可能会用的方法void stackPush(Object obj);//入栈void stackPop();//出栈int stackSize();//获取栈中元素数量Obje...原创 2018-04-22 15:39:59 · 886 阅读 · 0 评论 -
JAVA 应用栈对RPN逆波兰表达式求值
逆波兰表达式(后缀表达式)逆波兰表达式,它的语法规定,表达式必须以逆波兰表达式的方式给出。逆波兰表达式又叫做后缀表达式。这个知识点在数据结构和编译原理这两门课程中都有介绍,下面是一些例子: 正常的表达式 逆波兰表达式a+b ---> a,b,+a+(b-c) ---> a,b,c,-,+a+(b-c)*d ---> a,b,c,-,d,*,+a+d*(...原创 2018-04-23 00:20:42 · 1004 阅读 · 0 评论 -
JAVA泛型及栈应用之简单迷宫
JAVA泛型及栈应用之简单迷宫将泛型与栈结合结合之后,可以高效解决一些数据结构中的问题,其中,走迷宫便是我们最常遇到的一类。再此之前,需要对栈以及泛型有所了解:>JAVA泛型与栈应用< 这里,先以简单迷宫为例: 假设现在有一个6X6的矩形迷宫,1表示通路,其他表示无路。 如果以[5][2]为入口,那么,走出迷宫的路径应该为: 那该如何用代码来走呢? 思路...原创 2018-04-30 17:00:44 · 518 阅读 · 0 评论 -
JAVA中数组那点事
在JAVA中,数组比起C中,要强大得多 1.不规则数组如:int [][] arr= new int[3][]; 即,在为多维数组分配内存时,只分配一维,其他维可以手动分配,这大大提高了数组的灵活性,在需要非常大而稀疏的数组时,不规则数组是个很好的选择package Test;public class Test { public static void m...原创 2018-04-21 00:22:45 · 153 阅读 · 0 评论 -
JAVA栈应用之括号匹配
JAVA栈应用之括号匹配 在数据处理中,常常要判断数据中的括号,应用栈来处理及其方便。 当用户输入一个字符串时,遇到左括号时,将其入栈,如’(’ ‘[”’{,而遇到右括号时,如’)”}”]’时,与栈顶的括号与当前匹配,如果匹配成功,则将栈中的括号出栈,表示当前括号成对。 如匹配失败,又分为两种情况,栈已经空和栈不空,若栈已空,则现在右括号比左括号多()},栈不空则很明显,当...原创 2018-04-26 23:10:18 · 2252 阅读 · 0 评论