目录
MyBatis简介
创建mybatis项目
1.创建maven工程
2.创建mybatis核心配置文件
3.创建mapper接口
4.创建MyBatis映射文件
5.测试CRUD
Mybatis中的核心配置文件
Mybatis获取参数值的两种方式
1.mapper接口方法的参数为单个的字面量类型
2.mapper接口方法的参数为多个的字面量类型
3.若mapper接口方法的参数有多个时,可以手动将这些参数放在一 个map中存储
4.mapper接口方法的参数是实体类类型的参数
5.使用@Param注解命名参数
关于mybatis查询功能
1.查询数据的条数
2.模糊查询
3.批量删除
4.动态设置表名
5.添加功能获取自增的主键
自定义映射resultMap
1.实体类中属性值与数据库中字段值不一致问题
解决1:取别名
解决2:在核心配置文件中引入标签(设置mybatis全局配置),再配置属性将下划线自动映射为驼峰
解决3:用resultMap自定义映射设置字段映射关系
2.多对一映射处理
1、级联方式处理映射关系
2、使用association标签
3、分步查询
3.一对多映射处理
1.collection标签
2.分步查询
动态Sql
1、if标签
2、where标签
2、trim标签
4、choose,when,otherwis标签
5、foreach标签
批量删除
批量增加
sql标签
Mybatis缓存
一级缓存
二级缓存
mybatis缓存查询顺序
编辑 第三方缓存EHCache
Mybatis逆向工程
创建步骤
1.添加依赖和插件
2.创建逆向工程的配置文件
QBC查询
分页插件
MyBatis简介
创建mybatis项目
1.创建maven工程
a.打包方式为:jar(因为mybatis封装的是jdbc,不需要创建war包来创建一个web工程)
b.引入依赖
2.创建mybatis核心配置文件
mybatis-config.xml
3.创建mapper接口
a.创建实体类Fruit
b.创建接口FruitMapper
4.创建MyBatis映射文件
a.映射文件名与mapper接口名一致
b.mappe接口中写增删查改的方法(不用具体实现),在映射文件(FruitMapper.xml)中的mapper标签中,通过命名空间(和mapper接口全类名保持一致)指定要操作的接口,再写入具体的增删查改语句,语句中的id要和mapper接口中的方法名保持一致。
insert into t_fruit values(null,'西瓜','123',23,'好吃')
c.映射关系:mapper接口的全类名匹配到映射文件,再根据方法名匹配到对应的sql语句。
5.测试CRUD
//读取MyBatis的核心配置文件
InputStream is = Resources.getResourceAsStream("mybatis-config.xml");
//创建SqlSessionFactoryBuilder对象
SqlSessionFactoryBuilder sqlSessionFactoryBuilder = new
SqlSessionFactoryBuilder();
//通过核心配置文件所对应的字节输入流创建工厂类SqlSessionFactory,生产SqlSession对象
SqlSessionFactory sqlSessionFactory = sqlSessionFactoryBuilder.build(is);
//创建SqlSession对象,此时通过SqlSession对象所操作的sql都必须手动提交或回滚事务
//SqlSession sqlSession = sqlSessionFactory.openSession();
//创建SqlSession对象,此时通过SqlSession对象所操作的sql都会自动提交
SqlSession sqlSession = sqlSessionFactory.openSession(true);
//通过代理模式创建UserMapper接口的代理实现类对象
UserMapper userMapper = sqlSession.getMapper(FruitMapper.class);
//调用UserMapper接口中的方法,就可以根据UserMapper的全类名匹配元素文件,通过调用的方法名匹配
映射文件中的SQL标签,并执行标签中的SQL语句
int result = userMapper.insertUser();
//手动提交事务
//sqlSession.commit();
1.查询功能的标签必须设置resultType或resultMap
resultType:设置默认的映射关系
resultMap:设置自定义的映射关系(字段名和属性名不一致时使用此)
select * from t_fruit where fid=3
Mybatis中的核心配置文件
1、environments:配置多个连接数据库的环境
2、environment:配置某个具体的环境
3、transactionManage:设置事务管理方式
属性:
type="JDBC||MANAGERD"
JDBC:表示当前环境中,执行sql时,使用的是JDBC中原生的事务管理方式,事务提交或回滚需要手动处理。
MANAGED:被管理
4、dataSource:配置数据源
属性:
type:设置数据源类型 type="POOLED||UNPOOLED||JNDI"
POOLED:表示使用数据库连接池缓存数据库连接
UNPOOLED:表示不使用数据库连接池缓存数据库连接
JNDI:表示使用上下文的数据源
5.typeAliases:设置类型别名---减少查询功能中结果类型(resultType)映射重复出现的重复工作量
typeAliase:设置类型别名
属性:
type:需要设置类型别名的“类”
alias:设置的别名---不区分大小写(不设置时默认为类名)
package:以包为单位,将包下所有的类设置为默认的类型别名,类名不区分大小写(常用)
6.mapper:引入映射文件
package:以包为单位引入映射文件
属性:
name:包名(mapper接口所在包要和映射文件所在包一致;mapper接口和映射文件的名字一致)
错误记录:建立jdbc.properties文件存放数据库的配置,文件路径放在resources目录下(不然not found)
Mybatis获取参数值的两种方式
1.mapper接口方法的参数为单个的字面量类型
可以通过${}和#{}以任意字符串获取参数值(即参数名可以自定义命名),但是需要注意${}的单引号问题(字符串拼接形式和日期类型需要单引号)
//通过名称获取水果
Fruit getFruitByFname(String fname);
select * from t_fruit where fname='${fanem}'
2.mapper接口方法的参数为多个的字面量类型
//通过名称和价格挑选水果
Fruit getFruitByFanemAndFcount(String fname,Integer count);
select * from t_fruit where fname='${param1}' and fcount='${param2}'
此时MyBatis会将这些参数放在一个map集合中,以两种方式进行存储 a> 以arg0, arg1...为键,以参数为值 b>以param1, param2...为键,以参数为值 因此只需要通过#{}和${}以键的方式访问值即可,但是需要注意${}的单引号问题
用mybatis设置的键进行访问
3.若mapper接口方法的参数有多个时,可以手动将这些参数放在一 个map中存储
Fruit getFruitByMap(Map map);
select * from t_fruit where fname=#{fname} and fcount=#{fcount}
自已定义的map集合就可以自己定义参数名(以自己设置键进行访问)。
4.mapper接口方法的参数是实体类类型的参数
void addFruit(Fruit fruit);
insert into t_fruit values(null,#{fname},#{price},#{fcount},#{remark})
只需要通过#{}和${}以属性的方式访问属性值即可,但是需要注意${}的单引号问题
5.使用@Param注解命名参数
Fruit getFruitByParam(@Param("fname") String fname,@Param("fcount") Integer fcount);
select * from t_fruit where fname=#{fname} and fcount=#{fcount}
此时MyBatis会将这些参数放在一个map集合中, 以两种方式进行存储 a>以@Param注解的值为键,以参数为值 b>以param1, param2...为键,以参数为值
因此只需要通过#{}和${}以键的方式访问值即可,但是需要注意${}的单引号问题
关于mybatis查询功能
1.查询数据的条数
2.模糊查询
List getFruitByLike(@Param("fcount") Integer fcount);
select * from t_fruit where fcount like concat('%',#{fcount},'%')
第一种方式:'%${查询的字段}%'
第二种方式:"%"#{查询的字段}"%" ------常用
第三种方式:concat('%',#{查询的字段},'%') ------工作中常用
3.批量删除
void deleteMore(@Param("ids") String ids);
delete from t_fruit where fid in (${ids})
这里不能用(#{ids})的原因是#{}底层原理是占位符,它会自动加上单引号导致sql语句错误
4.动态设置表名
背景:当一张表的数据过多时,会影响mysql的性能,为了提高性能可以将一张表进行水平切分,将其拆分成多张表共同储存一张表的数据,这时同一个数据可以对应的表明就不一样了,这时就需要动态设置表名
List getFruitByTableName(String tableName);
select * from ${tableName}
此处表名变量即${tableName}不能用#{},原因:#{}底层原理是占位符,它会自动加上单引号导致sql语句错误
5.添加功能获取自增的主键
业务场景:一对多,多对一的情况下需要用到某张表的id...
自定义映射resultMap
1.实体类中属性值与数据库中字段值不一致问题
private String userName;
解决1:取别名
select uid,user_name userName,age,sex,email from f_user
解决2:在核心配置文件中引入标签(设置mybatis全局配置),再配置属性将下划线自动映射为驼峰
解决3:用resultMap自定义映射设置字段映射关系
(1)、用resultMap标签自定义映射关系
(2)、写Sql语句
select * from f_user
2.多对一映射处理
在多的那个实体类中将一的实体类的类名设置为其字段
例:用户(User)---部门(Dept)
在User实体类中添加字段private Dept dept.
1、级联方式处理映射关系
//根据Id查询用户的基本信息和另一张表里的等级信息
User getUserAndDept(Integer id);
select * from f_user left join f_dept on f_user.did=f_dept.did where f_user.uid=#{uid}
2、使用association标签
select * from f_user left join f_dept on f_user.did=f_dept.did where f_user.uid=#{uid}
association:
属性:property:多对一关系中多的类中的属性名(需要处理多对一映射关系的属性名 )
private Dept dept.
javaType:关联的表的实体类类名(该属性的类型 )
3、分步查询
1.第一步-查询用户信息
User getUserAndDeptByStep(@Param("uid") Integer uid);
select * from f_user where uid=#{uid}
2.第二步-查询用户对应的等级信息
Dept getDeptByStep(@Param("did") Integer did);
select * from f_dept where did=#{did}
二者建立联系的方式:
通过assoication的
property属性 :在多的一方设置的少的一方的属性名=》private Dept dept.
select属性 :设置分步查询的sql唯一标识(namespace.SQLId或mapper接口.全类名=》与另一条sql建立联系)
column属性 :设置分步查询的条件(两行表都有的字段,通过该字段两表建立联系)
PS:分步查询可以实现延迟加载 (只执行当前访问的信息相关的sql语句)
3.一对多映射处理
在一的那个实体类中将多的实体类的类名设置为其字段,返回类型用list形式接收。
例:部门(Dept)---用户(User)
在Dept实体类中添加字段private List users.
1.collection标签
User getUserAndDeptByStep(@Param("uid") Integer uid);
select * from f_dept left join f_user on f_dept.did=f_user.did where f_dept.did=#{did}
collection:处理一-对多的映射关系
property:需要处理一对多映射关系的属性名----private List users ofType:表示该属性所对应的集合中存储数据额类型
2.分步查询
同上多对一的分布查询
1.
Dept getDeptAndUserByStep(@Param("did") Integer did);
select * from f_dept where did=#{did}
2.
User getDeptAndUserByStep(@Param("uid") Integer uid);
select * from f_user where uid=#{uid}
动态Sql
用mybatis提供的sql标签拼接关键字和条件
1、if标签
//根据条件查询
List getUserByCondition(User user);
select * from f_user where 1=1
and user_name=#{userName}
and age=#{age}
and sex=#{sex}
and email=#{email}
2、where标签
select * from f_user
user_name=#{userName}
and age=#{age}
and sex=#{sex}
and email=#{email}
当where标签中有内容时,会自动生成where关键字,并且将内容前多余的and或or去掉 当where标签中没有内容时,此时where 标签没有任何效果 注意: where标签不能将其中内容后面多余的and或or去掉
2、trim标签
select * from f_user
user_name=#{userName} and
age=#{age} and
sex=#{sex} or
email=#{email}
属性:
prefix/suffix:将trim标签中内容前面或后面添加指定内容 suffixoverrides/prefixoverrides:将trim标签中内容后面或前面去掉指定内容
PS:若标签中没有内容时,trim标签也没有任何效果
4、choose,when,otherwis标签
相当于java中的if...else if...else
select * from f_user
user_name=#{userName}
age=#{age}
sex=#{sex}
email=#{email}
did=1
当上面所有的when里的条件都不满足时,才会执行otherwise里的内容
when标签至少要有一个,otherwise标签至多有一个
5、foreach标签
批量删除
第一种删除风格:delete from ... where id in (#{ids})
//批量删除
void deleteUserByids(@Param("uids") Integer[] uids);
delete from f_user where uid in
(
#{uid}
)
collection:需要循环的数组的名
item:数组中的每一个元素
separator:数组中每一个元素的分割的符号
open|close:该循环开始和结束的符号
delete from f_user where uid in
#{uid}
第二种删除风格:delete from ... where id =? or id=?...
delete from f_user where
uid=#{uid}
批量增加
//批量增加
void addUsersByList(@Param("users") List users);
insert into f_user values
(null,#{user.userName},#{user.age},#{user.sex},#{user.email},null)
sql标签
sql片段
sql标签中放的内容是可以重复利用的,引用的时候只需要通过include标签中的refid属性写上sql标签设置的属性即可。
Mybatis缓存
mybatis缓存会将我们查询出来的数据进行记录,当下一次查询相同数据的时候就会从缓存中取数据,不会在数据库中重新访问。缓存只针对查询功能有效。
一级缓存
默认开启
二级缓存
手动开启
mybatis缓存查询顺序
第三方缓存EHCache
可以用第三方缓存代替二级缓存(一级缓存不可代替)
1.添加依赖
2.创建配置文件
3.设置二级缓存类型
Mybatis逆向工程
创建步骤
1.添加依赖和插件
org.mybatis
mybatis
3.5.7
org.mybatis.generator
mybatis-generator-maven-plugin
1.3.0
org.mybatis.generator
mybatis-generator-core
1.3.2
com.mchange
c3p0
0.9.2
mysql
mysql-connector-java
5.1.8
2.创建逆向工程的配置文件
文件名必须是generatorConfig.xml
版本:MyBatis3Simple---清新简洁版
版本:MyBatis3---功能齐全版(生成带条件的CRUD)
执行插件,生成相应文件
QBC查询 @Test
public void testMBG() throws IOException {
InputStream is = Resources.getResourceAsStream("mybatis-config.xml");
SqlSession sqlSession = new
SqlSessionFactoryBuilder().build(is).openSession(true);
EmpMapper mapper = sqlSession.getMapper(EmpMapper.class);
EmpExample empExample = new EmpExample();
//创建条件对象,通过andXXX方法为SQL添加查询添加,每个条件之间是and关系
empExample.createCriteria().andEnameLike("a").andAgeGreaterThan(20).andDidIsNot
Null();
//将之前添加的条件通过or拼接其他条件
empExample.or().andSexEqualTo("男");
List list = mapper.selectByExample(empExample);
for (Emp emp : list) {
System.out.println(emp);
}
}
分页插件 1.添加依赖
com.github.pagehelper
pagehelper
5.2.0
2.配置分页插件
在mybatis核心配置文件中配置
使用:
你可能感兴趣的:(java,学习,maven,java)
强化学习——基本概念
AI大模型探索者
人工智能 ai 深度学习 机器学习 语言模型
何为强化学习机器学习的一大分支强化学习(ReinforcementLearning)是机器学习的一种,它通过与环境不断地交互,借助环境的反馈来调整自己的行为,使得累计回报最大。强化学习要解决的是决策问题——求取当前状态下最优行为或行为概率。强化学习包括智能体和环境两大对象,智能体是算法本身,环境是与智能体交互的外部。智能体(IntelligentAgent),在人工智能领域,智能体指一个可以观察周
lombok未正常生效问题排查-maven编译问题排查
無炆_
java
问题报错-maven编译报错[INFO]Scanningforprojects...[INFO][INFO]------------------------------------------------------------------------[INFO]BuildingTailgate1.0-SNAPSHOT[INFO]----------------------------------
建筑兔零基础人工智能自学记录34|深度学习与神经网络2
阿克兔
人工智能toto学习 人工智能 深度学习 神经网络
1、人工神经网络ANN从生物课上学到的有关神经元、突触的生物神经网络,被模仿出了简化的人工神经网络(ANN,artificialneuralnetwork)。ANN结构为:输入层、隐藏层、输出层人工神经元:基于生物神经元的数学模型ANN过程:输入---加权求和---激活函数激活函数:类似生物神经元的阈值,达到阈值输出信号(‘神经网络的万能逼近定理’---两层以上神经网络可以逼近任意函数)2、深度学
Java练习 7-4 是不是太胖了
syh132167
java 算法 开发语言
据说一个人的标准体重应该是其身高(单位:厘米)减去100、再乘以0.9所得到的公斤数。已知市斤的数值是公斤数值的两倍。现给定某人身高,请你计算其标准体重应该是多少?(顺便也悄悄给自己算一下吧……)输入格式:输入第一行给出一个正整数H(100
【PCIe 总线及设备入门学习专栏 10.1 -- Linux PCIe 驱动框架 之 RK3399 Region1 访问】
主公讲 ARM
# 【PCIe Bus 专栏】 pcie
文章目录CPU读写region0的地址MEM/IO读写示例配置Region1用于内存读写配置Region1地址转换Region1地址访问descregistersCPU读写region0的地址本篇文章紧接【PCIe总线及设备入门学习专栏10–LinuxPCIe驱动框架】由【PCIe总线及设备入门学习专栏10–LinuxPCIe驱动框架】我们知道RK3399的PCIecontrollerRegion
自然语言处理NLP入门 -- 第十节简单的聊天机器人
山海青风
# 自然语言处理 自然语言处理 chatgpt
一、为什么要做聊天机器人?在互联网时代,我们日常接触到的“在线客服”“自动问答”等,大多是以聊天机器人的形式出现。它能帮我们快速回复常见问题,让用户获得及时的帮助,并在一定程度上减少人工客服的压力。同时,聊天机器人也是了解自然语言处理(NLP)最好的实战项目之一。因为它整合了文字理解(NLU)、对话管理、文本生成(NLG)等多方面知识,既能看到很直观的对话效果,也能结合深度学习模型让机器人变得更智
自然语言处理NLP入门 -- 第一节基础概念
山海青风
# 自然语言处理 自然语言处理 人工智能 python
本部分主要介绍NLP的基础概念,并通过实际案例演示NLP的核心任务,同时引导你搭建NLP开发环境,确保你能顺利开始后续学习。1.什么是自然语言处理(NLP)1.1NLP的定义自然语言处理(NaturalLanguageProcessing,NLP)是人工智能(AI)的一个子领域,专注于让计算机理解、解释和生成人类语言。NLP结合了计算机科学、语言学和机器学习,以便计算机能自动处理文本和语音数据。简
电脑开机黑屏无法进入桌面的常见解决方法
mmoo_python
电脑 windows
电脑开机黑屏无法进入桌面的常见解决方法电脑开机后遇到黑屏,不显示任何内容,是许多用户都曾遇到过的问题。这种黑屏情况不仅令人困惑,还可能影响工作和学习。本文将介绍一些常见的解决方法,帮助用户解决电脑开机黑屏不显示桌面的问题。方法一:重启Windows资源管理器打开任务管理器当电脑开机后遇到黑屏问题时,可以尝试按下键盘上的Ctrl+Shift+ESC组合键,打开任务管理器。任务管理器是Windows系
RxJava使用和原理(一)
linwq8
rxjava android java
基本介绍项目源码路径Github:RxJava介绍RxJava(ReactiveExtensionsforJava)是JVM的一个响应式扩展(ReactiveX)实现。它通过使用可观察的序列来组合异步和基于事件的程序。定义与原理RxJava是一个在JavaVM上使用可观测的序列来组成异步的、基于事件的程序的库。它扩展了传统的观察者模式,增加了对事件序列的丰富操作和变换能力。在RxJava中,被观察
虚拟机可以ping通本地,但是本地ping不通虚拟机,java.net.ConnectException: Connection refused
YDXD_C
服务器 linux 网络 java
问题:之前可以连接到finallshel,突然不行虚拟机可以ping通本地,但是本地ping不通虚拟机开着VMware时直接重启后无法连接finallshelljava.net.ConnectException:Connectionrefused经过查阅,需要检查虚拟机防火墙(关闭)、电脑防火墙(关于虚拟机网段等部分要关闭,例:VMwarenetwork等)、虚拟机ip(与虚拟机网虚拟网络编辑器中
Invalid bound statement, No converter found for return value of type:
噢!不杰克
spring boot
SpringBoot2.0学习的Bug(Invalidboundstatement,Noconverterfoundforreturnvalueoftype:)一、Invalidboundstatement:绑定语句无效,这个问题很复杂,每一个人的解决方式不同,我的是mapper-locations中映射路径问题,我看着没问题,但还是重新copy路径试了一下。还真是这个问题。mybatis:con
机器学习与深度学习资料
JasonDing1354
【Machine Learning】
《BriefHistoryofMachineLearning》介绍:这是一篇介绍机器学习历史的文章,介绍很全面,从感知机、神经网络、决策树、SVM、Adaboost到随机森林、DeepLearning.《DeepLearninginNeuralNetworks:AnOverview》介绍:这是瑞士人工智能实验室JurgenSchmidhuber写的最新版本《神经网络与深度学习综述》本综述的特点是以
Python | 学习type()方法动态创建类
胜天半月子
Python基础及应用 python 学习 开发语言
getattr方法的使用场景是在访问不存在的属性时,会触发该方法中的处理逻辑。尤其是在动态属性获取中结合type()动态创建类有着良好的使用关系。type()方法常用来判断属性的类别,而动态创建类不常使用,通过如下的几个实例来学习使用:defsay_hello(self):print("Hello,I'maninstanceofadynamicallycreatedclass!")#使用type函
【大模型】大模型分类
IT古董
人工智能 人工智能 大模型
大模型(LargeModels)通常指参数量巨大、计算能力强大的机器学习模型,尤其在自然语言处理(NLP)、计算机视觉(CV)等领域表现突出。以下是大模型的常见分类方式:1.按应用领域分类自然语言处理(NLP)模型如GPT-3、BERT、T5等,主要用于文本生成、翻译、问答等任务。计算机视觉(CV)模型如ResNet、EfficientNet、VisionTransformer(ViT)等,用于图
MyBatis 深度解析:MyBatis是如何简化 JDBC的 ?
以恒1
mybatis
MyBatis深度解析:MyBatis是如何简化JDBC的?一、JDBC的痛点与MyBatis的诞生传统JDBC开发虽然灵活,但存在诸多痛点,导致开发效率低下且易出错:样板代码冗余:每次操作需重复编写连接管理、try-catch-finally块、资源释放等代码。例如,一个简单的查询需要至少20行代码处理异常和资源关闭。SQL与代码强耦合:SQL硬编码在Java类中,修改SQL需重新编译代码,且难
企业微信里可以使用的企业内刊制作工具,FLBOOK
2401_89139014
学习方法
如何让员工及时了解公司动态、行业资讯、学习专业知识,并有效沉淀企业文化?一份高质量的企业内刊是不可或缺的。现在让我来教你该怎么制作企业内刊吧1.登录与上传访问FLBOOK官网,注册账号后上传排版好的文档2.选择模板FLBOOK提供了丰富的模板库,你可以选择适合你的企业风格的模板。点击“套用模板创建”,然后开始替换文字和图片3.添加内容在选择好的模板上,添加相关的内容。确保内容丰富多彩,包括文字、图
HTML+CSS学习笔记
潘越越
学习 笔记
目录一、emmet语法二、常用html标签使用方法:三、常用CSS样式css样式设计具体引入方式1.关于border边框的设计2.关于text文本内容的管理3.关于盒模型的分类以及position属性:4.background属性的使用5.实现样式转变持续更新……首先,整体了解有关HTML和CSS的使用,主要是为了搭建静态页面有关HTML5所需要掌握的框架:React+Reactnativeuni
JavaScript--核心语法基础
丿狴犴λ
js javascript html 前端
JavaScript--核心语法基础1.编程语言2.js历史3.js的作用4.JS组成部分5.JS的使用5.1引入方式5.2script位置5.3语法规则5.46.变量(重点)6.1什么是变量?6.2创建变量6.3变量命名规则7、数据类型(重难点)7.1分类7.2基本数据类型7.3引用数据类型--对象(object)7.4数据类型的检测8.数据类型的转换8.1隐式转换8.2强制转换9.运算符9.1
使用 Vosk 实现语音识别
分发吧
语音识别 xcode 人工智能
在近两年里,如果说想要在本地部署离线语音识别模型,那么Whisper和FunASR肯定是首选项。所以为什么要使用Vosk呢?优势Vosk是一个离线开源语音识别工具包,它的优点在于:轻量:Vosk提供轻量级的模型(小于50MB大小),可以用于低功耗平台(例如Android、树莓派之类)多编程语言、多平台支持:Python、Java、Node.js、C#、C++、Rust、Go等多语种支持:支持二十多
Java面试题整理
Amberish
java
exist和in有什么区别select*fromAwhereidin(selectidfromB)有两点区别:(1)使用上的区别:exists中放一个子查询有记录返回true,无记录返回false(NULL也算有记录),in中查询结果集只能有一个字段(2)性能上的区别:in要把缓存到内存中,exists不需要缓存结果in()适合B表比A表数据小的情况exists()适合B表比A表数据大的情况当A表
全新租赁小程序系统源码 基于ThinkPHP+UniApp开发的租赁商城小程序
专业软件系统开发
源码下载 小程序 租赁商城小程序源码 租赁商城小程序 租赁小程序系统源码
内容目录一、详细介绍二、效果展示1.部分代码2.效果图展示三、学习资料下载一、详细介绍全新租赁小程序系统源码基于thinkphp+uniapp开发的租赁商城小程序基于thinkphp+uniapp开发的租赁商城小程序,提供用户物品租赁服务的应用程序方便客户搭建各种类型的租赁场景服务。通过小程序端多角色进行平台管理用户租赁商品缴纳租金及押金,员工端可操作商品出库和归还功能特性:1、装修模块可根据用户
全过程带你从入门到精通《动手学PyTorch深度学习建模与应用》第二章:2.1-2.3节详解,篇幅超了,缺的后面再补吧
环工人学Python
深度学习 pytorch 人工智能 python 机器学习
写在前面:点点关注不迷路,免费的赞和收藏走起来!后续更新第一时间提示哦,每周会更新不同内容,下周更新如何用各种模态的大模型去为你服务,编写代码。在深度学习的世界里,理解基础概念是构建复杂模型的关键。第二章“深度学习基础与PyTorch实现”将帮助我们深入理解深度学习的核心概念,并通过PyTorch实现这些概念。这一章的内容非常重要,因为它不仅涵盖了神经网络的基本原理,还介绍了激活函数、损失函数和优
webpack基础配置
吃杠碰小鸡
前端 前端工具库 webpack 前端 javascript
文章目录一、默认入口和默认出口二、资源配置三、输出文件3.1多文件入口3.2HtmlWebpackPlugin插件四、环境4.1环境变量4.2热更新五、代码分离5.1公共模块5.2懒加载5.3预获取/预加载模块六、缓存七、TreeShaking八、公共路径webpack是一个用于现代JavaScript应用程序的静态模块打包工具,在许多项目中都有应用,但是往往平台搭建以后很少去修改配置,熟悉基础配
Recat学习
freelb
学习 webpack javascript reactjs
Recatv17.x项目开发框架搭建1.创建React项目2.暴露配置文件方法一方法二3.支持less4.支持scss/sass5.安装element-ui6.路由导航(常规使用)编译出错错误一错误二错误三错误四8.Serve插件(查看打包运行效果)安装typescript支持1.创建React项目为了加速npm下载速度,先把npm设置为淘宝镜像地址。npmconfigsetregistryhtt
有关SOA 的学习材料
DanielQChen
技术讨论 IBM技术 soa ibm web
SOAfromIBMforBusinessPartnershttp://www-304.ibm.com/jct09002c/isv/soa/index.htmlSOAdesign&developmenthttp://www-306.ibm.com/software/info/developer/solutions/soadev/index.jspNewtoSOAandWebserviceshttp
Kubernetes 从零开始:手把手教你玩转容器编排王者!
Leaton Lee
kubernetes 容器
引言:为什么Kubernetes如此重要?在微服务架构盛行的今天,容器化和编排技术已经成为现代应用部署的核心。而Kubernetes(简称k8s),作为容器编排领域的“扛把子”,几乎成了每个开发者和技术团队的必修课。无论你是刚接触容器技术的小白,还是有一定经验的开发者,Kubernetes的学习曲线都堪称陡峭。本文将从零开始,手把手带你一步步掌握Kubernetes的核心概念、安装配置、常用组件以
Eclipse极速安装指南:3分钟掌握Java开发环境
三流搬砖艺术家
java java eclipse ide
目录为什么要选Eclipse?️准备工具清单步骤一:下载安装包⚙️步骤二:安装与配置步骤三:界面优化步骤四:创建第一个项目必装效率插件推荐❗常见问题排雷效率对比表为什么要选Eclipse?✅跨平台神器:Windows/Mac/Linux全支持✅免费开源:IBM开发,全球开发者共同维护✅插件生态强大:支持Java/Python/C++等20+语言✅智能代码提示:媲美IDEA的代码补全能力️准备工具清
【vLLM 学习】使用 Neuron 安装
HyperAI超神经
vLLM vLLM 开源 人工智能 深度学习 源代码 GPU 机器学习
vLLM是一款专为大语言模型推理加速而设计的框架,实现了KV缓存内存几乎零浪费,解决了内存管理瓶颈问题。更多vLLM中文文档及教程可访问→https://vllm.hyper.ai/从vLLM0.3.3版本起,支持在带有NeuronSDK的AWSTrainium/Inferentia上进行模型推理和服务。目前NeuronSDK不支持分页注意力(PagedAttention),但Transforme
WPS 加载项开发说明
金山办公开发者
JSAPI二次开发 javascript
WPS加载项结构WPS加载项由自定义功能区和网页两部分组成。自定义功能区只需要一个配置文件,对应WPS加载项目录中的ribbon.xml文件;网页部分负责执行自定义功能区对应的逻辑功能。因为不需要显示网页,所以省略了HTML文件,并用main.js来引入所有的外部JavaScript文件;在这些JavaScript文件中通常包含了一系列用JavaScript实现的函数,这些函数与自定义功能区的功能
基于 Pytorch 的全卷积网络人脸表情识别:从数据到部署的实战之旅
那年一路北
Pytorch理论+实践 pytorch 网络 人工智能
前言:本文将详细介绍基于Pytorch框架,利用全卷积网络进行人脸表情识别的完整过程,涵盖从数据集的准备、模型的设计与训练,再到模型的部署与预测,通过代码实现以及详细讲解,帮助读者深入理解并掌握这一技术。一、引言人脸表情是人类情感交流的重要方式,不同的表情能够传达出丰富的情感信息。人脸表情识别在智能交互、安防监控、心理健康分析等众多领域有着广泛的应用前景。随着深度学习技术的发展,基于卷积神经网络的
C/C++Win32编程基础详解视频下载
择善Zach
编程 C++ Win32
课题视频:C/C++Win32编程基础详解
视频知识:win32窗口的创建
windows事件机制
主讲:择善Uncle老师
学习交流群:386620625
验证码:625
--
Guava Cache使用笔记
bylijinnan
java guava cache
1.Guava Cache的get/getIfPresent方法当参数为null时会抛空指针异常
我刚开始使用时还以为Guava Cache跟HashMap一样,get(null)返回null。
实际上Guava整体设计思想就是拒绝null的,很多地方都会执行com.google.common.base.Preconditions.checkNotNull的检查。
2.Guava
解决ora-01652无法通过128(在temp表空间中)
0624chenhong
oracle
解决ora-01652无法通过128(在temp表空间中)扩展temp段的过程
一个sql语句后,大约花了10分钟,好不容易有一个结果,但是报了一个ora-01652错误,查阅了oracle的错误代码说明:意思是指temp表空间无法自动扩展temp段。这种问题一般有两种原因:一是临时表空间空间太小,二是不能自动扩展。
分析过程:
既然是temp表空间有问题,那当
Struct在jsp标签
不懂事的小屁孩
struct
非UI标签介绍:
控制类标签:
1:程序流程控制标签 if elseif else
<s:if test="isUsed">
<span class="label label-success">True</span>
</
按对象属性排序
换个号韩国红果果
JavaScript 对象排序
利用JavaScript进行对象排序,根据用户的年龄排序展示
<script>
var bob={
name;bob,
age:30
}
var peter={
name;peter,
age:30
}
var amy={
name;amy,
age:24
}
var mike={
name;mike,
age:29
}
var john={
大数据分析让个性化的客户体验不再遥远
蓝儿唯美
数据分析
顾客通过多种渠道制造大量数据,企业则热衷于利用这些信息来实现更为个性化的体验。
分析公司Gartner表示,高级分析会成为客户服务的关键,但是大数据分析的采用目前仅局限于不到一成的企业。 挑战在于企业还在努力适应结构化数据,疲于根据自身的客户关系管理(CRM)系统部署有效的分析框架,以及集成不同的内外部信息源。
然而,面对顾客通过数字技术参与而产生的快速变化的信息,企业需要及时作出反应。要想实
java笔记4
a-john
java
操作符
1,使用java操作符
操作符接受一个或多个参数,并生成一个新值。参数的形式与普通的方法调用不用,但是效果是相同的。加号和一元的正号(+)、减号和一元的负号(-)、乘号(*)、除号(/)以及赋值号(=)的用法与其他编程语言类似。
操作符作用于操作数,生成一个新值。另外,有些操作符可能会改变操作数自身的
从裸机编程到嵌入式Linux编程思想的转变------分而治之:驱动和应用程序
aijuans
嵌入式学习
笔者学习嵌入式Linux也有一段时间了,很奇怪的是很多书讲驱动编程方面的知识,也有很多书将ARM9方面的知识,但是从以前51形式的(对寄存器直接操作,初始化芯片的功能模块)编程方法,和思维模式,变换为基于Linux操作系统编程,讲这个思想转变的书几乎没有,让初学者走了很多弯路,撞了很多难墙。
笔者因此写上自己的学习心得,希望能给和我一样转变
在springmvc中解决FastJson循环引用的问题
asialee
循环引用 fastjson
我们先来看一个例子:
package com.elong.bms;
import java.io.OutputStream;
import java.util.HashMap;
import java.util.Map;
import co
ArrayAdapter和SimpleAdapter技术总结
百合不是茶
android SimpleAdapter ArrayAdapter 高级组件基础
ArrayAdapter比较简单,但它只能用于显示文字。而SimpleAdapter则有很强的扩展性,可以自定义出各种效果
ArrayAdapter;的数据可以是数组或者是队列
// 获得下拉框对象
AutoCompleteTextView textview = (AutoCompleteTextView) this
九封信
bijian1013
人生 励志
有时候,莫名的心情不好,不想和任何人说话,只想一个人静静的发呆。有时候,想一个人躲起来脆弱,不愿别人看到自己的伤口。有时候,走过熟悉的街角,看到熟悉的背影,突然想起一个人的脸。有时候,发现自己一夜之间就长大了。 2014,写给人
Linux下安装MySQL Web 管理工具phpMyAdmin
sunjing
PHP Install phpMyAdmin
PHP http://php.net/
phpMyAdmin http://www.phpmyadmin.net
Error compiling PHP on CentOS x64
一、安装Apache
请参阅http://billben.iteye.com/admin/blogs/1985244
二、安装依赖包
sudo yum install gd
分布式系统理论
bit1129
分布式
FLP
One famous theory in distributed computing, known as FLP after the authors Fischer, Lynch, and Patterson, proved that in a distributed system with asynchronous communication and process crashes,
ssh2整合(spring+struts2+hibernate)-附源码
白糖_
eclipse spring Hibernate mysql 项目管理
最近抽空又整理了一套ssh2框架,主要使用的技术如下:
spring做容器,管理了三层(dao,service,actioin)的对象
struts2实现与页面交互(MVC),自己做了一个异常拦截器,能拦截Action层抛出的异常
hibernate与数据库交互
BoneCp数据库连接池,据说比其它数据库连接池快20倍,仅仅是据说
MySql数据库
项目用eclipse
treetable bug记录
braveCS
table
// 插入子节点删除再插入时不能正常显示。修改:
//不知改后有没有错,先做个备忘
Tree.prototype.removeNode = function(node) {
// Recursively remove all descendants of +node+
this.unloadBranch(node);
// Remove
编程之美-电话号码对应英语单词
bylijinnan
java 算法 编程之美
import java.util.Arrays;
public class NumberToWord {
/**
* 编程之美 电话号码对应英语单词
* 题目:
* 手机上的拨号盘,每个数字都对应一些字母,比如2对应ABC,3对应DEF.........,8对应TUV,9对应WXYZ,
* 要求对一段数字,输出其代表的所有可能的字母组合
jquery ajax读书笔记
chengxuyuancsdn
jQuery ajax
1、jsp页面
<%@ page language="java" import="java.util.*" pageEncoding="GBK"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()
JWFD工作流拓扑结构解析伪码描述算法
comsci
数据结构 算法 工作 活动 J#
对工作流拓扑结构解析感兴趣的朋友可以下载附件,或者下载JWFD的全部代码进行分析
/* 流程图拓扑结构解析伪码描述算法
public java.util.ArrayList DFS(String graphid, String stepid, int j)
oracle I/O 从属进程
daizj
oracle
I/O 从属进程
I/O从属进程用于为不支持异步I/O的系统或设备模拟异步I/O.例如,磁带设备(相当慢)就不支持异步I/O.通过使用I/O 从属进程,可以让磁带机模仿通常只为磁盘驱动器提供的功能。就好像支持真正的异步I/O 一样,写设备的进程(调用者)会收集大量数据,并交由写入器写出。数据成功地写出时,写入器(此时写入器是I/O 从属进程,而不是操作系统)会通知原来的调用者,调用者则会
高级排序:希尔排序
dieslrae
希尔排序
public void shellSort(int[] array){
int limit = 1;
int temp;
int index;
while(limit <= array.length/3){
limit = limit * 3 + 1;
初二下学期难记忆单词
dcj3sjt126com
english word
kitchen 厨房
cupboard 厨柜
salt 盐
sugar 糖
oil 油
fork 叉;餐叉
spoon 匙;调羹
chopsticks 筷子
cabbage 卷心菜;洋白菜
soup 汤
Italian 意大利的
Indian 印度的
workplace 工作场所
even 甚至;更
Italy 意大利
laugh 笑
m
Go语言使用MySQL数据库进行增删改查
dcj3sjt126com
mysql
目前Internet上流行的网站构架方式是LAMP,其中的M即MySQL, 作为数据库,MySQL以免费、开源、使用方便为优势成为了很多Web开发的后端数据库存储引擎。MySQL驱动Go中支持MySQL的驱动目前比较多,有如下几种,有些是支持database/sql标准,而有些是采用了自己的实现接口,常用的有如下几种:
http://code.google.c...o-mysql-dri
git命令
shuizhaosi888
git
---------------设置全局用户名:
git config --global user.name "HanShuliang" //设置用户名
git config --global user.email "13241153187@163.com" //设置邮箱
---------------查看环境配置
git config --li
qemu-kvm 网络 nat模式 (四)
haoningabc
kvm qemu
qemu-ifup-NAT
#!/bin/bash
BRIDGE=virbr0
NETWORK=192.168.122.0
GATEWAY=192.168.122.1
NETMASK=255.255.255.0
DHCPRANGE=192.168.122.2,192.168.122.254
TFTPROOT=
BOOTP=
function check_bridge()
不要让未来的你,讨厌现在的自己
jingjing0907
生活 奋斗 工作 梦想
故事one
23岁,他大学毕业,放弃了父母安排的稳定工作,独闯京城,在家小公司混个小职位,工作还算顺手,月薪三千,混了混,混走了一年的光阴。 24岁,有了女朋友,从二环12人的集体宿舍搬到香山民居,一间平房,二人世界,爱爱爱。偶然约三朋四友,打扑克搓麻将,日子快乐似神仙; 25岁,出了几次差,调了两次岗,薪水涨了不过百,生猛狂飙的物价让现实血淋淋,无力为心爱银儿购件大牌
枚举类型详解
一路欢笑一路走
enum 枚举详解 enumset enumMap
枚举类型详解
一.Enum详解
1.1枚举类型的介绍
JDK1.5加入了一个全新的类型的”类”—枚举类型,为此JDK1.5引入了一个新的关键字enum,我们可以这样定义一个枚举类型。
Demo:一个最简单的枚举类
public enum ColorType {
RED
第11章 动画效果(上)
onestopweb
动画
index.html
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/
Eclipse中jsp、js文件编辑时,卡死现象解决汇总
ljf_home
eclipse jsp卡死 js卡死
使用Eclipse编辑jsp、js文件时,经常出现卡死现象,在网上百度了N次,经过N次优化调整后,卡死现象逐步好转,具体那个方法起到作用,不太好讲。将所有用过的方法罗列如下:
1、取消验证
windows–>perferences–>validation
把 除了manual 下面的全部点掉,build下只留 classpath dependency Valida
MySQL编程中的6个重要的实用技巧
tomcat_oracle
mysql
每一行命令都是用分号(;)作为结束
对于MySQL,第一件你必须牢记的是它的每一行命令都是用分号(;)作为结束的,但当一行MySQL被插入在PHP代码中时,最好把后面的分号省略掉,例如:
mysql_query("INSERT INTO tablename(first_name,last_name)VALUES('$first_name',$last_name')");
zoj 3820 Building Fire Stations(二分+bfs)
阿尔萨斯
Build
题目链接:zoj 3820 Building Fire Stations
题目大意:给定一棵树,选取两个建立加油站,问说所有点距离加油站距离的最大值的最小值是多少,并且任意输出一种建立加油站的方式。
解题思路:二分距离判断,判断函数的复杂度是o(n),这样的复杂度应该是o(nlogn),即使常数系数偏大,但是居然跑了4.5s,也是醉了。 判断函数里面做了3次bfs,但是每次bfs节点最多