自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(41)
  • 收藏
  • 关注

原创 线程安全

一.按照线程安全的“安全程度”由强至弱排序,可以将Java语言中各种操作共享的数据分为以下五类:不可变、绝对线程安全、相对线程安全、线程兼容和线程对立。(1)不可变:不可变的对象一定是线程安全的,无论是对象的方法实现还是方法的调用者,都不需要再进行任何的线程安全保障措施。Java语言中,如果共享数据是一个基本数据类型,那么只要在定义时使用final关键字修饰就可以保证它是不可变的。如果共享数据是一个对象,那就需要保证对象的行为不会对其状态产生任何影响才行,比如java.lang.String类的对象,它是

2021-05-07 20:59:35 242 1

原创 go面向对象编程三大特性

标题面向对象编程三大特性封装把抽象的字段和对字段的操作抽象在一起。继承1.go中,如果struct中嵌套了另一个匿名结构体,那么这个结构体可以直接访问匿名结构体的字段和方法,从而实现了继承性。3.结构体可以使用嵌套匿名结构体的所有字段和方法,即首字母大写或小写的字段、方法都可以使用。4.匿名结构体字段访问可以简化。(1)执行流程:执行b.Name,先看b对应的类型有没有Name,如果有,则直接调用b对应的Name,否则调用嵌套结构体A的Name,如果A也没有则报错。(2)结构

2021-01-01 20:27:14 207

原创 go语言(7)

面向对象1.go语言没有类,其结构体相当于类的作用;

2020-12-04 17:06:30 347

原创 go语言(6)

mapkey-value数据结构2.map声明:var map变量名 map[key数据类型]value数据类型注:map声明前不会分配内存,初始化需要make,分配内存后才能赋值和使用。var a map[int]stringa=make(map[int]string,10) //参数:类型,大小a[1]="cao"3.map中的key不能重复,如果重复了,则以最后的key-value为准4.map中的value可以相同5.map中的key-value无序6.map的三种使.

2020-12-04 13:41:38 154

原创 go语言(5)数组和切片

数组1.数组定义:var 数组名 [数组大小] 数组类型 var a [5]int2.(1)数组的地址可以通过数组名来获取:&a(2)数组第一个元素的地址就是数组的首地址3.数组初始化的四种方式

2020-11-30 15:05:22 809

原创 字符串匹配问题(递归和动态规划)

字符串匹配问题【题目】 给定字符串str,其中绝对不含有字符’.‘和’’。再给定字符串exp, 其中可以含有’.‘或’’,’'字符不能是exp的首字符,并且任意两个 '‘字符不相邻。exp中的’.‘代表任何一个字符,exp中的’‘表示’’ 的前一个字符可以有0个或者多个。请写一个函数,判断str是否能被 exp匹配。【举例】 str=“abc”,exp=“abc”,返回true。 str=“abc”,exp=“a.c”,exp中单个’.‘可以代表任意字符,所以返回 true。 str=“abcd”,ex

2020-11-27 21:25:13 272

原创 go语言(4)

