Python 学习笔记 插入操作 list.insert(index,value) 在index前插入value,其他元素向后移动
搭配list.index(value)寻找下标一起使用
关于列表 list1=list2 列表赋值的本质是将列表的地址赋给另一个变量,也就是说list1和list2指向同一个地址,也就是说对于list1的任何一个操作list2一样受影响(del除外)
而del本质上是删除这个指针的指向,回收该变量名,但并不涉及内容,也就是说
list1=list2 del list2 print(list1) 在此操作中,list1依然能打印出list2的内容
排序和翻转 list.sort()
默认按照递增顺序进行排序,可以通过更改reverse参数
True为递减,False为递增 如list.sort(reverse=True)改为递减顺序
list.reverse()
将列表内所有内容反转
赋值操作
a=b b=c c=a 可简化为
a,b,c=b,c,a 列表嵌套 类比多维数组即可
列表推导式 # in后面跟其他可迭代对象,如字符串 list_c = [7 * c for c in python] print(list_c) # 带if条件语句的列表推导式 list_d = [d for d in range(6) if d % 2 != 0] print(list_d) # 多个for循环 list_e = [(e, f * f) for e in range(3) for f in range(5, 15, 5)] print(list_e) # 嵌套列表推导式,多个并列条件 list_g = [[x for x in range(g - 3, g)] for g in range(22) if g % 3 == 0 and g !
学习数据结构的 git 代码地址: https://gitee.com/zhangning187/js-data-structure-study
1、队列和双端队列 队列和栈非常类似,但是使用了与 后进先出 不同的原则。双端队列是一种将栈的原则和队列的原则混合在一起的数据结构。
1.1 队列数据结构 队列是遵循先进先出(FIFO)原则的一组有序的项。队列在尾部添加新元素,并从顶部移除元素。最新添加的元素必须排在队列的末尾。
最常见的例子就是排队。排队打饭,排队买票等,计算机里面有排队打印等。
1.1.1 创建队列类 class Queue { constructor() { // 记录队列的长度,大小 this.count = 0; // 记录队列的第一个元素 this.lowestCount = 0; // 这里也可以使用数组,但是为了获取元素时更高效,使用对象存储元素, // 和 Stack 非常类似,只是添加和移除元素的原则不同 this.items = {}; } } 1.1.2 向队列添加元素 // 向队列尾部添加项 // 这里的实现方法和 Stack 栈中的方式相同。将 count 作为items中的键对应元素作为它的值 enqueue(element) { this.items[this.count] = element; this.count++; } 1.1.3 从队列移除元素 // 移除第一项,并返回被移除的元素 dequeue() { if (this.isEmpty()) { return undefined; } const result = this.
简介: 进行事务操作主要是使用Connection中的方法:
开启事务:public void setAutoCommit(boolean autoCommit) throws SQLException true:自动提交,也就是没执行一条SQL语句都是单独的事务 false:手动提交,就相当于开启事务并在提交前都处于事务的状态中 提交事务:public void commit() throws SQLException 回滚事务:public void rollback() throws SQLException 处理事务的代码格式: try { conn.setAutoCommit(false); // 开启事务 // 执行SQL语句 // 执行SQL语句 // 执行SQL语句 // 执行SQL语句 conn.commit(); // 提交事务 }catch() { conn.rollback(); // 回滚事务 } 这样操作的话,在执行SQL语句的时候如果出现了异常,那么就马上会跳转到rollback()回滚方法,从而保证异常不会影响数据库中的数据。
同一事务中所有的操作都是一个Connection对象进行的
首先在MySQL中创建一个account表并插入几个值:
然后是Dao层的数据库连接操作代码:
package logic; import java.sql.Connection; import java.sql.SQLException; import org.junit.jupiter.api.Test; import JDBC.JdbcUtils; import dao.UpdataDao; public class TransferDemo { public void transfer(String from, String to, double money) { // 获取SQL对象 Connection conn = null; try { conn = JdbcUtils.
# 数据库配置 DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', 'NAME': 'django员工管理', 'USER': 'root', 'PASSWORD': '200209', 'HOST': '127.0.0.1', 'PORT': 3306, } } #创建数据库 python manage.py makemigrations app1 app2 python manage.py migrate
Linux命令是对Linux系统进行管理的命令。对于Linux系统来说,无论是中央处理器、内存、磁盘驱动器、键盘、鼠标,还是用户等都是文件,Linux系统管理的命令是它正常运行的核心,与之前的DOS命令类似。linux命令在系统中有两种类型:内置Shell命令和Linux命令。本文主要介绍Linux depmod 命令。 原文地址:Linux depmod 命令
4.1概述 我们在编写代码的时候出现最多的就是空指针异常,所以在很多情况下我们需要做各种非空的判断 例如:
Author author= new Author(); if(author!=null){ System.out.println(author.getName()); } 尤其是对象中的属性还是一个对象的情况下。这种判断会更多。 而过多的判断语句会让我们的代码显得臃肿不堪; 所以在JDK8中,引入了Optional ,养成使用Optional的习惯后,我们可以写出更优雅的代码来避免空指针异常。 并且在很多函数式编程相关的API中都用到了Optional,如果不会使用Optional 也会对函数式编程的学习造成影响;
4.2使用 4.2.1创建对象 Optional就好像是一个包装类,可以把我们的具体数据封装在Optional对象内部。然后我们去使用Optional中封装的方法操作封装进去的数据就可以非常优雅的避免空指针异常
1.Optional.ofNullable(author)--建议使用 我们一般使用Optional的静态方法Optional.ofNullable()来把数据封装成一个Optional对象。无论传入的参数是否为null都不会出现问题;
Author author =getAuthor(); // if(author!=null) System.out.println(author = + author.getName()); Optional<Author> authorOptional= Optional.ofNullable(author); authorOptional.ifPresent(new Consumer<Author>() { @Override public void accept(Author author) { String name = author.getName(); System.out.println(name = + name); } }); 这里我们可能觉得用一串更长的代码来尽心判断null异常不是更麻烦吗?so,我们改造一下getAuthor方法,让其返回值就是封装好的Optional的话,我们在使用时候就会方便很多; 而且在实际的开发中,我们很多的数据都是直接从数据库去查询获取的,Mybatis从3.5版本已经开始支持Optional; 我们可以直接把dao方法的返回值类型定义成Optional类型,Mybatis会自己把数据封装成Optional对象返回。封装的过程也不需要我们自己操作;
public static void main(String[] args) { Optional<Author> author = getAuthor(); author.ifPresent(new Consumer<Author>() { @Override public void accept(Author author) { System.
1.常用python模块 pandas 提供快速便捷处理结构化数据的大量数据结构和函数。使用最多的pandas对象dataframe,他是一个面向列的二维表结构,另一个是series,一个一维的标签化数组对象。 numpy 科学计算的基础包,包括多维数组,数组运算函数,线性代数运算、傅里叶变化、随机数生成。 matplotlib 流行的绘制图表和其他二维数据可视化的python库 scipy 钻们解决科学计算中各种标准问题域的包的集合 scikit-learn 机器学习工具包,子模块包括分类(svm、近邻、随机森林、逻辑回归等)、回归(lasso、岭回归等)、聚类(k-均值、谱聚类等)、降维(PCA、特征选择、矩阵分解等)、选型(网格搜索、交叉验证、度量)、预处理(特征提取、标准化) -statsmodels 统计分析包,包含经典统计学和经济计量学的算法,包括如下子模块:回归模型、方差分析、时间徐序列分析、非参数方法、统计模型结果可视化。 2.python数据结构和序列 元组:元组是一个固定长度,不可改变的python序列对象。 tup=(2,3,4)
元组(tuple)方法 tup.count(a):统计元素a在元组中出现的次数 列表: 与元组相比,列表长度可变,内容可被修改。 list=[2,3,5,none]
列表的方法: list.append(a) :将元素a添加到列表list末尾; list.insert(index,a) :将元素a添加到指定的索引index位置; list.pop(index) :将指定的索引index位置的元素移除并返回该元素; list.remove(a) :将列表中第一次出现的a元素删除 list.extend(a) :将a追加到列表当中,a可以为其他数据类型,这样拓展速度比使用+连接速度快,因为不用重新创建列表 list.sort() :将列表重新排序,不创建新对象 sorted(a) :将a有序排列,返回新对象 在列表中检索速度比字典和集合速度慢,因为列表是线性搜索,而在字典和集合中,是基于哈希表的检索,在同一时间内还可以检查其他项
列表操作 1.二分搜索和维护已排序的列表 bisect 模块支持二分查找,和向已排序的列表插入值。 bisect.bisect(list_name,element): 找到插入值后仍保证排序的位置 bisect。insort(list,index) :向列表中index位置插入值
import bisect c=[1,2,2,2,3,4,7] print(bisect.bisect(c,2)) #out:4 pirnt(bisect.bisect(c,5) #out :6 bisect.insort(c,6) print(c) #out :[1,2,2,2,3,4,6,7] 2.常用函数 enumerate函数: 可以返回元组序列;
some_list=['foo','bar','baz'] mapping={} for i ,v in enumerate(some_list): mapping[v]=i print(mapping) #out:{'bar':1,'baz':2;'foo':0} zip函数: zip函数可以将多个列表、元组或其他序列晨读组合城一个元组列表:
java在IDEA中打成jar包步骤:
1.
2.
3. 此处选择extract to traget JAR 。 Main Class选择你要启动的main函数所在的类。 MANIFEST.MF不是很了解,选择src比较好一点。
4. 此处可以修改打包的内容,也可以把lib下的dll文件打入jar包中,但是相对路径一直出问题,所以最后用的绝对路径,故就不把dll文件打入jar包了。
5. 上述配置完后,进行打包
6. 选择你刚才设置的jar,然后选择build或者rebuild
7. 针对打包后xml相对路径不对的问题,可以用springframework下的 ClassPathResource方法使用相对路径。
//2.防止导包错误的写法 Resource resource = new ClassPathResource(base.xml); InputStream is = resource.getInputStream(); Document doc = reader.read(is); //Document doc = reader.read(new File(src\\main\\resources\\base.xml)); 原来打包后路径错误的代码 8. 打包完成后启动jar包。要是对java版本有要求,可以去对应jdk的bin目录下选择相应的java.exe,然后执行下图中的命令。
参考链接:
Mybatis动态SQL 1. 注解开发 我们也可以使用注解的形式来进行开发,用注解来替换掉xml。 使用注解来映射简单语句会使代码显得更加简洁,但对于稍微复杂一点的语句,Java 注解不仅力不从心,还会让你本就复杂的 SQL 语句更加混乱不堪。 所以我们在实际企业开发中一般都是使用XML的形式。
1.1 步骤 ①在核心配置文件中配置mapper接口所在的包名
<mappers> <package name=com.sangeng.dao></package> </mappers> ②在接口对应方法上使用注解来配置需要执行的sql
public interface UserDao { @Select(select * from user) List<User> findAll(); @Insert(insert into user values(null,#{username},#{age},#{address})) void insertUser(User user); @Update(UPDATE USER SET age = #{age} , username = #{username},address = #{address} WHERE id = #{id}) void updateUser(User user); @Delete(delete from user where id = #{id}) void deleteById(Integer id); } ③和之前的一样获取Mapper调用方法即可
public static void main(String[] args) throws IOException { //定义mybatis配置文件的路径 String resource = mybatis-config.