next

java-集合框架

荒凉一梦 提交于 2020-11-10 05:03:08
一 集合的由来 需求1:20个学员。用Student描述,创建Student对象。 既然对象很多先进行存储---数组。 Student[] stus = new Student[20]; 需求2:又来来了一个新学员。 原来的容器用不了。数组的长度是固定的。 解决: 创建一个新数组,将原来数组中的元素复制到新数组中。 麻烦。Java中提供解决问题的对象---->集合。 当数据多了需要存储,需要容器,而数据的个数不确定,无法使用数组,这时可以使用Java中另一个容器--集合。 集合和数组的区别? 数组的长度是固定的。 集合的长度是可变的。 数组中存储的是同一类型的元素,可以存储基本数据类型值。 集合存储的都是对象。而且对象的类型可以不一致。 什么时候使用集合呢? 当对象多的时候,先进行存储。 这些容器怎么区分? 区分的方式:每一个容器的数据结构不一样。 数据存储到的一种方式。 不断的向上抽取过程中,出现体现,形成了集合框架。 最顶层:Collection接口。 学习体系:看顶层,用底层。 了解顶层Collection: 一个容器:添加,删除,获取等功能。 Collection: |--List:有序的,带索引的,通过索引就可以精确的操作集合中的元素,元素是可以重复的。 List提供了增删改查动作 增加add(element) add(index,element) ; 删除remove

零基础学习java------25--------jdbc

痞子三分冷 提交于 2020-11-09 20:29:27
jdbc开发步骤图 以下要用到的products表 一. JDBC简介   JDBC(java Data Base Connectivity,java数据库连接)是一种用于执行SQL语句的API,可以为多种关系数据库提供统一访问,它由一组用java语言编写的类和接口组成。JDBC提供了一种基准,据此可以构建更高级的工具和接口,使数据库开发人员能够编写数据库应用程序 (1)Java DataBase Connectivity(java数据库连接) (2)组成包:java.sql.*;javax.sql.*;这两个包都包含在了JDK中。 (3)还需要数据库的驱动,这些驱动就相当于对JDBC规范的实现 主要接口或类 1. DriverManger 作用:   a. 注册驱动   b. 获取与数据库的连接 改进注册驱动:   DriverManager.registerDriver(new com.mysql.jdbc.Driver());   缺点:严重依赖具体的驱动类(导入什么驱动的包就只能注册什么驱动),会导致驱动被注册2次。 获取与数据库的连接   DriverManager.getConnection("jdbc:mysql://localhost:3306/ssm", "root", "hang"); //ssm为数据库名 2. Connection  

【MySQL】mysql中的锁机制

馋奶兔 提交于 2020-11-09 12:50:39
一、分类 MySQL的锁机制不同的存储引擎支持不同的锁机制,分为表级锁、 行级锁、 页面锁。MyISAM和MEMORY存储引擎采用的是表级锁(table-level locking);BDB存储引擎采用的是页面锁(page-level locking),但也支持表级锁;InnoDB存储引擎既支持行级锁(row-level locking),也支持表级锁,但默认情况下是采用行级锁 表级锁: 开销小,加锁快;不会出现死锁;锁定粒度大,发生锁冲突的概率最高,并发度最低。 行级锁: 开销大,加锁慢;会出现死锁;锁定粒度最小,发生锁冲突的概率最低,并发度也最高。 页面锁: 开销和加锁时间界于表锁和行锁之间;会出现死锁;锁定粒度界于表锁和行锁之间,并发度一般 二、表级锁 MySQL的表级锁有两种模式: 表共享读锁(Table Read Lock) 和 表独占写锁(Table Write Lock) 。 对MyISAM表的读操作,不会阻塞其他用户对同一表的读请求,但会阻塞对同一表的写请求;对 MyISAM表的写操作,则会阻塞其他用户对同一表的读和写操作。 MyISAM在执行查询语句(SELECT)前,会自动给涉及的所有表加读锁,在执行更新操作 (UPDATE、DELETE、INSERT等)前,会自动给涉及的表加写锁,这个过程并不需要用户干预,因此,用户一般不需要直接用LOCK

