自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(47)
  • 收藏
  • 关注

原创 windows一次执行多个sql文件

如果存在多个.sql文件,都需要导入数据库,可以写一个脚本,一次性执行。@echo off for %%i in (*.sql) do ( echo excute %%i mysql -h 127.0.0.1 -uroot -proot -P 3306 aaa < %%i ) echo success pause 重点:1、该文件(.bat)必须和.sql文件在同目录,且在mysql的bin目录下,如D:\mysql-8.0.17-winx64\bin/;2、aaa标识在哪个数

2020-11-25 21:21:12 642

转载 线程池和消息队列的一些理解

1.两者内部都使用了队列,如阻塞队列、优先级队列;2.使用线程池时应用服务器既充当生产者又充当消费者,也是消息队列中间件的实现者,使用消息队列时中间件、生产者、消费者可以部署在不同的应用机器上(当然也可以部署在一台服务器上但很少有人这么用);3.出于第2点线程池更适合非分布式的系统,但在分布式架构下消息队列明显是更优项;4.使用消息队列会带来额外的网络开销;5.消息队列的耦合性更低,可扩展性更好,适用于弱一致性的场景,如对log日志的解耦;6.消息队列自动实现消息的持久化,中间已经实现了大量功能,

2020-08-10 11:54:14 2187

转载 MyBatis常见面试题:Dao接口的工作原理

通常一个Xml映射文件,都会写一个Dao接口与之对应,请问,这个Dao接口的工作原理是什么?Dao接口里的方法,参数不同时,方法能重载吗?Dao接口即Mapper接口。接口的全限名,就是映射文件中的namespace的值;接口的方法名,就是映射文件中Mapper的Statement的id值;接口方法内的参数,就是传递给sql的参数。Mapper接口是没有实现类的,当调用接口方法时,接口全限名+方法名拼接字符串作为key值,可唯一定位一个MapperStatement。在Mybatis中,每一个 <

2020-08-03 10:22:15 2506 2

原创 一些常见的sql题

