1.Java JDK6学习笔记编辑推荐
2.笔记06-Axure RP、笔记PDManer、源码源码DBeaver的分析简单使用
3.sharding-jdbc分片策略(行分片策略踩坑笔记)
4.Pentaho Data Integration[kettle]笔记(1)-mysql/sqlite间数据迁移
5.怎样学习编程
Java JDK6学习笔记编辑推荐
如果你正在寻找一本针对Java JDK6的深入学习资料,《Java JDK6学习笔记》无疑是笔记值得推荐的一本。作为市场上首屈一指的源码源码Java专业书籍,它专为JDK6用户精心打造,分析岚府溯源码燕窝加盟连锁旨在帮助你全面理解并掌握这一版本的笔记技术特性。 本书的源码源码独特之处在于,作者林信良倾情分享了他个人的分析Java学习经验,这些心得不仅包含了编程技巧,笔记更是源码源码对学习路径和策略的独到见解,对于初学者和进阶者来说都极具价值。分析 书中新增了JDBC(Java Database Connectivity)的笔记介绍,使读者能够快速掌握如何在Java中连接和操作数据库,源码源码这对于数据处理和应用开发至关重要。分析此外,JDK6的新功能也是本书的重点,它涵盖了输入/输出、线程管理、反射等多个核心主题,帮助读者紧跟Java技术的发展步伐。 无论你是在企业应用开发、Web开发,dll攻击源码还是在云计算、大数据等领域,这本《Java JDK6学习笔记》都能为你提供有力的技术支持,帮助你提升Java编程技能,解决实际项目中的问题。因此,如果你对Java JDK6感兴趣,这本书无疑是你的理想选择。扩展资料
《JavaJDK6学习笔记》是作者良葛格本人近几年来学习Java的心得笔记,结构按照作者的学习脉络依次展开,从什么是Java、如何配置Java开发环境、基本的Java语法到程序流程控制、管理类文件、异常处理、枚举类型、泛型、J2SE中标准的API等均进行了详细介绍。本书还安排了一个“文字编辑器”的专题制作。此外,JavaSE6的新功能,对Javalang等套件的spring bean 源码功能加强,以及JDBC4.0、ApacheDerby纯Java数据库等新增功能,本书也都予以介绍。笔记-Axure RP、PDManer、DBeaver的简单使用
编程方法主要分为面向对象和面向过程,尽管常提及面向对象,但JavaScript以原型链构建对象,与Java等语言的封装、继承和多态有所不同。编程实际是利用宿主环境提供的数据处理API,通过函数等语法解决问题,而非严格意义上的面向对象。
以Axure RP为例,它是一款便捷的产品原型设计工具,通过拖拽功能快速生成网页原型,其丰富的元件库扩展了设计可能性。作为Axure Software Solution的明星产品,Axure RP支持团队协作和版本控制,助力快速原型开发。
PDManer作为一款开源的数据库建模工具,相较于PowerDesigner,消息服务 源码其简洁易用的界面和直观操作使得入门门槛降低。它提供了元数建模功能,适合数据库管理员和开发者使用。
最后,DBeaver作为一款通用的数据库管理工具,支持任何拥有JDBC驱动的数据库,对开发人员和DBA来说是一个经济高效的解决方案。它的社区版免费且功能全面,是替代Navicat的理想选择。
sharding-jdbc分片策略(行分片策略踩坑笔记)
sharding-jdbc行分片策略默认不支持按分片键的范围查询
在开发时,对主键id做了范围查询。结果遇到如下报错:
Errorqueryingdatabase.Cause:java.lang.IllegalStateException:Inlinestrategycannotsupportrangesharding.原因:使用行分片策略原先的sharding-jdbc的分片策略配置是:
sharding:binding-tables:tableNametables:tableName:actual-data-nodes:ds0.tableName_$->{ 0..1}table-strategy:inline:sharding-column:idalgorithm-expression:tableName_$->{ id%2}上面的配置,使用了主键id作为单分片键,行表达式的分片策略。该分片策略只支持=和in操作符,并不支持范围查询。如果你想要使用范围查询,你需要配置开启标准策略。
解决方案:使用标准分片策略对应配置:
sharding:binding-tables:tableNametables:tableName:table-strategy:standard:#用于单分片键的标准分片场景sharding-column:id#分片列名称precise-algorithm-class-name:com.project.com.PreciseModuloAlgorithm#精确分片算法类名称,用于=和IN。。该类需实现PreciseShardingAlgorithm接口并提供无参数的spring源码 书构造器range-algorithm-class-name:com.project.com.component.RangeModuloAlgorithm#范围分片算法类名称,用于BETWEEN,可选。该类需实现RangeShardingAlgorithm接口并提供无参数的构造器问题具体可参考,官方github上的issues提问:/manual/sharding-jdbc/configuration/config-yaml/
对于具体的分片算法类,可参考官方github上的example:/apache/shardingsphere-example
分片算法类需要自己根据实际场景进行开发,这里贴出官方example里的实现类:
publicfinalclassPreciseModuloAlgorithmimplementsPreciseShardingAlgorithm<Integer>{ @OverridepublicStringdoSharding(finalCollection<String>availableTargetNames,finalPreciseShardingValue<Integer>shardingValue){ for(Stringeach:availableTargetNames){ if(each.endsWith(shardingValue.getValue()%+"")){ returneach;}}thrownewUnsupportedOperationException();}}publicfinalclassRangeModuloAlgorithmimplementsRangeShardingAlgorithm<Integer>{ @OverridepublicCollection<String>doSharding(finalCollection<String>availableTargetNames,finalRangeShardingValue<Integer>shardingValue){ Collection<String>result=newLinkedHashSet<>(availableTargetNames.size());intminValue=shardingValue.getValueRange().hasLowerBound()?shardingValue.getValueRange().lowerEndpoint():Integer.MIN_VALUE;intmaxValue=shardingValue.getValueRange().hasUpperBound()?shardingValue.getValueRange().upperEndpoint():Integer.MAX_VALUE;//最大值减最小值,得到差longrange=BigInteger.valueOf(maxValue).subtract(BigInteger.valueOf(minValue)).longValue();//最小值得绝对值除的余数intbegin=Math.abs(minValue)%;//超过9直接返回可用的表名,这里的9是,自己的分片策略值//假设我的分片策略是:对id除以,取余数if(range>9){ returnavailableTargetNames;}//如果差在分片策略内的,就直接取余数,得到对应的表名for(inti=begin;i<=range;i+=1){ for(Stringeach:availableTargetNames){ if(each.endsWith(i+"")){ result.add(each);}}}returnresult;}}sharding-jdbc分片策略分片策略包含分片键和分片算法,由于分片算法的独立性,将其独立抽离。真正可用于分片操作的是分片键+分片算法,也就是分片策略。目前提供5种分片策略。
标准分片策略对应StandardShardingStrategy。提供对SQL语句中的=,>,<,>=,<=,IN和BETWEENAND的分片操作支持。StandardShardingStrategy只支持单分片键,提供PreciseShardingAlgorithm和RangeShardingAlgorithm两个分片算法。PreciseShardingAlgorithm是必选的,用于处理=和IN的分片。RangeShardingAlgorithm是可选的,用于处理BETWEENAND,>,<,>=,<=分片,如果不配置RangeShardingAlgorithm,SQL中的BETWEENAND将按照全库路由处理。
复合分片策略对应ComplexShardingStrategy。复合分片策略。提供对SQL语句中的=,>,<,>=,<=,IN和BETWEENAND的分片操作支持。ComplexShardingStrategy支持多分片键,由于多分片键之间的关系复杂,因此并未进行过多的封装,而是直接将分片键值组合以及分片操作符透传至分片算法,完全由应用开发者实现,提供最大的灵活度。
行表达式分片策略对应InlineShardingStrategy。使用Groovy的表达式,提供对SQL语句中的=和IN的分片操作支持,只支持单分片键。对于简单的分片算法,可以通过简单的配置使用,从而避免繁琐的Java代码开发,如:t_user_$->{ u_id%8}表示t_user表根据u_id模8,而分成8张表,表名称为t_user_0到t_user_7。
Hint分片策略对应HintShardingStrategy。通过Hint指定分片值而非从SQL中提取分片值的方式进行分片的策略。
不分片策略对应NoneShardingStrategy。不分片的策略。
Pentaho Data Integration[kettle]笔记(1)-mysql/sqlite间数据迁移
为了将sqlite3数据库中表SYL_COURSE_LIST的特定字段数据迁移至MySQL数据库表DST_COURSE_LIST,本文将详细指导操作步骤。首先,需明确两个数据库表的结构:
SYL_COURSE_LIST表结构如下:
CREATE TABLE SYL_COURSE_LIST(
COURSE_NAME CHAR() NOT NULL,
COURSE_DESC CHAR() NOT NULL,
COURSE_USERS CHAR() NOT NULL,
COURSE_URL CHAR() PRIMARY KEY,
COURSE_IMG CHAR() NOT NULL,
COURSE_TYPE CHAR() NOT NULL,
INDATE TIMESTAMP DEFAULT (datetime('now','localtime'))
);
DST_COURSE_LIST表结构如下:
CREATE TABLE `DST_COURSE_LIST` (
`COURSE_NAME` varchar() NOT NULL,
`COURSE_DESC` varchar() NOT NULL,
`COURSE_USERS` varchar() NOT NULL,
`id` int() NOT NULL AUTO_INCREMENT,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT= DEFAULT CHARSET=utf8;
接下来,通过Pentaho Data Integration (Kettle) 实现数据迁移操作,具体步骤如下:
1. 打开Spoon,拖入表输入和表输出步骤至工作区。
2. 配置表输入步骤,选择sqlite3数据库连接信息,确保正确填写URL、驱动类等参数。
3. 配置SQL语句,获取SYL_COURSE_LIST表中指定字段的数据。
4. 配置表输出步骤,连接MySQL数据库,正确输入数据库连接参数。
5. 在表输出步骤中,勾选“指定数据库字段”,并设置流字段与目标字段的映射关系。
6. 为了避免中文乱码,添加编码设置参数,确保数据正确解析。
7. 运行步骤,验证迁移结果。
在实施过程中,可能会遇到数据库连接错误,这是由于MySQL驱动未正确安装或配置。确保下载并安装MySQL JDBC驱动(可以从 dev.mysql.com/downloads... 获取),将文件复制至Kettle的lib目录下,重启Spoon并重新配置数据库连接。
最终,目标表DST_COURSE_LIST应包含迁移后的数据,确保迁移过程顺利进行。
欲了解更多原创内容,欢迎访问金笔头博客。
怎样学习编程
1、首先,要把 Java SE 学好,也就是把 Java 基础打好,这个阶段学好有助于后期框架的学习。比如把多线程、网络通信、设计模式还有 jdbc 等学扎实了,在自己的博客上做笔记,画画思维导图。
2、要学习前端的知识,比如 HTML、CSS、Ajax、JQuery 等。虽然 Java 是做后台开发,但是少不了和前端进行交互,所以很有必要学一学。
3、数据库的学习也很重要,比如 oracle、MySQL等。好好学学数据库的一些常用函数,以及会写 SQL 语句,以我当时的面试经历来说,没有几家公司不要求写 SQL 语句的。
4、然后就是框架的学习了,刚接触框架的时候可能会感觉很不适应,各种各样的配置文件会把你搞晕,静下心来,多问多敲,光看可不行,可能你跟着视频或者书本上敲着敲着问题就会少很多。
5、最后,多看一下网上大神写的代码,学习模仿。最好自己能做个小项目,一来可以把学过的知识都运用起来,二来积累项目经验,为以后工作做准备。