手写一个 Redis 客户端,So easy~

天大地大妈咪最大 提交于 2020-11-09 09:54:55
前言 这篇文章很简单,就是写一个 Java 版本的 Redis Client,而且不是一个生产级别的项目,只是一个验证类型的 demo。用于了解 “ 实现一个 Redis Client ” 需要注意哪些事情。 思考 首先,Redis 是一个服务器,有 ip,有端口,那么,我们就可以用 Java 的 Socket 来和他交互,也可以用 telnet 来交互。说白了,就是一个 TCP 服务器,只要打开了 TCP 通道,然后进行一次连接 3 次握手,建立起全双工通道,就能够互相发送数据。 从我们之前的编程经验中,我知道,和一个服务器交互,通常是需要协议的,例如 HTTP 服务器,你需要 HTTP 协议,和 Dubbo 交互,你需要了解 Dubbo 协议,当然,这些都是建立在 TCP 协议之上的。那么,Redis 大概也是有协议的,我们后面再看。 动手 思考了上面的两点,我们可以尝试动手。 我们可以先用 telnet 访问以下本地的 Redis Server,例如 : telnet 127.0.0.1 6379 ,如下: ➜ master telnet 127.0.0.1 6379 Trying 127.0.0.1... Connected to localhost. Escape character is '^\]'. set baby hello +OK get baby $5

[Python从零到壹] 五.网络爬虫之BeautifulSoup基础语法万字详解

為{幸葍}努か 提交于 2020-11-09 08:51:07
欢迎大家来到“Python从零到壹”,在这里我将分享约200篇Python系列文章,带大家一起去学习和玩耍,看看Python这个有趣的世界。所有文章都将结合案例、代码和作者的经验讲解,真心想把自己近十年的编程经验分享给大家,希望对您有所帮助,文章中不足之处也请海涵。Python系列整体框架包括基础语法10篇、网络爬虫30篇、可视化分析10篇、机器学习20篇、大数据分析20篇、图像识别30篇、人工智能40篇、Python安全20篇、其他技巧10篇。您的关注、点赞和转发就是对秀璋最大的支持,知识无价人有情,希望我们都能在人生路上开心快乐、共同成长。 前一篇文章讲述了基于正则表达式的Python爬虫以及Python常用的爬虫模块,而Python强大的网络支持能力和丰富的扩展包是否也提供了相关的爬虫包呢?答案是肯定的。本篇文章主要讲解BeautifulSoup技术。BeautifulSoup是一个可以从HTML或XML文件中提取数据的Python库,一个分析HTML或XML文件的解析器。本章将介绍BeautifulSoup技术,包括安装过程和基础语法,并通过分析HTML实例来介绍BeautifulSoup解析网页的过程。 本文参考了作者CSDN的文章,链接如下: https://blog.csdn.net/Eastmount https://github.com/eastmountyxz

[译]Vulkan教程(20)重建交换链

淺唱寂寞╮ 提交于 2020-11-08 23:19:17
[译]Vulkan教程(20)重建交换链 Swap chain recreation 重建交换链 Introduction 入门 The application we have now successfully draws a triangle, but there are some circumstances that it isn't handling properly yet. It is possible for the window surface to change such that the swap chain is no longer compatible with it. One of the reasons that could cause this to happen is the size of the window changing. We have to catch these events and recreate the swap chain. 我们现在的程序成功地绘制了一个三角形,但是有的情况它处理的不合适。窗口surface可能改变,使得交换链不再与之兼容。可能的原因之一是,窗口的大小改变了。我们必须捕捉这些事件,并重建交换链。 Recreating the swap chain 重建交换链 Create a new

第五章编程

