- 博客(90)
- 收藏
- 关注
原创 Java Fork/Join 框架
假如我们需要做一个比较大的任务,我们可以把这个任务分割为若干互不依赖的子任务,为了减少线程间的竞争,于是把这些子任务分别放到不同的队列里,并为每个队列创建一个单独的线程来执行队列里的任务,线程和队列一一对应,比如A线程负责处理A队列里的任务。存在执行2个任务的子线程,这里要讲成存在A,B两个个WorkQueue在执行任务,A的任务执行完了,B的任务没执行完,那么A的WorkQueue就从B的WorkQueue的ForkJoinTask数组中拿走了一部分尾部的任务来执行,可以合理的提高运行和计算效率。
2023-06-21 08:35:15
482
原创 详解java定时任务
为什么这么说,原因如下。但是由于每一个Timer对象对应的是单个后台线程,用于顺序执行所有的计时器任务,一般情况下我们的线程任务执行所消耗的时间应该非常短,但是由于特殊情况导致某个定时器任务执行的时间太长,那么他就会“独占”计时器的任务执行线程,其后的所有线程都必须等待它执行完,这就会延迟后续任务的执行,使这些任务堆积在一起,具体情况我们后面分析。我们可以这样理解Timer是一种定时器工具,用来在一个后台线程计划执行指定任务,而TimerTask一个抽象类,它的子类代表一个可以被Timer计划的任务。
2023-06-21 08:34:12
1274
原创 Java并发编程:Lock
如果锁具备可重入性,则称作为可重入锁。上述代码中的两个方法method1和method2都用synchronized修饰了,假如某一时刻,线程A执行到了method1,此时线程A获取了这个对象的锁,而由于method2也是synchronized方法,假如synchronized不具备可重入性,此时线程A需要重新申请锁。tryLock()方法是有返回值的,它表示用来尝试获取锁,如果获取成功,则返回true,如果获取失败(即锁已被其他线程获取),则返回false,也就说这个方法无论如何都会立即返回。
2023-06-21 08:33:11
959
原创 java集合框架综述
如果使用自定义的类来作为TreeMap中的key值,且想让TreeMap能够良好的工作,则必须重写自定义类中的equals()方法,TreeMap中判断相等的标准是:两个key通过equals()方法返回为true,并且通过compareTo()方法比较应该返回为0。说明:程序中,book集合两次添加的字符串对象明显不是一个对象(程序通过new关键字来创建字符串对象),当使用==运算符判断返回false,使用equals方法比较返回true,所以不能添加到Set集合中,最后只能输出一个元素。
2023-06-21 08:29:58
295
原创 JAVA中PRIORITYQUEUE详解
优先队列的作用是能保证每次取出的元素都是队列中权值最小的(Java的优先队列每次取最小元素,C++的优先队列每次取最大元素)。上述代码首先记录0下标处的元素,并用最后一个元素替换0下标位置的元素,之后调用siftDown()方法对堆进行调整,最后返回原来0下标处的那个元素(也就是最小的那个元素)。element()和peek()的语义完全相同,都是获取但不删除队首元素,也就是队列中权值最小的那个元素,二者唯一的区别是当方法失败时前者抛出异常,后者返回null。//0下标处的那个元素就是最小的那个。
2023-06-12 09:23:37
645
原创 数据库分库分表思路
在字段很多的情况下(例如一个大表有100多个字段),通过"大表拆小表",更便于开发与维护,也能避免跨页问题,MySQL底层是通过数据页存储的,一条记录占用空间过大会导致跨页,造成额外的性能开销。但是如果取得页数很大,情况则变得复杂很多,因为各分片节点中的数据可能是随机的,为了排序的准确性,需要将所有节点的前N页数据都排序好做合并,最后再进行整体的排序,这样的操作时很耗费CPU和内存资源的,所以页数越大,系统的性能也会越差。表中ID增长的步长是库的数量,起始值依次错开,这样能将ID的生成散列到各个数据库上。
2023-06-12 09:22:33
1305
原创 海量数据库查询
在以下的文章中,我将以“办公自动化”系统为例,探讨如何在有着1000万条数据的MS SQL SERVER数据库中实现快速的数据提取和数据分页。以下代码说明了我们实例中数据库的“红头文件”一表的部分数据结构:CREATE TABLE [dbo].[TGongwen] ( --TGongwen是红头文件表名[Gid] [int] IDENTITY (1, 1) NOT NULL ,–本表的id号,也是主键[title] [varchar] (80) COLLATE Chinese_PRC_CI_A
2023-06-12 09:20:44
1034
原创 MySQL中的索引详讲
组合索引就是遵从了最左前缀,利用索引中最左边的列集来匹配行,这样的列集称为最左前缀,不明白没关系,举几个例子就明白了,例如,这里由id、name和age3个字段构成的索引,索引行中就按id/name/age的顺序存放,索引可以索引下面字段组合(id,name,age)、(id,name)或者(id)。注意,学习这张,很重要的一点就是必须先得知道索引是什么,索引是干嘛的,有什么作用,为什么要索引等等,如果不知道,就重复往上面看看写的文字,好好理解一下。可以看到,通过id查询时,会使用唯一索引。
2023-06-09 15:17:22
718
1
原创 MySQL的Grant命令
我遇到的是SELECT command denied to user ‘my’@‘%’ for table ‘proc’,是调用存储过程的时候出现,原以为只要把指定的数据库授权就行了,什么存储过程、函数等都不用再管了,谁知道也要把数据库mysql的proc表授权。在user表启用的任何权限均是全局权限,并适用于所有数据库。一、grant 普通数据用户,查询、插入、更新、删除 数据库中所有表数据的权利。tables_priv表指定表级权限,在这里指定的一个权限适用于一个表的所有列。这个特性一般用不到。
2023-06-07 09:02:57
2076
原创 MYSQL(三)
有了索引之后(必须是在ID这一列上建立的索引),即可在索引中查找。索引是对数据库表中一个或多个列(例如,employee 表的姓名 (name) 列)的值进行排序的结构。添加唯一性索引的数据列可以为空,但是只要存在数据值,就必须是唯一的。在数据库关系图中为表定义一个主键将自动创建主键索引,主键索引是唯一索引的特殊类型。数据库表中添加索引后能够让查询数据库速度飞快,但前提必须是正确的使用索引来查询,如果以错误的方式使用,则即使建立索引也会不奏效。特别的:当or条件中有未建立索引的列才失效,以下会走索引。
2023-06-07 09:02:13
419
原创 mysql
视图view视图是一个虚拟表,其内容由查询定义。同真实的表一样,视图包含一系列带有名称的列和行数据。但是,视图并不在数据库中以存储的数据值集形式存在。行和列数据来自由定义视图的查询所引用的表,并且在引用视图时动态生成。对其中所引用的基础表来说,视图的作用类似于筛选。定义视图的筛选可以来自当前或其它数据库的一个或多个表,或者其它视图。通过视图进行查询没有任何限制,通过它们进行数据修改时的限制也很少。视图是存储在数据库中的查询的SQL 语句,它主要出于两种原因:安全原因, 视图可以隐藏一些数据。
2023-06-01 14:54:50
404
原创 MySQL索引
目录1.介绍2.索引的原理2.1索引原理2.2索引的影响2.3磁盘IO与预读3.索引的数据结构4.聚集索引与辅助索引4.1聚集索引4.2辅助索引5.MySQL索引管理5.1功能5.2MySQL常用的索引5.3索引的两大类型hash与btree5.4创建/删除索引的语法6.测试索引6.1准备6.2在没有索引的前提下测试查询速度6.3在表中已经存在大量数据的前提下,为某个字段段建立索引,建立速度会很慢6.4在索引建立完毕后,以该字段为查询条件时,查询速度提升明显6.5总结
2023-06-01 10:00:00
701
1
原创 MySQL
数据库(Database)是按照数据结构来组织、存储和管理数据的仓库,它产生于距今六十多年前,随着信息技术和市场的发展,特别是二十世纪九十年代以后,数据管理不再仅仅是存储和管理数据,而转变成用户所需要的各种数据管理的方式。select num,nid,count(*),sum(score),max(score),min(score) from 表 group by num,nid。注:以上两个链接有完整的安装方式,撸主也是参考他的安装的,安装完以后mysql.server start启动mysql服务。
2023-05-31 19:25:45
825
原创 Java内存模型
Java内存模型中规定了所有的变量都存储在主内存中,每条线程还有自己的工作内存(可以与前面将的处理器的高速缓存类比),线程的工作内存中保存了该线程使用到的变量到主内存副本拷贝,线程对变量的所有操作(读取、赋值)都必须在工作内存中进行,而不能直接读写主内存中的变量。指令级并行的重排序。store(存储):作用于工作内存的变量,把工作内存中的一个变量的值传送到主内存中,以便随后的write的操作。write(写入):作用于主内存的变量,它把store操作从工作内存中一个变量的值传送到主内存的变量中。
2023-05-30 14:45:07
600
原创 JAVA的反射机制(二)
public Field[] getFields() 返回一个包含某些 Field 对象的数组,这些对象反映此 Class 对象所表示的类或接口的所有可访问公共字段。1、调用类的Class对象的newInstance方法,该方法会调用对象的默认构造器,如果没有默认构造器,会调用失败.在使用Java的反射功能时,基本首先都要获取类的Class对象,再通过Class对象获取其他的对象。返回 Field 对象的一个数组,这些对象反映此 Class 对象所表示的类或接口所声明的所有字段。
2023-05-30 08:54:13
674
原创 Java反射机制深入详解
以上就是反射机制的简单的使用,显然学过spring的朋友一定明白了,为什么可以通过配置文件就可以让我们获得指定的方法和变量,在我们创建对象的时候都是通过传进string实现的,就好像你需要什么,我们去为你生产,还有我们一直在用Object,这就说明java语言的动态特性,依赖性大大的降低了。int.class和Integer.class不是同一份字节码,Integer.TYPE,TYPE代表包装类对应的基本类的字节码 int.class==Integer.TYPE。//比较字节码a和cd也没法比。
2023-05-22 15:28:23
1063
原创 Java的运行原理
Java虚拟机读取Main类的CLASS文件,生产对应的java.lang.Class类的实例,读取其中的类型信息,比如修饰符 private,public,static,另外变量 size,name,pwd,User(User即为一个引用)共同构成了这个类的常量池。1)验证:确定类型符合java语言的语义,比如:final类不能有子类,final方法不能被覆盖,确保在类型和超类型之间没有不兼容的方法声明(比如两个方法拥有同样的名字,参数完全相同,但返回类型不同)。现有一公文发出,要全国执行,该当如何?
2023-05-22 15:24:26
685
2
原创 深入理解Java类加载
如果一个类加载器收到了类加载的请求,它首先不会自己去尝试加载这个类,而是把这个请求委派给父类加载器去完成,每一个层次的类加载器都是如此,因此所有的加载请求最终都应该传送到顶层的启动类加载器中,只有当父加载器反馈自己无法完成这个加载请求(它的搜索范围中没有找到所需的类)时,子加载器才会尝试自己去加载。第 2 步,JDK 的 loadCalss() 方法在所有父类加载器无法加载的时候,会调用本身的 findClass() 方法来进行类加载,因此我们只需重写 findClass() 方法找到类的二进制数据即可。
2023-05-17 16:03:28
211
原创 JAVA的StringBuffer类
StringBuffer类和String一样,也用来代表字符串,只是由于StringBuffer的内部实现方式和String不同,所以StringBuffer在进行字符串处理时,不生成新的对象,在内存使用上要优于String类。该示例代码的作用是在对象sb的索引值4的位置插入false值,形成新的字符串,则执行以后对象sb的值是”TestfalseString”。该代码的作用删除字符串对象sb中索引值为1的字符,也就是删除第二个字符,剩余的内容组成一个新的字符串。则对象sb的值是”TString”。
2023-05-17 16:00:01
563
原创 【五一创作】Java安全之JDBC Attacks
在这些拦截器的实现类中,可以修改或增强语句的某些子级所做的处理,例如自动检查 memcached 服务器中的查询数据、重写慢速查询、记录有关语句执行的信息,或将请求路由到远程服务器。在mysql-connector-java-8.0.19.jar!/com/mysql/cj/conf/ConnectionUrlParser#processKeyValuePattern循环解析Properties并添加到kvMap中,之后赋值给ConnectionUrlParser.parsedProperties字段。
2023-05-04 14:49:11
465
原创 SpringBoot快速操作Redis数据
SpringBoot快速操作Redis数据在SpringBoot框架中提供了spring-boot-starter-data-redis的依赖组件进行操作Redis服务,当引入了该组件之后,只需要配置Redis的配置即可进行链接Redis服务并且进行操作Redis服务数据。针对于不同的版本有了不同的底层客户端的支持的底层客户端框架是不同的:目前常见的客户端为Jedis和Lettuce。低版本SpringBoot支持的JedisJedis是很常用的Redis的Java 实现的客户端。
2023-04-26 15:09:00
2122
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人