06 2022 档案

摘要:我们在讲多线程的时候说过,创建线程是一个昂贵的操作,如果有大量的小任务需要执行,并且频繁地创建和销毁线程,实际上会消耗大量的系统资源,往往创建和消耗线程所耗费的时间比执行任务的时间还长,所以,为了提高效率,可以用线程池。 类似的,在执行JDBC的增删改查的操作时,如果每一次操作都来一次打开连接,操作 阅读全文
posted @ 2022-06-30 14:15 大于昨天 阅读(175) 评论(0) 推荐(0) 编辑
摘要:使用JDBC操作数据库的时候,经常会执行一些批量操作。 例如,一次性给会员增加可用优惠券若干,我们可以执行以下SQL代码: INSERT INTO coupons (user_id, type, expires) VALUES (123, 'DISCOUNT', '2030-12-31'); INS 阅读全文
posted @ 2022-06-29 16:07 大于昨天 阅读(48) 评论(0) 推荐(0) 编辑
摘要:要在JDBC中执行事务,本质上就是如何把多条SQL包裹在一个数据库事务中执行。 JDBC的事务代码: Connection conn = openConnection(); try { // 关闭自动提交: conn.setAutoCommit(false); // 执行多条SQL语句: inser 阅读全文
posted @ 2022-06-29 15:57 大于昨天 阅读(63) 评论(0) 推荐(0) 编辑
摘要:Read Uncommitted 是隔离级别最低的一种事务级别。 脏读(Dirty Read):在这种隔离级别下,一个事务会读到另一个事务更新后但未提交的数据,如果另一个事务回滚,那么当前事务读到的数据就是脏数据,这就是脏读(Dirty Read)。 举例:准备好students表的数据,该表仅一行 阅读全文
posted @ 2022-06-27 16:37 大于昨天 阅读(1871) 评论(0) 推荐(1) 编辑
摘要:事务在计算机术语中是指访问并可能更新数据库中各种数据项的一个程序执行单元(unit)。事务通常由高级数据库操纵语言或编程语言(如SQL,C++或Java)书写的用户程序的执行所引起,并用形如begin transaction和end transaction语句(或函数调用)来界定。事务由事务开始(b 阅读全文
posted @ 2022-06-27 16:13 大于昨天 阅读(42) 评论(0) 推荐(0) 编辑
摘要:JDBC更新 更新操作是UPDATE语句,它可以一次更新若干列的记录。更新操作和插入操作在JDBC代码的层面上实际上没有区别,除了SQL语句不同: try (Connection conn = DriverManager.getConnection(JDBC_URL, JDBC_USER, JDBC 阅读全文
posted @ 2022-06-27 14:33 大于昨天 阅读(548) 评论(0) 推荐(0) 编辑
摘要:插入操作是INSERT,即插入一条新记录。通过JDBC进行插入,本质上也是用PreparedStatement执行一条SQL语句,不过最后执行的不是executeQuery(),而是executeUpdate()。示例代码如下: try (Connection conn = DriverManage 阅读全文
posted @ 2022-06-27 12:44 大于昨天 阅读(1093) 评论(0) 推荐(0) 编辑
摘要:数据类型 使用JDBC的时候,我们需要在Java数据类型和SQL数据类型之间进行转换。JDBC在java.sql.Types定义了一组常量来表示如何映射SQL数据类型,但是平时我们使用的类型通常也就以下几种: SQL数据类型 Java数据类型 BIT, BOOL boolean INTEGER in 阅读全文
posted @ 2022-06-27 11:39 大于昨天 阅读(461) 评论(0) 推荐(0) 编辑
摘要:使用Statement拼字符串非常容易引发SQL注入的问题,这是因为SQL参数往往是从方法参数传入的。 我们来看一个例子:假设用户登录的验证方法如下: User login(String name, String pass) { ... stmt.executeQuery("SELECT * FRO 阅读全文
posted @ 2022-06-27 07:11 大于昨天 阅读(54) 评论(0) 推荐(0) 编辑
摘要:获取到JDBC连接后,下一步我们就可以查询数据库了。查询数据库分以下几步: 第一步,通过Connection提供的createStatement()方法创建一个Statement对象,用于执行一个查询; 第二步,执行Statement对象提供的executeQuery("SELECT * FROM 阅读全文
posted @ 2022-06-27 06:50 大于昨天 阅读(1391) 评论(0) 推荐(0) 编辑
摘要:JDBC连接(Connection):Connection代表一个JDBC连接,它相当于Java程序到数据库的连接(通常是TCP连接)。打开一个Connection时,需要准备URL、用户名和口令,才能成功连接到数据库。 URL是由数据库厂商指定的格式,例如,MySQL的URL是: jdbc:mys 阅读全文
posted @ 2022-06-26 23:02 大于昨天 阅读(77) 评论(0) 推荐(0) 编辑
摘要:JDBC是Java DataBase Connectivity的缩写,它是Java程序访问数据库的标准接口。JDBC接口是Java标准库(Java的标准库java.sql里)自带的,所以可以直接编译。 使用Java程序访问数据库时,Java代码并不是直接通过TCP连接去访问数据库,而是通过JDBC接 阅读全文
posted @ 2022-06-26 22:49 大于昨天 阅读(230) 评论(0) 推荐(0) 编辑
摘要:类、类属性、类方法的注释必须使用javadoc规范,使用/**内容*/格式,不得使用//xxx方式和/*xxx*/方式。使用javadoc规范后,在别处可以鼠标悬停看注释。 阅读全文
posted @ 2022-06-26 18:50 大于昨天 阅读(110) 评论(0) 推荐(0) 编辑
摘要:Java默认值问题 基本数据类型的默认值:作为类成员的基本数据类型有默认值; boolean 默认值是false ; char 默认值是'\u0000'; 其他类型默认值都是0 局部变量的基本类型可能是任意值。 创建一个数字数组时,所有元素都初始化为0;boolean数组的元素会初始化为false; 阅读全文
posted @ 2022-06-26 18:48 大于昨天 阅读(257) 评论(0) 推荐(0) 编辑
摘要:这是什么语法规则? 答:static方法是不在对象上执行的方法。它不能访问实例字段,因为它不能在对象上执行操作;只能访问static字段。 阅读全文
posted @ 2022-06-26 18:34 大于昨天 阅读(93) 评论(0) 推荐(0) 编辑
摘要:正则表达式就是一个字符串,描述一定的规则。用有限的符号,表达无限的序列。 字符 表达式 描述 [abc] 字符集。匹配集合中所含的任一字符。 [^abc] 否定字符集。匹配任何不在集合中的字符。 [a-z] 字符范围。匹配指定范围内的任意字符。 . 匹配除换行符以外的任何单个字符。 \ 转义字符。 阅读全文
posted @ 2022-06-26 18:22 大于昨天 阅读(95) 评论(0) 推荐(0) 编辑
摘要:自己生成主键: insert的参数是一个对象(除了主键id其余字段都是前台传过来的);id是由另一个服务生成的,这个服务使用了UidGenerator的getUID方法。最后拼成一个完整的pojo给dao层使用。 获取生成的主键 对于支持主键自增的数据库(MySQL): <!-- useGenera 阅读全文
posted @ 2022-06-26 17:17 大于昨天 阅读(675) 评论(0) 推荐(0) 编辑
摘要:封装(encapsulation,有时称为数据隐藏)是处理对象的一个重要概念。 从形式上看:封装是将数据和行为组合在一个包中,并对对象的使用者隐藏具体的实现方式。 实现封装的关键在于,绝对不能让类中的方法直接访问其他类的实例字段。程序只能通过对象的方法与对象数据进行交互。 阅读全文
posted @ 2022-06-25 22:57 大于昨天 阅读(1087) 评论(0) 推荐(0) 编辑
摘要:网关(Gateway)又称网间连接器、协议转换器。网关在网络层以上实现网络互连,是复杂的网络互连设备,仅用于两个高层协议不同的网络互连。网关既可以用于广域网互连,也可以用于局域网互连。 网关是一种充当转换重任的计算机系统或设备。使用在不同的通信协议、数据格式或语言,甚至体系结构完全不同的两种系统之间 阅读全文
posted @ 2022-06-22 16:41 大于昨天 阅读(486) 评论(0) 推荐(0) 编辑
摘要:跳板机:也叫前置机,是一台可以访问的服务器,再通过这台服务器去访问别的机器。跳板机可以是Linux系统,也可以是Windows系统。 用到跳板机的场景通常是由于网络原因,服务器无法连接,所以提供一台可以连接的服务器,而这台服务器可以连接服务器,这样,这台服务器就承担了一个跳板的角色。 堡垒机:也叫做 阅读全文
posted @ 2022-06-22 16:11 大于昨天 阅读(11589) 评论(0) 推荐(1) 编辑
摘要:代理: 其实就是一个中介,A和B本来可以直连,中间插入一个C,C就是中介。 正向代理: 正向代理类似一个跳板机,代理访问外部资源。 比如我们国内访问谷歌,直接访问访问不到,我们可以通过一个正向代理服务器,请求发到代理服务器,代理服务器能够访问谷歌,这样由代理去谷歌取到返回数据,再返回给我们,这样我们 阅读全文
posted @ 2022-06-22 11:48 大于昨天 阅读(8997) 评论(0) 推荐(3) 编辑
摘要:中间件:中间件,英文名称为Middleware,是一种应用于分布式系统的基础软件。从纵向层次来看,中间件位于各类应用/服务与操作系统/数据库系统以及其他系统软件之间,主要解决分布式环境下数据传输、数据访问、应用调度、系统构建和系统集成、流程管理等问题,是分布式环境下支撑应用开发、运行和集成的平台,能 阅读全文
posted @ 2022-06-08 20:42 大于昨天 阅读(398) 评论(0) 推荐(0) 编辑
摘要:什么是504错误? 504错误代表网关超时 (Gateway timeout),是指服务器作为网关或代理,不能及时地从远程服务器获得应答。服务器(不一定是 Web 服务器)正在作为一个网关或代理来完成客户(如您的浏览器或我们的 CheckUpDown 机器人)访问所需网址的请求。 为了完成您的 HT 阅读全文
posted @ 2022-06-07 08:36 大于昨天 阅读(6732) 评论(0) 推荐(0) 编辑
摘要:十六进制(简写为hex或下标16)是一种基数为16的计数系统,是一种逢16进1的进位制。通常用数字0、1、2、3、4、5、6、7、8、9和字母A、B、C、D、E、F(a、b、c、d、e、f)表示,其中:AF表示1015,这些称作十六进制数字。例如十进制数57,在二进制写作111001,在16进制写作 阅读全文
posted @ 2022-06-06 07:51 大于昨天 阅读(1797) 评论(0) 推荐(0) 编辑
摘要:抽象类和接口的对比 相关概念 抽象方法:一种不完整的方法,仅有声明没有方法体。声明抽象方法的语法:abstract void f(); 抽象类:包含抽象方法的类。如果一个类包含一个或多个抽象方法,该类必须限定为抽象的(否则编译器报错)。抽象类中可以有普通方法,即有方法体。 接口:interface关 阅读全文
posted @ 2022-06-05 21:02 大于昨天 阅读(71) 评论(0) 推荐(0) 编辑
摘要:网络编程 Java的网络通信非常简单,服务器端通过ServerSocket建立监听,客户端通过Socket连接到指定服务器后,通信双方就可以通过IO流进行通信。 OSI模型:开放系统互连参考模型(Open System InterConnection),力求将网络简化,并以模块化的方式来设计网络。O 阅读全文
posted @ 2022-06-05 09:48 大于昨天 阅读(67) 评论(0) 推荐(0) 编辑
摘要:对于开发者而言,对MySQL的调优重点一般是在「开发规范」、「数据库索引」又或者说解决线上慢查询上。规范上只要有查询需求都应该建索引。【坑】 是否能使用覆盖索引,减少回表【坑】所消耗的时间。意味着,我们在select 的时候,一定要**指明对应的列,而不是select ***。 考虑是否组建联合索引 阅读全文
posted @ 2022-06-03 07:57 大于昨天 阅读(30) 评论(0) 推荐(0) 编辑
摘要:在使用 HashMap 的时候,用 String 做 key 有什么好处? HashMap 内部实现是通过 key 的 hashcode 来确定 value 的存储位置,因为字符串是不可变的,所以当创建字符串时,它的 hashcode 被缓存下来,不需要再次计算,所以相比于其他对象更快 阅读全文
posted @ 2022-06-01 22:56 大于昨天 阅读(73) 评论(0) 推荐(0) 编辑
摘要:String、StringBuilder和StringBuffer(摘抄自技术人成长之路) 可变性 String类中使用字符数组保存字符串,private final char value[],所以string对象是不可变的。 StringBuilder与StringBuffer都继承自Abstra 阅读全文
posted @ 2022-06-01 22:52 大于昨天 阅读(20) 评论(0) 推荐(0) 编辑