痞子三分冷 提交于 2020-11-08 22:31:15
**2 打印数值** #include<stdio.h> int main() { int a, b; printf("输入你要的数字: "); scanf("%d", &a); b = a; while (b <= a + 10) { printf("%d\n", b); b++; } } ```` ** 3 天换周** #include <stdio.h> int main() { int a, b, c; printf("请输入天数:"); scanf("%d", &a); printf("%d天=%d周%d天\n", a, a / 7, a % 7); return 0; } ```` ** 4 身高转换 ** #include <stdio.h> #define a 30.48 #define b 2.54 int main() { int feet; float inches, cm; printf("CONVERT CM TO INCHES!\n"); printf("Enter the hight in centimeters:"); scanf("%f", &cm); while (cm > 0) { feet = cm / a; inches = (cm - feet * a / b); printf("%.1fcm=%dfeet,%.1f inches\n",

阿里精选:Java 代码精简之道

烈酒焚心 提交于 2020-11-08 20:21:51
Photo @ Priscilla Du Preez 文 | 常意 前言 古语有云: 道为术之灵,术为道之体;以道统术,以术得道。 其中:“道”指“规律、道理、理论”,“术”指“方法、技巧、技术”。意思是:“道”是“术”的灵魂,“术”是“道”的肉体;可以用“道”来统管“术”,也可以从“术”中获得“道”。 在拜读大佬“孤尽”的文章 《Code Review是苦涩但有意思的修行》 时,感受最深的一句话就是:“优质的代码一定是少即是多的精兵原则”,这就是大佬的代码精简之“道”。 工匠追求“术”到极致,其实就是在寻“道”,且离悟“道”也就不远了,亦或是已经得道,这就是“工匠精神”——一种追求“以术得道”的精神。如果一个工匠只满足于“术”,不能追求“术”到极致去悟“道”,那只是一个靠“术”养家糊口的工匠而已。作者根据多年来的实践探索,总结了大量的 Java 代码精简之“术”,试图阐述出心中的 Java 代码精简之“道”。 1.利用语法 1.1.利用三元表达式 普通: String title;if (isMember(phone)) { title = "会员";} else { title = "游客";} 精简: String title = isMember(phone) ? "会员" : "游客"; 注意:对于包装类型的算术计算,需要注意避免拆包时的空指针问题。 1.2.利用 for

Mysql安装(win10 64位)

白昼怎懂夜的黑 提交于 2020-11-08 18:52:10
  公司的测试数据库只有读的权限,而且还不能用IP和端口去访问,所有很多时候不方便(尤其是想练手的时候)。闲着也是闲着,自己搭建一个Mysql数据库出来。以下操作,全部基于win10专业版 64位,仅供参考。 一、环境准备   在装Mysql之前,需要保证你的电脑中装有.net framework 4.0及以上版本。(我的电脑自带了,所以这里略过) 二、准备安装包 1、去Mysql官网找个安装包, https://dev.mysql.com/downloads/windows/installer/8.0.html (可以注册一个账号,如果嫌麻烦不想注册,左下角有个跳过的按钮) 三、开始安装 1、以管理员身份运行cmd,cmd中运行安装包(个人习惯,专业性较强的软件一般用管理员身份运行) 2、一路Next,后续包括配置的一些东西。以下为几个关键性截图(若途中提示缺失什么库,那就自动安装对应的库,我失败了两次,第三次才成功安装) 四、安装成功的验证 1、左下角,点击win键,切入菜单栏 2、输入root用户的密码,回车,显示Mysql>标记 3、来条命令看看效果(注意,必须以分号;结尾) 来源: oschina 链接: https://my.oschina.net/u/4379768/blog/3932754

nginx 代理ssh

别等时光非礼了梦想. 提交于 2020-11-08 15:37:34
events { worker_connections 1024; } stream { #stream模块,就跟http模块一样 upstream ssh { server 127.0.0.1:22; } server { #里面可以有多个监听服务,配置监听端口和代理的ip和端口就可以进行tcp代理了。 listen 9922; proxy_pass ssh; proxy_connect_timeout 1h; proxy_timeout 1h; } }    http代理 server { listen 8844; server_name 127.0.0.1; location / { proxy_read_timeout 1800; proxy_next_upstream http_502 http_504 error timeout invalid_header; proxy_set_header Host $host; proxy_set_header X-Forwarded-For $remote_addr; proxy_pass http://192.168.1.253:808; } }    日志 stream{ log_format proxy '[$time_local] remote_addr:$remote_addr $protocol status: