MyBatis故事:
官方网站: http://www.mybatis.org
官方文档: http://www.mybatis.org/mybatis-3/
GitHub:https://github.com/mybatis
通过在MyBatis的官方网站,我们会看到和MyBatis相关的一些软件产品:
MyBatis Migrations 是一款数据库迁移工具 http://www.mybatis.org/migrations ;
MyBatipse (Eclipse plugin) ,Eclipse插件提供在编写xml配置文件 时的内容提示和验证;
MyBatis Generator 代码生成工具;
What is MyBatis?
MyBatis is a first class persistence framework with support for custom SQL, stored procedures and advanced mappings. MyBatis eliminates almost all of the JDBC code and manual setting of parameters and retrieval of results. MyBatis can use simple XML or Annotations for configuration and map primitives, Map interfaces and Java POJOs (Plain Old Java Objects) to database records.
MyBatis 是一款优秀的持久层框架,它支持自定义 SQL、存储过程以及高级映射。MyBatis 免除了几乎所有的 JDBC 代码以及设置参数和获取结果集的工作。MyBatis 可以通过简单的 XML 或注解来配置和映射原始类型、接口和 Java POJO(Plain Old Java Objects,普通老式 Java 对象)为数据库中的记录。
MyBatis SQL mapper framework for Java可以将其称之为Java持久层框架.
MyBatis 的前身是apache下的一个开源项目iBatis, iBATIS是一个由Clinton Begin 在2002年发起的开源项目,是一个基于Java的持久层框架。
iBATIS:http://ibatis.apache.org
iBATIS这个项目于2010年6月16号由apache迁移到了google code,iBatis3.x并且改名为MyBatis 。
MyBatis: http://code.google.com/p/mybatis/ (现在已经无法打开)
2013年11月MyBatis又从google code将代码迁移到Github。
MyBatis和Hibernate
MyBatis的作者:Clinton Begin 加拿大人 https://www.linkedin.com/in/clintonbegin
Hibernate 2001年推出的Java持久层框架,澳大利亚人 Gavin King https://www.linkedin.com/in/GavinKing
人们经常喜欢比较这两款优秀的持久层框架的特点:
技术
优点
缺点
jdbc
简单,纯粹,一切均可见,最基础的一种技术
1:需要手动关闭连接
2:结果集不能自动映射为对象
3:SQL夹杂在代码中,耦合度高,导致硬编码内伤
4:实际开发中SQL经常随需求变动,导致频繁修改,不易维护
jdbcTemplate
简单、纯粹、自动会话管理、结果集映射
需要手动拼装 SQL,SQL与Java代码混合在一起,长的SQL管理混乱
Hibernate
JPA
编程效率高,无需编写 SQL。 数据库更换成本低
较完善的二级缓存、自动防 SQL注入
完全掌握的门槛高 ; 复杂 SQL、复杂映射处理困难; 性能优化较麻烦、不易做特殊优化 ; 基于全映射的全自动框架,大量字段的 POJO进行部分映射时比较困难,导致数据库性能下降;
MyBatis
学习成本低、可以进行更为 细腻 的 SQL优化,减少查询字段、统一的SQL管理 SQL和 Java编码分开,功能边界清晰
需要手动编写维护 SQL、表结构变更之后需要手动维护SQL与映射;
MyBatis的定位
MyBatis专注于SQL本身,其为SQL映射,而非完整的SQL映射,它是一个半自动的ORM框架,需要自己编写SQL语句,这是其优点,也是缺点.
优点:SQL语句单独维护,便于SQL优化,便于发挥SQL的最大性能.
缺点:当数据库表和字段更改后,实体和数据库的映射关系需要手动维护,耗费时间长.
使用场景:是用于性能要求高,有大量的查询操作,适用于互联网项目,如:电商,O2O
互联网项目对持久层的需求:
1:对数据库的访问更加纯粹
2:尽可能不要使用数据库做运算
3:SQL语句尽可能命中索引(字段排序,查询字段,查询条件,尽可能命中索引)
MyBatis实战应用:
Mybatis框架就一个jar包;要使用 MyBatis, 只需将 mybatis-3.5.1.jar 文件置于 classpath 中即可。
使用Maven构建项目
org.mybatis
mybatis
3.5 .1
下载 MyBatis源码,构建 MyBatis 项目;https://codeload.github.com/mybatis/mybatis-3/zip/mybatis-3.5.1
如果不出意外,我们解压下载的压缩包,然后通过pom.xml导入IDEA中,通过Maven的compiler就可以正常编译成功,首次编译可能需要一定时间。
为了验证我么编译的项目是否可用,我们可以写一个简单的案例项目去测试一下,也方便后续的断点跟踪源码分析。
创建普通的Maven项目,添加Maven依赖
junit
junit
4.11
test
mysql
mysql-connector-java
5.1 .47
org.projectlombok
lombok
1.18 .8
org.slf4j
slf4j-api
1.7 .26
org.apache.logging.log4j
log4j-api
2.11 .2
org.apache.logging.log4j
log4j-slf4j-impl
2.11 .2
cglib
cglib
3.3 .0
org.javassist
javassist
3.27 .0 -GA
添加resources编译,个人建议添加
src/main/java
**/* .xml
src/main/resources
**/ *.*
添加jdbc.properties,根据自身配置
jdbc.username=xxx
jdbc.password =xxxxx
jdbc.driver =com.mysql.jdbc.Driver
jdbc.url =jdbc:mysql:// xxxx:3306/xxx?serverTimezone=GMT%2B8&useUnicode=true&characterEncoding=utf8&rewriteBatchedStatements=true&useSSL=false
最后贴上mybatis的xml配置
"1.0 " encoding=" UTF-8 " ?>
DOCTYPE configuration
PUBLIC " -//mybatis.org//DTD Config 3.0//EN "
" http://mybatis.org/dtd/mybatis-3-config.dtd " >
"D:\mybatis-3-mybatis-3.5.1\mybatis3-test\src\main\resources\jdbc.properties " />
"logImpl " value=" SLF4J " />
"cacheEnabled " value=" true " />
"com.xxx.model.User " alias=" User " />
"com.xxx.type.CryptHandlerType "
javaType =" com.xxx.model.IdCardType " />
default=" development " >
"development " >
"org.apache.ibatis.transaction.jdbc.JdbcTransactionFactory " />
"POOLED " >
"driver " value=" ${jdbc.driver} " />
"url " value=" ${jdbc.url} " />
"username " value=" ${jdbc.username} " />
"password " value=" ${jdbc.password} " />
"test " >
"JDBC " />
"POOLED " >
"driver " value=" ${jdbc.driver} " />
"url " value=" ${jdbc.url} " />
"username " value=" ${jdbc.username} " />
"password " value=" ${jdbc.password} " />
"product " >
"JDBC " />
"POOLED " >
"driver " value=" ${jdbc.driver} " />
"url " value=" ${jdbc.url} " />
"username " value=" ${jdbc.username} " />
"password " value=" ${jdbc.password} " />
"com/xxx/mapper/UsersMapper.xml " />
日志配置
"1.0 " encoding=" UTF-8 " ?>
"debug " >
"Console " target=" SYSTEM_OUT " >
"%d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n " />
"debug " >
ref=" Console " />
贴上本人的项目结构,仅供参考
MyBatis独立使用
// 通过配置文件获取输入流
InputStream resourceAsStream = Resources.getResourceAsStream(" mybatis-config.xml " );
// 构建SqlSessionFactory
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(resourceAsStream);
// 打开session
SqlSession sqlSession = sqlSessionFactory.openSession();
// 第四步 获取Mapper接口对象
UserMapper mapper = sqlSession.getMapper(UserMapper.class );
// 第五步 调用Mapper接口对象的方法操作数据库
User user = mapper.selectByPrimaryKey(1 );
// 获取结果,处理业务
log.info(" 查询结果: " ,user.getId());
当我们数据库配置等都设置完毕,正常来说查询数据是不会出现异常的,这样就说明我们的源码编译是成功的。
MyBatis Generator (MBG)
MyBatis Generator 简称MBG,是用Java语言开发 的一个代码生成工具,可以深入分析你的数据库和表,帮助你生成基本的对数据库的 CRUD操作代码以及QBC风格的条件查询,但是表连接、存储过程等这些复杂SQL的定义需要我们手工编写。
MyBatis Generator 生成3个东西:
1、POJO
2、Mapper XML Files
3、Mapper interface
MyBatis Generator 生成代码不需要依赖任何第三方jar包,仅仅需要一个jdbc驱动包;
文档: http://www.mybatis.org/generator/
Github:https://github.com/mybatis/generator
原来 MyBatis Generator老版本:ibator,用于iBatis代码生成;
1、配置 MyBatis Generator (MBG) 的配置文件;
"1.0 " encoding=" UTF-8 " ?>
DOCTYPE generatorConfiguration
PUBLIC " -//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN "
" http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd " >
"jdbc.properties " />
"F:/mysql-connector-java-5.1.46.jar " />
"tables " targetRuntime=" MyBatis3 " >
"suppressAllComments " value=" true " />
"driverClass " value=" ${jdbc.driver} " />
"connectionURL " value=" ${jdbc.url} " />
"userId " value=" ${jdbc.username} " />
"password " value=" ${jdbc.password} " />
"org.mybatis.model " targetProject=" src/main/java " >
"enableSubPackages " value=" false " />
"trimStrings " value=" false " />
"org.mybatis.mapper " targetProject=" src/main/java " >
"enableSubPackages " value=" false " />
"XMLMAPPER " targetPackage=" org.mybatis.mapper " targetProject=" src/main/java " >
"enableSubPackages " value=" false " />
"user "
domainObjectName =" User "
enableCountByExample =" false "
enableUpdateByExample =" false "
enableDeleteByExample =" false "
enableSelectByExample =" false "
selectByExampleQueryId =" false " />
1、生成代码
--通过命令行生成 java -jar mybatis-generator-core-1.3.7.jar -configfile generatorConfig.xml ( 用得比较少 )
--通过Ant生成 ( ant几乎被淘汰了)
--通过java程序生成
--通过maven生成
org.mybatis.generator
mybatis-generator-maven-plugin
1.3 .7
src/main/resources/generatorConfig.xml
true
true
--通过Eclipse生成
建议不要用 mysql驱动8.0, 用 5.1.x系列的驱动;
使用maven插件通过以下方式即可自动生成。
在源码分析的前面,我会分享一些MyBatis的常规应用
你可能感兴趣的:(MyBatis源码分析(一))
从LLM出发:由浅入深探索AI开发的全流程与简单实践(全文3w字)
码事漫谈
AI 人工智能
文章目录第一部分:AI开发的背景与历史1.1人工智能的起源与发展1.2神经网络与深度学习的崛起1.3Transformer架构与LLM的兴起1.4当前AI开发的现状与趋势第二部分:AI开发的核心技术2.1机器学习:AI的基础2.1.1机器学习的类型2.1.2机器学习的流程2.2深度学习:机器学习的进阶2.2.1神经网络基础2.2.2深度学习的关键架构2.3Transformer架构:现代LLM的核
初识C语言之函数(上)
乞丐1469
C语言学习 c语言 学习 开发语言
一.函数的概念1.函数的定义:在C语言中函数就是一个完成某项特定任务的一小段代码。2.函数的作用:一个大的计算机任务可以分为若干个较小的函数来完成。(同一个函数如果能完成某项特定任务的话,这个函数就可以重复使用,从而提高开发软件的效率)3.函数的分类:①库函数:由C语言库直接提供②自定义函数:由自己创造的函数二.库函数标准库和头文件:库函数的相关信息主要详见于下方链接http://zh.cppre
P=NP问题
太翌修仙笔录
deepseek 超算法认知架构 人工智能 知识图谱 算法 重构
P=NP是什么难题P=NP问题是计算机科学和数学领域中一个著名的未解难题,涉及计算复杂性理论的核心内容。以下是对该问题的详细分析:###**1.P与NP的定义**-**P类(PolynomialTime)**:包含所有能在多项式时间内被**确定性图灵机**解决的决策问题。例如,排序、最短路径问题等均属于P类。-**NP类(NondeterministicPolynomialTime)**:包含所有
天吉智芯「星核」智能充气泵 —— 以芯为核,定义车载充气新标杆
天吉智芯
充气泵 打气泵 一体机 人工智能 单片机 嵌入式硬件
一、品牌基因:12年车规级芯片的技术沉淀天吉智芯(TJX-CHIP)作为深圳天吉芯技术旗下高端品牌,深耕汽车电子领域12年,累计交付超500万颗车规级MCU芯片。「星核」充气泵是品牌首款终端产品,搭载自主研发的TJX8F003Pro车规级芯片(IATF16949认证),以芯片级定制重构充气泵的智能边界——不止是工具,更是汽车安全生态的智能终端。二、产品定位:全场景胎压管家,重新定义「可靠」目标用户
VM虚拟机
.R^O^
开发语言 运维 linux mysql
1.VM虚拟的网络模式有哪些?桥接模式(VM0)影响真实网络设置VM虚拟机成为一个真实物理主机,逻辑上和主机平级IP设置使用Internet的DHCP服务或静态NAT模式(VM8)设置VM虚拟机成为主机的下属客户端,共享主机的网卡,使用NAT技术访问外网IP设置使用VM自带的DHCP服务或静态仅主机模式(VM1)隔离Internet,只允许虚拟机和主机通讯,VM1网卡成为虚拟机的网关IP设置使用V
python简单案例代码,python案例讲解视频
2401_84471631
python
这篇文章主要介绍了python简单案例代码,具有一定借鉴价值,需要的朋友可以参考下。希望大家阅读完这篇文章后大有收获,下面让小编带着大家一起了解一下。Python是一种高级,解释性,交互式且面向对象的脚本语言。Python的设计具有很高的可读性。它使用英语作为关键字,相对于而其他语言则使用标点符号作为语句结束不同,是依靠缩进作为结束。并且其语法结构比其他语言精简。Python是Web开发,游戏开发
Python爬虫实战教程——如何爬取多个国家的实时汇率数据
Python爬虫项目
2025年爬虫实战项目 python 爬虫 chrome 信息可视化
1.引言随着全球经济一体化,跨国交易和投资变得越来越普遍,实时汇率数据成为了金融领域和国际贸易中的关键数据。对于金融分析师、投资者或者是开发者来说,能够实时获取并分析汇率数据是至关重要的。本文将深入探讨如何使用Python爬虫技术抓取多个国家的实时汇率数据。我们将使用最新的技术和工具,介绍如何通过Python编写一个高效、可扩展的汇率数据爬虫。2.为什么需要实时汇率数据?汇率数据被广泛应用于以下几
养生,点亮健康生活
yy0821yy
生活
在当今快节奏的社会,人们常常在忙碌奔波中,忽略了健康才是生活的根本。养生,并非是老年人的专属,而是关乎每一个渴望生活品质、追求健康体魄之人的终身课题。它就像一位无声的守护者,默默改善着我们的身体机能,让我们远离疾病困扰,享受生命的美好。饮食养生,是开启健康之门的首要钥匙。《黄帝内经》有云:“五谷为养,五果为助,五畜为益,五菜为充。”日常饮食需讲究荤素搭配、营养均衡。早餐,一份全麦面包搭配鸡蛋、牛奶
C语言刷题第五章(中)
乞丐1469
C语言刷题 c语言 学习
二题目:3.完美成绩(1)题目描述:KiKi想知道自己的考试成绩是否完美,请你帮他判断,从键盘输入一个整数表示成绩。编程判断成绩是否在90-100之间,如果在则输出perfect(2)输入描述:多组输入,每行输入包括一个整数表示成绩(90-100)。(3)输出描述:针对每行输入,输出perfect。(4)示例:输入:98输出:perfect(5)代码实践:#includeintmain(){int
开源Nextcloud+Onlyoffice实现多人协同在线编辑功能(基本配置)
运维归一
多人共享编辑 私人网盘 nextcloud onlyoffice
系统软件版本CentOS7NextCloud21本文只介绍基本安装,不适用于企业级一、安装Nextcloud1、容器方式安装dockerrun-d--namenextcloud-p8000:80-v/data/nextcloud:/var/www
JAVASE(七)关键字this和static,类的结构详解(二)
永无魇足
java java
目录一、关键字this和static1.关键字this2.关键字static二、代码块1.定义2.实例代码块和静态代码块一、关键字this和static1.关键字thisthis代表当前对象。(1)当方法里面的局部变量和成员变量同名的时候,就可以使用this。如:publicclassHuman{Stringname;Stringgender;publicHuman(Stringname,Stri
经济和信息化谋定研究-左晓栋:国家网络安全事件应急预案
赢在商道·中国营销企划
职能监管 经济和信息化 网信安全 万祥军 谋定研究 经信研究
经济和信息化谋定研究-左晓栋:国家网络安全事件应急预案2017年6月,中央网信办公布了《国家网络安全事件应急预案》。指出,网络安全是动态的而不是静态的,是相对的而不是绝对的。维护网络安全,必须“防患于未然”。“制定《国家网络安全事件应急预案》是网络安全的一项基础性工作。”中国经济和信息化研究中心、中国经信研究国研智库中心主任万祥军在对话中国信息安全研究院副院长左晓栋时表示:也是落实国家《突发事件应
vue3:request.js中请求方法,api封装请求,方法请求
25号底片~
javascript 前端 vue.js
方法一request.js//封装GET请求exportconstget=(url,params={})=>{returnrequest.get(url,{params});};//封装POST请求exportconstpost=(url,data={})=>{returnrequest.post(url,data);};api封装import{post}from'@/utils/request'
漫画算法python篇pdf_用Python抓取漫画并制作mobi格式电子书
jian bao
漫画算法python篇pdf
想看某一部漫画,但是用手机看感觉屏幕太小,用电脑看吧有太不方面。正好有一部Kindle,决定写一个爬虫把漫画爬取下来,然后制作成mobi格式的电子书放到kindle里面看。本人对于Python学习创建了一个小小的学习圈子,为各位提供了一个平台,大家一起来讨论学习Python。欢迎各位到来Python学习群:943752371一起讨论视频分享学习。Python是未来的发展方向,正在挑战我们的分析能力
python的格式转换库_3个Python PDF库,提取信息、转换格式、分割剪裁有它就够了!...
来朝三博士
python的格式转换库
PDFMiner:PDFMiner是一个从PDF文档中提取信息的工具。与其他PDF相关的工具不同,它只用于获取和分析文本数据。PDFMiner能获取页面中文本的准确位置,以及字体或行等其他信息。它还有一个PDF转换器,可以将PDF文件转换成其他文本格式(如HTML)。还有一个可扩展的解析器PDF,可以用于文本分析以外的其他用途。(地址https://github.com/euske/pdfmine
linux ipc 共享内存,IPC--共享内存
云上彩
linux ipc 共享内存
1.什么是共享内存共享内存从字面意义解释就是多个进程可以把一段内存映射到自己的进程空间,以此来实现数据的共享以及传输,这也是所有进程间通信方式中最快的一种。共享内存是存在于内核级别的一种资源,在shell中可以使用ipcs命令来查看当前系统IPC中的状态,在文件系统中/proc目录下有对其描述的相应文件。在系统内核为一个进程分配内存地址时,通过分页机制可以让一个进程的物理地址不连续,同时也可以让一
Android15音频进阶之qnx定位so调用进程(一百一十一)
Android系统攻城狮
Android Audio工程师进阶系列 音视频 Android15 QNX 音频调试
简介:CSDN博客专家、《Android系统多媒体进阶实战》一书作者新书发布:《Android系统多媒体进阶实战》优质专栏:Audio工程师进阶系列【原创干货持续更新中……】优质专栏:多媒体系统工程师系列【原创干货持续更新中……】优质视频课程:AAOS车载系统+AOSP14系统攻城狮入门视频实战课
Google Gemini 大模型技术架构剖析
musicml
人工智能
▼最近直播超级多,预约保你有收获近期直播:《从原理到实践教你做出一个Gemini/ChatGPT》—1—Gemini技术架构剖析Google新的多模态模型家族Gemini,它在文本、图像、音频、视频等方面具有卓越的能力。Gemini系列包括Ultra、Pro和Nano三种尺寸,适用于从复杂的推理任务到设备内存受限的应用场景。GeminiUltra是最强大的模型,可在各种高度复杂的任务(包括推理和多
使用OpenResty(基于Nginx和Lua)优化Web服务性能
随风九天
部署运维 java 性能九阴白骨爪 openresty nginx lua
引言1.1OpenResty简介OpenResty是一个基于Nginx和Lua的高性能Web应用平台。它通过将Lua脚本嵌入到Nginx中,提供了强大的动态处理能力,适用于构建高性能的Web服务、API网关、动态内容生成等场景。1.2Nginx与Lua结合的优势高性能:Nginx本身就是一个高性能的HTTP和反向代理服务器,而Lua的嵌入使得动态处理能力大大增强。低资源消耗:Lua脚本的执行效率高
2024电力网络安全事件应急预案
安全方案
安全
一、总则\n\n(一)编制目的\n\n完善电力网络安全事件应对工作机制,有效预防、及时控制和最大限度消除电力网络安全事件带来的危害和影响,保障电力系统安全稳定运行和电力可靠供应。\n\n(二)编制依据\n\n《中华人民共和国突发事件应对法》(中华人民共和国主席令第六十九号)、《中华人民共和国网络安全法》(中华人民共和国主席令第五十三号)、《关键信息基础设施安全保护条例》(中华人民共和国国务院令第7
面试视角深度解析:索引冗余 vs 覆盖索引 vs 全表扫描的终极抉择
dblens 数据库管理和开发工具
mysql 面试 java 数据库
一、核心概念解析(面试破题关键)1.索引冗余(IndexRedundancy)本质:同一字段存在多个重复或包含关系的索引典型场景重复索引:INDEX(a)和INDEX(a)前缀冗余:已有INDEX(a,b,c)时再建INDEX(a,b)隐式覆盖:主键索引与唯一索引的列重叠面试考点如何通过SHOWINDEX识别冗余索引冗余索引对写性能的影响公式:写入耗时=基础耗时×(索引数+1)存储成本计算:单个索
我们的AI人工智能,自动发布了一篇假新闻……
数据断案
数据人的故事 人工智能 数据库 sql oracle 数据分析
今天这个故事,还得从一个事故开始说起。前些日子,我们被XX公司投诉,说我们的资讯发布了关于他们公司授信额度的不实报道:告诉我们这篇资讯与他们公司最新公开披露的数据不一致,相关内容并不属实,可能对广大网友们造成严重误导,并对他们公司造成了严重负面影响……balabala一堆指责,并要求我们3小时内删除全部相关信息。然后,他们丢了2篇公告附件过来。我们对照着仔细一看,还真是我们搞错了:由于数据错误,“
Lua语言的计算机体系结构
凌嘉遥
包罗万象 golang 开发语言 后端
Lua语言的计算机体系结构引言Lua是一种轻量级、高效且可扩展的脚本语言,最早由巴西的一个小组开发。它的设计目标是为嵌入式系统提供一个简洁的语言,从而使开发者能够在不同的应用程序中方便地进行扩展和集成。尽管Lua本身是一种面向过程的语言,但它也支持面向对象编程、函数式编程等多种编程范式。因此,研究Lua的计算机体系结构,不仅能帮助我们理解Lua如何实现其功能,还能为其他编程语言的设计与实现提供参考
精选AI大模型读物:《从ChatGPT到AIGC:智能创作与应用赋能》——探索智能时代的创作力量
AGI大模型老王
人工智能 chatgpt AIGC AI大模型 大模型
自2023年以来,AI聊天机器人ChatGPT火爆互联网,其颠覆性的使用体验重塑了人们对于AI的认知。而ChatGPT背后的技术―AIGC也引起了互联网圈的关注,打开了人们对AI应用的想象空间。本书从ChatGPT入手,以AIGC为中心,对AIGC的理论知识、应用场景、未来发展等内容进行了全面的梳理。首先,本书对AIGC的概念、技术构成、产业生态、市场现状等进行了讲解,以便读者对AIGC形成一个清
如何保证接口测试的覆盖率?
软件测试媛
软件测试 技术分享 自动化测试 测试工具
写在前面_一定要先谈下接口在测试领域的地位:在当前企业实际测试技能应用中,功能测试和接口测试应用最广泛。但相比功能测试,接口测试缺口却非常大。且接口测试在测试领域地位非常高,是软件测试工程师初级和中级分界线。所以测试人员只要懂得接口测试,就能找到薪资很不错的工作。所以测试工作者(也就是提问者眼中的QA),一定要尽最大努力去提高自己的接口测试实力。如果想提高接口测试的代码覆盖率。首先要知道代码覆盖率
JetBrains IntelliJ IDEA 2024 for Mac v2024.3 中文 Java开发工具
Olive_Sweet
java intellij-idea macos
介绍JetBrainsIntelliJIDEA2024mac,是一款Java开发工具,IntelliJIDEA凭借无与伦比的Java和Kotlin支持脱颖而出。从一开始就支持尖IDEA2024.3中文版开发工具端语言功能,保持领先地位。IntelliJIDEA对您的代码了如指掌,利用这些知识在每个上下文中提供相关建议,实现极快的导航和智能体验。效果下载百度网盘:https://pan.baidu.
C++前缀和神技:区间问题瞬杀模板
三流搬砖艺术家
算法 算法 数据结构 c++
目录前缀和核心价值一维前缀和模板1.预处理公式2.代码实现3.动态图示二维前缀和模板1.预处理公式2.代码实现3.二维示意图六大避坑指南复杂度分析LeetCode实战前缀和核心价值暴力法的痛点://计算区间和,时间复杂度O(n)intsum=0;for(inti=l;iarr={3,1,4,2,5};intn=arr.size();//前缀和数组(从1开始存储)vectorprefix(n+1,0
02、数据结构与算法 - 基础:数组 - 吊打面试官
星星学霸
数据结构与算法 - 吊打面试官 python 开发语言 java 算法 数据结构
更多系列教程,每天更新更多教程关注:xxxueba.com星星学霸本篇博客我们介绍数据结构的鼻祖------数组,可以说数组几乎能表示一切的数据结构,在每一门编程语言中,数组都是重要的数据结构,当然每种语言对数组的实现和处理也不相同,但是本质是都是用来存放数据的的结构,这里我们以Java语言为例,来详细介绍Java语言中数组的用法。Java中数组的介绍在Java中,数组是用来存放同一种数据类型的集
面试求助:接口测试用例设计主要考虑哪些方面?
海姐软件测试
lua 开发语言
一、基础功能验证1.正常场景覆盖关键点:验证接口在合法输入下的正确响应(状态码、数据结构、业务逻辑)。案例:json复制//用户登录接口输入:{"username":"合法用户","password":"正确密码"}预期:200OK+token返回+数据库登录记录更新2.异常场景覆盖关键点:触发错误码(4xx/5xx)的边界条件。测试维度:参数缺失/类型错误(如整型传字符串)非法参数值(如手机号格
使用python去编写PDF转换成为EPUB以及MOBI工具
winfredzhang
python pdf 转换 EPUB MOBI
在数字时代,PDF格式因其可靠性和跨平台特性成为了文档分享的标准。然而,当我们需要在电子阅读器上阅读这些文档时,转换为EPUB或MOBI格式会提供更好的阅读体验。今天,我们将深入分析一个使用Python和wxPython开发的PDF转换工具,探讨其实现原理和技术细节。C:\pythoncode\new\ConvertPdfToEpub.py需求分析在开始编码之前,让我们明确需求:用户友好的界面,允
html
周华华
html
js
1,数组的排列
var arr=[1,4,234,43,52,];
for(var x=0;x<arr.length;x++){
for(var y=x-1;y<arr.length;y++){
if(arr[x]<arr[y]){
&
【Struts2 四】Struts2拦截器
bit1129
struts2拦截器
Struts2框架是基于拦截器实现的,可以对某个Action进行拦截,然后某些逻辑处理,拦截器相当于AOP里面的环绕通知,即在Action方法的执行之前和之后根据需要添加相应的逻辑。事实上,即使struts.xml没有任何关于拦截器的配置,Struts2也会为我们添加一组默认的拦截器,最常见的是,请求参数自动绑定到Action对应的字段上。
Struts2中自定义拦截器的步骤是:
make:cc 命令未找到解决方法
daizj
linux 命令未知 make cc
安装rz sz程序时,报下面错误:
[root@slave2 src]# make posix
cc -O -DPOSIX -DMD=2 rz.c -o rz
make: cc:命令未找到
make: *** [posix] 错误 127
系统:centos 6.6
环境:虚拟机
错误原因:系统未安装gcc,这个是由于在安
Oracle之Job应用
周凡杨
oracle job
最近写服务,服务上线后,需要写一个定时执行的SQL脚本,清理并更新数据库表里的数据,应用到了Oracle 的 Job的相关知识。在此总结一下。
一:查看相关job信息
1、相关视图
dba_jobs
all_jobs
user_jobs
dba_jobs_running 包含正在运行
多线程机制
朱辉辉33
多线程
转至http://blog.csdn.net/lj70024/archive/2010/04/06/5455790.aspx
程序、进程和线程:
程序是一段静态的代码,它是应用程序执行的蓝本。进程是程序的一次动态执行过程,它对应了从代码加载、执行至执行完毕的一个完整过程,这个过程也是进程本身从产生、发展至消亡的过程。线程是比进程更小的单位,一个进程执行过程中可以产生多个线程,每个线程有自身的
web报表工具FineReport使用中遇到的常见报错及解决办法(一)
老A不折腾
web报表 finereport java报表 报表工具
FineReport使用中遇到的常见报错及解决办法(一)
这里写点抛砖引玉,希望大家能把自己整理的问题及解决方法晾出来,Mark一下,利人利己。
出现问题先搜一下文档上有没有,再看看度娘有没有,再看看论坛有没有。有报错要看日志。下面简单罗列下常见的问题,大多文档上都有提到的。
1、address pool is full:
含义:地址池满,连接数超过并发数上
mysql rpm安装后没有my.cnf
林鹤霄
没有my.cnf
Linux下用rpm包安装的MySQL是不会安装/etc/my.cnf文件的,
至于为什么没有这个文件而MySQL却也能正常启动和作用,在这儿有两个说法,
第一种说法,my.cnf只是MySQL启动时的一个参数文件,可以没有它,这时MySQL会用内置的默认参数启动,
第二种说法,MySQL在启动时自动使用/usr/share/mysql目录下的my-medium.cnf文件,这种说法仅限于r
Kindle Fire HDX root并安装谷歌服务框架之后仍无法登陆谷歌账号的问题
aigo
root
原文:http://kindlefireforkid.com/how-to-setup-a-google-account-on-amazon-fire-tablet/
Step 4: Run ADB command from your PC
On the PC, you need install Amazon Fire ADB driver and instal
javascript 中var提升的典型实例
alxw4616
JavaScript
// 刚刚在书上看到的一个小问题,很有意思.大家一起思考下吧
myname = 'global';
var fn = function () {
console.log(myname); // undefined
var myname = 'local';
console.log(myname); // local
};
fn()
// 上述代码实际上等同于以下代码
m
定时器和获取时间的使用
百合不是茶
时间的转换 定时器
定时器:定时创建任务在游戏设计的时候用的比较多
Timer();定时器
TImerTask();Timer的子类 由 Timer 安排为一次执行或重复执行的任务。
定时器类Timer在java.util包中。使用时,先实例化,然后使用实例的schedule(TimerTask task, long delay)方法,设定
JDK1.5 Queue
bijian1013
java thread java多线程 Queue
JDK1.5 Queue
LinkedList:
LinkedList不是同步的。如果多个线程同时访问列表,而其中至少一个线程从结构上修改了该列表,则它必须 保持外部同步。(结构修改指添加或删除一个或多个元素的任何操作;仅设置元素的值不是结构修改。)这一般通过对自然封装该列表的对象进行同步操作来完成。如果不存在这样的对象,则应该使用 Collections.synchronizedList 方
http认证原理和https
bijian1013
http https
一.基础介绍
在URL前加https://前缀表明是用SSL加密的。 你的电脑与服务器之间收发的信息传输将更加安全。
Web服务器启用SSL需要获得一个服务器证书并将该证书与要使用SSL的服务器绑定。
http和https使用的是完全不同的连接方式,用的端口也不一样,前者是80,后
【Java范型五】范型继承
bit1129
java
定义如下一个抽象的范型类,其中定义了两个范型参数,T1,T2
package com.tom.lang.generics;
public abstract class SuperGenerics<T1, T2> {
private T1 t1;
private T2 t2;
public abstract void doIt(T
【Nginx六】nginx.conf常用指令(Directive)
bit1129
Directive
1. worker_processes 8;
表示Nginx将启动8个工作者进程,通过ps -ef|grep nginx,会发现有8个Nginx Worker Process在运行
nobody 53879 118449 0 Apr22 ? 00:26:15 nginx: worker process
lua 遍历Header头部
ronin47
lua header 遍历
local headers = ngx.req.get_headers()
ngx.say("headers begin", "<br/>")
ngx.say("Host : ", he
java-32.通过交换a,b中的元素,使[序列a元素的和]与[序列b元素的和]之间的差最小(两数组的差最小)。
bylijinnan
java
import java.util.Arrays;
public class MinSumASumB {
/**
* Q32.有两个序列a,b,大小都为n,序列元素的值任意整数,无序.
*
* 要求:通过交换a,b中的元素,使[序列a元素的和]与[序列b元素的和]之间的差最小。
* 例如:
* int[] a = {100,99,98,1,2,3
redis
开窍的石头
redis
在redis的redis.conf配置文件中找到# requirepass foobared
把它替换成requirepass 12356789 后边的12356789就是你的密码
打开redis客户端输入config get requirepass
返回
redis 127.0.0.1:6379> config get requirepass
1) "require
[JAVA图像与图形]现有的GPU架构支持JAVA语言吗?
comsci
java语言
无论是opengl还是cuda,都是建立在C语言体系架构基础上的,在未来,图像图形处理业务快速发展,相关领域市场不断扩大的情况下,我们JAVA语言系统怎么从这么庞大,且还在不断扩大的市场上分到一块蛋糕,是值得每个JAVAER认真思考和行动的事情
安装ubuntu14.04登录后花屏了怎么办
cuiyadll
ubuntu
这个情况,一般属于显卡驱动问题。
可以先尝试安装显卡的官方闭源驱动。
按键盘三个键:CTRL + ALT + F1
进入终端,输入用户名和密码登录终端:
安装amd的显卡驱动
sudo
apt-get
install
fglrx
安装nvidia显卡驱动
sudo
ap
SSL 与 数字证书 的基本概念和工作原理
darrenzhu
加密 ssl 证书 密钥 签名
SSL 与 数字证书 的基本概念和工作原理
http://www.linuxde.net/2012/03/8301.html
SSL握手协议的目的是或最终结果是让客户端和服务器拥有一个共同的密钥,握手协议本身是基于非对称加密机制的,之后就使用共同的密钥基于对称加密机制进行信息交换。
http://www.ibm.com/developerworks/cn/webspher
Ubuntu设置ip的步骤
dcj3sjt126com
ubuntu
在单位的一台机器完全装了Ubuntu Server,但回家只能在XP上VM一个,装的时候网卡是DHCP的,用ifconfig查了一下ip是192.168.92.128,可以ping通。
转载不是错:
Ubuntu命令行修改网络配置方法
/etc/network/interfaces打开后里面可设置DHCP或手动设置静态ip。前面auto eth0,让网卡开机自动挂载.
1. 以D
php包管理工具推荐
dcj3sjt126com
PHP Composer
http://www.phpcomposer.com/
Composer是 PHP 用来管理依赖(dependency)关系的工具。你可以在自己的项目中声明所依赖的外部工具库(libraries),Composer 会帮你安装这些依赖的库文件。
中文文档
入门指南
下载
安装包列表
Composer 中国镜像
Gson使用四(TypeAdapter)
eksliang
json gson Gson自定义转换器 gsonTypeAdapter
转载请出自出处:http://eksliang.iteye.com/blog/2175595 一.概述
Gson的TypeAapter可以理解成自定义序列化和返序列化 二、应用场景举例
例如我们通常去注册时(那些外国网站),会让我们输入firstName,lastName,但是转到我们都
JQM控件之Navbar和Tabs
gundumw100
html xml css
在JQM中使用导航栏Navbar是简单的。
只需要将data-role="navbar"赋给div即可:
<div data-role="navbar">
<ul>
<li><a href="#" class="ui-btn-active&qu
利用归并排序算法对大文件进行排序
iwindyforest
java 归并排序 大文件 分治法 Merge sort
归并排序算法介绍,请参照Wikipeida
zh.wikipedia.org/wiki/%E5%BD%92%E5%B9%B6%E6%8E%92%E5%BA%8F
基本思想:
大文件分割成行数相等的两个子文件,递归(归并排序)两个子文件,直到递归到分割成的子文件低于限制行数
低于限制行数的子文件直接排序
两个排序好的子文件归并到父文件
直到最后所有排序好的父文件归并到输入
iOS UIWebView URL拦截
啸笑天
UIWebView
本文译者:candeladiao,原文:URL filtering for UIWebView on the iPhone说明:译者在做app开发时,因为页面的javascript文件比较大导致加载速度很慢,所以想把javascript文件打包在app里,当UIWebView需要加载该脚本时就从app本地读取,但UIWebView并不支持加载本地资源。最后从下文中找到了解决方法,第一次翻译,难免有
索引的碎片整理SQL语句
macroli
sql
SET NOCOUNT ON
DECLARE @tablename VARCHAR (128)
DECLARE @execstr VARCHAR (255)
DECLARE @objectid INT
DECLARE @indexid INT
DECLARE @frag DECIMAL
DECLARE @maxfrag DECIMAL
--设置最大允许的碎片数量,超过则对索引进行碎片
Angularjs同步操作http请求with $promise
qiaolevip
每天进步一点点 学习永无止境 AngularJS 纵观千象
// Define a factory
app.factory('profilePromise', ['$q', 'AccountService', function($q, AccountService) {
var deferred = $q.defer();
AccountService.getProfile().then(function(res) {
hibernate联合查询问题
sxj19881213
sql Hibernate HQL 联合查询
最近在用hibernate做项目,遇到了联合查询的问题,以及联合查询中的N+1问题。
针对无外键关联的联合查询,我做了HQL和SQL的实验,希望能帮助到大家。(我使用的版本是hibernate3.3.2)
1 几个常识:
(1)hql中的几种join查询,只有在外键关联、并且作了相应配置时才能使用。
(2)hql的默认查询策略,在进行联合查询时,会产
struts2.xml
wuai
struts
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
"http://struts.apache