- 博客(17)
- 收藏
- 关注
原创 java super讲解
super:代表父级,可以用来修饰属性,方法,构造器 ,例如:属性:super.属性名称方法:super.方法名称(参数)构造函数:super() super(参数)注意事项:1、当子类与父类有同名的属性时,可以通过super。属性的方式调用父类中生命的属性。2、当子类重写父类的方法后,在子类中若想调用父类中被重写的方法时,需用super.的方法3、super修饰构造器,通过在子类中使用super列表参数的形式调用父类中制定的构造器a、在构造器内部,super(参数列
2022-05-11 11:42:15 212
原创 java修饰符
1:访问修饰符 default (即默认,什么也不写): 在同一包内可见,不使用任何修饰符。使用对象:类、接口、变量、方法。 private : 在同一类内可见。使用对象:变量、方法。 注意:不能修饰类(外部类) public : 对所有类可见。使用对象:类、接口、变量、方法 protected : 对同一包内的类和所有子类可见。使用对象:变量、方法。 注意:不能修饰类(外部类)。 2:非访问修饰符static 修饰符 静态的final 修饰符 最后的、.
2022-05-10 17:09:00 202
原创 java泛型
泛型的本质是参数化类型,也就是说所操作的数据类型被指定为一个参数 ,而不是固定是哪一个类型泛型方法的规则:所有泛型方法声明都有一个类型参数声明部分(由尖括号分隔),该类型参数声明部分在方法返回类型之前(在下面例子中的 <E>)。 每一个类型参数声明部分包含一个或多个类型参数,参数间用逗号隔开。一个泛型参数,也被称为一个类型变量,是用于指定一个泛型类型名称的标识符。 类型参数能被用来声明返回值类型,并且能作为泛型方法得到的实际参数类型的占位符。 泛型方法体的声明和其他方法一样。注意类
2022-05-10 16:06:35 162
原创 java常用的特殊数据类型
1:ArrayList 可以动态修改的数组,与普通数组的最大区别就是没有固定大小的限制,我们可以添加或删除元素。import java.util.ArrayList; // 引入 ArrayList 类ArrayList<E> objectName =new ArrayList<>(); // 初始化import java.util.ArrayList; public class HelloWorld { public static void m
2022-05-10 15:39:41 223
原创 java的基础语法
大小写敏感:Java 是大小写敏感的,这就意味着标识符 Hello 与 hello 是不同的。 强制类型语言:声明变量需要指明类型,赋值类型不能切换 类名:类名的首字母应该大写。如果类名由若干单词组成,那么每个单词的首字母应该大写,例如 MyFirstJavaClass 。 方法名:所有的方法名都应该以小写字母开头。如果方法名含有若干单词,则后面的每个单词首字母大写。 源文件名:源文件名必须和类名相同。当保存文件的时候,你应该使用类名作为文件名保存(切记 Java 是大小写敏感的),文件名的后缀为
2022-05-10 10:01:12 79
原创 python 爬虫使用到bs4的介绍
bs4是对某些内容做逻辑的提取,比如html文件,xml,json格式的数据bs4: 的安装 >pip install --user bs4使用:from bs4 import BeautifulSouppage = BeautifulSoup(data,"html.parser") #指定html解释器#2。从bs4 找数据 find(标签 ,属性=值) find_all(标签 ,属性=值)table=page.find('div',class_="news-nr-box
2022-05-09 17:29:58 265
原创 python模拟鼠标 事件
python模拟鼠标事件: 可以使用 pyautoguipyautogui 的安装:pip install -i https://pypi.tuna.tsinghua.edu.cn/simple pyautogui1:点击事件pyautogui.click 固定指定位置点击鼠标一次 button 单击属性pyautogui.click(100,150,button='left')
2022-05-09 16:45:17 2671
原创 Go viper 配置文件读取工具
安装: go get github.com/spf13/viper1: 新建viper// 直接使用默认对象viper.GetInt("count")// 获取全局Viper对象globalViper := viper.GetViper()// 新建Viperconf := viper.New()conf.SetConfigFile("config.yaml")2:读取配置文件 config.AddConfigPath(path) //设置读取的文件路径
2022-05-09 11:52:05 206
原创 sync.Mutex 添加锁
sync 包提供了两种锁类型:sync.Mutex 和 sync.RWMutex。区别:Mutex 是最简单的一种锁类型,同时也比较暴力,当一个 goroutine 获得了 Mutex 后,其他 goroutine 就只能乖乖等到这个 goroutine 释放该 Mutex。RWMutex 相对友好些, 单写多读模型。在读锁占用的情况下,会阻止写,但不阻止读,也就是多个 goroutine 可同时获取读锁(调用 RLock() 方法;而写锁(调用 Lock() 方法)会阻止任何其他 gorout
2022-05-09 11:31:24 219
原创 sync.map解决了协程下map的死锁
sync包提供了基本的同步基元,如互斥锁Go语言中的 map 在并发情况下,只读是线程安全的,同时读写是线程不安全的。 // 创建一个int到int的映射 m := make(map[int]int) // 开启一段并发代码 go func() { // 不停地对map进行写入 for { m[1] = 1 } }() // 开启一段并发代码 go func() {
2022-05-09 11:28:14 327
原创 os包常用的方法
1:os.Getwd() 函数获取当前工作目录,即获取启动http服务的文件的目录。 例如项目文件夹cmd/api/main.go ,使用go run main.go启用,不管在项目哪里打印os.Getwd()返回的都是项目文件夹cmd/api2:os.Chmod(name string, mode FileMode) error //更改文件的权限os.Exit(0) 系统退出,并返回code,其中0表示执行成功并退出os.Chown(name string, ui...
2022-05-09 11:23:33 329
原创 路由和路由组
router.GET("/someGet", getting) router.POST("/somePost", posting) router.PUT("/somePut", putting) router.DELETE("/someDelete", deleting) router.PATCH("/somePatch", patching) router.HEAD("/someHead", head) router.OPTIONS("/someOptions", options)...
2022-05-07 11:42:35 197
原创 gin重定向
1:使用redirect重定向,地址栏显示新的跳转地址r.GET("/test", func(c *gin.Context) { c.Redirect(http.StatusMovedPermanently, "http://www.google.com/")})2:使用handleContext()重定向 ,访问test显示test2的内容,但是路由还是testr.GET("/test", func(c *gin.Context) { c.Request.URL.Path =
2022-05-07 10:59:20 667
原创 gin加载模板
gin加载模板,例如app/template/activitydetail.tmpl错误使用 "app/template/activitydetail.tmpl",直接在c.HTML中声明路径,golang仍然找不到,c.HTML(http.StatusOK, "app/template/activitydetail.tmpl", gin.H{ "Title": "2022-07-15胭宝生日", "Des": "祝胭宝生日快乐", })正确使用...
2022-05-07 10:35:50 654
原创 gin设置http服务
第一步:设置main 开启web服务package mainimport ( "ginproject1/route" "net/http" "time" "golang.org/x/sync/errgroup")var ( g errgroup.Group)func main() { server01 := &http.Server{ Addr: ":9090", Han...
2022-05-07 10:34:36 485
原创 gin加载静态文件
gin加载静态文件:静态文件必须先声明:否则模板中调用加载不出来func main() { router := gin.Default() router.Static("/assets", "./assets") router.StaticFS("/more_static", http.Dir("my_file_system")) router.StaticFile("/favicon.ico", "./resources/favicon.ico") // 监听并在 0.0.0.0:8
2022-05-07 10:32:13 1019
原创 gin获取http请求参数
1: 获取路由参数 c.Param(“参数名称") // 此 handler 将匹配 /user/john/ 和 /user/john/send // 如果没有其他路由匹配 /user/john,它将重定向到 /user/john/ router.GET("/user/:name/*action", func(c *gin.Context) { name := c.Param("name") action := c.Param("action") message := name +
2022-05-07 10:28:45 707 1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人