- 博客(258)
- 收藏
- 关注
原创 什么是docker
概述:Docker是一个开源额应用容器引擎,基于Go语言,并遵从Apache2.0协议开发,Docker可以让开发者打包他们的应用以及依赖包到一个轻量级,可移植的容器中,然后发到任何流行的Linux机器上,也可以实现虚拟化。Docker的主要目标是对应用程序组件的封装,分发,部署,运行等生命周期的管理,使用户的app(这个app可以是一个web应用程序或者redis,nginx,数据库等等)包括他的运行环境可以做到一次封装,到处运行。Linux容器技术的出现解决了这个问题,而docker就是基于他的基础上发
2022-05-19 19:13:31
457
原创 docker安装(安装不成功算我输)
然来:开始你的表演检查环境:首先 centos必须是7以上 先用命令查下: cat /etc/centos-release我的是然后注意了内核版本必须是3.10以上:查看内核版本命令: uname -r环境没问题,然后开始安装:插件安装,直接输入命令回车:yum -y update设置yum源yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo...
2022-05-16 19:40:46
836
原创 数据库三值逻辑和null
大多数编程语言都是基于二值逻辑的,既逻辑值只有真和假两个,而sql语言则采用一种特别的逻辑体系,三值逻辑,既逻辑值除了真和假还有第三个值不确定,三值逻辑会带来一些意想不到的惊喜,所谓惊喜既烦恼。总之数据库里只要存在一个null,查询的结果就可能不确定,而且一般没有办法确定具体是哪个查询返回了不正确的结果,所以所有的结果看起来都很可疑,没有谁能保一定从包含null的数据库里查询出正确的结果。我们在想一个问题,数据库为什么会出现三值逻辑,大多数编程语言都包括布尔型bool,boolean,当然,sql语
2022-05-14 21:22:28
410
原创 数据库之自连接
sql的连接运算根据其特征的不同,有着不同的名称,如内连接,外连接,交叉连接等,针对相同的表进行的连接被称为自连接 self join,一旦熟练掌握自连接技术,我们便能快速的解决很多问题。可重排列,排列,组合,假设有一张表里存放了商品名称及价格,表里有苹果,橘子,香蕉,三条记录,在生成用于查询销售额的报表等的时候我们有时会需要获取这些商品的组合。表:...
2022-05-14 17:55:14
1126
原创 case表达式之表之间的数据
在case表达式里,我们可以使用between,like,和<,>等便利的谓词组合,以及能嵌套子查询的in和exists谓词,因此case表达式具有非常强大的表达能力,用起来非常香。我们来举个例子,某it培训机构的课程一览表和一张管理每个月所设的课程的表,每个月所开设的课程:查询open_subject里各个月里有哪些课程select subject, case when course_id IN(SELECT course_id FROM open_s
2022-05-05 21:04:15
395
原创 用sql语句进行不同条件的统计
进行不同条件的统计是case表达式著名用法之一,我们统计各个班级男女的性别数量:如图:班级,性别,人数我现在统计所有班级男生数量:select sum(person_num) as person_numfrom school_roomwhere sex = '1'统计所有女生的人数:select sum(person_num) as person_numfrom school_roomwhere sex = '2'我i们使用case表
2022-05-03 20:27:04
2576
原创 mysql之case when按区间统计个数
按照级别统计个数:SELECT case WHEN population <50 then '1' WHEN population >=50 and population <100 then '2' WHEN population >=100 and population <200 then '3' WHEN population >=200 then '4' else null end as top, ..
2022-05-03 18:05:59
3226
原创 Synchronized详解
1:如果在普通方法上加上Synchronized 当前this锁。2:如果在静态方法上加上Synchronized 当前calss字节码3:也可以自定义锁对象我们站在汇编的角度去分析Synchronized关键字原理public class Demo2 extends Thread{ //定义一个锁对象 private Object lockObject = new Object(); @Override public void run() {
2022-05-03 10:49:00
446
原创 mysql之 将已有编号方式转换为新的方式统计
我们将已有编号的方式转范为另外一种便于分析的方式进行统计的需求:比如我们统计下列各区的总人口,按照所在市统计 select CASE country_name WHEN '萧山区' THEN '杭州市' when '上城区' THEN '杭州市' when '余杭区' THEN '杭州市' when '海曙区' THEN '宁波市' when '江北区' THEN '宁波市' when '镇海区' THEN '宁波市' when '北仑区' THEN
2022-05-02 23:24:36
643
原创 mysql获取当前年,当前月,当前时,当前分,当前秒
获取当前年:select YEAR(NOW()) as `YEAR`获取当前月:select MONTH(NOW()) as MONTH获取当前小时select HOUR(NOW()) as HOUR获取当前分钟select MINUTE(NOW()) as MINUTE获取当I前秒select SECOND(NOW()) as SECOND
2022-04-26 20:12:44
2872
原创 Spring系列容器和bean
Spring容器两大重要接口,一个是BeanFactory一个是ApplicationContext接口,我们来看下类图:
2022-03-26 09:48:56
687
原创 Redis之linux安装
第一步下载好Redis的linux版本我这里已经下载好了:链接:https://pan.baidu.com/s/1SQO_TBPDrpSneRqyxCC1oA提取码:2ic6打来linux:切换到usr目录下:然后创建redis文件夹:mkdir redis然后把redis安装包上传到redis目录上去:然后进行解压:tar -zxvf redis-5.0.0.tar.gz 进入进行编译:make install PREFIX=/usr...
2022-03-19 15:35:47
706
原创 Redis之深挖(就是往里面探究)
Redis是完全开源免费的,是一个高性能的key-value数据库,目前市面上主流的数据库有Redis,Memcache.但是用的最多的还是Redis数据库。Redis属于内存数据库(nosql数据库)关系数据库存硬盘中,查询实现是基于io操作。非关系数据库Redis一般把数据存放到内存中,如果一旦服务器宕机或者重启,那么redis保存在内存中的数据就会丢失,那么肯定有解决方案,那就是持久化机制。JVM内置缓存框架ECACH,OS CACH,这些内存缺点是数据无法共享,也非常消耗JVM,所以基本
2022-03-15 23:13:56
794
原创 mysql时间区间过滤出对应值
上面一张表,我要根据当前时间过滤出对应的值:SELECT `CODE`, levelValue FROM leveldate WHERE DATE_FORMAT( NOW(), '%m%e' ) >= firstMonth AND DATE_FORMAT( NOW(), '%m%e' ) <= endMonth 当前日期对应的角色级别:...
2022-03-14 10:12:57
1766
原创 org.apache.ibatis.binding.BindingException: Invalid bound statement (not found): com.zigao.com.xxx
今天在整合mybats的时候,报了这个错,错误截图如下:意思就是没有绑定这个方法,我也看了下这个namespace这个引用的路径没问题:对应的id也没问题:配置也没问题:那问题出在哪了了。我看了下:原来配置文件必须放在一级目录里:把它放到一级目录里,问题完美解决:...
2022-03-09 15:43:23
294
原创 公平锁与非公平锁
什么叫公平锁:就是比较公平,根据请求锁的顺序排列。也就是先进来得先获取锁,后进来得后获取锁,采用队列进行存放,遵循得原则是先进先出的原则。类似于生活中的排队做某事,比如排队吃饭。说完了公平锁,我们来说说非公平锁,非公平锁不是根据请求的顺序序排列,谁能够抢到锁就归谁。NEW ReentrantLock(true) -- 公平锁NEW ReentrantLock(fasle)---非公平锁我们来用代码演示一遍:...
2022-03-06 19:35:24
769
原创 mysql 转置
最近开发有个需求,就是多条数据合并成一条语句,方便前端去调用:如图我要把上面六条语句转置成两条语句,以年份进行分组,分别统计生活用水,工业用水,农田用水。 select water.recrdYear, SUM(IF(water.type='生活用水',water.waterVolute,0)) AS peopleWater, -- 生活用水 SUM(IF(water.type='工业用水',water.waterVolute,0)) AS industryWater
2022-03-02 13:37:32
1395
原创 事务的概念
保证数据的一致性,acid原则:Spring事务分类:编程事务和声明事务编程事务:手动事务声明事务:自动事务 注解或者扫包的形式事务原理: Begin -- 触发行锁机制 获取锁的权限Commit
2022-02-22 21:27:01
160
原创 git第一次上传代码报fatal: Could not read from remote repository.
上传总是报这个错:如果有远程仓库地址,先删除,或者换地址:然后看有没有删除成功:然后切换成https连接:看是否切换成功:然偶提交建立分支:
2022-02-22 13:47:27
289
原创 对象序列化流
何为对象序列化,对象序列化介绍,对象序列化,就是将对象保存到磁盘中,或者在网络中传输对象,这种机制就是使用一个字节序列表示一个对象,该字节序列包:对象的类型,对象的数据和对象中存储的属性等信息。字节序列写到文件之后,相当于文件中持久保存了一个对象的信息。反之,该字节序列还可以从文件中读取出来,重构对象,对它进行反序列化。对象序列化流:ObjectOutputStream,将java对象的原始数据类型和图形写入OutputStream,可以使用ObjectInputStream读取(重构)对象,可以通过使
2022-02-21 13:54:55
229
原创 IO流之字符流
为什么会出现字符流:字符流介绍,由于字节流擦做中文不是特别方便,所有java就提供字符流:字符流 = 字节流 + 编码表中文的字节 存储方式:用字节流复制文本文件时,文本文件也会有中文,但是没有问题,原因是最终底层操作会自动进行字节拼接成中文,如何识别是中文的了?汉字在存储的时候,无论选择哪种编码存储,第一个字节都是负数。编码表:什么是字符集:是一个系统支持的所有字符的集合,包括各国际文字,标点符号,图形符号,数字等计算机要准确的存储和识别各种字符集符号,就需要进行字符编码,一套
2022-02-18 14:05:47
470
原创 IO流之字节缓冲流
字节缓冲流构造方法何为字节缓冲流, BufferOutputStream:该类实现缓冲输出流。通过设置这样的输出流,应用程序可以像底层输出流写入字节,而不必为写入的每个字节导致底层的系统调用。BufferedInputStream:创建BufferedInputStream将创建一个内部缓冲区数组,当从流中读取或跳过字节时,内部缓冲区将根据需要从所包含的输入流中重新填充,一次多个字节。构造方法:我们来用代码实现一下: public static void main(String
2022-02-18 10:24:20
224
原创 字节流实现复制图片
比如我要把D:\suxiaoxiao\sisi.jpg 复制到C:\suxiaoxiao目录下我们来剖析下实现步骤:根据数据源创建字节输入流对象根据目的地创建字节输出流对象读写数据,复制图片(一次读取一个字节数组,一次写入一个字节数组)释放资源 //根据数据源创建字节输入流对象 FileInputStream fis = null; //根据目的地创建字节输出流对象 FileOutputStream fos = null;
2022-02-17 16:44:22
2501
原创 字节流读数据(一次读一个字节数组数据)
一次读一个字节数组的方法:public int read(byte[] b):从输入流读取最多b.length个字节的数据返回的是读入缓冲区的总字节数,也就是实际的读取字节个数 //根据数据源创建字节输入流对象 FileInputStream fis = null; try { fis = new FileInputStream("D:\\suxiaoxiao\\sisi.txt"); byte[] by
2022-02-17 16:26:58
541
原创 字节流之复制文本文档
比如我现在需要把D;\suxiaoxiao\sisi.txt文本里的内容复制到C:\suxiaoxiao\sisi.txt里面实现步骤; 复制文本文件,其实就是把文本文件的内容从一个文件中读取出来(数据源),然后写入到另一个文件中(目的地)数据源:E:\suxiaoxiao\sisi.txt读数据 FileinputStream 写入目的地 C:\suxiaoxiao\sisi.txt FileOutputStream我们来实现下; public static void main(Stri
2022-02-17 15:51:18
194
原创 字节流应用小案列(字节流读数据)
字节流读数据:一次读一个字节数据字节输入流:FileINputStream(String name):通过打开与实际文件的连接来创建一个FileputStream,该文件由文件系统中的路径名name命名字节输入流读取数据的步骤(1)创建字节输入流对象(2)调用字节输入流对象的读取方法(3)释放资源public class Demo { public static void main(String[] args){ //创建字节输出流对象 Fi
2022-02-17 15:21:09
127
原创 java之io流
今天就来讲讲java的io流,在开发中用到的地方还很多,比如文件上传,文件下载,文件解压缩等等都应用到了,所以这块知识还是挺重要的。首先说流之间,说下File类,它是文件和目录路径名的抽象表示,也就是文件和目录是可以通过File封装成对象的,对于File而言,其封装的并不是一个真正存在的文件,仅仅是一个路径名而已,他可以是存在的,也可以是不存在的,将来是要通过具体的操作把这个路径的内容转换为具体存在的。File类常用构造方法:我们来测试下接口: //File(String path.
2022-02-15 16:56:20
1308
原创 手写jvm内置缓存
用HashMap封装一个内置缓存:开楼吧:首先搭个框架:SpringBoot+Mybatis然后编写内置缓存:/** * 内置缓存工具类 */public class JvmMapCacheUtils { /** * 缓存容器 */ private static Map<String,String> caches = new ConcurrentHashMap<>(); /** *根据key获.
2022-02-05 23:03:36
492
原创 设计模式之模板方法模式
什么是模板方法:(1)定义了一个操作中的算法的骨架,而将部分步骤的实现在子类中完成。魔板方法模式使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。(2)魔板方法模式是所有模式中最为常见的几个模式之一,是基于继承的代码复用的基本技术,没有关联关系,因此,在模板方法模式的类结构中,只有继承关系。核心设计要点:AbstractClass:抽象类,定义并实现一个模板方法,这个模板方法定义了算法的骨架,而逻辑的组成步骤在相应得抽象操作中,推迟到子类去实现。CoincreteClass
2022-01-24 21:09:36
366
原创 volatile关键字解析
volatile三大特性,可见性,顺序,不保证原子性如何理解多核多线程如鬼是单核的Cpu的情况下,Cpu在同一个时刻只能执行一个线程。存在切换过程 底层并不是真正多线程。什么叫能够保证线程的可见性了,当一个线程在修改我们主内存中的共享变量数据的时候,能够对另外一个线程可见。为什么会产生线程可见性原因:如果cpu每次直接访问主内存的共享变量的数据,访问的效率比较低,所以cpu采用高速缓存,高速缓存主要缓存我们主内存共享变量中的数据副本。...
2022-01-22 20:39:37
304
原创 mysql中的行锁概念
在mysql中多个线程对同一行数据做写的操作的时候,默认会触发行锁的机制,最终只有一个线程才能对该行数据做写的操作,其他的线程会被等待。
2022-01-16 20:03:28
517
原创 悲观锁和乐观锁
为什么需要锁:考虑线程安全的问题当多个线程在同时共享到同一个全局变量做写的操作的时候,可能会受到其他线程的干扰。这个时候就需要考虑上锁了,让多个线程同时抢购同一把锁,只要谁能够抢锁成功,谁就可以执行我们的代码,如果没有抢到锁的情况下,当前线程变为阻塞状态,一般的情况下只有做写的时候才会上锁,写包括:update del insert 查询就不需要了。我们就来说说悲观锁与乐观锁:...
2022-01-16 18:02:07
540
原创 如何停掉一个线程
public class TestDemo extends Thread{ @Override public void run() { //要执行的代码 while(true){ } } public static void main(String[] args) { new TestDemo().start(); System.out.println(Thread.currentThre.
2022-01-16 13:08:35
218
原创 数据结构之数组
数组概念:数组(Array)是有序的元素序列。把数据码成一排进行存放。封装数组:public class Array { private int[] data; private int size; //构造函数,传入数组的容量capacity构造array public Array(int capatity){ data = new int[capatity]; size = 0; } //无参数的构造函数 默认容.
2022-01-02 13:59:53
365
原创 jdk8中for循环的使用
jdk8之前可以这样写:jdk8之后我们可以这样写: List<User> userList = userService.getUser(); userList.forEach(r->{ r.setRegistrationTime(Timestamp.valueOf(LocalDateTime.now())); });...
2021-12-30 16:24:43
904
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅
1