- 博客(127)
- 收藏
- 关注
原创 数据库的索引
1、索引的目的是什么?快速访问数据表中的特定信息,提高检索速度创建唯一性索引,保证数据库表中每一行数据的唯一性。加速表和表之间的连接使用分组和排序子句进行数据检索时,可以显著减少查询中分组和排序的时间2、索引对数据库系统的负面影响是什么?负面影响:创建索引和维护索引需要耗费时间,这个时间随着数据量的增加而增加;索引需要占用物理空间,不光是表需要占用数据空间,每个索引也需要占用物理空间;当对表进行增、删、改、的时候索引也要动态维护,这样就降低了数据的维护速度。3、为数据表建立索引的原则有
2021-11-04 08:38:45 217
原创 数据库中的事务是什么
事务(transaction)是作为一个单元的一组有序的数据库操作。如果组中的所有操作都成功,则认为事务成功,即使只有一个操作失败,事务也不成功。如果所有操作完成,事务则提交,其修改将作用于所有其他数据库进程。如果一个操作失败,则事务将回滚,该事务所有操作的影响都将取消。事务特性:1、原子性:即不可分割性,事务要么全部被执行,要么就全部不被执行。2、一致性或可串性。事务的执行使得数据库从一种正确状态转换成另一种正确状态3、隔离性。在事务正确提交之前,不允许把该事务对数据的任何改变提供给任何
2021-11-03 08:33:02 349
原创 通用 SQL 函数
1、CONCAT(A, B) – 连接两个字符串值以创建单个字符串输出。通常用于将两个或多个字段合并为一个字段。21、MySQL 支持事务吗?在缺省模式下,MySQL 是 autocommit 模式的,所有的数据库更新操作都会即时提交,所以在缺省情况下,MySQL 是不支持事务的。但是如果你的 MySQL 表类型是使用 InnoDB Tables 或 BDB tables 的话,你的MySQL 就可以使用事务处理,使用 SETAUTOCOMMIT=0 就可以使 MySQL 允许在非 autoc
2021-11-02 08:48:41 314
原创 MySQL 数据库中 MyISAM 和 InnoDB 的区别
MyISAM:不支持事务,但是每次查询都是原子的;支持表级锁,即每次操作是对整个表加锁;存储表的总行数;一个 MYISAM 表有三个文件:索引文件、表结构文件、数据文件;采用菲聚集索引,索引文件的数据域存储指向数据文件的指针。辅索引与主索引基本一致,但是辅索引不用保证唯一性。InnoDb:支持 ACID 的事务,支持事务的四种隔离级别;支持行级锁及外键约束:因此可以支持写并发;不存储总行数:一个 InnoDb 引擎存储在一个文件空间(共享表空间,表大小不受操作系统控制,一个表可能分布
2021-11-01 08:33:20 151
原创 Redis适用场景
1、会话缓存(Session Cache)最常用的一种使用 Redis 的情景是会话缓存(session cache)。用 Redis 缓存会话比其他存储(如 Memcached)的优势在于:Redis 提供持久化。当维护一个不是严格要求一致性的缓存时,如果用户的购物车信息全部丢失,大部分人都会不高兴的,现在,他们还会这样吗? 幸运的是,随着 Redis 这些年的改进,很容易找到怎么恰当的使用 Redis 来缓存会话的文档。甚至广为人知的商业平台Magento 也提供 Redis 的插件。2、
2021-10-30 09:21:22 109
原创 什么是Redis
Redis 是完全开源免费的,遵守 BSD 协议,是一个高性能的 key-value 数据库。Redis 与其他 key - value 缓存产品有以下三个特点:Redis 支持数据的持久化,可以将内存中的数据保存在磁盘中,重启的时候可以再次加载进行使用。Redis 不仅仅支持简单的 key-value 类型的数据,同时还提供 list,set,zset,hash 等数据结构的存储。Redis 支持数据的备份,即 master-slave 模式的数据备份。Redis 优势性能极高 – Red
2021-10-28 12:55:16 69
原创 memcached 与 redis 的区别
1、Redis 不仅仅支持简单的 k/v 类型的数据,同时还提供 list,set,zset,hash等数据结构的存储。而 memcache 只支持简单数据类型,需要客户端自己处理复杂对象2、Redis 支持数据的持久化,可以将内存中的数据保持在磁盘中,重启的时候可以再次加载进行使用(PS:持久化在 rdb、aof)。3、由于 Memcache 没有持久化机制,因此宕机所有缓存数据失效。Redis 配置为持久化,宕机重启后,将自动加载宕机时刻的数据到缓存系统中。具有更好的灾备机制。4、Mem
2021-10-27 13:04:28 83
原创 如何实现集群中的 session 共享存储
Session 是运行在一台服务器上的,所有的访问都会到达我们的唯一服务器上,这样我们可以根据客户端传来的 sessionID,来获取 session,或在对应 Session 不存在的情况下(session 生命周期到了/用户第一次登录),创建一个新的 Session;但是,如果我们在集群环境下,假设我们有两台服务器 A,B,用户的请求会由Nginx 服务器进行转发(别的方案也是同理),用户登录时,Nginx 将请求转发至服务器 A 上,A 创建了新的 session,并将 SessionID
2021-10-26 13:07:17 203
原创 memcached 如何处理容错的
不处理! 在 memcached 节点失效的情况下,集群没有必要做任何容错处理。如果发生了节点失效,应对的措施完全取决于用户。节点失效时,下面列出几种方案供您选择: 忽略它! 在失效节点被恢复或替换之前,还有很多其他节点可以应对节点失效带来的影响。 把失效的节点从节点列表中移除。做这个操作千万要小心!在默认情况下(余数式哈希算法),客户端添加或移除节点,会导致所有的缓存数据不可用!因为哈希参照的节点列表变化了,大部分 key 会因为哈希值的改变而被映射到(与原来)不同的节点上。 启动
2021-10-25 13:02:02 107
原创 Memcached 是什么
Memcached 是一个开源的,高性能的内存绶存软件,从名称上看 Mem 就是内存的意思,而 Cache 就是缓存的意思。Memcached 的作用:通过在事先规划好的内存空间中临时绶存数据库中的各类数据,以达到减少业务对数据库的直接高并发访问,从而达到提升数据库的访问性能,加速网站集群动态应用服务的能力。memcached 服务在企业集群架构中有哪些应用场景?一、作为数据库的前端缓存应用a、完整缓存(易),静态缓存例如:商品分类(京东),以及商品信息,可事先放在内存里,然后再对外提供数据
2021-10-24 09:07:37 270
原创 Elasticsearch 在部署时,对 Linux 的设置有哪些优化方法
1、64 GB 内存的机器是非常理想的, 但是 32 GB 和 16 GB 机器也是很常见的。少于 8 GB 会适得其反。2、如果你要在更快的 CPUs 和更多的核心之间选择,选择更多的核心更好。多个内核提供的额外并发远胜过稍微快一点点的时钟频率。3、如果你负担得起 SSD,它将远远超出任何旋转介质。 基于 SSD 的节点,查询和索引性能都有提升。如果你负担得起,SSD 是一个好的选择。4、即使数据中心们近在咫尺,也要避免集群跨越多个数据中心。绝对要避免集群跨越大的地理距离。5、请确保运行你
2021-10-23 15:09:38 162
原创 elasticsearch 是如何实现 master 选举的
1、只有候选主节点(master:true)的节点才能成为主节点。2、最小主节点数(min_master_nodes)的目的是防止脑裂。这个我看了各种网上分析的版本和源码分析的书籍,云里雾里。核对了一下代码,核心入口为 findMaster,选择主节点成功返回对应 Master,否则返回 null。选举流程大致描述如下:第一步:确认候选主节点数达标,elasticsearch.yml 设置的值discovery.zen.minimum_master_nodes;第二步:比较:先判定是否具备 m
2021-10-22 08:36:55 287
原创 Dubbo Monitor 实现原理
Consumer 端在发起调用之前会先走 filter 链;provider 端在接收到请求时也是先走 filter 链,然后才进行真正的业务逻辑处理。默认情况下,在 consumer 和 provider 的 filter 链中都会有 Monitorfilter。1、MonitorFilter 向 DubboMonitor 发送数据2、DubboMonitor 将数据进行聚合后(默认聚合 1min 中的统计数据)暂存到ConcurrentMap<Statistics, AtomicRefe
2021-10-21 08:36:34 166
原创 Dubbo 的整体架构设计
接口服务层(Service):该层与业务逻辑相关,根据 provider 和 consumer 的业务设计对应的接口和实现配置层(Config):对外配置接口,以 ServiceConfig 和 ReferenceConfig 为中心服务代理层(Proxy):服务接口透明代理,生成服务的客户端 Stub 和 服务端的 Skeleton,以 ServiceProxy 为中心,扩展接口为 ProxyFactory服务注册层(Registry):封装服务地址的注册和发现,以服务 URL 为中心,扩展
2021-10-20 08:31:05 105
原创 Zookeeper 的典型应用场景
Zookeeper 是一个典型的发布/订阅模式的分布式数据管理与协调框架,开发人员可以使用它来进行分布式数据的发布和订阅。通过对 Zookeeper 中丰富的数据节点进行交叉使用,配合 Watcher 事件通知机制,可以非常方便的构建一系列分布式应用中年都会涉及的核心功能,如:1、数据发布/订阅2、负载均衡3、命名服务4、分布式协调/通知5、集群管理6、Master 选举7、分布式锁8、分布式队列1. 数据发布/订阅介绍数据发布/订阅系统,即所谓的配置中心,顾名思义就是发布者发布
2021-10-19 08:16:40 234
原创 数据的同步
整个集群完成 Leader 选举之后,Learner(Follower 和 Observer 的统称)回向Leader 服务器进行注册。当 Learner 服务器想 Leader 服务器完成注册后,进入数据同步环节。数据同步流程:(均以消息传递的方式进行)Learner 向 Learder 注册数据同步同步确认Zookeeper 的数据同步通常分为四类:1、直接差异化同步(DIFF 同步)2、先回滚再差异化同步(TRUNC+DIFF 同步)3、仅回滚同步(TRUNC 同步)4、全量同步
2021-10-18 11:03:24 118
原创 服务端处理 Watcher 实现
1、服务端接收 Watcher 并存储接收到客户端请求,处理请求判断是否需要注册 Watcher,需要的话将数据节点的节点路径和 ServerCnxn(ServerCnxn 代表一个客户端和服务端的连接,实现了 Watcher 的 process 接口,此时可以看成一个 Watcher 对象)存储在WatcherManager 的 WatchTable 和 watch2Paths 中去。2、Watcher 触发以服务端接收到 setData() 事务请求触发 NodeDataChanged 事件
2021-10-18 11:02:07 169
原创 Zookeeper Watcher 机制
Zookeeper 允许客户端向服务端的某个 Znode 注册一个 Watcher 监听,当服务端的一些指定事件触发了这个 Watcher,服务端会向指定客户端发送一个事件通知来实现分布式的通知功能,然后客户端根据 Watcher 通知状态和事件类型做出业务上的改变。工作机制:1、客户端注册 watcher2、服务端处理 watcher3、客户端回调 watcherWatcher 特性总结:1、一次性无论是服务端还是客户端,一旦一个 Watcher 被触发,Zookeeper 都会将其从
2021-10-16 12:19:41 211
原创 Mapper 的几种编写方式
第一种:接口实现类继承 SqlSessionDaoSupport:使用此种方法需要编写mapper 接口,mapper 接口实现类、mapper.xml 文件。1、在 sqlMapConfig.xml 中配置 mapper.xml 的位置<mappers><mapper resource="mapper.xml 文件的地址" /><mapper resource="mapper.xml 文件的地址" /></mappers>1、定义 mapper
2021-10-15 13:13:52 2962
原创 一对一、一对多的关联查询
<mapper namespace="com.lcb.mapping.userMapper"><!--association 一对一关联查询 --><select id="getClass" parameterType="int"resultMap="ClassesResultMap">select * from class c,teacher t where c.teacher_id=t.t_id andc.c_id=#{id}</select>
2021-10-14 13:29:16 339
原创 java如何执行批量插入
<insert id=”insertname”>insert into names (name) values (#{value})</insert>然后在 java 代码中像下面这样执行批处理插入:list < string > names = new arraylist();names.add(“fred”);names.add(“barney”);names.add(“betty”);names.add(“wilma”);// 注意这里 execu
2021-10-13 13:21:29 454
原创 当实体类中的属性名和表中的字段名不一样 ,怎么办
第 1 种: 通过在查询的 sql 语句中定义字段名的别名,让字段名的别名和实体类的属性名一致<select id=”selectorder” parametertype=”int” resultetype=”me.gacl.domain.order”>select order_id id, order_no orderno ,order_price price formorders where order_id=#{id};</select>第 2 种: 通过<
2021-10-12 13:15:17 1181
原创 读取一个文件在控制台打印
File file = new File("E:\\课件\\二期课件\\Java\\T09src\\JRadioButtonDemo.java");long file_length= file.length();try {//输入流FileInputStream input = new FileInputStream(file);byte b_data [] = new byte[(int)file_length];input.read(b_data);System.out.println(
2021-10-11 13:15:00 100
原创 每天12点打印hello world
public static void main(String[] args) {Date date = new Date();System.out.println(date.getHours());while (true) {while (date.getHours() == 12) {if (date.getMinutes() == 0) {if (date.getSeconds() == 0) {System.out.println("hello world!");}}}}}
2021-10-11 13:13:45 62
原创 截取字符串的函数
//但是要保证汉字不被截半个,如“我 ABC”4,应该截为“我 AB”,输入“我 ABC汉 DEF”,6 应该输出为“我 ABC”而不是“我 ABC+汉的半个”。public static void main(String[] args) throws Exception{String str = "我 a 爱中华 abc def';String str = "我 ABC 汉";int num = trimGBK(str.getBytes("GBK"),5);System.out.printl
2021-10-09 08:35:32 63
原创 session用法
Session 用来保存每一个用户的专有信息,比如像用户登录验证、购物车。1.ibatis 中的#与$的区别1.#是把传入的数据当作字符串,如#field#传入的是 id,则 sql 语句生成是这样,order by "id",这当然会报错..2.$传入的数据直接生成在 sql 里,如#field#传入的是 id,则 sql 语句生成是这样,order by id, 这就对了.3.#方式能够很大程度防止 sql 注入.4.$方式无法方式 sql 注入.5.$方式一般用于传入数据库对象.例如传
2021-10-09 08:33:15 48
原创 将奇数有序的放在偶数前面
int[] n = {1,2,5,6,4,7,10,9,3,8};int m = n[0];int j = n.length -1;int i= 0;while(i<j){while(i<j && n[j]%2==0){j--;}if(j>=i){n[i++] = n[j];}while(i<j && n[i]%2!=0){i++;}if(i<=j){n[j--] = n[i];}}n[i] = m;for(int
2021-10-09 08:32:10 51
原创 把二叉树从小到大遍历
public class Node {public int value;public Node left;public Node right;public void store(int value){if(value<this.value){if(left == null){left = new Node();left.value=value;}else{left.store(value);}}else if(value>this.value){if(r.
2021-10-09 08:29:55 396
原创 JVM相关
1.内存模型以及分区,需要详细到每个区放什么?JVM 分为堆区和栈区,还有方法区,初始化的对象放在堆里面,引用放在栈里面,class 类信息常量池(static 常量和 static 变量)等放在方法区a、方法区:主要是存储类信息,常量池(static 常量和 static 变量),编译后的代码(字节码)等数b、堆:初始化的对象,成员变量 (那种非 static 的变量),所有的对象实例和数组都要在堆上分配c、栈:栈的结构是栈帧组成的,调用一个方法就压入一帧,帧上面存储局部变量表,操作数栈,方法出口
2021-10-09 08:27:03 50
原创 介绍几种 WEB 服务器,问 Tomcat 里面的文件组成
IIS、apache、Tomcatbin:启动,关闭 Tomcat 的命令.common/lib:网络编程的 jar 文件.conf:配置文件.logs:日志文件.server:自带的 web 应用(三个).第 144 页 共 168 页shared:所有 web 应用都可以访问的内容.temp:临时.webapps:默认站点文件夹.work:jsp 生成的类.Tomcat 是一个开放源代码、运行 servlet 和 JSP Web 应用软件的基于 Java 的 Web应用软件容器。T
2021-10-08 08:41:36 57
原创 zookeeper
1.ZooKeeper 是什么?ZooKeeper 是一个开放源码的分布式协调服务,它是集群的管理者,监视着集群中各个节点的状态根据节点提交的反馈进行下一步合理操作。最终,将简单易用的接口和性能高效、功能稳定的系统提供给用户。分布式应用程序可以基于 Zookeeper 实现诸如数据发布/订阅、负载均衡、命名服务、分布式协调/通知、集群管理、Master 选举、分布式锁和分布式队列等功能。2.ZooKeeper 提供了什么?a、文件系统b、通知机制3.Zookeeper 文件系统Zookeep
2021-10-08 08:23:49 38
原创 SpringBoot框架
1.什么是 Spring Boot?多年来,随着新功能的增加,spring 变得越来越复杂。只需访问 https://spring.io/projects页面,我们就会看到可以在我们的应用程序中使用的所有 Spring 项目的不同功能。如果必须启动一个新的 Spring 项目,我们必须添加构建路径或添加 Maven依赖关系,配置应用程序服务器,添加 spring 配置。因此,开始一个新的 spring 项目需要很多努力,因为我们现在必须从头开始做所有事情。Spring Boot 是解决这个问题的
2021-10-08 08:19:56 97
原创 Redis存储系统
1.什么是Redis?Remote Dictionary Server(Redis)是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key- Value 数据库,并提供多种语言的API。它通常被称为数据结构服务器,因为值(value)可以是 字符串(String), 哈希(Map), 列表(list), 集合(sets) 和 有序集合(sorted sets)等类型。2.Redis的特点什么是?a、支持多种数据结构,如 string(字符串)、 list(双向链表)、d
2021-10-08 08:14:46 58
原创 Linux系统
1.绝对路径用什么符号表示?当前目录、上层目录用什么表示?主目录用什么表示? 切换目录用什么命令?a、绝对路径:如/etc/init.db、当前目录和上层目录:./ ../c、主目录:~/d、切换目录:cd2.怎么查看当前进程?怎么执行退出?怎么查看当前路径?a、查看当前进程:psb、执行退出:exitc、查看当前路径:pwd3.怎么清屏?怎么退出当前命令?a、清屏:clearb、退出当前命令:ctrl+c 彻底退出4.查看文件内容有哪些命令可以使用?a、vi 文件名 #编辑方式查
2021-09-30 13:10:46 44
原创 shiro安全框架
1.shiro可以完成哪些工作?shiro可以帮助我们完成:认证、授权、加密、会话管理、与Web集成、缓存等2.Apache Shiro 的三大核心组件a、Subject :当前用户的操作b、SecurityManager:用于管理所有的Subjectc、Realms:用于进行权限信息的验证3.shiro有哪些组件?a、Authentication:身份认证/登录,验证用户是不是拥有相应的身份;b、Authorization:授权,即权限验证,验证某个已认证的用户是否拥有某个权限;即判断用户
2021-09-29 13:02:57 57
原创 Mybatis框架
1.什么是 MyBatis?MyBatis 是一个可以自定义 SQL、存储过程和高级映射的持久层框架。2.Mybatis 动态 sql 是做什么的?都有哪些动态 sql?能简述一下动态 sql 的执行原理不?a|set|foreach|if|choose|when|otherwise|bind。c、其执行原理为,使用 OGNL 从 sql 参数对象中计算表达式的值,根据表达式的值动态拼接 sql,以此来完成动态 sql 的能。3.#{}和${}的区别是什么?a、#{}是预编译处理,${}是字符串
2021-09-28 13:06:05 76
原创 JDBC技术
1.什么是JDBC,在上面时候会用到它?JDBC的全称是Java DataBase Connection,也就是Java数据库连接,我们可以用它来操作关系型数据库。JDBC接口及相关类在java.sql包和javax.sql包里。我们可以用它来连接数据库,执行SQL查询,存储过程,并处理返回的结果。JDBC接口让Java程序和JDBC驱动实现了松耦合,使得切换不同的数据库变得更加简单。2.JDBC访问数据库的基本步骤是什么?a、加载(注册)数据库驱动(到JVM)b、建立(获取)数据库连接。c、
2021-09-27 13:13:41 73
原创 JavaScript语言和jQuery技术
1.JS中如何将页面重定向到另一个页面?a、使用 location.href:window.location.href =“https://www.baidu.com/”b、使用location.replace:window.location.replace(" https://www.baidu.com/;");2.undefined,null 和 undeclared 有什么区别?a、null表示"没有对象",即该处不应该有值,转为数值时为0。典型用法是:作为函数的参数,表示该函数的参数不是对象
2021-09-26 12:53:11 69
原创 Spring框架
1.什么是spring框架?spring是一个开放源代码的设计层面框架,它解决的是业务逻辑层和其他各层的松耦合问题,是一个分层的javaEE一站式轻量级开源框架. 2.spring的作用?方便解耦,简化开发,AOP编程支持,声明式事务支持,集成Junit更加方便的进行分层测试,方便集成各种优秀框架. 3.什么是IOC?控制反转,把创建对象的权利交给spring4.什么是DI?属性的依赖注入,spring在通过IOC创建对象的时候,如果对象还有属性,就一并给赋值进去DI是在IOC的基础上进行对象的
2021-09-25 13:52:35 92
原创 redis的命令
一:string1、String k-v结构 单个key最大能存512MB,约等于多少文字?增(修改--直接覆盖掉):set key value 例子:set adminName 'zhangsan'查:get key 例子:get adminName查询所有的键(key):keys * 例子:keys *删除单个的(key):del key 例子:del adminNamestring的特有命令:批量增:mset key1 value key2 value批量查:mge.
2021-09-24 08:18:27 44
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人