时间和日期相关函数(1)休眠:func Sleep(d Duration)package mainimport ( "fmt" "time")func main(){ //每隔0.1秒打印一个数字,打印到50退出 var a = 1 for { a++ fmt.Println(a) time.Sleep(time.Millisecond * 100) //休眠0.1秒 if a >= 50 { break } }}(2)Unix和Unix.

2020-11-26 15:07:36 101

原创 字符串常用的系统函数(go语言)

1.统计字符串的长度,按字节func main(){ //go统一编码为utf-8,字母数字占一个字节,汉字占3个字节 str:="hello北" len(str) //8 }2.字符串遍历,注意中文package mainimport ( "fmt")func main(){ str:="hello北" r:=[]rune(str) for i:=0;i<len(r);i++{ fmt.Println(r[i]) }}3.字符串转整数package m

2020-11-25 14:06:08 133

原创 go语言(3)

函数:在Go中,函数分为:自定义函数、系统函数func 函数名 (形参列表)(返回值列表){执行语句…return 返回值列表}(1)形参列表:表示函数的输入;形参列表和返回值列表的数据类型可以是值类型也可以是引用类型;(2)函数可以有返回值,也可以没有,如果返回多个值时,在接收时,希望忽略某个返回值,则使用_符号表示占位忽略(3)如果返回值只有一个,(返回值类型列表)可以不写()。(4)基本数据类型和数组默认都是值传递的,即进行值拷贝。在函数内修改,不会影响到原来的值.package.

2020-11-25 10:33:33 111

原创 无后效性问题

换钱的方法数【题目】给定数组arr,所有元素都为正数且不重复。每个值代表一种面值的货币,每种面值的货币可以使用任意张,再给定一个整数aim代表要找的钱数,求换钱有多少种方法。【举例】arr=[5,10,25,1] aim=0返回1。组成0元的方法有一种,即所有货币都不用arr=[3,5] aim=2返回0。无法组成2.arr=[5,10,25,1] aim=15返回6。35,5+10,101+5,151,25+51,10+51public static void main(String[]

2020-11-23 17:07:37 158

原创 字符串运算公式Java代码

字符串运算公式【题目】给定一个字符串str,str表示一个公式,公式里可能有整数、加减乘除符号和左右括号,返回公式的计算结果。【举例】str = “48*((70-65)-43)+8*1”,返回 - 1816。str = “3+1*4”,返回7。str = “3+(1*4)”,返回7。【说明】(1)可以认为给定的字符串一定是正确的公式,即不需要对str做公式有效性检查。(2)如果是负数,就需要用括号括起来,比如"4*(-3)"。但如果负数作为公式的开头或括号部分的开头,则可以没有括号,比.

2020-11-20 16:48:10 986

原创 go语言(2)

算术运算符(1)当对一个数取模时,可以等价a%b=a-a/b*b,这样我们可以看到取模的一个本质运算。package mainimport ( "fmt")func main() { fmt.Println("10%3=",10%3) //1 fmt.Println("-10%3=",-10%3) //-1 fmt.Println("10%-3=",10%-3) //1 fmt.Println("-10%-3=",-10%-3) //-1}(2)g.

2020-11-20 15:07:56 130

原创 跳表java代码实现

package cao;import java.util.ArrayList;import java.util.Iterator;public class hello {//定义跳表节点public static class skipListNode{public Integer value; //节点值public ArrayList nextNodes;//每一层下一个节点 public skipListNode(Integer value){ this.value

2020-11-19 16:30:07 184

原创 累加和为目标值的最长子数组java代码

累加和为目标值的最长子数组package cao;import java.util.*;public class hello { public static int maxlength(int[] arr,int aim){ int len=0;//全局最大值 int sum=0;//计算和 HashMap<Integer,Integer> map=new HashMap<Integer, Integer>();

2020-11-17 16:11:17 235

原创 Go语言(1)

1.一个文件都要归属一个包Go语言开发工具:VSCode

2020-11-10 21:18:27 208

原创 红黑树应用及代码

大楼轮廓问题给定一个N \times 3N×3的矩阵matrix,对于每一个长度为3的小数组arr,都表示一个大楼的三个数据。arr[0]表示大楼的左边界,arr[1]表示大楼的右边界,arr[2]表示大楼的高度(一定大于0)。每座大楼的地基都在X轴上,大楼之间可能会有重叠,请返回整体的轮廓线数组[要求]时间复杂度为O(n \log n)O(nlogn)输入:给定一个二维数组[[1,3,3],[2,4,4],[5,6,1]]输出轮廓线:[[1,3,3],[2,4,4],[5,6,1]]...

2020-11-06 16:39:19 792

原创 单调栈的应用及代码

单调栈单调递增栈:栈中数据出栈的序列为单调递增序列单调递减栈:栈中数据出栈的序列为单调递减序列求最大子矩阵的大小给定一个整型矩阵map, 其中的值只有0 和 1 两种, 求其中全是1 的所有矩形区域中, 最大的矩形区域为1的数量。例如:1 0 1 11 1 1 11 1 1 0其中,最大的矩形区域有6个1,所以返回6 。package cao;import java.util.Stack;//滑动窗口public class hello { public static

2020-11-05 09:43:48 155

原创 双端队列的应用(窗口)及代码

目标:介绍窗口以及窗口内最大值或最小值的更新结构(单调双向队列)生成窗口最大值数组res[i]表示每一种窗口状态下的最大值。import java.util.LinkedList;//滑动窗口public class hello { public static int[] getMaxWindow(int[] arr,int w){ if(arr==null||w<1||arr.length<w){ return null;

2020-11-05 09:40:43 122

原创 DOS目录和文件操作命令

目录操作查看当前目录是什么:dir切换到当前盘的其他目录下:可以使用相对路径和绝对路径cd test200cd d:\test200绝对路径:从当前盘的最上面开始定位,比如D:F:C:找到对应的目录,比如d:\test100切换到上一级:cd …切换到根目录:cd \切换到另一个目录:cd /d f:新建一个目录:md ok300新建多个目录:md ok300 ok100删除目录:rd ok100删除目录以及下面的子目录和文件,不带询问:rd /q/s ok200删除目录以及下面

2020-10-31 20:53:31 316

原创 图论常见算法代码

bfsimport java.util.HashSet;import java.util.LinkedList;import java.util.Queue;//广度优先搜索public class BFS { public static void bfs(Node node) { if (node == null) { return; } //利用队列 Queue<Node> queue = new

2020-10-26 20:03:22 445

原创 KMP算法、Manacher算法、BFPRT算法及应用

KMP算法是一种改进的字符串匹配算法。KMP算法的核心是利用匹配失败后的信息,尽量减少模式串与主串的匹配次数以达到快速匹配的目的。具体实现就是通过一个next()函数实现,函数本身包含了模式串的局部匹配信息。子序列:不连续子串:连续KMP算法针对子串,不针对子序列。//kmp算法public class hello { //利用kmp算法获得m字符串在s字符串中开始的位置 public static int getIndexOf(String s, String m) {

2020-10-20 19:10:32 182

原创 递归和动态规划题目代码

递归暴力递归:1.把问题转化为规模缩小了的同类问题的子问题2.有明确的不需要继续进行递归的条件(base case)3.有当得到了子问题的结果之后的决策过程4.不记录每一个子问题的解1.求n!的结果public class hello { public static long getFactorial1(int n) { if (n == 1) { return 1L; } return (long) n * ge

2020-10-10 19:09:08 126

原创 贪心算法应用代码

给定一个字符串类型的数组strs,找到一种拼接方式,使得把所有字符串拼起来之后形成的字符串具有最低的字典序。import java.util.Arrays;import java.util.Comparator;public class hello { //定义比较器(利用字典序) public static class MyComparator implements Comparator<String> { @Override public

2020-10-07 09:30:02 234

原创 前缀树及代码实现

前缀树Trie树,即字典树,又称单词查找树或键树,是一种树形结构,是一种哈希树的变种。典型应用是用于统计和排序大量的字符串(但不仅限于字符串),所以经常被搜索引擎系统用于文本词频统计。它的优点是:最大限度地减少无谓的字符串比较,查询效率比哈希表高。注:字符都在路径上,节点上没有值。它有3个基本性质:(1)根节点不包含字符,除根节点外每一个节点都只包含一个字符。(2)从根节点到某一节点,路径上经过的字符连接起来,为该节点对应的字符串。(3)每个节点的所有子节点包含的字符都不相同。public

2020-10-03 17:19:18 235

原创 哈希函数、哈希表及其应用

哈希函数哈希函数又名散列函数,对于经典哈希函数来说,它具有以下5点性质:(1)输入域无穷大(2)输出域有穷尽(3)输入一样输出肯定一样(4)当输入不一样输出也可能一样(哈希碰撞)(5)不同输入会均匀分布在输出域上(哈希函数的散列性):例如输入域是0-99这一百个数字,而我们使用的哈希函数的输出域为0,1,2,当我们将0-99这一百个数字通过该哈希函数,得到的返回值,0,1,2数量都会接近33个,不会出现某个返回值数量特别多,而某个返回值特别少。哈希表哈希表中存入的数据是key,value类型

2020-10-02 21:42:02 807

原创 二叉树实现及例题

二叉树遍历实现二叉树的先序、中序、后序遍历,包括递归方式和非递归方式1.递归方法 //定义二叉树 public static class Node { public int value; public Node left; public Node right; public Node(int data) { this.value = data; } } //先序遍历

2020-09-30 20:19:20 524

原创 排序算法例题

小和问题在一个数组中,每一个数左边比当前数小的数累加起来,叫做这个数组的小和。求一个数组 的小和。例子: [1,3,4,2,5]1左边比1小的数,没有;3左边比3小的数,1;4左边比4小的数,1、3;2左边比2小的数,1;5左边比5小的数,1、3、4、2;所以小和为1+1+3+1+1+3+4+2=16//利用快速排序public static int smallSum(int[] arr) { if (arr == null || arr.length < 2) {

2020-09-22 12:33:43 374

原创 队列和栈的数组实现

数组实现队列和栈public class Array_To_Stack_Queue { /* *数组实现栈 */ public static class ArrayStack { private Integer[] arr; private Integer size;//下标位置 public ArrayStack(int initSize) { if (initSize < 0) { throw new IllegalArgumentExceptio

2020-09-14 16:29:26 159

原创 排序算法及时间复杂度

时间复杂度1.常数时间的操作:一个操作如果和数据量没有关系,每次都是固定时间内完成的操作,叫做常数操作。 例如:数组寻址、加减乘除都是常数操作。2.时间复杂度为一个算法流程中,常数操作数量的指标,常用O(读作big O)来表示,如O(N)。在常数操作数量的表达式中, 只要高阶项,不要低阶项,也不要高阶项的系数,剩下的部分如果记为f(N),那么时间复杂度为O(f(N))。例:一个有序数组A,另一个无序数组B,请打印B中的所有不在A中的数,A数 组长度为N,B数组长度为M。算法1:对于数组B中的每一个数

2020-09-14 15:06:39 1852

原创 java实现solr进行全文检索

1 pom.xml<dependency> <groupId>org.apache.solr</groupId> <artifactId>solr-solrj</artifactId> <version>6.2.0</version></dependency>2 Servicepackage com.cyq.service;import com.cyq.model.Question

2020-08-22 17:10:39 496

原创 solr单机模式对web网站建立索引(环境搭建)

1 cmd:某个网站做索引部署(c) 2019 Microsoft Corporation。保留所有权利。C:\Users\Administrator>d:D:\>cd solrD:\solr>cd solr*D:\solr\solr-8.6.1>cd solr*D:\solr\solr-8.6.1\solr-8.6.1>cd binD:\solr\solr-8.6.1\solr-8.6.1\bin>solr startWaiting up t

2020-08-21 18:40:42 215

原创 全文搜索功能--solr

1 核心概念(1)概念Document:每个被索引的文档Field:文档里的各个属性值注:文档为被搜索的对象,field为搜索的关键词(2)启动云模式 solr start -e cloud –noprompt单机模式 solr start(3)搜索语法:+包含关键词-不需要某关键词2 以云模式启动示例(cmd)Microsoft Windows [版本 10.0.18363.1016]C:\Users\Administrator>d:D:\>cd solr

2020-08-19 21:53:08 187

原创 PyQuery介绍及代码

1 概念pyquery库是jQuery的Python实现,能够以jQuery的语法来操作解析 HTML 文档,易用性和解析速度都很好,和它差不多的还有BeautifulSoup,都是用来解析的。2 常用方法例:查找标签,打印id=container的标签:print(doc.find('#container'))3 CSS选择器4 代码示例if __name__ == '__main__': #打开文件,读取文本,作为q的内容 q=PyQuery(open('ev.htm

2020-08-17 17:14:28 159

原创 Python与数据库(mysql)交互方式及代码

1 Python 操作 MySQL 的方式(1)MySQLdbMySQLdb又叫MySQL-python,是 Python 连接 MySQL 最流行的一个驱动,很多框架都也是基于此库进行开发,只支持 Python2.x.安装:pip install MySQL-python(2)mysqlclientmysqlclient完全兼容 MySQLdb,同时支持 Python3.x,是 Django ORM的依赖工具,如果想使用原生 SQL 来操作数据库,那么推荐此驱动。Windows安装:pip

2020-08-17 16:21:53 368

原创 推拉模式实现个性化推荐

1 Model:Feedpackage com.cyq.model;import com.alibaba.fastjson.JSON;import com.alibaba.fastjson.JSONObject;import java.util.Date;import java.util.Map;public class Feed { private int id; private int type; private int userId; private

2020-08-08 22:29:49 158

原创 java实现关注服务

Util1 RedisKeyUtilpackage com.cyq.util;public class RedisKeyUtil { private static String SPLIT = ":"; // 获取粉丝 private static String BIZ_FOLLOWER = "FOLLOWER"; // 关注对象 private static String BIZ_FOLLOWEE = "FOLLOWEE"; // 某个实体

2020-08-03 19:21:51 692

原创 基于velocity邮件发送(登陆异常)

1 依赖<dependency> <groupId>javax.mail</groupId> <artifactId>mail</artifactId> <version>1.4.7</version></dependency>2 utilpackage com.cyq.util;import org.apache.velocity.app.VelocityEngine;import org

2020-08-03 11:28:17 387

原创 基于redis点赞功能的实现

Util1 JedisAdapterpackage com.cyq.util;import org.slf4j.Logger;import org.slf4j.LoggerFactory;import org.springframework.beans.factory.InitializingBean;import org.springframework.stereotype.Service;import redis.clients.jedis.Jedis;import redis.clie

2020-08-03 11:23:54 370

原创 Jedis常用函数(list、hash、set)

//新建jedis并清空数据库Jedis jedis = new Jedis(“redis://localhost:6379/11”);jedis.flushDB();1 get set// get set jedis.set("hello", "world");print(jedis.get("hello"));//重命名jedis.rename("hello", "newhello");在这里插入代码片//设置超时,例如用于验证码缓存jedis.setex("hello2", 100

2020-08-01 15:40:42 646

原创 多线程基本用法

1多线程创建方式方法一:继承java.lang.Thread, 重写run()方法class MyThread extends Thread { private int tid; public MyThread(int tid) { this.tid = tid; } @Override public void run() { try { for (int i = 0; i < 10; ++i) {

2020-07-29 18:41:16 224

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除