1.用一条SQL 语句 查询出每门课都大于80 分的学生姓名。name kecheng fenshu张三 语文 81张三 数学 75李四 语文 76李四 数学 90王五 语文 81王五 数学 100王五 英语 90select distinct name from table where name not in (select distinct

2020-07-30 10:06:01 195

原创 MySQL | You can‘t specify target table ‘xxx‘ for update in FROM clause的解决

问题:在MySQL数据库删除重复数据的时候遇到了一个问题。如下sql:delete from s where autoid not in(select autoid from s group by id, name, no);报错:大致意思是,在同一语句中,不能先select出同一表中的某些值,再update这个表。解决方法:需要对上述sql进行更改,查询的时候增加一层中间表,就可以避免该错误,如下:delete from s where autoid not in(select a

2020-07-30 09:42:57 147

原创 数据库

limit 1;返回1条数据。limit 1,1;跳过第一条数据,返回一条数据。

2020-07-26 21:40:33 137

原创 [Err] 1055 - Expression #1 of ORDER BY clause is not in GROUP BY clause 解决办法 MySQL

解决办法:第一句是查看,第二句才是解决办法。执行sql 语句:select version(),@@sql_mode;SET sql_mode=(SELECT REPLACE(@@sql_mode,'ONLY_FULL_GROUP_BY',''));

2020-07-26 21:35:39 861

原创 erlang基础知识

-behaviour 是指定“行为模式”,在这里就是gen_server,作用在于用于检查这个模块是否 实现gen_server的所有接口。也就是 init/1, handle_call/3,handle_cast/2, handle_info/2, terminate/2, code_change/3这六个函数。缺少的话编译器就会 报错。监控树supevisor:-module (control).-export ([start/0,init/1]). %% 开启监控,子进程全程开启后再继续下一

2020-07-14 09:19:16 260

原创 erlang写一个简单的聊天室

1、chat_server.erl-module(chat_server).-export([start_server/0, wait_a_client/1, loop/1, all_send/1]).start_server() -> ets:new(chat_ets,[ordered_set, public, named_table, {write_concurrency, true}, {read_concurrency, true}]),%初始化一个表 case gen_tcp:l

2020-07-12 22:07:11 466

转载 如何指定多个线程的执行顺序

一、问题定义运行10个线程,按照顺序打印0123456789,Java代码实现!二、具体实现1、原始实现设定一个orderNum,每个线程执行结束后,更新orderNum,指明下一个要执行的线程,并且唤醒所有的等待线程;在每一个线程的开始,要while判断orderNum是否等于自己的要求值,不是则wait,是则执行本线程。public class OrderedThread extends Thread { private int id; private static int

2020-05-21 10:32:21 724

原创 Java内存模型(Java Memory Model ,JMM)

      Java内存模型(Java Memory Model ,JMM)就是一种符合内存模型规范的,屏蔽了各种硬件和操作系统的访问差异的,保证了Java程序在各种平台下对内存的访问都能保证效果一致的机制及规范。Java内存模型规定了所有的变量都存储在主内存中,每条线程还有自己的工作内存,线程的工作内存中保存了该线程中是用到的变量的主内...

2020-04-21 11:20:39 189

原创 生产者消费者代码

1、利用阻塞队列(BlockingQueue):生产者:import java.util.concurrent.BlockingQueue;public class Producer extends Thread{ BlockingQueue<Integer> queue; public Producer(BlockingQueue<Integer> que...

2020-03-19 17:36:45 528

原创 mysql Innodb在RR级别如何避免幻读

什么是幻读事务不是独立执行时发生的一种现象,例如第一个事务对一个表中的数据进行了修改,这种修改涉及到表中的全部数据行。 同时,第二个事务也修改这个表中的数据,这种修改是向表中插入一行新数据。那么,以后就会发生操作第一个事务的用户发现表中还有没有修改的数据行,就好象 发生了幻觉一样。mysql如何实现避免幻读在快照读读情况下,mysql通过mvcc来避免幻读。在当前读读情况下,mysql通过...

2020-03-04 09:34:12 902

转载 事务的四种隔离级别

数据库事务的隔离级别有4种,由低到高分别为Read uncommitted 、Read committed 、Repeatable read 、Serializable 。而且,在事务的并发操作中可能会出现脏读,不可重复读,幻读。下面通过事例一一阐述它们的概念与联系。Read uncommitted读未提交,顾名思义,就是一个事务可以读取另一个未提交事务的数据。事例:老板要给程序员发工资,程...

2020-03-04 09:31:56 176

原创 写一个简单的死锁代码

public class DeadLock{ static Object o1 = new Object(); static Object o2 = new Object(); public static void main(String[] args) { new Thread(new Runnable() { public vo...

2020-03-03 16:23:56 2838

原创 双重检验锁(单例模式)

public class Singleton { private static volatile Singleton instance; private Singleton(){} public static Singleton getInstance(){ if(instance==null){ synchronized (Singleton.class) { if(i...

2020-03-03 10:42:47 279

原创 HTTP常见状态码及表示意义

HTTP状态码当浏览者访问一个网页时,浏览者的浏览器会向网页所在服务器发出请求。当浏览器接收并显示网页前,此网页所在的服务器会返回一个包含HTTP状态码的信息头(server header)用以响应浏览器的请求。HTTP状态码的英文为HTTP Status Code。下面是常见的HTTP状态码:200 - 请求成功。301 - 资源(网页等)被永久转移到其它URL。404 - 请求的资...

2020-03-01 08:46:30 466

原创 Object类有哪些方法?各有什么作用?

9个方法,如下:1.clone方法保护方法,实现对象的浅复制,只有实现了Cloneable接口才可以调用该方法,否则抛出CloneNotSupportedException异常。主要是JAVA里除了8种基本类型传参数是值传递,其他的类对象传参数都是引用传递,我们有时候不希望在方法里讲参数改变,这是就需要在类中复写clone方法。2.getClass方法final方法,获得运行时类型。3...

2020-02-15 17:54:33 979

原创 ArrayList,HashMap,LinkedList,Hashtable初始化大小和扩容机制

1.ArrayListArrayList 初始化大小是 10 (如果你知道你的arrayList 会达到多少容量,可以在初始化的时候就指定,能节省扩容的性能开支)扩容点规则是,新增的时候发现容量不够用了,就去扩容扩容大小规则是,扩容后的大小= 原始大小*1.5。2.linkedListlinkedList 是一个双向链表,没有初始化大小,也没有扩容的机制,就是一直在前面或者后面新增就好。...

2020-02-14 11:22:21 2144

原创 排序算法

1、直接插入排序//直接插入排序//如果后一位数比前一位小,则把前一位往后移,再和更前一位比,如果还小,则继续往后移public class A3 { public void insertSort(int[] a){ int temp,i,j; for(i=1;i<a.length;i++){ if(a[i]<a[i-1]){ temp=a[i]; ...

2020-02-13 10:41:31 116

原创 算法题

题目描述输入一个链表,反转链表后,输出新链表的表头。/*public class ListNode { int val; ListNode next = null; ListNode(int val) { this.val = val; }}*/public class Solution { public ListNode Rev...

2020-01-21 10:38:50 142

原创 Java多线程实现的几种方式

1、继承Thread类,重写run方法如:public class MyThread extends Thread {  public void run() {   System.out.println("MyThread.run()");  }}启动线程:MyThread myThread = new MyThread();myThread.start();扩展:线程的...

2020-01-14 12:38:35 173

原创 选择题

解:(扩展:子网号:借用主机号的一部分。10.11.12.91/28:28表示网络号+子网号。子网掩码都是连续的1,根据子网号的位数可以求出子网个数。前28位为网络号,故子网掩码为11111111.11111111. 11111111. 11110000(255.255.255.240))10.11.12.91/28中,10.11.12都是一样的,不用管。所以91可以表示为:01011...

2019-12-24 15:37:26 321

转载 linux中tar命令用法

tar-c: 建立压缩档案-x:解压-t:查看内容-r:向压缩归档文件末尾追加文件-u:更新原压缩包中的文件这五个是独立的命令,压缩解压都要用到其中一个,可以和别的命令连用但只能用其中一个。下面的参数是根据需要在压缩或解压档案时可选的。-z:有gzip属性的-j:有bz2属性的-Z:有compress属性的-v:显示所有过程-O:将文件解开到标准输出下面的参数-f是必须的...

2019-12-18 13:00:55 130

原创 java实现二叉树的深度和广度遍历

二叉树的节点结构:public class TreeNode { int val = 0; TreeNode left = null; TreeNode right = null; public TreeNode(int val) { this.val = val; }}建树:public void insert(TreeNode...

2019-12-12 14:09:12 165

原创 聚集索引 - 辅助索引 - 覆盖索引

索引(Index)是帮助MySQL高效获取数据的数据结构。MyISAM索引实现MyISAM引擎使用B+Tree作为索引结构,叶节点的data域存放的是数据记录的地址。下图是MyISAM索引的原理图:这里设表一共有三列,假设我们以Col1为主键,则图8是一个MyISAM表的主索引(Primary key)示意。可以看出MyISAM的索引文件仅仅保存数据记录的地址。在MyISAM中,主索引和辅...

2019-11-09 12:14:46 252

原创 计算机网络的基础知识

GET 和 POST 的区别1,get是获取数据,post是修改数据。2,get把请求的数据放在url上, 以?分割URL和传输数据,参数之间以&相连,所以get不太安全。而post把数据放在HTTP的包体内(requrest body)。3,get提交的数据最大是2k( 限制实际上取决于浏览器), post理论上没有限制。4,GET产生一个TCP数据包,浏览器会把http hea...

2019-11-07 11:02:29 982

转载 一文读懂HashMap

本文准备从以下几个方面去讲解HashMap:1)HashMap源码详细分析2)HashMap为什么是线程不安全的?3)HashMap和HashTable的区别4)1.7和1.8的HashMap实现区别总结HashMap源码分析一、构造函数让我们先从构造函数说起,HashMap有四个构造方法,别慌1.1 HashMap()// 1.无参构造方法、 // 构造一个空的Hash...

2019-11-01 15:09:48 132

原创 Java线程中的sleep和wati的区别以及join、yield方法

1.sleep来自Thread类,而wait来自Object类;2.sleep方法没有释放锁,而wait方法释放了锁;3.wait,notify,notifyAll只能在同步方法或者同步代码块使用,而sleep可以在任何地方使用;4.wait可以指定时间也可以不指定时间,而sleep必须指定时间;5.sleep必须捕获异常,而wait,notify和notifyAll不需要捕获异常。...

2019-11-01 09:53:54 555

转载 static作用与用法

目录一、static变量二、static方法三、static代码块四、static classstatic表示“全局”或者“静态”的意思,用来修饰成员变量和成员方法,也可以形成静态static代码块,但是Java语言中没有全局变量的概念。被static修饰的成员变量和成员方法独立于该类的任何对象,也就是说,它不依赖类特定的实例,当声明它类的对象时,不生成static变量的副本,被类的所有...

2019-11-01 09:18:59 1222

转载 CAS的ABA问题详解

在多线程场景下CAS会出现ABA问题,关于ABA问题这里简单科普下,例如有2个线程同时对同一个值(初始值为A)进行CAS操作,这三个线程如下1.线程1,期望值为A,欲更新的值为B2.线程2,期望值为A,欲更新的值为B线程1抢先获得CPU时间片,而线程2因为其他原因阻塞了,线程1取值与期望的A值比较,发现相等然后将值更新为B,然后这个时候出现了线程3,期望值为B,欲更新的值为A,线程3取值与期...

2019-10-31 20:14:39 164 2

原创 实践中如何优化MySQL

实践中,MySQL的优化主要涉及SQL语句及索引的优化、数据表结构的优化、系统配置的优化和硬件的优化四个方面,如下图所示:⑴ SQL语句优化:SQL语句的优化主要包括三个问题,即如何发现有问题的SQL、如何分析SQL的执行计划以及如何优化SQL,下面将逐一解释。① 怎么发现有问题的SQL?(通过MySQL慢查询日志对有效率问题的SQL进行监控)MySQL的慢查询日志是MySQL提供的一种...

2019-10-28 10:02:38 335

转载 java线程池 面试题(精简)

什么是线程池?线程池是一种多线程处理形式,处理过程中将任务提交到线程池,任务的执行交由线程池来管理。如果每个请求都创建一个线程去处理,那么服务器的资源很快就会被耗尽,使用线程池可以减少创建和销毁线程的次数,每个工作线程都可以被重复利用,可执行多个任务。为什么要使用线程池?创建线程和销毁线程的花销是比较大的,这些时间有可能比处理业务的时间还要长。这样频繁的创建线程和销毁线程,再加上业务工作线...

2019-10-28 09:52:05 790

原创 如何分析java中字符串缓冲池

java的虚拟机在内存中开辟出一块单独的区域,用来存储字符串对象,这块内存区域被称为字符串缓冲池。那个java的字符串缓冲池是如何工作的呢?例如下面的代码: String a = "abc";  String b = "abc";  String c = new String("xyz");String a = “abc”;创建字符串的时候先查找字符串缓冲池中有没有相同的对象,如...

2019-10-16 18:57:59 151

转载 TCP 粘包/拆包的原因及解决方法

在平时客户端socket开发中,如果客户端连续不断的向服务端发送数据包时,服务端接收的数据会出现两个数据包粘在一起的情况,这就是TCP协议中经常会遇到的粘包以及拆包的问题。我们都知道TCP属于传输层的协议,传输层除了有TCP协议外还有UDP协议。那么UDP是否会发生粘包或拆包的现象呢?答案是不会。UDP是基于报文发送的,从UDP的帧结构可以看出,在UDP首部采用了16bit来指示UDP数据报文的...

2019-10-15 21:03:38 544

原创 Hibernate和MyBatis的区别

Hibernate是自动的,Mybatis是半自动的,或不完全是一个ORM框架。自动指的是Hibernate因为有良好的映射机制,针对高级查询,也可以不必手动编写sql,开发者可以更关注于业务逻辑编写,而不用担心sql的生成和结果映射,但由于是完全封装,不了解其实现细节,所以不能保证其查询性能。半自动指的是它在做高级查询时,必须手动写sql以及resultMap,所以其开发工作量大,但可以对sq...

2019-10-15 20:41:08 90

原创 Spring MVC处理一个HTTP请求的流程

流程如图所示:整个过程详细介绍如下:用户发送请求至前端控制器DispatcherServlet。DispatcherServlet收到请求调用HandlerMapping处理器映射器。处理器映射器根据请求URL找到具体的Controller处理器返回给DispatcherServlet。DispatcherServlet通过HandlerAdapter处理器适配器调用Controlle...

2019-06-20 11:43:41 985

原创 maven如何导入sql server驱动(jar包)

选中File选项,再点击Project Structure;2. 然后选中Modules选项,再点击右边+号;3. 最后,选择Library->java,引入即可。注意,别忘了在pom.xml文件中添加依赖: <dependency> <groupId>com.microsoft.sqlserver&l...

2019-06-17 12:17:51 4788

原创 Windows10系统如何解决移动/复制/删除文件需要管理员权限的方法

如图:解决:右键点击文件,选择属性;然后点击【安全】选项卡,再点击【高级】按钮;进入高级安全设置中,再点击“更改”;在选择用户或组中,我们再点击高级;然后点击“立即查找”,之后会列出搜索结果,我们选择当前帐户,我的是FFF,选中后,确定;用户选好后,一直按确定就可以了;接着还是选中你的用户名,然后下方权限处勾选你需要的权限即可。...

2019-06-17 11:00:36 22802 1

原创 spring事物管理(@Transactional),异常事务回滚,try catch捕获不抛出,事物不回滚

默认情况下,spring事务只有在发生未被捕获的 RuntimeException时才回滚(运行时异常)。注意,不写try catch和写try{} catch (Exception e) { throw new RuntimeException(); }是一样的意思。下图为java异常体系:解决:不进行捕获,或捕获抛出RuntimeException;捕获并手动回滚, ...

2019-06-17 10:02:38 2252

空空如也

空空如也

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

TA关注的人

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