- 博客(33)
- 收藏
- 关注
原创 数据库表字段类型选择
数据库中有很多字段结构,例如整型、浮点型、文本、日期与时间等常用类型,每个结构中又分了很多种类型,如果我们类型定义的合理,就能节省数据库的存储空间,提升数据查询和处理的速度。如何合理去定义类型?带着这个疑问,我们今天来探讨一下数据库类型的合理定义。
2023-02-02 16:01:19
719
原创 分布式ID,分布式锁?看完不懂回家种田
某一张,影响读写效率,为了解决这样的问题,我们可以将一个大的(分库分表)(主从、读写分离),但是,此时响应的速度就达不到要求了。 此时我们可以(例如10亿数据,拆分成100个表,这样的数据就只有1000万)。,这样一来,就 基于上述背景,一个能够的系统是非常必要的,表A中数据的ID是1、2、3,表B中数据的ID是4、5、6。
2022-12-29 23:39:52
516
原创 Spring创建Bean的流程
BeanDefinition 是定义 Bean 的配置元信息接口Bean 的类名设置父 bean 名称Bean 行为配置信息,作用域、自动绑定模式、生命周期回调、延迟加载、初始方法、销毁方法等Bean 之间的依赖设置,dependencies构造参数、属性设置。
2022-11-03 17:28:12
1698
原创 SpringBoot自动装配原理
可以看到,我们的集合在这个方法内的名称是configurations,而他,是通过SpringFactoriesLoader.loadFactoryNames方法得到的。于是就诞生了一个想法:一个配置文件都不想写,程序还能照样跑,我只关心有我需要的组件就可以了,我只需要关注我的目标就可以了,并经过一系列的过滤、去重等,最后将需要的配置类加载,生成BD对象,创建Bean对象,放入spring容器。它的返回值是一个String[]数组,可以推断出来这个数组里的元素就是我们需要向Spring容器导入的东西。
2022-11-01 14:10:11
187
原创 手拿把掐,吊打反射机制
通俗来讲,在我们开发需要用到某个类时,必须知道它是什么类,是用来干嘛的。于是我们直接对这个类进行实例化,之后使用这个类对象进行操作。 上述操作,对Person类进行初始化,可以理解为“正射”。而反射则是一开始并不知道我们要初始化的类的对象是什么,自然就不能用new关键字指定来创建对象了。这个时候,我们使用JDK提供的反射API进行反射调用。 上述两个代码的执行结果是完全一样的,但是创建类的方式和思路却完全不一样,第一段代码是在未运行的时候确定了要创建Person类,而第二段。
2022-10-29 23:20:25
160
原创 IDEA构建Spring源码,不成功你来抓我
构建了两天,基本上把所有问题都碰遍了。以下是构建源码环境全过程↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓Spring源码导入!切记要导入正确的版本!!gitee上源码:https://gitee.com/mirrors/Spring-Framework?_from=gitee_search不要直接克隆! 一定要选择合适的版本!在gradle.properties
2021-08-20 15:09:22
1346
9
原创 mybatis框架和spring集成
<!-- spring核心ioc--> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context</artifactId> <version>5.2.5.RELEASE</version> </dependency><!-- 做spring事务--> ...
2021-04-26 17:39:26
104
原创 Aspectj使用步骤
使用aspectj框架实现aop.使用aop:目的是给已经存在的一些类的方法,增加额外的功能, 前提是不改变原先代码使用aspectj实现aop的基本步骤:@Around(value ="execution(* *..SomeServiceImpl.doFirst(..))")public Object myAround(ProceedingJoinPoint pjp) throws Throwable { String name=""; //获取第一个参数的
2021-04-26 17:31:43
437
原创 Spring的简单注解
1.Component有三种写法:@Component(value = "myStudent")//使用value属性指定对象的名称@Component//不指定对象名称,由spring提供默认名称:类名的首字母小写@Component("myStudent")//省略value在配置文件中:<context:component-scan base-package="com.dwk.ba01"/>还有另外三个和@Component功能、用法一致的注解...
2021-04-21 00:07:20
85
原创 多个配置文件的优势
1.多个配置文件的优势(1)每个文件的大小比一个文件要小很多,效率高(2)避免多人竞争带来的冲突如果项目有多个模块(相关功能在一起),一个模块一个配置文件多文件的分配方式:1)按模块分,一个模块一个配置文件2)按类的功能,数据库相关配置一个文件配置文件2.基于注解的di:通过注解完成java对象创建,属性赋值使用注解的步骤1)加入maven的依赖spring-context,在你加入spring-context的同时,间接加入spring的依赖,使用注解必须使用spring-aop依赖2
2021-04-21 00:01:33
249
原创 Spring框架初学(概念,使用,核心技术)
1.Set注入 <bean id="myStudent" class="com.dwk.ba02.Student"> <property name="name" value="李四"/> <property name="age" value="20"/> <!--引用类型--> <property name="school" ref="mySchool"/> .
2021-04-19 23:43:37
136
原创 中缀转后缀、简单计算器的实现
package stack;import java.util.ArrayList;import java.util.List;import java.util.Stack;public class PolandNotation { public static void main(String[] args) { String expression = "1+((2+3)*4)-5"; List<String> infixExpressionList = toInfixExp
2021-04-04 17:02:18
144
原创 使用数组实现栈的两个功能(pop,push)
在这里插入代码片package stack;import java.util.Scanner;public class ArrayStackDemo { public static void main(String[] args) { ArrayStack stack = new ArrayStack(4); String key = ""; boolean loop = true;// 控制是否退出菜单 Scanner scanner = new Scanner(System.
2021-04-01 16:19:13
444
原创 双链表代码实现
package cn.dwk.链表;public class DoubleLinkedListDemo { public static void main(String[] args) { // 先创建节点 HeroNode2 hero1 = new HeroNode2(1, "宋江", "及时雨"); HeroNode2 hero2 = new HeroNode2(2, "卢俊义", "玉麒麟"); HeroNode2 hero3 = new HeroNode2(3, "吴用",
2021-04-01 16:17:06
164
原创 单链表代码实现
package cn.dwk.链表;import java.util.Stack;public class SingleLinkedListDemo { public static void main(String[] args) { //先创建节点 HeroNode hero1=new HeroNode(1, "宋江", "及时雨"); HeroNode hero2=new HeroNode(2, "卢俊义", "玉麒麟"); HeroNode hero3=new HeroNod
2021-04-01 16:16:33
104
原创 使用栈实现简单的计算器(不包含括号)
package stack;public class Calculator { public static void main(String[] args) { String expression = "7*2*2-5+1-5+3-4"; // 创建两个栈,数栈,符号栈 ArrayStack2 numStack = new ArrayStack2(10); ArrayStack2 operStack = new ArrayStack2(10); // 定义需要的相关变量 int
2021-04-01 16:15:39
139
原创 稀释数组的代码实现
//创建一个原始的二维数组 11X11 //0:没有棋子,1:表示黑子,2:表示白子 int chessArr1[][]=new int[11][11]; chessArr1[1][2]=1; chessArr1[2][3]=2; chessArr1[1][3]=3; //输出二维数组 for(int[] row:chessArr1) { for(int data:row) { System.out.printf("%d\t",data); } S...
2021-03-20 13:19:02
167
原创 JAVAWEB中连接数据库那些事(XAMPP/mysql包8.0以上版本时)
XAMPP管理员身份启动正常启动应该是这样的,如果左边那个勾那一栏没有显示,试试右键管理员登录。如果显示的是X,把MYSQL停止掉然后点X下载MYSQL,下载完了再启动就是勾勾了。至于其他的报错(端口问题)网上都可以解决...
2021-01-07 08:49:00
504
原创 InetSocketAddress 端口测试
端口1.区分软件2.2个字节0-65535 UDP TCP独立3.同一个协议下端口不能冲突4.定义端口越大越好InetSocketAddress1.构造器new InetSocketAddress(域名,端口);2.方法getAddress()getPort():返回端口cm命令:netstat -ano :查看所有端口**netstat -ano|findstr “xxx” :查看指定端口 **tasklist|findstr “xxx” :查看指定进程 InetSo.
2020-12-23 16:21:28
576
原创 InetAddress,IP地址测试
IP:定位一个节点:计算机、路由、通讯设备InetAddress 多个静态方法1.getLocalHost:本机2.getByName:根据域名或者IP地址 DNS(解析) IP地址成员方法1.getHostAddress:返回地址2.getHostName:返回计算机名//使用getLocalHost方法创建InetAddress对象 本机 InetAddress addr=InetAddress.getLocalHost(); System.out.println(addr.
2020-12-23 16:18:07
259
原创 python前三章学习总结
2.11.查看关键字1)import keywordprint(keyword.kwlist)2)keyword.iskeyword(word)例如:判断and是不是关键字:keyword.iskeyword(‘and’)2.与变量属性相关的内置函数1)type()函数:返回变量类型2)id()函数:返回变量地址3)isinstance()函数:用来判断对象是否为已知类型。isi...
2020-03-06 17:21:02
505
原创 文件流的三个读取方法之间的差异
ReadText和ReadAllLines只能读文本文件,而ReadAllBytes可以读所有的文件 ReadText和ReadAllLines。前者返回字符串,后者返回数组。如果文本文件需要对每行数据进行操作的话只能用ReadAllLines.如果只是想展示文本的数据,只需要ReadText。而File.ReadAllBytes可以对字节进行操作,也就是说他的作用范围不只限于文本当需要对...
2019-12-02 17:34:05
531
原创 利用文件流来操作文件(读取)
1,ReadAllBytes()函数,将文件中的文字内容转成byte数组并返回。案例)读取文件,并输出到控制台上byte[] buffer = File.ReadAllBytes(@"C:\Users\DELL\Desktop\new.txt"); ////将字节数组中的每一个元素都要按照我们指定的编码格式解码成字符串 string s = En...
2019-12-02 17:31:26
1213
原创 File类的创建删除复制写入读取和追加
利用File类创建一个文件File.Create(@"C:\Users\DELL\Desktop\new.txt");利用File类删除一个文件File.Delete(@"C:\Users\DELL\Desktop\new.txt");利用File类复制一个文件File.Copy(@"C:\Users\DELL\Desktop\new.txt", @"C:\Users\DELL\Des...
2019-12-02 17:10:23
695
原创 Path路径类
Path类Path.GetFileName(str);获得文件的名字Path.GetFileNameWithoutExtension(str);获得文件的名字但是不包含拓展名(Path.GetExtension(str);获得文件的拓展名。Path.GetDirectoryName(str);获得文件所在的文件夹的名称Path.GetFullPath(str);获得文件所在的全路径。P...
2019-12-02 16:56:11
286
原创 HashTable键值对集合和foreach循环
HashTable集合我们是根据键去找值的。键值对对象[键]=值;键值对集合当中,键必须是唯一的,而值是可以重复的ht.Add(1, “张三”);表示键1对应的值是张三,特别的,另外一种赋值方法:ht[1] = “把张三干掉”;若[]中的键存在则覆盖那个键的值,若不存在则添加一个新的键和值。打印键值对集合时需要使用foreach循环。Hashtable ht = new Hashta...
2019-12-02 11:59:05
413
原创 ArrayList的各种方法
ArrayList。ArrayList可以添加任何元素进去。在使用前需要添加命名空间:using System.Collections;。使用方法:ArrayList list=new ArrayList();list.Add();表示添加单个元素list.AddRange();表示添加一个集合元素list.Clear();表示清空所有元素list.Remove();表示删除单个元素...
2019-12-02 11:53:53
215
原创 继承
继承:我们可能会在一些类中写一些重复的成员,我们可以将这些重复的成员单独的封装在一个类中,作为这些类的父类。子类从父类那可以访问到的都是继承过来的。私有字段并没有继承继承的特性1.继承的单根性:一个子类只能有一个父类。2.继承的传递性object是所有类的基类。子类并没有继承父类的构造函数,但是子类会默认的调用父类的无参的构造函数,创建父类对象,让子类可以使用父类中的成员,所以如果在...
2019-11-25 18:53:55
101
原创 当文字中出现非法字眼时的替换。
string str = "老牛很邪恶"; if (str.Contains("邪恶")) ; { str = str.Replace("邪恶", "**"); } Console.ReadWriteLine("str"); Console.Rea...
2019-11-24 22:19:24
176
原创 三元表达式和字符串的练习题
三元表达式:return n1>n2 ? n1:n2;string path = @"C:\Users\DELL\Desktop\1.txt"; string[] contents = File.ReadAllLines(path); for (int i = 0; i < contents.Length; i++) ...
2019-11-24 21:50:36
388
原创 字符串的各种方法(2)
8)Contains():判断字符串是否包含指定的字符串 string str = "国家关键人物邓炜坤"; if (str.Contains("邓炜坤")) { str = str.Replace("邓炜坤", "***"); } Console...
2019-11-24 17:20:59
145
原创 字符串的各种方法(1)
导入导出摘要 添加摘要保存撤销重做目录帮助 1)Length:获取当前字符串中字符的个数Console.WriteLine("请输入你心中想的那个人的名字");string name = Console.ReadLine();Console.WriteLine("名字的长度是{0}", name.Length);Co...
2019-11-23 23:18:54
207
原创 字符串可以看作是char类型的数组
string s = "abcdefg"; //s[0] = 'b'; //如果非要把第一个字符变成b //首先将字符串转换成char类的数组 char[] chs = s.ToCharArray(); chs[0] = 'b'; ...
2019-11-23 22:46:23
804
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人