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源码分析(一))
【31】单片机编程核心技巧:Switch驱动多任务跑马灯
智木芯语
【编程技巧】 单片机 嵌入式硬件 #STC8 #STM32
【31】单片机编程核心技巧:Switch驱动多任务跑马灯七律·双驱Switch双驱控双灯,状态分治显神通。步骤变量定乾坤,定时中断显锋芒。电光石火随心转,程序逻辑自分明。单片机中真王者,一招一式定乾坤。摘要本文以STC8H单片机为例,通过Switch语句实现两路独立的跑马灯控制,系统阐述其多任务并行机制、步骤变量管理及代码实现。Switch语句通过独立的步骤变量(run_step1和run_ste
docker mysql 迁移_Docker跨服务器迁移
weixin_39687468
docker mysql 迁移
Docker跨服务器迁移Docker的备份方式有export和save两种。export是当前的状态,针对的是容器,dockersave是针对镜像images。一、镜像的迁移—save1.镜像保存登陆到已经部署好镜像的服务器上面,执行以下命令进行导出[root@snowedfiles_backup]#dockersave97fd>docker-image-mysql-5.6.40.tar2.将镜像
docker迁移mysql_Docker迁移Mysql
麟翛
docker迁移mysql
这几天遇到一个数据迁移的需求,要把老服务器的数据迁移到新的服务器上去,因为Mysql是放在Docker里面的,所以只需要迁移配置文件和数据卷即可,但是这过程中并不是一帆风顺的,特此记录一下。从旧的服务器上查看Mysql容器的信息。首先使用dockerps来查看正在运行的容器,如果你的容器尚未运行,那么执行这条命令dockerps-a使用dockerinspectContainName查看Mysql
电子科技大学2021计算机考研复试科目,2021西安电子科技大学考研复试时间_西安交通大学考研复试科目...
写手一条城
2021考研初试已经落下帷幕,现在就是等待考研成绩及复试的环节了,大家可以预约2021考研成绩查询,一经发布立马提醒,现在同学只需要调整好状态继续前进,准备复试啦!陕西研招网跟大家分享“2021西安电子科技大学考研复试时间_西安电子科技大学考研复试科目”,大家可以参考一下~12月26-28日西安电子科技大学考研初试。预计2月中旬,西安电子科技大学公布初试成绩。3月上旬,34所自划线公布。高分过线的
python基础版课件_Python入门基础ppt课件.ppt
六间仓库的仓老师
python基础版课件
《Python入门基础ppt课件.ppt》由会员分享,可在线阅读,更多相关《Python入门基础ppt课件.ppt(30页珍藏版)》请在人人文库网上搜索。1、Python语言基础,1,Python诞生于20世纪90年代初,是一种解释型、面向对象、动态数据类型的高级程序设计语言,是最受欢迎的程序设计语言之一。这节课我们主要来介绍Python语言的基本情况和基础知识。,课程描述,2,课程知识点,1初识
IDEA Reformat Code 避免将多行参数或多行方法链调用合并成一行
阿湯哥
intellij-idea java ide
在IntelliJIDEA中,如果你希望在进行代码格式化(ReformatCode)时,避免将多行参数或多行方法链调用合并成一行,可以通过以下步骤进行设置:1.打开设置在IntelliJIDEA中,点击File菜单,然后选择Settings(Windows/Linux)或Preferences(macOS)。2.进入代码格式化设置在设置窗口中,导航到Editor->CodeStyle->Java(
GIT日常记录
码农汉子
elasticsearch 大数据 搜索引擎
sudogitclonehttps://gitee.com/yiketalks/yike_admin.git命令行下载项目命令(进入本地项目地址下)//查看远程仓库地址gitremote-v//切换远程仓库gitremoteset-urloriginhttps://gitee.com/yike_php/yike_work.git分支操作gitbranch//显示分支一览表,同时确认当前所在的分支1
加密狗工作原理和破解方法简介
阿湯哥
安全 加密狗 硬件加密 软件加密
加密狗破解原理和破解方法介绍工作原理破解方法总结参考工作原理加密狗是目前流行的一种软件加密工具。它是插在计算机接口上的软硬件结合的软件加密产品。一般有USB口和并口两种,又称USB加密狗和并口加密狗,目前流行的一般是USB加密狗,并口加密狗在前几年的时候用得比较多。加密狗内部一般都有几十到几十K字节的存储空间可供读写,有的内部还增添了一个单片机。软件运行时通过向狗发送消息,判断从接口返回密码(简单
ES的预置分词器
阿湯哥
elasticsearch 服务器 linux
Elasticsearch(简称ES)提供了多种预置的分词器(Analyzer),用于对文本进行分词处理。分词器通常由字符过滤器(CharacterFilters)、分词器(Tokenizer)和词元过滤器(TokenFilters)组成。以下是一些常用的预置分词器及其示例:1.StandardAnalyzer(标准分词器)默认分词器,适用于大多数语言。处理步骤:使用标准分词器(StandardT
国央企AI落地:以智能客服系统为突破口的详细实施方案探讨
数商云网络
B2B系统 数字化 电商平台 人工智能 大数据 架构 java 微服务 spring
一、引言随着人工智能(AI)技术的飞速发展和广泛应用,国央企作为国民经济的重要支柱,正积极探索AI技术在企业管理、业务运营等方面的应用。智能客服系统作为AI技术的一个重要应用领域,具有提升服务效率、增强用户体验、降低运营成本等显著优势,成为国央企AI落地的重要突破口。本文将详细探讨国央企如何以智能客服系统为突破口,实施AI技术的落地应用,并结合数商云在智能客服系统领域的实践经验,为国央企提供一套切
打卡信奥刷题(775)用C++信奥P9945[普及组/提高] [USACO21FEB] Clockwise Fence B
Loge编程生活
C++ c++ 算法 开发语言 数据结构 青少年编程
P9945[USACO21FEB]ClockwiseFenceB题目描述围绕FarmerJohn最大的草地的栅栏已经损坏了,如今他终于决定要换一个新的栅栏。不幸的是,当FarmerJohn在铺设新栅栏时,一只巨大的蜜蜂突然出现,在他的草地上追着他跑,导致最后栅栏被沿着一条相当不规则的路径铺设。栅栏可以用一个字符串表示,每个字符为N(north,北)、E(east,东)、S(south,南)、W(w
打卡信奥刷题(641)用C++信奥P8267[普及组/提高] [USACO22OPEN] Counting Liars B
Loge编程生活
C++ c++ 开发语言 算法 青少年编程 数据结构
[USACO22OPEN]CountingLiarsB题目描述奶牛Bessie躲在数轴上的某处。FarmerJohn的NNN头奶牛(1≤N≤10001\leN\le10001≤N≤1000)中的每头奶牛都有一条信息要分享:第iii头奶牛说Bessie躲在小于或等于pip_ipi的某个位置,或者说Bessie躲在大于或等于pip_ipi的某个位置(0≤pi≤1090\lep_i\le10^90≤pi
打卡信奥刷题(036)用C++信奥P9950[普及组/提高] [USACO20FEB] Mad Scientist B
Loge编程生活
C++ c++ 开发语言 算法 青少年编程 数据结构
[USACO20FEB]MadScientistB题目描述FarmerJohn的远房亲戚Ben是一个疯狂的科学家。通常这会在家庭聚会时造成不小的摩擦,但这偶尔也会带来些好处,尤其是当FarmerJohn发现他正面对一些有关他的奶牛们的独特而不寻常的问题时。FarmerJohn当前正面对一个有关她的奶牛们的独特而不寻常的问题。他最近订购了NNN头奶牛(1≤N≤10001\leN\le10001≤N≤
软件测试工程师面试题(含答案)
美团程序员
自动化测试 软件测试 软件测试面试 软件测试 软件测试面试 面试 职场和发展
面试题列表1、自我介绍,涉及工作经历答:基本信息+擅长测试方向+个人突出亮点+以往工作经历等等。2、在公司中测试的流程是什么答:测试流程:需求评审>测试计划>测试计划>测试方案>编写用例>执行用例>回归测试>提交缺陷报告>提交测试报告3、举例一个项目,在项目中做了什么答:可以聊聊做了性能、自动化、工具开发,测试平台开发、功能等自己擅长的地方。4、如何提升测试效率,如何保障测试质量答:测试人员应该从
从零开始学机器学习——构建一个推荐web应用
努力的小雨
机器学习 机器学习 前端 人工智能
首先给大家介绍一个很好用的学习地址:https://cloudstudio.net/columns今天,我们终于将分类器这一章节学习完活了,和回归一样,最后一章节用来构建web应用程序,我们会回顾之前所学的知识点,并新增一个web应用用来让模型和用户交互。所以今天的主题是美食推荐。美食推荐Web应用程序首先,请不要担心,本章节并不会涉及过多的前端知识点。我们此次的学习重点在于机器学习本身,因此我们
docker容器迁移,以mysql容器为例
风萧易去情难还
docker docker mysql 容器
在容器化环境中,容器迁移是确保应用程序在不同环境中平滑部署和运行的关键。本文将详细介绍如何将一个正在运行的MySQL容器从一台机器迁移到另一台机器。特别内网安装数据库等软件时,所需依赖和工具下载困难,可以通过镜像迁移方式完成软件安装。一、准备工作在开始迁移之前,我们需要准备以下几项工作:源机器(A机器):正在运行的MySQL容器。#拉取mysql镜像dockerpullmysql:8.0.25#创
【西安电子科技大学考研】25官方复试专业课参考书目汇总
西电研梦
考研 西电 经验分享 面试 西安电子科技大学
初试已经顺利考完啦、成绩已经公布,现在已经有很多同学来问学长学姐,复试参考书有哪些,复试应该做好哪些准备。故此学长学姐给大家整理好了西安电子科技大学各个学院的复试参考书目录,有需要的同学可以参考一下哈。大家可以结合本篇文章内容与招生目录参考书对比一下:【西电考研复试资料、讲课班陆续上线中~~~】有的参考书更新了版本,但是招生目录里仍然是之前的一些旧版本,关于参考书的版本问题,大家也可以在群内问一下
西安电子科技大学 | 近期官方视频+文章(涵盖招生+录取统计)
西电研梦
西电 经验分享 考研
今年、明年考研的学弟学妹们可以看看涵盖今年讲课西电录取统计【西安电子科技大学官方】研究生招生宣传你一定值得一看02、计算机科学与技术学院(近期视频+文章)QQ群:867684593①、西电考研|833、834初+复试第一名许学长经验分享https://www.bilibili.com/video/BV1oE4m1R72a/②、25西电考研|计科院专业课139分学长经验分享https://www.b
西安电子科技大学考研833计算机专业基础综合初试备考经验
西电研梦
考研
本人21考研,报考西安电子科技大学。初试分数345。本科211机电专业,去年毕业出国受阻因此6月决定跨考西电计算机学硕833。回想自己备考的经历,有一些经验与不足之处,在这里分享给大家,尤其是一些跨考的同学。本次分别介绍数学、英语、政治、专业课、复试经历五部分。数学:数学和专业课是初试四门中最为重要的两门,决定能不能考上研基本就看这两门的复习情况!因为西电专硕学硕都是考察数学一,所以不需要考虑是否
rStar论文精读
MoyiTech
推理模型 OpenAI-O1原理
论文简介论文标题:《MutualreasoningmakessmallerLLMsstrongerproblem-solvers》论文地址:https://arxiv.org/abs/2408.06195录用会议:ICLR2025背景与挑战挑战1:在SLM中平衡exploration与exploitation。一些方法有很大的exploitation但限制任务多样性泛化性不好;一些方法有很大的ex
Hive SQL 精进系列:REGEXP_REPLACE 函数的用法
进一步有进一步的欢喜
Hive SQL 精进系列 hive sql hadoop
目录一、引言二、REGEXP_REPLACE函数基础2.1基本语法参数详解2.2简单示例三、REGEXP_REPLACE函数的应用场景3.1去除特殊字符3.2统一字符串格式四、REGEXP_REPLACE与REPLACE函数的对比4.1功能差异4.2适用场景五、REGEXP_REPLACE与REGEXP函数的对比5.1功能差异5.2适用场景六、总结一、引言字符串处理是数据处理中的常见需求,Hive
国产芯片替代方案:解析沁恒USB桥接芯片转四串/双串/单串口
禾川兴 13242400688
沁恒直替系列 单片机 嵌入式硬件 桥接模式
沁恒国产USB桥接芯片:高兼容性方案加速国产化替代随着USB通信接口在工业控制、消费电子、智能设备等领域的广泛应用,国产芯片厂商沁恒微电子(WCH)推出了一系列高性能USB转串口芯片,以高集成度、低成本、全兼容设计实现对国际品牌芯片的完美替代。本文针对沁恒多款USB桥接芯片与国际主流型号进行对比,展现其技术竞争力与国产化价值。一、沁恒USB桥接芯片核心优势全兼容设计硬件引脚定义、封装尺寸、
Hive SQL 精进系列:SUBSTR 函数的多样用法
进一步有进一步的欢喜
Hive SQL 精进系列 hive sql hadoop
目录一、引言二、SUBSTR函数基础介绍2.1基本语法2.2参数详解2.3简单示例三、SUBSTR函数常见应用场景3.1提取日期中的年份、月份或日期3.2隐藏部分敏感信息四、SUBSTR函数高级用法4.1结合条件判断动态截取4.2处理复杂字符串模式五、总结一、引言SUBSTR函数是HiveSQL中一个用于字符串截取的重要函数,在处理文本数据时发挥着关键作用。本文将全面且深入地介绍HiveSQL中S
嵌入式Linux网络编程实战:基于DNS解析的HTTP客户端实现
银河码
Linux网络编程 网络 linux http c语言 windows vscode json
嵌入式Linux网络编程实战:基于DNS解析的HTTP客户端实现【本文代码已在树莓派4B(Linux内核5.10)平台验证通过,适用于物联网设备数据上报等场景】一、需求场景与功能亮点1.1典型物联网通信场景嵌入式设备DNS服务器云服务器域名解析请求返回目标IP发送传感器数据返回HTTP响应嵌入式设备DNS服务器云服务器1.2代码核心功能DNS智能解析:支持域名自动转换为IPv4地址协议合规性:严格
在使用selenium进行爬虫时, add_experimental_optio(),add_argument()的用法
数据牧马人
selenium 爬虫 测试工具
driver.add_experimental_option('excludeSwitches',['enable-automation'])是在使用SeleniumWebDriver与浏览器交互时设置的一行代码。这行代码用于禁用浏览器中的自动化检测。具体来说,当你在使用SeleniumWebDriver与浏览器交互时,有些浏览器(例如GoogleChrome)可能会检测到自动化行为(例如,通过检
【2025年春季】全国CTF夺旗赛-从零基础入门到竞赛,看这一篇就稳了!
白帽子凯哥
web安全 学习 安全 CTF夺旗赛 网络安全
基于入门网络安全/黑客打造的:黑客&网络安全入门&进阶学习资源包目录一、CTF简介二、CTF竞赛模式三、CTF各大题型简介四、CTF学习路线4.1、初期1、html+css+js(2-3天)2、apache+php(4-5天)3、mysql(2-3天)4、python(2-3天)5、burpsuite(1-2天)4.2、中期1、SQL注入(7-8天)2、文件上传(7-8天)3、其他漏洞(14-15
计算机信息安全
若水心境
软件架构师知识库 信息安全
等保2.0与等保1.0区别※等保2.0在2019年12月1日正式实施。等级保护制度2.0在1.0的基础上,注重全方位主动防御、动态防御、整体防控和精准防护,实现对云计算、移动互联网、物联网、工业控制信息系统等保护对象全覆盖。对象范围扩大将云计算、移动互联网、物联网、工业控制系统等技术列入标准中。分类结构统一“基本要求、设计要求和测评要求”分类框架统一,形成了“安全通信网络”、“安全区域边界”、“安
CVE-2017-5645(使用 docker 搭建)
JM丫
网络安全
介绍:是一个与ApacheLog4j2相关的安全漏洞,属于远程代码执行,它可能允许攻击者通过构造恶意的日志信息在目标系统上执行任意代码Log4j2介绍Log4j2是Apache的一个日志记录工具,属于Java应用的日志框架,它是Log4j的升级版,性能更好,功能更多.它被广泛的适用于Java应用程序中,帮助开发者记录程序运行的时候的日子信息,是Java生态系统中最重要的一个日志框架之一漏洞编号:C
浩方wms:什么是海外仓WMS系统?作用是什么?
haofang_software
大数据 个人开发 sass 数据库 科技
浩方动力科技认为,海外仓作为连接卖家与海外消费者的关键节点,其重要性愈发凸显。海外仓WMS系统(WarehouseManagementSystem),作为一种专门针对海外仓运营的信息化管理系统,正成为提升海外仓运营效率和服务水平的得力助手。什么是海外仓WMS系统呢?海外仓管理系统又有什么作用?浩方WMS,今天来为大家讲解一下海外仓WMS的作用和意义。海外仓WMS系统,顾名思义,是专为海外仓储业务设
云原生:K8s(Kubernetes)高频典型面试题汇总
老舅的火箭爱扫地
云原生 kubernetes 容器
1.简述etcd及其特点?答:etcd是CoreOS团队发起的开源项目,是一个管理配置信息和服务发现(servicediscovery)的项目,它的目标是构建一个高可用的分布式键值(key-value)数据库,基于Go语言实现。特点:l简单:支持REST风格的HTTP+JSONAPIl安全:支持HTTPS方式的访问l快速:支持并发1k/s的写操作l可靠:支持分布式结构,基于Raft的一致性算法,R
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