- 博客(46)
- 资源 (1)
- 收藏
- 关注
原创 六天玩转Mysql(第五天)
更新限制:with check option,如果对视图在新增的时候,限定了某个字段有限制,那么对视图进行数据更新操作时,系统会进行验证,要保证更新之后,数据依然可以被实体查询出来,否则不让更新。是一种有结构(有行有列),但是没有结果(结构中不真实存放数据)的虚拟表,虚拟表的结构来源不是自己定义,而是从对应的基表中产生(视图的数据来源)备份的是SQL语句:系统会对表结构以及数据进行处理,变成对应的SQL语句,然后进行备份,还原的时候只有执行SQL指令即可(主要就是针对表结构)--前提是外部文件不存在。
2023-04-13 13:33:16 169
原创 Mysql(一)
换句话说,左表(A)的记录将会全部表示出来,而右表(B)只会显示符合搜索条件的记录(例子中为: a.id = b.id).B表记录不足的地方均为NULL.1、varchar比较智能,是可变的字符串,可以根据实际的数据长度分配空间,比较节省空间,但是在分配的时候需要执行相关的判断程序,效率较低。内连接:a,b两表连接时,把两表能够完全匹配的几条数据查询出来(只显示两表关联条件匹配的数据,也就是满足on的条件的数据)
2023-04-13 13:23:16 73
原创 六天玩转Mysql(第四天)
以左表为主表,最终记录数至少不少于左表已有的记录数。以右表为主表,最终记录数至少不少于右表已有的记录数。外连接分为两种:以某一张表为主表。
2023-04-10 16:52:59 47
原创 六天玩转Mysql(第三天)
理论上讲,应该一张表中的所有字段都应该直接依赖主键(逻辑主键:代表的是业务主键),如果表设计中存在一个字段,并不直接依赖主键,而是通过某个非主键字段依赖,最终实现依赖主键,把这种不是直接依赖主键,而是依赖非主键字段的依赖关系称之为传递依赖。在数据库设计的过程中,如果有复合主键(多字段主键),且表中有字段并不是由整个主键来确定,而是依赖主键中的某个字段(主键的部分),存在字段依赖主键的部分的问题,称之为部分依赖,方案2:在创建表的时候,在所有的字段之后,使用primary key(主键字段列表)来创建主键。
2023-04-10 16:50:58 67
原创 六天玩转Mysql(第二天)
枚举在进行数据规范的时候(定义的时候),系统会自动建立一个数字和枚举元素的对应关系(关系放在日志中),然后在进行数据插入的时候,系统自动将字符转换成对应的数字存储,然后在进行数据提取的时候,系统自动将数值转换成对应的字符串显示。DateTime:时间日期,格式是YYYY-mm-dd HH:ii:ss,表示的范围是从1000到9999年,有0值:0000-00-00 00:00:00。变长字符串:varchar,在分配空间的时候,按照最大的空间分配,但是实际上最终用了多少,是根据具体的数据来确定。
2023-04-10 16:24:17 59
原创 六天玩转Mysql(第一天)
从需要存储的数据需求中分析,如果是一类数据(实体)应该设计成一张二维表:表是由表头(字段名:用来规定数据的名字)和数据部分组成(实际存储的数据单元)关系型数据库的特点之一:如果表中对应的某个字段没有值(数据),但是系统依然要分配空间:关系型数据库比较浪费时间。数据库:database,存储数据的仓库,高效的存储和处理数据的介质(介质主要是两种:磁盘和内存)乱码原因:数据来源是服务器,解析数据是客户端(客户端只识别GBK,只会两个字节一个汉字)Rename table 旧表名 to 新表名。
2023-04-10 16:13:07 66
原创 Spring过滤器
当用户提交了一个包含中文参数的请求时,浏览器首先会将这些中文转化为一个字节序列,发送到服务器,服务器接收到这个字节序列,会按照其默认的字符编码ISO8859-1对其进行编码,此时就产生了乱码。当对servlet的请求到达servlet容器时,会先对请求进行解析,使用解析出的URI,作为比较对象,从第一个map中查找是否有相同的key,若存在相同的key,那么读取其value,即servlet对象的引用,执行该servlet的service()方法。,没有进行输出,由此可证,动态资源没有访问的资格。
2023-04-10 15:37:21 1041
原创 Spring MVC
当web.xml的servlet中配置了初始化参数,那么就不会去寻找和[serlet-name]-servlet.xml文件,会加载init-param中的对象。这样就完成了一次注释开发的过程,比之前的配置文件来说,注解开发简单了许多,不需要每写一个方法就必须在xml中配置一次。一旦分发器初始化,它会查找一个文件名为[servlet-name]-servlet.xml在web-inf文件夹中。SpringMVC是一个轻量级的,基于请求响应的mvc框架,这种框架有很多,struts1,struts2…
2023-04-10 15:31:53 62
原创 Mysql集群方案
针对表,将表拆分到不同的库中,当表数据量超出一定量时,立刻创建一个新表,在原表面后面加上1,2,3用于区别原表。比如user表和order表在A库,address表和product表在B库,当user表数据超过一定时,A库会生成user1表,user2表。当水平拆分的情况下,不同的表关联查询,一个库中外键所在的库的id不会超出主键所在库的id,这是一种设计思想。水平拆分比垂直拆分操作复杂,因为相同的表,库不一样,垂直拆分一张表都是在一个库中,不需要切库。针对表的数据,将表的数据拆分到不同的库中。
2023-04-10 13:59:27 207
原创 初识RabbitMQ
因为是main函数运行生产者和消费者,当多次运行生产者后,随机一个消费者可以接收到消息,后来发现是多个消费者使用了同样的对列名,也就是在这个生产消费者模式中,存在多个消费者,所以当运行多个相同的消费者,会随机接受消息。当用户的请求被服务器接收后,首先写入消息队列,假如消息队列长度超过最大的数量,比如抢购只有100台,已经有100个用户抢到了,那么就抛给其他用户失败的请求,抢购业务根据消息队列中的信息,再做后续处理。做法为:将注册消息写入数据库,发送注册邮件,再发送注册短信,以上三个任务完成,返回给客户端。
2023-04-10 13:48:10 526
原创 对称加密和非对称加密
对称加密是最快速、最简单的一种加密方式,加密(encryption)与解密(decryption)用的是同样的密钥(secret key),这种方法在密码学中叫做对称加密算法。对称加密有很多种算法,由于它效率很高,所以被广泛使用在很多加密协议的核心当中。对称加密通常使用的是相对较小的密钥,一般小于256 bit。。如果你只用1 bit来做这个密钥,那黑客们可以先试着用0来解密,不行的话就再用1解;但如果你的密钥有1 MB大,黑客们可能永远也无法破解,但加密和解密的过程要花费很长的时间。
2023-04-10 13:07:37 61
原创 【工作问题记录】Docker启动但外部无法访问
docker启动后,在linux内部可以访问curl http://localhost:port可以访问,但是外部无法访问。因为使用的是腾讯云服务器,首先去看了云服务器的安全组是否进行了配置,结果是配置了的。如果是服务器是通过tar包形式的是可以的,猜测是跟docker容器相关。查了一下,ip转发是否开启了,果然,是没有开启的。所以开启它,并重启,然后就可以啦~
2023-04-10 10:55:56 883
原创 Java7并发编程指南(学习笔记)
当在一个单核处理器上使用多个线程执行应用程序时,很明显的,在程序执行的同时你就会明白这是并发性。而当使用多种按照顺序来执行的线程来简化一个问题的解决方案时,它是并行性。主线程的正常结束并不会影响子线程t的执行,子线程t继续执行。主线程结束后,设置为守护线程的子线程将不再执行。如果你没有声明一个线程的名字,那么JVM会自动命名它为:Thread-XX,XX是一个数字。线程的ID或者状态是不可修改的。Thread类的对象中保存了一些属性信息能够帮助我们来辨别每一个线程,知道它的状态,调整控制其优先级。
2023-04-06 17:03:03 66
原创 工作、学习问题记录(一)
解:因为项目架构中,是分布式的架构,切面的实现方法,是在admin模块下,service模块依赖core模块,但是不可能依赖admin模块,切面的实现方法没有放到core模块中,所以serviceImpl中访问不到,不跳到切面中。当集群模式下的数据存储,重定向到哪个节点,哪个节点就有数据,但是其他的节点是没有这个数据,这时候查询就会重定向到那个节点。解:因为idea只会从rescoure中找文件,不会从src/main/java中寻找,需要在pom.xml中,添加。
2023-04-06 17:02:43 79
原创 Git版本管理
首先,Git必须知道当前版本是哪个版本,在Git中,用HEAD表示当前版本,也就是最新的提交1094adb...(注意我的提交ID和你的肯定不一样),上一个版本就是HEAD^,上上一个版本就是HEAD^^,当然往上100个版本写100个^比较容易数不过来,所以写成HEAD~100。现在有了分支,就不用怕了。你创建了一个属于你自己的分支,别人看不到,还继续在原来的分支上正常工作,而你在自己的分支上干活,想提交就提交,直到开发完毕后,再一次性合并到原来的分支上,这样,既安全,又不影响别人工作。
2023-04-06 16:54:34 111
原创 初识Redis
字符串的索引以0为开始,从字符串的开头向字符串的结尾依次递增,字符串每一个字符的索引为0,字符串最后一个字符的索引为N-1,其他N为字符串的长度。比如:如果将set msg “hello world”,GETRANGE给定索引值0,4,就可以获得字符串h,e,l,l,o这五个字符的内容,因为GETRANGE还能接受负数,同样我们获取范围-5到-1的字符,我们也可以获得5个字符,w,o,r,l,d,只需要注意一点就是,这里索引是闭区间,给定0的时候这个字符会包含在内,给定4的时候这个字符也会包含在内。
2023-04-06 16:53:48 138
原创 session和cookie
一般情况下,若要向Session中存放数据,则使用getSession(true),意义为:若当前存在Session,则使用当前的Session,若当前不存在Session,则创建一个新的Session。不同的浏览器,其cookie的保存位置及查看方式是不同的,删除了某一个浏览器下的cookie,不会影响到其他浏览器中的cookie。服务端从请求中读取到客户端发送来的Cookie,并根据Cookie的JSESSIONID的值,从Map中查找相应的key所对应的value,即Session对象。
2023-04-06 16:50:55 75
原创 Redis相关基础知识
基本的Redis的容灾策略为: 1 采用master-slave方式 2 为了得到好的读写性能,master不做任何的持久化 3 slave同时开启Snapshot和AOF来进行持久化,保证数据的安全性 4 当master挂掉后,修改slave为master 5 恢复原master数据,修改原先master为slave,启动slave 6 若master与slave都挂掉后,调用命令通过aof和snapshot进行恢复 恢复时要先确保恢复文件都正确了,才能启动主库;(工作中基本都使用乐观锁)
2023-04-06 16:49:53 60
原创 Java工程师修炼之道
sharding-jdbc:从数据源层面解决分库分表,读/写分离问题solr和ElasticSearch都是基于Lucene实现的搜索引擎,ElasticSearch对集群有良好的支持,逐渐成为主流Apache Kafka、RabbitMQ是使用比较普遍的消息队列,对消息丢失不敏感且不要求消息事务的,选择Kafka,否则选择RabbitMQ分布式文件存储:HDFS、NFS、Samba主流的RPC协议:Dubbo、Hession、RMI等分布式调度(定时器):elastic-job。
2023-04-06 16:49:52 227
原创 深入理解Java虚拟机(八)
各种不同平台的虚拟机与所有平台都统一使用的程序存储格式--字节码是构成平台无关性的基石。虚拟机还拥有一种中立特性--语言无关性,能支持其他语言运行在JVM上。实现语言无关性的基础仍然是虚拟机和字节码存储格式。Java虚拟机不和包括Java在内的任何语言绑定,它只与“Class文件”这种特定的二进制文件所关联,Class文件中包含了Java虚拟机指令集和符号表以及若干辅助性信息。
2023-04-06 16:48:39 66
原创 深入理解Java虚拟机(七)
jps 命令类似与 linux 的 ps 命令,但是它只列出系统中所有的 Java 应用程序。通过 jps 命令可以方便地查看 Java 进程的启动类、传入参数和 Java 虚拟机参数等信息。如果在 linux 中想查看 java 的进程,一般我们都需要 ps -ef | grep java 来获取进程 ID。如果只想获取 Java 程序的进程,可以直接使用 jps 命令来直接查看。-q:只输出进程 ID-m:输出传入 main 方法的参数。
2023-04-06 16:47:03 79
原创 【线上问题记录】RestTemplate引发的ConcurrentModificationException异常
RestTemplate引发的ConcurrentModificationException异常
2023-02-21 14:27:11 567
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人